dbgate-plugin-mssql 6.6.8 → 6.6.10
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.
- package/dist/backend.js +1 -1
- package/package.json +2 -2
package/dist/backend.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{var e={994:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.firebirdSplitterOptions=t.oracleSplitterOptions=t.redisSplitterOptions=t.noSplitSplitterOptions=t.mongoSplitterOptions=t.sqliteSplitterOptions=t.postgreSplitterOptions=t.mssqlSplitterOptions=t.mysqlSplitterOptions=t.defaultSplitterOptions=void 0,t.defaultSplitterOptions={stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'},allowSemicolon:!0,allowCustomDelimiter:!1,allowCustomSqlTerminator:!1,allowGoDelimiter:!1,allowSlashDelimiter:!1,allowDollarDollarString:!1,noSplit:!1,skipSeparatorBeginEnd:!1,doubleDashComments:!0,multilineComments:!0,javaScriptComments:!1,returnRichInfo:!1,splitByLines:!1,splitByEmptyLine:!1,preventSingleLineSplit:!1,adaptiveGoSplit:!1,ignoreComments:!1,copyFromStdin:!1,queryParameterStyle:null},t.mysqlSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{allowCustomDelimiter:!0,stringsBegins:["'","`",'"'],stringsEnds:{"'":"'","`":"`",'"':'"'},stringEscapes:{"'":"\\","`":"`",'"':"\\"}}),t.mssqlSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{allowSemicolon:!1,allowGoDelimiter:!0,stringsBegins:["'","["],stringsEnds:{"'":"'","[":"]"},stringEscapes:{"'":"'"}}),t.postgreSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{allowDollarDollarString:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),t.sqliteSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{skipSeparatorBeginEnd:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),t.mongoSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"\\",'"':"\\"}}),t.noSplitSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{noSplit:!0}),t.redisSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{splitByLines:!0}),t.oracleSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{allowCustomSqlTerminator:!0,allowSlashDelimiter:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),t.firebirdSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{skipSeparatorBeginEnd:!0,queryParameterStyle:":"})},948:(e,t,n)=>{const s=n(825),a=n(982),o=n(926),{DatabaseAnalyser:i,isTypeString:r,isTypeNumeric:c}=global.DBGATE_PACKAGES["dbgate-tools"];function l(e){switch(e.trim()){case"U":return"tables";case"V":return"views";case"P":return"procedures";case"IF":case"FN":case"TF":return"functions";case"TR":return"triggers";default:return null}}function m(e){if(e)for(;e.startsWith("(")&&e.endsWith(")");)e=e.slice(1,-1);return e}function d({dataType:e,charMaxLength:t,numericScale:n,numericPrecision:s}){let a=e;return t&&r(e)&&(a=`${e}(${t<0?"MAX":t})`),s&&n&&c(e)&&(a=`${e}(${s},${n})`),a}function u({isNullable:e,isIdentity:t,columnName:n,dataType:s,charMaxLength:a,numericPrecision:o,numericScale:i,defaultValue:r,defaultConstraint:c,computedExpression:l,columnComment:u,objectId:p}){const N=d({dataType:s,charMaxLength:a,numericPrecision:o,numericScale:i});if(r)for(r=r.trim();r.startsWith("(")&&r.endsWith(")");)r=(r=r.slice(1,-1)).trim();return{objectId:p,columnName:n,dataType:N,notNull:!e,autoIncrement:!!t,defaultValue:r,defaultConstraint:c,computedExpression:m(l),hasAutoValue:!("timestamp"!=s&&"rowversion"!=s&&!l),columnComment:u}}function p(e,t,n){if(!e)return null;const{modifyDate:s}=t;if(n?.length&&"tables"===e||"views"===e){const e=s?s.toISOString():"",o=n.filter((e=>e.objectId==t.objectId)).filter((e=>e.columnComment)).map((e=>`${e.columnId}/${e.columnComment}`)).join("||"),i=t.objectComment||"";return a.createHash("sha256").update(`${e}:${o}:${i}`).digest("hex")}return s?s.toISOString():null}e.exports=class extends i{constructor(e,t,n){super(e,t,n)}createQuery(e,t){if(!o[e])throw new Error(`Missing analyse file ${e}`);return super.createQuery(o[e],t)}async _computeSingleObjectId(){const{schemaName:e,pureName:t,typeField:n}=this.singleObjectFilter,s=e?`[${e}].[${t}]`:t,a=await this.driver.query(this.dbhan,`SELECT OBJECT_ID('${s}') AS id`);this.singleObjectId=a.rows[0].id}async _runAnalysis(){this.feedback({analysingMessage:"DBGM-00205 Loading tables"});const e=await this.analyserQuery("tables",["tables"]);this.feedback({analysingMessage:"DBGM-00206 Loading columns"});const t=(await this.analyserQuery("columns",["tables"])).rows.map(u),n=(await this.analyserQuery("baseColumns",["tables"])).rows.map(u);this.feedback({analysingMessage:"DBGM-00207 Loading primary keys"});const a=await this.analyserQuery("primaryKeys",["tables"]);this.feedback({analysingMessage:"DBGM-00208 Loading foreign keys"});const o=await this.analyserQuery("foreignKeys",["tables"]);this.feedback({analysingMessage:"DBGM-00209 Loading indexes"});const r=await this.analyserQuery("indexes",["tables"]);this.feedback({analysingMessage:"DBGM-00210 Loading index columns"});const c=await this.analyserQuery("indexcols",["tables"]);this.feedback({analysingMessage:"DBGM-00211 Loading table sizes"});const l=await this.analyserQuery("tableSizes"),m=s.mapValues(s.keyBy(l.rows,"objectId"),"tableRowCount");this.feedback({analysingMessage:"DBGM-00212 Loading SQL code"});const N=await this.analyserQuery("loadSqlCode",["views","procedures","functions","triggers"]),E=e=>N.rows.filter((t=>t.pureName==e.pureName&&t.schemaName==e.schemaName)).map((e=>e.codeText)).join("");this.feedback({analysingMessage:"DBGM-00213 Loading views"});const y=await this.analyserQuery("views",["views"]);this.feedback({analysingMessage:"DBGM-00214 Loading procedures & functions"});const _=await this.analyserQuery("programmables",["procedures","functions"]),h=await this.analyserQuery("proceduresParameters"),b=await this.analyserQuery("functionParameters");this.feedback({analysingMessage:"DBGM-00215 Loading triggers"});const C=await this.analyserQuery("triggers");this.feedback({analysingMessage:"DBGM-00216 Loading view columns"});const T=await this.analyserQuery("viewColumns",["views"]);this.feedback({analysingMessage:"DBGM-00217 Finalizing DB structure"});const S=e.rows.map((e=>({...e,contentHash:p("tables",e,n),columns:t.filter((t=>t.objectId==e.objectId)),primaryKey:i.extractPrimaryKeys(e,a.rows),foreignKeys:i.extractForeignKeys(e,o.rows),indexes:r.rows.filter((t=>t.object_id==e.objectId&&!t.is_unique_constraint)).map((e=>({...s.pick(e,["constraintName","indexType","isUnique","filterDefinition"]),columns:c.rows.filter((t=>t.object_id==e.object_id&&t.index_id==e.index_id)).map((e=>({...s.pick(e,["columnName","isDescending","isIncludedColumn"])})))}))),uniques:r.rows.filter((t=>t.object_id==e.objectId&&t.is_unique_constraint)).map((e=>({...s.pick(e,["constraintName"]),columns:c.rows.filter((t=>t.object_id==e.object_id&&t.index_id==e.index_id)).map((e=>({...s.pick(e,["columnName"])})))}))),tableRowCount:m[e.objectId]}))),O=y.rows.map((e=>({...e,contentHash:p("views",e,n),createSql:E(e),columns:T.rows.filter((t=>t.objectId==e.objectId)).map(u)}))),I=h.rows.map((e=>({...e,dataType:d(e)}))).reduce(((e,t)=>(e[t.parentObjectId]||(e[t.parentObjectId]=[]),e[t.parentObjectId].push(t),e)),{}),A=_.rows.filter((e=>"P"==e.sqlObjectType.trim())).map((e=>({...e,contentHash:p("procedures",e),createSql:E(e),parameters:I[e.objectId]}))),f=b.rows.map((e=>({...e,dataType:d(e)}))).reduce(((e,t)=>(e[t.parentObjectId]||(e[t.parentObjectId]=[]),e[t.parentObjectId].push(t),e)),{}),g=_.rows.filter((e=>["FN","IF","TF"].includes(e.sqlObjectType.trim()))).map((e=>({...e,contentHash:p("functions",e),createSql:E(e),parameters:f[e.objectId]}))),R=C.rows.map((e=>({objectId:`triggers:${e.objectId}`,contentHash:p("triggers",e),createSql:e.definition,triggerTiming:e.triggerTiming,eventType:e.eventType,schemaName:e.schemaName,tableName:e.tableName,pureName:e.triggerName})));return this.feedback({analysingMessage:null}),{tables:S,views:O,procedures:A,functions:g,triggers:R}}async _getFastSnapshot(){const e=await this.analyserQuery("modifications"),t=(await this.analyserQuery("baseColumns",["tables"])).rows,n=await this.analyserQuery("tableSizes"),s=i.createEmptyStructure();for(const n of e.rows){const{type:e,objectId:a,schemaName:o,pureName:i}=n,r=l(e);r&&s[r]&&s[r].push({objectId:a,contentHash:p(r,n,t),schemaName:o,pureName:i})}for(const e of n.rows){const t=(s.tables||[]).find((t=>t.objectId==e.objectId));t&&(t.tableRowCount=e.tableRowCount)}return s}}},911:e=>{const{createBulkInsertStreamBase:t}=global.DBGATE_PACKAGES["dbgate-tools"];e.exports=function(e,n,s,a,o){const i=t(e,n,s,a,o),r=a.schemaName?`[${a.schemaName}].[${a.pureName}]`:a.pureName;return i.send=async()=>{const e=i.buffer;i.buffer=[],await function(e,t,n,s){return new Promise(((n,a)=>{e.client.tableMgr().bind(t,(e=>{e.insertRows(s,(e=>{e&&a(e),n()}))}))}))}(s,r,0,e)},i}},221:(e,t,n)=>{const{createBulkInsertStreamBase:s,getLogger:a,extractErrorLogData:o}=global.DBGATE_PACKAGES["dbgate-tools"],i=n(569),r=n(938),c=n(825),l=a("tediousBulkInsertStream");e.exports=function(e,t,n,a,m){const d=s(e,t,n,a,m),u=a.schemaName?`[${a.schemaName}].[${a.pureName}]`:`[${a.pureName}]`;return d.send=async()=>{if(!d.templateColumns){const t=a.schemaName?`${e.dialect.quoteIdentifier(a.schemaName)}.${e.dialect.quoteIdentifier(a.pureName)}`:e.dialect.quoteIdentifier(a.pureName),s=await e.query(n,`SELECT * FROM ${t} WHERE 1=0`,{addDriverNativeColumn:!0});d.templateColumns=s.columns}const t=d.buffer;d.buffer=[];try{await function(e,t,n,s){return new Promise(((a,o)=>{const l=e.client.newBulkLoad(t,{keepNulls:!0},((e,t)=>{e?o(e):a()})),m=new Set;for(const e of n.columnNames){const t=n.templateColumns.find((t=>t.columnName==e)),s=t?r(t.driverNativeColumn.type,t.driverNativeColumn.dataLength):i.TYPES.NVarChar;s.type.toLowerCase().includes("char")&&m.add(e),l.addColumn(e,s,{nullable:!t||!t.notNull,length:t?t.driverNativeColumn.dataLength:void 0,precision:t?t.driverNativeColumn.precision:void 0,scale:t?t.driverNativeColumn.scale:void 0})}const d=s.map((e=>c.mapValues(e,((e,t)=>m.has(t)?e?e.toString():null:e))));e.client.execBulkLoad(l,d)}))}(n,u,d,t)}catch(e){l.error(o(e),"DBGM-00199 Error during bulk insert, insert stopped"),d.destroy(e)}},d}},831:(e,t,n)=>{const s=n(825),a=n(203),o=n(534),i=n(948),r=n(221),c=n(911),l=new(n(812)),{tediousConnect:m,tediousQueryCore:d,tediousReadQuery:u,tediousStream:p}=n(830),{nativeConnect:N,nativeQueryCore:E,nativeReadQuery:y,nativeStream:_}=n(304),{getLogger:h}=global.DBGATE_PACKAGES["dbgate-tools"],b=n(926),C=h("mssqlDriver");let T,S;const O=[{title:"Windows",name:"sspi",disabledFields:["password","port","user"]},{title:"SQL Server",name:"sql",disabledFields:["port"]},{title:"NodeJs portable driver (tedious) - recomended",name:"tedious"}],I={...o,analyserClass:i,getAuthTypes(){const e=[];return T?.isWindows&&e.push(...O),S.isAuthProxySupported()&&e.push({title:"NodeJs portable driver (tedious) - recomended",name:"tedious"},{title:"Microsoft Entra ID (with MFA support)",name:"msentra",disabledFields:["user","password"]}),T.isElectron||e.push({title:"Azure Managed Identity",name:"azureManagedIdentity",disabledFields:["user","password"]}),e.length>0?s.uniqBy(e,"name"):null},async connect(e){const{authType:t}=e,n=!T?.isWindows||"sspi"!=t&&"sql"!=t?"tedious":"msnodesqlv8";return{client:"msnodesqlv8"==n?await N(e):await m(e),connectionType:n,database:e.database,conid:e.conid}},close:async e=>e.client.close(),queryCore:async(e,t,n)=>"msnodesqlv8"==e.connectionType?E(e,t,n):d(e,t,n),async query(e,t,n){return l.acquire("connection",(async()=>this.queryCore(e,t,n)))},stream:async(e,t,n)=>"msnodesqlv8"==e.connectionType?_(e,t,n):p(e,t,n),readQuery:async(e,t,n)=>"msnodesqlv8"==e.connectionType?y(e,t,n):u(e,t,n),async writeTable(e,t,n){return"msnodesqlv8"==e.connectionType?c(this,a,e,t,n):r(this,a,e,t,n)},async getVersion(e){const t=(await this.query(e,"\nSELECT \n @@VERSION AS version, \n SERVERPROPERTY ('productversion') as productVersion,\n CASE \n WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '8%' THEN 'SQL Server 2000'\n WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '9%' THEN 'SQL Server 2005'\n WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '10.0%' THEN 'SQL Server 2008'\n WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '10.5%' THEN 'SQL Server 2008 R2'\n WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '11%' THEN 'SQL Server 2012'\n WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '12%' THEN 'SQL Server 2014'\n WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '13%' THEN 'SQL Server 2016' \n WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '14%' THEN 'SQL Server 2017' \n WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '15%' THEN 'SQL Server 2019' \n ELSE 'Unknown'\n END AS versionText\n")).rows[0];if(t.productVersion){const e=t.productVersion.split("."),n=parseInt(e[0])||0;t.productVersionNumber=n}else t.productVersionNumber=0;return t},async listDatabases(e){const{rows:t}=await this.query(e,"SELECT name FROM sys.databases order by name");return t},async listDatabasesFull(e){const{rows:t}=await this.query(e,b.listDatabases);return t},async listProcesses(e){const{rows:t}=await this.query(e,b.listProcesses);return t},async listVariables(e){const{rows:t}=await this.query(e,b.listVariables);return t},async killProcess(e,t){await this.query(e,`KILL ${t}`)},async serverSummary(e){const[t,n,s]=await Promise.all([this.listVariables(e),this.listProcesses(e),this.listDatabasesFull(e)]);return{variables:t,processes:n,databases:{rows:s,columns:[{filterable:!0,sortable:!0,header:"Database",fieldName:"name",type:"data"},{filterable:!0,sortable:!0,header:"Status",fieldName:"status",type:"data"},{filterable:!0,sortable:!0,header:"Recovery Model",fieldName:"recoveryModel",type:"data"},{filterable:!0,sortable:!0,header:"Compatibility Level",fieldName:"compatibilityLevel",type:"data"},{filterable:!0,sortable:!0,header:"Read Only",fieldName:"isReadOnly",type:"data"},{sortable:!0,header:"Data Size",fieldName:"sizeOnDisk",type:"fileSize"},{sortable:!0,header:"Log Size",fieldName:"logSizeOnDisk",type:"fileSize"}]}}},getRedirectAuthUrl:(e,t)=>"msentra"!=e.authType?null:S.authProxyGetRedirectUrl({...t,type:"msentra"}),getAuthTokenFromCode:(e,t)=>S.authProxyGetTokenFromCode(t),getAccessTokenFromAuth:(e,t)=>t?.user?.msentraToken,async listSchemas(e){const{rows:t}=await this.query(e,"select schema_id as objectId, name as schemaName from sys.schemas"),n=await this.query(e,"SELECT SCHEMA_NAME() as name"),s=n.rows[0]?.name;return C.debug(`DBGM-00140 Loaded ${t.length} mssql schemas`),t.map((e=>({...e,isDefault:e.schemaName==s})))}};I.initialize=e=>{T=e.platformInfo,S=e.authProxy},e.exports=I},938:(e,t,n)=>{const s=n(569),{TYPES:a}=s;e.exports=function(e,t){switch(e.id){case 104:return a.Bit;case 108:return a.Numeric;case 106:return a.Decimal;case 38:return 8===t?a.BigInt:4===t?a.Int:2===t?a.SmallInt:a.TinyInt;case 109:return 8===t?a.Float:a.Real;case 110:return 8===t?a.Money:a.SmallMoney;case 111:return 8===t?a.DateTime:a.SmallDateTime}return e}},237:(e,t,n)=>{const s=n(831);e.exports={packageName:"dbgate-plugin-mssql",drivers:[s],initialize(e){s.initialize(e)}}},672:e=>{e.exports=function(e){const t=new Set;for(let n=0;n<e.length;n++){if(t.has(e[n].columnName)){let s=2;for(;t.has(`${e[n].columnName}${s}`);)s++;e[n].columnName=`${e[n].columnName}${s}`}t.add(e[n].columnName)}}},304:(e,t,n)=>{n(825);const s=n(203),a=n(672),{extractDbNameFromComposite:o}=global.DBGATE_PACKAGES["dbgate-tools"];let i;function r(e){const t=e.map((e=>{const t={columnName:e.name,dataType:e.sqlType.toLowerCase(),notNull:!e.nullable};return t.dataType.endsWith(" identity")&&(t.dataType=t.dataType.replace(" identity",""),t.autoIncrement=!0),e.size&&t.dataType.includes("char")&&(t.dataType+=`(${e.size})`),t}));return a(t),t}async function c({server:e,port:t,user:s,password:a,database:r,authType:c},l){let m=`server=${e}`;return t&&!e.includes("\\")&&(m+=`,${t}`),m+=`;Driver={${l}}`,m+="sspi"==c?";Trusted_Connection=Yes":`;UID=${s};PWD=${a}`,r&&(m+=`;Database=${o(r)}`),new Promise(((e,t)=>{(i||(i=n(934)),i).open(m,((n,s)=>{n?t(n):e(s)}))}))}e.exports={nativeConnect:async function(e){const t=["ODBC Driver 17 for SQL Server","SQL Server Native Client 11.0"];for(let n=0;n<t.length;n+=1)try{const s=await c(e,t[n]);return console.error(`Connected SQL Server with ${t[n]} driver`),s}catch(e){if(e.message&&e.message.includes("[ODBC Driver Manager]")&&n<t.length-1){console.error(`Failed connecting with ${t[n]} driver, trying next`,e);continue}throw new Error(`${e}`)}},nativeQueryCore:async function(e,t,n){return null==t?Promise.resolve({rows:[],columns:[]}):new Promise(((n,s)=>{let a=null,o=null;const i=e.client.query(t),c=[];i.on("meta",(e=>{a=r(e)})),i.on("column",((e,t)=>{o[a[e].columnName]=t})),i.on("row",(e=>{o&&c.push(o),o={}})),i.on("error",(e=>{s(e)})),i.on("done",(()=>{o&&c.push(o),n({columns:a,rows:c})}))}))},nativeReadQuery:async function(e,t,n){const a=new s.PassThrough({objectMode:!0,highWaterMark:100});let o=null,i=null;const c=e.client.query(t);return c.on("meta",(e=>{o=r(e),a.write({__isStreamHeader:!0,...n||{columns:o}})})),c.on("column",((e,t)=>{i[o[e].columnName]=t})),c.on("row",(e=>{i&&a.write(i),i={}})),c.on("error",(e=>{console.error(e),a.end()})),c.on("done",(()=>{i&&a.write(i),a.end()})),a},nativeStream:async function(e,t,n){let s=null,a=null;const o=e.client.query(t);o.on("meta",(e=>{a&&n.row(a),a=null,s=r(e),n.recordset(s)})),o.on("column",((e,t)=>{a[s[e].columnName]=t})),o.on("row",(e=>{a&&n.row(a),a={}})),o.on("error",(e=>{(e=>{const{message:t,lineNumber:s,procName:a}=e;n.info({message:t,line:s,procedure:a,time:new Date,severity:"error"})})(e),n.done()})),o.on("info",(e=>{(e=>{const{message:t,lineNumber:s,procName:a}=e;n.info({message:t,line:s,procedure:a,time:new Date,severity:"info"})})(e)})),o.on("done",(()=>{a&&n.row(a),n.done()}))}}},98:e=>{e.exports="\nselect c.object_id as objectId,\n\tep.value as columnComment,\n c.column_id as columnId\nfrom sys.columns c\ninner join sys.objects o on c.object_id = o.object_id\nINNER JOIN sys.schemas u ON u.schema_id=o.schema_id \nINNER JOIN sys.extended_properties ep on ep.major_id = c.object_id and ep.minor_id = c.column_id and ep.name = 'MS_Description'\nwhere o.type IN ('U', 'V') and o.object_id =OBJECT_ID_CONDITION and u.name =SCHEMA_NAME_CONDITION\norder by c.column_id\n"},925:e=>{e.exports="\nselect c.name as columnName, t.name as dataType, c.object_id as objectId, c.is_identity as isIdentity,\n c.max_length as maxLength, c.precision, c.scale, c.is_nullable as isNullable,\n col.CHARACTER_MAXIMUM_LENGTH as charMaxLength,\n d.definition as defaultValue, d.name as defaultConstraint,\n m.definition as computedExpression, m.is_persisted as isPersisted, c.column_id as columnId, \n col.NUMERIC_PRECISION as numericPrecision,\n col.NUMERIC_SCALE as numericScale,\n c.is_sparse as isSparse,\n ep.value as columnComment\nfrom sys.columns c\ninner join sys.types t on c.system_type_id = t.system_type_id and c.user_type_id = t.user_type_id\ninner join sys.objects o on c.object_id = o.object_id\nINNER JOIN sys.schemas u ON u.schema_id=o.schema_id \nINNER JOIN INFORMATION_SCHEMA.COLUMNS col ON col.TABLE_NAME = o.name AND col.TABLE_SCHEMA = u.name and col.COLUMN_NAME = c.name\nleft join sys.default_constraints d on c.default_object_id = d.object_id\nleft join sys.computed_columns m on m.object_id = c.object_id and m.column_id = c.column_id\nleft join sys.extended_properties ep on ep.major_id = c.object_id \n and ep.minor_id = c.column_id \n and ep.name = 'MS_Description'\n and ep.class = 1 -- Add this filter for object/column level properties\nwhere o.type = 'U' and o.object_id =OBJECT_ID_CONDITION and u.name =SCHEMA_NAME_CONDITION\norder by c.column_id\n"},958:e=>{e.exports="\nSELECT\n schemaName = FK.TABLE_SCHEMA,\n pureName = FK.TABLE_NAME,\n columnName = CU.COLUMN_NAME,\n\n refSchemaName = ISNULL(IXS.name, PK.TABLE_SCHEMA),\n refTableName = ISNULL(IXT.name, PK.TABLE_NAME),\n refColumnName = IXCC.name,\n\n constraintName = C.CONSTRAINT_NAME,\n updateAction = rc.UPDATE_RULE,\n deleteAction = rc.DELETE_RULE,\n\n objectId = o.object_id \nFROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS C\nINNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS FK \n ON C.CONSTRAINT_NAME = FK.CONSTRAINT_NAME\n AND C.CONSTRAINT_SCHEMA = FK.CONSTRAINT_SCHEMA\n\nLEFT JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS PK \n ON C.UNIQUE_CONSTRAINT_NAME = PK.CONSTRAINT_NAME\n AND C.UNIQUE_CONSTRAINT_SCHEMA = PK.CONSTRAINT_SCHEMA\n\nLEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU \n ON C.CONSTRAINT_NAME = CU.CONSTRAINT_NAME\n AND C.CONSTRAINT_SCHEMA = CU.CONSTRAINT_SCHEMA\n\nINNER JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc \n ON FK.CONSTRAINT_NAME = rc.CONSTRAINT_NAME\n AND FK.CONSTRAINT_SCHEMA = rc.CONSTRAINT_SCHEMA\n\nLEFT JOIN sys.indexes IX \n ON IX.name = C.UNIQUE_CONSTRAINT_NAME\n AND IX.object_id = OBJECT_ID(PK.TABLE_SCHEMA + '.' + PK.TABLE_NAME)\n\nLEFT JOIN sys.objects IXT \n ON IXT.object_id = IX.object_id\n\nLEFT JOIN sys.index_columns IXC \n ON IX.object_id = IXC.object_id \n AND IX.index_id = IXC.index_id\n\nLEFT JOIN sys.columns IXCC \n ON IXCC.object_id = IXC.object_id\n AND IXCC.column_id = IXC.column_id\n\nLEFT JOIN sys.schemas IXS \n ON IXT.schema_id = IXS.schema_id\n\nINNER JOIN sys.objects o \n ON o.name = FK.TABLE_NAME\n AND SCHEMA_NAME(o.schema_id) = FK.TABLE_SCHEMA\n\nINNER JOIN sys.schemas s \n ON o.schema_id = s.schema_id\n AND s.name = FK.TABLE_SCHEMA\n\nwhere o.object_id =OBJECT_ID_CONDITION and s.name =SCHEMA_NAME_CONDITION\n"},460:e=>{e.exports="\nSELECT \n o.object_id as parentObjectId,\n p.object_id AS parameterObjectId,\n o.name as pureName,\n CASE \n WHEN p.name IS NULL OR LTRIM(RTRIM(p.name)) = '' THEN \n '@Output'\n ELSE \n p.name\n END AS parameterName,\n TYPE_NAME(p.user_type_id) AS dataType,\n CASE \n WHEN TYPE_NAME(p.user_type_id) = 'nvarchar' THEN p.max_length / 2\n ELSE p.max_length\n END AS charMaxLength,\n CASE \n WHEN p.is_output = 1 THEN 'OUT'\n ELSE 'IN'\n END AS parameterMode,\n CASE\n WHEN TYPE_NAME(p.user_type_id) IN ('numeric', 'decimal') THEN p.precision\n ELSE NULL\n END AS numericPrecision,\n CASE\n WHEN TYPE_NAME(p.user_type_id) IN ('numeric', 'decimal') THEN p.scale\n ELSE NULL\n END AS numericScale,\n CASE \n WHEN p.is_output = 1 THEN 'OUT'\n ELSE 'IN'\n END AS parameterMode,\n p.parameter_id AS parameterIndex,\n s.name as schemaName\nFROM \n sys.objects o\nJOIN \n sys.parameters p ON o.object_id = p.object_id\nINNER JOIN\n sys.schemas s ON s.schema_id=o.schema_id \nWHERE \n o.type IN ('FN', 'IF', 'TF')\n and o.object_id =OBJECT_ID_CONDITION and s.name =SCHEMA_NAME_CONDITION\nORDER BY \n p.object_id, \n p.parameter_id;\n"},926:(e,t,n)=>{const s=n(925),a=n(958),o=n(916),i=n(97),r=n(914),c=n(919),l=n(399),m=n(864),d=n(990),u=n(754),p=n(460),N=n(602),E=n(474),y=n(689),_=n(377),h=n(447),b=n(264),C=n(823),T=n(98);e.exports={columns:s,tables:i,foreignKeys:a,primaryKeys:o,modifications:c,loadSqlCode:l,views:m,programmables:d,proceduresParameters:u,functionParameters:p,viewColumns:N,indexes:E,indexcols:y,tableSizes:r,triggers:_,listVariables:h,listDatabases:b,listProcesses:C,baseColumns:T}},689:e=>{e.exports="\nselect \n c.object_id, c.index_id, c.column_id, \n col.name as columnName,\n c.is_descending_key as isDescending, c.is_included_column as isIncludedColumn\nfrom sys.index_columns c\ninner join sys.columns col on c.object_id = col.object_id and c.column_id = col.column_id\ninner join sys.objects o on c.object_id = o.object_id\nINNER JOIN sys.schemas u ON u.schema_id=o.schema_id \nwhere c.object_id =OBJECT_ID_CONDITION and u.name =SCHEMA_NAME_CONDITION\norder by c.key_ordinal\n"},474:e=>{e.exports="\nselect i.object_id, i.name as constraintName, i.type_desc as indexType, i.is_unique as isUnique,i.index_id, i.is_unique_constraint, i.filter_definition AS filterDefinition\nfrom sys.indexes i\ninner join sys.objects o on i.object_id = o.object_id\nINNER JOIN sys.schemas u ON u.schema_id=o.schema_id \nwhere i.is_primary_key=0\nand i.is_hypothetical=0 and indexproperty(i.object_id, i.name, 'IsStatistics') = 0\nand objectproperty(i.object_id, 'IsUserTable') = 1\nand i.index_id between 1 and 254\n\n--and i.name not in\n-- (select o.name from sysobjects o\n-- where o.parent_obj = i.object_id\n-- and objectproperty(o.id, N'isConstraint') = 1.0)\n\n and i.object_id =OBJECT_ID_CONDITION and u.name =SCHEMA_NAME_CONDITION\n"},264:e=>{e.exports="\n SELECT\n d.name,\n d.database_id,\n d.state_desc as status,\n d.recovery_model_desc as recoveryModel,\n d.collation_name as collation,\n d.compatibility_level as compatibilityLevel,\n d.is_read_only as isReadOnly,\n CAST(SUM(CASE WHEN mf.type = 0 THEN mf.size * 8192.0 ELSE 0 END) AS BIGINT) AS sizeOnDisk,\n CAST(SUM(CASE WHEN mf.type = 1 THEN mf.size * 8192.0 ELSE 0 END) AS BIGINT) AS logSizeOnDisk\n FROM sys.databases d\n LEFT JOIN sys.master_files mf ON d.database_id = mf.database_id\n GROUP BY d.name, d.database_id, d.state_desc, d.recovery_model_desc, d.collation_name,\n d.compatibility_level, d.is_read_only\n ORDER BY d.name\n"},823:e=>{e.exports="\nSELECT \n session_id as processId,\n ISNULL(host_name, 'Unknown') + ':' + ISNULL(CAST(host_process_id AS VARCHAR(10)), '?') as client,\n ISNULL(DB_NAME(database_id), 'master') as namespace,\n ISNULL(DATEDIFF(SECOND, last_request_start_time, GETDATE()), 0) as runningTime,\n status as state\nFROM sys.dm_exec_sessions \nWHERE is_user_process = 1\nORDER BY session_id\n"},447:e=>{e.exports="\n SELECT name as variable, value FROM sys.configurations ORDER BY name\n"},399:e=>{e.exports="\nselect s.name as pureName, u.name as schemaName, c.text AS codeText\n from sys.objects s\n inner join sys.syscomments c on s.object_id = c.id\n inner join sys.schemas u on u.schema_id = s.schema_id\nwhere (s.object_id =OBJECT_ID_CONDITION) and u.name =SCHEMA_NAME_CONDITION\norder by u.name, s.name, c.colid\n"},919:e=>{e.exports="\nselect o.object_id as objectId, o.modify_date as modifyDate, o.type, o.name as pureName, s.name as schemaName\nfrom sys.objects o \ninner join sys.schemas s on o.schema_id = s.schema_id\nwhere o.type in ('U', 'V', 'P', 'IF', 'FN', 'TF', 'TR')\n and s.name =SCHEMA_NAME_CONDITION\n"},916:e=>{e.exports="\nSELECT \n i.object_id AS objectId,\n o.name AS pureName,\n s.name AS schemaName,\n c.name AS columnName,\n i.name AS constraintName\nFROM \n sys.indexes i\nINNER JOIN \n sys.index_columns ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id\nINNER JOIN \n sys.columns c ON ic.object_id = c.object_id AND ic.column_id = c.column_id\nINNER JOIN\n sys.objects o ON i.object_id = o.object_id\nINNER JOIN\n sys.schemas s ON o.schema_id = s.schema_id\nWHERE \n i.is_primary_key = 1\n\tand o.object_id =OBJECT_ID_CONDITION\n and s.name =SCHEMA_NAME_CONDITION\nORDER BY \n ic.key_ordinal\n"},754:e=>{e.exports="\nSELECT \n o.object_id as parentObjectId,\n p.object_id as objectId,\n o.name as pureName,\n p.name AS parameterName,\n TYPE_NAME(p.user_type_id) AS dataType,\n CASE \n WHEN TYPE_NAME(p.user_type_id) = 'nvarchar' THEN p.max_length / 2\n ELSE p.max_length\n END AS charMaxLength,\n CASE \n WHEN p.is_output = 1 THEN 'OUT'\n ELSE 'IN'\n END AS parameterMode,\n CASE\n WHEN TYPE_NAME(p.user_type_id) IN ('numeric', 'decimal') THEN p.precision\n ELSE NULL\n END AS numericPrecision,\n CASE\n WHEN TYPE_NAME(p.user_type_id) IN ('numeric', 'decimal') THEN p.scale\n ELSE NULL\n END AS numericScale,\n p.parameter_id AS parameterIndex,\n s.name as schemaName\nFROM \n sys.objects o\nJOIN \n sys.parameters p ON o.object_id = p.object_id\nINNER JOIN\n sys.schemas s ON s.schema_id=o.schema_id \nWHERE \n o.type = 'P'\n and o.object_id =OBJECT_ID_CONDITION and s.name =SCHEMA_NAME_CONDITION\nORDER BY \n o.object_id,\n p.parameter_id;\n"},990:e=>{e.exports="\nselect o.name as pureName, s.name as schemaName, o.object_id as objectId, o.create_date as createDate, o.modify_date as modifyDate, o.type as sqlObjectType\nfrom sys.objects o \ninner join sys.schemas s on o.schema_id = s.schema_id\nwhere o.type in ('P', 'IF', 'FN', 'TF') and o.object_id =OBJECT_ID_CONDITION and s.name =SCHEMA_NAME_CONDITION\n"},914:e=>{e.exports="\nSELECT distinct\n t.object_id as objectId,\n p.rows AS tableRowCount\nFROM \n sys.tables t\nINNER JOIN \n sys.indexes i ON t.OBJECT_ID = i.object_id\nINNER JOIN \n sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id\nINNER JOIN\n sys.schemas s ON t.schema_id = s.schema_id\nWHERE \n t.NAME NOT LIKE 'dt%' \n AND t.is_ms_shipped = 0\n AND i.OBJECT_ID > 255 \n AND s.name =SCHEMA_NAME_CONDITION\n"},97:e=>{e.exports="\nselect\n\to.name as pureName, \n\ts.name as schemaName, \n\to.object_id as objectId,\n\to.create_date as createDate, \n\to.modify_date as modifyDate,\n\tep.value as objectComment\nfrom sys.tables o\ninner join sys.schemas s on o.schema_id = s.schema_id\nleft join sys.extended_properties ep on ep.major_id = o.object_id \n\tand ep.minor_id = 0 \n\tand ep.name = 'MS_Description'\n and ep.class = 1 -- Add this filter for object/column level properties\nwhere o.object_id =OBJECT_ID_CONDITION and s.name =SCHEMA_NAME_CONDITION"},377:e=>{e.exports="\nSELECT \n o.modify_date as modifyDate,\n o.object_id as objectId,\n o.name AS triggerName,\n s.name AS schemaName,\n OBJECT_NAME(o.parent_object_id) AS tableName,\n CASE \n WHEN OBJECTPROPERTY(o.object_id, 'ExecIsAfterTrigger') = 1 THEN 'AFTER'\n WHEN OBJECTPROPERTY(o.object_id, 'ExecIsInsteadOfTrigger') = 1 THEN 'INSTEAD OF'\n ELSE 'BEFORE'\n END AS triggerTiming,\n CASE \n WHEN OBJECTPROPERTY(o.object_id, 'ExecIsInsertTrigger') = 1 THEN 'INSERT'\n WHEN OBJECTPROPERTY(o.object_id, 'ExecIsUpdateTrigger') = 1 THEN 'UPDATE'\n WHEN OBJECTPROPERTY(o.object_id, 'ExecIsDeleteTrigger') = 1 THEN 'DELETE'\n END AS eventType,\n OBJECT_DEFINITION(o.object_id) AS definition\nFROM sys.objects o\nINNER JOIN sys.tables t \n ON o.parent_object_id = t.object_id \nINNER JOIN sys.schemas s\n ON t.schema_id = s.schema_id\nWHERE o.type = 'TR'\n AND o.is_ms_shipped = 0 \n AND o.object_id =OBJECT_ID_CONDITION\n AND s.name =SCHEMA_NAME_CONDITION\n"},602:e=>{e.exports="\nselect \n o.object_id AS objectId,\n col.TABLE_SCHEMA as schemaName, \n col.TABLE_NAME as pureName, \n\tcol.COLUMN_NAME as columnName,\n\tcol.IS_NULLABLE as isNullable,\n\tcol.DATA_TYPE as dataType,\n\tcol.CHARACTER_MAXIMUM_LENGTH as charMaxLength,\n\tcol.NUMERIC_PRECISION as precision,\n\tcol.NUMERIC_SCALE as scale,\n\tcol.COLUMN_DEFAULT\nFROM sys.objects o \nINNER JOIN sys.schemas u ON u.schema_id=o.schema_id \nINNER JOIN INFORMATION_SCHEMA.COLUMNS col ON col.TABLE_NAME = o.name AND col.TABLE_SCHEMA = u.name\nWHERE o.type in ('V') and o.object_id =OBJECT_ID_CONDITION and u.name =SCHEMA_NAME_CONDITION\norder by col.ORDINAL_POSITION\n"},864:e=>{e.exports="\nSELECT \n\to.name as pureName,\n\tu.name as schemaName,\n\to.object_id as objectId,\n\to.create_date as createDate,\n\to.modify_date as modifyDate\nFROM sys.objects o INNER JOIN sys.schemas u ON u.schema_id=o.schema_id \nWHERE type in ('V') and o.object_id =OBJECT_ID_CONDITION and u.name =SCHEMA_NAME_CONDITION\n"},830:(e,t,n)=>{const s=n(825),a=n(203),o=n(569),{ManagedIdentityCredential:i}=n(50),r=n(672),{extractDbNameFromComposite:c}=global.DBGATE_PACKAGES["dbgate-tools"];function l(e,t=!1){const n=e.map((e=>{const n={columnName:e.colName,dataType:e.type.name.toLowerCase(),driverNativeColumn:t?e:void 0,notNull:!(1&e.flags),autoIncrement:!!(16&e.flags)};return e.dataLength&&(n.dataType+=`(${e.dataLength})`),n}));return r(n),n}e.exports={tediousConnect:async function(e){const{server:t,port:n,database:a,ssl:r,trustServerCertificate:l,authType:m}=e,d=await async function({authType:e,accessToken:t,user:n,password:s,windowsDomain:a}){switch(e){case"azureManagedIdentity":return{type:"azure-active-directory-access-token",options:{token:await async function(){const e=new i;return(await e.getToken("https://database.windows.net/.default")).token}()}};case"msentra":return{type:"azure-active-directory-access-token",options:{token:t}};default:return{type:a?"ntlm":"default",options:{userName:n,password:s,...a?{domain:a}:{}}}}}(e);return new Promise(((e,i)=>{const[u,p]=(t||"").split("\\"),N={instanceName:p,encrypt:!!r||"msentra"==m||"azureManagedIdentity"==m,cryptoCredentialsDetails:r?s.pick(r,["ca","cert","key"]):void 0,trustServerCertificate:r?!(r.ca||r.cert||r.key)||r.rejectUnauthorized:void 0,enableArithAbort:!0,validateBulkLoadParameters:!1,requestTimeout:36e5,port:n&&!p?parseInt(n):void 0,trustServerCertificate:!!l,appName:"DbGate"};a&&(N.database=c(a));const E=new o.Connection({server:u,authentication:d,options:N});E.on("connect",(function(t){t&&i(t),e(E)})),E.connect()}))},tediousQueryCore:async function(e,t,n){if(null==t)return Promise.resolve({rows:[],columns:[]});const{addDriverNativeColumn:a,discardResult:i}=n||{};return new Promise(((n,i)=>{const r={rows:[],columns:[]},c=new o.Request(t,((e,t)=>{e?i(e):n(r)}));c.on("columnMetadata",(function(e){r.columns=l(e,a)})),c.on("row",(function(e){r.rows.push(s.zipObject(r.columns.map((e=>e.columnName)),e.map((e=>e.value))))})),e.client.execSqlBatch(c)}))},tediousReadQuery:async function(e,t,n){const i=new a.PassThrough({objectMode:!0,highWaterMark:100});let r=[];const c=new o.Request(t,((e,t)=>{e&&console.error(e),i.end()}));return c.on("columnMetadata",(function(e){r=l(e),i.write({__isStreamHeader:!0,...n||{columns:r}})})),c.on("row",(function(e){const t=s.zipObject(r.map((e=>e.columnName)),e.map((e=>e.value)));i.write(t)})),e.client.execSql(c),i},tediousStream:async function(e,t,n){let a=[];const i=e=>{const{message:t,lineNumber:s,procName:a}=e;n.info({message:t,line:null!=s&&s>0?s-1:s,procedure:a,time:new Date,severity:"info"})},r=e=>{const{message:t,lineNumber:s,procName:a}=e;n.info({message:t,line:null!=s&&s>0?s-1:s,procedure:a,time:new Date,severity:"error"})};e.client.on("infoMessage",i),e.client.on("errorMessage",r);const c=new o.Request(t,((t,s)=>{n.done(),e.client.off("infoMessage",i),e.client.off("errorMessage",r),n.info({message:`${s} rows affected`,time:new Date,severity:"info"})}));c.on("columnMetadata",(function(e){a=l(e),n.recordset(a)})),c.on("row",(function(e){const t=s.zipObject(a.map((e=>e.columnName)),e.map((e=>e.value)));n.row(t)})),e.client.execSqlBatch(c)}}},391:e=>{const{SqlDumper:t,testEqualColumns:n,arrayToHexString:s}=global.DBGATE_PACKAGES["dbgate-tools"];class a extends t{constructor(e,t){super(e),t&&t.useHardSeparator&&(this.useHardSeparator=!0)}endCommand(){this.useHardSeparator?this.putRaw("\nGO\n"):super.endCommand()}dropDatabase(e){this.putCmd("USE master;\n ALTER DATABASE %i SET SINGLE_USER WITH ROLLBACK IMMEDIATE;\n DROP DATABASE %i",e,e)}autoIncrement(){this.put(" ^identity")}putStringValue(e){/[^\u0000-\u00ff]/.test(e)&&this.putRaw("N"),super.putStringValue(e)}putByteArrayValue(e){super.putRaw("0x"+s(e))}allowIdentityInsert(e,t){this.putCmd("^set ^identity_insert %f %k",e,t?"on":"off")}transform(e,t){switch(e){case"GROUP:YEAR":case"YEAR":this.put("^datepart(^year, %c)",t);break;case"MONTH":this.put("^datepart(^month, %c)",t);break;case"DAY":this.put("^datepart(^day, %c)",t);break;case"GROUP:MONTH":this.put("^convert(^varchar(100), ^datepart(^year, %c)) + '-' + right('0' + ^convert(^varchar(100), ^datepart(^month, %c)), 2)",t,t);break;case"GROUP:DAY":this.put("^convert(^varchar(100), ^datepart(^year, %c)) + '-' + ^right('0' + ^convert(^varchar(100), ^datepart(^month, %c)), 2)+'-' + ^right('0' + ^convert(^varchar(100), ^datepart(^day, %c)), 2)",t,t,t);break;default:t()}}renameObject(e,t){this.putCmd("^execute sp_rename '%f', '%s', 'OBJECT'",e,t)}changeObjectSchema(e,t){this.putCmd("^execute sp_changeobjectowner '%f', '%s'",e,t)}dropTable(e,t={}){t.testIfExists&&this.put("IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'%f') AND type in (N'U'))&n",e),super.dropTable(e,t)}dropColumn(e){e.defaultConstraint&&this.putCmd("^alter ^table %f ^drop ^constraint %i",e,e.defaultConstraint),super.dropColumn(e)}dropDefault(e){e.defaultConstraint&&this.putCmd("^alter ^table %f ^drop ^constraint %i",e,e.defaultConstraint)}guessDefaultName(e){return e.defaultConstraint||`DF_${e.schemaName||"dbo"}_${e.pureName}_col.columnName`}createDefault(e){if(null==e.defaultValue)return;const t=e.defaultValue?.toString();if(t){const n=this.guessDefaultName(e);this.putCmd("^alter ^table %f ^add ^constraint %i ^default %s for %i",e,n,t,e.columnName)}}renameColumn(e,t){this.putCmd("^execute sp_rename '%f.%i', '%s', 'COLUMN'",e,e.columnName,t)}dropTableCommentIfExists(e){const{schemaName:t,pureName:n}=e,s=`${t&&t+"."}${n}`;this.put("&>^if ^exists (&n"),this.put("&>^select 1 ^from sys.extended_properties&n"),this.put("^where major_id = OBJECT_ID('%s')&n",s),this.put("^and minor_id = 0&n"),this.put("^and name = N'MS_Description'&<&<&n"),this.put(")&n"),this.put("&>^begin&n"),this.put("&>^exec sp_dropextendedproperty&n"),this.put("@name = N'MS_Description',&n"),this.put("@level0type = N'SCHEMA', @level0name = '%s',&n",t),this.put("@level1type = N'TABLE', @level1name = '%s'&<&n",n),this.put("^end"),this.endCommand()}createTableComment(e){const{schemaName:t,pureName:n,objectComment:s}=e;s&&(this.put("&>^exec sp_addextendedproperty&n"),this.put("@name = N'MS_Description', @value = N'%s',&n",s),this.put("@level0type = N'SCHEMA', @level0name = '%s',&n",t||"dbo"),this.put("@level1type = N'TABLE', @level1name = '%s&<'",n),this.endCommand())}changeColumnComment(e,t){e.columnComment!==t.columnComment&&(e.columnComment&&this.dropColumnCommentIfExists(t),t.columnComment&&this.createColumnComment(t))}dropColumnCommentIfExists(e){const{schemaName:t,columnName:n,pureName:s}=e,a=`${t&&t+"."}${s}`;this.put("&>^if ^exists (&n"),this.put("&>^select 1 ^from sys.extended_properties&n"),this.put("^where major_id = OBJECT_ID('%s')&n",a),this.put("^and minor_id = (^select column_id ^from sys.columns ^where object_id = OBJECT_ID('%s') ^and name = '%s')&n",a,n),this.put("^and name = N'MS_Description'&<&<&n"),this.put(")&n"),this.put("&>^begin&n"),this.put("&>^exec sp_dropextendedproperty&n"),this.put("@name = N'MS_Description',&n"),this.put("@level0type = N'SCHEMA', @level0name = '%s',&n",t),this.put("@level1type = N'TABLE', @level1name = '%s',&n",s),this.put("@level2type = N'COLUMN', @level2name = '%s'&<&n",n),this.put("^end"),this.endCommand()}createColumnComment(e){const{schemaName:t,columnName:n,pureName:s,columnComment:a}=e;a&&(this.put("&>^exec sp_addextendedproperty&n"),this.put("@name = N'MS_Description', "),this.put("@value = N'%s',&n",a),this.put("@level0type = N'SCHEMA', @level0name = '%s',&n",t),this.put("@level1type = N'TABLE', @level1name = '%s',&n",s),this.put("@level2type = N'COLUMN', @level2name = '%s&<'",n),this.endCommand())}createTable(e){super.createTable(e);for(const t of e.columns||[])this.createColumnComment(t)}changeColumn(e,t,s){n(e,t,!1,!1,{ignoreComments:!0})?(this.dropDefault(e),e.columnName!=t.columnName&&this.renameColumn(e,t.columnName),this.createDefault(t)):(this.dropDefault(e),e.columnName!=t.columnName&&this.renameColumn(e,t.columnName),e.notNull||this.fillNewNotNullDefaults(t),this.put("^alter ^table %f ^alter ^column %i ",e,e.columnName,t.columnName),this.columnDefinition(t,{includeDefault:!1}),this.endCommand(),this.createDefault(t)),this.changeColumnComment(e,t)}specialColumnOptions(e){e.isSparse&&this.put("^sparse ")}renameConstraint(e,t){"index"==e.constraintType?this.putCmd("^execute sp_rename '%f.%i', '%s', 'INDEX'",e,e.constraintName,t):this.putCmd("^execute sp_rename '%f', '%s', 'OBJECT'",{schemaName:e.schemaName,pureName:e.constraintName},t)}selectScopeIdentity(){this.put("^select ^scope_identity()")}tableOptions(e){this.endCommand();const t=this.driver?.dialect?.getTableFormOptions?.("sqlCreateTable")||[];for(const n of t){const{name:t,sqlFormatString:s}=n,a=e[t];if("objectComment"==t)return void this.createTableComment(e);a&&(this.put("&n"),this.put(s,a))}}setTableOption(e,t,n){if("objectComment"==t)return this.dropTableCommentIfExists(e),void(n&&this.createTableComment(e));super.setTableOption(e,t,n)}callableTemplate(e){const t=(e,t)=>{this.putCollection(t,e||[],(e=>{this.putRaw(e.parameterName),"OUT"==e?.parameterMode&&this.put(" ^output")}))},n=e=>{for(const t of e||[])this.put("^declare %s %s",t.parameterName,t.dataType),"IN"==t.parameterMode&&this.put(" = :%s",t.parameterName.substring(1)),this.endCommand()};if("procedures"==e.objectTypeField&&(n(e.parameters),this.put("^execute %f&>&n",e),t(e.parameters,",&n"),this.put("&<&n"),this.endCommand()),"functions"==e.objectTypeField){const s=(e.parameters||[]).filter((e=>"OUT"!=e.parameterMode));n(s),this.put("^select %f(",e),t(s,", "),this.put(")"),this.endCommand()}}}a.prototype.renameView=a.prototype.renameObject,a.prototype.changeViewSchema=a.prototype.changeObjectSchema,a.prototype.renameProcedure=a.prototype.renameObject,a.prototype.changeProcedureSchema=a.prototype.changeObjectSchema,a.prototype.renameFunction=a.prototype.renameObject,a.prototype.changeFunctionSchema=a.prototype.changeObjectSchema,a.prototype.renameTrigger=a.prototype.renameObject,a.prototype.changeTriggerSchema=a.prototype.changeObjectSchema,a.prototype.renameTable=a.prototype.renameObject,a.prototype.changeTableSchema=a.prototype.changeObjectSchema,a.prototype.renameSqlObject=a.prototype.renameObject,e.exports=a},534:(e,t,n)=>{const{driverBase:s}=global.DBGATE_PACKAGES["dbgate-tools"],a=n(391),{mssqlSplitterOptions:o}=n(994),i=["GEOGRAPHY"],r={limitSelect:!0,rangeSelect:!0,topRecords:!0,offsetFetchRangeSyntax:!0,rowNumberOverPaging:!0,defaultSchemaName:"dbo",multipleSchema:!0,stringEscapeChar:"'",fallbackDataType:"nvarchar(max)",explicitDropConstraint:!1,enableConstraintsPerTable:!0,dropColumnDependencies:["default","dependencies","indexes","primaryKey","foreignKeys","uniques"],changeColumnDependencies:["indexes","dependencies","uniques"],anonymousPrimaryKey:!1,dropIndexContainsTableSpec:!0,quoteIdentifier:e=>`[${e}]`,createColumn:!0,dropColumn:!0,changeColumn:!0,createIndex:!0,dropIndex:!0,createForeignKey:!0,dropForeignKey:!0,createPrimaryKey:!0,dropPrimaryKey:!0,createUnique:!0,dropUnique:!0,createCheck:!0,dropCheck:!0,renameSqlObject:!0,filteredIndexes:!0,dropReferencesWhenDropTable:!0,namedDefaultConstraint:!0,columnProperties:{columnComment:!0,isSparse:!0,isPersisted:!0},safeCommentChanges:!0,predefinedDataTypes:["bigint","bit","decimal(10,2)","int","money","numeric","smallint","smallmoney","tinyint","float","real","date","datetime2","datetime","datetimeoffset","smalldatetime","time","char(20)","varchar(250)","text","nchar(20)","nvarchar(250)","ntext","binary(100)","varbinary(100)","image","xml"],createColumnViewExpression:(e,t,n,s)=>t&&i.includes(t.toUpperCase())?{exprType:"methodCall",method:"STAsText",alias:s||e,thisObject:{exprType:"column",columnName:e,source:n}}:t&&"XML"==t.toUpperCase()?{exprType:"call",func:"CONVERT",alias:s||e,args:[{exprType:"raw",sql:"NVARCHAR(MAX)"},{exprType:"column",columnName:e,source:n}]}:void 0,getTableFormOptions:e=>[{type:"text",label:"Comment",name:"objectComment",sqlFormatString:"^comment = %v",allowEmptyValue:!0}]},c={...s,supportsServerSummary:!0,dumperClass:a,dialect:r,readOnlySessions:!1,requiresDefaultSortCriteria:!0,dialectByVersion:e=>e&&e.productVersionNumber<11?{...r,rangeSelect:!1,offsetFetchRangeSyntax:!1}:r,showConnectionField:(e,t)=>["authType","server","port","user","password","defaultDatabase","singleDatabase","isReadOnly","useSeparateSchemas"].includes(e)||"trustServerCertificate"==e&&"sql"!=t.authType&&"sspi"!=t.authType||"windowsDomain"==e&&"sql"!=t.authType&&"sspi"!=t.authType&&"msentra"!=t.authType,getQuerySplitterOptions:e=>"editor"==e?{...o,adaptiveGoSplit:!0,ignoreComments:!0,preventSingleLineSplit:!0}:o,engine:"mssql@dbgate-plugin-mssql",title:"Microsoft SQL Server",defaultPort:1433,defaultAuthTypeName:"tedious",supportsTransactions:!0,getNewObjectTemplates:()=>[{label:"New view",sql:"CREATE VIEW myview\nAS\nSELECT * FROM table1"},{label:"New procedure",sql:"CREATE PROCEDURE myproc (@arg1 INT)\nAS\nBEGIN\n SELECT * FROM table1\nEND"},{label:"New function",sql:"CREATE FUNCTION myfunc (@arg1 INT) RETURNS INT\nAS\nBEGIN\n RETURN 1;\nEND"},{label:"New table valued function",sql:"CREATE FUNCTION myfunc (@arg1 INT) RETURNS TABLE \nAS\nRETURN SELECT * FROM table1"},{label:"New trigger",sql:"CREATE TRIGGER trigger_name\nON table_name AFTER INSERT AS\nBEGIN\nSELECT * FROM table_name\nEND"}],beforeConnectionSave:e=>({...e,useRedirectDbLogin:"msentra"==e.authType?1:0})};e.exports=c},50:e=>{"use strict";e.exports=require("@azure/identity")},812:e=>{"use strict";e.exports=require("async-lock")},825:e=>{"use strict";e.exports=require("lodash")},934:e=>{"use strict";e.exports=require("msnodesqlv8")},569:e=>{"use strict";e.exports=require("tedious")},982:e=>{"use strict";e.exports=require("crypto")},203:e=>{"use strict";e.exports=require("stream")}},t={},n=function n(s){var a=t[s];if(void 0!==a)return a.exports;var o=t[s]={exports:{}};return e[s](o,o.exports,n),o.exports}(237);module.exports=n})();
|
|
1
|
+
(()=>{var e={994:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.firebirdSplitterOptions=t.oracleSplitterOptions=t.redisSplitterOptions=t.noSplitSplitterOptions=t.mongoSplitterOptions=t.sqliteSplitterOptions=t.postgreSplitterOptions=t.mssqlSplitterOptions=t.mysqlSplitterOptions=t.defaultSplitterOptions=void 0,t.defaultSplitterOptions={stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'},allowSemicolon:!0,allowCustomDelimiter:!1,allowCustomSqlTerminator:!1,allowGoDelimiter:!1,allowSlashDelimiter:!1,allowDollarDollarString:!1,noSplit:!1,skipSeparatorBeginEnd:!1,doubleDashComments:!0,multilineComments:!0,javaScriptComments:!1,returnRichInfo:!1,splitByLines:!1,splitByEmptyLine:!1,preventSingleLineSplit:!1,adaptiveGoSplit:!1,ignoreComments:!1,copyFromStdin:!1,queryParameterStyle:null},t.mysqlSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{allowCustomDelimiter:!0,stringsBegins:["'","`",'"'],stringsEnds:{"'":"'","`":"`",'"':'"'},stringEscapes:{"'":"\\","`":"`",'"':"\\"}}),t.mssqlSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{allowSemicolon:!1,allowGoDelimiter:!0,stringsBegins:["'","["],stringsEnds:{"'":"'","[":"]"},stringEscapes:{"'":"'"}}),t.postgreSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{allowDollarDollarString:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),t.sqliteSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{skipSeparatorBeginEnd:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),t.mongoSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"\\",'"':"\\"}}),t.noSplitSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{noSplit:!0}),t.redisSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{splitByLines:!0}),t.oracleSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{allowCustomSqlTerminator:!0,allowSlashDelimiter:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),t.firebirdSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{skipSeparatorBeginEnd:!0,queryParameterStyle:":"})},948:(e,t,n)=>{const s=n(825),a=n(982),o=n(926),{DatabaseAnalyser:i,isTypeString:r,isTypeNumeric:c}=global.DBGATE_PACKAGES["dbgate-tools"];function l(e){switch(e.trim()){case"U":return"tables";case"V":return"views";case"P":return"procedures";case"IF":case"FN":case"TF":return"functions";case"TR":return"triggers";default:return null}}function m(e){if(e)for(;e.startsWith("(")&&e.endsWith(")");)e=e.slice(1,-1);return e}function d({dataType:e,charMaxLength:t,numericScale:n,numericPrecision:s}){let a=e;return t&&r(e)&&(a=`${e}(${t<0?"MAX":t})`),s&&n&&c(e)&&(a=`${e}(${s},${n})`),a}function u({isNullable:e,isIdentity:t,columnName:n,dataType:s,charMaxLength:a,numericPrecision:o,numericScale:i,defaultValue:r,defaultConstraint:c,computedExpression:l,columnComment:u,objectId:p}){const N=d({dataType:s,charMaxLength:a,numericPrecision:o,numericScale:i});if(r)for(r=r.trim();r.startsWith("(")&&r.endsWith(")");)r=(r=r.slice(1,-1)).trim();return{objectId:p,columnName:n,dataType:N,notNull:!e,autoIncrement:!!t,defaultValue:r,defaultConstraint:c,computedExpression:m(l),hasAutoValue:!("timestamp"!=s&&"rowversion"!=s&&!l),columnComment:u}}function p(e,t,n){if(!e)return null;const{modifyDate:s}=t;if(n?.length&&"tables"===e||"views"===e){const e=s?s.toISOString():"",o=n.filter((e=>e.objectId==t.objectId)).filter((e=>e.columnComment)).map((e=>`${e.columnId}/${e.columnComment}`)).join("||"),i=t.objectComment||"";return a.createHash("sha256").update(`${e}:${o}:${i}`).digest("hex")}return s?s.toISOString():null}e.exports=class extends i{constructor(e,t,n){super(e,t,n)}createQuery(e,t){if(!o[e])throw new Error(`Missing analyse file ${e}`);return super.createQuery(o[e],t)}async _computeSingleObjectId(){const{schemaName:e,pureName:t,typeField:n}=this.singleObjectFilter,s=e?`[${e}].[${t}]`:t,a=await this.driver.query(this.dbhan,`SELECT OBJECT_ID('${s}') AS id`);this.singleObjectId=a.rows[0].id}async _runAnalysis(){this.feedback({analysingMessage:"DBGM-00205 Loading tables"});const e=await this.analyserQuery("tables",["tables"]);this.feedback({analysingMessage:"DBGM-00206 Loading columns"});const t=(await this.analyserQuery("columns",["tables"])).rows.map(u),n=(await this.analyserQuery("baseColumns",["tables"])).rows.map(u);this.feedback({analysingMessage:"DBGM-00207 Loading primary keys"});const a=await this.analyserQuery("primaryKeys",["tables"]);this.feedback({analysingMessage:"DBGM-00208 Loading foreign keys"});const o=await this.analyserQuery("foreignKeys",["tables"]);this.feedback({analysingMessage:"DBGM-00209 Loading indexes"});const r=await this.analyserQuery("indexes",["tables"]);this.feedback({analysingMessage:"DBGM-00210 Loading index columns"});const c=await this.analyserQuery("indexcols",["tables"]);this.feedback({analysingMessage:"DBGM-00211 Loading table sizes"});const l=await this.analyserQuery("tableSizes"),m=s.mapValues(s.keyBy(l.rows,"objectId"),"tableRowCount");this.feedback({analysingMessage:"DBGM-00212 Loading SQL code"});const N=await this.analyserQuery("loadSqlCode",["views","procedures","functions","triggers"]),E=e=>N.rows.filter((t=>t.pureName==e.pureName&&t.schemaName==e.schemaName)).map((e=>e.codeText)).join("");this.feedback({analysingMessage:"DBGM-00213 Loading views"});const y=await this.analyserQuery("views",["views"]);this.feedback({analysingMessage:"DBGM-00214 Loading procedures & functions"});const _=await this.analyserQuery("programmables",["procedures","functions"]),h=await this.analyserQuery("proceduresParameters"),b=await this.analyserQuery("functionParameters");this.feedback({analysingMessage:"DBGM-00215 Loading triggers"});const C=await this.analyserQuery("triggers");this.feedback({analysingMessage:"DBGM-00216 Loading view columns"});const T=await this.analyserQuery("viewColumns",["views"]);this.feedback({analysingMessage:"DBGM-00217 Finalizing DB structure"});const S=e.rows.map((e=>({...e,contentHash:p("tables",e,n),columns:t.filter((t=>t.objectId==e.objectId)),primaryKey:i.extractPrimaryKeys(e,a.rows),foreignKeys:i.extractForeignKeys(e,o.rows),indexes:r.rows.filter((t=>t.object_id==e.objectId&&!t.is_unique_constraint)).map((e=>({...s.pick(e,["constraintName","indexType","isUnique","filterDefinition"]),columns:c.rows.filter((t=>t.object_id==e.object_id&&t.index_id==e.index_id)).map((e=>({...s.pick(e,["columnName","isDescending","isIncludedColumn"])})))}))),uniques:r.rows.filter((t=>t.object_id==e.objectId&&t.is_unique_constraint)).map((e=>({...s.pick(e,["constraintName"]),columns:c.rows.filter((t=>t.object_id==e.object_id&&t.index_id==e.index_id)).map((e=>({...s.pick(e,["columnName"])})))}))),tableRowCount:m[e.objectId]}))),O=y.rows.map((e=>({...e,contentHash:p("views",e,n),createSql:E(e),columns:T.rows.filter((t=>t.objectId==e.objectId)).map(u)}))),I=h.rows.map((e=>({...e,dataType:d(e)}))).reduce(((e,t)=>(e[t.parentObjectId]||(e[t.parentObjectId]=[]),e[t.parentObjectId].push(t),e)),{}),A=_.rows.filter((e=>"P"==e.sqlObjectType.trim())).map((e=>({...e,contentHash:p("procedures",e),createSql:E(e),parameters:I[e.objectId]}))),f=b.rows.map((e=>({...e,dataType:d(e)}))).reduce(((e,t)=>(e[t.parentObjectId]||(e[t.parentObjectId]=[]),e[t.parentObjectId].push(t),e)),{}),g=_.rows.filter((e=>["FN","IF","TF"].includes(e.sqlObjectType.trim()))).map((e=>({...e,contentHash:p("functions",e),createSql:E(e),parameters:f[e.objectId]}))),R=C.rows.map((e=>({objectId:`triggers:${e.objectId}`,contentHash:p("triggers",e),createSql:e.definition,triggerTiming:e.triggerTiming,eventType:e.eventType,schemaName:e.schemaName,tableName:e.tableName,pureName:e.triggerName})));return this.feedback({analysingMessage:null}),{tables:S,views:O,procedures:A,functions:g,triggers:R}}async _getFastSnapshot(){const e=await this.analyserQuery("modifications"),t=(await this.analyserQuery("baseColumns",["tables"])).rows,n=await this.analyserQuery("tableSizes"),s=i.createEmptyStructure();for(const n of e.rows){const{type:e,objectId:a,schemaName:o,pureName:i}=n,r=l(e);r&&s[r]&&s[r].push({objectId:a,contentHash:p(r,n,t),schemaName:o,pureName:i})}for(const e of n.rows){const t=(s.tables||[]).find((t=>t.objectId==e.objectId));t&&(t.tableRowCount=e.tableRowCount)}return s}}},911:e=>{const{createBulkInsertStreamBase:t}=global.DBGATE_PACKAGES["dbgate-tools"];e.exports=function(e,n,s,a,o){const i=t(e,n,s,a,o),r=a.schemaName?`[${a.schemaName}].[${a.pureName}]`:a.pureName;return i.send=async()=>{const e=i.buffer;i.buffer=[],await function(e,t,n,s){return new Promise(((n,a)=>{e.client.tableMgr().bind(t,(e=>{e.insertRows(s,(e=>{e&&a(e),n()}))}))}))}(s,r,0,e)},i}},221:(e,t,n)=>{const{createBulkInsertStreamBase:s,getLogger:a,extractErrorLogData:o}=global.DBGATE_PACKAGES["dbgate-tools"],i=n(569),r=n(938),c=n(825),l=a("tediousBulkInsertStream");e.exports=function(e,t,n,a,m){const d=s(e,t,n,a,m),u=a.schemaName?`[${a.schemaName}].[${a.pureName}]`:`[${a.pureName}]`;return d.send=async()=>{if(!d.templateColumns){const t=a.schemaName?`${e.dialect.quoteIdentifier(a.schemaName)}.${e.dialect.quoteIdentifier(a.pureName)}`:e.dialect.quoteIdentifier(a.pureName),s=await e.query(n,`SELECT * FROM ${t} WHERE 1=0`,{addDriverNativeColumn:!0});d.templateColumns=s.columns}const t=d.buffer;d.buffer=[];try{await function(e,t,n,s){return new Promise(((a,o)=>{const l=e.client.newBulkLoad(t,{keepNulls:!0},((e,t)=>{e?o(e):a()})),m=new Set;for(const e of n.columnNames){const t=n.templateColumns.find((t=>t.columnName==e)),s=t?r(t.driverNativeColumn.type,t.driverNativeColumn.dataLength):i.TYPES.NVarChar;s.type.toLowerCase().includes("char")&&m.add(e),l.addColumn(e,s,{nullable:!t||!t.notNull,length:t?t.driverNativeColumn.dataLength:void 0,precision:t?t.driverNativeColumn.precision:void 0,scale:t?t.driverNativeColumn.scale:void 0})}const d=s.map((e=>c.mapValues(e,((e,t)=>m.has(t)?e?e.toString():null:e))));e.client.execBulkLoad(l,d)}))}(n,u,d,t)}catch(e){l.error(o(e),"DBGM-00199 Error during bulk insert, insert stopped"),d.destroy(e)}},d}},831:(e,t,n)=>{const s=n(825),a=n(203),o=n(534),i=n(948),r=n(221),c=n(911),l=new(n(812)),{tediousConnect:m,tediousQueryCore:d,tediousReadQuery:u,tediousStream:p}=n(830),{nativeConnect:N,nativeQueryCore:E,nativeReadQuery:y,nativeStream:_}=n(304),{getLogger:h}=global.DBGATE_PACKAGES["dbgate-tools"],b=n(926),C=h("mssqlDriver");let T,S;const O=[{title:"Windows",name:"sspi",disabledFields:["password","port","user"]},{title:"SQL Server",name:"sql",disabledFields:["port"]},{title:"NodeJs portable driver (tedious) - recomended",name:"tedious"}],I={...o,analyserClass:i,getAuthTypes(){const e=[];return T?.isWindows&&e.push(...O),S.isAuthProxySupported()&&e.push({title:"NodeJs portable driver (tedious) - recomended",name:"tedious"},{title:"Microsoft Entra ID (with MFA support)",name:"msentra",disabledFields:["user","password"]}),T.isElectron||e.push({title:"Azure Managed Identity",name:"azureManagedIdentity",disabledFields:["user","password"]}),e.length>0?s.uniqBy(e,"name"):null},async connect(e){const{authType:t}=e,n=!T?.isWindows||"sspi"!=t&&"sql"!=t?"tedious":"msnodesqlv8";return{client:"msnodesqlv8"==n?await N(e):await m(e),connectionType:n,database:e.database,conid:e.conid}},close:async e=>e.client.close(),queryCore:async(e,t,n)=>"msnodesqlv8"==e.connectionType?E(e,t,n):d(e,t,n),async query(e,t,n){return l.acquire("connection",(async()=>this.queryCore(e,t,n)))},stream:async(e,t,n)=>"msnodesqlv8"==e.connectionType?_(e,t,n):p(e,t,n),readQuery:async(e,t,n)=>"msnodesqlv8"==e.connectionType?y(e,t,n):u(e,t,n),async writeTable(e,t,n){return"msnodesqlv8"==e.connectionType?c(this,a,e,t,n):r(this,a,e,t,n)},async getVersion(e){const t=(await this.query(e,"\nSELECT \n @@VERSION AS version, \n SERVERPROPERTY ('productversion') as productVersion,\n CASE \n WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '8%' THEN 'SQL Server 2000'\n WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '9%' THEN 'SQL Server 2005'\n WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '10.0%' THEN 'SQL Server 2008'\n WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '10.5%' THEN 'SQL Server 2008 R2'\n WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '11%' THEN 'SQL Server 2012'\n WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '12%' THEN 'SQL Server 2014'\n WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '13%' THEN 'SQL Server 2016' \n WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '14%' THEN 'SQL Server 2017' \n WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '15%' THEN 'SQL Server 2019' \n ELSE 'Unknown'\n END AS versionText\n")).rows[0];if(t.productVersion){const e=t.productVersion.split("."),n=parseInt(e[0])||0;t.productVersionNumber=n}else t.productVersionNumber=0;return t},async listDatabases(e){const{rows:t}=await this.query(e,"SELECT name FROM sys.databases order by name");return t},async listDatabasesFull(e){const{rows:t}=await this.query(e,b.listDatabases);return t},async listProcesses(e){const{rows:t}=await this.query(e,b.listProcesses);return t},async listVariables(e){const{rows:t}=await this.query(e,b.listVariables);return t},async killProcess(e,t){await this.query(e,`KILL ${t}`)},async serverSummary(e){const[t,n,s]=await Promise.all([this.listVariables(e),this.listProcesses(e),this.listDatabasesFull(e)]);return{variables:t,processes:n,databases:{rows:s,columns:[{filterable:!0,sortable:!0,header:"Database",fieldName:"name",type:"data"},{filterable:!0,sortable:!0,header:"Status",fieldName:"status",type:"data"},{filterable:!0,sortable:!0,header:"Recovery Model",fieldName:"recoveryModel",type:"data"},{filterable:!0,sortable:!0,header:"Compatibility Level",fieldName:"compatibilityLevel",type:"data"},{filterable:!0,sortable:!0,header:"Read Only",fieldName:"isReadOnly",type:"data"},{sortable:!0,header:"Data Size",fieldName:"sizeOnDisk",type:"fileSize"},{sortable:!0,header:"Log Size",fieldName:"logSizeOnDisk",type:"fileSize"}]}}},getRedirectAuthUrl:(e,t)=>"msentra"!=e.authType?null:S.authProxyGetRedirectUrl({...t,type:"msentra"}),getAuthTokenFromCode:(e,t)=>S.authProxyGetTokenFromCode(t),getAccessTokenFromAuth:(e,t)=>t?.user?.msentraToken,async listSchemas(e){const{rows:t}=await this.query(e,"select schema_id as objectId, name as schemaName from sys.schemas"),n=await this.query(e,"SELECT SCHEMA_NAME() as name"),s=n.rows[0]?.name;return C.debug(`DBGM-00140 Loaded ${t.length} mssql schemas`),t.map((e=>({...e,isDefault:e.schemaName==s})))}};I.initialize=e=>{T=e.platformInfo,S=e.authProxy},e.exports=I},938:(e,t,n)=>{const s=n(569),{TYPES:a}=s;e.exports=function(e,t){switch(e.id){case 104:return a.Bit;case 108:return a.Numeric;case 106:return a.Decimal;case 38:return 8===t?a.BigInt:4===t?a.Int:2===t?a.SmallInt:a.TinyInt;case 109:return 8===t?a.Float:a.Real;case 110:return 8===t?a.Money:a.SmallMoney;case 111:return 8===t?a.DateTime:a.SmallDateTime}return e}},237:(e,t,n)=>{const s=n(831);e.exports={packageName:"dbgate-plugin-mssql",drivers:[s],initialize(e){s.initialize(e)}}},672:e=>{e.exports=function(e){const t=new Set;for(let n=0;n<e.length;n++){if(t.has(e[n].columnName)){let s=2;for(;t.has(`${e[n].columnName}${s}`);)s++;e[n].columnName=`${e[n].columnName}${s}`}t.add(e[n].columnName)}}},304:(e,t,n)=>{n(825);const s=n(203),a=n(672),{extractDbNameFromComposite:o}=global.DBGATE_PACKAGES["dbgate-tools"];let i;function r(e){const t=e.map((e=>{const t={columnName:e.name,dataType:e.sqlType.toLowerCase(),notNull:!e.nullable};return t.dataType.endsWith(" identity")&&(t.dataType=t.dataType.replace(" identity",""),t.autoIncrement=!0),e.size&&t.dataType.includes("char")&&(t.dataType+=`(${e.size})`),t}));return a(t),t}async function c({server:e,port:t,user:s,password:a,database:r,authType:c},l){let m=`server=${e}`;return t&&!e.includes("\\")&&(m+=`,${t}`),m+=`;Driver={${l}}`,m+="sspi"==c?";Trusted_Connection=Yes":`;UID=${s};PWD=${a}`,r&&(m+=`;Database=${o(r)}`),new Promise(((e,t)=>{(i||(i=n(934)),i).open(m,((n,s)=>{n?t(n):e(s)}))}))}e.exports={nativeConnect:async function(e){const t=["ODBC Driver 17 for SQL Server","SQL Server Native Client 11.0"];for(let n=0;n<t.length;n+=1)try{const s=await c(e,t[n]);return console.error(`Connected SQL Server with ${t[n]} driver`),s}catch(e){if(e.message&&e.message.includes("[ODBC Driver Manager]")&&n<t.length-1){console.error(`Failed connecting with ${t[n]} driver, trying next`,e);continue}throw new Error(`${e}`)}},nativeQueryCore:async function(e,t,n){return null==t?Promise.resolve({rows:[],columns:[]}):new Promise(((n,s)=>{let a=null,o=null;const i=e.client.query(t),c=[];i.on("meta",(e=>{a=r(e)})),i.on("column",((e,t)=>{o[a[e].columnName]=t})),i.on("row",(e=>{o&&c.push(o),o={}})),i.on("error",(e=>{s(e)})),i.on("done",(()=>{o&&c.push(o),n({columns:a,rows:c})}))}))},nativeReadQuery:async function(e,t,n){const a=new s.PassThrough({objectMode:!0,highWaterMark:100});let o=null,i=null;const c=e.client.query(t);return c.on("meta",(e=>{o=r(e),a.write({__isStreamHeader:!0,...n||{columns:o}})})),c.on("column",((e,t)=>{i[o[e].columnName]=t})),c.on("row",(e=>{i&&a.write(i),i={}})),c.on("error",(e=>{console.error(e),a.end()})),c.on("done",(()=>{i&&a.write(i),a.end()})),a},nativeStream:async function(e,t,n){let s=null,a=null;const o=e.client.query(t);o.on("meta",(e=>{a&&n.row(a),a=null,s=r(e),n.recordset(s)})),o.on("column",((e,t)=>{a[s[e].columnName]=t})),o.on("row",(e=>{a&&n.row(a),a={}})),o.on("error",(e=>{(e=>{const{message:t,lineNumber:s,procName:a}=e;n.info({message:t,line:s,procedure:a,time:new Date,severity:"error"})})(e),n.done()})),o.on("info",(e=>{(e=>{const{message:t,lineNumber:s,procName:a}=e;n.info({message:t,line:s,procedure:a,time:new Date,severity:"info"})})(e)})),o.on("done",(()=>{a&&n.row(a),n.done()}))}}},98:e=>{e.exports="\nselect c.object_id as objectId,\n\tep.value as columnComment,\n c.column_id as columnId\nfrom sys.columns c\ninner join sys.objects o on c.object_id = o.object_id\nINNER JOIN sys.schemas u ON u.schema_id=o.schema_id \nINNER JOIN sys.extended_properties ep on ep.major_id = c.object_id and ep.minor_id = c.column_id and ep.name = 'MS_Description'\nwhere o.type IN ('U', 'V') and o.object_id =OBJECT_ID_CONDITION and u.name =SCHEMA_NAME_CONDITION\norder by c.column_id\n"},925:e=>{e.exports="\nselect c.name as columnName, t.name as dataType, c.object_id as objectId, c.is_identity as isIdentity,\n c.max_length as maxLength, c.precision, c.scale, c.is_nullable as isNullable,\n col.CHARACTER_MAXIMUM_LENGTH as charMaxLength,\n d.definition as defaultValue, d.name as defaultConstraint,\n m.definition as computedExpression, m.is_persisted as isPersisted, c.column_id as columnId, \n col.NUMERIC_PRECISION as numericPrecision,\n col.NUMERIC_SCALE as numericScale,\n c.is_sparse as isSparse,\n ep.value as columnComment\nfrom sys.columns c\ninner join sys.types t on c.system_type_id = t.system_type_id and c.user_type_id = t.user_type_id\ninner join sys.objects o on c.object_id = o.object_id\nINNER JOIN sys.schemas u ON u.schema_id=o.schema_id \nINNER JOIN INFORMATION_SCHEMA.COLUMNS col ON col.TABLE_NAME = o.name AND col.TABLE_SCHEMA = u.name and col.COLUMN_NAME = c.name\nleft join sys.default_constraints d on c.default_object_id = d.object_id\nleft join sys.computed_columns m on m.object_id = c.object_id and m.column_id = c.column_id\nleft join sys.extended_properties ep on ep.major_id = c.object_id \n and ep.minor_id = c.column_id \n and ep.name = 'MS_Description'\n and ep.class = 1 -- Add this filter for object/column level properties\nwhere o.type = 'U' and o.object_id =OBJECT_ID_CONDITION and u.name =SCHEMA_NAME_CONDITION\norder by c.column_id\n"},958:e=>{e.exports="\nSELECT\n schemaName = FK.TABLE_SCHEMA,\n pureName = FK.TABLE_NAME,\n columnName = CU.COLUMN_NAME,\n\n refSchemaName = ISNULL(IXS.name, PK.TABLE_SCHEMA),\n refTableName = ISNULL(IXT.name, PK.TABLE_NAME),\n refColumnName = IXCC.name,\n\n constraintName = C.CONSTRAINT_NAME,\n updateAction = rc.UPDATE_RULE,\n deleteAction = rc.DELETE_RULE,\n\n objectId = o.object_id \nFROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS C\nINNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS FK \n ON C.CONSTRAINT_NAME = FK.CONSTRAINT_NAME\n AND C.CONSTRAINT_SCHEMA = FK.CONSTRAINT_SCHEMA\n\nLEFT JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS PK \n ON C.UNIQUE_CONSTRAINT_NAME = PK.CONSTRAINT_NAME\n AND C.UNIQUE_CONSTRAINT_SCHEMA = PK.CONSTRAINT_SCHEMA\n\nLEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU \n ON C.CONSTRAINT_NAME = CU.CONSTRAINT_NAME\n AND C.CONSTRAINT_SCHEMA = CU.CONSTRAINT_SCHEMA\n\nINNER JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc \n ON FK.CONSTRAINT_NAME = rc.CONSTRAINT_NAME\n AND FK.CONSTRAINT_SCHEMA = rc.CONSTRAINT_SCHEMA\n\nLEFT JOIN sys.indexes IX \n ON IX.name = C.UNIQUE_CONSTRAINT_NAME\n AND IX.object_id = OBJECT_ID(PK.TABLE_SCHEMA + '.' + PK.TABLE_NAME)\n\nLEFT JOIN sys.objects IXT \n ON IXT.object_id = IX.object_id\n\nLEFT JOIN sys.index_columns IXC \n ON IX.object_id = IXC.object_id \n AND IX.index_id = IXC.index_id\n\nLEFT JOIN sys.columns IXCC \n ON IXCC.object_id = IXC.object_id\n AND IXCC.column_id = IXC.column_id\n\nLEFT JOIN sys.schemas IXS \n ON IXT.schema_id = IXS.schema_id\n\nINNER JOIN sys.objects o \n ON o.name = FK.TABLE_NAME\n AND SCHEMA_NAME(o.schema_id) = FK.TABLE_SCHEMA\n\nINNER JOIN sys.schemas s \n ON o.schema_id = s.schema_id\n AND s.name = FK.TABLE_SCHEMA\n\nwhere o.object_id =OBJECT_ID_CONDITION and s.name =SCHEMA_NAME_CONDITION\n"},460:e=>{e.exports="\nSELECT \n o.object_id as parentObjectId,\n p.object_id AS parameterObjectId,\n o.name as pureName,\n CASE \n WHEN p.name IS NULL OR LTRIM(RTRIM(p.name)) = '' THEN \n '@Output'\n ELSE \n p.name\n END AS parameterName,\n TYPE_NAME(p.user_type_id) AS dataType,\n CASE \n WHEN TYPE_NAME(p.user_type_id) = 'nvarchar' THEN p.max_length / 2\n ELSE p.max_length\n END AS charMaxLength,\n CASE \n WHEN p.is_output = 1 THEN 'OUT'\n ELSE 'IN'\n END AS parameterMode,\n CASE\n WHEN TYPE_NAME(p.user_type_id) IN ('numeric', 'decimal') THEN p.precision\n ELSE NULL\n END AS numericPrecision,\n CASE\n WHEN TYPE_NAME(p.user_type_id) IN ('numeric', 'decimal') THEN p.scale\n ELSE NULL\n END AS numericScale,\n CASE \n WHEN p.is_output = 1 THEN 'OUT'\n ELSE 'IN'\n END AS parameterMode,\n p.parameter_id AS parameterIndex,\n s.name as schemaName\nFROM \n sys.objects o\nJOIN \n sys.parameters p ON o.object_id = p.object_id\nINNER JOIN\n sys.schemas s ON s.schema_id=o.schema_id \nWHERE \n o.type IN ('FN', 'IF', 'TF')\n and o.object_id =OBJECT_ID_CONDITION and s.name =SCHEMA_NAME_CONDITION\nORDER BY \n p.object_id, \n p.parameter_id;\n"},926:(e,t,n)=>{const s=n(925),a=n(958),o=n(916),i=n(97),r=n(914),c=n(919),l=n(399),m=n(864),d=n(990),u=n(754),p=n(460),N=n(602),E=n(474),y=n(689),_=n(377),h=n(447),b=n(264),C=n(823),T=n(98);e.exports={columns:s,tables:i,foreignKeys:a,primaryKeys:o,modifications:c,loadSqlCode:l,views:m,programmables:d,proceduresParameters:u,functionParameters:p,viewColumns:N,indexes:E,indexcols:y,tableSizes:r,triggers:_,listVariables:h,listDatabases:b,listProcesses:C,baseColumns:T}},689:e=>{e.exports="\nselect \n c.object_id, c.index_id, c.column_id, \n col.name as columnName,\n c.is_descending_key as isDescending, c.is_included_column as isIncludedColumn\nfrom sys.index_columns c\ninner join sys.columns col on c.object_id = col.object_id and c.column_id = col.column_id\ninner join sys.objects o on c.object_id = o.object_id\nINNER JOIN sys.schemas u ON u.schema_id=o.schema_id \nwhere c.object_id =OBJECT_ID_CONDITION and u.name =SCHEMA_NAME_CONDITION\norder by c.key_ordinal\n"},474:e=>{e.exports="\nselect i.object_id, i.name as constraintName, i.type_desc as indexType, i.is_unique as isUnique,i.index_id, i.is_unique_constraint, i.filter_definition AS filterDefinition\nfrom sys.indexes i\ninner join sys.objects o on i.object_id = o.object_id\nINNER JOIN sys.schemas u ON u.schema_id=o.schema_id \nwhere i.is_primary_key=0\nand i.is_hypothetical=0 and indexproperty(i.object_id, i.name, 'IsStatistics') = 0\nand objectproperty(i.object_id, 'IsUserTable') = 1\nand i.index_id between 1 and 254\n\n--and i.name not in\n-- (select o.name from sysobjects o\n-- where o.parent_obj = i.object_id\n-- and objectproperty(o.id, N'isConstraint') = 1.0)\n\n and i.object_id =OBJECT_ID_CONDITION and u.name =SCHEMA_NAME_CONDITION\n"},264:e=>{e.exports="\n SELECT\n d.name,\n d.database_id,\n d.state_desc as status,\n d.recovery_model_desc as recoveryModel,\n d.collation_name as collation,\n d.compatibility_level as compatibilityLevel,\n d.is_read_only as isReadOnly,\n CAST(SUM(CASE WHEN mf.type = 0 THEN mf.size * 8192.0 ELSE 0 END) AS BIGINT) AS sizeOnDisk,\n CAST(SUM(CASE WHEN mf.type = 1 THEN mf.size * 8192.0 ELSE 0 END) AS BIGINT) AS logSizeOnDisk\n FROM sys.databases d\n LEFT JOIN sys.master_files mf ON d.database_id = mf.database_id\n GROUP BY d.name, d.database_id, d.state_desc, d.recovery_model_desc, d.collation_name,\n d.compatibility_level, d.is_read_only\n ORDER BY d.name\n"},823:e=>{e.exports="\nSELECT \n session_id as processId,\n ISNULL(host_name, 'Unknown') + ':' + ISNULL(CAST(host_process_id AS VARCHAR(10)), '?') as client,\n ISNULL(DB_NAME(database_id), 'master') as namespace,\n ISNULL(DATEDIFF(SECOND, last_request_start_time, GETDATE()), 0) as runningTime,\n status as state\nFROM sys.dm_exec_sessions \nWHERE is_user_process = 1\nORDER BY session_id\n"},447:e=>{e.exports="\n SELECT name as variable, value FROM sys.configurations ORDER BY name\n"},399:e=>{e.exports="\nselect s.name as pureName, u.name as schemaName, c.text AS codeText\n from sys.objects s\n inner join sys.syscomments c on s.object_id = c.id\n inner join sys.schemas u on u.schema_id = s.schema_id\nwhere (s.object_id =OBJECT_ID_CONDITION) and u.name =SCHEMA_NAME_CONDITION\norder by u.name, s.name, c.colid\n"},919:e=>{e.exports="\nselect o.object_id as objectId, o.modify_date as modifyDate, o.type, o.name as pureName, s.name as schemaName\nfrom sys.objects o \ninner join sys.schemas s on o.schema_id = s.schema_id\nwhere o.type in ('U', 'V', 'P', 'IF', 'FN', 'TF', 'TR')\n and s.name =SCHEMA_NAME_CONDITION\n"},916:e=>{e.exports="\nSELECT \n i.object_id AS objectId,\n o.name AS pureName,\n s.name AS schemaName,\n c.name AS columnName,\n i.name AS constraintName\nFROM \n sys.indexes i\nINNER JOIN \n sys.index_columns ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id\nINNER JOIN \n sys.columns c ON ic.object_id = c.object_id AND ic.column_id = c.column_id\nINNER JOIN\n sys.objects o ON i.object_id = o.object_id\nINNER JOIN\n sys.schemas s ON o.schema_id = s.schema_id\nWHERE \n i.is_primary_key = 1\n\tand o.object_id =OBJECT_ID_CONDITION\n and s.name =SCHEMA_NAME_CONDITION\nORDER BY \n ic.key_ordinal\n"},754:e=>{e.exports="\nSELECT \n o.object_id as parentObjectId,\n p.object_id as objectId,\n o.name as pureName,\n p.name AS parameterName,\n TYPE_NAME(p.user_type_id) AS dataType,\n CASE \n WHEN TYPE_NAME(p.user_type_id) = 'nvarchar' THEN p.max_length / 2\n ELSE p.max_length\n END AS charMaxLength,\n CASE \n WHEN p.is_output = 1 THEN 'OUT'\n ELSE 'IN'\n END AS parameterMode,\n CASE\n WHEN TYPE_NAME(p.user_type_id) IN ('numeric', 'decimal') THEN p.precision\n ELSE NULL\n END AS numericPrecision,\n CASE\n WHEN TYPE_NAME(p.user_type_id) IN ('numeric', 'decimal') THEN p.scale\n ELSE NULL\n END AS numericScale,\n p.parameter_id AS parameterIndex,\n s.name as schemaName\nFROM \n sys.objects o\nJOIN \n sys.parameters p ON o.object_id = p.object_id\nINNER JOIN\n sys.schemas s ON s.schema_id=o.schema_id \nWHERE \n o.type = 'P'\n and o.object_id =OBJECT_ID_CONDITION and s.name =SCHEMA_NAME_CONDITION\nORDER BY \n o.object_id,\n p.parameter_id;\n"},990:e=>{e.exports="\nselect o.name as pureName, s.name as schemaName, o.object_id as objectId, o.create_date as createDate, o.modify_date as modifyDate, o.type as sqlObjectType\nfrom sys.objects o \ninner join sys.schemas s on o.schema_id = s.schema_id\nwhere o.type in ('P', 'IF', 'FN', 'TF') and o.object_id =OBJECT_ID_CONDITION and s.name =SCHEMA_NAME_CONDITION\n"},914:e=>{e.exports="\nSELECT distinct\n t.object_id as objectId,\n p.rows AS tableRowCount\nFROM \n sys.tables t\nINNER JOIN \n sys.indexes i ON t.OBJECT_ID = i.object_id\nINNER JOIN \n sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id\nINNER JOIN\n sys.schemas s ON t.schema_id = s.schema_id\nWHERE \n t.NAME NOT LIKE 'dt%' \n AND t.is_ms_shipped = 0\n AND i.OBJECT_ID > 255 \n AND s.name =SCHEMA_NAME_CONDITION\n"},97:e=>{e.exports="\nselect\n\to.name as pureName, \n\ts.name as schemaName, \n\to.object_id as objectId,\n\to.create_date as createDate, \n\to.modify_date as modifyDate,\n\tep.value as objectComment\nfrom sys.tables o\ninner join sys.schemas s on o.schema_id = s.schema_id\nleft join sys.extended_properties ep on ep.major_id = o.object_id \n\tand ep.minor_id = 0 \n\tand ep.name = 'MS_Description'\n and ep.class = 1 -- Add this filter for object/column level properties\nwhere o.object_id =OBJECT_ID_CONDITION and s.name =SCHEMA_NAME_CONDITION"},377:e=>{e.exports="\nSELECT \n o.modify_date as modifyDate,\n o.object_id as objectId,\n o.name AS triggerName,\n s.name AS schemaName,\n OBJECT_NAME(o.parent_object_id) AS tableName,\n CASE \n WHEN OBJECTPROPERTY(o.object_id, 'ExecIsAfterTrigger') = 1 THEN 'AFTER'\n WHEN OBJECTPROPERTY(o.object_id, 'ExecIsInsteadOfTrigger') = 1 THEN 'INSTEAD OF'\n ELSE 'BEFORE'\n END AS triggerTiming,\n CASE \n WHEN OBJECTPROPERTY(o.object_id, 'ExecIsInsertTrigger') = 1 THEN 'INSERT'\n WHEN OBJECTPROPERTY(o.object_id, 'ExecIsUpdateTrigger') = 1 THEN 'UPDATE'\n WHEN OBJECTPROPERTY(o.object_id, 'ExecIsDeleteTrigger') = 1 THEN 'DELETE'\n END AS eventType,\n OBJECT_DEFINITION(o.object_id) AS definition\nFROM sys.objects o\nINNER JOIN sys.tables t \n ON o.parent_object_id = t.object_id \nINNER JOIN sys.schemas s\n ON t.schema_id = s.schema_id\nWHERE o.type = 'TR'\n AND o.is_ms_shipped = 0 \n AND o.object_id =OBJECT_ID_CONDITION\n AND s.name =SCHEMA_NAME_CONDITION\n"},602:e=>{e.exports="\nselect \n o.object_id AS objectId,\n col.TABLE_SCHEMA as schemaName, \n col.TABLE_NAME as pureName, \n\tcol.COLUMN_NAME as columnName,\n\tcol.IS_NULLABLE as isNullable,\n\tcol.DATA_TYPE as dataType,\n\tcol.CHARACTER_MAXIMUM_LENGTH as charMaxLength,\n\tcol.NUMERIC_PRECISION as precision,\n\tcol.NUMERIC_SCALE as scale,\n\tcol.COLUMN_DEFAULT\nFROM sys.objects o \nINNER JOIN sys.schemas u ON u.schema_id=o.schema_id \nINNER JOIN INFORMATION_SCHEMA.COLUMNS col ON col.TABLE_NAME = o.name AND col.TABLE_SCHEMA = u.name\nWHERE o.type in ('V') and o.object_id =OBJECT_ID_CONDITION and u.name =SCHEMA_NAME_CONDITION\norder by col.ORDINAL_POSITION\n"},864:e=>{e.exports="\nSELECT \n\to.name as pureName,\n\tu.name as schemaName,\n\to.object_id as objectId,\n\to.create_date as createDate,\n\to.modify_date as modifyDate\nFROM sys.objects o INNER JOIN sys.schemas u ON u.schema_id=o.schema_id \nWHERE type in ('V') and o.object_id =OBJECT_ID_CONDITION and u.name =SCHEMA_NAME_CONDITION\n"},830:(e,t,n)=>{const s=n(825),a=n(203),o=n(569),{ManagedIdentityCredential:i}=n(50),r=n(672),{extractDbNameFromComposite:c}=global.DBGATE_PACKAGES["dbgate-tools"];function l(e,t=!1){const n=e.map((e=>{const n={columnName:e.colName,dataType:e.type.name.toLowerCase(),driverNativeColumn:t?e:void 0,notNull:!(1&e.flags),autoIncrement:!!(16&e.flags)};return e.dataLength&&(n.dataType+=`(${e.dataLength})`),n}));return r(n),n}e.exports={tediousConnect:async function(e){const{server:t,port:n,database:a,ssl:r,trustServerCertificate:l,authType:m}=e,d=await async function({authType:e,accessToken:t,user:n,password:s,windowsDomain:a}){switch(e){case"azureManagedIdentity":return{type:"azure-active-directory-access-token",options:{token:await async function(){const e=new i;return(await e.getToken("https://database.windows.net/.default")).token}()}};case"msentra":return{type:"azure-active-directory-access-token",options:{token:t}};default:return{type:a?"ntlm":"default",options:{userName:n,password:s,...a?{domain:a}:{}}}}}(e);return new Promise(((e,i)=>{const[u,p]=(t||"").split("\\"),N={instanceName:p,encrypt:!!r||"msentra"==m||"azureManagedIdentity"==m,cryptoCredentialsDetails:r?s.pick(r,["ca","cert","key"]):void 0,trustServerCertificate:r?!(r.ca||r.cert||r.key)||r.rejectUnauthorized:void 0,enableArithAbort:!0,validateBulkLoadParameters:!1,requestTimeout:36e5,port:n&&!p?parseInt(n):void 0,trustServerCertificate:!!l,appName:"DbGate"};a&&(N.database=c(a));const E=new o.Connection({server:u,authentication:d,options:N});E.on("connect",(function(t){t&&i(t),e(E)})),E.connect()}))},tediousQueryCore:async function(e,t,n){if(null==t)return Promise.resolve({rows:[],columns:[]});const{addDriverNativeColumn:a,discardResult:i}=n||{};return new Promise(((n,i)=>{const r={rows:[],columns:[]},c=new o.Request(t,((e,t)=>{e?i(e):n(r)}));c.on("columnMetadata",(function(e){r.columns=l(e,a)})),c.on("row",(function(e){r.rows.push(s.zipObject(r.columns.map((e=>e.columnName)),e.map((e=>e.value))))})),e.client.execSqlBatch(c)}))},tediousReadQuery:async function(e,t,n){const i=new a.PassThrough({objectMode:!0,highWaterMark:100});let r=[];const c=new o.Request(t,((e,t)=>{e&&console.error(e),i.end()}));return c.on("columnMetadata",(function(e){r=l(e),i.write({__isStreamHeader:!0,...n||{columns:r}})})),c.on("row",(function(e){const t=s.zipObject(r.map((e=>e.columnName)),e.map((e=>e.value)));i.write(t)})),e.client.execSql(c),i},tediousStream:async function(e,t,n){let a=[],i=!1;const r=e=>{const{message:t,lineNumber:s,procName:a}=e;n.info({message:t,line:null!=s&&s>0?s-1:s,procedure:a,time:new Date,severity:"info"})},c=e=>{const{message:t,lineNumber:s,procName:a}=e;n.info({message:t,line:null!=s&&s>0?s-1:s,procedure:a,time:new Date,severity:"error"})};e.client.on("databaseChange",(e=>{n.changedCurrentDatabase(e)})),e.client.on("infoMessage",r),e.client.on("errorMessage",c);const m=new o.Request(t,((t,s)=>{n.done(),e.client.off("infoMessage",r),e.client.off("errorMessage",c),i||n.info({message:`${s} rows affected`,time:new Date,severity:"info",rowsAffected:s})}));m.on("columnMetadata",(function(e){a=l(e),n.recordset(a)})),m.on("row",(function(e){const t=s.zipObject(a.map((e=>e.columnName)),e.map((e=>e.value)));n.row(t),i=!0})),e.client.execSqlBatch(m)}}},391:e=>{const{SqlDumper:t,testEqualColumns:n,arrayToHexString:s}=global.DBGATE_PACKAGES["dbgate-tools"];class a extends t{constructor(e,t){super(e),t&&t.useHardSeparator&&(this.useHardSeparator=!0)}endCommand(){this.useHardSeparator?this.putRaw("\nGO\n"):super.endCommand()}dropDatabase(e){this.putCmd("USE master;\n ALTER DATABASE %i SET SINGLE_USER WITH ROLLBACK IMMEDIATE;\n DROP DATABASE %i",e,e)}autoIncrement(){this.put(" ^identity")}putStringValue(e){/[^\u0000-\u00ff]/.test(e)&&this.putRaw("N"),super.putStringValue(e)}putByteArrayValue(e){super.putRaw("0x"+s(e))}allowIdentityInsert(e,t){this.putCmd("^set ^identity_insert %f %k",e,t?"on":"off")}transform(e,t){switch(e){case"GROUP:YEAR":case"YEAR":this.put("^datepart(^year, %c)",t);break;case"MONTH":this.put("^datepart(^month, %c)",t);break;case"DAY":this.put("^datepart(^day, %c)",t);break;case"GROUP:MONTH":this.put("^convert(^varchar(100), ^datepart(^year, %c)) + '-' + right('0' + ^convert(^varchar(100), ^datepart(^month, %c)), 2)",t,t);break;case"GROUP:DAY":this.put("^convert(^varchar(100), ^datepart(^year, %c)) + '-' + ^right('0' + ^convert(^varchar(100), ^datepart(^month, %c)), 2)+'-' + ^right('0' + ^convert(^varchar(100), ^datepart(^day, %c)), 2)",t,t,t);break;default:t()}}renameObject(e,t){this.putCmd("^execute sp_rename '%f', '%s', 'OBJECT'",e,t)}changeObjectSchema(e,t){this.putCmd("^execute sp_changeobjectowner '%f', '%s'",e,t)}dropTable(e,t={}){t.testIfExists&&this.put("IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'%f') AND type in (N'U'))&n",e),super.dropTable(e,t)}dropColumn(e){e.defaultConstraint&&this.putCmd("^alter ^table %f ^drop ^constraint %i",e,e.defaultConstraint),super.dropColumn(e)}dropDefault(e){e.defaultConstraint&&this.putCmd("^alter ^table %f ^drop ^constraint %i",e,e.defaultConstraint)}guessDefaultName(e){return e.defaultConstraint||`DF_${e.schemaName||"dbo"}_${e.pureName}_col.columnName`}createDefault(e){if(null==e.defaultValue)return;const t=e.defaultValue?.toString();if(t){const n=this.guessDefaultName(e);this.putCmd("^alter ^table %f ^add ^constraint %i ^default %s for %i",e,n,t,e.columnName)}}renameColumn(e,t){this.putCmd("^execute sp_rename '%f.%i', '%s', 'COLUMN'",e,e.columnName,t)}dropTableCommentIfExists(e){const{schemaName:t,pureName:n}=e,s=`${t&&t+"."}${n}`;this.put("&>^if ^exists (&n"),this.put("&>^select 1 ^from sys.extended_properties&n"),this.put("^where major_id = OBJECT_ID('%s')&n",s),this.put("^and minor_id = 0&n"),this.put("^and name = N'MS_Description'&<&<&n"),this.put(")&n"),this.put("&>^begin&n"),this.put("&>^exec sp_dropextendedproperty&n"),this.put("@name = N'MS_Description',&n"),this.put("@level0type = N'SCHEMA', @level0name = '%s',&n",t),this.put("@level1type = N'TABLE', @level1name = '%s'&<&n",n),this.put("^end"),this.endCommand()}createTableComment(e){const{schemaName:t,pureName:n,objectComment:s}=e;s&&(this.put("&>^exec sp_addextendedproperty&n"),this.put("@name = N'MS_Description', @value = N'%s',&n",s),this.put("@level0type = N'SCHEMA', @level0name = '%s',&n",t||"dbo"),this.put("@level1type = N'TABLE', @level1name = '%s&<'",n),this.endCommand())}changeColumnComment(e,t){e.columnComment!==t.columnComment&&(e.columnComment&&this.dropColumnCommentIfExists(t),t.columnComment&&this.createColumnComment(t))}dropColumnCommentIfExists(e){const{schemaName:t,columnName:n,pureName:s}=e,a=`${t&&t+"."}${s}`;this.put("&>^if ^exists (&n"),this.put("&>^select 1 ^from sys.extended_properties&n"),this.put("^where major_id = OBJECT_ID('%s')&n",a),this.put("^and minor_id = (^select column_id ^from sys.columns ^where object_id = OBJECT_ID('%s') ^and name = '%s')&n",a,n),this.put("^and name = N'MS_Description'&<&<&n"),this.put(")&n"),this.put("&>^begin&n"),this.put("&>^exec sp_dropextendedproperty&n"),this.put("@name = N'MS_Description',&n"),this.put("@level0type = N'SCHEMA', @level0name = '%s',&n",t),this.put("@level1type = N'TABLE', @level1name = '%s',&n",s),this.put("@level2type = N'COLUMN', @level2name = '%s'&<&n",n),this.put("^end"),this.endCommand()}createColumnComment(e){const{schemaName:t,columnName:n,pureName:s,columnComment:a}=e;a&&(this.put("&>^exec sp_addextendedproperty&n"),this.put("@name = N'MS_Description', "),this.put("@value = N'%s',&n",a),this.put("@level0type = N'SCHEMA', @level0name = '%s',&n",t),this.put("@level1type = N'TABLE', @level1name = '%s',&n",s),this.put("@level2type = N'COLUMN', @level2name = '%s&<'",n),this.endCommand())}createTable(e){super.createTable(e);for(const t of e.columns||[])this.createColumnComment(t)}changeColumn(e,t,s){n(e,t,!1,!1,{ignoreComments:!0})?(this.dropDefault(e),e.columnName!=t.columnName&&this.renameColumn(e,t.columnName),this.createDefault(t)):(this.dropDefault(e),e.columnName!=t.columnName&&this.renameColumn(e,t.columnName),e.notNull||this.fillNewNotNullDefaults(t),this.put("^alter ^table %f ^alter ^column %i ",e,e.columnName,t.columnName),this.columnDefinition(t,{includeDefault:!1}),this.endCommand(),this.createDefault(t)),this.changeColumnComment(e,t)}specialColumnOptions(e){e.isSparse&&this.put("^sparse ")}renameConstraint(e,t){"index"==e.constraintType?this.putCmd("^execute sp_rename '%f.%i', '%s', 'INDEX'",e,e.constraintName,t):this.putCmd("^execute sp_rename '%f', '%s', 'OBJECT'",{schemaName:e.schemaName,pureName:e.constraintName},t)}selectScopeIdentity(){this.put("^select ^scope_identity()")}tableOptions(e){this.endCommand();const t=this.driver?.dialect?.getTableFormOptions?.("sqlCreateTable")||[];for(const n of t){const{name:t,sqlFormatString:s}=n,a=e[t];if("objectComment"==t)return void this.createTableComment(e);a&&(this.put("&n"),this.put(s,a))}}setTableOption(e,t,n){if("objectComment"==t)return this.dropTableCommentIfExists(e),void(n&&this.createTableComment(e));super.setTableOption(e,t,n)}callableTemplate(e){const t=(e,t)=>{this.putCollection(t,e||[],(e=>{this.putRaw(e.parameterName),"OUT"==e?.parameterMode&&this.put(" ^output")}))},n=e=>{for(const t of e||[])this.put("^declare %s %s",t.parameterName,t.dataType),"IN"==t.parameterMode&&this.put(" = :%s",t.parameterName.substring(1)),this.endCommand()};if("procedures"==e.objectTypeField&&(n(e.parameters),this.put("^execute %f&>&n",e),t(e.parameters,",&n"),this.put("&<&n"),this.endCommand()),"functions"==e.objectTypeField){const s=(e.parameters||[]).filter((e=>"OUT"!=e.parameterMode));n(s),this.put("^select %f(",e),t(s,", "),this.put(")"),this.endCommand()}}}a.prototype.renameView=a.prototype.renameObject,a.prototype.changeViewSchema=a.prototype.changeObjectSchema,a.prototype.renameProcedure=a.prototype.renameObject,a.prototype.changeProcedureSchema=a.prototype.changeObjectSchema,a.prototype.renameFunction=a.prototype.renameObject,a.prototype.changeFunctionSchema=a.prototype.changeObjectSchema,a.prototype.renameTrigger=a.prototype.renameObject,a.prototype.changeTriggerSchema=a.prototype.changeObjectSchema,a.prototype.renameTable=a.prototype.renameObject,a.prototype.changeTableSchema=a.prototype.changeObjectSchema,a.prototype.renameSqlObject=a.prototype.renameObject,e.exports=a},534:(e,t,n)=>{const{driverBase:s}=global.DBGATE_PACKAGES["dbgate-tools"],a=n(391),{mssqlSplitterOptions:o}=n(994),i=["GEOGRAPHY"],r={limitSelect:!0,rangeSelect:!0,topRecords:!0,offsetFetchRangeSyntax:!0,rowNumberOverPaging:!0,defaultSchemaName:"dbo",multipleSchema:!0,stringEscapeChar:"'",fallbackDataType:"nvarchar(max)",explicitDropConstraint:!1,enableConstraintsPerTable:!0,dropColumnDependencies:["default","dependencies","indexes","primaryKey","foreignKeys","uniques"],changeColumnDependencies:["indexes","dependencies","uniques"],anonymousPrimaryKey:!1,dropIndexContainsTableSpec:!0,quoteIdentifier:e=>`[${e}]`,createColumn:!0,dropColumn:!0,changeColumn:!0,createIndex:!0,dropIndex:!0,createForeignKey:!0,dropForeignKey:!0,createPrimaryKey:!0,dropPrimaryKey:!0,createUnique:!0,dropUnique:!0,createCheck:!0,dropCheck:!0,renameSqlObject:!0,filteredIndexes:!0,dropReferencesWhenDropTable:!0,namedDefaultConstraint:!0,columnProperties:{columnComment:!0,isSparse:!0,isPersisted:!0},safeCommentChanges:!0,predefinedDataTypes:["bigint","bit","decimal(10,2)","int","money","numeric","smallint","smallmoney","tinyint","float","real","date","datetime2","datetime","datetimeoffset","smalldatetime","time","char(20)","varchar(250)","text","nchar(20)","nvarchar(250)","ntext","binary(100)","varbinary(100)","image","xml"],createColumnViewExpression:(e,t,n,s)=>t&&i.includes(t.toUpperCase())?{exprType:"methodCall",method:"STAsText",alias:s||e,thisObject:{exprType:"column",columnName:e,source:n}}:t&&"XML"==t.toUpperCase()?{exprType:"call",func:"CONVERT",alias:s||e,args:[{exprType:"raw",sql:"NVARCHAR(MAX)"},{exprType:"column",columnName:e,source:n}]}:void 0,getTableFormOptions:e=>[{type:"text",label:"Comment",name:"objectComment",sqlFormatString:"^comment = %v",allowEmptyValue:!0}]},c={...s,supportsServerSummary:!0,dumperClass:a,dialect:r,readOnlySessions:!1,requiresDefaultSortCriteria:!0,dialectByVersion:e=>e&&e.productVersionNumber<11?{...r,rangeSelect:!1,offsetFetchRangeSyntax:!1}:r,showConnectionField:(e,t)=>["authType","server","port","user","password","defaultDatabase","singleDatabase","isReadOnly","useSeparateSchemas"].includes(e)||"trustServerCertificate"==e&&"sql"!=t.authType&&"sspi"!=t.authType||"windowsDomain"==e&&"sql"!=t.authType&&"sspi"!=t.authType&&"msentra"!=t.authType,getQuerySplitterOptions:e=>"editor"==e?{...o,adaptiveGoSplit:!0,ignoreComments:!0,preventSingleLineSplit:!0}:o,engine:"mssql@dbgate-plugin-mssql",title:"Microsoft SQL Server",defaultPort:1433,defaultAuthTypeName:"tedious",supportsTransactions:!0,getNewObjectTemplates:()=>[{label:"New view",sql:"CREATE VIEW myview\nAS\nSELECT * FROM table1"},{label:"New procedure",sql:"CREATE PROCEDURE myproc (@arg1 INT)\nAS\nBEGIN\n SELECT * FROM table1\nEND"},{label:"New function",sql:"CREATE FUNCTION myfunc (@arg1 INT) RETURNS INT\nAS\nBEGIN\n RETURN 1;\nEND"},{label:"New table valued function",sql:"CREATE FUNCTION myfunc (@arg1 INT) RETURNS TABLE \nAS\nRETURN SELECT * FROM table1"},{label:"New trigger",sql:"CREATE TRIGGER trigger_name\nON table_name AFTER INSERT AS\nBEGIN\nSELECT * FROM table_name\nEND"}],beforeConnectionSave:e=>({...e,useRedirectDbLogin:"msentra"==e.authType?1:0})};e.exports=c},50:e=>{"use strict";e.exports=require("@azure/identity")},812:e=>{"use strict";e.exports=require("async-lock")},825:e=>{"use strict";e.exports=require("lodash")},934:e=>{"use strict";e.exports=require("msnodesqlv8")},569:e=>{"use strict";e.exports=require("tedious")},982:e=>{"use strict";e.exports=require("crypto")},203:e=>{"use strict";e.exports=require("stream")}},t={},n=function n(s){var a=t[s];if(void 0!==a)return a.exports;var o=t[s]={exports:{}};return e[s](o,o.exports,n),o.exports}(237);module.exports=n})();
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dbgate-plugin-mssql",
|
|
3
3
|
"main": "dist/backend.js",
|
|
4
|
-
"version": "6.6.
|
|
4
|
+
"version": "6.6.10",
|
|
5
5
|
"homepage": "https://dbgate.org",
|
|
6
6
|
"description": "MS SQL connect plugin for DbGate",
|
|
7
7
|
"repository": {
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"@azure/identity": "^4.6.0",
|
|
40
40
|
"async-lock": "^1.2.6",
|
|
41
41
|
"dbgate-query-splitter": "^4.11.7",
|
|
42
|
-
"dbgate-tools": "^6.6.
|
|
42
|
+
"dbgate-tools": "^6.6.10",
|
|
43
43
|
"lodash": "^4.17.21",
|
|
44
44
|
"tedious": "^18.6.1"
|
|
45
45
|
},
|