@mrxsys/mrx-core 2.3.5-canary-20250520-f78ef3f → 2.4.0-canary-20250521-731c6b4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/CHANGELOG.md +33 -186
  2. package/dist/chunk-1c7w5cx7.js +3 -0
  3. package/dist/{chunk-n4jkqchx.js → chunk-40pg2cqx.js} +1 -1
  4. package/dist/chunk-4v4tp5qj.js +2 -0
  5. package/dist/{chunk-mrzhtfav.js → chunk-4w7nd4nw.js} +1 -1
  6. package/dist/chunk-5nvsx7md.js +2 -0
  7. package/dist/chunk-89mnpfvy.js +2 -0
  8. package/dist/{chunk-yfegpmwy.js → chunk-91srr77d.js} +1 -1
  9. package/dist/{chunk-46z9v7pz.js → chunk-9hj714bv.js} +1 -1
  10. package/dist/chunk-9rss6865.js +2 -0
  11. package/dist/{chunk-kn1300vm.js → chunk-df9xr1f5.js} +1 -1
  12. package/dist/chunk-dq00mfya.js +2 -0
  13. package/dist/chunk-fnb68m68.js +2 -0
  14. package/dist/chunk-g6a16nyh.js +2 -0
  15. package/dist/chunk-gtgpa8nc.js +2 -0
  16. package/dist/chunk-gxjax5n3.js +2 -0
  17. package/dist/chunk-h9er1sh5.js +2 -0
  18. package/dist/{chunk-khjde4tm.js → chunk-mwpajm9x.js} +1 -1
  19. package/dist/chunk-n5w9cwwg.js +2 -0
  20. package/dist/chunk-pt7wrvtr.js +2 -0
  21. package/dist/{chunk-2ysjvwgk.js → chunk-qndyhwdn.js} +1 -1
  22. package/dist/{chunk-qmdvezak.js → chunk-v5dfx8mh.js} +1 -1
  23. package/dist/chunk-wgq0yyqw.js +2 -0
  24. package/dist/chunk-wtfcgg9s.js +2 -0
  25. package/dist/{chunk-5x3px0nq.js → chunk-z00b1r18.js} +1 -1
  26. package/dist/data/data.d.ts +99 -0
  27. package/dist/data/enums/dataErrorKeys.d.ts +7 -0
  28. package/dist/data/enums/index.d.ts +1 -0
  29. package/dist/data/enums/index.js +2 -0
  30. package/dist/data/index.d.ts +1 -0
  31. package/dist/data/index.js +2 -0
  32. package/dist/data/transformers/camelCase.d.ts +25 -0
  33. package/dist/data/transformers/index.d.ts +4 -0
  34. package/dist/data/transformers/index.js +2 -0
  35. package/dist/data/transformers/kebabCase.d.ts +25 -0
  36. package/dist/data/transformers/pascalCase.d.ts +25 -0
  37. package/dist/data/transformers/snakeCase.d.ts +25 -0
  38. package/dist/data/types/index.d.ts +1 -0
  39. package/dist/data/types/index.js +1 -0
  40. package/dist/data/types/keyTransformer.d.ts +11 -0
  41. package/dist/database/enums/{databaseKeyError.d.ts → databaseErrorKeys.d.ts} +1 -5
  42. package/dist/database/enums/index.d.ts +1 -1
  43. package/dist/database/enums/index.js +1 -1
  44. package/dist/database/events/index.d.ts +2 -2
  45. package/dist/database/index.js +1 -1
  46. package/dist/database/mssql.d.ts +9 -9
  47. package/dist/database/table.d.ts +1 -1
  48. package/dist/elysia/enums/{elysiaKeyError.d.ts → elysiaErrorKeys.d.ts} +1 -5
  49. package/dist/elysia/enums/index.d.ts +1 -1
  50. package/dist/elysia/enums/index.js +1 -1
  51. package/dist/elysia/error.d.ts +0 -4
  52. package/dist/elysia/index.js +1 -1
  53. package/dist/elysia/schemas/index.js +1 -1
  54. package/dist/error/index.js +1 -1
  55. package/dist/index.d.ts +67 -17
  56. package/dist/index.js +1 -1
  57. package/dist/logger/enums/index.d.ts +1 -0
  58. package/dist/logger/enums/index.js +2 -0
  59. package/dist/logger/enums/loggerErrorKeys.d.ts +6 -0
  60. package/dist/logger/events/index.d.ts +1 -0
  61. package/dist/logger/events/index.js +1 -0
  62. package/dist/logger/events/loggerEvents.d.ts +4 -0
  63. package/dist/logger/index.d.ts +1 -0
  64. package/dist/logger/index.js +2 -0
  65. package/dist/logger/logger.d.ts +173 -0
  66. package/dist/logger/strategies/consoleLogger.d.ts +22 -0
  67. package/dist/logger/strategies/fileLogger.d.ts +25 -0
  68. package/dist/logger/strategies/index.d.ts +2 -0
  69. package/dist/logger/strategies/index.js +2 -0
  70. package/dist/logger/types/bodiesIntersection.d.ts +2 -0
  71. package/dist/logger/types/index.d.ts +6 -0
  72. package/dist/logger/types/index.js +1 -0
  73. package/dist/logger/types/logLevels.d.ts +4 -0
  74. package/dist/logger/types/logStreamChunk.d.ts +15 -0
  75. package/dist/logger/types/loggerStrategy.d.ts +11 -0
  76. package/dist/logger/types/strategyBody.d.ts +2 -0
  77. package/dist/logger/types/strategyMap.d.ts +2 -0
  78. package/dist/mailer/enums/index.d.ts +1 -1
  79. package/dist/mailer/enums/index.js +1 -1
  80. package/dist/mailer/enums/{mailerKeyError.d.ts → mailerErrorKeys.d.ts} +1 -5
  81. package/dist/mailer/index.js +1 -1
  82. package/dist/mailer/smtp.d.ts +3 -3
  83. package/dist/repository/index.js +1 -1
  84. package/dist/repository/repository.d.ts +12 -12
  85. package/dist/singletonManager/enums/index.d.ts +1 -0
  86. package/dist/singletonManager/enums/index.js +2 -0
  87. package/dist/singletonManager/enums/singletonManagerErrorKeys.d.ts +7 -0
  88. package/dist/singletonManager/index.d.ts +1 -0
  89. package/dist/singletonManager/index.js +2 -0
  90. package/dist/singletonManager/singletonManager.d.ts +112 -0
  91. package/dist/store/index.js +1 -1
  92. package/dist/typedEventEmitter/index.d.ts +1 -0
  93. package/dist/typedEventEmitter/index.js +2 -0
  94. package/dist/typedEventEmitter/typedEventEmitter.d.ts +199 -0
  95. package/dist/typedEventEmitter/types/eventMap.d.ts +6 -0
  96. package/dist/typedEventEmitter/types/index.d.ts +1 -0
  97. package/dist/typedEventEmitter/types/index.js +1 -0
  98. package/dist/utils/enums/index.d.ts +1 -1
  99. package/dist/utils/enums/index.js +1 -1
  100. package/dist/utils/enums/utilErrorKeys.d.ts +4 -0
  101. package/dist/utils/env.d.ts +1 -1
  102. package/dist/utils/index.js +1 -1
  103. package/package.json +18 -7
  104. package/dist/chunk-ckg4jheb.js +0 -2
  105. package/dist/chunk-fktnffnw.js +0 -2
  106. package/dist/utils/enums/utilKeyError.d.ts +0 -8
  107. package/sandbox/server.ts +0 -2
