dbgate-plugin-sqlite 6.6.0 → 6.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/backend.js +1 -1
  2. 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.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:{"'":"'",'"':'"'}})},688:(e,t,n)=>{const s=n(825),{DatabaseAnalyser:a}=global.DBGATE_PACKAGES["dbgate-tools"],r=n(926);e.exports=class extends a{constructor(e,t,n){super(e,t,n)}async _computeSingleObjectId(){const{pureName:e}=this.singleObjectFilter;this.singleObjectId=e}async _getFastSnapshot(){const e=await this.driver.query(this.dbhan,r.objects),t=await this.driver.query(this.dbhan,r.indexcols);return{tables:e.rows.filter((e=>"table"==e.type)).map((e=>({pureName:e.name,objectId:e.name,contentHash:[e.sql,...t.rows.filter((t=>t.tableName==e.name)).map((e=>`-- ${e.constraintName}: ${e.columnName}`))].join(";\n")}))),views:e.rows.filter((e=>"view"==e.type)).map((e=>({pureName:e.name,objectId:e.name,contentHash:e.sql})))}}async _runAnalysis(){const e=await this.analyserQuery(r.objectsConditioned,["tables","views"]),t=e.rows.filter((e=>"table"==e.type)),n=e.rows.filter((e=>"view"==e.type)),a=s.zipObject(t.map((e=>e.name)),t.map((e=>e.sql))),i=t.map((e=>({pureName:e.name,objectId:e.name,contentHash:e.sql}))),o=n.map((e=>({pureName:e.name,objectId:e.name,contentHash:e.sql,createSql:e.sql}))),l=await this.driver.query(this.dbhan,r.indexcols);for(const e of this.getRequestedObjectPureNames("tables",t.map((e=>e.name)))){const t=i.find((t=>t.pureName==e));if(!t)continue;const n=await this.driver.query(this.dbhan,`pragma table_info('${e}')`);t.columns=n.rows.map((t=>({columnName:t.name,dataType:t.type,notNull:!!t.notnull,defaultValue:null==t.dflt_value?void 0:t.dflt_value,autoIncrement:a[e].toLowerCase().includes("autoincrement")&&!!t.pk})));const r=s.uniq(l.rows.filter((t=>t.tableName==e&&"c"==t.origin)).map((e=>e.constraintName)));t.indexes=r.map((t=>({constraintName:t,isUnique:!!l.rows.find((n=>n.tableName==e&&n.constraintName==t)).isUnique,columns:l.rows.filter((n=>n.tableName==e&&n.constraintName==t)).map((({columnName:e})=>({columnName:e})))})));const o=s.uniq(l.rows.filter((t=>t.tableName==e&&"u"==t.origin)).map((e=>e.constraintName)));t.uniques=o.map((t=>({constraintName:t,columns:l.rows.filter((n=>n.tableName==e&&n.constraintName==t)).map((({columnName:e})=>({columnName:e})))})));const c=n.rows.filter((e=>e.pk)).map((e=>({columnName:e.name})));c.length>0&&(t.primaryKey={columns:c});const p=await this.driver.query(this.dbhan,`pragma foreign_key_list('${e}')`);t.foreignKeys=s.values(s.groupBy(p.rows,"id")).map((t=>{const n=t[0];return{pureName:e,refTableName:n.table,columns:t.map((e=>({columnName:e.from,refColumnName:e.to}))),updateAction:n.on_update,deleteAction:n.on_delete,constraintName:`FK_${e}_${n.id}`}}))}for(const e of this.getRequestedObjectPureNames("views",n.map((e=>e.name)))){const t=o.find((t=>t.pureName==e));if(!t)continue;const n=await this.driver.query(this.dbhan,`pragma table_info('${e}')`);t.columns=n.rows.map((e=>({columnName:e.name,dataType:e.type,notNull:!!e.notnull})))}return{tables:i,views:o,triggers:(await this.driver.query(this.dbhan,r.triggers)).rows}}}},344:(e,t,n)=>{n(825);const s=n(203),a=n(293),r=n(688),{splitQuery:i,sqliteSplitterOptions:o}=n(660),{runStreamItem:l,waitForDrain:c}=n(920),{getLogger:p,createBulkInsertStreamBase:m,extractErrorLogData:u}=global.DBGATE_PACKAGES["dbgate-tools"],d=p("sqliteDriver");let g;const y={...a[1],analyserClass:r,async connect({databaseFile:e,isReadOnly:t,authToken:s,databaseUrl:a,...r}){const i=(g||(g=n(281)),g);return{client:e?new i(e,{readonly:!!t}):new i(a,{authToken:s,readonly:!!t})}},async close(e){e.client.close()},async query(e,t){const n=e.client.prepare(t),s=n.all(),a=n.columns();var r;return{rows:s,columns:(a.length>0?a:(r=s[0])?Object.keys(r).map((e=>({columnName:e}))):[]).map((e=>({columnName:e.name,dataType:e.type})))}},async stream(e,t,n){const s=i(t,o),a={count:0,date:null};console.log("#stream",t);const r=e.client.transaction((()=>{for(const t of s)l(e,t,n,a);a.date&&n.info({message:`${a.count} rows affected`,time:new Date,severity:"info"})}));try{r()}catch(e){d.error(u(e),"Stream error");const{message:t,procName:s}=e;n.info({message:t,line:0,procedure:s,time:new Date,severity:"error"})}n.done()},async script(e,t,{useTransaction:n}={}){const s=()=>{for(const n of i(t,this.getQuerySplitterOptions("script")))e.client.prepare(n).run()};n?e.client.transaction((()=>{s()}))():s()},async readQueryTask(e,t){for(const n of e.iterate())t.write(n)||await c(t);t.end()},async readQuery(e,t,n){const a=new s.PassThrough({objectMode:!0,highWaterMark:100}),r=e.client.prepare(t),i=r.columns();return a.write({__isStreamHeader:!0,...n||{columns:i.map((e=>({columnName:e.name,dataType:e.type})))}}),this.readQueryTask(r,a),a},async writeTable(e,t,n){return m(this,s,e,t,n)},async getVersion(e){const{rows:t}=await this.query(e,"select sqlite_version() as version"),{version:n}=t[0];return{version:n,versionText:`SQLite ${n}`}},getAuthTypes:()=>[{title:"File",name:"file",disabledFields:["databaseUrl","authToken"]},{title:"URL",name:"url",disabledFields:["databaseFile"]}]};e.exports=y},317:(e,t,n)=>{n(825);const s=n(203),a=n(688),r=n(293),{splitQuery:i,sqliteSplitterOptions:o}=n(660),{getLogger:l,createBulkInsertStreamBase:c,extractErrorLogData:p}=global.DBGATE_PACKAGES["dbgate-tools"],{runStreamItem:m,waitForDrain:u}=n(920),d=l("sqliteDriver");let g;const y={...r[0],analyserClass:a,connect:async({databaseFile:e,isReadOnly:t})=>({client:new(g||(g=n(550)),g)(e,{readonly:!!t})}),async close(e){e.client.close()},async query(e,t){const n=e.client.prepare(t);if(n.reader){const e=n.columns();return{rows:n.all(),columns:e.map((e=>({columnName:e.name,dataType:e.type})))}}return n.run(),{rows:[],columns:[]}},async stream(e,t,n){const s=i(t,o),a={count:0,date:null},r=e.client.transaction((()=>{for(const t of s)m(e,t,n,a);a.date&&n.info({message:`${a.count} rows affected`,time:new Date,severity:"info"})}));try{r()}catch(e){d.error(p(e),"Stream error");const{message:t,procName:s}=e;n.info({message:t,line:0,procedure:s,time:new Date,severity:"error"})}n.done()},async script(e,t){e.client.transaction((()=>{for(const n of i(t,this.getQuerySplitterOptions("script")))e.client.prepare(n).run()}))()},async readQueryTask(e,t){for(const n of e.iterate())t.write(n)||await u(t);t.end()},async readQuery(e,t,n){const a=new s.PassThrough({objectMode:!0,highWaterMark:100}),r=e.client.prepare(t),i=r.columns();return a.write({__isStreamHeader:!0,...n||{columns:i.map((e=>({columnName:e.name,dataType:e.type})))}}),this.readQueryTask(r,a),a},async writeTable(e,t,n){return c(this,s,e,t,n)},async getVersion(e){const{rows:t}=await this.query(e,"select sqlite_version() as version"),{version:n}=t[0];return{version:n,versionText:`SQLite ${n}`}}};e.exports=y},378:(e,t,n)=>{const s=[n(317),n(344)];s.initialize=e=>{},e.exports=s},920:e=>{e.exports={runStreamItem:function(e,t,n,s){const a=e.client.prepare(t);if(console.log(a),console.log(a.reader),a.reader){const e=a.columns();n.recordset(e.map((e=>({columnName:e.name,dataType:e.type}))));for(const e of a.iterate())n.row(e)}else{const e=a.run();s.count+=e.changes,s.date||(s.date=(new Date).getTime()),(new Date).getTime()-s.date>1e3&&(n.info({message:`${s.count} rows affected`,time:new Date,severity:"info"}),s.count=0,s.date=null)}},waitForDrain:async function(e){return new Promise((t=>{e.once("drain",(()=>{t()}))}))}}},237:(e,t,n)=>{const s=n(378);e.exports={packageName:"dbgate-plugin-sqlite",drivers:s,initialize(e){s.initialize(e)}}},926:(e,t,n)=>{const s=n(950),a=n(556),r=n(689),i=n(377);e.exports={objects:s,objectsConditioned:a,indexcols:r,triggers:i}},689:e=>{e.exports="\nSELECT \n m.name as tableName,\n il.name as constraintName,\n il.\"unique\" as isUnique,\n ii.name as columnName,\n il.origin\n FROM sqlite_schema AS m,\n pragma_index_list(m.name) AS il,\n pragma_index_info(il.name) AS ii\n WHERE m.type='table' AND il.origin <> 'pk'\n ORDER BY ii.seqno, il.name\n \n"},950:e=>{e.exports="\nselect * from sqlite_master where (type='table' or type='view')\n"},556:e=>{e.exports="\nselect * from sqlite_master where (type='table' or type='view') and name =OBJECT_ID_CONDITION\n"},377:e=>{e.exports="\nSELECT \n rowid AS objectId,\n name AS pureName,\n CASE \n WHEN sql LIKE '% AFTER %' THEN 'AFTER'\n WHEN sql LIKE '% BEFORE %' THEN 'BEFORE'\n WHEN sql LIKE '% INSTEAD OF %' THEN 'INSTEAD OF'\n ELSE 'UNKNOWN'\n END AS triggerTiming,\n CASE \n WHEN sql LIKE '% INSERT %' THEN 'INSERT'\n WHEN sql LIKE '% UPDATE %' THEN 'UPDATE'\n WHEN sql LIKE '% DELETE %' THEN 'DELETE'\n ELSE NULL\n END AS eventType,\n tbl_name AS tableName,\n sql AS createSql\nFROM \n sqlite_master\nWHERE \n type = 'trigger';\n"},197:e=>{const{SqlDumper:t,arrayToHexString:n}=global.DBGATE_PACKAGES["dbgate-tools"];e.exports=class extends t{renameColumn(e,t){this.putCmd("^alter ^table %f ^rename ^column %i ^to %i",e,e.columnName,t)}renameTable(e,t){this.putCmd("^alter ^table %f ^rename ^to %i",e,t)}putByteArrayValue(e){this.putRaw(`x'${n(e)}'`)}truncateTable(e){this.putCmd("^delete ^from %f",e)}selectScopeIdentity(){this.put("^select last_insert_rowid()")}columnDefinition(e,t){e.dataType&&e.dataType.toLowerCase().includes("int")&&e.notNull&&e.autoIncrement?this.put("^integer ^primary ^key ^autoincrement"):super.columnDefinition(e,t)}createTablePrimaryKeyCore(e){const t=e.columns.find((e=>e.autoIncrement));t&&t.dataType&&t.dataType.toLowerCase().includes("int")&&t.notNull||super.createTablePrimaryKeyCore(e)}enableAllForeignKeys(e){this.putCmd("^pragma ^foreign_keys = %s",e?"on":"off")}}},293:(e,t,n)=>{const{driverBase:s}=global.DBGATE_PACKAGES["dbgate-tools"],a=n(197),{sqliteSplitterOptions:r,noSplitSplitterOptions:i}=n(994);function o(e){if(!e)return e;const t=e.match(/[\/]([^\/]+)$/);return t?t[1]:e}const l={...s,dumperClass:a,dialect:{limitSelect:!0,rangeSelect:!0,offsetFetchRangeSyntax:!1,explicitDropConstraint:!0,stringEscapeChar:"'",fallbackDataType:"nvarchar",allowMultipleValuesInsert:!0,dropColumnDependencies:["indexes","primaryKey","uniques"],quoteIdentifier:e=>`[${e}]`,anonymousPrimaryKey:!0,requireStandaloneSelectForScopeIdentity:!0,createColumn:!0,dropColumn:!0,createIndex:!0,dropIndex:!0,createForeignKey:!1,enableForeignKeyChecks:!1,dropForeignKey:!1,createPrimaryKey:!1,dropPrimaryKey:!1,dropReferencesWhenDropTable:!1,filteredIndexes:!0,anonymousForeignKey:!0},readOnlySessions:!0,supportsTransactions:!0,getQuerySplitterOptions:e=>"editor"==e?{...r,ignoreComments:!0,preventSingleLineSplit:!0}:"stream"==e?i:r,showConnectionTab:e=>!1,predefinedDataTypes:["integer","real","text","blob"]},c={...l,engine:"sqlite@dbgate-plugin-sqlite",title:"SQLite",showConnectionField:(e,t)=>"databaseFile"==e||"isReadOnly"==e,beforeConnectionSave:e=>({...e,singleDatabase:!0,defaultDatabase:o(e.databaseFile)})},p={...l,engine:"libsql@dbgate-plugin-sqlite",title:"LibSQL",authTypeLabel:"Target type",authTypeFirst:!0,premiumOnly:!0,showConnectionField:(e,t)=>"url"===(t?.authType??"url")?["databaseUrl","authToken","isReadOnly","authType"].includes(e):!!["databaseFile","isReadOnly"].includes(e)||"authType"==e,defaultAuthTypeName:"url",beforeConnectionSave:e=>({...e,singleDatabase:!0,defaultDatabase:o(e.databaseFile||e.databaseUrl)})};e.exports=[c,p]},550:e=>{"use strict";e.exports=require("better-sqlite3")},660:e=>{"use strict";e.exports=require("dbgate-query-splitter")},281:e=>{"use strict";e.exports=require("libsql")},825:e=>{"use strict";e.exports=require("lodash")},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 r=t[s]={exports:{}};return e[s](r,r.exports,n),r.exports}(237);module.exports=n})();
