@k-msg/core 0.17.0 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from "./errors";
2
2
  export * from "./logger";
3
+ export * from "./persistence/repository";
3
4
  export * from "./provider";
4
5
  export * from "./resilience/index";
5
6
  export * from "./result";
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- var{defineProperty:f,getOwnPropertyNames:q,getOwnPropertyDescriptor:U}=Object,k=Object.prototype.hasOwnProperty;var F=new WeakMap,W=(i)=>{var t=F.get(i),s;if(t)return t;if(t=f({},"__esModule",{value:!0}),i&&typeof i==="object"||typeof i==="function")q(i).map((a)=>!k.call(t,a)&&f(t,a,{get:()=>i[a],enumerable:!(s=U(i,a))||s.enumerable}));return F.set(i,t),t};var V=(i,t)=>{for(var s in t)f(i,s,{get:t[s],enumerable:!0,configurable:!0,set:(a)=>t[s]=()=>a})};var X={};V(X,{setGlobalLogger:()=>x,readRuntimeEnv:()=>Q,ok:()=>C,loggerMiddleware:()=>K,logger:()=>H,getRuntimeEnvSource:()=>P,getLogger:()=>m,fail:()=>d,createLogger:()=>I,RetryHandler:()=>O,Result:()=>L,RateLimiter:()=>_,Logger:()=>n,LogLevel:()=>S,KMsgErrorCode:()=>c,KMsgError:()=>T,ErrorUtils:()=>D,CircuitBreaker:()=>w,BulkOperationHandler:()=>o});module.exports=W(X);var c;((p)=>{p.INVALID_REQUEST="INVALID_REQUEST";p.AUTHENTICATION_FAILED="AUTHENTICATION_FAILED";p.INSUFFICIENT_BALANCE="INSUFFICIENT_BALANCE";p.TEMPLATE_NOT_FOUND="TEMPLATE_NOT_FOUND";p.RATE_LIMIT_EXCEEDED="RATE_LIMIT_EXCEEDED";p.NETWORK_ERROR="NETWORK_ERROR";p.NETWORK_TIMEOUT="NETWORK_TIMEOUT";p.NETWORK_SERVICE_UNAVAILABLE="NETWORK_SERVICE_UNAVAILABLE";p.PROVIDER_ERROR="PROVIDER_ERROR";p.MESSAGE_SEND_FAILED="MESSAGE_SEND_FAILED";p.UNKNOWN_ERROR="UNKNOWN_ERROR"})(c||={});class T extends Error{code;details;constructor(i,t,s){super(t);if(this.name="KMsgError",this.code=i,this.details=s,Error.captureStackTrace)Error.captureStackTrace(this,T)}toJSON(){return{name:this.name,code:this.code,message:this.message,details:this.details}}}var D={isRetryable:(i)=>{if(i instanceof T)return["NETWORK_ERROR","RATE_LIMIT_EXCEEDED","PROVIDER_ERROR"].includes(i.code);return!1}};var S;((e)=>{e.DEBUG="DEBUG";e.INFO="INFO";e.WARN="WARN";e.ERROR="ERROR"})(S||={});class n{config;context;constructor(i={},t={}){this.context=i,this.config={level:"INFO",enableConsole:!0,enableJson:!1,enableColors:!0,...t}}shouldLog(i){let t=["DEBUG","INFO","WARN","ERROR"];return t.indexOf(i)>=t.indexOf(this.config.level)}formatMessage(i){if(this.config.enableJson)return JSON.stringify({level:i.level,message:i.message,timestamp:i.timestamp.toISOString(),context:i.context,...i.error&&{error:{name:i.error.name,message:i.error.message,stack:i.error.stack}},...i.duration&&{duration:i.duration}});let t=i.timestamp.toISOString(),s=this.config.enableColors?this.colorizeLevel(i.level):i.level,a=Object.keys(i.context).length>0?` [${Object.entries(i.context).map(([E,h])=>`${E}=${h}`).join(", ")}]`:"",e=`${t} ${s}${a}: ${i.message}`;if(i.duration!==void 0)e+=` (${i.duration}ms)`;if(i.error)e+=`
2
- ${i.error.stack}`;return e}colorizeLevel(i){if(!this.config.enableColors)return i;return`${{["DEBUG"]:"\x1B[36m",["INFO"]:"\x1B[32m",["WARN"]:"\x1B[33m",["ERROR"]:"\x1B[31m"}[i]}${i}\x1B[0m`}writeLog(i){if(!this.shouldLog(i.level))return;let t=this.formatMessage(i);if(this.config.enableConsole)(i.level==="ERROR"?console.error:i.level==="WARN"?console.warn:console.log)(t);if(this.config.enableFile&&this.config.filePath);}debug(i,t={}){this.writeLog({level:"DEBUG",message:i,timestamp:new Date,context:{...this.context,...t}})}info(i,t={}){this.writeLog({level:"INFO",message:i,timestamp:new Date,context:{...this.context,...t}})}warn(i,t={},s){this.writeLog({level:"WARN",message:i,timestamp:new Date,context:{...this.context,...t},error:s})}error(i,t={},s){this.writeLog({level:"ERROR",message:i,timestamp:new Date,context:{...this.context,...t},error:s})}child(i){return new n({...this.context,...i},this.config)}time(i){let t=Date.now();return()=>{let s=Date.now()-t;this.info(`${i} completed`,{duration:s})}}async measure(i,t,s={}){let a=Date.now(),e={...s,operation:i};this.debug(`Starting ${i}`,e);try{let E=await t(),h=Date.now()-a;return this.info(`Completed ${i}`,{...e,duration:h}),E}catch(E){let h=Date.now()-a;throw this.error(`Failed ${i}`,{...e,duration:h},E instanceof Error?E:Error(String(E))),E}}}var r;function I(i,t){return new n(i,t)}function m(){if(!r)r=I();return r}function x(i){r=i}var H={debug:(i,t)=>m().debug(i,t),info:(i,t)=>m().info(i,t),warn:(i,t,s)=>m().warn(i,t,s),error:(i,t,s)=>m().error(i,t,s),child:(i)=>m().child(i),time:(i)=>m().time(i),measure:(i,t,s)=>m().measure(i,t,s)};function K(i){let t=I({},i);return async(s,a)=>{let e=Date.now(),h={requestId:Math.random().toString(36).substring(7),method:s.req.method,path:s.req.path,userAgent:s.req.header("user-agent")||"unknown"};t.info("Request started",h);try{await a();let u=Date.now()-e;t.info("Request completed",{...h,status:s.res.status,duration:u})}catch(u){let R=Date.now()-e;throw t.error("Request failed",{...h,duration:R},u instanceof Error?u:Error(String(u))),u}}}class O{static defaultOptions={maxAttempts:3,initialDelay:1000,maxDelay:30000,backoffMultiplier:2,jitter:!0,retryCondition:(i)=>D.isRetryable(i)};static async execute(i,t={}){let s={...O.defaultOptions,...t},a,e=s.initialDelay;for(let E=1;E<=s.maxAttempts;E++)try{return await i()}catch(h){if(a=h,E===s.maxAttempts||!s.retryCondition(a,E))throw a;let u=s.jitter?e+Math.random()*e*0.1:e;s.onRetry?.(a,E),await new Promise((R)=>setTimeout(R,u)),e=Math.min(e*s.backoffMultiplier,s.maxDelay)}throw a}static createRetryableFunction(i,t={}){return async(...s)=>{return O.execute(()=>i(...s),t)}}}class o{static async execute(i,t,s={}){let a={concurrency:5,retryOptions:{maxAttempts:3,initialDelay:1000,maxDelay:1e4,backoffMultiplier:2,jitter:!0},failFast:!1,...s},e=Date.now(),E=[],h=[],u=0,R=O.createRetryableFunction(t,a.retryOptions),B=o.createBatches(i,a.concurrency);for(let p of B){let b=p.map(async(N)=>{try{let A=await R(N);E.push({item:N,result:A})}catch(A){if(h.push({item:N,error:A}),a.failFast)throw new T("MESSAGE_SEND_FAILED",`Bulk operation failed fast after ${h.length} failures`,{totalItems:i.length,failedCount:h.length})}finally{u++,a.onProgress?.(u,i.length,h.length)}});if(await Promise.allSettled(b),a.failFast&&h.length>0)break}let M=Date.now()-e;return{successful:E,failed:h,summary:{total:i.length,successful:E.length,failed:h.length,duration:M}}}static createBatches(i,t){let s=[];for(let a=0;a<i.length;a+=t)s.push(i.slice(a,a+t));return s}}class w{options;state="CLOSED";failureCount=0;lastFailureTime=0;nextAttemptTime=0;constructor(i){this.options=i}async execute(i){let t=Date.now();switch(this.state){case"OPEN":if(t<this.nextAttemptTime)throw new T("NETWORK_SERVICE_UNAVAILABLE","Circuit breaker is OPEN",{state:this.state,nextAttemptTime:this.nextAttemptTime});this.state="HALF_OPEN",this.options.onHalfOpen?.();break;case"HALF_OPEN":break;case"CLOSED":break}try{let s=await Promise.race([i(),new Promise((a,e)=>setTimeout(()=>e(new T("NETWORK_TIMEOUT","Circuit breaker timeout",{timeout:this.options.timeout})),this.options.timeout))]);if(this.state==="HALF_OPEN")this.state="CLOSED",this.failureCount=0,this.options.onClose?.();return s}catch(s){throw this.recordFailure(),s}}recordFailure(){if(this.failureCount++,this.lastFailureTime=Date.now(),this.failureCount>=this.options.failureThreshold)this.state="OPEN",this.nextAttemptTime=this.lastFailureTime+this.options.resetTimeout,this.options.onOpen?.()}getState(){return this.state}getFailureCount(){return this.failureCount}reset(){this.state="CLOSED",this.failureCount=0,this.lastFailureTime=0,this.nextAttemptTime=0}}class _{maxRequests;windowMs;requests=[];constructor(i,t){this.maxRequests=i;this.windowMs=t}async acquire(){let i=Date.now();if(this.requests=this.requests.filter((t)=>i-t<this.windowMs),this.requests.length>=this.maxRequests){let t=Math.min(...this.requests),s=this.windowMs-(i-t);if(s>0)return await new Promise((a)=>setTimeout(a,s)),this.acquire()}this.requests.push(i)}canMakeRequest(){let i=Date.now();return this.requests=this.requests.filter((t)=>i-t<this.windowMs),this.requests.length<this.maxRequests}getRemainingRequests(){let i=Date.now();return this.requests=this.requests.filter((t)=>i-t<this.windowMs),Math.max(0,this.maxRequests-this.requests.length)}}var C=(i)=>({isSuccess:!0,isFailure:!1,value:i}),d=(i)=>({isSuccess:!1,isFailure:!0,error:i}),L={map(i,t){if(i.isSuccess)return C(t(i.value));return i},flatMap(i,t){if(i.isSuccess)return t(i.value);return i},mapError(i,t){if(i.isFailure)return d(t(i.error));return i},unwrap(i){if(i.isSuccess)return i.value;throw i.error},unwrapOr(i,t){if(i.isSuccess)return i.value;return t},unwrapOrElse(i,t){if(i.isSuccess)return i.value;return t(i.error)},match(i,t){if(i.isSuccess)return t.ok(i.value);return t.fail(i.error)},async fromPromise(i){try{let t=await i;return C(t)}catch(t){return d(t)}},isOk(i){return i.isSuccess},isFail(i){return i.isFailure}};function P(){let i=globalThis;return i.__K_MSG_ENV__??i.__ENV__??i.process?.env??{}}function Q(i){let t=P()[i];if(typeof t==="string")return t;if(t===void 0)return;return String(t)}
1
+ var{defineProperty:A,getOwnPropertyNames:b,getOwnPropertyDescriptor:U}=Object,k=Object.prototype.hasOwnProperty;var C=new WeakMap,W=(t)=>{var i=C.get(t),s;if(i)return i;if(i=A({},"__esModule",{value:!0}),t&&typeof t==="object"||typeof t==="function")b(t).map((e)=>!k.call(i,e)&&A(i,e,{get:()=>t[e],enumerable:!(s=U(t,e))||s.enumerable}));return C.set(t,i),i};var x=(t,i)=>{for(var s in i)A(t,s,{get:i[s],enumerable:!0,configurable:!0,set:(e)=>i[s]=()=>e})};var X={};x(X,{setGlobalLogger:()=>K,readRuntimeEnv:()=>Q,ok:()=>S,loggerMiddleware:()=>H,logger:()=>V,getRuntimeEnvSource:()=>M,getLogger:()=>h,fail:()=>_,createLogger:()=>D,RetryHandler:()=>o,Result:()=>L,RateLimiter:()=>w,Logger:()=>O,LogLevel:()=>P,KMsgErrorCode:()=>R,KMsgError:()=>m,ErrorUtils:()=>I,CircuitBreaker:()=>d,BulkOperationHandler:()=>c});module.exports=W(X);var R;((p)=>{p.INVALID_REQUEST="INVALID_REQUEST";p.AUTHENTICATION_FAILED="AUTHENTICATION_FAILED";p.INSUFFICIENT_BALANCE="INSUFFICIENT_BALANCE";p.TEMPLATE_NOT_FOUND="TEMPLATE_NOT_FOUND";p.RATE_LIMIT_EXCEEDED="RATE_LIMIT_EXCEEDED";p.NETWORK_ERROR="NETWORK_ERROR";p.NETWORK_TIMEOUT="NETWORK_TIMEOUT";p.NETWORK_SERVICE_UNAVAILABLE="NETWORK_SERVICE_UNAVAILABLE";p.PROVIDER_ERROR="PROVIDER_ERROR";p.MESSAGE_SEND_FAILED="MESSAGE_SEND_FAILED";p.UNKNOWN_ERROR="UNKNOWN_ERROR"})(R||={});class m extends Error{code;details;constructor(t,i,s){super(i);if(this.name="KMsgError",this.code=t,this.details=s,Error.captureStackTrace)Error.captureStackTrace(this,m)}toJSON(){return{name:this.name,code:this.code,message:this.message,details:this.details}}}var I={isRetryable:(t)=>{if(t instanceof m)return["NETWORK_ERROR","RATE_LIMIT_EXCEEDED","PROVIDER_ERROR"].includes(t.code);return!1}};var P;((a)=>{a.DEBUG="DEBUG";a.INFO="INFO";a.WARN="WARN";a.ERROR="ERROR"})(P||={});class O{config;context;constructor(t={},i={}){this.context=t,this.config={level:"INFO",enableConsole:!0,enableJson:!1,enableColors:!0,...i}}shouldLog(t){let i=["DEBUG","INFO","WARN","ERROR"];return i.indexOf(t)>=i.indexOf(this.config.level)}formatMessage(t){if(this.config.enableJson)return JSON.stringify({level:t.level,message:t.message,timestamp:t.timestamp.toISOString(),context:t.context,...t.error&&{error:{name:t.error.name,message:t.error.message,stack:t.error.stack}},...t.duration&&{duration:t.duration}});let i=t.timestamp.toISOString(),s=this.config.enableColors?this.colorizeLevel(t.level):t.level,e=Object.keys(t.context).length>0?` [${Object.entries(t.context).map(([r,E])=>`${r}=${E}`).join(", ")}]`:"",a=`${i} ${s}${e}: ${t.message}`;if(t.duration!==void 0)a+=` (${t.duration}ms)`;if(t.error)a+=`
2
+ ${t.error.stack}`;return a}colorizeLevel(t){if(!this.config.enableColors)return t;return`${{["DEBUG"]:"\x1B[36m",["INFO"]:"\x1B[32m",["WARN"]:"\x1B[33m",["ERROR"]:"\x1B[31m"}[t]}${t}\x1B[0m`}writeLog(t){if(!this.shouldLog(t.level))return;let i=this.formatMessage(t);if(this.config.enableConsole)(t.level==="ERROR"?console.error:t.level==="WARN"?console.warn:console.log)(i);if(this.config.enableFile&&this.config.filePath);}debug(t,i={}){this.writeLog({level:"DEBUG",message:t,timestamp:new Date,context:{...this.context,...i}})}info(t,i={}){this.writeLog({level:"INFO",message:t,timestamp:new Date,context:{...this.context,...i}})}warn(t,i={},s){this.writeLog({level:"WARN",message:t,timestamp:new Date,context:{...this.context,...i},error:s})}error(t,i={},s){this.writeLog({level:"ERROR",message:t,timestamp:new Date,context:{...this.context,...i},error:s})}child(t){return new O({...this.context,...t},this.config)}time(t){let i=Date.now();return()=>{let s=Date.now()-i;this.info(`${t} completed`,{duration:s})}}async measure(t,i,s={}){let e=Date.now(),a={...s,operation:t};this.debug(`Starting ${t}`,a);try{let r=await i(),E=Date.now()-e;return this.info(`Completed ${t}`,{...a,duration:E}),r}catch(r){let E=Date.now()-e;throw this.error(`Failed ${t}`,{...a,duration:E},r instanceof Error?r:Error(String(r))),r}}}var T;function D(t,i){return new O(t,i)}function h(){if(!T)T=D();return T}function K(t){T=t}var V={debug:(t,i)=>h().debug(t,i),info:(t,i)=>h().info(t,i),warn:(t,i,s)=>h().warn(t,i,s),error:(t,i,s)=>h().error(t,i,s),child:(t)=>h().child(t),time:(t)=>h().time(t),measure:(t,i,s)=>h().measure(t,i,s)};function H(t){let i=D({},t);return async(s,e)=>{let a=Date.now(),E={requestId:Math.random().toString(36).substring(7),method:s.req.method,path:s.req.path,userAgent:s.req.header("user-agent")||"unknown"};i.info("Request started",E);try{await e();let u=Date.now()-a;i.info("Request completed",{...E,status:s.res.status,duration:u})}catch(u){let n=Date.now()-a;throw i.error("Request failed",{...E,duration:n},u instanceof Error?u:Error(String(u))),u}}}class o{static defaultOptions={maxAttempts:3,initialDelay:1000,maxDelay:30000,backoffMultiplier:2,jitter:!0,retryCondition:(t)=>I.isRetryable(t)};static async execute(t,i={}){let s={...o.defaultOptions,...i},e,a=s.initialDelay;for(let r=1;r<=s.maxAttempts;r++)try{return await t()}catch(E){if(e=E,r===s.maxAttempts||!s.retryCondition(e,r))throw e;let u=s.jitter?a+Math.random()*a*0.1:a;s.onRetry?.(e,r),await new Promise((n)=>setTimeout(n,u)),a=Math.min(a*s.backoffMultiplier,s.maxDelay)}throw e}static createRetryableFunction(t,i={}){return async(...s)=>{return o.execute(()=>t(...s),i)}}}class c{static async execute(t,i,s={}){let e={concurrency:5,retryOptions:{maxAttempts:3,initialDelay:1000,maxDelay:1e4,backoffMultiplier:2,jitter:!0},failFast:!1,...s},a=Date.now(),r=[],E=[],u=0,n=o.createRetryableFunction(i,e.retryOptions),F=c.createBatches(t,e.concurrency);for(let p of F){let q=p.map(async(f)=>{try{let N=await n(f);r.push({item:f,result:N})}catch(N){if(E.push({item:f,error:N}),e.failFast)throw new m("MESSAGE_SEND_FAILED",`Bulk operation failed fast after ${E.length} failures`,{totalItems:t.length,failedCount:E.length})}finally{u++,e.onProgress?.(u,t.length,E.length)}});if(await Promise.allSettled(q),e.failFast&&E.length>0)break}let B=Date.now()-a;return{successful:r,failed:E,summary:{total:t.length,successful:r.length,failed:E.length,duration:B}}}static createBatches(t,i){let s=[];for(let e=0;e<t.length;e+=i)s.push(t.slice(e,e+i));return s}}class d{options;state="CLOSED";failureCount=0;lastFailureTime=0;nextAttemptTime=0;constructor(t){this.options=t}async execute(t){let i=Date.now();switch(this.state){case"OPEN":if(i<this.nextAttemptTime)throw new m("NETWORK_SERVICE_UNAVAILABLE","Circuit breaker is OPEN",{state:this.state,nextAttemptTime:this.nextAttemptTime});this.state="HALF_OPEN",this.options.onHalfOpen?.();break;case"HALF_OPEN":break;case"CLOSED":break}try{let s=await Promise.race([t(),new Promise((e,a)=>setTimeout(()=>a(new m("NETWORK_TIMEOUT","Circuit breaker timeout",{timeout:this.options.timeout})),this.options.timeout))]);if(this.state==="HALF_OPEN")this.state="CLOSED",this.failureCount=0,this.options.onClose?.();return s}catch(s){throw this.recordFailure(),s}}recordFailure(){if(this.failureCount++,this.lastFailureTime=Date.now(),this.failureCount>=this.options.failureThreshold)this.state="OPEN",this.nextAttemptTime=this.lastFailureTime+this.options.resetTimeout,this.options.onOpen?.()}getState(){return this.state}getFailureCount(){return this.failureCount}reset(){this.state="CLOSED",this.failureCount=0,this.lastFailureTime=0,this.nextAttemptTime=0}}class w{maxRequests;windowMs;requests=[];constructor(t,i){this.maxRequests=t;this.windowMs=i}async acquire(){let t=Date.now();if(this.requests=this.requests.filter((i)=>t-i<this.windowMs),this.requests.length>=this.maxRequests){let i=Math.min(...this.requests),s=this.windowMs-(t-i);if(s>0)return await new Promise((e)=>setTimeout(e,s)),this.acquire()}this.requests.push(t)}canMakeRequest(){let t=Date.now();return this.requests=this.requests.filter((i)=>t-i<this.windowMs),this.requests.length<this.maxRequests}getRemainingRequests(){let t=Date.now();return this.requests=this.requests.filter((i)=>t-i<this.windowMs),Math.max(0,this.maxRequests-this.requests.length)}}var S=(t)=>({isSuccess:!0,isFailure:!1,value:t}),_=(t)=>({isSuccess:!1,isFailure:!0,error:t}),L={map(t,i){if(t.isSuccess)return S(i(t.value));return t},flatMap(t,i){if(t.isSuccess)return i(t.value);return t},mapError(t,i){if(t.isFailure)return _(i(t.error));return t},unwrap(t){if(t.isSuccess)return t.value;throw t.error},unwrapOr(t,i){if(t.isSuccess)return t.value;return i},unwrapOrElse(t,i){if(t.isSuccess)return t.value;return i(t.error)},match(t,i){if(t.isSuccess)return i.ok(t.value);return i.fail(t.error)},async fromPromise(t){try{let i=await t;return S(i)}catch(i){return _(i)}},isOk(t){return t.isSuccess},isFail(t){return t.isFailure}};function M(){let t=globalThis;return t.__K_MSG_ENV__??t.__ENV__??t.process?.env??{}}function Q(t){let i=M()[t];if(typeof i==="string")return i;if(i===void 0)return;return String(i)}
3
3
 