@@ -0,0 +1,2 @@
1
+ import{s as k}from"./chunk-gxjax5n3.js";import{A as B,C as D,E as M,F as m,G as o,H as n,I as v,J as g,K as E,u as y,v as P,w as c,x as f,z as q}from"./chunk-df9xr1f5.js";import{Y as A,Z as p}from"./chunk-v5dfx8mh.js";import{$ as cG,_ as pG}from"./chunk-mwpajm9x.js";import{ca as gG}from"./chunk-9rss6865.js";import{ma as hG}from"./chunk-n5w9cwwg.js";import{ra as L}from"./chunk-z00b1r18.js";import{ua as iG}from"./chunk-4w7nd4nw.js";var O={};iG(O,{TypeGuardUnknownTypeError:()=>i,IsVoid:()=>SG,IsUnsafe:()=>OG,IsUnknown:()=>NG,IsUnionLiteral:()=>ZY,IsUnion:()=>h,IsUndefined:()=>xG,IsUint8Array:()=>fG,IsTuple:()=>KG,IsTransform:()=>RG,IsThis:()=>wG,IsTemplateLiteral:()=>EG,IsSymbol:()=>kG,IsString:()=>PG,IsSchema:()=>J,IsRegExp:()=>qG,IsRef:()=>CG,IsRecursive:()=>YY,IsRecord:()=>TG,IsReadonly:()=>lG,IsProperties:()=>N,IsPromise:()=>AG,IsOptional:()=>aG,IsObject:()=>MG,IsNumber:()=>LG,IsNull:()=>BG,IsNot:()=>jG,IsNever:()=>DG,IsMappedResult:()=>JG,IsMappedKey:()=>QG,IsLiteralValue:()=>FG,IsLiteralString:()=>WG,IsLiteralNumber:()=>_G,IsLiteralBoolean:()=>GY,IsLiteral:()=>K,IsKindOf:()=>$,IsKind:()=>yG,IsIterator:()=>UG,IsIntersect:()=>HG,IsInteger:()=>XG,IsImport:()=>eG,IsFunction:()=>$G,IsDate:()=>VG,IsConstructor:()=>zG,IsComputed:()=>ZG,IsBoolean:()=>YG,IsBigInt:()=>GG,IsAsyncIterator:()=>e,IsArray:()=>a,IsArgument:()=>l,IsAny:()=>u});class i extends m{}var sG=["Argument","Any","Array","AsyncIterator","BigInt","Boolean","Computed","Constructor","Date","Enum","Function","Integer","Intersect","Iterator","Literal","MappedKey","MappedResult","Not","Null","Number","Object","Promise","Record","Ref","RegExp","String","Symbol","TemplateLiteral","This","Tuple","Undefined","Union","Uint8Array","Unknown","Void"];function r(G){try{return new RegExp(G),!0}catch{return!1}}function b(G){if(!D(G))return!1;for(let Y=0;Y<G.length;Y++){let Z=G.charCodeAt(Y);if(Z>=7&&Z<=13||Z===27||Z===127)return!1}return!0}function s(G){return I(G)||J(G)}function R(G){return M(G)||c(G)}function W(G){return M(G)||q(G)}function I(G){return M(G)||f(G)}function U(G){return M(G)||D(G)}function tG(G){return M(G)||D(G)&&b(G)&&r(G)}function uG(G){return M(G)||D(G)&&b(G)}function t(G){return M(G)||J(G)}function lG(G){return B(G)&&G[n]==="Readonly"}function aG(G){return B(G)&&G[v]==="Optional"}function u(G){return $(G,"Any")&&U(G.$id)}function l(G){return $(G,"Argument")&&q(G.index)}function a(G){return $(G,"Array")&&G.type==="array"&&U(G.$id)&&J(G.items)&&W(G.minItems)&&W(G.maxItems)&&I(G.uniqueItems)&&t(G.contains)&&W(G.minContains)&&W(G.maxContains)}function e(G){return $(G,"AsyncIterator")&&G.type==="AsyncIterator"&&U(G.$id)&&J(G.items)}function GG(G){return $(G,"BigInt")&&G.type==="bigint"&&U(G.$id)&&R(G.exclusiveMaximum)&&R(G.exclusiveMinimum)&&R(G.maximum)&&R(G.minimum)&&R(G.multipleOf)}function YG(G){return $(G,"Boolean")&&G.type==="boolean"&&U(G.$id)}function ZG(G){return $(G,"Computed")&&D(G.target)&&P(G.parameters)&&G.parameters.every((Y)=>J(Y))}function zG(G){return $(G,"Constructor")&&G.type==="Constructor"&&U(G.$id)&&P(G.parameters)&&G.parameters.every((Y)=>J(Y))&&J(G.returns)}function VG(G){return $(G,"Date")&&G.type==="Date"&&U(G.$id)&&W(G.exclusiveMaximumTimestamp)&&W(G.exclusiveMinimumTimestamp)&&W(G.maximumTimestamp)&&W(G.minimumTimestamp)&&W(G.multipleOfTimestamp)}function $G(G){return $(G,"Function")&&G.type==="Function"&&U(G.$id)&&P(G.parameters)&&G.parameters.every((Y)=>J(Y))&&J(G.returns)}function eG(G){return $(G,"Import")&&y(G,"$defs")&&B(G.$defs)&&N(G.$defs)&&y(G,"$ref")&&D(G.$ref)&&G.$ref in G.$defs}function XG(G){return $(G,"Integer")&&G.type==="integer"&&U(G.$id)&&W(G.exclusiveMaximum)&&W(G.exclusiveMinimum)&&W(G.maximum)&&W(G.minimum)&&W(G.multipleOf)}function N(G){return B(G)&&Object.entries(G).every(([Y,Z])=>b(Y)&&J(Z))}function HG(G){return $(G,"Intersect")&&(D(G.type)&&G.type!=="object"?!1:!0)&&P(G.allOf)&&G.allOf.every((Y)=>J(Y)&&!RG(Y))&&U(G.type)&&(I(G.unevaluatedProperties)||t(G.unevaluatedProperties))&&U(G.$id)}function UG(G){return $(G,"Iterator")&&G.type==="Iterator"&&U(G.$id)&&J(G.items)}function $(G,Y){return B(G)&&E in G&&G[E]===Y}function WG(G){return K(G)&&D(G.const)}function _G(G){return K(G)&&q(G.const)}function GY(G){return K(G)&&f(G.const)}function K(G){return $(G,"Literal")&&U(G.$id)&&FG(G.const)}function FG(G){return f(G)||q(G)||D(G)}function QG(G){return $(G,"MappedKey")&&P(G.keys)&&G.keys.every((Y)=>q(Y)||D(Y))}function JG(G){return $(G,"MappedResult")&&N(G.properties)}function DG(G){return $(G,"Never")&&B(G.not)&&Object.getOwnPropertyNames(G.not).length===0}function jG(G){return $(G,"Not")&&J(G.not)}function BG(G){return $(G,"Null")&&G.type==="null"&&U(G.$id)}function LG(G){return $(G,"Number")&&G.type==="number"&&U(G.$id)&&W(G.exclusiveMaximum)&&W(G.exclusiveMinimum)&&W(G.maximum)&&W(G.minimum)&&W(G.multipleOf)}function MG(G){return $(G,"Object")&&G.type==="object"&&U(G.$id)&&N(G.properties)&&s(G.additionalProperties)&&W(G.minProperties)&&W(G.maxProperties)}function AG(G){return $(G,"Promise")&&G.type==="Promise"&&U(G.$id)&&J(G.item)}function TG(G){return $(G,"Record")&&G.type==="object"&&U(G.$id)&&s(G.additionalProperties)&&B(G.patternProperties)&&((Y)=>{let Z=Object.getOwnPropertyNames(Y.patternProperties);return Z.length===1&&r(Z[0])&&B(Y.patternProperties)&&J(Y.patternProperties[Z[0]])})(G)}function YY(G){return B(G)&&g in G&&G[g]==="Recursive"}function CG(G){return $(G,"Ref")&&U(G.$id)&&D(G.$ref)}function qG(G){return $(G,"RegExp")&&U(G.$id)&&D(G.source)&&D(G.flags)&&W(G.maxLength)&&W(G.minLength)}function PG(G){return $(G,"String")&&G.type==="string"&&U(G.$id)&&W(G.minLength)&&W(G.maxLength)&&tG(G.pattern)&&uG(G.format)}function kG(G){return $(G,"Symbol")&&G.type==="symbol"&&U(G.$id)}function EG(G){return $(G,"TemplateLiteral")&&G.type==="string"&&D(G.pattern)&&G.pattern[0]==="^"&&G.pattern[G.pattern.length-1]==="$"}function wG(G){return $(G,"This")&&U(G.$id)&&D(G.$ref)}function RG(G){return B(G)&&o in G}function KG(G){return $(G,"Tuple")&&G.type==="array"&&U(G.$id)&&q(G.minItems)&&q(G.maxItems)&&G.minItems===G.maxItems&&(M(G.items)&&M(G.additionalItems)&&G.minItems===0||P(G.items)&&G.items.every((Y)=>J(Y)))}function xG(G){return $(G,"Undefined")&&G.type==="undefined"&&U(G.$id)}function ZY(G){return h(G)&&G.anyOf.every((Y)=>WG(Y)||_G(Y))}function h(G){return $(G,"Union")&&U(G.$id)&&B(G)&&P(G.anyOf)&&G.anyOf.every((Y)=>J(Y))}function fG(G){return $(G,"Uint8Array")&&G.type==="Uint8Array"&&U(G.$id)&&W(G.minByteLength)&&W(G.maxByteLength)}function NG(G){return $(G,"Unknown")&&U(G.$id)}function OG(G){return $(G,"Unsafe")}function SG(G){return $(G,"Void")&&G.type==="void"&&U(G.$id)}function yG(G){return B(G)&&E in G&&D(G[E])&&!sG.includes(G[E])}function J(G){return B(G)&&(u(G)||l(G)||a(G)||YG(G)||GG(G)||e(G)||ZG(G)||zG(G)||VG(G)||$G(G)||XG(G)||HG(G)||UG(G)||K(G)||QG(G)||JG(G)||DG(G)||jG(G)||BG(G)||LG(G)||MG(G)||AG(G)||TG(G)||CG(G)||qG(G)||PG(G)||kG(G)||EG(G)||wG(G)||KG(G)||xG(G)||h(G)||fG(G)||NG(G)||OG(G)||SG(G)||yG(G))}import{Elysia as zY,t as H}from"elysia";var VY=(G)=>H.Object({$eq:G,$neq:G,...!O.IsBoolean(G)?{$lt:G,$lte:G,$gt:G,$gte:G,$in:H.Array(G),$nin:H.Array(G),$between:H.Tuple([G,G]),$nbetween:H.Tuple([G,G]),$like:H.String(),$nlike:H.String()}:{},$isNull:H.Boolean()}),$Y=(G)=>{let{properties:Y}=G,Z={};for(let[z,V]of Object.entries(Y)){let X=VY(V);Z[z]=H.Array(H.Union([H.Partial(X),V]))}return Z},XY=(G)=>H.Array(H.Union([H.Partial(H.Object({selectedFields:H.Union([H.Array(H.KeyOf(G)),H.KeyOf(G)]),value:H.String()})),H.String()])),HY=(G)=>H.Array(H.KeyOf(G)),x=(G)=>H.Composite([H.Object({$q:H.Optional(XY(G)),$selectedFields:H.Optional(HY(G))}),H.Partial(H.Object($Y(G)))]),UY=(G)=>H.Composite([x(G),H.Partial(H.Object({$limit:H.Number(),$offset:H.Number()}))]),bG=(G,Y,Z=[])=>new zY({name:`advancedSearchPlugin-${G}`,seed:Y}).model({[`advancedSearch${G}Query`]:x(Y),[`advancedSearch${G}QueryWithPagination`]:UY(Y)}).macro({hasAdvancedSearch:{resolve:({query:z})=>{let V=z,X={advancedSearch:[],selectedFields:V.$selectedFields||["*"],pagination:{limit:V.$limit||100,offset:V.$offset||0}};if(z.$q){let j=Array.isArray(z.$q)?z.$q:[z.$q];X.advancedSearch.push(...j.map((_)=>({$q:_})))}V=gG(V,["$selectedFields","$q","$limit","$offset",...Z],!0);for(let[j,_]of Object.entries(V))(Array.isArray(_)?_:[_]).forEach((F,C)=>{if(!X.advancedSearch[C])X.advancedSearch[C]={};X.advancedSearch[C][j]=F});return X}}}).as("scoped");import{Elysia as WY,t as IG}from"elysia";var dG=(G)=>new WY({name:"dynamicDatabaseSelectorPlugin"}).model({databaseUsingHeader:IG.Object({[G.headerKey||"database-using"]:IG.String()})}).macro({hasDynamicDatabaseSelector:{async resolve({headers:Y}){let Z=Y[G.headerKey||"database-using"];if(!Z)throw new L({key:A.dynamicDatabaseKeyNotFound,message:"Dynamic Database key not found in the request headers.",httpStatusCode:400});if(!k.has(`database:${Z}`))k.register(`database:${Z}`,hG,{...G.baseDatabaseConfig,databaseName:Z}),await k.get(`database:${Z}`).connect();return{dynamicDB:k.get(`database:${Z}`)}}}}).as("scoped");import{Elysia as d,t as Q}from"elysia";var _Y=(G)=>{let{properties:Y}=G,Z={};for(let z in Y)Z[z]=Q.Union([Y[z],Q.Undefined(),Q.Null(),Q.Literal("")]);return Q.Object({message:Q.String(),content:Q.Array(Q.Partial(Q.Object(Z)))})},FY=(G,Y)=>{let{properties:Z}=G,z={};for(let V in Z)z[V]=Y?.includes(V)?Z[V]:Q.Optional(Z[V]);return Q.Object(z)},QY=(G,Y)=>{let{baseSchema:Z,tableName:z,insertPropertiesSchemaRequired:V}=Y,X=new d().model({[`crud${z}Response200`]:_Y(Z)}),j={insert:()=>X.model({[`crud${z}InsertBody`]:FY(Z,V)}),update:()=>X.model({[`crud${z}UpdateBody`]:Q.Partial(Z)}),count:()=>X.model({[`crud${z}CountResponse200`]:Q.Object({message:Q.String(),content:Q.Number()})})};if(G.forEach((T)=>{if(T in j)j[T]?.()}),["findOne","deleteOne","updateOne"].some((T)=>G.includes(T)))X.model({[`crud${z}IdParam`]:Q.Object({id:Q.Union([Q.String(),Q.Number()])})});return X},JY=(G=[],Y=[])=>{let Z=["insert","find","findOne","update","updateOne","delete","deleteOne","count"],z=G.length>0?G:Z;return Y.length>0?z.filter((V)=>!Y.includes(V)):z},DY=(G)=>{let Y=new d;if(typeof G==="string")Y.resolve(()=>({dynamicDB:k.get(`database:${G}`)}));else Y.use(dG({baseDatabaseConfig:G.baseDatabaseConfig,headerKey:G.headerKey||"database-using"}));return Y.as("scoped")},jY={insertHandler:async(G,Y)=>{let z=G.dynamicDB.getRepository(Y),{body:V}=G,X=await z.insert(V);return{message:`Inserted record for ${Y}`,content:X}},findHandler:async(G,Y)=>{let V=await G.dynamicDB.getRepository(Y).find({advancedSearch:G.advancedSearch,selectedFields:G.selectedFields,limit:G.pagination.limit,offset:G.pagination.offset});return{message:`Found ${V.length} records for ${Y}`,content:V}},findOneHandler:async(G,Y)=>{let Z=G.dynamicDB,z=Z.getRepository(Y),X=Z.getTable(Y).primaryKey,{id:j}=G.params,_=await z.findOne({advancedSearch:{[X[0]]:j}});return{message:`Found record for ${Y}`,content:_}},countHandler:async(G,Y)=>{let V=await G.dynamicDB.getRepository(Y).count({advancedSearch:G.advancedSearch});return{message:`${V} records found for ${Y}`,content:V}},updateHandler:async(G,Y)=>{let z=G.dynamicDB.getRepository(Y);if(!G.advancedSearch||G.advancedSearch.length===0||!G.advancedSearch[0])throw new L({key:A.needAdvancedSearch,message:"You need to provide advanced search to update records. It's dangerous to update all records.",httpStatusCode:400});let V=await z.update(G.body,{advancedSearch:G.advancedSearch,selectedFields:G.selectedField});return{message:`Updated ${V.length} records for ${Y}`,content:V}},updateOneHandler:async(G,Y)=>{let Z=G.dynamicDB,z=Z.getRepository(Y),X=Z.getTable(Y).primaryKey,{id:j}=G.params,_=await z.update(G.body,{advancedSearch:{[X[0]]:j}});return{message:`Updated record for ${Y}`,content:_}},deleteHandler:async(G,Y)=>{let z=G.dynamicDB.getRepository(Y);if(!G.advancedSearch||G.advancedSearch.length===0||!G.advancedSearch[0])throw new L({key:A.needAdvancedSearch,message:"You need to provide advanced search to delete records. It's dangerous to delete all records.",httpStatusCode:400});let V=await z.delete({advancedSearch:G.advancedSearch,selectedFields:G.selectedFields});return{message:`Deleted ${V.length} records for ${Y}`,content:V}},deleteOneHandler:async(G,Y)=>{let Z=G.dynamicDB,z=Z.getRepository(Y),X=Z.getTable(Y).primaryKey,{id:j}=G.params,_=await z.delete({advancedSearch:{[X[0]]:j}});return{message:`Deleted record for ${Y}`,content:_}}},BY=(G,Y,Z,z,V)=>(X)=>{let j={insert:"post",find:"get",findOne:"get",count:"get",update:"patch",updateOne:"patch",delete:"delete",deleteOne:"delete"},_={insert:"/",find:"/",findOne:"/:id",count:"/count",update:"/",updateOne:"/:id",delete:"/",deleteOne:"/:id"};if(G.includes("find")||G.includes("count")||G.includes("update")||G.includes("delete"))X.use(bG(Y,Z));for(let F of G){let C=j[F],w=_[F];if(C&&w){let oG=jY[`${F}Handler`],nG={...F==="findOne"||F==="deleteOne"||F==="updateOne"?{params:`crud${Y}IdParam`}:{},...F==="count"||F==="update"||F==="delete"?{query:x(Z)}:F==="find"?{query:x(Z)}:{},...F==="insert"||F==="update"||F==="updateOne"?{body:`crud${Y}${F==="insert"?"Insert":"Update"}Body`}:{},response:`crud${Y}${F==="count"?"Count":""}Response200`,hasAdvancedSearch:!0,hasDynamicDatabaseSelector:z,needsOnePermission:V[F]||[]};X[C](w,(vG)=>oG(vG,Y),nG)}}return X},vY=(G)=>{let Y=JY(G.includedRoutes,G.excludedRoutes),Z=new d({name:`crudPlugin[${G.tableName}]`,tags:[G.tableName]}).use(QY(Y,G)).use(G.permissionConfig.permissionsPlugin);return Z.use(DY(G.database)).use(BY(Y,G.tableName,G.baseSchema,typeof G.database!=="string",G.permissionConfig.operationsPermissions)),Z};import{Elysia as LY}from"elysia";var tY=new LY({name:"errorPlugin"}).error({CoreError:L}).onError(({code:G,error:Y,set:Z})=>{switch(Z.headers["content-type"]="application/json; charset=utf-8",G){case"CoreError":return Z.status=Y.httpStatusCode,{key:Y.key,message:Y.message,cause:Y.cause};case"VALIDATION":return Z.status=400,{key:"core.error.validation",message:"Validation error",cause:{on:Y.type,found:Y.value,errors:Y.all}};case"NOT_FOUND":return Z.status=404,{key:"core.error.not_found",message:"Not found"};case"INTERNAL_SERVER_ERROR":case"UNKNOWN":default:return Z.status=500,{key:"core.error.internal_server_error",message:"Internal server error"}}}).as("global");import{Elysia as MY}from"elysia";import{SignJWT as AY,jwtVerify as TY}from"jose";var YZ=(G)=>{if(!G.secret)throw new L({key:A.jwtSecretNotFound,message:"Secret key is required for JWT signing and verification."});let Y=new TextEncoder().encode(G.secret),Z=G.name??"jwt";return new MY({name:"jwtPlugin",seed:G}).decorate(Z,{sign(z,V=G.exp??"15m"){let X={iss:"core",aud:"core client",jti:Bun.randomUUIDv7(),...G.payload,...z};try{return new AY(X).setProtectedHeader({alg:"HS256",b64:!0}).setIssuer(X.iss??"core").setAudience(X.aud??"client").setExpirationTime(V).sign(Y)}catch{throw new L({key:A.jwtSignError,message:"Error signing JWT."})}},async verify(z){if(!z)return!1;try{return(await TY(z,Y)).payload}catch{return!1}}}).as("scoped")};import{Elysia as CY}from"elysia";import{existsSync as qY}from"fs";import{platform as PY}from"os";var mG=(G)=>{let Y=PY()==="win32",Z=Y?"\\":"/";if(Y&&/^[A-Z]:\\$/i.test(G)||!Y&&G==="/")return"";let z=G+Z+"package.json";if(qY(z))return z;let V=G.split(Z);if(V.length<=1)return"";let X=V.slice(0,-1).join(Z);if(X==="")return"";return mG(X)},S=await import(mG(Bun.main)),UZ=new CY({name:"microservicePlugin",prefix:"/microservice",detail:{tags:["Microservice"],security:[]}}).model({infoResponse200:pG,pingResponse200:cG}).get("/ping",()=>({message:"pong"}),{detail:{summary:"Ping",description:"Ping the microservice to check if it is alive"},response:"pingResponse200"}).get("/info",()=>({message:"Microservice Information",content:{name:S.default.name,version:S.default.version,description:S.default.description,author:S.default.author}}),{detail:{summary:"Info",description:"Get information about the microservice"},response:"infoResponse200"}).as("scoped");import{Elysia as kY}from"elysia";var DZ=({redis:G,limit:Y,window:Z,message:z})=>new kY({name:"rateLimitPlugin",seed:{redis:G,limit:Y,window:Z,message:z}}).onRequest(async({set:V,request:X})=>{let _=`ratelimit:${X.headers.get("x-forwarded-for")||X.headers.get("x-real-ip")||"127.0.0.1"}`,T=await G.client.get(_);if((T?parseInt(T):0)===0)await G.client.setex(_,Z,"1");else await G.client.incr(_);let C=await G.client.get(_),w=C?parseInt(C):0;if(w>Y)throw V.status=p.tooManyRequests,new L({key:A.rateLimitExceeded,message:z||"Rate limit exceeded",httpStatusCode:p.tooManyRequests,cause:{limit:Y,window:Z,remaining:0,reset:await G.client.ttl(_)}});V.headers={"X-RateLimit-Limit":Y.toString(),"X-RateLimit-Remaining":Math.max(0,Y-w).toString(),"X-RateLimit-Reset":(await G.client.ttl(_)).toString()}}).as("scoped");
2
+ export{x as h,UY as i,bG as j,dG as k,_Y as l,FY as m,vY as n,tY as o,YZ as p,UZ as q,DZ as r};
@@ -1,2 +1,2 @@
1
1
  var f={mssqlConnectionError:"core.error.mssql.database.connection_error",mssqlDisconnectError:"core.error.mssql.database.disconnect_error",mssqlNotConnected:"core.error.mssql.database.not_connected",mssqlNoResult:"core.error.mssql.database.no_result",mssqlQueryError:"core.error.mssql.database.query_error",mssqlDatabaseAccessDenied:"core.error.mssql.database.access_denied",mssqlDatabaseAuthorizationFailed:"core.error.mssql.database.authorization_failed",mssqlDatabaseSyntaxError:"core.error.mssql.database.syntax_error",mssqlDatabaseColumnNotFound:"core.error.mssql.database.column_not_found",mssqlTableNotFound:"core.error.mssql.database.table_not_found",mssqlDatabaseAmbiguousColumn:"core.error.mssql.database.ambiguous_column",mssqlDatabaseDuplicateKey:"core.error.mssql.database.duplicate_key",mssqlDatabaseForeignKeyViolation:"core.error.mssql.database.foreign_key_violation",mssqlDatabaseUniqueConstraintViolation:"core.error.mssql.database.unique_constraint_violation",mssqlDatabaseDeadlockDetected:"core.error.mssql.database.deadlock_detected",mssqlDatabaseResourceLocked:"core.error.mssql.database.resource_locked",mssqlDatabaseTransactionAborted:"core.error.mssql.database.transaction_aborted",mssqlDatabaseInsufficientMemory:"core.error.mssql.database.insufficient_memory",mssqlDatabaseInsufficientStorage:"core.error.mssql.database.insufficient_storage",mssqlDatabaseQueryTimeout:"core.error.mssql.database.query_timeout",mssqlDatabaseTransactionLogFull:"core.error.mssql.database.transaction_log_full",mssqlDatabaseDataTooLarge:"core.error.mssql.database.data_too_large",mssqlDatabasePermissionDenied:"core.error.mssql.database.permission_denied",mssqlDatabaseIdentityInsertNotAllowed:"core.error.mssql.database.identity_insert_not_allowed",mssqlDatabaseCannotUpdateIdentityColumn:"core.error.mssql.database.cannot_update_identity_column"};var v={0:f.mssqlQueryError,4060:f.mssqlDatabaseAccessDenied,18452:f.mssqlDatabaseAuthorizationFailed,18456:f.mssqlDatabaseAuthorizationFailed,102:f.mssqlDatabaseSyntaxError,207:f.mssqlDatabaseColumnNotFound,208:f.mssqlTableNotFound,209:f.mssqlDatabaseAmbiguousColumn,2627:f.mssqlDatabaseDuplicateKey,547:f.mssqlDatabaseForeignKeyViolation,2601:f.mssqlDatabaseUniqueConstraintViolation,1205:f.mssqlDatabaseDeadlockDetected,1222:f.mssqlDatabaseResourceLocked,3928:f.mssqlDatabaseTransactionAborted,701:f.mssqlDatabaseInsufficientMemory,1105:f.mssqlDatabaseInsufficientStorage,8645:f.mssqlDatabaseQueryTimeout,9002:f.mssqlDatabaseTransactionLogFull,8152:f.mssqlDatabaseDataTooLarge,229:f.mssqlDatabasePermissionDenied,544:f.mssqlDatabaseIdentityInsertNotAllowed,8102:f.mssqlDatabaseCannotUpdateIdentityColumn};