1
+ (()=>{var e={994:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),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:{"'":"'",'"':'"'}})},688:(e,t,n)=>{const s=n(825),{DatabaseAnalyser:a}=global.DBGATE_PACKAGES["dbgate-tools"],r=n(926);e.exports=class extends a{constructor(e,t,n){super(e,t,n)}async _computeSingleObjectId(){const{pureName:e}=this.singleObjectFilter;this.singleObjectId=e}async _getFastSnapshot(){const e=await this.driver.query(this.dbhan,r.objects),t=await this.driver.query(this.dbhan,r.indexcols);return{tables:e.rows.filter((e=>"table"==e.type)).map((e=>({pureName:e.name,objectId:e.name,contentHash:[e.sql,...t.rows.filter((t=>t.tableName==e.name)).map((e=>`-- ${e.constraintName}: ${e.columnName}`))].join(";\n")}))),views:e.rows.filter((e=>"view"==e.type)).map((e=>({pureName:e.name,objectId:e.name,contentHash:e.sql})))}}async _runAnalysis(){const e=await this.analyserQuery(r.objectsConditioned,["tables","views"]),t=e.rows.filter((e=>"table"==e.type)),n=e.rows.filter((e=>"view"==e.type)),a=s.zipObject(t.map((e=>e.name)),t.map((e=>e.sql))),i=t.map((e=>({pureName:e.name,objectId:e.name,contentHash:e.sql}))),o=n.map((e=>({pureName:e.name,objectId:e.name,contentHash:e.sql,createSql:e.sql}))),l=await this.driver.query(this.dbhan,r.indexcols);for(const e of this.getRequestedObjectPureNames("tables",t.map((e=>e.name)))){const t=i.find((t=>t.pureName==e));if(!t)continue;const n=await this.driver.query(this.dbhan,`pragma table_info('${e}')`);t.columns=n.rows.map((t=>({columnName:t.name,dataType:t.type,notNull:!!t.notnull,defaultValue:null==t.dflt_value?void 0:t.dflt_value,autoIncrement:a[e].toLowerCase().includes("autoincrement")&&!!t.pk})));const r=s.uniq(l.rows.filter((t=>t.tableName==e&&"c"==t.origin)).map((e=>e.constraintName)));t.indexes=r.map((t=>({constraintName:t,isUnique:!!l.rows.find((n=>n.tableName==e&&n.constraintName==t)).isUnique,columns:l.rows.filter((n=>n.tableName==e&&n.constraintName==t)).map((({columnName:e})=>({columnName:e})))})));const o=s.uniq(l.rows.filter((t=>t.tableName==e&&"u"==t.origin)).map((e=>e.constraintName)));t.uniques=o.map((t=>({constraintName:t,columns:l.rows.filter((n=>n.tableName==e&&n.constraintName==t)).map((({columnName:e})=>({columnName:e})))})));const c=n.rows.filter((e=>e.pk)).map((e=>({columnName:e.name})));c.length>0&&(t.primaryKey={columns:c});const p=await this.driver.query(this.dbhan,`pragma foreign_key_list('${e}')`);t.foreignKeys=s.values(s.groupBy(p.rows,"id")).map((t=>{const n=t[0];return{pureName:e,refTableName:n.table,columns:t.map((e=>({columnName:e.from,refColumnName:e.to}))),updateAction:n.on_update,deleteAction:n.on_delete,constraintName:`FK_${e}_${n.id}`}}))}for(const e of this.getRequestedObjectPureNames("views",n.map((e=>e.name)))){const t=o.find((t=>t.pureName==e));if(!t)continue;const n=await this.driver.query(this.dbhan,`pragma table_info('${e}')`);t.columns=n.rows.map((e=>({columnName:e.name,dataType:e.type,notNull:!!e.notnull})))}return{tables:i,views:o,triggers:(await this.driver.query(this.dbhan,r.triggers)).rows}}}},344:(e,t,n)=>{n(825);const s=n(203),a=n(293),r=n(688),{splitQuery:i,sqliteSplitterOptions:o}=n(660),{runStreamItem:l,waitForDrain:c}=n(920),{getLogger:p,createBulkInsertStreamBase:m,extractErrorLogData:u}=global.DBGATE_PACKAGES["dbgate-tools"],d=p("sqliteDriver");let g;const y={...a[1],analyserClass:r,async connect({databaseFile:e,isReadOnly:t,authToken:s,databaseUrl:a,...r}){const i=(g||(g=n(281)),g);return{client:e?new i(e,{readonly:!!t}):new i(a,{authToken:s,readonly:!!t})}},async close(e){e.client.close()},async query(e,t){const n=e.client.prepare(t),s=n.all(),a=n.columns();var r;return{rows:s,columns:(a.length>0?a:(r=s[0])?Object.keys(r).map((e=>({columnName:e}))):[]).map((e=>({columnName:e.name,dataType:e.type})))}},async stream(e,t,n){const s=i(t,o),a={count:0,date:null};console.log("#stream",t);const r=e.client.transaction((()=>{for(const t of s)l(e,t,n,a);a.date&&n.info({message:`${a.count} rows affected`,time:new Date,severity:"info"})}));try{r()}catch(e){d.error(u(e),"DBGM-00202 Stream error");const{message:t,procName:s}=e;n.info({message:t,line:0,procedure:s,time:new Date,severity:"error"})}n.done()},async script(e,t,{useTransaction:n}={}){const s=()=>{for(const n of i(t,this.getQuerySplitterOptions("script")))e.client.prepare(n).run()};n?e.client.transaction((()=>{s()}))():s()},async readQueryTask(e,t){for(const n of e.iterate())t.write(n)||await c(t);t.end()},async readQuery(e,t,n){const a=new s.PassThrough({objectMode:!0,highWaterMark:100}),r=e.client.prepare(t),i=r.columns();return a.write({__isStreamHeader:!0,...n||{columns:i.map((e=>({columnName:e.name,dataType:e.type})))}}),this.readQueryTask(r,a),a},async writeTable(e,t,n){return m(this,s,e,t,n)},async getVersion(e){const{rows:t}=await this.query(e,"select sqlite_version() as version"),{version:n}=t[0];return{version:n,versionText:`SQLite ${n}`}},getAuthTypes:()=>[{title:"File",name:"file",disabledFields:["databaseUrl","authToken"]},{title:"URL",name:"url",disabledFields:["databaseFile"]}]};e.exports=y},317:(e,t,n)=>{n(825);const s=n(203),a=n(688),r=n(293),{splitQuery:i,sqliteSplitterOptions:o}=n(660),{getLogger:l,createBulkInsertStreamBase:c,extractErrorLogData:p}=global.DBGATE_PACKAGES["dbgate-tools"],{runStreamItem:m,waitForDrain:u}=n(920),d=l("sqliteDriver");let g;const y={...r[0],analyserClass:a,connect:async({databaseFile:e,isReadOnly:t})=>({client:new(g||(g=n(550)),g)(e,{readonly:!!t})}),async close(e){e.client.close()},async query(e,t){const n=e.client.prepare(t);if(n.reader){const e=n.columns();return{rows:n.all(),columns:e.map((e=>({columnName:e.name,dataType:e.type})))}}return n.run(),{rows:[],columns:[]}},async stream(e,t,n){const s=i(t,o),a={count:0,date:null},r=e.client.transaction((()=>{for(const t of s)m(e,t,n,a);a.date&&n.info({message:`${a.count} rows affected`,time:new Date,severity:"info"})}));try{r()}catch(e){d.error(p(e),"DBGM-00203 Stream error");const{message:t,procName:s}=e;n.info({message:t,line:0,procedure:s,time:new Date,severity:"error"})}n.done()},async script(e,t){e.client.transaction((()=>{for(const n of i(t,this.getQuerySplitterOptions("script")))e.client.prepare(n).run()}))()},async readQueryTask(e,t){for(const n of e.iterate())t.write(n)||await u(t);t.end()},async readQuery(e,t,n){const a=new s.PassThrough({objectMode:!0,highWaterMark:100}),r=e.client.prepare(t),i=r.columns();return a.write({__isStreamHeader:!0,...n||{columns:i.map((e=>({columnName:e.name,dataType:e.type})))}}),this.readQueryTask(r,a),a},async writeTable(e,t,n){return c(this,s,e,t,n)},async getVersion(e){const{rows:t}=await this.query(e,"select sqlite_version() as version"),{version:n}=t[0];return{version:n,versionText:`SQLite ${n}`}}};e.exports=y},378:(e,t,n)=>{const s=[n(317),n(344)];s.initialize=e=>{},e.exports=s},920:e=>{e.exports={runStreamItem:function(e,t,n,s){const a=e.client.prepare(t);if(console.log(a),console.log(a.reader),a.reader){const e=a.columns();n.recordset(e.map((e=>({columnName:e.name,dataType:e.type}))));for(const e of a.iterate())n.row(e)}else{const e=a.run();s.count+=e.changes,s.date||(s.date=(new Date).getTime()),(new Date).getTime()-s.date>1e3&&(n.info({message:`${s.count} rows affected`,time:new Date,severity:"info"}),s.count=0,s.date=null)}},waitForDrain:async function(e){return new Promise((t=>{e.once("drain",(()=>{t()}))}))}}},237:(e,t,n)=>{const s=n(378);e.exports={packageName:"dbgate-plugin-sqlite",drivers:s,initialize(e){s.initialize(e)}}},926:(e,t,n)=>{const s=n(950),a=n(556),r=n(689),i=n(377);e.exports={objects:s,objectsConditioned:a,indexcols:r,triggers:i}},689:e=>{e.exports="\nSELECT \n m.name as tableName,\n il.name as constraintName,\n il.\"unique\" as isUnique,\n ii.name as columnName,\n il.origin\n FROM sqlite_schema AS m,\n pragma_index_list(m.name) AS il,\n pragma_index_info(il.name) AS ii\n WHERE m.type='table' AND il.origin <> 'pk'\n ORDER BY ii.seqno, il.name\n \n"},950:e=>{e.exports="\nselect * from sqlite_master where (type='table' or type='view')\n"},556:e=>{e.exports="\nselect * from sqlite_master where (type='table' or type='view') and name =OBJECT_ID_CONDITION\n"},377:e=>{e.exports="\nSELECT \n rowid AS objectId,\n name AS pureName,\n CASE \n WHEN sql LIKE '% AFTER %' THEN 'AFTER'\n WHEN sql LIKE '% BEFORE %' THEN 'BEFORE'\n WHEN sql LIKE '% INSTEAD OF %' THEN 'INSTEAD OF'\n ELSE 'UNKNOWN'\n END AS triggerTiming,\n CASE \n WHEN sql LIKE '% INSERT %' THEN 'INSERT'\n WHEN sql LIKE '% UPDATE %' THEN 'UPDATE'\n WHEN sql LIKE '% DELETE %' THEN 'DELETE'\n ELSE NULL\n END AS eventType,\n tbl_name AS tableName,\n sql AS createSql\nFROM \n sqlite_master\nWHERE \n type = 'trigger';\n"},197:e=>{const{SqlDumper:t,arrayToHexString:n}=global.DBGATE_PACKAGES["dbgate-tools"];e.exports=class extends t{renameColumn(e,t){this.putCmd("^alter ^table %f ^rename ^column %i ^to %i",e,e.columnName,t)}renameTable(e,t){this.putCmd("^alter ^table %f ^rename ^to %i",e,t)}putByteArrayValue(e){this.putRaw(`x'${n(e)}'`)}truncateTable(e){this.putCmd("^delete ^from %f",e)}selectScopeIdentity(){this.put("^select last_insert_rowid()")}columnDefinition(e,t){e.dataType&&e.dataType.toLowerCase().includes("int")&&e.notNull&&e.autoIncrement?this.put("^integer ^primary ^key ^autoincrement"):super.columnDefinition(e,t)}createTablePrimaryKeyCore(e){const t=e.columns.find((e=>e.autoIncrement));t&&t.dataType&&t.dataType.toLowerCase().includes("int")&&t.notNull||super.createTablePrimaryKeyCore(e)}enableAllForeignKeys(e){this.putCmd("^pragma ^foreign_keys = %s",e?"on":"off")}}},293:(e,t,n)=>{const{driverBase:s}=global.DBGATE_PACKAGES["dbgate-tools"],a=n(197),{sqliteSplitterOptions:r,noSplitSplitterOptions:i}=n(994);function o(e){if(!e)return e;const t=e.match(/[\/]([^\/]+)$/);return t?t[1]:e}const l={...s,dumperClass:a,dialect:{limitSelect:!0,rangeSelect:!0,offsetFetchRangeSyntax:!1,explicitDropConstraint:!0,stringEscapeChar:"'",fallbackDataType:"nvarchar",allowMultipleValuesInsert:!0,dropColumnDependencies:["indexes","primaryKey","uniques"],quoteIdentifier:e=>`[${e}]`,anonymousPrimaryKey:!0,requireStandaloneSelectForScopeIdentity:!0,createColumn:!0,dropColumn:!0,createIndex:!0,dropIndex:!0,createForeignKey:!1,enableForeignKeyChecks:!1,dropForeignKey:!1,createPrimaryKey:!1,dropPrimaryKey:!1,dropReferencesWhenDropTable:!1,filteredIndexes:!0,anonymousForeignKey:!0},readOnlySessions:!0,supportsTransactions:!0,getQuerySplitterOptions:e=>"editor"==e?{...r,ignoreComments:!0,preventSingleLineSplit:!0}:"stream"==e?i:r,showConnectionTab:e=>!1,predefinedDataTypes:["integer","real","text","blob"]},c={...l,engine:"sqlite@dbgate-plugin-sqlite",title:"SQLite",showConnectionField:(e,t)=>"databaseFile"==e||"isReadOnly"==e,beforeConnectionSave:e=>({...e,singleDatabase:!0,defaultDatabase:o(e.databaseFile)})},p={...l,engine:"libsql@dbgate-plugin-sqlite",title:"LibSQL",authTypeLabel:"Target type",authTypeFirst:!0,premiumOnly:!0,showConnectionField:(e,t)=>"url"===(t?.authType??"url")?["databaseUrl","authToken","isReadOnly","authType"].includes(e):!!["databaseFile","isReadOnly"].includes(e)||"authType"==e,defaultAuthTypeName:"url",beforeConnectionSave:e=>({...e,singleDatabase:!0,defaultDatabase:o(e.databaseFile||e.databaseUrl)})};e.exports=[c,p]},550:e=>{"use strict";e.exports=require("better-sqlite3")},660:e=>{"use strict";e.exports=require("dbgate-query-splitter")},281:e=>{"use strict";e.exports=require("libsql")},825:e=>{"use strict";e.exports=require("lodash")},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 r=t[s]={exports:{}};return e[s](r,r.exports,n),r.exports}(237);module.exports=n})();
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dbgate-plugin-sqlite",
3
3
  "main": "dist/backend.js",
4
- "version": "6.6.0",
4
+ "version": "6.6.2",
5
5
  "homepage": "https://dbgate.org",
6
6
  "description": "SQLite connect plugin for DbGate",
7
7
  "repository": {
@@ -35,7 +35,7 @@
35
35
  "webpack-cli": "^5.1.4"
36
36
  },
37
37
  "dependencies": {
38
- "dbgate-tools": "^6.6.0",
38
+ "dbgate-tools": "^6.6.2",
39
39
  "lodash": "^4.17.21",
40
40
  "dbgate-query-splitter": "^4.11.5"
41
41
  },