hysteria-orm 10.8.3 → 10.8.4
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/lib/cli.js +1 -1
- package/lib/cli.js.map +1 -1
- package/lib/index.cjs +2 -2
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.cts +56 -48
- package/lib/index.d.ts +56 -48
- package/lib/index.js +2 -2
- package/lib/index.js.map +1 -1
- package/package.json +1 -1
package/lib/cli.js
CHANGED
|
@@ -132,7 +132,7 @@ CREATE TABLE [migrations] (
|
|
|
132
132
|
FROM user_constraints
|
|
133
133
|
WHERE constraint_type = 'R'
|
|
134
134
|
`);for(let m of f.rows||[])await i.rawQuery(`ALTER TABLE "${m.TABLE_NAME}" DROP CONSTRAINT "${m.CONSTRAINT_NAME}"`);for(let m of d)await i.rawQuery(`DROP TABLE "${m}" CASCADE CONSTRAINTS PURGE`);}else await i.rawQuery(u);(r==="mysql"||r==="mariadb")&&await i.rawQuery("SET FOREIGN_KEY_CHECKS = 1;"),s&&await n?.commit(),b.info("All tables dropped successfully");}catch(a){throw s&&await n?.rollback(),b.error(a),a}finally{t&&await i.disconnect();}}var zp=()=>{let i=O.MIGRATION_PATH,t=ze.resolve(process.cwd(),i);return fe.existsSync(t)||fe.mkdirSync(t,{recursive:true}),t},ll=(i,t=false,e="basic",r="table")=>{let o=zp(),n=new Date().getTime(),s=t?`${n}_${i}.js`:`${n}_${i}.ts`,a=ze.join(o,s),l;switch(e){case "alter":l=z.alterMigrationTemplate(t,r);break;case "create":l=z.createMigrationTemplate(t,r);break;default:l=z.basicMigrationTemplate(t);break}fe.writeFileSync(a,l),b.info(`Migration created successfully at '${a}'.`),process.exit(0);};async function ef(i){try{return import(pathToFileURL(i).href)}catch{let e=createRequire(import.meta.url)(i);return {default:e.default||e,...e}}}async function tf(i){let{build:t}=await import('esbuild').catch(()=>{throw new Error("esbuild is required to import TypeScript files. Install it with: npm install esbuild -D")}),e=Math.random().toString(36).slice(2,8),r=i.replace(/\.ts$/,`.bundled_${e}.mjs`);try{return await t({entryPoints:[i],bundle:!0,platform:"node",format:"esm",sourcemap:"inline",outfile:r,packages:"external",logLevel:"silent"}),await import(pathToFileURL(r).href)}finally{await fe.promises.unlink(r).catch(()=>{});}}async function Ge(i,t){let e=ze.isAbsolute(i)?i:ze.resolve(process.cwd(),i);return e.endsWith(".ts")?tf(e):ef(e)}var nf=async(i,t)=>{if(i.endsWith(".ts"))return Ge(i);try{return import(pathToFileURL(i).href)}catch{let o=createRequire(import.meta.url);try{let n=o(i);return {default:n.default||n,...n}}catch{throw new N(`MigrationUtils::importMigrationFile Failed to import migration file: ${i}. Both ESM and CommonJS imports failed.`,"MIGRATION_MODULE_NOT_FOUND")}}};async function Wt(i,t){switch(i){case "mariadb":case "mysql":let e=t;return await e.query(z.migrationTableTemplateMysql()),(await e.query(z.selectAllFromMigrationsTemplate()))[0];case "postgres":case "cockroachdb":let o=t;return await o.query(z.migrationTableTemplatePg()),(await o.query(z.selectAllFromMigrationsTemplate())).rows;case "sqlite":return await ml(z.migrationTableTemplateSQLite(),[],t),await ml(z.selectAllFromMigrationsTemplate(),[],t)||[];case "mssql":let s=t;return await s.request().query(z.migrationTableTemplateMssql()),(await s.request().query(z.selectAllFromMigrationsTemplate())).recordset;case "oracledb":let d=await t.getConnection();try{try{await d.execute(z.migrationTableTemplateOracle());}catch(f){if(f.errorNum!==955)throw f}return ((await d.execute('SELECT * FROM "migrations"')).rows||[]).map(f=>({id:f[0],name:f[1],timestamp:f[2]}))}finally{await d.close();}default:throw new N("MigrationUtils::getMigrationTable Unsupported database type","DEVELOPMENT_ERROR")}}async function Ut(i,t,e){let r=af(t),o=[];for(let{name:n,fullPath:s}of r){let a=await sf(s),l=new a(i||O.DB_TYPE);l.migrationName=n,o.push(l);}return o}async function sf(i,t){let e=await nf(i);if(!e.default)throw new N("MigrationUtils::loadMigrationModule Migration module does not have a default export","MIGRATION_MODULE_NOT_FOUND");return e.default}function af(i){let t=process.cwd(),e=i||O.MIGRATION_PATH||"database/migrations",r=/[*?{}\[\]]/.test(e);if(!r){let s=ze.isAbsolute(e)?e:ze.resolve(t,e);if(!fe.existsSync(s))return fe.mkdirSync(s,{recursive:true}),[]}let o=r?e:ze.join(e,"**/*.{ts,js}"),n=ze.isAbsolute(o)?o:ze.resolve(t,o);try{return fe.globSync(n).filter(a=>fe.statSync(a).isFile()).sort().map(a=>({name:ze.basename(a),fullPath:a}))}catch{return []}}async function ml(i,t,e){return new Promise((r,o)=>{e.all(i,t,(n,s)=>{n&&o(n),r(s);});})}async function bt(i,t,e,r,o){let n=i.getDbType(),s=o&&n!=="mssql"&&n!=="oracledb",a=null;b.info("Running migrations for database type: "+n);try{let l=await Wt(n,i.getPool()),u=(await Ut(n,e,r)).filter(m=>!l.map(p=>p.name).includes(m.migrationName));if(!u.length){b.info("No pending migrations.");return}if(t){let m=u.findIndex(h=>h.migrationName===t);if(m===-1){console.error(`Migration ${t} not found.`);return}let p=u.slice(0,m+1);s&&(a=await i.transaction(),i=a.sql),await new xe(i).upMigrations(p),s&&await a?.commit(),b.info("Migrations ran successfully");return}let f=new xe(i);s&&(a=await i.transaction(),i=a.sql),await f.upMigrations(u),s&&await a?.commit();}catch(l){throw s&&await a?.rollback(),l}b.info("Migrations ran successfully");}var Ft={string:"string",varchar:"string",char:"string",text:"textarea",longtext:"textarea",mediumtext:"textarea",tinytext:"textarea",integer:"number",int:"number",smallint:"number",bigint:"number",tinyint:"number",mediumint:"number",float:"float",double:"float",decimal:"float",numeric:"float",real:"float",boolean:"boolean",bool:"boolean",date:"date",datetime:"datetime",timestamp:"datetime",time:"string",year:"number",json:"mixed",jsonb:"mixed",uuid:"string",ulid:"string",binary:"string",blob:"string",enum:"string"};var pl=null;function cl(i,t,e){if(!t||typeof t!="object")return;let r=t;if(!r.filters)return;let o=e.getColumns();for(let[n,s]of Object.entries(r.filters)){let a=s.value;if(a==null||a==="")continue;let l=o.find(f=>f.columnName===n||f.databaseName===n);if(!l)continue;let d=typeof l.type=="string"?l.type:"string",u=Ft[d]||"string";if(u==="string"||u==="textarea"){i.whereLike(n,`%${a}%`);continue}if(u==="boolean"){i.where(n,a==="true"||a===true);continue}if(u==="date"||u==="datetime"){if(typeof a=="object"&&a!==null){let f=a;f.from&&i.where(n,">=",f.from),f.to&&i.where(n,"<=",f.to);continue}i.where(n,a);continue}i.where(n,a);}}function Tt(i,t){let e={},r=t.getColumns();for(let o of r){let n=i[o.columnName];e[o.columnName]=n;}return e}async function lf(){let i=await import('adminjs').catch(()=>{throw new B("adminjs")}),{BaseResource:t,BaseRecord:e,BaseProperty:r}=i;return class extends t{constructor(n){super(n),this._model=n,this._db=pl;}static isAdapterFor(n){if(typeof n!="function")return false;let s=n;return s.prototype!==void 0&&typeof s.table=="string"&&typeof s.getColumns=="function"}databaseName(){return this._db.database||"hysteria"}databaseType(){return this._db.getDbType()}id(){return this._model.table}properties(){return this._model.getColumns().map(s=>{let a=typeof s.type=="string"?s.type:"string",l=Ft[a]||"string";return new r({path:s.columnName,type:l,isId:s.isPrimary,isSortable:true})})}property(n){let a=this._model.getColumns().find(u=>u.columnName===n||u.databaseName===n);if(!a)return null;let l=typeof a.type=="string"?a.type:"string",d=Ft[l]||"string";return new r({path:a.columnName,type:d,isId:a.isPrimary,isSortable:true})}async count(n){let s=this._model.query({connection:this._db});return cl(s,n,this._model),s.getCount()}async find(n,s={}){let a=this._model.query({connection:this._db});return cl(a,n,this._model),s.limit&&a.limit(s.limit),s.offset&&a.offset(s.offset),s.sort?.sortBy&&a.orderBy(s.sort.sortBy,s.sort.direction||"asc"),(await a.many()).map(d=>new e(Tt(d,this._model),this))}async findOne(n){if(!this._model.primaryKey)return null;let a=await this._model.findOneByPrimaryKey(n,{connection:this._db});return a?new e(Tt(a,this._model),this):null}async findMany(n){let s=this._model.primaryKey;return s?(await this._model.query({connection:this._db}).whereIn(s,n).many()).map(l=>new e(Tt(l,this._model),this)):[]}async create(n){let s=await this._model.insert(n,{connection:this._db,returning:["*"]});return Tt(s,this._model)}async update(n,s){if(!this._model.primaryKey)throw new Error("Model has no primary key");if(!await this._model.findOneByPrimaryKey(n,{connection:this._db}))throw new Error("Record not found");let d=await this._model.updateRecord(n,s,{connection:this._db,returning:["*"]});return Tt(d,this._model)}async delete(n){if(!this._model.primaryKey)throw new Error("Model has no primary key");await this._model.findOneByPrimaryKey(n,{connection:this._db})&&await this._model.deleteRecord(n,{connection:this._db});}}}async function df(){let i=await import('adminjs').catch(()=>{throw new B("adminjs")}),{BaseDatabase:t}=i;return class extends t{static isAdapterFor(r){return false}resources(){return []}}}async function uf(){let i=await import('adminjs').catch(()=>{throw new B("adminjs")}),t=await lf(),e=await df();i.default.registerAdapter({Database:e,Resource:t});}async function Zr(i,t){pl=i;let e=await import('adminjs').catch(()=>{throw new B("adminjs")});await uf();let r=t.resources||Object.values(i.models);if(!r.length)throw new Error("No models provided for AdminJS. Please provide models in the resources option or register them in SqlDataSource.");let o=r.map(a=>{let l=t.resourceOptions?.[a.table]||{};return {resource:a,options:l}}),n={rootPath:t.rootPath||"/admin",resources:o};if(t.branding&&(n.branding=t.branding),t.locale?.language&&(n.locale=t.locale),t.assets&&(n.assets=t.assets),t.settings&&(n.settings=t.settings),t.pages){let a={};for(let[l,d]of Object.entries(t.pages))d.component&&(a[l]=d);Object.keys(a).length>0&&(n.pages=a);}return {admin:new e.default(n)}}async function fl(i,t){let{admin:e}=await Zr(i,t),r;try{r=await import('@adminjs/express');}catch{throw new B("@adminjs/express")}let o=r.buildRouter(e);return {admin:e,router:o}}var Ze=new Map,Ae=new Map,jt=class{async get(t){return Ze.get(t)}async set(t,e,r){let o=Ae.get(t);if(o&&(clearTimeout(o),Ae.delete(t)),Ze.set(t,e),r){let n=setTimeout(()=>{Ze.delete(t),Ae.delete(t);},r);Ae.set(t,n);}}async invalidate(t){let e=Ae.get(t);e&&(clearTimeout(e),Ae.delete(t)),Ze.delete(t);}async invalidateAll(t){let e=Ze.keys();for(let r of e)if(r.startsWith(t)){let o=Ae.get(r);o&&(clearTimeout(o),Ae.delete(r)),Ze.delete(r);}}};var Vt=class{constructor(t){switch(this.type=t?.type||O.DB_TYPE,this.type){case "mongo":this.handleMongoSource(t);break;case "cockroachdb":this.handleCockroachdbSource(t);break;case "postgres":this.handlePostgresSource(t);break;case "mariadb":case "mysql":this.handleMysqlSource(t);break;case "sqlite":this.handleSqliteSource(t);break;case "mssql":this.handleMssqlSource(t);break;case "oracledb":this.handleOracleDBSource(t);break;default:throw new N(`Invalid database type: ${this.type}, please provide a valid database type in your input or in the .env file with the key DB_TYPE
|
|
135
|
-
Valid database types are: [mongo, postgres, cockroachdb, mysql, mariadb, sqlite]`,`UNSUPPORTED_DATABASE_TYPE_${this.type}`)}let e=Kt(this.logs);e?.customLogger&&b.setCustomLogger(e.customLogger);}handleCockroachdbSource(t){this.host=t?.host||O.DB_HOST,this.port=+t?.port||+O.DB_PORT,this.username=t?.username||O.DB_USER,this.password=t?.password||O.DB_PASSWORD,this.database=t?.database||O.DB_DATABASE,this.logs=t?.logs||O.DB_LOGS||false,this.port||(this.port=26257);}handlePostgresSource(t){this.host=t?.host||O.DB_HOST,this.port=+t?.port||+O.DB_PORT,this.username=t?.username||O.DB_USER,this.password=t?.password||O.DB_PASSWORD,this.database=t?.database||O.DB_DATABASE,this.logs=t?.logs||O.DB_LOGS||false,this.port||(this.port=5432);}handleMysqlSource(t){this.host=t?.host||O.DB_HOST,this.port=+t?.port||+O.DB_PORT,this.username=t?.username||O.DB_USER,this.password=t?.password||O.DB_PASSWORD,this.database=t?.database||O.DB_DATABASE,this.logs=t?.logs||O.DB_LOGS||false,this.port||(this.port=3306);}handleSqliteSource(t){this.database=t?.database||O.DB_DATABASE||":memory:",this.logs=t?.logs||O.DB_LOGS||false;}handleMongoSource(t){this.url=t?.url||O.MONGO_URL,this.logs=t?.logs||O.MONGO_LOGS||false;}handleMssqlSource(t){this.host=t?.host||O.DB_HOST,this.port=+t?.port||+O.DB_PORT,this.username=t?.username||O.DB_USER,this.password=t?.password||O.DB_PASSWORD,this.database=t?.database||O.DB_DATABASE,this.logs=t?.logs||O.DB_LOGS||false,this.port||(this.port=1433);}handleOracleDBSource(t){this.host=t?.host||O.DB_HOST,this.port=+t?.port||+O.DB_PORT,this.username=t?.username||O.DB_USER,this.password=t?.password||O.DB_PASSWORD,this.database=t?.database||O.DB_DATABASE,this.logs=t?.logs||O.DB_LOGS||false,this.port||(this.port=1521);}};var mf=i=>{let{required:t,...e}=i.openApi||{},r={...e,type:i.openApi?.type||"string",description:i.openApi?.description??`Property: ${i.columnName}`};return i.openApi?.type?{...r,type:i.openApi.type}:Array.isArray(i.type)?{...r,type:"string",enum:i.type}:i.type==="date"||i.type==="datetime"||i.type==="timestamp"||i.type==="time"?{...r,type:"string",format:"date-time"}:i.type==="boolean"?{...r,type:"boolean"}:i.type==="integer"||i.type==="tinyint"||i.type==="smallint"||i.type==="mediumint"||i.type==="increment"?{...r,type:"integer",format:"int32"}:i.type==="biginteger"||i.type==="bigIncrement"?{...r,type:"integer",format:"int64"}:i.type==="float"||i.type==="real"?{...r,type:"number",format:"float"}:i.type==="double"?{...r,type:"number",format:"double"}:i.type==="decimal"||i.type==="numeric"?{...r,type:"number"}:i.type==="json"||i.type==="jsonb"?{...r,type:"object"}:i.type==="uuid"?{...r,type:"string",format:"uuid"}:i.type==="ulid"?{...r,type:"string",format:"ulid"}:i.type==="string"||i.type==="char"||i.type==="varchar"||i.type==="text"||i.type==="longtext"||i.type==="mediumtext"||i.type==="tinytext"?{...r,type:"string"}:i.type==="blob"||i.type==="binary"||i.type==="varbinary"||i.type==="tinyblob"||i.type==="mediumblob"||i.type==="longblob"?{...r,type:"string",format:"binary"}:i.type==="year"?{...r,type:"integer",format:"int32"}:r},cf=i=>i.openApi?.required??false,pf=i=>{let t=i.getColumns(),e={};for(let r of t)r.hidden||(e[r.columnName]=mf(r));return e},ff=i=>{let t=i.getColumns(),e=[];for(let r of t)cf(r)&&e.push(r.columnName);return e||[]},yf=i=>{let t=pf(i),e=ff(i);return {type:"object",properties:t,required:e.length?e:[]}};var yl=i=>i.map(t=>({...yf(t),modelName:t.name,$id:t.name}));var Xr=(i,t)=>{let e=Se.createHash("sha256"),r=i;return e.update(r),e.digest("hex")};var eo=i=>{switch(i){case "mysql":return "mysql";case "mariadb":return "mariadb";case "postgres":case "cockroachdb":return "postgresql";case "sqlite":return "sqlite";case "mssql":return "transactsql";case "oracledb":return "plsql";default:return "sql"}},Jt=i=>{if(i==null)return "NULL";if(i instanceof Date)return `'${i.toISOString()}'`;let t=typeof i;return t==="boolean"?i?"TRUE":"FALSE":t==="number"&&Number.isFinite(i)||t==="bigint"?String(i):t==="string"?`'${i.replace(/'/g,"''")}'`:Array.isArray(i)||t==="object"&&Object.keys(i).length>0?`'${JSON.stringify(i).replace(/'/g,"''")}'`:String(i)},Xe=(i,t)=>{let e=i;for(let r=0;r<t.length&&e.includes("?");r++)e=e.replace(/\?/,Jt(t[r]));for(let r=0;r<t.length;r++){let o=new RegExp(`\\$${r+1}(?!\\d)`,"g");e=e.replace(o,Jt(t[r]));}for(let r=0;r<t.length;r++){let o=new RegExp(`\\@${r+1}(?!\\d)`,"g");e=e.replace(o,Jt(t[r]));}for(let r=0;r<t.length;r++){let o=new RegExp(`:${r+1}(?!\\d)`,"g");e=e.replace(o,Jt(t[r]));}return e},et=(i,t)=>t?i==="mysql"||i==="mariadb"?t.code==="ER_NO_SUCH_TABLE"||t.errno===1146:i==="postgres"||i==="cockroachdb"?t.code==="42P01":i==="sqlite"?/no such table/i.test(String(t.message||"")):i==="mssql"?t.number===208:i==="oracledb"?t.errorNum===942:false:false,Pe=(i,t)=>{let e=i.getDbType(),r;try{r=format(t,{...i.inputDetails.queryFormatOptions,language:eo(e)});}catch{try{r=format(t,{...i.inputDetails.queryFormatOptions});}catch{r=t;}}return r};var to=class{toSql(t){let e=t,r=new T(this.model,"mssql"),{sql:o}=r.parse([e.column]),n=e.inlineConstraints;if(n&&n.length){let s=[];for(let a of n){let{sql:l}=r.parse([a]);s.push(l);}s.length&&(o+=` ${s.join(" ")}`);}return {sql:`add ${o}`,bindings:[]}}},gl=new to;var ro=class{toSql(t){let e=t,r=new T(this.model,"mssql"),{sql:o}=r.parse([e.constraint]);return {sql:`add ${o}`,bindings:[]}}},bl=new ro;var oo=class{toSql(t){return {sql:`add primary key (${t.columns.map(o=>`[${o}]`).join(", ")})`,bindings:[]}}},Tl=new oo;var no=class{toSql(t){let e=t,r=new T(this.model,"mssql"),{sql:o}=r.parse([e.newType]),[,...n]=o.trim().split(/\s+/),s=n.join(" "),a="";e.options.nullable!==void 0&&(a=e.options.nullable?" null":" not null");let l=`alter column [${e.column}] ${s}${a}`;if(e.options.dropDefault&&(l=`drop constraint DF_${e.column}, ${l}`),e.options.default!==void 0&&!e.options.dropDefault){let d=e.options.default;d===null?d="null":typeof d=="string"&&(d==="NULL"?d="null":d==="TRUE"||d==="FALSE"?d=d==="TRUE"?"1":"0":d=`'${d}'`),l+=`, add constraint DF_${e.column} default ${d} for [${e.column}]`;}return e.options.unique!==void 0&&e.options.unique&&(l+=`, add constraint UQ_${e.column} unique ([${e.column}])`),{sql:l,bindings:[]}}},Nl=new no;var S=class{constructor(t,e=false){this.currParamIndex=1;this.isRawValue=false;this.keyword=t,this.isRawValue=e;}};var tt=class extends S{constructor(e){super("rename to");this.chainsWith=",";this.canKeywordBeSeenMultipleTimes=false;this.folder="alter_table";this.file="rename_table";this.newName=e;}};function gf(i){return typeof i!="string"||!i?i:i.replace(/([a-z])([A-Z])/g,"$1_$2").replace(/([A-Z])([A-Z][a-z])/g,"$1_$2").toLowerCase()}function bf(i){return typeof i!="string"||!i?i:i.replace(/([-_][a-z])/g,t=>t.toUpperCase().replace("-","").replace("_",""))}function U(i,t){return t==="preserve"?i:t==="snake"?gf(i):t==="camel"?bf(i):t instanceof RegExp?i.replace(t,e=>e[1].toUpperCase()):t(i)}Ke.extend(wf);Ke.extend(Nf);Ke.extend(Tf);var re=(i,t="ISO",e="UTC")=>{if(!(i instanceof Date)||isNaN(i.getTime()))throw new Error("Invalid date provided");let r=Ke(i);if(e==="LOCAL"){let n=r.local();switch(t){case "ISO":return n.format("YYYY-MM-DD HH:mm:ss");case "DATE_ONLY":return n.format("YYYY-MM-DD");case "TIME_ONLY":return n.format("HH:mm:ss");default:return n.unix().toString()}}let o=r.utc();switch(t){case "ISO":return o.format("YYYY-MM-DD HH:mm:ss");case "DATE_ONLY":return o.format("YYYY-MM-DD");case "TIME_ONLY":return o.format("HH:mm:ss");default:return o.unix().toString()}},Nt=(i,t,e="UTC")=>{if(i===null)return null;if(i instanceof Date){if(isNaN(i.getTime()))throw new N("DateUtils::parseDate","INVALID_DATE_OBJECT");return i}try{let r=t?Ke(i,t):Ke(i);if(!r.isValid())throw new N("DateUtils::parseDate","INVALID_DATE_STRING");return e==="UTC"?r.utc().toDate():r.local().toDate()}catch(r){throw new N("DateUtils::parseDate","FAILED_TO_PARSE_DATE",r)}},rt=(i=new Date)=>Ke(i).utc().format("YYYY-MM-DD HH:mm:ss");var wl=(i,t)=>{try{let e=Se.createHash("sha256").update(i).digest(),r=Se.randomBytes(16),o=Se.createCipheriv("aes-256-cbc",e,r),n=o.update(t,"utf8","hex");return n+=o.final("hex"),`${r.toString("hex")}:${n}`}catch(e){throw new N("Encryption::encryptSymmetric","FAILED_TO_ENCRYPT_SYMMETRICALLY",e instanceof Error?e:void 0)}},Sl=(i,t)=>{try{let e=Se.createHash("sha256").update(i).digest(),r=String(t).trim(),[o,n]=r.split(":");if(!o||!n)throw new Error(`Invalid encrypted value format: expected "iv:data" but got "${r.substring(0,50)}..."`);let s=o.toLowerCase(),a=n.toLowerCase(),l=Se.createDecipheriv("aes-256-cbc",e,Buffer.from(s,"hex")),d=l.update(a,"hex","utf8");return d+=l.final("utf8"),d}catch(e){throw new N("Encryption::decryptSymmetric","FAILED_TO_DECRYPT_SYMMETRICALLY",e instanceof Error?e:void 0)}},ql=(i,t)=>{try{let e=Se.randomBytes(32),r=Se.randomBytes(16),o=Se.createCipheriv("aes-256-cbc",e,r),n=o.update(t,"utf8","hex");n+=o.final("hex");let s=publicEncrypt(i,e);return `${r.toString("hex")}:${s.toString("hex")}:${n}`}catch(e){throw new N("Encryption::encryptAsymmetric","FAILED_TO_ENCRYPT_ASYMMETRICALLY",e instanceof Error?e:void 0)}},Ml=(i,t)=>{try{let e=String(t).trim(),[r,o,n]=e.split(":");if(!r||!o||!n)throw new Error(`Invalid encrypted value format: expected "iv:key:data" but got "${e.substring(0,50)}..."`);let s=privateDecrypt(i,Buffer.from(o,"hex")),a=Se.createDecipheriv("aes-256-cbc",s,Buffer.from(r,"hex")),l=a.update(n,"hex","utf8");return l+=a.final("utf8"),l}catch(e){throw new N("Encryption::decryptAsymmetric","FAILED_TO_DECRYPT_ASYMMETRICALLY",e instanceof Error?e:void 0)}};var W=class{static defineMetadata(t,e,r,o){if((typeof r!="object"||r===null)&&typeof r!="function")throw new TypeError("target must be an object or function");let n=this.store.get(r);n||(n=new Map,this.store.set(r,n));let s=n.get(o);s||(s=new Map,n.set(o,s)),s.set(t,e);}static getMetadata(t,e,r){if((typeof e!="object"||e===null)&&typeof e!="function")throw new TypeError("target must be an object or function");let o=e;for(;o;){let n=this.store.get(o);if(n){let s=n.get(r);if(s&&s.has(t))return s.get(t)}o=Object.getPrototypeOf(o);}}};W.store=new WeakMap;var io="0123456789ABCDEFGHJKMNPQRSTVWXYZ",so=io.length,Cf=10,_f=16,Rf=(i,t)=>{let e="";for(let r=0;r<t;r++){let o=i%so;e=io.charAt(o)+e,i=(i-o)/so;}return e},xf=i=>{let t=randomBytes(i),e="";for(let r=0;r<i;r++){let o=t[r];e+=io.charAt(o%so);}return e},Cl=()=>{let i=Math.floor(Date.now()/1e3),t=Rf(i,Cf),e=xf(_f);return t+e};function ao(i){return i.replace(/^[`"]|[`"]$/g,"")}function lo(i,t,e){if(!i.includes(".")){let n=ao(i);return `${t}.${n}`}let[r,o]=i.split(".");return r=ao(r),o=ao(o),r!==e?i:o==="*"?`${t}.*`:`${t}.${o}`}function q(i){return typeof i=="function"?i():i}var V=(i,t=new WeakMap)=>{if(i===null||typeof i!="object")return i;if(t.has(i))return t.get(i);if(Array.isArray(i)){let r=[];t.set(i,r);for(let o=0;o<i.length;o++)r[o]=V(i[o],t);return r}let e=Object.create(Object.getPrototypeOf(i)||{});t.set(i,e);for(let r of Object.getOwnPropertyNames(i)){let o=i[r];if(typeof o=="function"){e[r]=o;continue}e[r]=V(o,t);}return e};var ot=class{};ot.modelCaseConvention="camel",ot.databaseCaseConvention="snake";var _l;_l=Symbol.toStringTag;var J=class{constructor(t,e,r){this.unWrapFn=t;this.toQueryFn=e;this.executor=r;this[_l]="WriteOperation";}then(t,e){return this.executor().then(t,e)}catch(t){return this.executor().catch(t)}finally(t){return this.executor().finally(t)}toQuery(){return this.toQueryFn()}unWrap(){return this.unWrapFn()}};var Af=async(i,t,e,r,o=[],n=false)=>{let s=Object.create(t.prototype),a=new Set(e.filter(u=>u.hidden).map(u=>u.columnName)),l=new Map(e.map(u=>[u.databaseName,u])),d=o.length?new Set(o):null;if(await Promise.all(Object.keys(i).map(async u=>{let f=i[u],m=l.get(u)?.columnName??u,p=r.has(m),c=a.has(m),h=n?true:d?d.has(m):true;if(p){if(c||!h)return;if(f===null){s[m]=null;return}let g=r.get(m);if(g&&g.serialize){s[m]=await g.serialize(f);return}s[m]=f;return}(!n||d&&d.has(m))&&(s[m]=f);})),d)for(let u of d)u in s||(s[u]=null);return s},ge=async(i,t,e=[])=>{if(!i.length)return null;let r=t.getColumns(),o=new Map(r.map(l=>[l.columnName,l])),n=e.some(l=>l.includes("*")),s=[];for(let l of e){if(l.toLowerCase().includes(" as ")){let m=l.match(/\s+as\s+(.+)$/i);m&&s.push(m[1].trim());continue}let u=l;if(u.includes(".")&&(u=u.split(".").pop()),u==="*")continue;let f=o.get(u)?.columnName??u;s.push(f);}e=s;let a=await Promise.all(i.map(async l=>await Af(l,t,r,o,e,n)));return a.length===1?a[0]:a};var Rl=["postgres","cockroachdb"];function xl(i){let t=i.name.replace(/^_/,""),e=U(t,"snake");return Pf(e)}function Al(){return {}}var wt=class wt extends ot{static get table(){let t=Object.getOwnPropertyDescriptor(this,"table");return t&&"value"in t?t.value:xl(this)}static set table(t){Object.defineProperty(this,"table",{value:t,writable:true,enumerable:true,configurable:true});}static get primaryKey(){return El(this)}constructor(t){super(),t&&this.constructor.combineProps(this,t);}static from(t){let e=new this;return this.combineProps(e,t),e}static async all(t={}){return await this.dispatchModelManager(t).find({ignoreHooks:t.ignoreHooks?["afterFetch","beforeFetch"]:[]})}static query(t){return this.dispatchModelManager(t).query()}static async first(t){return this.dispatchModelManager(t).query().one({ignoreHooks:t?.ignoreHooks?["afterFetch","beforeFetch"]:[]})}static async find(t,e){return await this.dispatchModelManager(e).find(t)}static async findOneOrFail(t,e){return await this.dispatchModelManager(e).findOneOrFail(t)}static async findOne(t,e){return await this.dispatchModelManager(e).findOne(t)}static async findBy(t,e,r={}){return await this.dispatchModelManager(r).find({ignoreHooks:r.ignoreHooks?["afterFetch","beforeFetch"]:[],where:{[t]:e}})}static async findOneBy(t,e,r={}){return await this.dispatchModelManager(r).findOne({ignoreHooks:r.ignoreHooks?["afterFetch","beforeFetch"]:[],where:{[t]:e}})}static async findOneByPrimaryKey(t,e={}){return await this.dispatchModelManager(e).findOneByPrimaryKey(t)}static async refresh(t,e={}){let n=await this.dispatchModelManager(e).findOneByPrimaryKey(t);return n||null}static insert(t,e={}){return this.dispatchModelManager(e).insert(t,{ignoreHooks:e.ignoreHooks,returning:e.returning})}static insertMany(t,e={}){let o=this.dispatchModelManager(e);if(!t.length){let n=!e.returning||e.returning.length===0;return new J(()=>({sql:"",bindings:[]}),()=>"",async()=>n?void 0:[])}return o.insertMany(t,{ignoreHooks:e.ignoreHooks,returning:e.returning})}static async sync(t,e,r,o,n={}){if(Array.isArray(r)||(r=[r]),!r.length)return;let s=this,l=Gt(s).find(c=>c.columnName===t);if(!l)throw new N(`${s.name}::sync`,"RELATION_NOT_FOUND");if(l.type!=="manyToMany")throw new N(`${s.name}::sync`,"RELATION_NOT_MANY_TO_MANY");let d=U(l.leftForeignKey,n.caseConvention||s.databaseCaseConvention),u=U(l.rightForeignKey,n.caseConvention||s.databaseCaseConvention),f=r.map((c,h)=>({[d]:e[s.primaryKey],[u]:c[l.model.primaryKey],...o?o(c,h):{}}));class m extends wt{static get table(){return l.throughModel}}m.databaseCaseConvention="preserve",m.modelCaseConvention="preserve",await m.dispatchModelManager(n).insertMany(f);}static async updateRecord(t,e,r={}){try{let n=this.dispatchModelManager(r);if(!r.returning||r.returning.length===0){await n.updateRecord(t,e);return}return await n.updateRecord(t,e,{returning:r.returning})}catch(o){throw o instanceof N&&o.message==="MODEL_HAS_NO_PRIMARY_KEY"?new N(`${this.name}::updateRecord`,"MODEL_HAS_NO_PRIMARY_KEY"):o}}static async firstOrInsert(t,e,r={}){r.fullResponse||(r.fullResponse=false);let n=this.dispatchModelManager(r),s=await n.findOne({where:t});if(s)return r.fullResponse?{isNew:false,model:s}:s;let a=await n.insert(e,{returning:["*"]});return r.fullResponse?{isNew:true,model:a}:a}static async upsert(t,e,r={updateOnConflict:true}){let o=this,n=o.dispatchModelManager(r),s=Object.keys(t).length>0,a=!r.returning||r.returning.length===0,l=s?await n.findOne({ignoreHooks:r.ignoreHooks?["afterFetch","beforeFetch"]:[],where:t}):null;if(l){let d=l[o.primaryKey];if(r.updateOnConflict??true){if(a){await n.updateRecord(d,e);return}return await n.updateRecord(d,e,{returning:r.returning})}return a?void 0:l}return await n.insert(e,{ignoreHooks:r.ignoreHooks,returning:r.returning})}static async upsertMany(t,e,r={updateOnConflict:true}){if(!e.length)return [];let o=this,n=o.dispatchModelManager(r),s=!r.returning||r.returning.length===0;if(!e.every(m=>{let p=new Set(Object.keys(m));return t.every(c=>p.has(c))}))throw new N("Model::upsertMany","CONFLICT_COLUMNS_NOT_PRESENT_IN_DATA");let a=Object.keys(e[0]),l=await n.upsertMany(t,a,e,{ignoreHooks:r.ignoreHooks,returning:r.returning,updateOnConflict:r.updateOnConflict??true});if(s)return;let d=o.sqlInstance.getDbType();if(Rl.includes(d))return await ge(l,o,r.returning);let u=n.query();r.returning?.length&&u.select(...r.returning);let f=new Map;return t.forEach(m=>{e.forEach(p=>{f.set(m,[...f.get(m)||[],p[m]]);});}),u.where(m=>{t.forEach(p=>{m.orWhereIn(p,f.get(p)||[]);});}),u.many({ignoreHooks:r.ignoreHooks?["afterFetch","beforeFetch"]:[]})}static async deleteRecord(t,e){return this.dispatchModelManager(e).deleteRecord(t)}static async save(t,e={}){let r=this,o=r.primaryKey;if(!o)throw new N(r.name+"::save","MODEL_HAS_NO_PRIMARY_KEY");let n=t[o],s=n?{[o]:n}:{},a=t;return await r.upsert.call(this,s,a,{updateOnConflict:true,returning:e.returning,...e})}static async softDelete(t,e,r){let o=this,{column:n=o.softDeleteColumn,value:s=o.softDeleteValue}=e||{},a={[n]:s},l=o.dispatchModelManager({trx:r?.trx,connection:r?.connection});if(!r?.returning||r.returning.length===0){await l.updateRecord(t,a);return}return await l.updateRecord(t,a,{returning:r.returning})}static async truncate(t={}){return this.dispatchModelManager(t).query().truncate()}static async getTableInfo(){let t=this;return t.establishConnection(),t.sqlInstance.getTableInfo(t.table)}static async getIndexInfo(){let t=this;return t.establishConnection(),t.sqlInstance.getIndexInfo(t.table)}static async getTableSchema(){let t=this;return t.establishConnection(),t.sqlInstance.getTableSchema(t.table)}static combineProps(t,e){for(let r in e)Object.assign(t,{[r]:e[r]});}static getColumns(){return Yt(this)}static getRelations(){return Dl(this)}static getIndexes(){return vl(this)}static getUniques(){return kl(this)}static getChecks(){return Ql(this)}static column(t,...e){P(...e)(this.prototype,t);}static dateColumn(t,...e){P.date(...e)(this.prototype,t);}static datetimeColumn(t,...e){P.datetime(...e)(this.prototype,t);}static timestampColumn(t,...e){P.timestamp(...e)(this.prototype,t);}static timeColumn(t,...e){P.time(...e)(this.prototype,t);}static booleanColumn(t,...e){P.boolean(...e)(this.prototype,t);}static jsonColumn(t,...e){P.json(...e)(this.prototype,t);}static uuidColumn(t,...e){P.uuid(...e)(this.prototype,t);}static ulidColumn(t,...e){P.ulid(...e)(this.prototype,t);}static integerColumn(t,...e){P.integer(...e)(this.prototype,t);}static floatColumn(t,...e){P.float(...e)(this.prototype,t);}static incrementColumn(t,...e){P.increment(...e)(this.prototype,t);}static bigIncrementColumn(t,...e){P.bigIncrement(...e)(this.prototype,t);}static encryptionSymmetricColumn(t,...e){P.encryption.symmetric(...e)(this.prototype,t);}static encryptionAsymmetricColumn(t,...e){P.encryption.asymmetric(...e)(this.prototype,t);}static hasOne(t,...e){$l(...e)(this.prototype,t);}static hasMany(t,...e){Il(...e)(this.prototype,t);}static belongsTo(t,...e){Pl(...e)(this.prototype,t);}static manyToMany(t,...e){Ol(...e)(this.prototype,t);}static establishConnection(){let t=$e.instance;if(!t)throw new N("sqlInstance not initialized, did you defined it in SqlDataSource.connect static method?","CONNECTION_NOT_ESTABLISHED");this.sqlInstance=t;}static dispatchModelManager(t){let e;if(t?.connection)e=t.connection.getModelManager(this);else if(t?.trx)e=t.trx.sql.getModelManager(this);else {let r=this;r.establishConnection(),e=r.sqlInstance.getModelManager(r);}return t?.replicationMode&&e.setReplicationMode(t.replicationMode),e}};wt.softDeleteColumn="deletedAt",wt.softDeleteValue=rt();var Ht=wt;var be=class{constructor(t,e){this.model=Ht;this.columnName="";this.relatedModel="";this.model=t,this.columnName=e,this.relatedModel=this.model.table;}};var zt=class extends be{constructor(t,e,r){super(t,e),this.foreignKey=r,this.type="belongsTo";}};var Zt=class extends be{constructor(e,r,o){super(e,r);this.type="hasMany";this.foreignKey=o,this.type="hasMany";}};var Xt=class extends be{constructor(t,e,r){super(t,e),this.foreignKey=r,this.type="hasOne";}};var er=class extends be{constructor(e,r,o){super(e,r);this.type="manyToMany";this.primaryModel=o.primaryModel,this.relatedModel=e.table,this.throughModel=o.throughModel,this.leftForeignKey=o.leftForeignKey,this.rightForeignKey=o.rightForeignKey;}};var tr=Symbol("columns"),nt=Symbol("primaryKey"),ae=Symbol("relations"),Bl=Symbol("indexes"),Kl=Symbol("uniques"),Ll=Symbol("checks"),Ie=i=>`${Pf.singular(i)}_id`,uo=(i,t)=>`idx_${i}_${t}`,le=(i,t)=>`uq_${i}_${t}`,G=(i,t,e)=>`fk_${i}_${t}${e?`_${e}`:""}`,Oe=(i,t)=>`pk_${i}_${t}`;function P(i={primaryKey:false}){let t=i?.primaryKey??false;return (e,r)=>{let o=e.constructor;if(t){if(W.getMetadata(nt,e))throw new N("ModelDecorator::column","MULTIPLE_PRIMARY_KEYS_NOT_ALLOWED");W.defineMetadata(nt,r,e),W.defineMetadata(nt,r,e.constructor);}let n=i.databaseName??U(r,o.databaseCaseConvention),s={columnName:r,serialize:i.serialize,prepare:i.prepare,hidden:i.hidden,isPrimary:t,primaryKeyConstraintName:i.primaryKeyConstraintName??Oe(o.table,r),autoUpdate:i.autoUpdate,databaseName:n,openApi:i.openApi,type:i.type,length:i?.length,precision:i?.precision,scale:i?.scale,withTimezone:i?.withTimezone,constraints:{nullable:i.nullable,default:i.default}},a=W.getMetadata(tr,e)||[];a.push(s),W.defineMetadata(tr,a,e);}}P.primary=Of;P.date=Yf;P.datetime=Gf;P.timestamp=zf;P.time=Zf;P.boolean=Hf;P.json=Xf;P.uuid=Qf;P.ulid=Bf;P.integer=Ef;P.bigInteger=Wf;P.float=Df;P.decimal=Uf;P.increment=vf;P.bigIncrement=kf;P.string=Kf;P.text=Lf;P.binary=Ff;P.enum=jf;P.encryption={symmetric:Vf,asymmetric:Jf};function Of(i={}){return P({...i,primaryKey:true})}function Df(i={}){return P({type:"float",...i,serialize:t=>{if(t!==void 0)return t===null?null:typeof t=="number"?t:typeof t=="string"?Number.parseInt(t):Number.parseFloat(t)},openApi:{type:"number",format:"float",description:"A floating point number",...i.openApi||{}}})}function Ef(i={}){return P({type:"integer",...i,serialize:t=>{if(t!==void 0)return t===null?null:typeof t=="number"?t:typeof t=="string"?+t:Number.parseInt(t)},openApi:{type:"integer",format:"int64",description:"An integer number",...i.openApi||{}}})}function vf(i={}){return P({type:"increment",...i,primaryKey:true,nullable:false,serialize:t=>{if(t!==void 0)return t===null?null:typeof t=="number"?t:Number.parseInt(t)},openApi:{type:"integer",format:"int64",description:"An auto-incrementing integer number",...i.openApi||{}}})}function kf(i={}){return P({type:"bigIncrement",...i,primaryKey:true,nullable:false,serialize:t=>{if(t!==void 0)return t===null?null:typeof t=="number"?t:Number.parseInt(t)},openApi:{type:"integer",format:"int64",description:"An auto-incrementing bigint number",...i.openApi||{}}})}function Qf(i={}){return P({type:"uuid",...i,prepare:t=>t||Se.randomUUID(),openApi:{type:"string",format:"uuid",description:"uuid (Universally Unique Identifier)",...i.openApi||{}}})}function Bf(i={}){return P({type:"ulid",...i,prepare:t=>t||Cl(),openApi:{type:"string",format:"ulid",description:"ulid (Universally Unique Lexicographically Sortable Identifier)",...i.openApi||{}}})}function Kf(i={}){return P({type:"string",...i,openApi:{type:"string",description:"A string value",...i.openApi||{}}})}function Lf(i={}){return P({type:"longtext",...i,openApi:{type:"string",description:"A text value",...i.openApi||{}}})}function Wf(i={}){return P({type:"bigint",...i,serialize:t=>{if(t!==void 0){if(t===null)return null;if(typeof t=="number")return t;if(typeof t=="string")return Number.parseInt(t);if(typeof t=="bigint")return Number(t)}},openApi:{type:"integer",format:"int64",description:"A bigint number",...i.openApi||{}}})}function Uf(i={}){return P({type:"decimal",precision:i.precision??10,scale:i.scale??2,...i,serialize:t=>{if(t!==void 0)return t===null?null:typeof t=="number"?t:Number.parseFloat(t)},openApi:{type:"number",format:"double",description:"A decimal number",...i.openApi||{}}})}function Ff(i={}){return P({type:"binary",...i,openApi:{type:"string",format:"binary",description:"Binary data",...i.openApi||{}}})}function jf(i,t={}){return P({type:i,...t,openApi:{type:"string",enum:i,description:"An enum value",...t.openApi||{}}})}function Vf(i){return P({...i,prepare:t=>t&&wl(i.key,t),serialize:t=>t&&Sl(i.key,t)})}function Jf(i){return P({...i,prepare:t=>t&&ql(i.publicKey,t),serialize:t=>t&&Ml(i.privateKey,t)})}function Hf(i={}){return P({type:"boolean",...i,serialize:t=>!!t,prepare:t=>!!t,openApi:{type:"boolean",description:"A boolean value",...i.openApi||{}}})}function Yf(i={}){let{timezone:t="UTC",autoUpdate:e=false,autoCreate:r=false,prepare:o,serialize:n,...s}=i,a=d=>d?e?re(new Date,"DATE_ONLY",t):typeof d=="string"?d:re(d,"DATE_ONLY",t):r?re(new Date,"DATE_ONLY",t):null,l=d=>{if(d!==void 0)return d===null?null:Nt(d,void 0,t)};return P({type:"date",...s,autoUpdate:e,prepare:d=>{let u=a(d);return o?o(u):u},serialize:d=>{let u=l(d);return n?n(u):u},openApi:{type:"string",format:"date",description:"YYYY-MM-DD",...s.openApi||{}}})}function Gf(i={}){let{timezone:t,withTimezone:e,autoUpdate:r=false,autoCreate:o=false,prepare:n,serialize:s,...a}=i,l=t??"UTC",d=e??t!==void 0,u=m=>m?r?re(new Date,"ISO",l):typeof m=="string"?m:re(m,"ISO",l):o?re(new Date,"ISO",l):null,f=m=>{if(m!==void 0)return m===null?null:Nt(m,void 0,l)};return P({type:"datetime",...a,withTimezone:d,autoUpdate:r,prepare:m=>{let p=u(m);return n?n(p):p},serialize:m=>{let p=f(m);return s?s(p):p},openApi:{type:"string",format:"date-time",description:"YYYY-MM-DD HH:mm:ss",...a.openApi||{}}})}function zf(i={}){let{timezone:t,withTimezone:e,autoUpdate:r=false,autoCreate:o=false,prepare:n,serialize:s,...a}=i,l=t??"UTC",d=e??t!==void 0,u=m=>m?r?re(new Date,"TIMESTAMP",l):typeof m=="string"?m:re(m,"TIMESTAMP",l):o?re(new Date,"TIMESTAMP",l):null,f=m=>{if(m!==void 0)return m===null?null:Nt(m,void 0,l)};return P({type:"timestamp",...a,withTimezone:d,autoUpdate:r,prepare:m=>{let p=u(m);return n?n(p):p},serialize:m=>{let p=f(m);return s?s(p):p},openApi:{type:"string",format:"date-time",description:"Unix timestamp",...a.openApi||{}}})}function Zf(i={}){let{timezone:t="UTC",autoUpdate:e=false,autoCreate:r=false,prepare:o,serialize:n,...s}=i,a=d=>d?e?re(new Date,"TIME_ONLY",t):typeof d=="string"?d:re(d,"TIME_ONLY",t):r?re(new Date,"TIME_ONLY",t):null,l=d=>{if(d!==void 0)return d===null?null:Nt(d,void 0,t)};return P({type:"time",...s,autoUpdate:e,prepare:d=>{let u=a(d);return o?o(u):u},serialize:d=>{let u=l(d);return n?n(u):u},openApi:{type:"string",format:"time",description:"HH:mm:ss",...s.openApi||{}}})}function Xf(i={}){return P({type:"jsonb",...i,serialize:t=>typeof t=="string"?JSON.parse(t):t,prepare:t=>typeof t!="string"?JSON.stringify(t):t,openApi:{type:"object",description:"A JSON object",...i.openApi||{}}})}function Yt(i){try{return W.getMetadata(tr,i.prototype)||[]}catch{return []}}function Pl(i,t,e){return((r,o)=>{let n=()=>Ie(i().table),s=()=>{let d=r.constructor.table,u=t||n();return G(d,u,i().table)},a={type:"belongsTo",columnName:o,model:i,foreignKey:t?String(t):n,constraintName:e?.constraintName??s,onUpdate:e?.onUpdate,onDelete:e?.onDelete},l=W.getMetadata(ae,r)||[];l.push(a),W.defineMetadata(ae,l,r);})}function $l(i,t){return((e,r)=>{let o=()=>Ie(e.constructor.table),n={type:"hasOne",columnName:r,model:i,constraintName:"None",foreignKey:t?String(t):o},s=W.getMetadata(ae,e)||[];s.push(n),W.defineMetadata(ae,s,e);})}function Il(i,t){return((e,r)=>{let o=()=>Ie(e.constructor.table),n={type:"hasMany",columnName:r,model:i,constraintName:"None",foreignKey:t?String(t):o},s=W.getMetadata(ae,e)||[];s.push(n),W.defineMetadata(ae,s,e);})}function Ol(i,t,e,r){return((o,n)=>{let{leftForeignKey:s,rightForeignKey:a}=e??{},l=typeof t!="string",d=typeof t=="string"?t:()=>t().table,u=o.constructor.table,f=()=>Ie(u),m=()=>Ie(i().table),p=()=>G(q(d),s?String(s):f()),c={type:"manyToMany",columnName:n,model:i,constraintName:r?.constraintName??p,foreignKey:s?String(s):f,onDelete:r?.onDelete,onUpdate:r?.onUpdate,manyToManyOptions:{primaryModel:u,throughModel:d,leftForeignKey:s?String(s):f,rightForeignKey:a?String(a):m,wasModelProvided:l}},h=W.getMetadata(ae,o)||[];h.push(c),W.defineMetadata(ae,h,o);})}function Dl(i){return W.getMetadata(ae,i.prototype)||[]}function Gt(i){return (W.getMetadata(ae,i.prototype)||[]).map(e=>{let{type:r,model:o,columnName:n,foreignKey:s}=e,a=q(s),l=o();switch(r){case "belongsTo":return new zt(l,n,a);case "hasOne":return new Xt(l,n,a);case "hasMany":return new Zt(l,n,a);case "manyToMany":if(!e.manyToManyOptions)throw new N("ModelDecorator::getRelations","MANY_TO_MANY_RELATION_MUST_HAVE_A_THROUGH_MODEL");let d=o();return new er(d,n,{primaryModel:e.manyToManyOptions.primaryModel,throughModel:q(e.manyToManyOptions.throughModel),leftForeignKey:q(e.manyToManyOptions.leftForeignKey),rightForeignKey:q(e.manyToManyOptions.rightForeignKey)});default:throw new N("ModelDecorator::getRelations",`UNKNOWN_RELATION_TYPE_${r}`)}})}function El(i){return W.getMetadata(nt,i)||W.getMetadata(nt,i.prototype)}function vl(i){return W.getMetadata(Bl,i.prototype)||[]}function kl(i){return W.getMetadata(Kl,i.prototype)||[]}function Ql(i){return W.getMetadata(Ll,i.prototype)||[]}var ey=i=>{if(i==null||typeof i!="object"||i instanceof Date)return false;if(Array.isArray(i))return true;let t=Object.getPrototypeOf(i);return t===Object.prototype||t===null},y=class{constructor(t){this.model=t;let e=Yt(t);this.modelColumnsMap=new Map(e.map(r=>[r.columnName,r]));}formatStringColumn(t,e){if(e==="*")return "*";if(e.includes(".")){let[n,s]=e.split(".");if(s==="*")switch(t){case "mysql":case "mariadb":return `\`${n}\`.*`;case "postgres":case "cockroachdb":case "sqlite":case "oracledb":return `"${n}".*`;case "mssql":return `[${n}].*`;default:throw new Error(`Unsupported database type: ${t}`)}let a=this.modelColumnsMap.get(s)?.databaseName??U(s,this.model.databaseCaseConvention);switch(t){case "mysql":case "mariadb":return `\`${n}\`.\`${a}\``;case "postgres":case "cockroachdb":case "sqlite":case "oracledb":return `"${n}"."${a}"`;case "mssql":return `[${n}].[${a}]`;default:throw new Error(`Unsupported database type: ${t}`)}}let o=this.modelColumnsMap.get(e)?.databaseName??U(e,this.model.databaseCaseConvention);switch(t){case "mysql":case "mariadb":return `\`${o}\``;case "postgres":case "cockroachdb":case "sqlite":case "oracledb":return `"${o}"`;case "mssql":return `[${o}]`;default:throw new Error(`Unsupported database type: ${t}`)}}formatStringTable(t,e){e=e.replace(/\s+/g," ").trim();let r="";switch(e.toLowerCase().includes(" as ")&&([e,r]=e.split(" as ")),t){case "mysql":case "mariadb":return `\`${e}\`${r?` as \`${r}\``:""}`;case "postgres":case "cockroachdb":case "sqlite":case "oracledb":return `"${e}"${r?` as "${r}"`:""}`;case "mssql":return `[${e}]${r?` as [${r}]`:""}`;default:return `${e}${r?` as ${r}`:""}`}}async prepareColumns(t,e,r="insert"){if(!t.length)return {columns:t,values:e};let o=[],n=[];for(let s=0;s<t.length;s++){let a=t[s],l=e[s];a!=="*"&&(o.push(a),n.push(l));}await Promise.all(o.map(async(s,a)=>{let l=o[a],d=n[a],u=this.modelColumnsMap.get(l),f=d;u?r==="insert"&&u.prepare?f=await u.prepare(d):r==="update"&&(f=await u.prepare?.(d)??d):ey(d)&&(f=JSON.stringify(d)),n[a]=f;}));for(let s of this.modelColumnsMap.keys())if(!o.includes(s)){let a=this.modelColumnsMap.get(s);if(!a||r==="insert"&&s===this.model.primaryKey&&!a.prepare)continue;if(r==="insert"||a.autoUpdate){o.push(s);let l=a.prepare?await a.prepare(void 0):void 0;n.push(l??void 0);}}return {columns:o,values:n}}getFromForWriteOperations(t,e){if(typeof e.table=="string")return this.formatStringTable(t,e.table);let r=new T(this.model,t);return Array.isArray(e.table)?`(${r.parse(e.table).sql})`:`(${r.parse([e.table]).sql})`}};var mo=class{toSql(t){let e=t,o=new y(this.model).formatStringTable("mssql",e.table);if(!e.children||!e.children.length)return {sql:"",bindings:[]};if(e.children.length===1&&e.children[0]instanceof tt){let u=e.children[0];return {sql:`EXEC sp_rename '${e.table}', '${u.newName}'`,bindings:[]}}let n=new T(this.model,"mssql"),s=[],a=[];for(let u of e.children){let{sql:f,bindings:m}=n.parse([u]);s.push(f.trim()),a.push(...m);}let l=s.join(", ");return {sql:`${o} ${l}`,bindings:a}}},Wl=new mo;var co=class{toSql(t){return {sql:`drop column [${t.column}]`,bindings:[]}}},Ul=new co;var po=class{toSql(t){return {sql:`drop constraint [${t.constraintName}]`,bindings:[]}}},Fl=new po;var fo=class{toSql(t){return {sql:`drop constraint DF_${t.column}`,bindings:[]}}},jl=new fo;var yo=class{toSql(t){let e=t;return b.warn("MSSQL requires the full column type when altering nullability. This operation may need manual adjustment."),{sql:`alter column [${e.column}] null`,bindings:[]}}},Vl=new yo;var ho=class{toSql(t){return {sql:`drop constraint [${`pk_${t.table}`}]`,bindings:[]}}},Jl=new ho;var go=class{toSql(t){let e=t;return {sql:`sp_rename '${this.model?.table??""}.${e.oldName}', '${e.newName}', 'COLUMN'`,bindings:[]}}},Hl=new go;var bo=class{toSql(t){return {sql:`[${t.newName}]`,bindings:[]}}},Yl=new bo;var $=class extends S{constructor(e){super("raw",true);this.canKeywordBeSeenMultipleTimes=true;this.chainsWith=" ";this.currParamIndex=0;this.isRawValue=true;this.folder="raw";this.file="raw";this.rawValue=e;}};var To=class{toSql(t){let e=t,r;return e.defaultValue instanceof $?r=e.defaultValue.rawValue:e.defaultValue==="NULL"||e.defaultValue===null?r="null":e.defaultValue==="TRUE"?r="1":e.defaultValue==="FALSE"?r="0":typeof e.defaultValue=="string"&&e.defaultValue!=="null"&&e.defaultValue!=="1"&&e.defaultValue!=="0"?r=`'${e.defaultValue}'`:r=String(e.defaultValue),{sql:`add constraint DF_${e.column} default ${r} for [${e.column}]`,bindings:[]}}},Gl=new To;var No=class{toSql(t){let e=t;return b.warn("MSSQL requires the full column type when altering nullability. This operation may need manual adjustment."),{sql:`alter column [${e.column}] not null`,bindings:[]}}},zl=new No;var wo=class{toSql(t){return {sql:"",bindings:[]}}},Zl=new wo;var So=class{toSql(t){let e=t;if(e.isRawValue)return {sql:e.column,bindings:[]};let o=new y(this.model).formatStringColumn("mssql",q(e.column)),n=e.dataType.toLowerCase();if(n==="char"){let s=e.length??1;return {sql:`${o} char(${s})`,bindings:[]}}if(n==="varchar"){let s=e.length??255;return {sql:`${o} varchar(${s})`,bindings:[]}}if(n==="text"||n==="longtext"||n==="mediumtext"||n==="tinytext")return {sql:`${o} varchar(max)`,bindings:[]};if(n==="uuid")return {sql:`${o} uniqueidentifier`,bindings:[]};if(n==="ulid")return {sql:`${o} varchar(26)`,bindings:[]};if(n==="bigint")return e.autoIncrement?{sql:`${o} bigint identity(1,1)`,bindings:[]}:{sql:`${o} bigint`,bindings:[]};if(n==="tinyint")return {sql:`${o} tinyint`,bindings:[]};if(n==="smallint")return {sql:`${o} smallint`,bindings:[]};if(n==="mediumint")return {sql:`${o} int`,bindings:[]};if(n==="float"||n==="real")return {sql:`${o} real`,bindings:[]};if(n==="double")return {sql:`${o} float`,bindings:[]};if(n==="decimal"||n==="numeric"){let s=e.precision??10,a=e.scale??0;return {sql:`${o} decimal(${s}, ${a})`,bindings:[]}}if(n==="date")return {sql:`${o} date`,bindings:[]};if(n==="year")return {sql:`${o} smallint`,bindings:[]};if(n==="time"){let s=typeof e.precision=="number"?`(${e.precision})`:"";return {sql:`${o} time${s}`,bindings:[]}}if(n==="datetime"||n==="timestamp"){let s=typeof e.precision=="number"?`(${e.precision})`:"",a=`${o} datetime2${s}`;return e.autoCreate&&(a+=" default current_timestamp"),{sql:a,bindings:[]}}if(n==="boolean"||n==="bool")return {sql:`${o} bit`,bindings:[]};if(n==="bytea"||n==="binary"||n==="varbinary"||n==="blob"||n==="longblob"||n==="mediumblob"||n==="tinyblob")return {sql:`${o} varbinary(max)`,bindings:[]};if(n==="json"||n==="jsonb")return {sql:`${o} nvarchar(max)`,bindings:[]};if(n==="enum"){if(e.enumValues&&e.enumValues.length>0){let s=e.enumValues.map(a=>`'${a}'`).join(", ");return {sql:`${o} varchar(255) check (${o} in (${s}))`,bindings:[]}}return {sql:`${o} varchar(255)`,bindings:[]}}return n==="integer"||n==="int"?e.autoIncrement?{sql:`${o} int identity(1,1)`,bindings:[]}:{sql:`${o} int`,bindings:[]}:n==="geometry"?{sql:`${o} geometry`,bindings:[]}:n==="point"?{sql:`${o} geometry`,bindings:[]}:n==="linestring"?{sql:`${o} geometry`,bindings:[]}:n==="polygon"?{sql:`${o} geometry`,bindings:[]}:n==="multipoint"?{sql:`${o} geometry`,bindings:[]}:{sql:`${o} ${n}${e.length?`(${e.length})`:""}`,bindings:[]}}},Xl=new So;var qo=class{toSql(t){return {sql:"",bindings:[]}}},ed=new qo;var Mo=class{toSql(t){let e=t,r=new y(this.model);if(e.constraintType==="primary_key"){if(e.columns&&e.columns.length){let o=e.constraintName?`constraint [${e.constraintName}] `:"",n=(e.columns??[]).map(s=>r.formatStringColumn("mssql",q(s))).join(", ");return {sql:`${o}primary key (${n})`,bindings:[]}}return {sql:"primary key",bindings:[]}}if(e.constraintType==="unique"){if(e.columns&&e.columns.length>0){let o=e.columns??[],n=e.constraintName?`constraint [${e.constraintName}] `:"",s=o.map(a=>r.formatStringColumn("mssql",q(a))).join(", ");return e.constraintName?{sql:`${n}unique (${s})`,bindings:[]}:{sql:"unique",bindings:[]}}return {sql:"unique",bindings:[]}}if(e.constraintType==="not_null")return {sql:"not null",bindings:[]};if(e.constraintType==="null")return {sql:"null",bindings:[]};if(e.constraintType==="default"){if(e.defaultValue!==void 0){let o=e.defaultValue;return o instanceof $?{sql:`default ${o.rawValue}`,bindings:[]}:o==="NULL"||o===null?{sql:"default null",bindings:[]}:o==="TRUE"?{sql:"default 1",bindings:[]}:o==="FALSE"?{sql:"default 0",bindings:[]}:typeof o=="string"?{sql:`default '${o}'`,bindings:[]}:{sql:`default ${o}`,bindings:[]}}return {sql:"default null",bindings:[]}}if(e.constraintType==="foreign_key"){if(!e.columns||!e.columns.length)return {sql:"",bindings:[]};let o=e.columns.map(d=>r.formatStringColumn("mssql",q(d))).join(", ");if(!e.references)return {sql:"",bindings:[]};let n=r.formatStringTable("mssql",e.references.table),s=e.references.columns.map(d=>r.formatStringColumn("mssql",q(d))).join(", "),l=`${e.constraintName?`constraint [${e.constraintName}] `:""}foreign key (${o}) references ${n}(${s})`;return e.onDelete&&(l+=` on delete ${e.onDelete}`),e.onUpdate&&(l+=` on update ${e.onUpdate}`),{sql:l,bindings:[]}}return e.constraintType==="check"?e.checkExpression?{sql:`${e.constraintName?`constraint [${e.constraintName}] `:""}check (${e.checkExpression})`,bindings:[]}:{sql:"",bindings:[]}:{sql:"",bindings:[]}}},td=new Mo;var Co=class{toSql(t){let e=t,o=new y(this.model).formatStringTable("mssql",e.table);if(!e.children||!e.children.length)return {sql:`${o} ()`,bindings:[]};let n=new T(this.model,"mssql"),s=[],a=[];for(let c of e.children){let{sql:h,bindings:g}=n.parse([c]);if(c.folder==="constraint"){let w=s.pop()??"",M=h;if(/not null/i.test(M)||/null/i.test(M)||/default/i.test(M)){let _=`${w} ${M}`.trim();_=_.replace(/(references\s+\[[^\]]+\]\s*\([^)]*\))\s+not null/i,"not null $1"),s.push(_),a.push(...g);continue}s.push(w),s.push(M),a.push(...g);continue}s.push(h),a.push(...g);}for(let c of e.namedConstraints){let{sql:h,bindings:g}=n.parse([c]);s.push(h),a.push(...g);}let l=s.join(", "),d=[];e.dataCompression&&d.push(`DATA_COMPRESSION = ${e.dataCompression}`);let u=e.onFilegroup?` ON [${e.onFilegroup}]`:"",f=e.textImageOn?` TEXTIMAGE_ON [${e.textImageOn}]`:"",m=d.length>0?` WITH (${d.join(", ")})`:"";return {sql:`${o} (${l})${m}${u}${f}`,bindings:a}}},rd=new Co;var _o=class{toSql(t){let e=t;return e.isRawValue&&typeof e.fromNode.table=="string"?{sql:e.fromNode.table,bindings:[]}:{sql:new y(this.model).getFromForWriteOperations("mssql",e.fromNode),bindings:[]}}},od=new _o;var Ro=class{toSql(t){return {sql:"",bindings:[]}}},nd=new Ro;var xo=class{toSql(t){return b.warn("MSSQL does not support DISTINCT ON. This clause will be ignored."),{sql:"",bindings:[]}}},sd=new xo;var Ao=class{toSql(t){let e=t,o=new y(this.model).formatStringTable("mssql",e.table);return {sql:`${e.ifExists?"if exists ":""}${o}`,bindings:[]}}},id=new Ao;var Po=class{toSql(t){return {sql:`-- MSSQL does not support extensions (extension: ${t.extensionName})`,bindings:[]}}},ad=new Po;var $o=class{toSql(t){let e=t;if(typeof e.table=="string"){let a=new y(this.model);return e.alias&&e.alias.length>0?{sql:`${a.formatStringTable("mssql",e.table)} as [${e.alias}]`,bindings:[]}:{sql:a.formatStringTable("mssql",e.table),bindings:[]}}let r=Array.isArray(e.table)?e.table:[e.table],n=new T(this.model,"mssql").parse(r),s=e.alias&&e.alias.length?` as [${e.alias}]`:"";return {sql:`(${n.sql})${s}`,bindings:n.bindings}}},ld=new $o;var Io=class{toSql(t){let e=t;return e.isRawValue?{sql:e.column,bindings:[]}:{sql:new y(this.model).formatStringColumn("mssql",e.column),bindings:[]}}},dd=new Io;var Oo=class{toSql(t){let e=t;if(e.isRawValue)return {sql:e.column,bindings:e.value};let r=e.currParamIndex,o="",n=[];if(!(e.value instanceof S)&&!Array.isArray(e.value)&&(o=`${new y(this.model).formatStringColumn("mssql",e.column)} ${e.operator} @${r}`,n=[e.value]),Array.isArray(e.value)){let s=e.value.map((a,l)=>`@${r+l}`).join(", ");o=`${new y(this.model).formatStringColumn("mssql",e.column)} ${e.operator} (${s})`,n=e.value;}return e.isNegated&&(o=`not (${o})`),{sql:o.trim(),bindings:n}}},ud=new Oo;var Do=class{toSql(t){let e=t,o=new y(this.model).formatStringTable("mssql",e.table),n=e.columns.map(a=>`[${a}]`).join(", ");return {sql:`${e.unique?"unique ":""}[${e.indexName}] on ${o} (${n})`,bindings:[]}}},md=new Do;var Eo=class{toSql(t){let e=t;return {sql:`[${e.indexName}] on [${e.table}]`,bindings:[]}}},cd=new Eo;var vo=class{toSql(t){let e=t;if(e.isRawValue)return {sql:e.fromNode.table,bindings:[]};let r=new y(this.model),o=r.getFromForWriteOperations("mssql",e.fromNode);if(!e.records.length)return {sql:o,bindings:[]};let n=e.records[0],s=Object.keys(n).filter(m=>n[m]!==void 0);if(!s.length)return {sql:o,bindings:[]};let a=s.map(m=>r.formatStringColumn("mssql",m)).join(", "),l=[],d=[],u=e.currParamIndex;for(let m of e.records){let p=s.map(h=>m[h]),c=[];for(let h of p)h instanceof $?c.push(h.rawValue):(l.push(h),c.push(`@${u++}`));d.push(`(${c.join(", ")})`);}let f=`${o} (${a}) values ${d.join(", ")}`;if(!e.disableReturning)if(e.returning&&e.returning.length){let m=e.returning.map(p=>`inserted.${r.formatStringColumn("mssql",p)}`).join(", ");f=f.replace(") values",`) output ${m} values`);}else {let m=this.getOutputColumns(s,r);f=f.replace(") values",`) output ${m} values`);}return {sql:f,bindings:l}}getOutputColumns(t,e){let r=[...t],o=this.model.primaryKey;return o&&!t.includes(o)&&r.push(o),r.map(n=>`inserted.${e.formatStringColumn("mssql",n)}`).join(", ")}},pd=new vo;var ko=class{toSql(t){let e=t;if(e.isRawValue)return {sql:e.table,bindings:[]};let r=new y(this.model),o=e.left;o.includes(".")||(o=`${e.table}.${o}`);let n=e.right;n.includes(".")||(n=`${this.model.table}.${n}`);let s=r.formatStringColumn("mssql",o),a=r.formatStringColumn("mssql",n),d=`${r.formatStringTable("mssql",e.table)} on ${s} ${e.on?.operator} ${a}`,u=[];if(e.additionalConditions&&e.additionalConditions.length>0){let f=new T(this.model,"mssql");for(let m of e.additionalConditions){let p=f.parse([m]);if(p.sql){let c=p.sql.replace(/^where\s+/i,"");d+=` and ${c}`,u.push(...p.bindings);}}}return {sql:d,bindings:u}}},fd=new ko;var Qo=class{toSql(t){let e=t;return {sql:`fetch next @${e.currParamIndex} rows only`,bindings:[e.limit]}}},yd=new Qo;var Bo=class{toSql(t){return {sql:"",bindings:[]}}},hd=new Bo;var Ko=class{toSql(t){let e=t;return {sql:`offset @${e.currParamIndex} rows`,bindings:[e.offset]}}},gd=new Ko;var Lo=class{toSql(t){let e=t;return e.isRawValue?{sql:e.table,bindings:[]}:(b.warn("MSSQL does not support ON CONFLICT or ON DUPLICATE KEY. Use MERGE statement for upsert operations. This clause will be ignored. Consider using raw queries for MSSQL upserts."),{sql:"",bindings:[]})}},bd=new Lo;var Wo=class{toSql(t){let e=t;if(e.isRawValue)return {sql:e.column,bindings:[]};let r=new y(this.model).formatStringColumn("mssql",e.column),o=e.direction.toLowerCase();return {sql:`${r} ${o}`,bindings:[]}}},Td=new Wo;var Uo=class{toSql(t){return {sql:t.rawValue,bindings:[]}}},Nd=new Uo;var Fo=class{toSql(t){return {sql:`SELECT
|
|
135
|
+
Valid database types are: [mongo, postgres, cockroachdb, mysql, mariadb, sqlite]`,`UNSUPPORTED_DATABASE_TYPE_${this.type}`)}let e=Kt(this.logs);e?.customLogger&&b.setCustomLogger(e.customLogger);}handleCockroachdbSource(t){this.host=t?.host||O.DB_HOST,this.port=+t?.port||+O.DB_PORT,this.username=t?.username||O.DB_USER,this.password=t?.password||O.DB_PASSWORD,this.database=t?.database||O.DB_DATABASE,this.logs=t?.logs||O.DB_LOGS||false,this.port||(this.port=26257);}handlePostgresSource(t){this.host=t?.host||O.DB_HOST,this.port=+t?.port||+O.DB_PORT,this.username=t?.username||O.DB_USER,this.password=t?.password||O.DB_PASSWORD,this.database=t?.database||O.DB_DATABASE,this.logs=t?.logs||O.DB_LOGS||false,this.port||(this.port=5432);}handleMysqlSource(t){this.host=t?.host||O.DB_HOST,this.port=+t?.port||+O.DB_PORT,this.username=t?.username||O.DB_USER,this.password=t?.password||O.DB_PASSWORD,this.database=t?.database||O.DB_DATABASE,this.logs=t?.logs||O.DB_LOGS||false,this.port||(this.port=3306);}handleSqliteSource(t){this.database=t?.database||O.DB_DATABASE||":memory:",this.logs=t?.logs||O.DB_LOGS||false;}handleMongoSource(t){this.url=t?.url||O.MONGO_URL,this.logs=t?.logs||O.MONGO_LOGS||false;}handleMssqlSource(t){this.host=t?.host||O.DB_HOST,this.port=+t?.port||+O.DB_PORT,this.username=t?.username||O.DB_USER,this.password=t?.password||O.DB_PASSWORD,this.database=t?.database||O.DB_DATABASE,this.logs=t?.logs||O.DB_LOGS||false,this.port||(this.port=1433);}handleOracleDBSource(t){this.host=t?.host||O.DB_HOST,this.port=+t?.port||+O.DB_PORT,this.username=t?.username||O.DB_USER,this.password=t?.password||O.DB_PASSWORD,this.database=t?.database||O.DB_DATABASE,this.logs=t?.logs||O.DB_LOGS||false,this.port||(this.port=1521);}};var mf=i=>{let{required:t,...e}=i.openApi||{},r={...e,type:i.openApi?.type||"string",description:i.openApi?.description??`Property: ${i.columnName}`};return i.openApi?.type?{...r,type:i.openApi.type}:Array.isArray(i.type)?{...r,type:"string",enum:i.type}:i.type==="date"||i.type==="datetime"||i.type==="timestamp"||i.type==="time"?{...r,type:"string",format:"date-time"}:i.type==="boolean"?{...r,type:"boolean"}:i.type==="integer"||i.type==="tinyint"||i.type==="smallint"||i.type==="mediumint"||i.type==="increment"?{...r,type:"integer",format:"int32"}:i.type==="biginteger"||i.type==="bigIncrement"?{...r,type:"integer",format:"int64"}:i.type==="float"||i.type==="real"?{...r,type:"number",format:"float"}:i.type==="double"?{...r,type:"number",format:"double"}:i.type==="decimal"||i.type==="numeric"?{...r,type:"number"}:i.type==="json"||i.type==="jsonb"?{...r,type:"object"}:i.type==="uuid"?{...r,type:"string",format:"uuid"}:i.type==="ulid"?{...r,type:"string",format:"ulid"}:i.type==="string"||i.type==="char"||i.type==="varchar"||i.type==="text"||i.type==="longtext"||i.type==="mediumtext"||i.type==="tinytext"?{...r,type:"string"}:i.type==="blob"||i.type==="binary"||i.type==="varbinary"||i.type==="tinyblob"||i.type==="mediumblob"||i.type==="longblob"?{...r,type:"string",format:"binary"}:i.type==="year"?{...r,type:"integer",format:"int32"}:r},cf=i=>i.openApi?.required??false,pf=i=>{let t=i.getColumns(),e={};for(let r of t)r.hidden||(e[r.columnName]=mf(r));return e},ff=i=>{let t=i.getColumns(),e=[];for(let r of t)cf(r)&&e.push(r.columnName);return e||[]},yf=i=>{let t=pf(i),e=ff(i);return {type:"object",properties:t,required:e.length?e:[]}};var yl=i=>i.map(t=>({...yf(t),modelName:t.name,$id:t.name}));var Xr=(i,t)=>{let e=Se.createHash("sha256"),r=i;return e.update(r),e.digest("hex")};var eo=i=>{switch(i){case "mysql":return "mysql";case "mariadb":return "mariadb";case "postgres":case "cockroachdb":return "postgresql";case "sqlite":return "sqlite";case "mssql":return "transactsql";case "oracledb":return "plsql";default:return "sql"}},Jt=i=>{if(i==null)return "NULL";if(i instanceof Date)return `'${i.toISOString()}'`;let t=typeof i;return t==="boolean"?i?"TRUE":"FALSE":t==="number"&&Number.isFinite(i)||t==="bigint"?String(i):t==="string"?`'${i.replace(/'/g,"''")}'`:Array.isArray(i)||t==="object"&&Object.keys(i).length>0?`'${JSON.stringify(i).replace(/'/g,"''")}'`:String(i)},Xe=(i,t)=>{let e=i;for(let r=0;r<t.length&&e.includes("?");r++)e=e.replace(/\?/,Jt(t[r]));for(let r=0;r<t.length;r++){let o=new RegExp(`\\$${r+1}(?!\\d)`,"g");e=e.replace(o,Jt(t[r]));}for(let r=0;r<t.length;r++){let o=new RegExp(`\\@${r+1}(?!\\d)`,"g");e=e.replace(o,Jt(t[r]));}for(let r=0;r<t.length;r++){let o=new RegExp(`:${r+1}(?!\\d)`,"g");e=e.replace(o,Jt(t[r]));}return e},et=(i,t)=>t?i==="mysql"||i==="mariadb"?t.code==="ER_NO_SUCH_TABLE"||t.errno===1146:i==="postgres"||i==="cockroachdb"?t.code==="42P01":i==="sqlite"?/no such table/i.test(String(t.message||"")):i==="mssql"?t.number===208:i==="oracledb"?t.errorNum===942:false:false,Pe=(i,t)=>{let e=i.getDbType(),r;try{r=format(t,{...i.inputDetails.queryFormatOptions,language:eo(e)});}catch{try{r=format(t,{...i.inputDetails.queryFormatOptions});}catch{r=t;}}return r};var to=class{toSql(t){let e=t,r=new T(this.model,"mssql"),{sql:o}=r.parse([e.column]),n=e.inlineConstraints;if(n&&n.length){let s=[];for(let a of n){let{sql:l}=r.parse([a]);s.push(l);}s.length&&(o+=` ${s.join(" ")}`);}return {sql:`add ${o}`,bindings:[]}}},gl=new to;var ro=class{toSql(t){let e=t,r=new T(this.model,"mssql"),{sql:o}=r.parse([e.constraint]);return {sql:`add ${o}`,bindings:[]}}},bl=new ro;var oo=class{toSql(t){return {sql:`add primary key (${t.columns.map(o=>`[${o}]`).join(", ")})`,bindings:[]}}},Tl=new oo;var no=class{toSql(t){let e=t,r=new T(this.model,"mssql"),{sql:o}=r.parse([e.newType]),[,...n]=o.trim().split(/\s+/),s=n.join(" "),a="";e.options.nullable!==void 0&&(a=e.options.nullable?" null":" not null");let l=`alter column [${e.column}] ${s}${a}`;if(e.options.dropDefault&&(l=`drop constraint DF_${e.column}, ${l}`),e.options.default!==void 0&&!e.options.dropDefault){let d=e.options.default;d===null?d="null":typeof d=="string"&&(d==="NULL"?d="null":d==="TRUE"||d==="FALSE"?d=d==="TRUE"?"1":"0":d=`'${d}'`),l+=`, add constraint DF_${e.column} default ${d} for [${e.column}]`;}return e.options.unique!==void 0&&e.options.unique&&(l+=`, add constraint UQ_${e.column} unique ([${e.column}])`),{sql:l,bindings:[]}}},Nl=new no;var S=class{constructor(t,e=false){this.currParamIndex=1;this.isRawValue=false;this.keyword=t,this.isRawValue=e;}};var tt=class extends S{constructor(e){super("rename to");this.chainsWith=",";this.canKeywordBeSeenMultipleTimes=false;this.folder="alter_table";this.file="rename_table";this.newName=e;}};function gf(i){return typeof i!="string"||!i?i:i.replace(/([a-z])([A-Z])/g,"$1_$2").replace(/([A-Z])([A-Z][a-z])/g,"$1_$2").toLowerCase()}function bf(i){return typeof i!="string"||!i?i:i.replace(/([-_][a-z])/g,t=>t.toUpperCase().replace("-","").replace("_",""))}function U(i,t){return t==="preserve"?i:t==="snake"?gf(i):t==="camel"?bf(i):t instanceof RegExp?i.replace(t,e=>e[1].toUpperCase()):t(i)}Ke.extend(wf);Ke.extend(Nf);Ke.extend(Tf);var re=(i,t="ISO",e="UTC")=>{if(!(i instanceof Date)||isNaN(i.getTime()))throw new Error("Invalid date provided");let r=Ke(i);if(e==="LOCAL"){let n=r.local();switch(t){case "ISO":return n.format("YYYY-MM-DD HH:mm:ss");case "DATE_ONLY":return n.format("YYYY-MM-DD");case "TIME_ONLY":return n.format("HH:mm:ss");default:return n.unix().toString()}}let o=r.utc();switch(t){case "ISO":return o.format("YYYY-MM-DD HH:mm:ss");case "DATE_ONLY":return o.format("YYYY-MM-DD");case "TIME_ONLY":return o.format("HH:mm:ss");default:return o.unix().toString()}},Nt=(i,t,e="UTC")=>{if(i===null)return null;if(i instanceof Date){if(isNaN(i.getTime()))throw new N("DateUtils::parseDate","INVALID_DATE_OBJECT");return i}try{let r=t?Ke(i,t):Ke(i);if(!r.isValid())throw new N("DateUtils::parseDate","INVALID_DATE_STRING");return e==="UTC"?r.utc().toDate():r.local().toDate()}catch(r){throw new N("DateUtils::parseDate","FAILED_TO_PARSE_DATE",r)}},rt=(i=new Date)=>Ke(i).utc().format("YYYY-MM-DD HH:mm:ss");var wl=(i,t)=>{try{let e=Se.createHash("sha256").update(i).digest(),r=Se.randomBytes(16),o=Se.createCipheriv("aes-256-cbc",e,r),n=o.update(t,"utf8","hex");return n+=o.final("hex"),`${r.toString("hex")}:${n}`}catch(e){throw new N("Encryption::encryptSymmetric","FAILED_TO_ENCRYPT_SYMMETRICALLY",e instanceof Error?e:void 0)}},Sl=(i,t)=>{try{let e=Se.createHash("sha256").update(i).digest(),r=String(t).trim(),[o,n]=r.split(":");if(!o||!n)throw new Error(`Invalid encrypted value format: expected "iv:data" but got "${r.substring(0,50)}..."`);let s=o.toLowerCase(),a=n.toLowerCase(),l=Se.createDecipheriv("aes-256-cbc",e,Buffer.from(s,"hex")),d=l.update(a,"hex","utf8");return d+=l.final("utf8"),d}catch(e){throw new N("Encryption::decryptSymmetric","FAILED_TO_DECRYPT_SYMMETRICALLY",e instanceof Error?e:void 0)}},ql=(i,t)=>{try{let e=Se.randomBytes(32),r=Se.randomBytes(16),o=Se.createCipheriv("aes-256-cbc",e,r),n=o.update(t,"utf8","hex");n+=o.final("hex");let s=publicEncrypt(i,e);return `${r.toString("hex")}:${s.toString("hex")}:${n}`}catch(e){throw new N("Encryption::encryptAsymmetric","FAILED_TO_ENCRYPT_ASYMMETRICALLY",e instanceof Error?e:void 0)}},Ml=(i,t)=>{try{let e=String(t).trim(),[r,o,n]=e.split(":");if(!r||!o||!n)throw new Error(`Invalid encrypted value format: expected "iv:key:data" but got "${e.substring(0,50)}..."`);let s=privateDecrypt(i,Buffer.from(o,"hex")),a=Se.createDecipheriv("aes-256-cbc",s,Buffer.from(r,"hex")),l=a.update(n,"hex","utf8");return l+=a.final("utf8"),l}catch(e){throw new N("Encryption::decryptAsymmetric","FAILED_TO_DECRYPT_ASYMMETRICALLY",e instanceof Error?e:void 0)}};var W=class{static defineMetadata(t,e,r,o){if((typeof r!="object"||r===null)&&typeof r!="function")throw new TypeError("target must be an object or function");let n=this.store.get(r);n||(n=new Map,this.store.set(r,n));let s=n.get(o);s||(s=new Map,n.set(o,s)),s.set(t,e);}static getMetadata(t,e,r){if((typeof e!="object"||e===null)&&typeof e!="function")throw new TypeError("target must be an object or function");let o=e;for(;o;){let n=this.store.get(o);if(n){let s=n.get(r);if(s&&s.has(t))return s.get(t)}o=Object.getPrototypeOf(o);}}};W.store=new WeakMap;var io="0123456789ABCDEFGHJKMNPQRSTVWXYZ",so=io.length,Cf=10,_f=16,Rf=(i,t)=>{let e="";for(let r=0;r<t;r++){let o=i%so;e=io.charAt(o)+e,i=(i-o)/so;}return e},xf=i=>{let t=randomBytes(i),e="";for(let r=0;r<i;r++){let o=t[r];e+=io.charAt(o%so);}return e},Cl=()=>{let i=Math.floor(Date.now()/1e3),t=Rf(i,Cf),e=xf(_f);return t+e};function ao(i){return i.replace(/^[`"]|[`"]$/g,"")}function lo(i,t,e){if(!i.includes(".")){let n=ao(i);return `${t}.${n}`}let[r,o]=i.split(".");return r=ao(r),o=ao(o),r!==e?i:o==="*"?`${t}.*`:`${t}.${o}`}function q(i){return typeof i=="function"?i():i}var V=(i,t=new WeakMap)=>{if(i===null||typeof i!="object")return i;if(t.has(i))return t.get(i);if(Array.isArray(i)){let r=[];t.set(i,r);for(let o=0;o<i.length;o++)r[o]=V(i[o],t);return r}let e=Object.create(Object.getPrototypeOf(i)||{});t.set(i,e);for(let r of Object.getOwnPropertyNames(i)){let o=i[r];if(typeof o=="function"){e[r]=o;continue}e[r]=V(o,t);}return e};var ot=class{};ot.modelCaseConvention="camel",ot.databaseCaseConvention="snake";var _l;_l=Symbol.toStringTag;var J=class{constructor(t,e,r){this.unWrapFn=t;this.toQueryFn=e;this.executor=r;this[_l]="WriteOperation";}then(t,e){return this.executor().then(t,e)}catch(t){return this.executor().catch(t)}finally(t){return this.executor().finally(t)}toQuery(){return this.toQueryFn()}unWrap(){return this.unWrapFn()}};var Af=async(i,t,e,r,o=[],n=false)=>{let s=Object.create(t.prototype),a=new Set(e.filter(u=>u.hidden).map(u=>u.columnName)),l=new Map(e.map(u=>[u.databaseName,u])),d=o.length?new Set(o):null;if(await Promise.all(Object.keys(i).map(async u=>{let f=i[u],m=l.get(u)?.columnName??u,p=r.has(m),c=a.has(m),h=n?true:d?d.has(m):true;if(p){if(c||!h)return;if(f===null){s[m]=null;return}let g=r.get(m);if(g&&g.serialize){s[m]=await g.serialize(f);return}s[m]=f;return}(!n||d&&d.has(m))&&(s[m]=f);})),d)for(let u of d)u in s||(s[u]=null);return s},ge=async(i,t,e=[])=>{if(!i.length)return null;let r=t.getColumns(),o=new Map(r.map(l=>[l.columnName,l])),n=e.some(l=>l.includes("*")),s=[];for(let l of e){if(l.toLowerCase().includes(" as ")){let m=l.match(/\s+as\s+(.+)$/i);m&&s.push(m[1].trim());continue}let u=l;if(u.includes(".")&&(u=u.split(".").pop()),u==="*")continue;let f=o.get(u)?.columnName??u;s.push(f);}e=s;let a=await Promise.all(i.map(async l=>await Af(l,t,r,o,e,n)));return a.length===1?a[0]:a};var Rl=["postgres","cockroachdb"];function xl(i){let t=i.name.replace(/^_/,""),e=U(t,"snake");return Pf(e)}function Al(){return {}}var wt=class wt extends ot{static get table(){let t=Object.getOwnPropertyDescriptor(this,"table");return t&&"value"in t?t.value:xl(this)}static set table(t){Object.defineProperty(this,"table",{value:t,writable:true,enumerable:true,configurable:true});}static get primaryKey(){return El(this)}constructor(t){super(),t&&this.constructor.combineProps(this,t);}static from(t){let e=new this;return this.combineProps(e,t),e}static async all(t={}){return await this.dispatchModelManager(t).find({ignoreHooks:t.ignoreHooks?["afterFetch","beforeFetch"]:[]})}static query(t){return this.dispatchModelManager(t).query()}static async first(t){return this.dispatchModelManager(t).query().one({ignoreHooks:t?.ignoreHooks?["afterFetch","beforeFetch"]:[]})}static async find(t,e){return await this.dispatchModelManager(e).find(t)}static async findOneOrFail(t,e){return await this.dispatchModelManager(e).findOneOrFail(t)}static async findOne(t,e){return await this.dispatchModelManager(e).findOne(t)}static async findBy(t,e,r={}){return await this.dispatchModelManager(r).find({ignoreHooks:r.ignoreHooks?["afterFetch","beforeFetch"]:[],where:{[t]:e}})}static async findOneBy(t,e,r={}){return await this.dispatchModelManager(r).findOne({ignoreHooks:r.ignoreHooks?["afterFetch","beforeFetch"]:[],where:{[t]:e}})}static async findOneByPrimaryKey(t,e={}){return await this.dispatchModelManager(e).findOneByPrimaryKey(t)}static async refresh(t,e={}){let n=await this.dispatchModelManager(e).findOneByPrimaryKey(t);return n||null}static insert(t,e={}){return this.dispatchModelManager(e).insert(t,{ignoreHooks:e.ignoreHooks,returning:e.returning})}static insertMany(t,e={}){let o=this.dispatchModelManager(e);if(!t.length){let n=!e.returning||e.returning.length===0;return new J(()=>({sql:"",bindings:[]}),()=>"",async()=>n?void 0:[])}return o.insertMany(t,{ignoreHooks:e.ignoreHooks,returning:e.returning})}static async sync(t,e,r,o,n={}){if(Array.isArray(r)||(r=[r]),!r.length)return;let s=this,l=Gt(s).find(c=>c.columnName===t);if(!l)throw new N(`${s.name}::sync`,"RELATION_NOT_FOUND");if(l.type!=="manyToMany")throw new N(`${s.name}::sync`,"RELATION_NOT_MANY_TO_MANY");let d=U(l.leftForeignKey,n.caseConvention||s.databaseCaseConvention),u=U(l.rightForeignKey,n.caseConvention||s.databaseCaseConvention),f=r.map((c,h)=>({[d]:e[s.primaryKey],[u]:c[l.model.primaryKey],...o?o(c,h):{}}));class m extends wt{static get table(){return l.throughModel}}m.databaseCaseConvention="preserve",m.modelCaseConvention="preserve",await m.dispatchModelManager(n).insertMany(f);}static async updateRecord(t,e,r={}){try{let n=this.dispatchModelManager(r);if(!r.returning||r.returning.length===0){await n.updateRecord(t,e);return}return await n.updateRecord(t,e,{returning:r.returning})}catch(o){throw o instanceof N&&o.message==="MODEL_HAS_NO_PRIMARY_KEY"?new N(`${this.name}::updateRecord`,"MODEL_HAS_NO_PRIMARY_KEY"):o}}static async firstOrInsert(t,e,r={}){r.fullResponse||(r.fullResponse=false);let n=this.dispatchModelManager(r),s=await n.findOne({where:t});if(s)return r.fullResponse?{isNew:false,model:s}:s;let a=await n.insert(e,{returning:["*"]});return r.fullResponse?{isNew:true,model:a}:a}static async upsert(t,e,r={updateOnConflict:true}){let o=this,n=o.dispatchModelManager(r),s=Object.keys(t).length>0,a=!r.returning||r.returning.length===0,l=s?await n.findOne({ignoreHooks:r.ignoreHooks?["afterFetch","beforeFetch"]:[],where:t}):null;if(l){let d=l[o.primaryKey];if(r.updateOnConflict??true){if(a){await n.updateRecord(d,e);return}return await n.updateRecord(d,e,{returning:r.returning})}return a?void 0:l}return await n.insert(e,{ignoreHooks:r.ignoreHooks,returning:r.returning})}static async upsertMany(t,e,r={updateOnConflict:true}){if(!e.length)return [];let o=this,n=o.dispatchModelManager(r),s=!r.returning||r.returning.length===0;if(!e.every(m=>{let p=new Set(Object.keys(m));return t.every(c=>p.has(c))}))throw new N("Model::upsertMany","CONFLICT_COLUMNS_NOT_PRESENT_IN_DATA");let a=Object.keys(e[0]),l=await n.upsertMany(t,a,e,{ignoreHooks:r.ignoreHooks,returning:r.returning,updateOnConflict:r.updateOnConflict??true});if(s)return;let d=o.sqlInstance.getDbType();if(Rl.includes(d))return await ge(l,o,r.returning);let u=n.query();r.returning?.length&&u.select(...r.returning);let f=new Map;return t.forEach(m=>{e.forEach(p=>{f.set(m,[...f.get(m)||[],p[m]]);});}),u.where(m=>{t.forEach(p=>{m.orWhereIn(p,f.get(p)||[]);});}),u.many({ignoreHooks:r.ignoreHooks?["afterFetch","beforeFetch"]:[]})}static async deleteRecord(t,e){return this.dispatchModelManager(e).deleteRecord(t)}static async save(t,e={}){let r=this,o=r.primaryKey;if(!o)throw new N(r.name+"::save","MODEL_HAS_NO_PRIMARY_KEY");let n=t[o],s=n?{[o]:n}:{},a=t;return await r.upsert.call(this,s,a,{updateOnConflict:true,returning:e.returning,...e})}static async softDelete(t,e,r){let o=this,{column:n=o.softDeleteColumn,value:s=o.softDeleteValue}=e||{},a={[n]:s},l=o.dispatchModelManager({trx:r?.trx,connection:r?.connection});if(!r?.returning||r.returning.length===0){await l.updateRecord(t,a);return}return await l.updateRecord(t,a,{returning:r.returning})}static async truncate(t={}){return this.dispatchModelManager(t).query().truncate()}static async getTableInfo(){let t=this;return t.establishConnection(),t.sqlInstance.getTableInfo(t.table)}static async getIndexInfo(){let t=this;return t.establishConnection(),t.sqlInstance.getIndexInfo(t.table)}static async getTableSchema(){let t=this;return t.establishConnection(),t.sqlInstance.getTableSchema(t.table)}static combineProps(t,e){for(let r in e)Object.assign(t,{[r]:e[r]});}static getColumns(){return Yt(this)}static getRelations(){return Dl(this)}static getIndexes(){return vl(this)}static getUniques(){return kl(this)}static getChecks(){return Ql(this)}static column(t,...e){P(...e)(this.prototype,t);}static dateColumn(t,...e){P.date(...e)(this.prototype,t);}static datetimeColumn(t,...e){P.datetime(...e)(this.prototype,t);}static timestampColumn(t,...e){P.timestamp(...e)(this.prototype,t);}static timeColumn(t,...e){P.time(...e)(this.prototype,t);}static booleanColumn(t,...e){P.boolean(...e)(this.prototype,t);}static jsonColumn(t,...e){P.json(...e)(this.prototype,t);}static uuidColumn(t,...e){P.uuid(...e)(this.prototype,t);}static ulidColumn(t,...e){P.ulid(...e)(this.prototype,t);}static integerColumn(t,...e){P.integer(...e)(this.prototype,t);}static floatColumn(t,...e){P.float(...e)(this.prototype,t);}static incrementColumn(t,...e){P.increment(...e)(this.prototype,t);}static bigIncrementColumn(t,...e){P.bigIncrement(...e)(this.prototype,t);}static encryptionSymmetricColumn(t,...e){P.encryption.symmetric(...e)(this.prototype,t);}static encryptionAsymmetricColumn(t,...e){P.encryption.asymmetric(...e)(this.prototype,t);}static hasOne(t,...e){$l(...e)(this.prototype,t);}static hasMany(t,...e){Il(...e)(this.prototype,t);}static belongsTo(t,...e){Pl(...e)(this.prototype,t);}static manyToMany(t,...e){Ol(...e)(this.prototype,t);}static establishConnection(){let t=$e.instance;if(!t)throw new N("sqlInstance not initialized, did you defined it in SqlDataSource.connect static method?","CONNECTION_NOT_ESTABLISHED");this.sqlInstance=t;}static dispatchModelManager(t){let e;if(t?.connection)e=t.connection.getModelManager(this);else if(t?.trx)e=t.trx.sql.getModelManager(this);else {let r=this;r.establishConnection(),e=r.sqlInstance.getModelManager(r);}return t?.replicationMode&&e.setReplicationMode(t.replicationMode),e}};wt.softDeleteColumn="deletedAt",wt.softDeleteValue=rt();var Ht=wt;var be=class{constructor(t,e){this.model=Ht;this.columnName="";this.relatedModel="";this.model=t,this.columnName=e,this.relatedModel=this.model.table;}};var zt=class extends be{constructor(t,e,r){super(t,e),this.foreignKey=r,this.type="belongsTo";}};var Zt=class extends be{constructor(e,r,o){super(e,r);this.type="hasMany";this.foreignKey=o,this.type="hasMany";}};var Xt=class extends be{constructor(t,e,r){super(t,e),this.foreignKey=r,this.type="hasOne";}};var er=class extends be{constructor(e,r,o){super(e,r);this.type="manyToMany";this.primaryModel=o.primaryModel,this.relatedModel=e.table,this.throughModel=o.throughModel,this.leftForeignKey=o.leftForeignKey,this.rightForeignKey=o.rightForeignKey;}};var tr=Symbol("columns"),nt=Symbol("primaryKey"),ae=Symbol("relations"),Bl=Symbol("indexes"),Kl=Symbol("uniques"),Ll=Symbol("checks"),Ie=i=>`${Pf.singular(i)}_id`,uo=(i,t)=>`idx_${i}_${t}`,le=(i,t)=>`uq_${i}_${t}`,G=(i,t,e)=>`fk_${i}_${t}${e?`_${e}`:""}`,Oe=(i,t)=>`pk_${i}_${t}`;function P(i={primaryKey:false}){let t=i?.primaryKey??false;return (e,r)=>{let o=e.constructor;if(t){if(W.getMetadata(nt,e))throw new N("ModelDecorator::column","MULTIPLE_PRIMARY_KEYS_NOT_ALLOWED");W.defineMetadata(nt,r,e),W.defineMetadata(nt,r,e.constructor);}let n=i.databaseName??U(r,o.databaseCaseConvention),s={columnName:r,serialize:i.serialize,prepare:i.prepare,hidden:i.hidden,isPrimary:t,primaryKeyConstraintName:i.primaryKeyConstraintName??Oe(o.table,r),autoUpdate:i.autoUpdate,databaseName:n,openApi:i.openApi,type:i.type,length:i?.length,precision:i?.precision,scale:i?.scale,withTimezone:i?.withTimezone,constraints:{nullable:i.nullable,default:i.default}},a=W.getMetadata(tr,e)||[];a.push(s),W.defineMetadata(tr,a,e);}}P.primary=Of;P.date=Yf;P.datetime=Gf;P.timestamp=zf;P.time=Zf;P.boolean=Hf;P.json=Xf;P.uuid=Qf;P.ulid=Bf;P.integer=Ef;P.bigInteger=Wf;P.float=Df;P.decimal=Uf;P.increment=vf;P.bigIncrement=kf;P.string=Kf;P.text=Lf;P.binary=Ff;P.enum=jf;P.encryption={symmetric:Vf,asymmetric:Jf};function Of(i={}){return P({...i,primaryKey:true})}function Df(i={}){return P({type:"float",...i,serialize:t=>{if(t!==void 0)return t===null?null:typeof t=="number"?t:typeof t=="string"?Number.parseInt(t):Number.parseFloat(t)},openApi:{type:"number",format:"float",description:"A floating point number",...i.openApi||{}}})}function Ef(i={}){return P({type:"integer",...i,serialize:t=>{if(t!==void 0)return t===null?null:typeof t=="number"?t:typeof t=="string"?+t:Number.parseInt(t)},openApi:{type:"integer",format:"int64",description:"An integer number",...i.openApi||{}}})}function vf(i={}){return P({type:"increment",...i,primaryKey:true,nullable:false,serialize:t=>{if(t!==void 0)return t===null?null:typeof t=="number"?t:Number.parseInt(t)},openApi:{type:"integer",format:"int64",description:"An auto-incrementing integer number",...i.openApi||{}}})}function kf(i={}){return P({type:"bigIncrement",...i,primaryKey:true,nullable:false,serialize:t=>{if(t!==void 0)return t===null?null:typeof t=="number"?t:Number.parseInt(t)},openApi:{type:"integer",format:"int64",description:"An auto-incrementing bigint number",...i.openApi||{}}})}function Qf(i={}){return P({type:"uuid",...i,prepare:t=>t||Se.randomUUID(),openApi:{type:"string",format:"uuid",description:"uuid (Universally Unique Identifier)",...i.openApi||{}}})}function Bf(i={}){return P({type:"ulid",...i,prepare:t=>t||Cl(),openApi:{type:"string",format:"ulid",description:"ulid (Universally Unique Lexicographically Sortable Identifier)",...i.openApi||{}}})}function Kf(i={}){return P({type:"string",...i,openApi:{type:"string",description:"A string value",...i.openApi||{}}})}function Lf(i={}){return P({type:"longtext",...i,openApi:{type:"string",description:"A text value",...i.openApi||{}}})}function Wf(i={}){return P({type:"bigint",...i,serialize:t=>{if(t!==void 0){if(t===null)return null;if(typeof t=="number")return t;if(typeof t=="string")return Number.parseInt(t);if(typeof t=="bigint")return Number(t)}},openApi:{type:"integer",format:"int64",description:"A bigint number",...i.openApi||{}}})}function Uf(i={}){return P({type:"decimal",precision:i.precision??10,scale:i.scale??2,...i,serialize:t=>{if(t!==void 0)return t===null?null:typeof t=="number"?t:Number.parseFloat(t)},openApi:{type:"number",format:"double",description:"A decimal number",...i.openApi||{}}})}function Ff(i={}){return P({type:"binary",...i,openApi:{type:"string",format:"binary",description:"Binary data",...i.openApi||{}}})}function jf(i,t={}){return P({type:i,...t,openApi:{type:"string",enum:i,description:"An enum value",...t.openApi||{}}})}function Vf(i){return P({...i,prepare:t=>t&&wl(i.key,t),serialize:t=>t&&Sl(i.key,t)})}function Jf(i){return P({...i,prepare:t=>t&&ql(i.publicKey,t),serialize:t=>t&&Ml(i.privateKey,t)})}function Hf(i={}){return P({type:"boolean",...i,serialize:t=>!!t,prepare:t=>{if(t!=null)return !!t},openApi:{type:"boolean",description:"A boolean value",...i.openApi||{}}})}function Yf(i={}){let{timezone:t="UTC",autoUpdate:e=false,autoCreate:r=false,prepare:o,serialize:n,...s}=i,a=d=>d?e?re(new Date,"DATE_ONLY",t):typeof d=="string"?d:re(d,"DATE_ONLY",t):r?re(new Date,"DATE_ONLY",t):null,l=d=>{if(d!==void 0)return d===null?null:Nt(d,void 0,t)};return P({type:"date",...s,autoUpdate:e,prepare:d=>{let u=a(d);return o?o(u):u},serialize:d=>{let u=l(d);return n?n(u):u},openApi:{type:"string",format:"date",description:"YYYY-MM-DD",...s.openApi||{}}})}function Gf(i={}){let{timezone:t,withTimezone:e,autoUpdate:r=false,autoCreate:o=false,prepare:n,serialize:s,...a}=i,l=t??"UTC",d=e??t!==void 0,u=m=>m?r?re(new Date,"ISO",l):typeof m=="string"?m:re(m,"ISO",l):o?re(new Date,"ISO",l):null,f=m=>{if(m!==void 0)return m===null?null:Nt(m,void 0,l)};return P({type:"datetime",...a,withTimezone:d,autoUpdate:r,prepare:m=>{let p=u(m);return n?n(p):p},serialize:m=>{let p=f(m);return s?s(p):p},openApi:{type:"string",format:"date-time",description:"YYYY-MM-DD HH:mm:ss",...a.openApi||{}}})}function zf(i={}){let{timezone:t,withTimezone:e,autoUpdate:r=false,autoCreate:o=false,prepare:n,serialize:s,...a}=i,l=t??"UTC",d=e??t!==void 0,u=m=>m?r?re(new Date,"TIMESTAMP",l):typeof m=="string"?m:re(m,"TIMESTAMP",l):o?re(new Date,"TIMESTAMP",l):null,f=m=>{if(m!==void 0)return m===null?null:Nt(m,void 0,l)};return P({type:"timestamp",...a,withTimezone:d,autoUpdate:r,prepare:m=>{let p=u(m);return n?n(p):p},serialize:m=>{let p=f(m);return s?s(p):p},openApi:{type:"string",format:"date-time",description:"Unix timestamp",...a.openApi||{}}})}function Zf(i={}){let{timezone:t="UTC",autoUpdate:e=false,autoCreate:r=false,prepare:o,serialize:n,...s}=i,a=d=>d?e?re(new Date,"TIME_ONLY",t):typeof d=="string"?d:re(d,"TIME_ONLY",t):r?re(new Date,"TIME_ONLY",t):null,l=d=>{if(d!==void 0)return d===null?null:Nt(d,void 0,t)};return P({type:"time",...s,autoUpdate:e,prepare:d=>{let u=a(d);return o?o(u):u},serialize:d=>{let u=l(d);return n?n(u):u},openApi:{type:"string",format:"time",description:"HH:mm:ss",...s.openApi||{}}})}function Xf(i={}){return P({type:"jsonb",...i,serialize:t=>typeof t=="string"?JSON.parse(t):t,prepare:t=>typeof t!="string"?JSON.stringify(t):t,openApi:{type:"object",description:"A JSON object",...i.openApi||{}}})}function Yt(i){try{return W.getMetadata(tr,i.prototype)||[]}catch{return []}}function Pl(i,t,e){return((r,o)=>{let n=()=>Ie(i().table),s=()=>{let d=r.constructor.table,u=t||n();return G(d,u,i().table)},a={type:"belongsTo",columnName:o,model:i,foreignKey:t?String(t):n,constraintName:e?.constraintName??s,onUpdate:e?.onUpdate,onDelete:e?.onDelete},l=W.getMetadata(ae,r)||[];l.push(a),W.defineMetadata(ae,l,r);})}function $l(i,t){return((e,r)=>{let o=()=>Ie(e.constructor.table),n={type:"hasOne",columnName:r,model:i,constraintName:"None",foreignKey:t?String(t):o},s=W.getMetadata(ae,e)||[];s.push(n),W.defineMetadata(ae,s,e);})}function Il(i,t){return((e,r)=>{let o=()=>Ie(e.constructor.table),n={type:"hasMany",columnName:r,model:i,constraintName:"None",foreignKey:t?String(t):o},s=W.getMetadata(ae,e)||[];s.push(n),W.defineMetadata(ae,s,e);})}function Ol(i,t,e,r){return((o,n)=>{let{leftForeignKey:s,rightForeignKey:a}=e??{},l=typeof t!="string",d=typeof t=="string"?t:()=>t().table,u=o.constructor.table,f=()=>Ie(u),m=()=>Ie(i().table),p=()=>G(q(d),s?String(s):f()),c={type:"manyToMany",columnName:n,model:i,constraintName:r?.constraintName??p,foreignKey:s?String(s):f,onDelete:r?.onDelete,onUpdate:r?.onUpdate,manyToManyOptions:{primaryModel:u,throughModel:d,leftForeignKey:s?String(s):f,rightForeignKey:a?String(a):m,wasModelProvided:l}},h=W.getMetadata(ae,o)||[];h.push(c),W.defineMetadata(ae,h,o);})}function Dl(i){return W.getMetadata(ae,i.prototype)||[]}function Gt(i){return (W.getMetadata(ae,i.prototype)||[]).map(e=>{let{type:r,model:o,columnName:n,foreignKey:s}=e,a=q(s),l=o();switch(r){case "belongsTo":return new zt(l,n,a);case "hasOne":return new Xt(l,n,a);case "hasMany":return new Zt(l,n,a);case "manyToMany":if(!e.manyToManyOptions)throw new N("ModelDecorator::getRelations","MANY_TO_MANY_RELATION_MUST_HAVE_A_THROUGH_MODEL");let d=o();return new er(d,n,{primaryModel:e.manyToManyOptions.primaryModel,throughModel:q(e.manyToManyOptions.throughModel),leftForeignKey:q(e.manyToManyOptions.leftForeignKey),rightForeignKey:q(e.manyToManyOptions.rightForeignKey)});default:throw new N("ModelDecorator::getRelations",`UNKNOWN_RELATION_TYPE_${r}`)}})}function El(i){return W.getMetadata(nt,i)||W.getMetadata(nt,i.prototype)}function vl(i){return W.getMetadata(Bl,i.prototype)||[]}function kl(i){return W.getMetadata(Kl,i.prototype)||[]}function Ql(i){return W.getMetadata(Ll,i.prototype)||[]}var ey=i=>{if(i==null||typeof i!="object"||i instanceof Date)return false;if(Array.isArray(i))return true;let t=Object.getPrototypeOf(i);return t===Object.prototype||t===null},y=class{constructor(t){this.model=t;let e=Yt(t);this.modelColumnsMap=new Map(e.map(r=>[r.columnName,r]));}formatStringColumn(t,e){if(e==="*")return "*";if(e.includes(".")){let[n,s]=e.split(".");if(s==="*")switch(t){case "mysql":case "mariadb":return `\`${n}\`.*`;case "postgres":case "cockroachdb":case "sqlite":case "oracledb":return `"${n}".*`;case "mssql":return `[${n}].*`;default:throw new Error(`Unsupported database type: ${t}`)}let a=this.modelColumnsMap.get(s)?.databaseName??U(s,this.model.databaseCaseConvention);switch(t){case "mysql":case "mariadb":return `\`${n}\`.\`${a}\``;case "postgres":case "cockroachdb":case "sqlite":case "oracledb":return `"${n}"."${a}"`;case "mssql":return `[${n}].[${a}]`;default:throw new Error(`Unsupported database type: ${t}`)}}let o=this.modelColumnsMap.get(e)?.databaseName??U(e,this.model.databaseCaseConvention);switch(t){case "mysql":case "mariadb":return `\`${o}\``;case "postgres":case "cockroachdb":case "sqlite":case "oracledb":return `"${o}"`;case "mssql":return `[${o}]`;default:throw new Error(`Unsupported database type: ${t}`)}}formatStringTable(t,e){e=e.replace(/\s+/g," ").trim();let r="";switch(e.toLowerCase().includes(" as ")&&([e,r]=e.split(" as ")),t){case "mysql":case "mariadb":return `\`${e}\`${r?` as \`${r}\``:""}`;case "postgres":case "cockroachdb":case "sqlite":case "oracledb":return `"${e}"${r?` as "${r}"`:""}`;case "mssql":return `[${e}]${r?` as [${r}]`:""}`;default:return `${e}${r?` as ${r}`:""}`}}async prepareColumns(t,e,r="insert"){if(!t.length)return {columns:t,values:e};let o=[],n=[];for(let s=0;s<t.length;s++){let a=t[s],l=e[s];a!=="*"&&(o.push(a),n.push(l));}await Promise.all(o.map(async(s,a)=>{let l=o[a],d=n[a],u=this.modelColumnsMap.get(l),f=d;u?r==="insert"&&u.prepare?f=await u.prepare(d):r==="update"&&(f=await u.prepare?.(d)??d):ey(d)&&(f=JSON.stringify(d)),n[a]=f;}));for(let s of this.modelColumnsMap.keys())if(!o.includes(s)){let a=this.modelColumnsMap.get(s);if(!a||r==="insert"&&s===this.model.primaryKey&&!a.prepare)continue;if(r==="insert"&&a.prepare||a.autoUpdate){o.push(s);let l=a.prepare?await a.prepare(void 0):void 0;n.push(l??void 0);}}return {columns:o,values:n}}getFromForWriteOperations(t,e){if(typeof e.table=="string")return this.formatStringTable(t,e.table);let r=new T(this.model,t);return Array.isArray(e.table)?`(${r.parse(e.table).sql})`:`(${r.parse([e.table]).sql})`}};var mo=class{toSql(t){let e=t,o=new y(this.model).formatStringTable("mssql",e.table);if(!e.children||!e.children.length)return {sql:"",bindings:[]};if(e.children.length===1&&e.children[0]instanceof tt){let u=e.children[0];return {sql:`EXEC sp_rename '${e.table}', '${u.newName}'`,bindings:[]}}let n=new T(this.model,"mssql"),s=[],a=[];for(let u of e.children){let{sql:f,bindings:m}=n.parse([u]);s.push(f.trim()),a.push(...m);}let l=s.join(", ");return {sql:`${o} ${l}`,bindings:a}}},Wl=new mo;var co=class{toSql(t){return {sql:`drop column [${t.column}]`,bindings:[]}}},Ul=new co;var po=class{toSql(t){return {sql:`drop constraint [${t.constraintName}]`,bindings:[]}}},Fl=new po;var fo=class{toSql(t){return {sql:`drop constraint DF_${t.column}`,bindings:[]}}},jl=new fo;var yo=class{toSql(t){let e=t;return b.warn("MSSQL requires the full column type when altering nullability. This operation may need manual adjustment."),{sql:`alter column [${e.column}] null`,bindings:[]}}},Vl=new yo;var ho=class{toSql(t){return {sql:`drop constraint [${`pk_${t.table}`}]`,bindings:[]}}},Jl=new ho;var go=class{toSql(t){let e=t;return {sql:`sp_rename '${this.model?.table??""}.${e.oldName}', '${e.newName}', 'COLUMN'`,bindings:[]}}},Hl=new go;var bo=class{toSql(t){return {sql:`[${t.newName}]`,bindings:[]}}},Yl=new bo;var $=class extends S{constructor(e){super("raw",true);this.canKeywordBeSeenMultipleTimes=true;this.chainsWith=" ";this.currParamIndex=0;this.isRawValue=true;this.folder="raw";this.file="raw";this.rawValue=e;}};var To=class{toSql(t){let e=t,r;return e.defaultValue instanceof $?r=e.defaultValue.rawValue:e.defaultValue==="NULL"||e.defaultValue===null?r="null":e.defaultValue==="TRUE"?r="1":e.defaultValue==="FALSE"?r="0":typeof e.defaultValue=="string"&&e.defaultValue!=="null"&&e.defaultValue!=="1"&&e.defaultValue!=="0"?r=`'${e.defaultValue}'`:r=String(e.defaultValue),{sql:`add constraint DF_${e.column} default ${r} for [${e.column}]`,bindings:[]}}},Gl=new To;var No=class{toSql(t){let e=t;return b.warn("MSSQL requires the full column type when altering nullability. This operation may need manual adjustment."),{sql:`alter column [${e.column}] not null`,bindings:[]}}},zl=new No;var wo=class{toSql(t){return {sql:"",bindings:[]}}},Zl=new wo;var So=class{toSql(t){let e=t;if(e.isRawValue)return {sql:e.column,bindings:[]};let o=new y(this.model).formatStringColumn("mssql",q(e.column)),n=e.dataType.toLowerCase();if(n==="char"){let s=e.length??1;return {sql:`${o} char(${s})`,bindings:[]}}if(n==="varchar"){let s=e.length??255;return {sql:`${o} varchar(${s})`,bindings:[]}}if(n==="text"||n==="longtext"||n==="mediumtext"||n==="tinytext")return {sql:`${o} varchar(max)`,bindings:[]};if(n==="uuid")return {sql:`${o} uniqueidentifier`,bindings:[]};if(n==="ulid")return {sql:`${o} varchar(26)`,bindings:[]};if(n==="bigint")return e.autoIncrement?{sql:`${o} bigint identity(1,1)`,bindings:[]}:{sql:`${o} bigint`,bindings:[]};if(n==="tinyint")return {sql:`${o} tinyint`,bindings:[]};if(n==="smallint")return {sql:`${o} smallint`,bindings:[]};if(n==="mediumint")return {sql:`${o} int`,bindings:[]};if(n==="float"||n==="real")return {sql:`${o} real`,bindings:[]};if(n==="double")return {sql:`${o} float`,bindings:[]};if(n==="decimal"||n==="numeric"){let s=e.precision??10,a=e.scale??0;return {sql:`${o} decimal(${s}, ${a})`,bindings:[]}}if(n==="date")return {sql:`${o} date`,bindings:[]};if(n==="year")return {sql:`${o} smallint`,bindings:[]};if(n==="time"){let s=typeof e.precision=="number"?`(${e.precision})`:"";return {sql:`${o} time${s}`,bindings:[]}}if(n==="datetime"||n==="timestamp"){let s=typeof e.precision=="number"?`(${e.precision})`:"",a=`${o} datetime2${s}`;return e.autoCreate&&(a+=" default current_timestamp"),{sql:a,bindings:[]}}if(n==="boolean"||n==="bool")return {sql:`${o} bit`,bindings:[]};if(n==="bytea"||n==="binary"||n==="varbinary"||n==="blob"||n==="longblob"||n==="mediumblob"||n==="tinyblob")return {sql:`${o} varbinary(max)`,bindings:[]};if(n==="json"||n==="jsonb")return {sql:`${o} nvarchar(max)`,bindings:[]};if(n==="enum"){if(e.enumValues&&e.enumValues.length>0){let s=e.enumValues.map(a=>`'${a}'`).join(", ");return {sql:`${o} varchar(255) check (${o} in (${s}))`,bindings:[]}}return {sql:`${o} varchar(255)`,bindings:[]}}return n==="integer"||n==="int"?e.autoIncrement?{sql:`${o} int identity(1,1)`,bindings:[]}:{sql:`${o} int`,bindings:[]}:n==="geometry"?{sql:`${o} geometry`,bindings:[]}:n==="point"?{sql:`${o} geometry`,bindings:[]}:n==="linestring"?{sql:`${o} geometry`,bindings:[]}:n==="polygon"?{sql:`${o} geometry`,bindings:[]}:n==="multipoint"?{sql:`${o} geometry`,bindings:[]}:{sql:`${o} ${n}${e.length?`(${e.length})`:""}`,bindings:[]}}},Xl=new So;var qo=class{toSql(t){return {sql:"",bindings:[]}}},ed=new qo;var Mo=class{toSql(t){let e=t,r=new y(this.model);if(e.constraintType==="primary_key"){if(e.columns&&e.columns.length){let o=e.constraintName?`constraint [${e.constraintName}] `:"",n=(e.columns??[]).map(s=>r.formatStringColumn("mssql",q(s))).join(", ");return {sql:`${o}primary key (${n})`,bindings:[]}}return {sql:"primary key",bindings:[]}}if(e.constraintType==="unique"){if(e.columns&&e.columns.length>0){let o=e.columns??[],n=e.constraintName?`constraint [${e.constraintName}] `:"",s=o.map(a=>r.formatStringColumn("mssql",q(a))).join(", ");return e.constraintName?{sql:`${n}unique (${s})`,bindings:[]}:{sql:"unique",bindings:[]}}return {sql:"unique",bindings:[]}}if(e.constraintType==="not_null")return {sql:"not null",bindings:[]};if(e.constraintType==="null")return {sql:"null",bindings:[]};if(e.constraintType==="default"){if(e.defaultValue!==void 0){let o=e.defaultValue;return o instanceof $?{sql:`default ${o.rawValue}`,bindings:[]}:o==="NULL"||o===null?{sql:"default null",bindings:[]}:o==="TRUE"?{sql:"default 1",bindings:[]}:o==="FALSE"?{sql:"default 0",bindings:[]}:typeof o=="string"?{sql:`default '${o}'`,bindings:[]}:{sql:`default ${o}`,bindings:[]}}return {sql:"default null",bindings:[]}}if(e.constraintType==="foreign_key"){if(!e.columns||!e.columns.length)return {sql:"",bindings:[]};let o=e.columns.map(d=>r.formatStringColumn("mssql",q(d))).join(", ");if(!e.references)return {sql:"",bindings:[]};let n=r.formatStringTable("mssql",e.references.table),s=e.references.columns.map(d=>r.formatStringColumn("mssql",q(d))).join(", "),l=`${e.constraintName?`constraint [${e.constraintName}] `:""}foreign key (${o}) references ${n}(${s})`;return e.onDelete&&(l+=` on delete ${e.onDelete}`),e.onUpdate&&(l+=` on update ${e.onUpdate}`),{sql:l,bindings:[]}}return e.constraintType==="check"?e.checkExpression?{sql:`${e.constraintName?`constraint [${e.constraintName}] `:""}check (${e.checkExpression})`,bindings:[]}:{sql:"",bindings:[]}:{sql:"",bindings:[]}}},td=new Mo;var Co=class{toSql(t){let e=t,o=new y(this.model).formatStringTable("mssql",e.table);if(!e.children||!e.children.length)return {sql:`${o} ()`,bindings:[]};let n=new T(this.model,"mssql"),s=[],a=[];for(let c of e.children){let{sql:h,bindings:g}=n.parse([c]);if(c.folder==="constraint"){let w=s.pop()??"",M=h;if(/not null/i.test(M)||/null/i.test(M)||/default/i.test(M)){let _=`${w} ${M}`.trim();_=_.replace(/(references\s+\[[^\]]+\]\s*\([^)]*\))\s+not null/i,"not null $1"),s.push(_),a.push(...g);continue}s.push(w),s.push(M),a.push(...g);continue}s.push(h),a.push(...g);}for(let c of e.namedConstraints){let{sql:h,bindings:g}=n.parse([c]);s.push(h),a.push(...g);}let l=s.join(", "),d=[];e.dataCompression&&d.push(`DATA_COMPRESSION = ${e.dataCompression}`);let u=e.onFilegroup?` ON [${e.onFilegroup}]`:"",f=e.textImageOn?` TEXTIMAGE_ON [${e.textImageOn}]`:"",m=d.length>0?` WITH (${d.join(", ")})`:"";return {sql:`${o} (${l})${m}${u}${f}`,bindings:a}}},rd=new Co;var _o=class{toSql(t){let e=t;return e.isRawValue&&typeof e.fromNode.table=="string"?{sql:e.fromNode.table,bindings:[]}:{sql:new y(this.model).getFromForWriteOperations("mssql",e.fromNode),bindings:[]}}},od=new _o;var Ro=class{toSql(t){return {sql:"",bindings:[]}}},nd=new Ro;var xo=class{toSql(t){return b.warn("MSSQL does not support DISTINCT ON. This clause will be ignored."),{sql:"",bindings:[]}}},sd=new xo;var Ao=class{toSql(t){let e=t,o=new y(this.model).formatStringTable("mssql",e.table);return {sql:`${e.ifExists?"if exists ":""}${o}`,bindings:[]}}},id=new Ao;var Po=class{toSql(t){return {sql:`-- MSSQL does not support extensions (extension: ${t.extensionName})`,bindings:[]}}},ad=new Po;var $o=class{toSql(t){let e=t;if(typeof e.table=="string"){let a=new y(this.model);return e.alias&&e.alias.length>0?{sql:`${a.formatStringTable("mssql",e.table)} as [${e.alias}]`,bindings:[]}:{sql:a.formatStringTable("mssql",e.table),bindings:[]}}let r=Array.isArray(e.table)?e.table:[e.table],n=new T(this.model,"mssql").parse(r),s=e.alias&&e.alias.length?` as [${e.alias}]`:"";return {sql:`(${n.sql})${s}`,bindings:n.bindings}}},ld=new $o;var Io=class{toSql(t){let e=t;return e.isRawValue?{sql:e.column,bindings:[]}:{sql:new y(this.model).formatStringColumn("mssql",e.column),bindings:[]}}},dd=new Io;var Oo=class{toSql(t){let e=t;if(e.isRawValue)return {sql:e.column,bindings:e.value};let r=e.currParamIndex,o="",n=[];if(!(e.value instanceof S)&&!Array.isArray(e.value)&&(o=`${new y(this.model).formatStringColumn("mssql",e.column)} ${e.operator} @${r}`,n=[e.value]),Array.isArray(e.value)){let s=e.value.map((a,l)=>`@${r+l}`).join(", ");o=`${new y(this.model).formatStringColumn("mssql",e.column)} ${e.operator} (${s})`,n=e.value;}return e.isNegated&&(o=`not (${o})`),{sql:o.trim(),bindings:n}}},ud=new Oo;var Do=class{toSql(t){let e=t,o=new y(this.model).formatStringTable("mssql",e.table),n=e.columns.map(a=>`[${a}]`).join(", ");return {sql:`${e.unique?"unique ":""}[${e.indexName}] on ${o} (${n})`,bindings:[]}}},md=new Do;var Eo=class{toSql(t){let e=t;return {sql:`[${e.indexName}] on [${e.table}]`,bindings:[]}}},cd=new Eo;var vo=class{toSql(t){let e=t;if(e.isRawValue)return {sql:e.fromNode.table,bindings:[]};let r=new y(this.model),o=r.getFromForWriteOperations("mssql",e.fromNode);if(!e.records.length)return {sql:o,bindings:[]};let n=e.records[0],s=Object.keys(n).filter(m=>n[m]!==void 0);if(!s.length)return {sql:o,bindings:[]};let a=s.map(m=>r.formatStringColumn("mssql",m)).join(", "),l=[],d=[],u=e.currParamIndex;for(let m of e.records){let p=s.map(h=>m[h]),c=[];for(let h of p)h instanceof $?c.push(h.rawValue):(l.push(h),c.push(`@${u++}`));d.push(`(${c.join(", ")})`);}let f=`${o} (${a}) values ${d.join(", ")}`;if(!e.disableReturning)if(e.returning&&e.returning.length){let m=e.returning.map(p=>`inserted.${r.formatStringColumn("mssql",p)}`).join(", ");f=f.replace(") values",`) output ${m} values`);}else {let m=this.getOutputColumns(s,r);f=f.replace(") values",`) output ${m} values`);}return {sql:f,bindings:l}}getOutputColumns(t,e){let r=[...t],o=this.model.primaryKey;return o&&!t.includes(o)&&r.push(o),r.map(n=>`inserted.${e.formatStringColumn("mssql",n)}`).join(", ")}},pd=new vo;var ko=class{toSql(t){let e=t;if(e.isRawValue)return {sql:e.table,bindings:[]};let r=new y(this.model),o=e.left;o.includes(".")||(o=`${e.table}.${o}`);let n=e.right;n.includes(".")||(n=`${this.model.table}.${n}`);let s=r.formatStringColumn("mssql",o),a=r.formatStringColumn("mssql",n),d=`${r.formatStringTable("mssql",e.table)} on ${s} ${e.on?.operator} ${a}`,u=[];if(e.additionalConditions&&e.additionalConditions.length>0){let f=new T(this.model,"mssql");for(let m of e.additionalConditions){let p=f.parse([m]);if(p.sql){let c=p.sql.replace(/^where\s+/i,"");d+=` and ${c}`,u.push(...p.bindings);}}}return {sql:d,bindings:u}}},fd=new ko;var Qo=class{toSql(t){let e=t;return {sql:`fetch next @${e.currParamIndex} rows only`,bindings:[e.limit]}}},yd=new Qo;var Bo=class{toSql(t){return {sql:"",bindings:[]}}},hd=new Bo;var Ko=class{toSql(t){let e=t;return {sql:`offset @${e.currParamIndex} rows`,bindings:[e.offset]}}},gd=new Ko;var Lo=class{toSql(t){let e=t;return e.isRawValue?{sql:e.table,bindings:[]}:(b.warn("MSSQL does not support ON CONFLICT or ON DUPLICATE KEY. Use MERGE statement for upsert operations. This clause will be ignored. Consider using raw queries for MSSQL upserts."),{sql:"",bindings:[]})}},bd=new Lo;var Wo=class{toSql(t){let e=t;if(e.isRawValue)return {sql:e.column,bindings:[]};let r=new y(this.model).formatStringColumn("mssql",e.column),o=e.direction.toLowerCase();return {sql:`${r} ${o}`,bindings:[]}}},Td=new Wo;var Uo=class{toSql(t){return {sql:t.rawValue,bindings:[]}}},Nd=new Uo;var Fo=class{toSql(t){return {sql:`SELECT
|
|
136
136
|
cc.name AS name,
|
|
137
137
|
cc.definition AS expression
|
|
138
138
|
FROM sys.check_constraints cc
|