2
- export{f as _,v as $};
2
+ export{f as sa,v as ta};
@@ -1,2 +1,2 @@
1
1
  var f={jwtSignError:"core.error.elysia.jwt_sign_error",jwtSecretNotFound:"core.error.elysia.jwt_secret_not_found",rateLimitExceeded:"core.error.elysia.rate_limit_exceeded",dynamicDatabaseKeyNotFound:"core.error.elysia.dynamic_database_key_not_found",needAdvancedSearch:"core.error.elysia.need_advanced_search"};var m={ok:200,created:201,accepted:202,nonAuthoritativeInformation:203,noContent:204,resetContent:205,partialContent:206,multiStatus:207,alreadyReported:208,imUsed:226,multipleChoices:300,movedPermanently:301,found:302,seeOther:303,notModified:304,useProxy:305,temporaryRedirect:307,permanentRedirect:308,badRequest:400,unauthorized:401,paymentRequired:402,forbidden:403,notFound:404,methodNotAllowed:405,notAcceptable:406,proxyAuthenticationRequired:407,requestTimeout:408,conflict:409,gone:410,lengthRequired:411,preconditionFailed:412,payloadTooLarge:413,uriTooLong:414,unsupportedMediaType:415,rangeNotSatisfiable:416,expectationFailed:417,imATeapot:418,misdirectedRequest:421,unprocessableEntity:422,locked:423,failedDependency:424,tooEarly:425,upgradeRequired:426,preconditionRequired:428,tooManyRequests:429,requestHeaderFieldsTooLarge:431,unavailableForLegalReasons:451,internalServerError:500,notImplemented:501,badGateway:502,serviceUnavailable:503,gatewayTimeout:504,httpVersionNotSupported:505,variantAlsoNegotiates:506,insufficientStorage:507,loopDetected:508,notExtended:510,networkAuthenticationRequired:511};