4
- //# debugId=1CFE289649F51E6C64756E2164756E21
4
+ //# debugId=D9BEF3DEA7C5DEF264756E2164756E21
5
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -12,6 +12,6 @@
12
12
  "export type RuntimeEnvRecord = Record<string, string | undefined>;\n\ntype RuntimeGlobal = typeof globalThis & {\n __ENV__?: RuntimeEnvRecord;\n __K_MSG_ENV__?: RuntimeEnvRecord;\n process?: {\n env?: RuntimeEnvRecord;\n };\n};\n\n/**\n * Resolve environment variables in a runtime-neutral order.\n *\n * Priority:\n * 1. globalThis.__K_MSG_ENV__\n * 2. globalThis.__ENV__\n * 3. globalThis.process?.env\n */\nexport function getRuntimeEnvSource(): RuntimeEnvRecord {\n const runtimeGlobal = globalThis as RuntimeGlobal;\n return (\n runtimeGlobal.__K_MSG_ENV__ ??\n runtimeGlobal.__ENV__ ??\n runtimeGlobal.process?.env ??\n {}\n );\n}\n\nexport function readRuntimeEnv(key: string): string | undefined {\n const value = getRuntimeEnvSource()[key];\n if (typeof value === \"string\") {\n return value;\n }\n if (value === undefined) {\n return undefined;\n }\n return String(value);\n}\n"
