hysteria-orm 10.1.4 → 10.1.5

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/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';var ge=require('crypto'),Oe=require('dayjs'),kl=require('dayjs/plugin/customParseFormat.js'),Fl=require('dayjs/plugin/timezone.js'),Ll=require('dayjs/plugin/utc.js'),ml=require('fs'),sqlHighlight=require('sql-highlight'),sqlFormatter=require('sql-formatter'),ut=require('path'),dd=require('pluralize'),stream=require('stream'),url=require('url'),module$1=require('module'),bundleRequire=require('bundle-require');var _documentCurrentScript=typeof document!=='undefined'?document.currentScript:null;function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var ge__default=/*#__PURE__*/_interopDefault(ge);var Oe__default=/*#__PURE__*/_interopDefault(Oe);var kl__default=/*#__PURE__*/_interopDefault(kl);var Fl__default=/*#__PURE__*/_interopDefault(Fl);var Ll__default=/*#__PURE__*/_interopDefault(Ll);var ml__default=/*#__PURE__*/_interopDefault(ml);var ut__default=/*#__PURE__*/_interopDefault(ut);var dd__default=/*#__PURE__*/_interopDefault(dd);var $l=Object.defineProperty;var V=(i=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(i,{get:(t,e)=>(typeof require<"u"?require:t)[e]}):i)(function(i){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+i+'" is not supported')});var U=(i,t,e,r)=>{for(var o=void 0,n=i.length-1,s;n>=0;n--)(s=i[n])&&(o=(s(t,e,o))||o);return o&&$l(t,e,o),o};var P=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);}}};P.store=new WeakMap;var hr=Symbol("mongoProperties");function gr(){return (i,t)=>{let e=P.getMetadata(hr,i)||[];e.push(t),P.defineMetadata(hr,e,i);}}function Ts(i){return P.getMetadata(hr,i.prototype)||[]}var u=class extends Error{constructor(t,e,r){super(t+" - "+e),this.code=e,this.caller=t,this.error=r;}};function Kl(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 Ql(i){return typeof i!="string"||!i?i:i.replace(/([-_][a-z])/g,t=>t.toUpperCase().replace("-","").replace("_",""))}function I(i,t){return t==="preserve"?i:t==="snake"?Kl(i):t==="camel"?Ql(i):t instanceof RegExp?i.replace(t,e=>e[1].toUpperCase()):t(i)}Oe__default.default.extend(Ll__default.default);Oe__default.default.extend(Fl__default.default);Oe__default.default.extend(kl__default.default);var mt=(i,t="ISO",e="UTC")=>{if(!(i instanceof Date)||isNaN(i.getTime()))throw new Error("Invalid date provided");let r=Oe__default.default(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()}},bs=(i,t,e="UTC")=>{if(i===null)return null;if(i instanceof Date){if(isNaN(i.getTime()))throw new u("DateUtils::parseDate","INVALID_DATE_OBJECT");return i}try{let r=t?Oe__default.default(i,t):Oe__default.default(i);if(!r.isValid())throw new u("DateUtils::parseDate","INVALID_DATE_STRING");return e==="UTC"?r.utc().toDate():r.local().toDate()}catch{throw new u("DateUtils::parseDate","FAILED_TO_PARSE_DATE")}},ae=(i=new Date)=>Oe__default.default(i).utc().format("YYYY-MM-DD HH:mm:ss");var ws=(i,t)=>{try{let e=ge__default.default.createHash("sha256").update(i).digest(),r=ge__default.default.randomBytes(16),o=ge__default.default.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 u("Encryption::encryptSymmetric","FAILED_TO_ENCRYPT_SYMMETRICALLY",e instanceof Error?e:void 0)}},Ss=(i,t)=>{try{let e=ge__default.default.createHash("sha256").update(i).digest(),[r,o]=t.split(":"),n=ge__default.default.createDecipheriv("aes-256-cbc",e,Buffer.from(r,"hex")),s=n.update(o,"hex","utf8");return s+=n.final("utf8"),s}catch(e){throw new u("Encryption::decryptSymmetric","FAILED_TO_DECRYPT_SYMMETRICALLY",e instanceof Error?e:void 0)}},Ns=(i,t)=>{try{let e=ge__default.default.randomBytes(32),r=ge__default.default.randomBytes(16),o=ge__default.default.createCipheriv("aes-256-cbc",e,r),n=o.update(t,"utf8","hex");n+=o.final("hex");let s=ge.publicEncrypt(i,e);return `${r.toString("hex")}:${s.toString("hex")}:${n}`}catch(e){throw new u("Encryption::encryptAsymmetric","FAILED_TO_ENCRYPT_ASYMMETRICALLY",e instanceof Error?e:void 0)}},Ms=(i,t)=>{try{let[e,r,o]=t.split(":"),n=ge.privateDecrypt(i,Buffer.from(r,"hex")),s=ge__default.default.createDecipheriv("aes-256-cbc",n,Buffer.from(e,"hex")),a=s.update(o,"hex","utf8");return a+=s.final("utf8"),a}catch(e){throw new u("Encryption::decryptAsymmetric","FAILED_TO_DECRYPT_ASYMMETRICALLY",e instanceof Error?e:void 0)}};var br="0123456789ABCDEFGHJKMNPQRSTVWXYZ",Tr=br.length,Vl=10,Hl=16,Yl=(i,t)=>{let e="";for(let r=0;r<t;r++){let o=i%Tr;e=br.charAt(o)+e,i=(i-o)/Tr;}return e},zl=i=>{let t=ge.randomBytes(i),e="";for(let r=0;r<i;r++){let o=t[r];e+=br.charAt(o%Tr);}return e},qs=()=>{let i=Math.floor(Date.now()/1e3),t=Yl(i,Vl),e=zl(Hl);return t+e};function wr(i){return i.replace(/^[`"]|[`"]$/g,"")}function Sr(i,t,e){if(!i.includes(".")){let n=wr(i);return `${t}.${n}`}let[r,o]=i.split(".");return r=wr(r),o=wr(o),r!==e?i:o==="*"?`${t}.*`:`${t}.${o}`}function w(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 Se=class{};Se.modelCaseConvention="camel",Se.databaseCaseConvention="snake";var Jl=async(i,t,e,r,o=[],n=[],s=false)=>{let a=new t,l=new Set(e.filter(p=>p.hidden).map(p=>p.columnName)),d=new Map(e.map(p=>[p.databaseName,p])),m=o.length?new Set(o):null;if(await Promise.all(Object.keys(i).map(async p=>{let c=i[p],y=d.get(p)?.columnName??I(p,t.modelCaseConvention);if(y==="$annotations"&&!s){Gl(i,p,a,t,n);return}if(!r.has(y)||l.has(y)||m&&!m.has(y))return;if(c===null){a[y]=null;return}let h=r.get(y);if(h&&h.serialize){a[y]=await h.serialize(c);return}a[y]=c;})),m)for(let p of m)p in a||(a[p]=null);return a},Gl=(i,t,e,r,o=[])=>{let n=i[t];if(!n||!Object.keys(n).length)return;let s=o.length>0?new Set(o):null;if(!s)return;let a={};for(let l of Object.keys(n))s.has(l)&&(a[I(l,r.modelCaseConvention)]=n[l]);Object.keys(a).length>0&&(e[t]=a);},le=async(i,t,e=[],r=[],o=false)=>{if(!i.length)return null;let n=t.getColumns(),s=new Map(n.map(d=>[d.columnName,d])),a=[];for(let d of e){if(d.toLowerCase().includes("as"))continue;let m=d;if(m.includes(".")&&(m=m.split(".").pop()),m==="*")continue;let p=s.get(m)?.columnName??I(m,t.modelCaseConvention);a.push(p);}e=a;let l=await Promise.all(i.map(async d=>await Jl(d,t,n,s,e,r,o)));return l.length===1?l[0]:l};var q={DB_TYPE:process.env.DB_TYPE,DB_HOST:process.env.DB_HOST,DB_PORT:process.env.DB_PORT,DB_USER:process.env.DB_USER,DB_PASSWORD:process.env.DB_PASSWORD,DB_DATABASE:process.env.DB_DATABASE,DB_LOGS:process.env.DB_LOGS==="true",MIGRATION_PATH:process.env.MIGRATION_PATH||"database/migrations",REDIS_HOST:process.env.REDIS_HOST,REDIS_PORT:process.env.REDIS_PORT,REDIS_USERNAME:process.env.REDIS_USERNAME,REDIS_PASSWORD:process.env.REDIS_PASSWORD,REDIS_DATABASE:process.env.REDIS_DATABASE,MONGO_URL:process.env.MONGO_URL,MONGO_LOGS:process.env.MONGO_LOGS==="true"},Xl=()=>{try{ml__default.default.readFileSync(".env","utf8").split(`
2
2
  `).forEach(e=>{let[r,o]=e.split("="),n=r.trim(),s=o.trim();switch(n){case "DB_TYPE":q.DB_TYPE||(q.DB_TYPE=s);break;case "DB_HOST":q.DB_HOST||(q.DB_HOST=s);break;case "DB_PORT":q.DB_PORT||(q.DB_PORT=s);break;case "DB_USER":q.DB_USER||(q.DB_USER=s);break;case "DB_PASSWORD":q.DB_PASSWORD||(q.DB_PASSWORD=s);break;case "DB_DATABASE":q.DB_DATABASE||(q.DB_DATABASE=s);break;case "MIGRATION_PATH":q.MIGRATION_PATH||(q.MIGRATION_PATH=s||"database/migrations");break;case "REDIS_HOST":q.REDIS_HOST||(q.REDIS_HOST=s);break;case "REDIS_PORT":q.REDIS_PORT||(q.REDIS_PORT=s);break;case "REDIS_USERNAME":q.REDIS_USERNAME||(q.REDIS_USERNAME=s);break;case "REDIS_PASSWORD":q.REDIS_PASSWORD||(q.REDIS_PASSWORD=s);break;case "REDIS_DATABASE":q.REDIS_DATABASE||(q.REDIS_DATABASE=s);break;case "MONGO_URL":q.MONGO_URL||(q.MONGO_URL=s);break}});}catch{}finally{return q}},M=Xl();var ve=class{constructor(t){switch(this.type=t?.type||M.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;default:throw new u(`Invalid database type: ${this.type}, please provide a valid database type in your input or in the .env file with the key DB_TYPE
3
- Valid database types are: [mongo, postgres, cockroachdb, mysql, mariadb, sqlite]`,`UNSUPPORTED_DATABASE_TYPE_${this.type}`)}}handleCockroachdbSource(t){this.host=t?.host||M.DB_HOST,this.port=+t?.port||+M.DB_PORT,this.username=t?.username||M.DB_USER,this.password=t?.password||M.DB_PASSWORD,this.database=t?.database||M.DB_DATABASE,this.logs=t?.logs||M.DB_LOGS||false,this.port||(this.port=26257);}handlePostgresSource(t){this.host=t?.host||M.DB_HOST,this.port=+t?.port||+M.DB_PORT,this.username=t?.username||M.DB_USER,this.password=t?.password||M.DB_PASSWORD,this.database=t?.database||M.DB_DATABASE,this.logs=t?.logs||M.DB_LOGS||false,this.port||(this.port=5432);}handleMysqlSource(t){this.host=t?.host||M.DB_HOST,this.port=+t?.port||+M.DB_PORT,this.username=t?.username||M.DB_USER,this.password=t?.password||M.DB_PASSWORD,this.database=t?.database||M.DB_DATABASE,this.logs=t?.logs||M.DB_LOGS||false,this.port||(this.port=3306);}handleSqliteSource(t){this.database=t?.database||M.DB_DATABASE,this.logs=t?.logs||M.DB_LOGS||false;}handleMongoSource(t){this.url=t?.url||M.MONGO_URL,this.logs=t?.logs||M.MONGO_LOGS||false;}};var ed=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},td=i=>i.openApi?.required??false,rd=i=>{let t=i.getColumns(),e={};for(let r of t)r.hidden||(e[r.columnName]=ed(r));return e},od=i=>{let t=i.getColumns(),e=[];for(let r of t)td(r)&&e.push(r.columnName);return e||[]},Nr=i=>{let t=rd(i),e=od(i);return {type:"object",properties:t,required:e.length?e:[]}},hu=i=>i.map(t=>Nr(t)),gu=i=>Nr(i),Cs=i=>i.map(t=>({...Nr(t),modelName:t.name}));var Ke={info:"\x1B[32m",warn:"\x1B[33m",error:"\x1B[31m",reset:"\x1B[0m"};function sd(){let i=new Date,t=e=>e.toString().padStart(2,"0");return `${i.getFullYear()}-${t(i.getMonth()+1)}-${t(i.getDate())} ${t(i.getHours())}:${t(i.getMinutes())}:${t(i.getSeconds())}`}function Mr(i,t){let e=sd(),r=i.toUpperCase();return i==="error"?`${Ke.error}[${r}] ${e}
3
+ Valid database types are: [mongo, postgres, cockroachdb, mysql, mariadb, sqlite]`,`UNSUPPORTED_DATABASE_TYPE_${this.type}`)}}handleCockroachdbSource(t){this.host=t?.host||M.DB_HOST,this.port=+t?.port||+M.DB_PORT,this.username=t?.username||M.DB_USER,this.password=t?.password||M.DB_PASSWORD,this.database=t?.database||M.DB_DATABASE,this.logs=t?.logs||M.DB_LOGS||false,this.port||(this.port=26257);}handlePostgresSource(t){this.host=t?.host||M.DB_HOST,this.port=+t?.port||+M.DB_PORT,this.username=t?.username||M.DB_USER,this.password=t?.password||M.DB_PASSWORD,this.database=t?.database||M.DB_DATABASE,this.logs=t?.logs||M.DB_LOGS||false,this.port||(this.port=5432);}handleMysqlSource(t){this.host=t?.host||M.DB_HOST,this.port=+t?.port||+M.DB_PORT,this.username=t?.username||M.DB_USER,this.password=t?.password||M.DB_PASSWORD,this.database=t?.database||M.DB_DATABASE,this.logs=t?.logs||M.DB_LOGS||false,this.port||(this.port=3306);}handleSqliteSource(t){this.database=t?.database||M.DB_DATABASE,this.logs=t?.logs||M.DB_LOGS||false;}handleMongoSource(t){this.url=t?.url||M.MONGO_URL,this.logs=t?.logs||M.MONGO_LOGS||false;}};var ed=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},td=i=>i.openApi?.required??false,rd=i=>{let t=i.getColumns(),e={};for(let r of t)r.hidden||(e[r.columnName]=ed(r));return e},od=i=>{let t=i.getColumns(),e=[];for(let r of t)td(r)&&e.push(r.columnName);return e||[]},Nr=i=>{let t=rd(i),e=od(i);return {type:"object",properties:t,required:e.length?e:[]}},hu=i=>i.map(t=>Nr(t)),gu=i=>Nr(i),Cs=i=>i.map(t=>({...Nr(t),modelName:t.name,$id:t.name}));var Ke={info:"\x1B[32m",warn:"\x1B[33m",error:"\x1B[31m",reset:"\x1B[0m"};function sd(){let i=new Date,t=e=>e.toString().padStart(2,"0");return `${i.getFullYear()}-${t(i.getMonth()+1)}-${t(i.getDate())} ${t(i.getHours())}:${t(i.getMinutes())}:${t(i.getSeconds())}`}function Mr(i,t){let e=sd(),r=i.toUpperCase();return i==="error"?`${Ke.error}[${r}] ${e}
4
4
  ${t}${Ke.reset}
5
5
  `:i==="warn"?`${Ke.warn}[${r}] ${e}
6
6
  ${t}${Ke.reset}