2
- export{f as aa,m as ba};
2
+ export{f as Y,m as Z};
@@ -0,0 +1,2 @@
1
+ var r={stategyAlreadyAdded:"core.error.strategy_already_added",strategyNotFound:"core.error.strategy_not_found",noStrategyAdded:"core.error.no_strategy_added",loggerStrategyError:"core.error.strategy_error"};
2
+ export{r as ba};
@@ -0,0 +1,2 @@
1
+ var r={classConstructorAlreadyRegistered:"core.error.class_constructor_already_registered",classConstructorNotRegistered:"core.error.class_constructor_not_registered"};
2
+ export{r as t};
@@ -1,2 +1,2 @@
1
1
  var{randomUUIDv7:g}=globalThis.Bun;class j extends Error{cause;_uuid=g();_date=new Date;_key;_httpStatusCode;constructor(f){super(f?.message);super.name="CoreError",this.cause=f?.cause,this._key=f?.key||"",this._httpStatusCode=f?.httpStatusCode||500}get uuid(){return this._uuid}get date(){return this._date}get key(){return this._key}get httpStatusCode(){return this._httpStatusCode}}
2
- export{j as Z};
2
+ export{j as ra};
@@ -0,0 +1,99 @@
1
+ import type { KeyTransformer } from './types/keyTransformer';
2
+ /**
3
+ * Filters the provided data by excluding the specified keys, with an option to exclude null or undefined values.
4
+ * Uses a generic type parameter to control the return type based on the excludeNullUndefined flag.
5
+ *
6
+ * @template TObject - The type of the data object to filter, must be an object.
7
+ * @template TExcludedKeys - The keys to exclude from the data object.
8
+ * @template TExcludeNullUndefined - Boolean flag type to determine if properties with null or undefined values should be excluded.
9
+ *
10
+ * @param data - The data object to be filtered.
11
+ * @param keys - The array of keys to exclude from the data object. (Can be empty)
12
+ * @param excludeNullUndefined - Flag to determine if properties with null or undefined values should be excluded.
13
+ *
14
+ * @throws ({@link CoreError}) - Throws an error if the data is null or undefined. ({@link dataErrorKeys.dataIsNull})
15
+ * @throws ({@link CoreError}) - Throws an error if the data is not a plain object. ({@link dataErrorKeys.dataMustBeObject})
16
+ *
17
+ * @returns The filtered data object with the specified keys excluded. ({@link TObject})
18
+ */
19
+ export declare const filterByKeyExclusion: <TObject extends Readonly<object>, TExcludedKeys extends keyof TObject = never, TExcludeNullUndefined extends boolean = false>(data: Readonly<TObject>, keys: readonly TExcludedKeys[], excludeNullUndefined?: TExcludeNullUndefined) => TExcludeNullUndefined extends true ? Partial<Omit<TObject, TExcludedKeys>> : Omit<TObject, TExcludedKeys>;
20
+ /**
21
+ * Filters the provided data by including only the specified keys, with an option to exclude null or undefined values.
22
+ * Uses a generic type parameter to control the return type based on the excludeNullUndefined flag.
23
+ *
24
+ * @template TObject - The type of the data object to filter, must be an object.
25
+ * @template TIncludedKeys - The keys to include from the data object.
26
+ * @template TExcludeNullUndefined - Boolean flag type to determine if properties with null or undefined values should be excluded.
27
+ *
28
+ * @param data - The data object to be filtered.
29
+ * @param keys - The array of keys to include in the resulting data object. (Can be empty)
30
+ * @param excludeNullUndefined - Flag to determine if properties with null or undefined values should be excluded.
31
+ *
32
+ * @throws ({@link CoreError}) - Throws an error if the data is null or undefined. ({@link dataErrorKeys.dataIsNull})
33
+ * @throws ({@link CoreError}) - Throws an error if the data is not a plain object. ({@link dataErrorKeys.dataMustBeObject})
34
+ *
35
+ * @example
36
+ * ```typescript
37
+ * const object = { test: 'test', exclude: 'exclude' };
38
+ * const filtered = filterByKeyInclusion(object, ['test']);
39
+ * console.log(filtered); // { test: 'test' }
40
+ * ```
41
+ *
42
+ * @example
43
+ * ```typescript
44
+ * const object = { test: 'test', exclude: null };
45
+ * const filtered = filterByKeyInclusion(object, ['test'], true);
46
+ * console.log(filtered); // { test: 'test' }
47
+ * ```
48
+ *
49
+ * @returns The filtered data object with only the specified keys included. ({@link TObject})
50
+ */
51
+ export declare const filterByKeyInclusion: <TObject extends Readonly<object>, TIncludedKeys extends keyof TObject = never, TExcludeNullUndefined extends boolean = false>(data: Readonly<TObject>, keys: readonly TIncludedKeys[], excludeNullUndefined?: TExcludeNullUndefined) => TExcludeNullUndefined extends true ? Partial<Pick<TObject, TIncludedKeys>> : Pick<TObject, TIncludedKeys>;
52
+ /**
53
+ * Filters the provided data based on a predicate applied to its values. The resulting object
54
+ * will only include properties whose values satisfy the predicate function. Properties with
55
+ * null or undefined values can be optionally excluded based on the 'excludeNullUndefined' flag.
56
+ * @template TObject - The type of the data to be filtered, constrained to an object type.
57
+ *
58
+ * @param data - The data object to be filtered.
59
+ * @param predicate - The predicate function to apply to the values.
60
+ * @param excludeNullUndefined - Flag to determine if properties with null or undefined values should be excluded. Default is false.
61
+ *
62
+ * @throws ({@link CoreError}) - Throws an error if the data is null or undefined. ({@link dataErrorKeys.dataIsNull})
63
+ * @throws ({@link CoreError}) - Throws an error if the data is not a plain object. ({@link dataErrorKeys.dataMustBeObject})
64
+ *
65
+ * @example
66
+ * ```typescript
67
+ * const object = { test: 'test', exclude: 'exclude' };
68
+ * const filtered = filterByValue(object, (value: unknown): boolean => value === 'test');
69
+ * console.log(filtered); // { test: 'test' }
70
+ * ```
71
+ *
72
+ * @example
73
+ * ```typescript
74
+ * const object = { test: 'test', exclude: null };
75
+ * const filtered = filterByValue(object, (value: unknown): boolean => value === 'test', true);
76
+ * console.log(filtered); // { test: 'test' }
77
+ * ```
78
+ *
79
+ * @returns The filtered data object with properties satisfying the predicate. ({@link TObject})
80
+ */
81
+ export declare const filterByValue: <TObject extends Readonly<object>>(data: Readonly<TObject>, predicate: (value: TObject[keyof TObject]) => boolean, excludeNullUndefined?: boolean) => TObject;
82
+ /**
83
+ * Transforms the keys of the given object using the current transformation strategy.
84
+ * @template TObject - The type of the object.
85
+ * @param data - The object whose keys are to be transformed.
86
+ * @param transformer - The key transformation strategy to use.
87
+ *
88
+ * @throws ({@link CoreError}) - If the provided data object is null or undefined. ({@link dataErrorKeys.dataIsNull})
89
+ * @throws ({@link CoreError}) - If the provided data object is not a plain object. ({@link dataErrorKeys.dataMustBeObject})
90
+ *
91
+ * @example
92
+ * ```typescript
93
+ * // Return { myKey: "value" }
94
+ * transformKeys(\{ "my-key": "value" \}, new BasaltCamelCaseTransformer());
95
+ * ```
96
+ *
97
+ * @returns A new object with transformed keys. ({@link TObject})
98
+ */
99
+ export declare const transformKeys: <TObject extends Readonly<object>>(data: Readonly<TObject>, transformer: Readonly<KeyTransformer>) => TObject;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Core data key error is a list of errors in the data context.
3
+ */
4
+ export declare const dataErrorKeys: {
5
+ readonly dataMustBeObject: "core.error.data_must_be_object";
6
+ readonly dataIsNull: "core.error.data_is_null";
7
+ };
@@ -0,0 +1 @@
1
+ export * from './dataErrorKeys';
@@ -0,0 +1,2 @@
1
+ // @bun
2
+ import{ga as e}from"../../chunk-5nvsx7md.js";import"../../chunk-4w7nd4nw.js";export{e as dataErrorKeys};
@@ -0,0 +1 @@
1
+ export * from './data';
@@ -0,0 +1,2 @@
1
+ // @bun
2
+ import{ca as e,da as f,ea as m,fa as p}from"../chunk-9rss6865.js";import"../chunk-5nvsx7md.js";import"../chunk-z00b1r18.js";import"../chunk-4w7nd4nw.js";export{p as transformKeys,m as filterByValue,f as filterByKeyInclusion,e as filterByKeyExclusion};
@@ -0,0 +1,25 @@
1
+ import type { KeyTransformer } from '../../data/types/keyTransformer';
2
+ /**
3
+ * Transforms string keys into camelCase format.
4
+ * Implements ({@link KeyTransformer}).
5
+ */
6
+ export declare class CamelCaseTransformer implements KeyTransformer {
7
+ /**
8
+ * Transforms a single key from any case to camelCase.
9
+ *
10
+ * @param key - The key string to transform into camelCase.
11
+ *
12
+ * @returns The key string transformed into camelCase.
13
+ *
14
+ * @example
15
+ * transformKey('MyKeyName');
16
+ * Returns "myKeyName"
17
+ * @example
18
+ * transformKey('my-key-name');
19
+ * Returns "myKeyName"
20
+ * @example
21
+ * transformKey('my_key_name');
22
+ * Returns "myKeyName"
23
+ */
24
+ transformKey(key: string): string;
25
+ }
@@ -0,0 +1,4 @@
1
+ export * from './camelCase.ts';
2
+ export * from './kebabCase.ts';
3
+ export * from './pascalCase.ts';
4
+ export * from './snakeCase.ts';
@@ -0,0 +1,2 @@
1
+ // @bun
2
+ import{ha as p,ia as t,ja as x,ka as a}from"../../chunk-4v4tp5qj.js";import"../../chunk-4w7nd4nw.js";export{a as SnakeCaseTransformer,x as PascalCaseTransformer,t as KebabCaseTransformer,p as CamelCaseTransformer};
@@ -0,0 +1,25 @@
1
+ import type { KeyTransformer } from '../../data/types/keyTransformer';
2
+ /**
3
+ * Transforms string keys into kebab-case format.
4
+ * Implements ({@link KeyTransformer}).
5
+ */
6
+ export declare class KebabCaseTransformer implements KeyTransformer {
7
+ /**
8
+ * Transforms a single key from any case to kebab-case.
9
+ *
10
+ * @param key - The key string to transform into kebab-case.
11
+ *
12
+ * @returns The key string transformed into kebab-case, with all letters in lower case and words separated by hyphens.
13
+ *
14
+ * @example
15
+ * transformKey('myKeyName');
16
+ * Returns "my-key-name"
17
+ * @example
18
+ * transformKey('MyKeyName');
19
+ * Returns "my-key-name"
20
+ * @example
21
+ * transformKey('my_long_key_name');
22
+ * Returns "my-long-key-name"
23
+ */
24
+ transformKey(key: string): string;
25
+ }
@@ -0,0 +1,25 @@
1
+ import type { KeyTransformer } from '../../data/types/keyTransformer';
2
+ /**
3
+ * Transforms string keys into PascalCase format.
4
+ * Implements ({@link KeyTransformer}).
5
+ */
6
+ export declare class PascalCaseTransformer implements KeyTransformer {
7
+ /**
8
+ * Transforms a single key from any case to PascalCase.
9
+ *
10
+ * @param key - The key string to transform into PascalCase.
11
+ *
12
+ * @returns The key string transformed into PascalCase, with the first letter of each word capitalized.
13
+ *
14
+ * @example
15
+ * transformKey('my_key_name');
16
+ * Returns "MyKeyName"
17
+ * @example
18
+ * transformKey('my-key-name');
19
+ * Returns "MyKeyName"
20
+ * @example
21
+ * transformKey('myLongKeyName');
22
+ * Returns "MyLongKeyName"
23
+ */
24
+ transformKey(key: string): string;
25
+ }
@@ -0,0 +1,25 @@
1
+ import type { KeyTransformer } from '../../data/types/keyTransformer';
2
+ /**
3
+ * Transforms string keys into snake_case format.
4
+ * Implements ({@link KeyTransformer}).
5
+ */
6
+ export declare class SnakeCaseTransformer implements KeyTransformer {
7
+ /**
8
+ * Transforms a single key from any case to snake_case.
9
+ *
10
+ * @param key - The key string to transform into snake_case.
11
+ *
12
+ * @returns The key string transformed into snake_case, with underscores between words.
13
+ *
14
+ * @example
15
+ * transformKey('myKeyName');
16
+ * Returns "my_key_name"
17
+ * @example
18
+ * transformKey('MyKeyName');
19
+ * Returns "my_key_name"
20
+ * @example
21
+ * transformKey('My-Key-Name');
22
+ * Returns "my_key_name"
23
+ */
24
+ transformKey(key: string): string;
25
+ }
@@ -0,0 +1 @@
1
+ export type * from './keyTransformer';
@@ -0,0 +1 @@
1
+ // @bun
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Interface for Key transformer.
3
+ */
4
+ export interface KeyTransformer {
5
+ /**
6
+ * Transforms a single key from any case to another case.
7
+ * @param key - The key string to transform.
8
+ * @returns The key string transformed into the desired case.
9
+ */
10
+ transformKey(key: string): string;
11
+ }
@@ -1,8 +1,4 @@
1
- /**
2
- * Database error key is a list of errors in the database context.
3
- * Each property represents a specific MSSQL error scenario.
4
- */
5
- export declare const databaseKeyError: {
1
+ export declare const databaseErrorKeys: {
6
2
  /** Error when failing to connect to MSSQL database. */
7
3
  readonly mssqlConnectionError: "core.error.mssql.database.connection_error";
8
4
  /** Error when disconnecting from MSSQL database. */
@@ -1,2 +1,2 @@
1
- export * from './databaseKeyError';
1
+ export * from './databaseErrorKeys';
2
2
  export * from './mssqlErrorCode';
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import{$ as m,_ as f}from"../../chunk-2ysjvwgk.js";import"../../chunk-mrzhtfav.js";export{m as mssqlErrorCode,f as databaseKeyError};
2
+ import{sa as f,ta as m}from"../../chunk-qndyhwdn.js";import"../../chunk-4w7nd4nw.js";export{m as mssqlErrorCode,f as databaseErrorKeys};
@@ -1,2 +1,2 @@
1
- export * from './mssqlEventMap';
2
- export * from './tableEventMap';
1
+ export type * from './mssqlEventMap';
2
+ export type * from './tableEventMap';
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import{U as f,V as m}from"../chunk-fktnffnw.js";import"../chunk-ckg4jheb.js";import"../chunk-46z9v7pz.js";import"../chunk-5x3px0nq.js";import"../chunk-2ysjvwgk.js";import"../chunk-mrzhtfav.js";export{f as Table,m as MSSQL};
2
+ import{la as f,ma as m}from"../chunk-n5w9cwwg.js";import"../chunk-fnb68m68.js";import"../chunk-9hj714bv.js";import"../chunk-g6a16nyh.js";import"../chunk-z00b1r18.js";import"../chunk-qndyhwdn.js";import"../chunk-4w7nd4nw.js";export{f as Table,m as MSSQL};
@@ -1,6 +1,6 @@
1
- import { TypedEventEmitter } from '@basalt-lab/basalt-helper/typedEventEmitter';
2
1
  import { type Knex } from 'knex';
3
2
  import { Repository } from '../repository/repository';
3
+ import { TypedEventEmitter } from '../typedEventEmitter/typedEventEmitter';
4
4
  import type { MssqlEventMap } from './events/mssqlEventMap';
5
5
  import { Table } from './table';
6
6
  import type { MSSQLDatabaseOptions } from './types/mssqlDatabaseOption';
@@ -61,14 +61,14 @@ export declare class MSSQL extends TypedEventEmitter<MssqlEventMap> {
61
61
  * If the connection is successful, introspection is performed to retrieve information about tables, columns(fields), and primary keys.
62
62
  * This information is used to create instances of {@link Table} and {@link Repository} for each table in the database.
63
63
  *
64
- * @throws ({@link CoreError}) Thrown if an error occurs during the connection process. ({@link databaseKeyError.mssqlConnectionError})
64
+ * @throws ({@link CoreError}) Thrown if an error occurs during the connection process. ({@link databaseErrorKeys.mssqlConnectionError})
65
65
  */
66
66
  connect(): Promise<void>;
67
67
  /**
68
68
  * Closes the connection to the MSSQL database.
69
69
  *
70
- * @throws ({@link CoreError}) Thrown if the database is not connected. ({@link databaseKeyError.mssqlNotConnected})
71
- * @throws ({@link CoreError}) Thrown if an error occurs during the disconnection process. ({@link databaseKeyError.mssqlDisconnectError})
70
+ * @throws ({@link CoreError}) Thrown if the database is not connected. ({@link databaseErrorKeys.mssqlNotConnected})
71
+ * @throws ({@link CoreError}) Thrown if an error occurs during the disconnection process. ({@link databaseErrorKeys.mssqlDisconnectError})
72
72
  */
73
73
  disconnect(): Promise<void>;
74
74
  /**
@@ -77,8 +77,8 @@ export declare class MSSQL extends TypedEventEmitter<MssqlEventMap> {
77
77
  * @param tableName - The name of the table to retrieve the repository for.
78
78
  * @param customRepository - Optional custom repository class to use for the table. The class must extend {@link Repository}.
79
79
  *
80
- * @throws ({@link CoreError}) Thrown if the database is not connected. ({@link databaseKeyError.mssqlNotConnected})
81
- * @throws ({@link CoreError}) Thrown if the specified table is not found. ({@link databaseKeyError.mssqlTableNotFound})
80
+ * @throws ({@link CoreError}) Thrown if the database is not connected. ({@link databaseErrorKeys.mssqlNotConnected})
81
+ * @throws ({@link CoreError}) Thrown if the specified table is not found. ({@link databaseErrorKeys.mssqlTableNotFound})
82
82
  *
83
83
  * @template TModel - The type of the model for the repository.
84
84
  * @template TRepo - The repository to retrieve extends {@link Repository}.
@@ -92,8 +92,8 @@ export declare class MSSQL extends TypedEventEmitter<MssqlEventMap> {
92
92
  *
93
93
  * @param tableName - The name of the table to retrieve.
94
94
  *
95
- * @throws ({@link CoreError}) Thrown if the database is not connected. ({@link databaseKeyError.mssqlNotConnected})
96
- * @throws ({@link CoreError}) Thrown if the specified table is not found. ({@link databaseKeyError.mssqlTableNotFound})
95
+ * @throws ({@link CoreError}) Thrown if the database is not connected. ({@link databaseErrorKeys.mssqlNotConnected})
96
+ * @throws ({@link CoreError}) Thrown if the specified table is not found. ({@link databaseErrorKeys.mssqlTableNotFound})
97
97
  *
98
98
  * @returns The {@link Table} object for the specified table.
99
99
  */
@@ -125,7 +125,7 @@ export declare class MSSQL extends TypedEventEmitter<MssqlEventMap> {
125
125
  /**
126
126
  * Retrieves the Knex instance for the database connection.
127
127
  *
128
- * @throws ({@link CoreError}) Thrown if the database is not connected. ({@link databaseKeyError.mssqlNotConnected})
128
+ * @throws ({@link CoreError}) Thrown if the database is not connected. ({@link databaseErrorKeys.mssqlNotConnected})
129
129
  *
130
130
  * @returns The {@link Knex} instance for the database connection.
131
131
  */
@@ -1,5 +1,5 @@
1
- import { TypedEventEmitter } from '@basalt-lab/basalt-helper/typedEventEmitter';
2
1
  import type { TableEventMap } from '../database/events/tableEventMap';
2
+ import { TypedEventEmitter } from '../typedEventEmitter/typedEventEmitter';
3
3
  /**
4
4
  * Represents a database table and provides access to its metadata (name, fields, primary key).
5
5
  *
@@ -1,8 +1,4 @@
1
- /**
2
- * Elysia error key is a list of errors in the elysia context.
3
- * Each property represents a specific Elysia error scenario.
4
- */
5
- export declare const elysiaKeyError: {
1
+ export declare const elysiaErrorKeys: {
6
2
  /** Error when JWT signing fails. */
7
3
  readonly jwtSignError: "core.error.elysia.jwt_sign_error";
8
4
  /** Error when JWT secret is not found. */
@@ -1,2 +1,2 @@
1
- export * from './elysiaKeyError';
1
+ export * from './elysiaErrorKeys';
2
2
  export * from './httpStatusCode';
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import{aa as f,ba as m}from"../../chunk-qmdvezak.js";import"../../chunk-mrzhtfav.js";export{m as httpStatusCode,f as elysiaKeyError};
2
+ import{Y as f,Z as m}from"../../chunk-v5dfx8mh.js";import"../../chunk-4w7nd4nw.js";export{m as httpStatusCode,f as elysiaErrorKeys};
@@ -1,5 +1,3 @@
1
- import { BasaltError as BasaltHelperError } from '@basalt-lab/basalt-helper/error';
2
- import { BasaltError as BasaltLoggerError } from '@basalt-lab/basalt-logger/error';
3
1
  import { Elysia } from 'elysia';
4
2
  import { CoreError } from '../error/coreError';
5
3
  /**
@@ -28,8 +26,6 @@ export declare const errorPlugin: Elysia<"", {
28
26
  typebox: {};
29
27
  error: {
30
28
  readonly CoreError: CoreError<any>;
31
- readonly BasaltHelperError: BasaltHelperError<any>;
32
- readonly BasaltLoggerError: BasaltLoggerError<any>;
33
29
  };
34
30
  }, {
35
31
  schema: import("elysia").MergeSchema<import("elysia").MergeSchema<{}, {}, "">, {}, "">;
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import{A as B,B as c,C as o,D as n,E as v,F as g,G as k,q as y,r as P,s as m,t as x,v as q,w as M,y as D}from"../chunk-kn1300vm.js";import{V as IG}from"../chunk-fktnffnw.js";import"../chunk-ckg4jheb.js";import"../chunk-46z9v7pz.js";import{Z as A}from"../chunk-5x3px0nq.js";import"../chunk-2ysjvwgk.js";import{aa as L,ba as d}from"../chunk-qmdvezak.js";import{ca as pG,da as dG}from"../chunk-khjde4tm.js";import{ea as vG}from"../chunk-mrzhtfav.js";import{filterByKeyExclusion as ZY}from"@basalt-lab/basalt-helper/data";var N={};vG(N,{TypeGuardUnknownTypeError:()=>i,IsVoid:()=>SG,IsUnsafe:()=>OG,IsUnknown:()=>NG,IsUnionLiteral:()=>YY,IsUnion:()=>h,IsUndefined:()=>xG,IsUint8Array:()=>fG,IsTuple:()=>KG,IsTransform:()=>RG,IsThis:()=>wG,IsTemplateLiteral:()=>EG,IsSymbol:()=>kG,IsString:()=>PG,IsSchema:()=>J,IsRegExp:()=>qG,IsRef:()=>CG,IsRecursive:()=>GY,IsRecord:()=>TG,IsReadonly:()=>uG,IsProperties:()=>f,IsPromise:()=>LG,IsOptional:()=>lG,IsObject:()=>BG,IsNumber:()=>AG,IsNull:()=>MG,IsNot:()=>jG,IsNever:()=>DG,IsMappedResult:()=>JG,IsMappedKey:()=>QG,IsLiteralValue:()=>FG,IsLiteralString:()=>WG,IsLiteralNumber:()=>_G,IsLiteralBoolean:()=>eG,IsLiteral:()=>R,IsKindOf:()=>$,IsKind:()=>yG,IsIterator:()=>UG,IsIntersect:()=>HG,IsInteger:()=>XG,IsImport:()=>aG,IsFunction:()=>$G,IsDate:()=>VG,IsConstructor:()=>zG,IsComputed:()=>ZG,IsBoolean:()=>YG,IsBigInt:()=>GG,IsAsyncIterator:()=>e,IsArray:()=>a,IsArgument:()=>l,IsAny:()=>u});class i extends c{}var rG=["Argument","Any","Array","AsyncIterator","BigInt","Boolean","Computed","Constructor","Date","Enum","Function","Integer","Intersect","Iterator","Literal","MappedKey","MappedResult","Not","Null","Number","Object","Promise","Record","Ref","RegExp","String","Symbol","TemplateLiteral","This","Tuple","Undefined","Union","Uint8Array","Unknown","Void"];function r(G){try{return new RegExp(G),!0}catch{return!1}}function b(G){if(!D(G))return!1;for(let Y=0;Y<G.length;Y++){let Z=G.charCodeAt(Y);if(Z>=7&&Z<=13||Z===27||Z===127)return!1}return!0}function s(G){return I(G)||J(G)}function w(G){return B(G)||m(G)}function W(G){return B(G)||q(G)}function I(G){return B(G)||x(G)}function U(G){return B(G)||D(G)}function sG(G){return B(G)||D(G)&&b(G)&&r(G)}function tG(G){return B(G)||D(G)&&b(G)}function t(G){return B(G)||J(G)}function uG(G){return M(G)&&G[n]==="Readonly"}function lG(G){return M(G)&&G[v]==="Optional"}function u(G){return $(G,"Any")&&U(G.$id)}function l(G){return $(G,"Argument")&&q(G.index)}function a(G){return $(G,"Array")&&G.type==="array"&&U(G.$id)&&J(G.items)&&W(G.minItems)&&W(G.maxItems)&&I(G.uniqueItems)&&t(G.contains)&&W(G.minContains)&&W(G.maxContains)}function e(G){return $(G,"AsyncIterator")&&G.type==="AsyncIterator"&&U(G.$id)&&J(G.items)}function GG(G){return $(G,"BigInt")&&G.type==="bigint"&&U(G.$id)&&w(G.exclusiveMaximum)&&w(G.exclusiveMinimum)&&w(G.maximum)&&w(G.minimum)&&w(G.multipleOf)}function YG(G){return $(G,"Boolean")&&G.type==="boolean"&&U(G.$id)}function ZG(G){return $(G,"Computed")&&D(G.target)&&P(G.parameters)&&G.parameters.every((Y)=>J(Y))}function zG(G){return $(G,"Constructor")&&G.type==="Constructor"&&U(G.$id)&&P(G.parameters)&&G.parameters.every((Y)=>J(Y))&&J(G.returns)}function VG(G){return $(G,"Date")&&G.type==="Date"&&U(G.$id)&&W(G.exclusiveMaximumTimestamp)&&W(G.exclusiveMinimumTimestamp)&&W(G.maximumTimestamp)&&W(G.minimumTimestamp)&&W(G.multipleOfTimestamp)}function $G(G){return $(G,"Function")&&G.type==="Function"&&U(G.$id)&&P(G.parameters)&&G.parameters.every((Y)=>J(Y))&&J(G.returns)}function aG(G){return $(G,"Import")&&y(G,"$defs")&&M(G.$defs)&&f(G.$defs)&&y(G,"$ref")&&D(G.$ref)&&G.$ref in G.$defs}function XG(G){return $(G,"Integer")&&G.type==="integer"&&U(G.$id)&&W(G.exclusiveMaximum)&&W(G.exclusiveMinimum)&&W(G.maximum)&&W(G.minimum)&&W(G.multipleOf)}function f(G){return M(G)&&Object.entries(G).every(([Y,Z])=>b(Y)&&J(Z))}function HG(G){return $(G,"Intersect")&&(D(G.type)&&G.type!=="object"?!1:!0)&&P(G.allOf)&&G.allOf.every((Y)=>J(Y)&&!RG(Y))&&U(G.type)&&(I(G.unevaluatedProperties)||t(G.unevaluatedProperties))&&U(G.$id)}function UG(G){return $(G,"Iterator")&&G.type==="Iterator"&&U(G.$id)&&J(G.items)}function $(G,Y){return M(G)&&k in G&&G[k]===Y}function WG(G){return R(G)&&D(G.const)}function _G(G){return R(G)&&q(G.const)}function eG(G){return R(G)&&x(G.const)}function R(G){return $(G,"Literal")&&U(G.$id)&&FG(G.const)}function FG(G){return x(G)||q(G)||D(G)}function QG(G){return $(G,"MappedKey")&&P(G.keys)&&G.keys.every((Y)=>q(Y)||D(Y))}function JG(G){return $(G,"MappedResult")&&f(G.properties)}function DG(G){return $(G,"Never")&&M(G.not)&&Object.getOwnPropertyNames(G.not).length===0}function jG(G){return $(G,"Not")&&J(G.not)}function MG(G){return $(G,"Null")&&G.type==="null"&&U(G.$id)}function AG(G){return $(G,"Number")&&G.type==="number"&&U(G.$id)&&W(G.exclusiveMaximum)&&W(G.exclusiveMinimum)&&W(G.maximum)&&W(G.minimum)&&W(G.multipleOf)}function BG(G){return $(G,"Object")&&G.type==="object"&&U(G.$id)&&f(G.properties)&&s(G.additionalProperties)&&W(G.minProperties)&&W(G.maxProperties)}function LG(G){return $(G,"Promise")&&G.type==="Promise"&&U(G.$id)&&J(G.item)}function TG(G){return $(G,"Record")&&G.type==="object"&&U(G.$id)&&s(G.additionalProperties)&&M(G.patternProperties)&&((Y)=>{let Z=Object.getOwnPropertyNames(Y.patternProperties);return Z.length===1&&r(Z[0])&&M(Y.patternProperties)&&J(Y.patternProperties[Z[0]])})(G)}function GY(G){return M(G)&&g in G&&G[g]==="Recursive"}function CG(G){return $(G,"Ref")&&U(G.$id)&&D(G.$ref)}function qG(G){return $(G,"RegExp")&&U(G.$id)&&D(G.source)&&D(G.flags)&&W(G.maxLength)&&W(G.minLength)}function PG(G){return $(G,"String")&&G.type==="string"&&U(G.$id)&&W(G.minLength)&&W(G.maxLength)&&sG(G.pattern)&&tG(G.format)}function kG(G){return $(G,"Symbol")&&G.type==="symbol"&&U(G.$id)}function EG(G){return $(G,"TemplateLiteral")&&G.type==="string"&&D(G.pattern)&&G.pattern[0]==="^"&&G.pattern[G.pattern.length-1]==="$"}function wG(G){return $(G,"This")&&U(G.$id)&&D(G.$ref)}function RG(G){return M(G)&&o in G}function KG(G){return $(G,"Tuple")&&G.type==="array"&&U(G.$id)&&q(G.minItems)&&q(G.maxItems)&&G.minItems===G.maxItems&&(B(G.items)&&B(G.additionalItems)&&G.minItems===0||P(G.items)&&G.items.every((Y)=>J(Y)))}function xG(G){return $(G,"Undefined")&&G.type==="undefined"&&U(G.$id)}function YY(G){return h(G)&&G.anyOf.every((Y)=>WG(Y)||_G(Y))}function h(G){return $(G,"Union")&&U(G.$id)&&M(G)&&P(G.anyOf)&&G.anyOf.every((Y)=>J(Y))}function fG(G){return $(G,"Uint8Array")&&G.type==="Uint8Array"&&U(G.$id)&&W(G.minByteLength)&&W(G.maxByteLength)}function NG(G){return $(G,"Unknown")&&U(G.$id)}function OG(G){return $(G,"Unsafe")}function SG(G){return $(G,"Void")&&G.type==="void"&&U(G.$id)}function yG(G){return M(G)&&k in G&&D(G[k])&&!rG.includes(G[k])}function J(G){return M(G)&&(u(G)||l(G)||a(G)||YG(G)||GG(G)||e(G)||ZG(G)||zG(G)||VG(G)||$G(G)||XG(G)||HG(G)||UG(G)||R(G)||QG(G)||JG(G)||DG(G)||jG(G)||MG(G)||AG(G)||BG(G)||LG(G)||TG(G)||CG(G)||qG(G)||PG(G)||kG(G)||EG(G)||wG(G)||KG(G)||xG(G)||h(G)||fG(G)||NG(G)||OG(G)||SG(G)||yG(G))}import{Elysia as zY,t as H}from"elysia";var VY=(G)=>H.Object({$eq:G,$neq:G,...!N.IsBoolean(G)?{$lt:G,$lte:G,$gt:G,$gte:G,$in:H.Array(G),$nin:H.Array(G),$between:H.Tuple([G,G]),$nbetween:H.Tuple([G,G]),$like:H.String(),$nlike:H.String()}:{},$isNull:H.Boolean()}),$Y=(G)=>{let{properties:Y}=G,Z={};for(let[z,V]of Object.entries(Y)){let X=VY(V);Z[z]=H.Array(H.Union([H.Partial(X),V]))}return Z},XY=(G)=>H.Array(H.Union([H.Partial(H.Object({selectedFields:H.Union([H.Array(H.KeyOf(G)),H.KeyOf(G)]),value:H.String()})),H.String()])),HY=(G)=>H.Array(H.KeyOf(G)),K=(G)=>H.Composite([H.Object({$q:H.Optional(XY(G)),$selectedFields:H.Optional(HY(G))}),H.Partial(H.Object($Y(G)))]),UY=(G)=>H.Composite([K(G),H.Partial(H.Object({$limit:H.Number(),$offset:H.Number()}))]),gG=(G,Y,Z=[])=>new zY({name:`advancedSearchPlugin-${G}`,seed:Y}).model({[`advancedSearch${G}Query`]:K(Y),[`advancedSearch${G}QueryWithPagination`]:UY(Y)}).macro({hasAdvancedSearch:{resolve:({query:z})=>{let V=z,X={advancedSearch:[],selectedFields:V.$selectedFields||["*"],pagination:{limit:V.$limit||100,offset:V.$offset||0}};if(z.$q){let j=Array.isArray(z.$q)?z.$q:[z.$q];X.advancedSearch.push(...j.map((_)=>({$q:_})))}V=ZY(V,["$selectedFields","$q","$limit","$offset",...Z],!0);for(let[j,_]of Object.entries(V))(Array.isArray(_)?_:[_]).forEach((F,C)=>{if(!X.advancedSearch[C])X.advancedSearch[C]={};X.advancedSearch[C][j]=F});return X}}}).as("scoped");import{SingletonManager as _Y}from"@basalt-lab/basalt-helper/singletonManager";import{Elysia as p,t as Q}from"elysia";import{SingletonManager as O}from"@basalt-lab/basalt-helper/singletonManager";import{Elysia as WY,t as bG}from"elysia";var hG=(G)=>new WY({name:"dynamicDatabaseSelectorPlugin"}).model({databaseUsingHeader:bG.Object({[G.headerKey||"database-using"]:bG.String()})}).macro({hasDynamicDatabaseSelector:{async resolve({headers:Y}){let Z=Y[G.headerKey||"database-using"];if(!Z)throw new A({key:L.dynamicDatabaseKeyNotFound,message:"Dynamic Database key not found in the request headers.",httpStatusCode:400});if(!O.has(`database:${Z}`))O.register(`database:${Z}`,IG,{...G.baseDatabaseConfig,databaseName:Z}),await O.get(`database:${Z}`).connect();return{dynamicDB:O.get(`database:${Z}`)}}}}).as("scoped");var FY=(G)=>{let{properties:Y}=G,Z={};for(let z in Y)Z[z]=Q.Union([Y[z],Q.Undefined(),Q.Null(),Q.Literal("")]);return Q.Object({message:Q.String(),content:Q.Array(Q.Partial(Q.Object(Z)))})},QY=(G,Y)=>{let{properties:Z}=G,z={};for(let V in Z)z[V]=Y?.includes(V)?Z[V]:Q.Optional(Z[V]);return Q.Object(z)},JY=(G,Y)=>{let{baseSchema:Z,tableName:z,insertPropertiesSchemaRequired:V}=Y,X=new p().model({[`crud${z}Response200`]:FY(Z)}),j={insert:()=>X.model({[`crud${z}InsertBody`]:QY(Z,V)}),update:()=>X.model({[`crud${z}UpdateBody`]:Q.Partial(Z)}),count:()=>X.model({[`crud${z}CountResponse200`]:Q.Object({message:Q.String(),content:Q.Number()})})};if(G.forEach((T)=>{if(T in j)j[T]?.()}),["findOne","deleteOne","updateOne"].some((T)=>G.includes(T)))X.model({[`crud${z}IdParam`]:Q.Object({id:Q.Union([Q.String(),Q.Number()])})});return X},DY=(G=[],Y=[])=>{let Z=["insert","find","findOne","update","updateOne","delete","deleteOne","count"],z=G.length>0?G:Z;return Y.length>0?z.filter((V)=>!Y.includes(V)):z},jY=(G)=>{let Y=new p;if(typeof G==="string")Y.resolve(()=>({dynamicDB:_Y.get(`database:${G}`)}));else Y.use(hG({baseDatabaseConfig:G.baseDatabaseConfig,headerKey:G.headerKey||"database-using"}));return Y.as("scoped")},MY={insertHandler:async(G,Y)=>{let z=G.dynamicDB.getRepository(Y),{body:V}=G,X=await z.insert(V);return{message:`Inserted record for ${Y}`,content:X}},findHandler:async(G,Y)=>{let V=await G.dynamicDB.getRepository(Y).find({advancedSearch:G.advancedSearch,selectedFields:G.selectedFields,limit:G.pagination.limit,offset:G.pagination.offset});return{message:`Found ${V.length} records for ${Y}`,content:V}},findOneHandler:async(G,Y)=>{let Z=G.dynamicDB,z=Z.getRepository(Y),X=Z.getTable(Y).primaryKey,{id:j}=G.params,_=await z.findOne({advancedSearch:{[X[0]]:j}});return{message:`Found record for ${Y}`,content:_}},countHandler:async(G,Y)=>{let V=await G.dynamicDB.getRepository(Y).count({advancedSearch:G.advancedSearch});return{message:`${V} records found for ${Y}`,content:V}},updateHandler:async(G,Y)=>{let z=G.dynamicDB.getRepository(Y);if(!G.advancedSearch||G.advancedSearch.length===0||!G.advancedSearch[0])throw new A({key:L.needAdvancedSearch,message:"You need to provide advanced search to update records. It's dangerous to update all records.",httpStatusCode:400});let V=await z.update(G.body,{advancedSearch:G.advancedSearch,selectedFields:G.selectedField});return{message:`Updated ${V.length} records for ${Y}`,content:V}},updateOneHandler:async(G,Y)=>{let Z=G.dynamicDB,z=Z.getRepository(Y),X=Z.getTable(Y).primaryKey,{id:j}=G.params,_=await z.update(G.body,{advancedSearch:{[X[0]]:j}});return{message:`Updated record for ${Y}`,content:_}},deleteHandler:async(G,Y)=>{let z=G.dynamicDB.getRepository(Y);if(!G.advancedSearch||G.advancedSearch.length===0||!G.advancedSearch[0])throw new A({key:L.needAdvancedSearch,message:"You need to provide advanced search to delete records. It's dangerous to delete all records.",httpStatusCode:400});let V=await z.delete({advancedSearch:G.advancedSearch,selectedFields:G.selectedFields});return{message:`Deleted ${V.length} records for ${Y}`,content:V}},deleteOneHandler:async(G,Y)=>{let Z=G.dynamicDB,z=Z.getRepository(Y),X=Z.getTable(Y).primaryKey,{id:j}=G.params,_=await z.delete({advancedSearch:{[X[0]]:j}});return{message:`Deleted record for ${Y}`,content:_}}},AY=(G,Y,Z,z,V)=>(X)=>{let j={insert:"post",find:"get",findOne:"get",count:"get",update:"patch",updateOne:"patch",delete:"delete",deleteOne:"delete"},_={insert:"/",find:"/",findOne:"/:id",count:"/count",update:"/",updateOne:"/:id",delete:"/",deleteOne:"/:id"};if(G.includes("find")||G.includes("count")||G.includes("update")||G.includes("delete"))X.use(gG(Y,Z));for(let F of G){let C=j[F],E=_[F];if(C&&E){let cG=MY[`${F}Handler`],oG={...F==="findOne"||F==="deleteOne"||F==="updateOne"?{params:`crud${Y}IdParam`}:{},...F==="count"||F==="update"||F==="delete"?{query:K(Z)}:F==="find"?{query:K(Z)}:{},...F==="insert"||F==="update"||F==="updateOne"?{body:`crud${Y}${F==="insert"?"Insert":"Update"}Body`}:{},response:`crud${Y}${F==="count"?"Count":""}Response200`,hasAdvancedSearch:!0,hasDynamicDatabaseSelector:z,needsOnePermission:V[F]||[]};X[C](E,(nG)=>cG(nG,Y),oG)}}return X},sY=(G)=>{let Y=DY(G.includedRoutes,G.excludedRoutes),Z=new p({name:`crudPlugin[${G.tableName}]`,tags:[G.tableName]}).use(JY(Y,G)).use(G.permissionConfig.permissionsPlugin);return Z.use(jY(G.database)).use(AY(Y,G.tableName,G.baseSchema,typeof G.database!=="string",G.permissionConfig.operationsPermissions)),Z};import{BasaltError as BY}from"@basalt-lab/basalt-helper/error";import{BasaltError as LY}from"@basalt-lab/basalt-logger/error";import{Elysia as TY}from"elysia";var GZ=new TY({name:"errorPlugin"}).error({CoreError:A,BasaltHelperError:BY,BasaltLoggerError:LY}).onError(({code:G,error:Y,set:Z})=>{switch(Z.headers["content-type"]="application/json; charset=utf-8",G){case"CoreError":case"BasaltHelperError":case"BasaltLoggerError":return Z.status=Y.httpStatusCode,{key:Y.key,message:Y.message,cause:Y.cause};case"VALIDATION":return Z.status=400,{key:"core.error.validation",message:"Validation error",cause:{on:Y.type,found:Y.value,errors:Y.all}};case"NOT_FOUND":return Z.status=404,{key:"core.error.not_found",message:"Not found"};case"INTERNAL_SERVER_ERROR":case"UNKNOWN":default:return Z.status=500,{key:"core.error.internal_server_error",message:"Internal server error"}}}).as("global");import{Elysia as CY}from"elysia";import{SignJWT as qY,jwtVerify as PY}from"jose";var XZ=(G)=>{if(!G.secret)throw new A({key:L.jwtSecretNotFound,message:"Secret key is required for JWT signing and verification."});let Y=new TextEncoder().encode(G.secret),Z=G.name??"jwt";return new CY({name:"jwtPlugin",seed:G}).decorate(Z,{sign(z,V=G.exp??"15m"){let X={iss:"core",aud:"core client",jti:Bun.randomUUIDv7(),...G.payload,...z};try{return new qY(X).setProtectedHeader({alg:"HS256",b64:!0}).setIssuer(X.iss??"core").setAudience(X.aud??"client").setExpirationTime(V).sign(Y)}catch{throw new A({key:L.jwtSignError,message:"Error signing JWT."})}},async verify(z){if(!z)return!1;try{return(await PY(z,Y)).payload}catch{return!1}}}).as("scoped")};import{Elysia as kY}from"elysia";import{existsSync as EY}from"fs";import{platform as wY}from"os";var mG=(G)=>{let Y=wY()==="win32",Z=Y?"\\":"/";if(Y&&/^[A-Z]:\\$/i.test(G)||!Y&&G==="/")return"";let z=G+Z+"package.json";if(EY(z))return z;let V=G.split(Z);if(V.length<=1)return"";let X=V.slice(0,-1).join(Z);if(X==="")return"";return mG(X)},S=await import(mG(Bun.main)),JZ=new kY({name:"microservicePlugin",prefix:"/microservice",detail:{tags:["Microservice"],security:[]}}).model({infoResponse200:pG,pingResponse200:dG}).get("/ping",()=>({message:"pong"}),{detail:{summary:"Ping",description:"Ping the microservice to check if it is alive"},response:"pingResponse200"}).get("/info",()=>({message:"Microservice Information",content:{name:S.default.name,version:S.default.version,description:S.default.description,author:S.default.author}}),{detail:{summary:"Info",description:"Get information about the microservice"},response:"infoResponse200"}).as("scoped");import{Elysia as RY}from"elysia";var LZ=({redis:G,limit:Y,window:Z,message:z})=>new RY({name:"rateLimitPlugin",seed:{redis:G,limit:Y,window:Z,message:z}}).onRequest(async({set:V,request:X})=>{let _=`ratelimit:${X.headers.get("x-forwarded-for")||X.headers.get("x-real-ip")||"127.0.0.1"}`,T=await G.client.get(_);if((T?parseInt(T):0)===0)await G.client.setex(_,Z,"1");else await G.client.incr(_);let C=await G.client.get(_),E=C?parseInt(C):0;if(E>Y)throw V.status=d.tooManyRequests,new A({key:L.rateLimitExceeded,message:z||"Rate limit exceeded",httpStatusCode:d.tooManyRequests,cause:{limit:Y,window:Z,remaining:0,reset:await G.client.ttl(_)}});V.headers={"X-RateLimit-Limit":Y.toString(),"X-RateLimit-Remaining":Math.max(0,Y-E).toString(),"X-RateLimit-Reset":(await G.client.ttl(_)).toString()}}).as("scoped");export{LZ as rateLimitPlugin,JZ as microservicePlugin,XZ as jwtPlugin,GZ as errorPlugin,hG as dynamicDatabaseSelectorPlugin,sY as crudPlugin,FY as createResponse200Schema,QY as createInsertBodySchema,UY as createBaseSearchSchemaWithPagination,K as createBaseSearchSchema,gG as advancedSearchPlugin};export{K as f,UY as g,gG as h,hG as i,FY as j,QY as k,sY as l,GZ as m,XZ as n,JZ as o,LZ as p};
2
+ import{h as a,i as b,j as c,k as d,l as g,m as h,n as i,o as j,p as k,q as l,r as n}from"../chunk-pt7wrvtr.js";import"../chunk-gxjax5n3.js";import"../chunk-wtfcgg9s.js";import"../chunk-df9xr1f5.js";import"../chunk-v5dfx8mh.js";import"../chunk-mwpajm9x.js";import"../chunk-9rss6865.js";import"../chunk-5nvsx7md.js";import"../chunk-n5w9cwwg.js";import"../chunk-fnb68m68.js";import"../chunk-9hj714bv.js";import"../chunk-g6a16nyh.js";import"../chunk-z00b1r18.js";import"../chunk-qndyhwdn.js";import"../chunk-4w7nd4nw.js";export{n as rateLimitPlugin,l as microservicePlugin,k as jwtPlugin,j as errorPlugin,d as dynamicDatabaseSelectorPlugin,i as crudPlugin,g as createResponse200Schema,h as createInsertBodySchema,b as createBaseSearchSchemaWithPagination,a as createBaseSearchSchema,c as advancedSearchPlugin};
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import{ca as f,da as m}from"../../chunk-khjde4tm.js";import"../../chunk-mrzhtfav.js";export{m as pingResponse200Schema,f as infoResponse200Schema};
2
+ import{$ as m,_ as f}from"../../chunk-mwpajm9x.js";import"../../chunk-4w7nd4nw.js";export{m as pingResponse200Schema,f as infoResponse200Schema};
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import{Z as e}from"../chunk-5x3px0nq.js";import"../chunk-mrzhtfav.js";export{e as CoreError};
2
+ import{ra as e}from"../chunk-z00b1r18.js";import"../chunk-4w7nd4nw.js";export{e as CoreError};