13
13
  ],
14
14
  "mappings": "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",
15
- "debugId": "1CFE289649F51E6C64756E2164756E21",
15
+ "debugId": "D9BEF3DEA7C5DEF264756E2164756E21",
16
16
  "names": []
17
17
  }
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
- var o;((p)=>{p.INVALID_REQUEST="INVALID_REQUEST";p.AUTHENTICATION_FAILED="AUTHENTICATION_FAILED";p.INSUFFICIENT_BALANCE="INSUFFICIENT_BALANCE";p.TEMPLATE_NOT_FOUND="TEMPLATE_NOT_FOUND";p.RATE_LIMIT_EXCEEDED="RATE_LIMIT_EXCEEDED";p.NETWORK_ERROR="NETWORK_ERROR";p.NETWORK_TIMEOUT="NETWORK_TIMEOUT";p.NETWORK_SERVICE_UNAVAILABLE="NETWORK_SERVICE_UNAVAILABLE";p.PROVIDER_ERROR="PROVIDER_ERROR";p.MESSAGE_SEND_FAILED="MESSAGE_SEND_FAILED";p.UNKNOWN_ERROR="UNKNOWN_ERROR"})(o||={});class T extends Error{code;details;constructor(i,t,s){super(t);if(this.name="KMsgError",this.code=i,this.details=s,Error.captureStackTrace)Error.captureStackTrace(this,T)}toJSON(){return{name:this.name,code:this.code,message:this.message,details:this.details}}}var f={isRetryable:(i)=>{if(i instanceof T)return["NETWORK_ERROR","RATE_LIMIT_EXCEEDED","PROVIDER_ERROR"].includes(i.code);return!1}};var P;((e)=>{e.DEBUG="DEBUG";e.INFO="INFO";e.WARN="WARN";e.ERROR="ERROR"})(P||={});class N{config;context;constructor(i={},t={}){this.context=i,this.config={level:"INFO",enableConsole:!0,enableJson:!1,enableColors:!0,...t}}shouldLog(i){let t=["DEBUG","INFO","WARN","ERROR"];return t.indexOf(i)>=t.indexOf(this.config.level)}formatMessage(i){if(this.config.enableJson)return JSON.stringify({level:i.level,message:i.message,timestamp:i.timestamp.toISOString(),context:i.context,...i.error&&{error:{name:i.error.name,message:i.error.message,stack:i.error.stack}},...i.duration&&{duration:i.duration}});let t=i.timestamp.toISOString(),s=this.config.enableColors?this.colorizeLevel(i.level):i.level,a=Object.keys(i.context).length>0?` [${Object.entries(i.context).map(([E,h])=>`${E}=${h}`).join(", ")}]`:"",e=`${t} ${s}${a}: ${i.message}`;if(i.duration!==void 0)e+=` (${i.duration}ms)`;if(i.error)e+=`
2
- ${i.error.stack}`;return e}colorizeLevel(i){if(!this.config.enableColors)return i;return`${{["DEBUG"]:"\x1B[36m",["INFO"]:"\x1B[32m",["WARN"]:"\x1B[33m",["ERROR"]:"\x1B[31m"}[i]}${i}\x1B[0m`}writeLog(i){if(!this.shouldLog(i.level))return;let t=this.formatMessage(i);if(this.config.enableConsole)(i.level==="ERROR"?console.error:i.level==="WARN"?console.warn:console.log)(t);if(this.config.enableFile&&this.config.filePath);}debug(i,t={}){this.writeLog({level:"DEBUG",message:i,timestamp:new Date,context:{...this.context,...t}})}info(i,t={}){this.writeLog({level:"INFO",message:i,timestamp:new Date,context:{...this.context,...t}})}warn(i,t={},s){this.writeLog({level:"WARN",message:i,timestamp:new Date,context:{...this.context,...t},error:s})}error(i,t={},s){this.writeLog({level:"ERROR",message:i,timestamp:new Date,context:{...this.context,...t},error:s})}child(i){return new N({...this.context,...i},this.config)}time(i){let t=Date.now();return()=>{let s=Date.now()-t;this.info(`${i} completed`,{duration:s})}}async measure(i,t,s={}){let a=Date.now(),e={...s,operation:i};this.debug(`Starting ${i}`,e);try{let E=await t(),h=Date.now()-a;return this.info(`Completed ${i}`,{...e,duration:h}),E}catch(E){let h=Date.now()-a;throw this.error(`Failed ${i}`,{...e,duration:h},E instanceof Error?E:Error(String(E))),E}}}var c;function D(i,t){return new N(i,t)}function m(){if(!c)c=D();return c}function b(i){c=i}var q={debug:(i,t)=>m().debug(i,t),info:(i,t)=>m().info(i,t),warn:(i,t,s)=>m().warn(i,t,s),error:(i,t,s)=>m().error(i,t,s),child:(i)=>m().child(i),time:(i)=>m().time(i),measure:(i,t,s)=>m().measure(i,t,s)};function U(i){let t=D({},i);return async(s,a)=>{let e=Date.now(),h={requestId:Math.random().toString(36).substring(7),method:s.req.method,path:s.req.path,userAgent:s.req.header("user-agent")||"unknown"};t.info("Request started",h);try{await a();let u=Date.now()-e;t.info("Request completed",{...h,status:s.res.status,duration:u})}catch(u){let R=Date.now()-e;throw t.error("Request failed",{...h,duration:R},u instanceof Error?u:Error(String(u))),u}}}class O{static defaultOptions={maxAttempts:3,initialDelay:1000,maxDelay:30000,backoffMultiplier:2,jitter:!0,retryCondition:(i)=>f.isRetryable(i)};static async execute(i,t={}){let s={...O.defaultOptions,...t},a,e=s.initialDelay;for(let E=1;E<=s.maxAttempts;E++)try{return await i()}catch(h){if(a=h,E===s.maxAttempts||!s.retryCondition(a,E))throw a;let u=s.jitter?e+Math.random()*e*0.1:e;s.onRetry?.(a,E),await new Promise((R)=>setTimeout(R,u)),e=Math.min(e*s.backoffMultiplier,s.maxDelay)}throw a}static createRetryableFunction(i,t={}){return async(...s)=>{return O.execute(()=>i(...s),t)}}}class A{static async execute(i,t,s={}){let a={concurrency:5,retryOptions:{maxAttempts:3,initialDelay:1000,maxDelay:1e4,backoffMultiplier:2,jitter:!0},failFast:!1,...s},e=Date.now(),E=[],h=[],u=0,R=O.createRetryableFunction(t,a.retryOptions),d=A.createBatches(i,a.concurrency);for(let p of d){let S=p.map(async(r)=>{try{let n=await R(r);E.push({item:r,result:n})}catch(n){if(h.push({item:r,error:n}),a.failFast)throw new T("MESSAGE_SEND_FAILED",`Bulk operation failed fast after ${h.length} failures`,{totalItems:i.length,failedCount:h.length})}finally{u++,a.onProgress?.(u,i.length,h.length)}});if(await Promise.allSettled(S),a.failFast&&h.length>0)break}let F=Date.now()-e;return{successful:E,failed:h,summary:{total:i.length,successful:E.length,failed:h.length,duration:F}}}static createBatches(i,t){let s=[];for(let a=0;a<i.length;a+=t)s.push(i.slice(a,a+t));return s}}class I{options;state="CLOSED";failureCount=0;lastFailureTime=0;nextAttemptTime=0;constructor(i){this.options=i}async execute(i){let t=Date.now();switch(this.state){case"OPEN":if(t<this.nextAttemptTime)throw new T("NETWORK_SERVICE_UNAVAILABLE","Circuit breaker is OPEN",{state:this.state,nextAttemptTime:this.nextAttemptTime});this.state="HALF_OPEN",this.options.onHalfOpen?.();break;case"HALF_OPEN":break;case"CLOSED":break}try{let s=await Promise.race([i(),new Promise((a,e)=>setTimeout(()=>e(new T("NETWORK_TIMEOUT","Circuit breaker timeout",{timeout:this.options.timeout})),this.options.timeout))]);if(this.state==="HALF_OPEN")this.state="CLOSED",this.failureCount=0,this.options.onClose?.();return s}catch(s){throw this.recordFailure(),s}}recordFailure(){if(this.failureCount++,this.lastFailureTime=Date.now(),this.failureCount>=this.options.failureThreshold)this.state="OPEN",this.nextAttemptTime=this.lastFailureTime+this.options.resetTimeout,this.options.onOpen?.()}getState(){return this.state}getFailureCount(){return this.failureCount}reset(){this.state="CLOSED",this.failureCount=0,this.lastFailureTime=0,this.nextAttemptTime=0}}class w{maxRequests;windowMs;requests=[];constructor(i,t){this.maxRequests=i;this.windowMs=t}async acquire(){let i=Date.now();if(this.requests=this.requests.filter((t)=>i-t<this.windowMs),this.requests.length>=this.maxRequests){let t=Math.min(...this.requests),s=this.windowMs-(i-t);if(s>0)return await new Promise((a)=>setTimeout(a,s)),this.acquire()}this.requests.push(i)}canMakeRequest(){let i=Date.now();return this.requests=this.requests.filter((t)=>i-t<this.windowMs),this.requests.length<this.maxRequests}getRemainingRequests(){let i=Date.now();return this.requests=this.requests.filter((t)=>i-t<this.windowMs),Math.max(0,this.maxRequests-this.requests.length)}}var _=(i)=>({isSuccess:!0,isFailure:!1,value:i}),C=(i)=>({isSuccess:!1,isFailure:!0,error:i}),Z={map(i,t){if(i.isSuccess)return _(t(i.value));return i},flatMap(i,t){if(i.isSuccess)return t(i.value);return i},mapError(i,t){if(i.isFailure)return C(t(i.error));return i},unwrap(i){if(i.isSuccess)return i.value;throw i.error},unwrapOr(i,t){if(i.isSuccess)return i.value;return t},unwrapOrElse(i,t){if(i.isSuccess)return i.value;return t(i.error)},match(i,t){if(i.isSuccess)return t.ok(i.value);return t.fail(i.error)},async fromPromise(i){try{let t=await i;return _(t)}catch(t){return C(t)}},isOk(i){return i.isSuccess},isFail(i){return i.isFailure}};function B(){let i=globalThis;return i.__K_MSG_ENV__??i.__ENV__??i.process?.env??{}}function v(i){let t=B()[i];if(typeof t==="string")return t;if(t===void 0)return;return String(t)}export{b as setGlobalLogger,v as readRuntimeEnv,_ as ok,U as loggerMiddleware,q as logger,B as getRuntimeEnvSource,m as getLogger,C as fail,D as createLogger,O as RetryHandler,Z as Result,w as RateLimiter,N as Logger,P as LogLevel,o as KMsgErrorCode,T as KMsgError,f as ErrorUtils,I as CircuitBreaker,A as BulkOperationHandler};
1
+ var c;((p)=>{p.INVALID_REQUEST="INVALID_REQUEST";p.AUTHENTICATION_FAILED="AUTHENTICATION_FAILED";p.INSUFFICIENT_BALANCE="INSUFFICIENT_BALANCE";p.TEMPLATE_NOT_FOUND="TEMPLATE_NOT_FOUND";p.RATE_LIMIT_EXCEEDED="RATE_LIMIT_EXCEEDED";p.NETWORK_ERROR="NETWORK_ERROR";p.NETWORK_TIMEOUT="NETWORK_TIMEOUT";p.NETWORK_SERVICE_UNAVAILABLE="NETWORK_SERVICE_UNAVAILABLE";p.PROVIDER_ERROR="PROVIDER_ERROR";p.MESSAGE_SEND_FAILED="MESSAGE_SEND_FAILED";p.UNKNOWN_ERROR="UNKNOWN_ERROR"})(c||={});class m extends Error{code;details;constructor(t,i,s){super(i);if(this.name="KMsgError",this.code=t,this.details=s,Error.captureStackTrace)Error.captureStackTrace(this,m)}toJSON(){return{name:this.name,code:this.code,message:this.message,details:this.details}}}var A={isRetryable:(t)=>{if(t instanceof m)return["NETWORK_ERROR","RATE_LIMIT_EXCEEDED","PROVIDER_ERROR"].includes(t.code);return!1}};var M;((a)=>{a.DEBUG="DEBUG";a.INFO="INFO";a.WARN="WARN";a.ERROR="ERROR"})(M||={});class f{config;context;constructor(t={},i={}){this.context=t,this.config={level:"INFO",enableConsole:!0,enableJson:!1,enableColors:!0,...i}}shouldLog(t){let i=["DEBUG","INFO","WARN","ERROR"];return i.indexOf(t)>=i.indexOf(this.config.level)}formatMessage(t){if(this.config.enableJson)return JSON.stringify({level:t.level,message:t.message,timestamp:t.timestamp.toISOString(),context:t.context,...t.error&&{error:{name:t.error.name,message:t.error.message,stack:t.error.stack}},...t.duration&&{duration:t.duration}});let i=t.timestamp.toISOString(),s=this.config.enableColors?this.colorizeLevel(t.level):t.level,e=Object.keys(t.context).length>0?` [${Object.entries(t.context).map(([r,E])=>`${r}=${E}`).join(", ")}]`:"",a=`${i} ${s}${e}: ${t.message}`;if(t.duration!==void 0)a+=` (${t.duration}ms)`;if(t.error)a+=`
2
+ ${t.error.stack}`;return a}colorizeLevel(t){if(!this.config.enableColors)return t;return`${{["DEBUG"]:"\x1B[36m",["INFO"]:"\x1B[32m",["WARN"]:"\x1B[33m",["ERROR"]:"\x1B[31m"}[t]}${t}\x1B[0m`}writeLog(t){if(!this.shouldLog(t.level))return;let i=this.formatMessage(t);if(this.config.enableConsole)(t.level==="ERROR"?console.error:t.level==="WARN"?console.warn:console.log)(i);if(this.config.enableFile&&this.config.filePath);}debug(t,i={}){this.writeLog({level:"DEBUG",message:t,timestamp:new Date,context:{...this.context,...i}})}info(t,i={}){this.writeLog({level:"INFO",message:t,timestamp:new Date,context:{...this.context,...i}})}warn(t,i={},s){this.writeLog({level:"WARN",message:t,timestamp:new Date,context:{...this.context,...i},error:s})}error(t,i={},s){this.writeLog({level:"ERROR",message:t,timestamp:new Date,context:{...this.context,...i},error:s})}child(t){return new f({...this.context,...t},this.config)}time(t){let i=Date.now();return()=>{let s=Date.now()-i;this.info(`${t} completed`,{duration:s})}}async measure(t,i,s={}){let e=Date.now(),a={...s,operation:t};this.debug(`Starting ${t}`,a);try{let r=await i(),E=Date.now()-e;return this.info(`Completed ${t}`,{...a,duration:E}),r}catch(r){let E=Date.now()-e;throw this.error(`Failed ${t}`,{...a,duration:E},r instanceof Error?r:Error(String(r))),r}}}var R;function I(t,i){return new f(t,i)}function h(){if(!R)R=I();return R}function q(t){R=t}var b={debug:(t,i)=>h().debug(t,i),info:(t,i)=>h().info(t,i),warn:(t,i,s)=>h().warn(t,i,s),error:(t,i,s)=>h().error(t,i,s),child:(t)=>h().child(t),time:(t)=>h().time(t),measure:(t,i,s)=>h().measure(t,i,s)};function U(t){let i=I({},t);return async(s,e)=>{let a=Date.now(),E={requestId:Math.random().toString(36).substring(7),method:s.req.method,path:s.req.path,userAgent:s.req.header("user-agent")||"unknown"};i.info("Request started",E);try{await e();let u=Date.now()-a;i.info("Request completed",{...E,status:s.res.status,duration:u})}catch(u){let n=Date.now()-a;throw i.error("Request failed",{...E,duration:n},u instanceof Error?u:Error(String(u))),u}}}class o{static defaultOptions={maxAttempts:3,initialDelay:1000,maxDelay:30000,backoffMultiplier:2,jitter:!0,retryCondition:(t)=>A.isRetryable(t)};static async execute(t,i={}){let s={...o.defaultOptions,...i},e,a=s.initialDelay;for(let r=1;r<=s.maxAttempts;r++)try{return await t()}catch(E){if(e=E,r===s.maxAttempts||!s.retryCondition(e,r))throw e;let u=s.jitter?a+Math.random()*a*0.1:a;s.onRetry?.(e,r),await new Promise((n)=>setTimeout(n,u)),a=Math.min(a*s.backoffMultiplier,s.maxDelay)}throw e}static createRetryableFunction(t,i={}){return async(...s)=>{return o.execute(()=>t(...s),i)}}}class N{static async execute(t,i,s={}){let e={concurrency:5,retryOptions:{maxAttempts:3,initialDelay:1000,maxDelay:1e4,backoffMultiplier:2,jitter:!0},failFast:!1,...s},a=Date.now(),r=[],E=[],u=0,n=o.createRetryableFunction(i,e.retryOptions),_=N.createBatches(t,e.concurrency);for(let p of _){let P=p.map(async(T)=>{try{let O=await n(T);r.push({item:T,result:O})}catch(O){if(E.push({item:T,error:O}),e.failFast)throw new m("MESSAGE_SEND_FAILED",`Bulk operation failed fast after ${E.length} failures`,{totalItems:t.length,failedCount:E.length})}finally{u++,e.onProgress?.(u,t.length,E.length)}});if(await Promise.allSettled(P),e.failFast&&E.length>0)break}let C=Date.now()-a;return{successful:r,failed:E,summary:{total:t.length,successful:r.length,failed:E.length,duration:C}}}static createBatches(t,i){let s=[];for(let e=0;e<t.length;e+=i)s.push(t.slice(e,e+i));return s}}class D{options;state="CLOSED";failureCount=0;lastFailureTime=0;nextAttemptTime=0;constructor(t){this.options=t}async execute(t){let i=Date.now();switch(this.state){case"OPEN":if(i<this.nextAttemptTime)throw new m("NETWORK_SERVICE_UNAVAILABLE","Circuit breaker is OPEN",{state:this.state,nextAttemptTime:this.nextAttemptTime});this.state="HALF_OPEN",this.options.onHalfOpen?.();break;case"HALF_OPEN":break;case"CLOSED":break}try{let s=await Promise.race([t(),new Promise((e,a)=>setTimeout(()=>a(new m("NETWORK_TIMEOUT","Circuit breaker timeout",{timeout:this.options.timeout})),this.options.timeout))]);if(this.state==="HALF_OPEN")this.state="CLOSED",this.failureCount=0,this.options.onClose?.();return s}catch(s){throw this.recordFailure(),s}}recordFailure(){if(this.failureCount++,this.lastFailureTime=Date.now(),this.failureCount>=this.options.failureThreshold)this.state="OPEN",this.nextAttemptTime=this.lastFailureTime+this.options.resetTimeout,this.options.onOpen?.()}getState(){return this.state}getFailureCount(){return this.failureCount}reset(){this.state="CLOSED",this.failureCount=0,this.lastFailureTime=0,this.nextAttemptTime=0}}class d{maxRequests;windowMs;requests=[];constructor(t,i){this.maxRequests=t;this.windowMs=i}async acquire(){let t=Date.now();if(this.requests=this.requests.filter((i)=>t-i<this.windowMs),this.requests.length>=this.maxRequests){let i=Math.min(...this.requests),s=this.windowMs-(t-i);if(s>0)return await new Promise((e)=>setTimeout(e,s)),this.acquire()}this.requests.push(t)}canMakeRequest(){let t=Date.now();return this.requests=this.requests.filter((i)=>t-i<this.windowMs),this.requests.length<this.maxRequests}getRemainingRequests(){let t=Date.now();return this.requests=this.requests.filter((i)=>t-i<this.windowMs),Math.max(0,this.maxRequests-this.requests.length)}}var w=(t)=>({isSuccess:!0,isFailure:!1,value:t}),S=(t)=>({isSuccess:!1,isFailure:!0,error:t}),Z={map(t,i){if(t.isSuccess)return w(i(t.value));return t},flatMap(t,i){if(t.isSuccess)return i(t.value);return t},mapError(t,i){if(t.isFailure)return S(i(t.error));return t},unwrap(t){if(t.isSuccess)return t.value;throw t.error},unwrapOr(t,i){if(t.isSuccess)return t.value;return i},unwrapOrElse(t,i){if(t.isSuccess)return t.value;return i(t.error)},match(t,i){if(t.isSuccess)return i.ok(t.value);return i.fail(t.error)},async fromPromise(t){try{let i=await t;return w(i)}catch(i){return S(i)}},isOk(t){return t.isSuccess},isFail(t){return t.isFailure}};function F(){let t=globalThis;return t.__K_MSG_ENV__??t.__ENV__??t.process?.env??{}}function l(t){let i=F()[t];if(typeof i==="string")return i;if(i===void 0)return;return String(i)}export{q as setGlobalLogger,l as readRuntimeEnv,w as ok,U as loggerMiddleware,b as logger,F as getRuntimeEnvSource,h as getLogger,S as fail,I as createLogger,o as RetryHandler,Z as Result,d as RateLimiter,f as Logger,M as LogLevel,c as KMsgErrorCode,m as KMsgError,A as ErrorUtils,D as CircuitBreaker,N as BulkOperationHandler};
3
3
 
4
- //# debugId=6B60D505C187A3FE64756E2164756E21
4
+ //# debugId=B3B344F13EBDBBA464756E2164756E21
5
5
  //# sourceMappingURL=index.mjs.map
@@ -12,6 +12,6 @@
12
12
  "export type RuntimeEnvRecord = Record<string, string | undefined>;\n\ntype RuntimeGlobal = typeof globalThis & {\n __ENV__?: RuntimeEnvRecord;\n __K_MSG_ENV__?: RuntimeEnvRecord;\n process?: {\n env?: RuntimeEnvRecord;\n };\n};\n\n/**\n * Resolve environment variables in a runtime-neutral order.\n *\n * Priority:\n * 1. globalThis.__K_MSG_ENV__\n * 2. globalThis.__ENV__\n * 3. globalThis.process?.env\n */\nexport function getRuntimeEnvSource(): RuntimeEnvRecord {\n const runtimeGlobal = globalThis as RuntimeGlobal;\n return (\n runtimeGlobal.__K_MSG_ENV__ ??\n runtimeGlobal.__ENV__ ??\n runtimeGlobal.process?.env ??\n {}\n );\n}\n\nexport function readRuntimeEnv(key: string): string | undefined {\n const value = getRuntimeEnvSource()[key];\n if (typeof value === \"string\") {\n return value;\n }\n if (value === undefined) {\n return undefined;\n }\n return String(value);\n}\n"
13
13
  ],
14
14
  "mappings": "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",
15
- "debugId": "6B60D505C187A3FE64756E2164756E21",
15
+ "debugId": "B3B344F13EBDBBA464756E2164756E21",
16
16
  "names": []
17
17
  }
@@ -0,0 +1,11 @@
1
+ import type { KMsgError } from "../errors";
2
+ import type { Result } from "../result";
3
+ import type { SendInput, SendResult } from "../types/message";
4
+ export type PersistenceStrategy = "none" | "log" | "queue" | "full";
5
+ export interface MessageRepository {
6
+ save(input: SendInput, options?: {
7
+ strategy?: PersistenceStrategy;
8
+ }): Promise<Result<string, KMsgError>>;
9
+ update(messageId: string, result: Partial<SendResult>): Promise<Result<void, KMsgError>>;
10
+ find(messageId: string): Promise<Result<SendResult | null, KMsgError>>;
11
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@k-msg/core",
3
- "version": "0.17.0",
3
+ "version": "0.18.0",
4
4
  "packageManager": "bun@1.3.8",
5
5
  "description": "Core types and interfaces for K-Message platform",
6
6
  "type": "module",