@k-msg/core 0.26.0 → 0.27.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.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3 -3
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -3
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var{defineProperty:V,getOwnPropertyNames:Et,getOwnPropertyDescriptor:xt}=Object,Mt=Object.prototype.hasOwnProperty;var pt=new WeakMap,vt=(t)=>{var e=pt.get(t),n;if(e)return e;if(e=V({},"__esModule",{value:!0}),t&&typeof t==="object"||typeof t==="function")Et(t).map((i)=>!Mt.call(e,i)&&V(e,i,{get:()=>t[i],enumerable:!(n=xt(t,i))||n.enumerable}));return pt.set(t,e),e};var It=(t,e)=>{for(var n in e)V(t,n,{get:e[n],enumerable:!0,configurable:!0,set:(i)=>e[n]=()=>i})};var Oe={};It(Oe,{validateFieldCryptoConfig:()=>Pt,validateErrorRetryPolicy:()=>gt,toCiphertextEnvelopeString:()=>fe,setGlobalLogger:()=>he,selectActiveKidByRollout:()=>N,resolveFieldMode:()=>L,readRuntimeEnv:()=>Fe,parseErrorRetryPolicyFromJson:()=>$t,ok:()=>it,normalizeRetryAfterMs:()=>x,normalizeProviderError:()=>Gt,normalizePhoneForHash:()=>wt,normalizeMessageStatus:()=>Re,normalizeErrorRetryPolicy:()=>Kt,loggerMiddleware:()=>Ke,logger:()=>ge,isTerminalDeliveryStatus:()=>we,isPollableDeliveryStatus:()=>me,isKMsgTerminalStatus:()=>ue,isKMsgMessageType:()=>Te,isKMsgDeliveryStatus:()=>Se,isCryptoEnvelope:()=>pe,getRuntimeEnvSource:()=>bt,getRolloutKnownKids:()=>W,getPollableStatuses:()=>be,getLogger:()=>D,fail:()=>st,createVaultTransitKeyResolver:()=>ne,createStaticKeyResolver:()=>Q,createRollingKeyResolver:()=>Xt,createRefreshableKeyResolver:()=>v,createNoopFieldCryptoProvider:()=>oe,createLogger:()=>tt,createEnvKeyResolver:()=>ee,createDefaultMasker:()=>X,createAwsKmsKeyResolver:()=>zt,createAesGcmFieldCryptoProvider:()=>ye,assertFieldCryptoConfig:()=>ie,RetryHandler:()=>k,Result:()=>Ce,RateLimiter:()=>nt,QUEUED_MESSAGE_STATUS:()=>Ot,Logger:()=>$,LogLevel:()=>mt,KNOWN_MESSAGE_STATUSES:()=>ke,KMsgErrorCode:()=>O,KMsgError:()=>K,KMSG_TERMINAL_STATUSES:()=>Tt,KMSG_POLLABLE_STATUSES:()=>rt,KMSG_MESSAGE_TYPES:()=>Rt,KMSG_DELIVERY_STATUSES:()=>Dt,FieldCryptoError:()=>M,ErrorUtils:()=>R,CircuitBreaker:()=>et,BulkOperationHandler:()=>H});module.exports=vt(Oe);var O;((d)=>{d.INVALID_REQUEST="INVALID_REQUEST";d.AUTHENTICATION_FAILED="AUTHENTICATION_FAILED";d.INSUFFICIENT_BALANCE="INSUFFICIENT_BALANCE";d.TEMPLATE_NOT_FOUND="TEMPLATE_NOT_FOUND";d.RATE_LIMIT_EXCEEDED="RATE_LIMIT_EXCEEDED";d.NETWORK_ERROR="NETWORK_ERROR";d.NETWORK_TIMEOUT="NETWORK_TIMEOUT";d.NETWORK_SERVICE_UNAVAILABLE="NETWORK_SERVICE_UNAVAILABLE";d.PROVIDER_ERROR="PROVIDER_ERROR";d.MESSAGE_SEND_FAILED="MESSAGE_SEND_FAILED";d.CRYPTO_CONFIG_ERROR="CRYPTO_CONFIG_ERROR";d.CRYPTO_ENCRYPT_FAILED="CRYPTO_ENCRYPT_FAILED";d.CRYPTO_DECRYPT_FAILED="CRYPTO_DECRYPT_FAILED";d.CRYPTO_HASH_FAILED="CRYPTO_HASH_FAILED";d.CRYPTO_POLICY_VIOLATION="CRYPTO_POLICY_VIOLATION";d.UNKNOWN_ERROR="UNKNOWN_ERROR"})(O||={});var Nt={["INVALID_REQUEST"]:{ko:"잘못된 요청입니다",en:"Invalid request"},["AUTHENTICATION_FAILED"]:{ko:"인증에 실패했습니다",en:"Authentication failed"},["INSUFFICIENT_BALANCE"]:{ko:"잔액이 부족합니다",en:"Insufficient balance"},["TEMPLATE_NOT_FOUND"]:{ko:"템플릿을 찾을 수 없습니다",en:"Template not found"},["RATE_LIMIT_EXCEEDED"]:{ko:"요청 한도를 초과했습니다",en:"Rate limit exceeded"},["NETWORK_ERROR"]:{ko:"네트워크 오류가 발생했습니다",en:"Network error"},["NETWORK_TIMEOUT"]:{ko:"네트워크 요청 시간이 초과되었습니다",en:"Network timeout"},["NETWORK_SERVICE_UNAVAILABLE"]:{ko:"서비스를 일시적으로 사용할 수 없습니다",en:"Service temporarily unavailable"},["PROVIDER_ERROR"]:{ko:"제공자 오류가 발생했습니다",en:"Provider error"},["MESSAGE_SEND_FAILED"]:{ko:"메시지 전송에 실패했습니다",en:"Message send failed"},["CRYPTO_CONFIG_ERROR"]:{ko:"암호화 설정 오류가 발생했습니다",en:"Crypto configuration error"},["CRYPTO_ENCRYPT_FAILED"]:{ko:"암호화에 실패했습니다",en:"Encryption failed"},["CRYPTO_DECRYPT_FAILED"]:{ko:"복호화에 실패했습니다",en:"Decryption failed"},["CRYPTO_HASH_FAILED"]:{ko:"해시 생성에 실패했습니다",en:"Hash generation failed"},["CRYPTO_POLICY_VIOLATION"]:{ko:"암호화 정책 위반이 발생했습니다",en:"Crypto policy violation"},["UNKNOWN_ERROR"]:{ko:"알 수 없는 오류가 발생했습니다",en:"Unknown error"}},_t=new Set(Object.values(O)),yt=new Set(["NETWORK_ERROR","RATE_LIMIT_EXCEEDED","NETWORK_TIMEOUT","NETWORK_SERVICE_UNAVAILABLE","PROVIDER_ERROR","UNKNOWN_ERROR"]),ot=new Set(["INVALID_REQUEST","AUTHENTICATION_FAILED","INSUFFICIENT_BALANCE","TEMPLATE_NOT_FOUND","MESSAGE_SEND_FAILED","CRYPTO_CONFIG_ERROR","CRYPTO_ENCRYPT_FAILED","CRYPTO_DECRYPT_FAILED","CRYPTO_HASH_FAILED","CRYPTO_POLICY_VIOLATION"]),P=(t)=>{if(typeof t!=="number"||Number.isNaN(t)||!Number.isFinite(t))return;return Math.trunc(t)},x=(t)=>{let e=P(t);if(e===void 0||e<0)return;return e},G=(t)=>{if(typeof t!=="string")return;return t.toLowerCase().trim()},Bt=(t)=>{if(typeof t!=="string")return;let e=t.trim();return e.length>0?e:void 0},S=(t)=>{return typeof t==="object"&&t!==null&&!Array.isArray(t)},m=(t,e)=>{for(let n of e)if(n in t)return t[n];return},Ut=(t)=>{return t.length>0?t:"$"},dt=(t)=>{return t==="compat"?"compat":"safe"},ft=(t)=>{if(t>=500)return"retryable";if(t===408||t===425||t===429)return"retryable";return"non_retryable"},ct=(t)=>{let e=t.toLowerCase();if(e.includes("timeout")||e.includes("temporar")||e.includes("network")||e.includes("retry"))return"retryable";return};class K extends Error{code;details;providerErrorCode;providerErrorText;httpStatus;requestId;retryAfterMs;attempt;causeChain;constructor(t,e,n,i={}){super(e);if(this.name="KMsgError",this.code=t,this.details=n,this.providerErrorCode=i.providerErrorCode,this.providerErrorText=i.providerErrorText,this.httpStatus=P(i.httpStatus),this.requestId=typeof i.requestId==="string"?i.requestId:void 0,this.retryAfterMs=P(i.retryAfterMs),this.attempt=P(i.attempt),Array.isArray(i.causeChain))this.causeChain=i.causeChain;else if(i.causeChain!==void 0)this.causeChain=[i.causeChain];if(Error.captureStackTrace)Error.captureStackTrace(this,K)}getLocalizedMessage(t="ko"){let e=Nt[this.code];if(e?.[t])return e[t];return this.message}toJSON(){return{name:this.name,code:this.code,message:this.message,details:this.details,providerErrorCode:this.providerErrorCode,providerErrorText:this.providerErrorText,httpStatus:this.httpStatus,requestId:this.requestId,retryAfterMs:this.retryAfterMs,attempt:this.attempt,causeChain:this.causeChain}}}var b=(t,e)=>{let n=P(t);if(n!==void 0)return n;if(e==="compat"&&typeof t==="string"){let i=Number(t.trim());if(Number.isFinite(i))return Math.trunc(i)}return},J=(t,e)=>{let n=Bt(t);if(n)return n;if(e==="compat"&&(typeof t==="number"||typeof t==="boolean"))return String(t);return},ht=(t)=>{if(typeof t!=="string")return;let e=t.trim().toUpperCase();if(!_t.has(e))return;return e},T=(t,e)=>{t.push({...e,path:Ut(e.path)})},at=(t,e,n,i)=>{if(t===void 0)return[];let r=(()=>{if(Array.isArray(t))return t;if(n==="compat"&&typeof t==="string")return t.split(",").map((o)=>o.trim()).filter((o)=>o.length>0);return T(i,{code:"invalid_type",message:"expected array of KMsgErrorCode values",path:e}),[]})(),s=[],p=new Set;for(let o=0;o<r.length;o+=1){let y=r[o],f=ht(typeof y==="string"?y:n==="compat"?String(y):y);if(!f){T(i,{code:"unknown_code",message:`unknown retry policy code: ${String(y)}`,path:`${e}[${o}]`});continue}if(p.has(f)){T(i,{code:"duplicate_code",message:`duplicate retry policy code: ${f}`,path:`${e}[${o}]`});continue}p.add(f),s.push(f)}return s},qt=(t,e,n)=>{if(t===void 0)return;if(typeof t==="string"){let i=t.trim().toLowerCase();if(i==="retryable")return"retryable";if(i==="non_retryable"||i==="non-retryable")return"non_retryable"}if(e==="compat"&&typeof t==="boolean")return t?"retryable":"non_retryable";T(n,{code:"invalid_fallback",message:`invalid fallback value: ${String(t)}`,path:"fallback"});return};function gt(t,e={}){let n=dt(e.mode),i=[];if(!S(t))return T(i,{code:"invalid_root",message:"retry policy must be an object",path:"$"}),{policy:null,issues:i};let r=new Set(["retryableCodes","nonRetryableCodes","fallback"]);for(let l of Object.keys(t)){if(r.has(l))continue;T(i,{code:"unknown_field",message:`unknown retry policy field: ${l}`,path:l})}let s=at(t.retryableCodes,"retryableCodes",n,i),p=at(t.nonRetryableCodes,"nonRetryableCodes",n,i),o=qt(t.fallback,n,i),y=new Set(s),f=new Set(p);for(let l of y){if(!f.has(l))continue;y.delete(l),T(i,{code:"conflicting_code",message:`code '${l}' is both retryable and nonRetryable; nonRetryable wins`,path:"retryableCodes"})}let a={...y.size>0?{retryableCodes:Array.from(y)}:{},...f.size>0?{nonRetryableCodes:Array.from(f)}:{},...o?{fallback:o}:{}};return{policy:a.retryableCodes!==void 0||a.nonRetryableCodes!==void 0||a.fallback!==void 0?a:null,issues:i}}function Kt(t,e={}){return gt(t,e).policy}function $t(t,e={}){if(typeof t!=="string"||t.trim().length===0)return null;try{let n=JSON.parse(t);return Kt(n,e)}catch{return null}}var lt=(t,e)=>{let n=t.response;if(!S(n))return;return b(m(n,["status","statusCode","httpStatus"]),e)},Ht=(t,e)=>{if(t instanceof K&&Array.isArray(t.causeChain))return t.causeChain.slice();if(S(t)){let s=t.causeChain;if(Array.isArray(s))return s.slice();let p=t.details;if(e==="compat"&&S(p)){let o=p.causeChain;if(Array.isArray(o))return o.slice();if(o!==void 0)return[o]}}let n=[],i=new Set,r=t;for(let s=0;s<8;s+=1){if(!S(r))break;let p=r.cause;if(p===void 0||i.has(p))break;i.add(p),n.push(p),r=p}return n.length>0?n:void 0},Vt=(t)=>{if(t instanceof Error&&typeof t.message==="string")return t.message;if(S(t)&&typeof t.message==="string")return t.message;return typeof t==="string"?t:"Unknown error"};function Gt(t,e={}){let n=dt(e.mode),r=e.defaultCode??"UNKNOWN_ERROR",s={code:"fallback",classification:e.policy?"policy":"fallback"},p,o,y,f,a,h,l,A=(c)=>{if(c.providerErrorCode!==void 0)p=c.providerErrorCode,s.providerErrorCode="metadata";if(c.providerErrorText!==void 0)o=c.providerErrorText,s.providerErrorText="metadata";if(c.httpStatus!==void 0)y=c.httpStatus,s.httpStatus="metadata";if(c.requestId!==void 0)f=c.requestId,s.requestId="metadata";if(c.retryAfterMs!==void 0)a=x(c.retryAfterMs),s.retryAfterMs="metadata";if(c.attempt!==void 0)h=b(c.attempt,n),s.attempt="metadata";if(Array.isArray(c.causeChain))l=c.causeChain.slice(),s.causeChain="metadata"},C=(c,F)=>{if(p===void 0){let g=J(m(c,["providerErrorCode","errorCode","resultCode"]),n);if(g!==void 0)p=g,s.providerErrorCode=F}if(o===void 0){let g=J(m(c,["providerErrorText","errorMessage","msg","message"]),n);if(g!==void 0)o=g,s.providerErrorText=F}if(y===void 0){let g=b(m(c,["httpStatus","statusCode","status"]),n)??lt(c,n);if(g!==void 0)y=g,s.httpStatus=F==="details"?"details":"http"}if(f===void 0){let g=J(m(c,["requestId","request_id","reqId","traceId"]),n);if(g!==void 0)f=g,s.requestId=F}if(a===void 0){let g=x(b(m(c,["retryAfterMs","retry_after_ms","retryAfter"]),n));if(g!==void 0)a=g,s.retryAfterMs=F}if(h===void 0){let g=b(c.attempt,n);if(g!==void 0&&g>0)h=g,s.attempt=F}};if(t instanceof K){if(r=t.code,s.code="input",A(t),n==="compat"&&S(t.details))C(t.details,"details")}else if(S(t)){let c=ht(m(t,["code","errorCode","resultCode"]));if(c!==void 0)r=c,s.code="input";else if(y===void 0){let F=b(m(t,["httpStatus","statusCode","status"]),n)??lt(t,n);if(F!==void 0&&F>=500)r="PROVIDER_ERROR",s.code="http"}if(C(t,"input"),n==="compat"&&S(t.details))C(t.details,"details")}if(l===void 0){let c=Ht(t,n);if(c!==void 0)l=c,s.causeChain="input"}if(e.attempt!==void 0&&b(e.attempt,n)!==void 0){let c=b(e.attempt,n);if(c!==void 0&&c>0)h=c,s.attempt="input"}let w=new K(r,Vt(t),void 0,{providerErrorCode:p,providerErrorText:o,httpStatus:y,requestId:f,retryAfterMs:a,attempt:h,causeChain:l}),d=R.classifyForRetry(w,e.policy);return{code:r,classification:d,...p!==void 0?{providerErrorCode:p}:{},...o!==void 0?{providerErrorText:o}:{},...y!==void 0?{httpStatus:y}:{},...f!==void 0?{requestId:f}:{},...a!==void 0?{retryAfterMs:a}:{},...h!==void 0?{attempt:h}:{},...l!==void 0?{causeChain:l}:{},sources:s}}var R={isRetryable(t,e={}){return R.classifyForRetry(t,e)==="retryable"},classifyForRetry(t,e={}){if(t instanceof K){if(new Set(e.retryableCodes??Array.from(yt)).has(t.code))return"retryable";if(new Set(e.nonRetryableCodes??Array.from(ot)).has(t.code))return"non_retryable";if(t.httpStatus!==void 0)return ft(t.httpStatus);let y=ct(t.message);if(y)return y;if(e.classifyByMessage&&t.message){let f=e.classifyByMessage(t.message);if(f)return f}if(e.fallback)return e.fallback;return"non_retryable"}let n=t&&typeof t==="object"?t:void 0,i=G(n?.status)??G(n?.statusCode)??G(n?.code),r=P(n?.status)??P(n?.statusCode)??P(n?.httpStatus);if(typeof i==="string"&&i.startsWith("5"))return"retryable";if(r!==void 0){if(e.classifyByStatusCode)return e.classifyByStatusCode(r);return ft(r)}let s=typeof n?.message==="string"?ct(n.message):void 0;if(s)return s;if(e.classifyByMessage&&typeof n?.message==="string"){let p=e.classifyByMessage(n.message);if(p)return p}return e.fallback??"non_retryable"},resolveRetryAfterMs(t,e){if(e?.retryAfterMs){let n=e.retryAfterMs(t),i=x(n);if(i!==void 0)return i}if(t.retryAfterMs!==void 0)return x(t.retryAfterMs);if(t.code==="RATE_LIMIT_EXCEEDED"&&t.retryAfterMs===void 0)return;return},isUnknownStatus:(t)=>{if(t===void 0||Number.isNaN(t)||!Number.isFinite(t))return!1;return t<500},toRetryMetadata(t){return{providerErrorCode:t.providerErrorCode,providerErrorText:t.providerErrorText,httpStatus:t.httpStatus,requestId:t.requestId,retryAfterMs:t.retryAfterMs,attempt:t.attempt,causeChain:t.causeChain}},withAttempt(t,e){return new K(t.code,t.message,t.details,{...R.toRetryMetadata(t),attempt:P(e)})},DEFAULT_RETRYABLE_ERROR_CODES:yt,DEFAULT_NON_RETRYABLE_ERROR_CODES:ot};function Jt(t){switch(t){case"config":return"CRYPTO_CONFIG_ERROR";case"encrypt":return"CRYPTO_ENCRYPT_FAILED";case"decrypt":return"CRYPTO_DECRYPT_FAILED";case"hash":return"CRYPTO_HASH_FAILED";case"policy":return"CRYPTO_POLICY_VIOLATION"}}class M extends K{kind;fieldPath;failMode;openFallback;constructor(t,e,n,i={}){super(Jt(t),e,n,i);this.name="FieldCryptoError",this.kind=t,this.fieldPath=typeof i.fieldPath==="string"?i.fieldPath:void 0,this.failMode=i.failMode,this.openFallback=i.openFallback}toJSON(){return{...super.toJSON(),kind:this.kind,fieldPath:this.fieldPath,failMode:this.failMode,openFallback:this.openFallback}}}var Wt=["tenantId","providerId","messageId"];function I(t){if(typeof t!=="string")return;let e=t.trim();return e.length>0?e:void 0}function Yt(t){if(typeof t!=="number"||!Number.isFinite(t))return;if(t<=0||t>100)return;return t}function Ct(t){let e=[];for(let n of t){let i=I(n.kid),r=Yt(n.percentage);if(!i||r===void 0)continue;e.push({kid:i,percentage:r})}return e}function jt(t,e,n){let i=e.map((r)=>{let s=t[r];return typeof s==="string"?s:""}).join("|");return`${n}::${i}`}function Qt(t){let e=2166136261;for(let n=0;n<t.length;n+=1)e^=t.charCodeAt(n),e=e*16777619>>>0;return e>>>0}function Zt(t,e){let n=0;for(let i of t)if(n+=i.percentage,e<n)return i.kid;return}function N(t,e,n){let i=Ct(e.buckets),r=I(e.defaultKid)??I(n);if(i.length===0)return r;let s=I(e.seed)??"kmsg-rollout-v1",p=e.stickyFields??Wt,o=jt(t,p,s),y=Qt(o)%100;return Zt(i,y)??r}function W(t){return Ct(t.buckets).map((e)=>e.kid)}function E(t){if(typeof t!=="string")return;let e=t.trim();return e.length>0?e:void 0}function Y(t){if(!Array.isArray(t))return[];return t.map((e)=>E(e)).filter((e)=>Boolean(e))}function j(t){let e=[],n=new Set;for(let i of t){let r=E(i);if(!r||n.has(r))continue;n.add(r),e.push(r)}return e}function Lt(t){return E(t.providerId)??"default"}function Q(t){let e=E(t.activeKid)??"default",n=j([e,...Y(t.decryptKids)]);return{async resolveEncryptKey(){return{kid:e}},async resolveDecryptKeys(){return n}}}function v(t){let e=typeof t.cacheTtlMs==="number"&&t.cacheTtlMs>=0?Math.trunc(t.cacheTtlMs):30000,n=E(t.fallback?.activeKid),i=Y(t.fallback?.decryptKids),r;async function s(p){let o=Date.now();if(r&&o<r.expiresAt)return r.value;let y=await t.provider.loadKeySet(p),f=E(y.activeKid)??n??Lt(p),a=j([f,...Y(y.decryptKids),...i]),h={activeKid:f,decryptKids:a,refreshedAt:Date.now()};return r={value:h,expiresAt:Date.now()+e},h}return{async resolveEncryptKey(p){return{kid:(await s(p)).activeKid}},async resolveDecryptKeys(p){let o=await s(p);return o.decryptKids??[o.activeKid]}}}function Xt(t,e){return{async resolveEncryptKey(n){let i=await t.resolveEncryptKey(n);return{kid:N(n,e,i.kid)??i.kid}},async resolveDecryptKeys(n){let i=await t.resolveEncryptKey(n),r=t.resolveDecryptKeys?await t.resolveDecryptKeys(n):[i.kid],s=N(n,e,i.kid),p=W(e);return j([...s?[s]:[],i.kid,...r??[],...p])}}}function zt(t){return v({provider:{async loadKeySet(n){return t.client.getKeyState({...n,...t.keyAlias?{keyAlias:t.keyAlias}:{},...t.region?{region:t.region}:{}})}},cacheTtlMs:t.cacheTtlMs,fallback:{activeKid:t.fallbackActiveKid,decryptKids:t.fallbackDecryptKids}})}function _(t){if(typeof t!=="string")return;let e=t.trim();return e.length>0?e:void 0}function Ft(t,e){return _(t[e])}function te(t,e){if(!t)return[];return t.split(e).map((n)=>_(n)).filter((n)=>Boolean(n))}function ee(t={}){let e=t.env??(typeof process<"u"?process.env:{}),n=_(t.delimiter)??",",i=t.activeKidEnv??"KMSG_ACTIVE_KID",r=t.decryptKidsEnv??"KMSG_DECRYPT_KIDS",s=Ft(e,i)??_(t.fallbackActiveKid)??"default",p=[s,...te(Ft(e,r),n),...t.fallbackDecryptKids??[]];return Q({activeKid:s,decryptKids:p})}function ne(t){return v({provider:{async loadKeySet(n){return t.client.getKeyState({...n,...t.mountPath?{mountPath:t.mountPath}:{},...t.keyName?{keyName:t.keyName}:{},...t.namespace?{namespace:t.namespace}:{}})}},cacheTtlMs:t.cacheTtlMs,fallback:{activeKid:t.fallbackActiveKid,decryptKids:t.fallbackDecryptKids}})}function Z(t){return typeof t==="function"}function At(t){if(typeof t!=="string")return;let e=t.trim();return e.length>0?e:void 0}function L(t,e,n){let i=t.fields[e];if(i)return i;if(e.startsWith("metadata.")){let r=t.fields["metadata.*"];if(r)return r}return n}function Pt(t,e={}){let n=[];if(!t||typeof t!=="object")return{valid:!1,issues:[{message:"fieldCrypto config must be an object",rule:"fieldCrypto.config.object",hint:"Provide a valid FieldCryptoConfig object"}]};if(!t.provider||typeof t.provider!=="object")n.push({message:"fieldCrypto provider is required",rule:"fieldCrypto.provider.required",path:"provider",hint:"Set provider with encrypt/decrypt/hash methods"});else{if(!Z(t.provider.encrypt))n.push({message:"provider.encrypt must be a function",rule:"fieldCrypto.provider.encrypt.required",path:"provider.encrypt"});if(!Z(t.provider.decrypt))n.push({message:"provider.decrypt must be a function",rule:"fieldCrypto.provider.decrypt.required",path:"provider.decrypt"});if(!Z(t.provider.hash))n.push({message:"provider.hash must be a function",rule:"fieldCrypto.provider.hash.required",path:"provider.hash"})}if(!t.fields||typeof t.fields!=="object")n.push({message:"fieldCrypto.fields must be an object",rule:"fieldCrypto.fields.object",path:"fields",hint:"Define policies such as to, from, metadata.phoneNumber"});else{let s=Object.entries(t.fields);if(s.length===0)n.push({message:"fieldCrypto.fields must not be empty",rule:"fieldCrypto.fields.non_empty",path:"fields",hint:"Add at least one field mode mapping"});for(let[p,o]of s){if(!At(p))n.push({message:"field path must be a non-empty string",rule:"fieldCrypto.fields.path.non_empty",path:"fields"});if(o!=="plain"&&o!=="encrypt"&&o!=="encrypt+hash"&&o!=="mask")n.push({message:`unsupported field mode: ${String(o)}`,rule:"fieldCrypto.fields.mode.supported",path:`fields.${p}`})}}let i=t.failMode??"closed",r=t.openFallback??"masked";if(i==="open"&&r==="plaintext"&&t.unsafeAllowPlaintextStorage!==!0)n.push({message:"openFallback=plaintext requires unsafeAllowPlaintextStorage=true",rule:"fieldCrypto.fail_open.plaintext_guard",path:"openFallback",hint:"Use masked/null fallback, or explicitly enable unsafe plaintext"});if(Array.isArray(t.aadFields)){if(t.aadFields.length===0)n.push({message:"aadFields must not be empty when provided",rule:"fieldCrypto.aad_fields.non_empty",path:"aadFields"});for(let s=0;s<t.aadFields.length;s+=1){let p=t.aadFields[s];if(!At(p))n.push({message:"aadFields cannot include empty key",rule:"fieldCrypto.aad_fields.no_empty_key",path:`aadFields[${s}]`})}}if(e.secureMode&&!e.compatPlainColumns){let s=L(t,"to","encrypt+hash"),p=L(t,"from","encrypt+hash");if(s==="plain")n.push({message:"secure mode requires non-plain policy for `to` when compatPlainColumns=false",rule:"fieldCrypto.secure_mode.to_non_plain",path:"fields.to",hint:"Use encrypt+hash for lookup fields"});if(p==="plain")n.push({message:"secure mode requires non-plain policy for `from` when compatPlainColumns=false",rule:"fieldCrypto.secure_mode.from_non_plain",path:"fields.from",hint:"Use encrypt+hash for lookup fields"})}return{valid:n.length===0,issues:n}}function ie(t,e={}){let n=Pt(t,e);if(n.valid)return;let i=n.issues[0];if(!i)throw new M("config","fieldCrypto config validation failed",{rule:"fieldCrypto.config.invalid",issues:n.issues});throw new M("config",i.message,{rule:i.rule,path:i.path,hint:i.hint,issues:n.issues},{fieldPath:i.path})}function B(t){let e=t instanceof Uint8Array?t:new Uint8Array(t),n=typeof globalThis<"u"?globalThis.Buffer:void 0;return(n?n.from(e).toString("base64"):btoa(String.fromCharCode(...e))).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function U(t){let e=t.replace(/-/g,"+").replace(/_/g,"/"),n=e.length%4===0?e:`${e}${"=".repeat(4-e.length%4)}`,i=typeof globalThis<"u"?globalThis.Buffer:void 0;if(i)return new Uint8Array(i.from(n,"base64"));let r=atob(n),s=new Uint8Array(r.length);for(let p=0;p<r.length;p+=1)s[p]=r.charCodeAt(p);return s}function St(t,e){if(t instanceof Uint8Array)return t;if(t instanceof ArrayBuffer)return new Uint8Array(t);if(e==="base64url")return U(t);return new TextEncoder().encode(t)}function se(t){let e=t instanceof Uint8Array?t:new Uint8Array(t);return Array.from(e).map((n)=>n.toString(16).padStart(2,"0")).join("")}function u(t){let e=new Uint8Array(t.byteLength);return e.set(t),e.buffer}function ut(t){let e=JSON.parse(t);if(!e||typeof e!=="object"||typeof e.v!=="number"||typeof e.alg!=="string"||typeof e.kid!=="string"||typeof e.iv!=="string"||typeof e.tag!=="string"||typeof e.ct!=="string")throw Error("Invalid ciphertext envelope");return e}function re(t){if(typeof t==="string")return t;return JSON.stringify(t)}function pe(t){if(!t||typeof t!=="object")return!1;let e=t;return typeof e.v==="number"&&typeof e.alg==="string"&&typeof e.kid==="string"&&typeof e.iv==="string"&&typeof e.tag==="string"&&typeof e.ct==="string"}function wt(t){let e=String(t??"").trim();if(e.length===0)return"";let n=e.startsWith("+"),i=e.replace(/\D/g,"");return n?`+${i}`:i}function X(t=3,e=2){return(n)=>{let i=String(n??"");if(i.length<=t+e)return"*".repeat(Math.max(0,i.length));let r=i.slice(0,t),s=i.slice(-e);return`${r}${"*".repeat(i.length-t-e)}${s}`}}function ye(t){let e=t.algorithm??"A256GCM",n=t.keyEncoding??"base64url",i=t.hashKeyEncoding??n,r=new Map,s=new Map,p=(y)=>{let f=r.get(y);if(f)return f;let a=t.keys[y];if(!a)throw Error(`Unknown encryption key id: ${y}`);let h=St(a,n),l=crypto.subtle.importKey("raw",u(h),"AES-GCM",!1,["encrypt","decrypt"]);return r.set(y,l),l},o=(y)=>{let f=s.get(y);if(f)return f;let a=t.hashKeys?.[y]??t.keys[y];if(!a)throw Error(`Unknown hash key id: ${y}`);let h=St(a,i),l=crypto.subtle.importKey("raw",u(h),{name:"HMAC",hash:"SHA-256"},!1,["sign"]);return s.set(y,l),l};return{async encrypt(y){let f=y.kid??t.activeKid,a=await p(f),h=crypto.getRandomValues(new Uint8Array(12)),l=new TextEncoder().encode(JSON.stringify(y.aad??{})),A=new TextEncoder().encode(y.value),C=await crypto.subtle.encrypt({name:"AES-GCM",iv:u(h),additionalData:u(l),tagLength:128},a,u(A)),w=new Uint8Array(C),d=w.slice(w.length-16),c=w.slice(0,w.length-16);return{ciphertext:{v:1,alg:e,kid:f,iv:B(h),tag:B(d),ct:B(c)},kid:f}},async decrypt(y){let f=ut(y.ciphertext),a=y.candidateKids&&y.candidateKids.length>0?y.candidateKids:[f.kid],h=U(f.iv),l=U(f.tag),A=U(f.ct),C=new Uint8Array(A.length+l.length);C.set(A,0),C.set(l,A.length);let w=new TextEncoder().encode(JSON.stringify(y.aad??{})),d;for(let c of a)try{let F=await p(c),g=await crypto.subtle.decrypt({name:"AES-GCM",iv:u(h),additionalData:u(w),tagLength:128},F,u(C));return new TextDecoder().decode(new Uint8Array(g))}catch(F){d=F}throw Error(`Failed to decrypt ciphertext: ${d instanceof Error?d.message:String(d??"unknown")}`)},async hash(y){let f=y.kid??t.activeKid,a=await o(f),h=await crypto.subtle.sign("HMAC",a,u(new TextEncoder().encode(y.value)));return se(h)},mask(y){return X()(y.value)}}}function oe(){return{encrypt(t){return{ciphertext:JSON.stringify({v:1,alg:"NOOP",kid:"noop",iv:"",tag:"",ct:t.value})}},decrypt(t){try{return ut(t.ciphertext).ct}catch{return t.ciphertext}},hash(t){let e=wt(t.value);return B(new TextEncoder().encode(e))},mask(t){return X()(t.value)}}}function fe(t){return re(t)}var mt;((r)=>{r.DEBUG="DEBUG";r.INFO="INFO";r.WARN="WARN";r.ERROR="ERROR"})(mt||={});var ce=["to","from","phone","phoneNumber","recipient","sender","secret","apiKey","apiSecret","authorization","auth","token","password","payload","message","content","text"];function ae(t){let e=t.toLowerCase();return ce.some((n)=>e.includes(n.toLowerCase()))}function le(t){let e=t.trim();if(e.length<=4)return"***";if(e.includes("@")){let[r,s]=e.split("@");return`${r.slice(0,2)}${"*".repeat(Math.max(1,r.length-2))}@${s}`}let n=e.slice(0,3),i=e.slice(-2);return`${n}${"*".repeat(Math.max(1,e.length-5))}${i}`}function z(t,e){if(e===void 0||e===null)return e;if(ae(t)){if(typeof e==="string")return le(e);if(typeof e==="number"||typeof e==="boolean")return"***";if(Array.isArray(e))return"[REDACTED]";if(typeof e==="object")return"[REDACTED]"}if(Array.isArray(e))return e.map((n)=>z(t,n));if(typeof e==="object"){let n={};for(let[i,r]of Object.entries(e))n[i]=z(i,r);return n}return e}function de(t){let e={};for(let[n,i]of Object.entries(t))e[n]=z(n,i);return e}class ${config;context;constructor(t={},e={}){this.context=t,this.config={level:"INFO",enableConsole:!0,enableJson:!1,enableColors:!0,...e}}shouldLog(t){let e=["DEBUG","INFO","WARN","ERROR"];return e.indexOf(t)>=e.indexOf(this.config.level)}formatMessage(t){let e=de(t.context);if(this.config.enableJson)return JSON.stringify({level:t.level,message:t.message,timestamp:t.timestamp.toISOString(),context:e,...t.error&&{error:{name:t.error.name,message:t.error.message,stack:t.error.stack}},...t.duration&&{duration:t.duration}});let n=t.timestamp.toISOString(),i=this.config.enableColors?this.colorizeLevel(t.level):t.level,r=Object.keys(e).length>0?` [${Object.entries(e).map(([p,o])=>`${p}=${o}`).join(", ")}]`:"",s=`${n} ${i}${r}: ${t.message}`;if(t.duration!==void 0)s+=` (${t.duration}ms)`;if(t.error)s+=`
|
|
2
|
-
${t.error.stack}`;return s}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
|
|
1
|
+
var{defineProperty:V,getOwnPropertyNames:Et,getOwnPropertyDescriptor:xt}=Object,Mt=Object.prototype.hasOwnProperty;var pt=new WeakMap,vt=(t)=>{var n=pt.get(t),e;if(n)return n;if(n=V({},"__esModule",{value:!0}),t&&typeof t==="object"||typeof t==="function")Et(t).map((i)=>!Mt.call(n,i)&&V(n,i,{get:()=>t[i],enumerable:!(e=xt(t,i))||e.enumerable}));return pt.set(t,n),n};var _t=(t,n)=>{for(var e in n)V(t,e,{get:n[e],enumerable:!0,configurable:!0,set:(i)=>n[e]=()=>i})};var En={};_t(En,{validateFieldCryptoConfig:()=>Pt,validateErrorRetryPolicy:()=>gt,toCiphertextEnvelopeString:()=>on,setGlobalLogger:()=>gn,selectActiveKidByRollout:()=>N,resolveFieldMode:()=>L,readRuntimeEnv:()=>An,parseErrorRetryPolicyFromJson:()=>$t,ok:()=>it,normalizeRetryAfterMs:()=>x,normalizeProviderError:()=>Gt,normalizePhoneForHash:()=>bt,normalizeMessageStatus:()=>Rn,normalizeErrorRetryPolicy:()=>Kt,loggerMiddleware:()=>Cn,logger:()=>Kn,isTerminalDeliveryStatus:()=>un,isPollableDeliveryStatus:()=>kn,isKMsgTerminalStatus:()=>bn,isKMsgMessageType:()=>Tn,isKMsgDeliveryStatus:()=>Sn,isCryptoEnvelope:()=>yn,getRuntimeEnvSource:()=>kt,getRolloutKnownKids:()=>W,getPollableStatuses:()=>Dn,getLogger:()=>D,fail:()=>st,createVaultTransitKeyResolver:()=>en,createStaticKeyResolver:()=>Q,createRollingKeyResolver:()=>Xt,createRefreshableKeyResolver:()=>v,createNoopFieldCryptoProvider:()=>cn,createLogger:()=>tt,createEnvKeyResolver:()=>nn,createDefaultMasker:()=>X,createAwsKmsKeyResolver:()=>zt,createAesGcmFieldCryptoProvider:()=>fn,assertFieldCryptoConfig:()=>sn,RetryHandler:()=>T,Result:()=>Fn,RateLimiter:()=>et,QUEUED_MESSAGE_STATUS:()=>Rt,Logger:()=>$,LogLevel:()=>ut,KNOWN_MESSAGE_STATUSES:()=>On,KMsgErrorCode:()=>R,KMsgError:()=>K,KMSG_TERMINAL_STATUSES:()=>mt,KMSG_POLLABLE_STATUSES:()=>rt,KMSG_MESSAGE_TYPES:()=>Ot,KMSG_DELIVERY_STATUSES:()=>Dt,FieldCryptoError:()=>M,ErrorUtils:()=>O,CircuitBreaker:()=>nt,BulkOperationHandler:()=>H});module.exports=vt(En);var R;((l)=>{l.INVALID_REQUEST="INVALID_REQUEST";l.AUTHENTICATION_FAILED="AUTHENTICATION_FAILED";l.INSUFFICIENT_BALANCE="INSUFFICIENT_BALANCE";l.TEMPLATE_NOT_FOUND="TEMPLATE_NOT_FOUND";l.RATE_LIMIT_EXCEEDED="RATE_LIMIT_EXCEEDED";l.NETWORK_ERROR="NETWORK_ERROR";l.NETWORK_TIMEOUT="NETWORK_TIMEOUT";l.NETWORK_SERVICE_UNAVAILABLE="NETWORK_SERVICE_UNAVAILABLE";l.PROVIDER_ERROR="PROVIDER_ERROR";l.MESSAGE_SEND_FAILED="MESSAGE_SEND_FAILED";l.CRYPTO_CONFIG_ERROR="CRYPTO_CONFIG_ERROR";l.CRYPTO_ENCRYPT_FAILED="CRYPTO_ENCRYPT_FAILED";l.CRYPTO_DECRYPT_FAILED="CRYPTO_DECRYPT_FAILED";l.CRYPTO_HASH_FAILED="CRYPTO_HASH_FAILED";l.CRYPTO_POLICY_VIOLATION="CRYPTO_POLICY_VIOLATION";l.UNKNOWN_ERROR="UNKNOWN_ERROR"})(R||={});var Nt={["INVALID_REQUEST"]:{ko:"잘못된 요청입니다",en:"Invalid request"},["AUTHENTICATION_FAILED"]:{ko:"인증에 실패했습니다",en:"Authentication failed"},["INSUFFICIENT_BALANCE"]:{ko:"잔액이 부족합니다",en:"Insufficient balance"},["TEMPLATE_NOT_FOUND"]:{ko:"템플릿을 찾을 수 없습니다",en:"Template not found"},["RATE_LIMIT_EXCEEDED"]:{ko:"요청 한도를 초과했습니다",en:"Rate limit exceeded"},["NETWORK_ERROR"]:{ko:"네트워크 오류가 발생했습니다",en:"Network error"},["NETWORK_TIMEOUT"]:{ko:"네트워크 요청 시간이 초과되었습니다",en:"Network timeout"},["NETWORK_SERVICE_UNAVAILABLE"]:{ko:"서비스를 일시적으로 사용할 수 없습니다",en:"Service temporarily unavailable"},["PROVIDER_ERROR"]:{ko:"제공자 오류가 발생했습니다",en:"Provider error"},["MESSAGE_SEND_FAILED"]:{ko:"메시지 전송에 실패했습니다",en:"Message send failed"},["CRYPTO_CONFIG_ERROR"]:{ko:"암호화 설정 오류가 발생했습니다",en:"Crypto configuration error"},["CRYPTO_ENCRYPT_FAILED"]:{ko:"암호화에 실패했습니다",en:"Encryption failed"},["CRYPTO_DECRYPT_FAILED"]:{ko:"복호화에 실패했습니다",en:"Decryption failed"},["CRYPTO_HASH_FAILED"]:{ko:"해시 생성에 실패했습니다",en:"Hash generation failed"},["CRYPTO_POLICY_VIOLATION"]:{ko:"암호화 정책 위반이 발생했습니다",en:"Crypto policy violation"},["UNKNOWN_ERROR"]:{ko:"알 수 없는 오류가 발생했습니다",en:"Unknown error"}},It=new Set(Object.values(R)),yt=new Set(["NETWORK_ERROR","RATE_LIMIT_EXCEEDED","NETWORK_TIMEOUT","NETWORK_SERVICE_UNAVAILABLE","PROVIDER_ERROR","UNKNOWN_ERROR"]),ft=new Set(["INVALID_REQUEST","AUTHENTICATION_FAILED","INSUFFICIENT_BALANCE","TEMPLATE_NOT_FOUND","MESSAGE_SEND_FAILED","CRYPTO_CONFIG_ERROR","CRYPTO_ENCRYPT_FAILED","CRYPTO_DECRYPT_FAILED","CRYPTO_HASH_FAILED","CRYPTO_POLICY_VIOLATION"]),P=(t)=>{if(typeof t!=="number"||Number.isNaN(t)||!Number.isFinite(t))return;return Math.trunc(t)},x=(t)=>{let n=P(t);if(n===void 0||n<0)return;return n},G=(t)=>{if(typeof t!=="string")return;return t.toLowerCase().trim()},Ut=(t)=>{if(typeof t!=="string")return;let n=t.trim();return n.length>0?n:void 0},w=(t)=>{return typeof t==="object"&&t!==null&&!Array.isArray(t)},u=(t,n)=>{for(let e of n)if(e in t)return t[e];return},Bt=(t)=>{return t.length>0?t:"$"},lt=(t)=>{return t==="compat"?"compat":"safe"},ct=(t)=>{if(t>=500)return"retryable";if(t===408||t===425||t===429)return"retryable";return"non_retryable"},ot=(t)=>{let n=t.toLowerCase();if(n.includes("timeout")||n.includes("temporar")||n.includes("network")||n.includes("retry"))return"retryable";return};class K extends Error{code;details;providerErrorCode;providerErrorText;httpStatus;requestId;retryAfterMs;attempt;causeChain;constructor(t,n,e,i={}){super(n);if(this.name="KMsgError",this.code=t,this.details=e,this.providerErrorCode=i.providerErrorCode,this.providerErrorText=i.providerErrorText,this.httpStatus=P(i.httpStatus),this.requestId=typeof i.requestId==="string"?i.requestId:void 0,this.retryAfterMs=P(i.retryAfterMs),this.attempt=P(i.attempt),Array.isArray(i.causeChain))this.causeChain=i.causeChain;else if(i.causeChain!==void 0)this.causeChain=[i.causeChain];if(Error.captureStackTrace)Error.captureStackTrace(this,K)}getLocalizedMessage(t="ko"){let n=Nt[this.code];if(n?.[t])return n[t];return this.message}toJSON(){return{name:this.name,code:this.code,message:this.message,details:this.details,providerErrorCode:this.providerErrorCode,providerErrorText:this.providerErrorText,httpStatus:this.httpStatus,requestId:this.requestId,retryAfterMs:this.retryAfterMs,attempt:this.attempt,causeChain:this.causeChain}}}var k=(t,n)=>{let e=P(t);if(e!==void 0)return e;if(n==="compat"&&typeof t==="string"){let i=Number(t.trim());if(Number.isFinite(i))return Math.trunc(i)}return},J=(t,n)=>{let e=Ut(t);if(e)return e;if(n==="compat"&&(typeof t==="number"||typeof t==="boolean"))return String(t);return},ht=(t)=>{if(typeof t!=="string")return;let n=t.trim().toUpperCase();if(!It.has(n))return;return n},m=(t,n)=>{t.push({...n,path:Bt(n.path)})},at=(t,n,e,i)=>{if(t===void 0)return[];let r=(()=>{if(Array.isArray(t))return t;if(e==="compat"&&typeof t==="string")return t.split(",").map((f)=>f.trim()).filter((f)=>f.length>0);return m(i,{code:"invalid_type",message:"expected array of KMsgErrorCode values",path:n}),[]})(),s=[],p=new Set;for(let f=0;f<r.length;f+=1){let y=r[f],c=ht(typeof y==="string"?y:e==="compat"?String(y):y);if(!c){m(i,{code:"unknown_code",message:`unknown retry policy code: ${String(y)}`,path:`${n}[${f}]`});continue}if(p.has(c)){m(i,{code:"duplicate_code",message:`duplicate retry policy code: ${c}`,path:`${n}[${f}]`});continue}p.add(c),s.push(c)}return s},qt=(t,n,e)=>{if(t===void 0)return;if(typeof t==="string"){let i=t.trim().toLowerCase();if(i==="retryable")return"retryable";if(i==="non_retryable"||i==="non-retryable")return"non_retryable"}if(n==="compat"&&typeof t==="boolean")return t?"retryable":"non_retryable";m(e,{code:"invalid_fallback",message:`invalid fallback value: ${String(t)}`,path:"fallback"});return};function gt(t,n={}){let e=lt(n.mode),i=[];if(!w(t))return m(i,{code:"invalid_root",message:"retry policy must be an object",path:"$"}),{policy:null,issues:i};let r=new Set(["retryableCodes","nonRetryableCodes","fallback"]);for(let d of Object.keys(t)){if(r.has(d))continue;m(i,{code:"unknown_field",message:`unknown retry policy field: ${d}`,path:d})}let s=at(t.retryableCodes,"retryableCodes",e,i),p=at(t.nonRetryableCodes,"nonRetryableCodes",e,i),f=qt(t.fallback,e,i),y=new Set(s),c=new Set(p);for(let d of y){if(!c.has(d))continue;y.delete(d),m(i,{code:"conflicting_code",message:`code '${d}' is both retryable and nonRetryable; nonRetryable wins`,path:"retryableCodes"})}let a={...y.size>0?{retryableCodes:Array.from(y)}:{},...c.size>0?{nonRetryableCodes:Array.from(c)}:{},...f?{fallback:f}:{}};return{policy:a.retryableCodes!==void 0||a.nonRetryableCodes!==void 0||a.fallback!==void 0?a:null,issues:i}}function Kt(t,n={}){return gt(t,n).policy}function $t(t,n={}){if(typeof t!=="string"||t.trim().length===0)return null;try{let e=JSON.parse(t);return Kt(e,n)}catch{return null}}var dt=(t,n)=>{let e=t.response;if(!w(e))return;return k(u(e,["status","statusCode","httpStatus"]),n)},Ht=(t,n)=>{if(t instanceof K&&Array.isArray(t.causeChain))return t.causeChain.slice();if(w(t)){let s=t.causeChain;if(Array.isArray(s))return s.slice();let p=t.details;if(n==="compat"&&w(p)){let f=p.causeChain;if(Array.isArray(f))return f.slice();if(f!==void 0)return[f]}}let e=[],i=new Set,r=t;for(let s=0;s<8;s+=1){if(!w(r))break;let p=r.cause;if(p===void 0||i.has(p))break;i.add(p),e.push(p),r=p}return e.length>0?e:void 0},Vt=(t)=>{if(t instanceof Error&&typeof t.message==="string")return t.message;if(w(t)&&typeof t.message==="string")return t.message;return typeof t==="string"?t:"Unknown error"};function Gt(t,n={}){let e=lt(n.mode),r=n.defaultCode??"UNKNOWN_ERROR",s={code:"fallback",classification:n.policy?"policy":"fallback"},p,f,y,c,a,h,d,A=(o)=>{if(o.providerErrorCode!==void 0)p=o.providerErrorCode,s.providerErrorCode="metadata";if(o.providerErrorText!==void 0)f=o.providerErrorText,s.providerErrorText="metadata";if(o.httpStatus!==void 0)y=o.httpStatus,s.httpStatus="metadata";if(o.requestId!==void 0)c=o.requestId,s.requestId="metadata";if(o.retryAfterMs!==void 0)a=x(o.retryAfterMs),s.retryAfterMs="metadata";if(o.attempt!==void 0)h=k(o.attempt,e),s.attempt="metadata";if(Array.isArray(o.causeChain))d=o.causeChain.slice(),s.causeChain="metadata"},C=(o,F)=>{if(p===void 0){let g=J(u(o,["providerErrorCode","errorCode","resultCode"]),e);if(g!==void 0)p=g,s.providerErrorCode=F}if(f===void 0){let g=J(u(o,["providerErrorText","errorMessage","msg","message"]),e);if(g!==void 0)f=g,s.providerErrorText=F}if(y===void 0){let g=k(u(o,["httpStatus","statusCode","status"]),e)??dt(o,e);if(g!==void 0)y=g,s.httpStatus=F==="details"?"details":"http"}if(c===void 0){let g=J(u(o,["requestId","request_id","reqId","traceId"]),e);if(g!==void 0)c=g,s.requestId=F}if(a===void 0){let g=x(k(u(o,["retryAfterMs","retry_after_ms","retryAfter"]),e));if(g!==void 0)a=g,s.retryAfterMs=F}if(h===void 0){let g=k(o.attempt,e);if(g!==void 0&&g>0)h=g,s.attempt=F}};if(t instanceof K){if(r=t.code,s.code="input",A(t),e==="compat"&&w(t.details))C(t.details,"details")}else if(w(t)){let o=ht(u(t,["code","errorCode","resultCode"]));if(o!==void 0)r=o,s.code="input";else if(y===void 0){let F=k(u(t,["httpStatus","statusCode","status"]),e)??dt(t,e);if(F!==void 0&&F>=500)r="PROVIDER_ERROR",s.code="http"}if(C(t,"input"),e==="compat"&&w(t.details))C(t.details,"details")}if(d===void 0){let o=Ht(t,e);if(o!==void 0)d=o,s.causeChain="input"}if(n.attempt!==void 0&&k(n.attempt,e)!==void 0){let o=k(n.attempt,e);if(o!==void 0&&o>0)h=o,s.attempt="input"}let b=new K(r,Vt(t),void 0,{providerErrorCode:p,providerErrorText:f,httpStatus:y,requestId:c,retryAfterMs:a,attempt:h,causeChain:d}),l=O.classifyForRetry(b,n.policy);return{code:r,classification:l,...p!==void 0?{providerErrorCode:p}:{},...f!==void 0?{providerErrorText:f}:{},...y!==void 0?{httpStatus:y}:{},...c!==void 0?{requestId:c}:{},...a!==void 0?{retryAfterMs:a}:{},...h!==void 0?{attempt:h}:{},...d!==void 0?{causeChain:d}:{},sources:s}}var O={isRetryable(t,n={}){return O.classifyForRetry(t,n)==="retryable"},classifyForRetry(t,n={}){if(t instanceof K){if(new Set(n.retryableCodes??Array.from(yt)).has(t.code))return"retryable";if(new Set(n.nonRetryableCodes??Array.from(ft)).has(t.code))return"non_retryable";if(t.httpStatus!==void 0)return ct(t.httpStatus);let y=ot(t.message);if(y)return y;if(n.classifyByMessage&&t.message){let c=n.classifyByMessage(t.message);if(c)return c}if(n.fallback)return n.fallback;return"non_retryable"}let e=t&&typeof t==="object"?t:void 0,i=G(e?.status)??G(e?.statusCode)??G(e?.code),r=P(e?.status)??P(e?.statusCode)??P(e?.httpStatus);if(typeof i==="string"&&i.startsWith("5"))return"retryable";if(r!==void 0){if(n.classifyByStatusCode)return n.classifyByStatusCode(r);return ct(r)}let s=typeof e?.message==="string"?ot(e.message):void 0;if(s)return s;if(n.classifyByMessage&&typeof e?.message==="string"){let p=n.classifyByMessage(e.message);if(p)return p}return n.fallback??"non_retryable"},resolveRetryAfterMs(t,n){if(n?.retryAfterMs){let e=n.retryAfterMs(t),i=x(e);if(i!==void 0)return i}if(t.retryAfterMs!==void 0)return x(t.retryAfterMs);if(t.code==="RATE_LIMIT_EXCEEDED"&&t.retryAfterMs===void 0)return;return},isUnknownStatus:(t)=>{if(t===void 0||Number.isNaN(t)||!Number.isFinite(t))return!1;return t<500},toRetryMetadata(t){return{providerErrorCode:t.providerErrorCode,providerErrorText:t.providerErrorText,httpStatus:t.httpStatus,requestId:t.requestId,retryAfterMs:t.retryAfterMs,attempt:t.attempt,causeChain:t.causeChain}},withAttempt(t,n){return new K(t.code,t.message,t.details,{...O.toRetryMetadata(t),attempt:P(n)})},DEFAULT_RETRYABLE_ERROR_CODES:yt,DEFAULT_NON_RETRYABLE_ERROR_CODES:ft};function Jt(t){switch(t){case"config":return"CRYPTO_CONFIG_ERROR";case"encrypt":return"CRYPTO_ENCRYPT_FAILED";case"decrypt":return"CRYPTO_DECRYPT_FAILED";case"hash":return"CRYPTO_HASH_FAILED";case"policy":return"CRYPTO_POLICY_VIOLATION"}}class M extends K{kind;fieldPath;failMode;openFallback;constructor(t,n,e,i={}){super(Jt(t),n,e,i);this.name="FieldCryptoError",this.kind=t,this.fieldPath=typeof i.fieldPath==="string"?i.fieldPath:void 0,this.failMode=i.failMode,this.openFallback=i.openFallback}toJSON(){return{...super.toJSON(),kind:this.kind,fieldPath:this.fieldPath,failMode:this.failMode,openFallback:this.openFallback}}}var Wt=["tenantId","providerId","messageId"];function _(t){if(typeof t!=="string")return;let n=t.trim();return n.length>0?n:void 0}function Yt(t){if(typeof t!=="number"||!Number.isFinite(t))return;if(t<=0||t>100)return;return t}function Ct(t){let n=[];for(let e of t){let i=_(e.kid),r=Yt(e.percentage);if(!i||r===void 0)continue;n.push({kid:i,percentage:r})}return n}function jt(t,n,e){let i=n.map((r)=>{let s=t[r];return typeof s==="string"?s:""}).join("|");return`${e}::${i}`}function Qt(t){let n=2166136261;for(let e=0;e<t.length;e+=1)n^=t.charCodeAt(e),n=n*16777619>>>0;return n>>>0}function Zt(t,n){let e=0;for(let i of t)if(e+=i.percentage,n<e)return i.kid;return}function N(t,n,e){let i=Ct(n.buckets),r=_(n.defaultKid)??_(e);if(i.length===0)return r;let s=_(n.seed)??"kmsg-rollout-v1",p=n.stickyFields??Wt,f=jt(t,p,s),y=Qt(f)%100;return Zt(i,y)??r}function W(t){return Ct(t.buckets).map((n)=>n.kid)}function E(t){if(typeof t!=="string")return;let n=t.trim();return n.length>0?n:void 0}function Y(t){if(!Array.isArray(t))return[];return t.map((n)=>E(n)).filter((n)=>Boolean(n))}function j(t){let n=[],e=new Set;for(let i of t){let r=E(i);if(!r||e.has(r))continue;e.add(r),n.push(r)}return n}function Lt(t){return E(t.providerId)??"default"}function Q(t){let n=E(t.activeKid)??"default",e=j([n,...Y(t.decryptKids)]);return{async resolveEncryptKey(){return{kid:n}},async resolveDecryptKeys(){return e}}}function v(t){let n=typeof t.cacheTtlMs==="number"&&t.cacheTtlMs>=0?Math.trunc(t.cacheTtlMs):30000,e=E(t.fallback?.activeKid),i=Y(t.fallback?.decryptKids),r;async function s(p){let f=Date.now();if(r&&f<r.expiresAt)return r.value;let y=await t.provider.loadKeySet(p),c=E(y.activeKid)??e??Lt(p),a=j([c,...Y(y.decryptKids),...i]),h={activeKid:c,decryptKids:a,refreshedAt:Date.now()};return r={value:h,expiresAt:Date.now()+n},h}return{async resolveEncryptKey(p){return{kid:(await s(p)).activeKid}},async resolveDecryptKeys(p){let f=await s(p);return f.decryptKids??[f.activeKid]}}}function Xt(t,n){return{async resolveEncryptKey(e){let i=await t.resolveEncryptKey(e);return{kid:N(e,n,i.kid)??i.kid}},async resolveDecryptKeys(e){let i=await t.resolveEncryptKey(e),r=t.resolveDecryptKeys?await t.resolveDecryptKeys(e):[i.kid],s=N(e,n,i.kid),p=W(n);return j([...s?[s]:[],i.kid,...r??[],...p])}}}function zt(t){return v({provider:{async loadKeySet(e){return t.client.getKeyState({...e,...t.keyAlias?{keyAlias:t.keyAlias}:{},...t.region?{region:t.region}:{}})}},cacheTtlMs:t.cacheTtlMs,fallback:{activeKid:t.fallbackActiveKid,decryptKids:t.fallbackDecryptKids}})}function I(t){if(typeof t!=="string")return;let n=t.trim();return n.length>0?n:void 0}function Ft(t,n){return I(t[n])}function tn(t,n){if(!t)return[];return t.split(n).map((e)=>I(e)).filter((e)=>Boolean(e))}function nn(t={}){let n=t.env??(typeof process<"u"?process.env:{}),e=I(t.delimiter)??",",i=t.activeKidEnv??"KMSG_ACTIVE_KID",r=t.decryptKidsEnv??"KMSG_DECRYPT_KIDS",s=Ft(n,i)??I(t.fallbackActiveKid)??"default",p=[s,...tn(Ft(n,r),e),...t.fallbackDecryptKids??[]];return Q({activeKid:s,decryptKids:p})}function en(t){return v({provider:{async loadKeySet(e){return t.client.getKeyState({...e,...t.mountPath?{mountPath:t.mountPath}:{},...t.keyName?{keyName:t.keyName}:{},...t.namespace?{namespace:t.namespace}:{}})}},cacheTtlMs:t.cacheTtlMs,fallback:{activeKid:t.fallbackActiveKid,decryptKids:t.fallbackDecryptKids}})}function Z(t){return typeof t==="function"}function At(t){if(typeof t!=="string")return;let n=t.trim();return n.length>0?n:void 0}function L(t,n,e){let i=t.fields[n];if(i)return i;if(n.startsWith("metadata.")){let r=t.fields["metadata.*"];if(r)return r}return e}function Pt(t,n={}){let e=[];if(!t||typeof t!=="object")return{valid:!1,issues:[{message:"fieldCrypto config must be an object",rule:"fieldCrypto.config.object",hint:"Provide a valid FieldCryptoConfig object"}]};if(!t.provider||typeof t.provider!=="object")e.push({message:"fieldCrypto provider is required",rule:"fieldCrypto.provider.required",path:"provider",hint:"Set provider with encrypt/decrypt/hash methods"});else{if(!Z(t.provider.encrypt))e.push({message:"provider.encrypt must be a function",rule:"fieldCrypto.provider.encrypt.required",path:"provider.encrypt"});if(!Z(t.provider.decrypt))e.push({message:"provider.decrypt must be a function",rule:"fieldCrypto.provider.decrypt.required",path:"provider.decrypt"});if(!Z(t.provider.hash))e.push({message:"provider.hash must be a function",rule:"fieldCrypto.provider.hash.required",path:"provider.hash"})}if(!t.fields||typeof t.fields!=="object")e.push({message:"fieldCrypto.fields must be an object",rule:"fieldCrypto.fields.object",path:"fields",hint:"Define policies such as to, from, metadata.phoneNumber"});else{let s=Object.entries(t.fields);if(s.length===0)e.push({message:"fieldCrypto.fields must not be empty",rule:"fieldCrypto.fields.non_empty",path:"fields",hint:"Add at least one field mode mapping"});for(let[p,f]of s){if(!At(p))e.push({message:"field path must be a non-empty string",rule:"fieldCrypto.fields.path.non_empty",path:"fields"});if(f!=="plain"&&f!=="encrypt"&&f!=="encrypt+hash"&&f!=="mask")e.push({message:`unsupported field mode: ${String(f)}`,rule:"fieldCrypto.fields.mode.supported",path:`fields.${p}`})}}let i=t.failMode??"closed",r=t.openFallback??"masked";if(i==="open"&&r==="plaintext"&&t.unsafeAllowPlaintextStorage!==!0)e.push({message:"openFallback=plaintext requires unsafeAllowPlaintextStorage=true",rule:"fieldCrypto.fail_open.plaintext_guard",path:"openFallback",hint:"Use masked/null fallback, or explicitly enable unsafe plaintext"});if(Array.isArray(t.aadFields)){if(t.aadFields.length===0)e.push({message:"aadFields must not be empty when provided",rule:"fieldCrypto.aad_fields.non_empty",path:"aadFields"});for(let s=0;s<t.aadFields.length;s+=1){let p=t.aadFields[s];if(!At(p))e.push({message:"aadFields cannot include empty key",rule:"fieldCrypto.aad_fields.no_empty_key",path:`aadFields[${s}]`})}}if(n.secureMode&&!n.compatPlainColumns){let s=L(t,"to","encrypt+hash"),p=L(t,"from","encrypt+hash");if(s==="plain")e.push({message:"secure mode requires non-plain policy for `to` when compatPlainColumns=false",rule:"fieldCrypto.secure_mode.to_non_plain",path:"fields.to",hint:"Use encrypt+hash for lookup fields"});if(p==="plain")e.push({message:"secure mode requires non-plain policy for `from` when compatPlainColumns=false",rule:"fieldCrypto.secure_mode.from_non_plain",path:"fields.from",hint:"Use encrypt+hash for lookup fields"})}return{valid:e.length===0,issues:e}}function sn(t,n={}){let e=Pt(t,n);if(e.valid)return;let i=e.issues[0];if(!i)throw new M("config","fieldCrypto config validation failed",{rule:"fieldCrypto.config.invalid",issues:e.issues});throw new M("config",i.message,{rule:i.rule,path:i.path,hint:i.hint,issues:e.issues},{fieldPath:i.path})}function U(t){let n=t instanceof Uint8Array?t:new Uint8Array(t),e=typeof globalThis<"u"?globalThis.Buffer:void 0;return(e?e.from(n).toString("base64"):btoa(String.fromCharCode(...n))).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function B(t){let n=t.replace(/-/g,"+").replace(/_/g,"/"),e=n.length%4===0?n:`${n}${"=".repeat(4-n.length%4)}`,i=typeof globalThis<"u"?globalThis.Buffer:void 0;if(i)return new Uint8Array(i.from(e,"base64"));let r=atob(e),s=new Uint8Array(r.length);for(let p=0;p<r.length;p+=1)s[p]=r.charCodeAt(p);return s}function wt(t,n){if(t instanceof Uint8Array)return t;if(t instanceof ArrayBuffer)return new Uint8Array(t);if(n==="base64url")return B(t);return new TextEncoder().encode(t)}function rn(t){let n=t instanceof Uint8Array?t:new Uint8Array(t);return Array.from(n).map((e)=>e.toString(16).padStart(2,"0")).join("")}function S(t){let n=new Uint8Array(t.byteLength);return n.set(t),n.buffer}function St(t){let n=JSON.parse(t);if(!n||typeof n!=="object"||typeof n.v!=="number"||typeof n.alg!=="string"||typeof n.kid!=="string"||typeof n.iv!=="string"||typeof n.tag!=="string"||typeof n.ct!=="string")throw Error("Invalid ciphertext envelope");return n}function pn(t){if(typeof t==="string")return t;return JSON.stringify(t)}function yn(t){if(!t||typeof t!=="object")return!1;let n=t;return typeof n.v==="number"&&typeof n.alg==="string"&&typeof n.kid==="string"&&typeof n.iv==="string"&&typeof n.tag==="string"&&typeof n.ct==="string"}function bt(t){let n=String(t??"").trim();if(n.length===0)return"";let e=n.startsWith("+"),i=n.replace(/\D/g,"");return e?`+${i}`:i}function X(t=3,n=2){return(e)=>{let i=String(e??"");if(i.length<=t+n)return"*".repeat(Math.max(0,i.length));let r=i.slice(0,t),s=i.slice(-n);return`${r}${"*".repeat(i.length-t-n)}${s}`}}function fn(t){let n=t.algorithm??"A256GCM",e=t.keyEncoding??"base64url",i=t.hashKeyEncoding??e,r=new Map,s=new Map,p=(y)=>{let c=r.get(y);if(c)return c;let a=t.keys[y];if(!a)throw Error(`Unknown encryption key id: ${y}`);let h=wt(a,e),d=crypto.subtle.importKey("raw",S(h),"AES-GCM",!1,["encrypt","decrypt"]);return r.set(y,d),d},f=(y)=>{let c=s.get(y);if(c)return c;let a=t.hashKeys?.[y]??t.keys[y];if(!a)throw Error(`Unknown hash key id: ${y}`);let h=wt(a,i),d=crypto.subtle.importKey("raw",S(h),{name:"HMAC",hash:"SHA-256"},!1,["sign"]);return s.set(y,d),d};return{async encrypt(y){let c=y.kid??t.activeKid,a=await p(c),h=crypto.getRandomValues(new Uint8Array(12)),d=new TextEncoder().encode(JSON.stringify(y.aad??{})),A=new TextEncoder().encode(y.value),C=await crypto.subtle.encrypt({name:"AES-GCM",iv:S(h),additionalData:S(d),tagLength:128},a,S(A)),b=new Uint8Array(C),l=b.slice(b.length-16),o=b.slice(0,b.length-16);return{ciphertext:{v:1,alg:n,kid:c,iv:U(h),tag:U(l),ct:U(o)},kid:c}},async decrypt(y){let c=St(y.ciphertext),a=y.candidateKids&&y.candidateKids.length>0?y.candidateKids:[c.kid],h=B(c.iv),d=B(c.tag),A=B(c.ct),C=new Uint8Array(A.length+d.length);C.set(A,0),C.set(d,A.length);let b=new TextEncoder().encode(JSON.stringify(y.aad??{})),l;for(let o of a)try{let F=await p(o),g=await crypto.subtle.decrypt({name:"AES-GCM",iv:S(h),additionalData:S(b),tagLength:128},F,S(C));return new TextDecoder().decode(new Uint8Array(g))}catch(F){l=F}throw Error(`Failed to decrypt ciphertext: ${l instanceof Error?l.message:String(l??"unknown")}`)},async hash(y){let c=y.kid??t.activeKid,a=await f(c),h=await crypto.subtle.sign("HMAC",a,S(new TextEncoder().encode(y.value)));return rn(h)},mask(y){return X()(y.value)}}}function cn(){return{encrypt(t){return{ciphertext:JSON.stringify({v:1,alg:"NOOP",kid:"noop",iv:"",tag:"",ct:t.value})}},decrypt(t){try{return St(t.ciphertext).ct}catch{return t.ciphertext}},hash(t){let n=bt(t.value);return U(new TextEncoder().encode(n))},mask(t){return X()(t.value)}}}function on(t){return pn(t)}var ut;((r)=>{r.DEBUG="DEBUG";r.INFO="INFO";r.WARN="WARN";r.ERROR="ERROR"})(ut||={});var an=["to","from","phone","phoneNumber","recipient","sender","secret","apiKey","apiSecret","authorization","auth","token","password","payload","message","content","text"];function dn(t){let n=t.toLowerCase();return an.some((e)=>n.includes(e.toLowerCase()))}function ln(t){let n=t.trim();if(n.length<=4)return"***";if(n.includes("@")){let[r,s]=n.split("@");return`${r.slice(0,2)}${"*".repeat(Math.max(1,r.length-2))}@${s}`}let e=n.slice(0,3),i=n.slice(-2);return`${e}${"*".repeat(Math.max(1,n.length-5))}${i}`}function z(t,n){if(n===void 0||n===null)return n;if(dn(t)){if(typeof n==="string")return ln(n);if(typeof n==="number"||typeof n==="boolean")return"***";if(Array.isArray(n))return"[REDACTED]";if(typeof n==="object")return"[REDACTED]"}if(Array.isArray(n))return n.map((e)=>z(t,e));if(typeof n==="object"){let e={};for(let[i,r]of Object.entries(n))e[i]=z(i,r);return e}return n}function hn(t){let n={};for(let[e,i]of Object.entries(t))n[e]=z(e,i);return n}class ${config;context;constructor(t={},n={}){this.context=t,this.config={level:"INFO",enableConsole:!0,enableJson:!1,enableColors:!0,...n}}shouldLog(t){let n=["DEBUG","INFO","WARN","ERROR"];return n.indexOf(t)>=n.indexOf(this.config.level)}formatMessage(t){let n=hn(t.context);if(this.config.enableJson)return JSON.stringify({level:t.level,message:t.message,timestamp:t.timestamp.toISOString(),context:n,...t.error&&{error:{name:t.error.name,message:t.error.message,stack:t.error.stack}},...t.duration&&{duration:t.duration}});let e=t.timestamp.toISOString(),i=this.config.enableColors?this.colorizeLevel(t.level):t.level,r=Object.keys(n).length>0?` [${Object.entries(n).map(([p,f])=>`${p}=${f}`).join(", ")}]`:"",s=`${e} ${i}${r}: ${t.message}`;if(t.duration!==void 0)s+=` (${t.duration}ms)`;if(t.error)s+=`
|
|
2
|
+
${t.error.stack}`;return s}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 n=this.formatMessage(t);if(this.config.enableConsole)(t.level==="ERROR"?console.error:t.level==="WARN"?console.warn:console.log)(n);if(this.config.enableFile&&this.config.filePath);}debug(t,n={}){this.writeLog({level:"DEBUG",message:t,timestamp:new Date,context:{...this.context,...n}})}info(t,n={}){this.writeLog({level:"INFO",message:t,timestamp:new Date,context:{...this.context,...n}})}warn(t,n={},e){this.writeLog({level:"WARN",message:t,timestamp:new Date,context:{...this.context,...n},error:e})}error(t,n={},e){this.writeLog({level:"ERROR",message:t,timestamp:new Date,context:{...this.context,...n},error:e})}child(t){return new $({...this.context,...t},this.config)}time(t){let n=Date.now();return()=>{let e=Date.now()-n;this.info(`${t} completed`,{duration:e})}}async measure(t,n,e={}){let i=Date.now(),r={...e,operation:t};this.debug(`Starting ${t}`,r);try{let s=await n(),p=Date.now()-i;return this.info(`Completed ${t}`,{...r,duration:p}),s}catch(s){let p=Date.now()-i;throw this.error(`Failed ${t}`,{...r,duration:p},s instanceof Error?s:Error(String(s))),s}}}var q;function tt(t,n){return new $(t,n)}function D(){if(!q)q=tt();return q}function gn(t){q=t}var Kn={debug:(t,n)=>D().debug(t,n),info:(t,n)=>D().info(t,n),warn:(t,n,e)=>D().warn(t,n,e),error:(t,n,e)=>D().error(t,n,e),child:(t)=>D().child(t),time:(t)=>D().time(t),measure:(t,n,e)=>D().measure(t,n,e)};function Cn(t){let n=tt({},t);return async(e,i)=>{let r=Date.now(),p={requestId:Math.random().toString(36).substring(7),method:e.req.method,path:e.req.path,userAgent:e.req.header("user-agent")||"unknown"};n.info("Request started",p);try{await i();let f=Date.now()-r;n.info("Request completed",{...p,status:e.res.status,duration:f})}catch(f){let y=Date.now()-r;throw n.error("Request failed",{...p,duration:y},f instanceof Error?f:Error(String(f))),f}}}class T{static defaultOptions={maxAttempts:3,initialDelay:1000,maxDelay:30000,backoffMultiplier:2,jitter:!0,retryCondition:(t)=>O.isRetryable(t)};static async execute(t,n={}){let e={...T.defaultOptions,...n},i,r=e.initialDelay;for(let s=1;s<=e.maxAttempts;s++)try{return await t()}catch(p){if(i=p,s===e.maxAttempts||!e.retryCondition(i,s))throw i;let f=e.jitter?r+Math.random()*r*0.1:r;e.onRetry?.(i,s),await new Promise((y)=>setTimeout(y,f)),r=Math.min(r*e.backoffMultiplier,e.maxDelay)}throw i}static createRetryableFunction(t,n={}){return async(...e)=>{return T.execute(()=>t(...e),n)}}}class H{static async execute(t,n,e={}){let i={concurrency:5,retryOptions:{maxAttempts:3,initialDelay:1000,maxDelay:1e4,backoffMultiplier:2,jitter:!0},failFast:!1,...e},r=Date.now(),s=[],p=[],f=0,y=T.createRetryableFunction(n,i.retryOptions),c=H.createBatches(t,i.concurrency);for(let h of c){let d=h.map(async(A)=>{try{let C=await y(A);s.push({item:A,result:C})}catch(C){if(p.push({item:A,error:C}),i.failFast)throw new K("MESSAGE_SEND_FAILED",`Bulk operation failed fast after ${p.length} failures`,{totalItems:t.length,failedCount:p.length})}finally{f++,i.onProgress?.(f,t.length,p.length)}});if(await Promise.allSettled(d),i.failFast&&p.length>0)break}let a=Date.now()-r;return{successful:s,failed:p,summary:{total:t.length,successful:s.length,failed:p.length,duration:a}}}static createBatches(t,n){let e=[];for(let i=0;i<t.length;i+=n)e.push(t.slice(i,i+n));return e}}class nt{options;state="CLOSED";failureCount=0;lastFailureTime=0;nextAttemptTime=0;constructor(t){this.options=t}async execute(t){let n=Date.now();switch(this.state){case"OPEN":if(n<this.nextAttemptTime)throw new K("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 e=await Promise.race([t(),new Promise((i,r)=>setTimeout(()=>r(new K("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 e}catch(e){throw this.recordFailure(),e}}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 et{maxRequests;windowMs;requests=[];constructor(t,n){this.maxRequests=t;this.windowMs=n}async acquire(){let t=Date.now();if(this.requests=this.requests.filter((n)=>t-n<this.windowMs),this.requests.length>=this.maxRequests){let n=Math.min(...this.requests),e=this.windowMs-(t-n);if(e>0)return await new Promise((i)=>setTimeout(i,e)),this.acquire()}this.requests.push(t)}canMakeRequest(){let t=Date.now();return this.requests=this.requests.filter((n)=>t-n<this.windowMs),this.requests.length<this.maxRequests}getRemainingRequests(){let t=Date.now();return this.requests=this.requests.filter((n)=>t-n<this.windowMs),Math.max(0,this.maxRequests-this.requests.length)}}var it=(t)=>({isSuccess:!0,isFailure:!1,value:t}),st=(t)=>({isSuccess:!1,isFailure:!0,error:t}),Fn={map(t,n){if(t.isSuccess)return it(n(t.value));return t},flatMap(t,n){if(t.isSuccess)return n(t.value);return t},mapError(t,n){if(t.isFailure)return st(n(t.error));return t},unwrap(t){if(t.isSuccess)return t.value;throw t.error},unwrapOr(t,n){if(t.isSuccess)return t.value;return n},unwrapOrElse(t,n){if(t.isSuccess)return t.value;return n(t.error)},match(t,n){if(t.isSuccess)return n.ok(t.value);return n.fail(t.error)},async fromPromise(t){try{let n=await t;return it(n)}catch(n){return st(n)}},isOk(t){return t.isSuccess},isFail(t){return t.isFailure},tap(t,n){return n(t),t},tapOk(t,n){if(t.isSuccess)n(t.value);return t},tapErr(t,n){if(t.isFailure)n(t.error);return t},expect(t,n){if(t.isSuccess)return t.value;throw Error(n,{cause:t.error})}};function kt(){let t=globalThis;return t.__K_MSG_ENV__??t.__ENV__??t.process?.env??{}}function An(t){let n=kt()[t];if(typeof n==="string")return n;if(n===void 0)return;return String(n)}var Dt=["PENDING","SENT","DELIVERED","FAILED","CANCELLED","UNKNOWN"],mt=["DELIVERED","FAILED","CANCELLED","UNKNOWN"],rt=["PENDING","SENT"],Pn=new Set(Dt),Tt=new Set(mt),wn=new Set(rt);function Sn(t){return Pn.has(t)}function bn(t){return Tt.has(t)}function un(t){return Tt.has(t)}function kn(t){return wn.has(t)}function Dn(){return rt}var Ot=["ALIMTALK","FRIENDTALK","SMS","LMS","MMS","NSA","VOICE","FAX","RCS_SMS","RCS_LMS","RCS_MMS","RCS_TPL","RCS_ITPL","RCS_LTPL"],mn=new Set(Ot);function Tn(t){return mn.has(t)}var On=["PENDING","SENT","FAILED"],Rt="PENDING",Rn=(t)=>{let n=typeof t==="string"?t.trim().toUpperCase():"";if(n==="PENDING"||n==="SENT"||n==="FAILED")return n;return Rt};
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=B007D233B807038664756E2164756E21
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -22,6 +22,6 @@
|
|
|
22
22
|
"/**\n * Supported message types in the k-msg platform.\n *\n * - ALIMTALK: Kakao AlimTalk (notification talk) with approved template\n * - FRIENDTALK: Kakao FriendTalk (friend message, no template required)\n * - SMS: Short message (up to 90 bytes, typically ~90 Korean characters)\n * - LMS: Long message with subject line\n * - MMS: Multimedia message with image attachment\n * - NSA: Naver Smart Alarm (notification service)\n * - VOICE: Voice call message\n * - FAX: Fax transmission\n * - RCS_SMS/LMS/MMS: Rich Communication Services text/media messages\n * - RCS_TPL/ITPL/LTPL: RCS template-based messages\n */\nexport type MessageType =\n | \"ALIMTALK\"\n | \"FRIENDTALK\"\n | \"SMS\"\n | \"LMS\"\n | \"MMS\"\n | \"NSA\"\n | \"VOICE\"\n | \"FAX\"\n | \"RCS_SMS\"\n | \"RCS_LMS\"\n | \"RCS_MMS\"\n | \"RCS_TPL\"\n | \"RCS_ITPL\"\n | \"RCS_LTPL\";\n\nexport const KMSG_MESSAGE_TYPES = [\n \"ALIMTALK\",\n \"FRIENDTALK\",\n \"SMS\",\n \"LMS\",\n \"MMS\",\n \"NSA\",\n \"VOICE\",\n \"FAX\",\n \"RCS_SMS\",\n \"RCS_LMS\",\n \"RCS_MMS\",\n \"RCS_TPL\",\n \"RCS_ITPL\",\n \"RCS_LTPL\",\n] as const satisfies readonly MessageType[];\n\nconst KMSG_MESSAGE_TYPE_SET: ReadonlySet<string> = new Set(KMSG_MESSAGE_TYPES);\n\nexport function isKMsgMessageType(value: string): value is MessageType {\n return KMSG_MESSAGE_TYPE_SET.has(value);\n}\n\n/**\n * Message delivery status.\n *\n * - PENDING: Queued or in transit\n * - SENT: Successfully delivered to the carrier\n * - FAILED: Delivery failed\n */\nexport type MessageStatus = \"PENDING\" | \"SENT\" | \"FAILED\";\n\nexport const KNOWN_MESSAGE_STATUSES: MessageStatus[] = [\n \"PENDING\",\n \"SENT\",\n \"FAILED\",\n];\n\nexport const QUEUED_MESSAGE_STATUS: MessageStatus = \"PENDING\";\n\nexport const normalizeMessageStatus = (status: unknown): MessageStatus => {\n const raw = typeof status === \"string\" ? status.trim().toUpperCase() : \"\";\n\n if (raw === \"PENDING\" || raw === \"SENT\" || raw === \"FAILED\") {\n return raw;\n }\n\n return QUEUED_MESSAGE_STATUS;\n};\n\n/**\n * Variables for template interpolation.\n * Values are substituted into #{variableName} placeholders in templates.\n * @example { name: \"John\", code: \"123456\" }\n */\nexport type MessageVariables = Record<\n string,\n string | number | boolean | Date | null | undefined\n>;\n\nexport interface MessageButton {\n name: string;\n /**\n * Provider-dependent. Common values: \"WL\" (web link), \"AL\" (app link), ...\n */\n type: string;\n urlPc?: string;\n urlMobile?: string;\n}\n\nexport type MessageBinaryInput =\n | {\n /**\n * URL or file path (provider-dependent).\n */\n ref: string;\n filename?: string;\n contentType?: string;\n }\n | {\n bytes: Uint8Array;\n filename?: string;\n contentType?: string;\n }\n | {\n blob: Blob;\n filename?: string;\n contentType?: string;\n };\n\nexport interface MessageMedia {\n /**\n * Image attachment (used by MMS, FriendTalk image, RCS_MMS, ...).\n */\n image?: MessageBinaryInput;\n}\n\nexport interface CommonSendOptions {\n /**\n * Correlation id generated by KMsg (or provided by the caller).\n * Providers must echo this value back in SendResult.messageId.\n */\n messageId?: string;\n /**\n * Optional routing hint to force a specific provider by id.\n */\n providerId?: string;\n /**\n * Recipient phone number in Korean format without hyphens.\n * @example \"01012345678\"\n */\n to: string;\n /**\n * Sender number / sender id. Optional at KMsg layer; providers may require it.\n */\n from?: string;\n /**\n * Common delivery options understood by multiple providers.\n */\n options?: {\n scheduledAt?: Date;\n /**\n * Country code for providers that support it (e.g. SOLAPI).\n * Examples: \"82\", \"+82\".\n */\n country?: string;\n customFields?: Record<string, string>;\n };\n /**\n * Provider-specific escape hatch (use sparingly).\n */\n providerOptions?: Record<string, unknown>;\n}\n\nexport interface KakaoSendOptions {\n profileId?: string;\n plusId?: string;\n disableSms?: boolean;\n adFlag?: boolean;\n buttons?: unknown[];\n imageId?: string;\n /**\n * FriendTalk image upload link hint (SOLAPI).\n */\n imageLink?: string;\n // biome-ignore lint/suspicious/noExplicitAny: provider-specific extras\n [key: string]: any;\n}\n\nexport interface AlimTalkFailoverOptions {\n enabled?: boolean;\n fallbackChannel?: \"sms\" | \"lms\";\n fallbackContent?: string;\n fallbackTitle?: string;\n}\n\nexport type SendWarningCode =\n | \"FAILOVER_UNSUPPORTED_PROVIDER\"\n | \"FAILOVER_PARTIAL_PROVIDER\"\n | \"FALLBACK_CONTENT_MISSING\"\n | (string & {});\n\nexport interface SendWarning {\n code: SendWarningCode;\n message: string;\n details?: Record<string, unknown>;\n}\n\nexport interface NaverSendOptions {\n talkId?: string;\n /**\n * Override the template identifier for NSA (provider-specific).\n */\n templateId?: string;\n disableSms?: boolean;\n variables?: MessageVariables;\n buttons?: unknown[];\n // biome-ignore lint/suspicious/noExplicitAny: provider-specific extras\n [key: string]: any;\n}\n\nexport interface VoiceSendOptions {\n voiceType?: \"FEMALE\" | \"MALE\";\n headerMessage?: string;\n tailMessage?: string;\n replyRange?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;\n counselorNumber?: string;\n // biome-ignore lint/suspicious/noExplicitAny: provider-specific extras\n [key: string]: any;\n}\n\nexport interface FaxSendOptions {\n fileIds?: string[];\n fileUrls?: string[];\n // biome-ignore lint/suspicious/noExplicitAny: provider-specific extras\n [key: string]: any;\n}\n\nexport interface RcsSendOptions {\n brandId?: string;\n /**\n * Override template identifier for RCS_*TPL types.\n */\n templateId?: string;\n copyAllowed?: boolean;\n variables?: MessageVariables;\n mmsType?: \"M3\" | \"S3\" | \"M4\" | \"S4\" | \"M5\" | \"S5\" | \"M6\" | \"S6\";\n commercialType?: boolean;\n disableSms?: boolean;\n buttons?: unknown[];\n additionalBody?: {\n title?: string;\n description?: string;\n imageId?: string;\n buttons?: unknown[];\n // biome-ignore lint/suspicious/noExplicitAny: provider-specific extras\n [key: string]: any;\n };\n // biome-ignore lint/suspicious/noExplicitAny: provider-specific extras\n [key: string]: any;\n}\n\nexport interface SmsSendOptions extends CommonSendOptions {\n type: \"SMS\" | \"LMS\" | \"MMS\";\n text: string;\n /**\n * LMS/MMS subject.\n */\n subject?: string;\n /**\n * Media attachments. For backwards compatibility, `imageUrl` is treated as a legacy alias\n * for `media.image.ref` by some providers.\n */\n media?: MessageMedia;\n /**\n * Optional image URL for MMS (provider-specific).\n */\n imageUrl?: string;\n variables?: MessageVariables;\n}\n\nexport interface AlimTalkSendOptions extends CommonSendOptions {\n type: \"ALIMTALK\";\n templateId: string;\n variables: MessageVariables;\n kakao?: KakaoSendOptions;\n failover?: AlimTalkFailoverOptions;\n}\n\nexport interface FriendTalkSendOptions extends CommonSendOptions {\n type: \"FRIENDTALK\";\n text: string;\n media?: MessageMedia;\n imageUrl?: string;\n buttons?: MessageButton[];\n variables?: MessageVariables;\n kakao?: KakaoSendOptions;\n}\n\nexport interface NsaSendOptions extends CommonSendOptions {\n type: \"NSA\";\n templateId: string;\n variables: MessageVariables;\n naver?: NaverSendOptions;\n}\n\nexport interface VoiceMessageSendOptions extends CommonSendOptions {\n type: \"VOICE\";\n text: string;\n variables?: MessageVariables;\n voice?: VoiceSendOptions;\n}\n\nexport interface FaxMessageSendOptions extends CommonSendOptions {\n type: \"FAX\";\n fax: FaxSendOptions;\n}\n\nexport interface RcsTextSendOptions extends CommonSendOptions {\n type: \"RCS_SMS\" | \"RCS_LMS\" | \"RCS_MMS\";\n text: string;\n subject?: string;\n media?: MessageMedia;\n imageUrl?: string;\n variables?: MessageVariables;\n rcs?: RcsSendOptions;\n}\n\nexport interface RcsTemplateSendOptions extends CommonSendOptions {\n type: \"RCS_TPL\" | \"RCS_ITPL\" | \"RCS_LTPL\";\n templateId: string;\n variables: MessageVariables;\n rcs?: RcsSendOptions;\n}\n\n/**\n * Union of all supported send option types.\n * Use this for type narrowing based on the `type` discriminator.\n */\nexport type SendOptions =\n | SmsSendOptions\n | AlimTalkSendOptions\n | FriendTalkSendOptions\n | NsaSendOptions\n | VoiceMessageSendOptions\n | FaxMessageSendOptions\n | RcsTextSendOptions\n | RcsTemplateSendOptions;\n\n/**\n * Relaxed SMS input type that allows omitting `type` and using `content` as an alias for `text`.\n * Used for developer convenience when sending simple SMS messages.\n */\nexport type SmsDefaultSendInput = Omit<SmsSendOptions, \"type\" | \"text\"> & {\n type?: undefined;\n /**\n * SMS text. If omitted, `content` is used.\n */\n text?: string;\n /**\n * Alias for `text`.\n */\n content?: string;\n};\n\n/**\n * Developer-facing input type.\n * - SMS defaults allow omitting `type` and using `content`.\n * - Other channels are modeled as discriminated unions on `type`.\n */\nexport type SendInput = SendOptions | SmsDefaultSendInput;\n\n/**\n * Result of a message send operation.\n * Returned by Provider.send() and KMsg.send().\n */\nexport interface SendResult {\n /**\n * Correlation id (equals the request `messageId`).\n */\n messageId: string;\n /**\n * Identifier of the provider that handled this message.\n */\n providerId: string;\n /**\n * Provider-specific message identifier for tracking.\n */\n providerMessageId?: string;\n /**\n * Current delivery status of the message.\n */\n status: MessageStatus;\n /**\n * The message type that was sent.\n */\n type: MessageType;\n /**\n * Recipient phone number.\n */\n to: string;\n /**\n * Non-fatal warnings (e.g., failover partially applied).\n */\n warnings?: SendWarning[];\n /**\n * Raw provider response for debugging (provider-specific shape).\n */\n raw?: unknown;\n}\n"
|
|
23
23
|
],
|
|
24
24
|
"mappings": "05DAEO,IAAK,GAAL,CAAK,IAAL,CACL,kBAAkB,kBAClB,wBAAwB,wBACxB,uBAAuB,uBACvB,qBAAqB,qBACrB,sBAAsB,sBACtB,gBAAgB,gBAChB,kBAAkB,kBAClB,8BAA8B,8BAC9B,iBAAiB,iBACjB,sBAAsB,sBACtB,sBAAsB,sBACtB,wBAAwB,wBACxB,wBAAwB,wBACxB,qBAAqB,qBACrB,0BAA0B,0BAC1B,gBAAgB,kBAhBN,QAqBZ,IAAM,GAAoE,EACvE,mBAAgC,CAC/B,GAAI,YACJ,GAAI,iBACN,GACC,yBAAsC,CACrC,GAAI,aACJ,GAAI,uBACN,GACC,wBAAqC,CACpC,GAAI,YACJ,GAAI,sBACN,GACC,sBAAmC,CAClC,GAAI,iBACJ,GAAI,oBACN,GACC,uBAAoC,CACnC,GAAI,gBACJ,GAAI,qBACN,GACC,iBAA8B,CAC7B,GAAI,kBACJ,GAAI,eACN,GACC,mBAAgC,CAC/B,GAAI,sBACJ,GAAI,iBACN,GACC,+BAA4C,CAC3C,GAAI,wBACJ,GAAI,iCACN,GACC,kBAA+B,CAC9B,GAAI,iBACJ,GAAI,gBACN,GACC,uBAAoC,CACnC,GAAI,iBACJ,GAAI,qBACN,GACC,uBAAoC,CACnC,GAAI,oBACJ,GAAI,4BACN,GACC,yBAAsC,CACrC,GAAI,cACJ,GAAI,mBACN,GACC,yBAAsC,CACrC,GAAI,cACJ,GAAI,mBACN,GACC,sBAAmC,CAClC,GAAI,gBACJ,GAAI,wBACN,GACC,2BAAwC,CACvC,GAAI,oBACJ,GAAI,yBACN,GACC,iBAA8B,CAC7B,GAAI,oBACJ,GAAI,eACN,CACF,EAwFM,GAA8C,IAAI,IACtD,OAAO,OAAO,CAAa,CAC7B,EAEM,GACJ,IAAI,IAAI,CACN,gBACA,sBACA,kBACA,8BACA,iBACA,eACF,CAAC,EAEG,GACJ,IAAI,IAAI,CACN,kBACA,wBACA,uBACA,qBACA,sBACA,sBACA,wBACA,wBACA,qBACA,yBACF,CAAC,EAEG,EAAkB,CAAC,IAAuC,CAC9D,GACE,OAAO,IAAU,UACjB,OAAO,MAAM,CAAK,GAClB,CAAC,OAAO,SAAS,CAAK,EAEtB,OAGF,OAAO,KAAK,MAAM,CAAK,GAGZ,EAAwB,CAAC,IAAuC,CAC3E,IAAM,EAAa,EAAgB,CAAK,EACxC,GAAI,IAAe,QAAa,EAAa,EAC3C,OAGF,OAAO,GAGH,EAAgB,CAAC,IAAuC,CAC5D,GAAI,OAAO,IAAU,SACnB,OAGF,OAAO,EAAM,YAAY,EAAE,KAAK,GAG5B,GAAkB,CAAC,IAAuC,CAC9D,GAAI,OAAO,IAAU,SACnB,OAGF,IAAM,EAAa,EAAM,KAAK,EAC9B,OAAO,EAAW,OAAS,EAAI,EAAa,QAGxC,EAAiB,CAAC,IAAqD,CAC3E,OAAO,OAAO,IAAU,UAAY,IAAU,MAAQ,CAAC,MAAM,QAAQ,CAAK,GAGtE,EAAY,CAChB,EACA,IACY,CACZ,QAAW,KAAO,EAChB,GAAI,KAAO,EACT,OAAO,EAAM,GAGjB,QAGI,GAAkB,CAAC,IAAyB,CAChD,OAAO,EAAK,OAAS,EAAI,EAAO,KAG5B,GAAsB,CAC1B,IACyB,CACzB,OAAO,IAAS,SAAW,SAAW,QAGlC,GAAuB,CAAC,IAAsC,CAClE,GAAI,GAAU,IACZ,MAAO,YAGT,GAAI,IAAW,KAAO,IAAW,KAAO,IAAW,IACjD,MAAO,YAGT,MAAO,iBAGH,GAAoB,CAAC,IAAmD,CAC5E,IAAM,EAAa,EAAQ,YAAY,EAEvC,GACE,EAAW,SAAS,SAAS,GAC7B,EAAW,SAAS,UAAU,GAC9B,EAAW,SAAS,SAAS,GAC7B,EAAW,SAAS,OAAO,EAE3B,MAAO,YAGT,QAGK,MAAM,UAAkB,KAAM,CACnB,KACA,QACA,kBACA,kBACA,WACA,UACA,aACA,QACA,WAEhB,WAAW,CACT,EACA,EACA,EACA,EAA8B,CAAC,EAC/B,CACA,MAAM,CAAO,EAab,GAZA,KAAK,KAAO,YACZ,KAAK,KAAO,EACZ,KAAK,QAAU,EAEf,KAAK,kBAAoB,EAAS,kBAClC,KAAK,kBAAoB,EAAS,kBAClC,KAAK,WAAa,EAAgB,EAAS,UAAU,EACrD,KAAK,UACH,OAAO,EAAS,YAAc,SAAW,EAAS,UAAY,OAChE,KAAK,aAAe,EAAgB,EAAS,YAAY,EACzD,KAAK,QAAU,EAAgB,EAAS,OAAO,EAE3C,MAAM,QAAQ,EAAS,UAAU,EACnC,KAAK,WAAa,EAAS,WACtB,QAAI,EAAS,aAAe,OACjC,KAAK,WAAa,CAAC,EAAS,UAAU,EAGxC,GAAI,MAAM,kBACR,MAAM,kBAAkB,KAAM,CAAS,EAS3C,mBAAmB,CAAC,EAhUS,KAgUgC,CAC3D,IAAM,EAAW,GAAe,KAAK,MACrC,GAAI,IAAW,GACb,OAAO,EAAS,GAElB,OAAO,KAAK,QAGd,MAAM,EAAG,CACP,MAAO,CACL,KAAM,KAAK,KACX,KAAM,KAAK,KACX,QAAS,KAAK,QACd,QAAS,KAAK,QACd,kBAAmB,KAAK,kBACxB,kBAAmB,KAAK,kBACxB,WAAY,KAAK,WACjB,UAAW,KAAK,UAChB,aAAc,KAAK,aACnB,QAAS,KAAK,QACd,WAAY,KAAK,UACnB,EAEJ,CAEA,IAAM,EAAuB,CAC3B,EACA,IACuB,CACvB,IAAM,EAAa,EAAgB,CAAK,EACxC,GAAI,IAAe,OAAW,OAAO,EAErC,GAAI,IAAS,UAAY,OAAO,IAAU,SAAU,CAClD,IAAM,EAAS,OAAO,EAAM,KAAK,CAAC,EAClC,GAAI,OAAO,SAAS,CAAM,EACxB,OAAO,KAAK,MAAM,CAAM,EAI5B,QAGI,EAAsB,CAC1B,EACA,IACuB,CACvB,IAAM,EAAa,GAAgB,CAAK,EACxC,GAAI,EAAY,OAAO,EAEvB,GACE,IAAS,WACR,OAAO,IAAU,UAAY,OAAO,IAAU,WAE/C,OAAO,OAAO,CAAK,EAGrB,QAGI,GAAyB,CAAC,IAA8C,CAC5E,GAAI,OAAO,IAAU,SACnB,OAGF,IAAM,EAAa,EAAM,KAAK,EAAE,YAAY,EAC5C,GAAI,CAAC,GAAuB,IAAI,CAAU,EACxC,OAGF,OAAO,GAGH,EAAkB,CACtB,EACA,IACG,CACH,EAAO,KAAK,IACP,EACH,KAAM,GAAgB,EAAM,IAAI,CAClC,CAAC,GAGG,GAA0B,CAC9B,EACA,EACA,EACA,IACoB,CACpB,GAAI,IAAU,OAAW,MAAO,CAAC,EAEjC,IAAM,GAAoB,IAAM,CAC9B,GAAI,MAAM,QAAQ,CAAK,EAAG,OAAO,EACjC,GAAI,IAAS,UAAY,OAAO,IAAU,SACxC,OAAO,EACJ,MAAM,GAAG,EACT,IAAI,CAAC,IAAS,EAAK,KAAK,CAAC,EACzB,OAAO,CAAC,IAAS,EAAK,OAAS,CAAC,EAQrC,OALA,EAAgB,EAAQ,CACtB,KAAM,eACN,QAAS,yCACT,MACF,CAAC,EACM,CAAC,IACP,EAEG,EAAuB,CAAC,EACxB,EAAO,IAAI,IAEjB,QAAS,EAAQ,EAAG,EAAQ,EAAM,OAAQ,GAAS,EAAG,CACpD,IAAM,EAAO,EAAM,GACb,EAAO,GACX,OAAO,IAAS,SAAW,EAAO,IAAS,SAAW,OAAO,CAAI,EAAI,CACvE,EAEA,GAAI,CAAC,EAAM,CACT,EAAgB,EAAQ,CACtB,KAAM,eACN,QAAS,8BAA8B,OAAO,CAAI,IAClD,KAAM,GAAG,KAAQ,IACnB,CAAC,EACD,SAGF,GAAI,EAAK,IAAI,CAAI,EAAG,CAClB,EAAgB,EAAQ,CACtB,KAAM,iBACN,QAAS,gCAAgC,IACzC,KAAM,GAAG,KAAQ,IACnB,CAAC,EACD,SAGF,EAAK,IAAI,CAAI,EACb,EAAI,KAAK,CAAI,EAGf,OAAO,GAGH,GAAyB,CAC7B,EACA,EACA,IACkC,CAClC,GAAI,IAAU,OAAW,OAEzB,GAAI,OAAO,IAAU,SAAU,CAC7B,IAAM,EAAa,EAAM,KAAK,EAAE,YAAY,EAC5C,GAAI,IAAe,YAAa,MAAO,YACvC,GAAI,IAAe,iBAAmB,IAAe,gBACnD,MAAO,gBAIX,GAAI,IAAS,UAAY,OAAO,IAAU,UACxC,OAAO,EAAQ,YAAc,gBAG/B,EAAgB,EAAQ,CACtB,KAAM,mBACN,QAAS,2BAA2B,OAAO,CAAK,IAChD,KAAM,UACR,CAAC,EACD,QAGK,SAAS,EAAwB,CACtC,EACA,EAA4C,CAAC,EACX,CAClC,IAAM,EAAO,GAAoB,EAAQ,IAAI,EACvC,EAAkC,CAAC,EAEzC,GAAI,CAAC,EAAe,CAAK,EAMvB,OALA,EAAgB,EAAQ,CACtB,KAAM,eACN,QAAS,iCACT,KAAM,GACR,CAAC,EACM,CAAE,OAAQ,KAAM,QAAO,EAGhC,IAAM,EAAY,IAAI,IAAI,CACxB,iBACA,oBACA,UACF,CAAC,EACD,QAAW,KAAO,OAAO,KAAK,CAAK,EAAG,CACpC,GAAI,EAAU,IAAI,CAAG,EAAG,SACxB,EAAgB,EAAQ,CACtB,KAAM,gBACN,QAAS,+BAA+B,IACxC,KAAM,CACR,CAAC,EAGH,IAAM,EAAiB,GACrB,EAAM,eACN,iBACA,EACA,CACF,EACM,EAAoB,GACxB,EAAM,kBACN,oBACA,EACA,CACF,EACM,EAAW,GAAuB,EAAM,SAAU,EAAM,CAAM,EAE9D,EAAe,IAAI,IAAI,CAAc,EACrC,EAAkB,IAAI,IAAI,CAAiB,EAEjD,QAAW,KAAQ,EAAc,CAC/B,GAAI,CAAC,EAAgB,IAAI,CAAI,EAAG,SAChC,EAAa,OAAO,CAAI,EACxB,EAAgB,EAAQ,CACtB,KAAM,mBACN,QAAS,SAAS,2DAClB,KAAM,gBACR,CAAC,EAGH,IAAM,EAA2B,IAC3B,EAAa,KAAO,EACpB,CAAE,eAAgB,MAAM,KAAK,CAAY,CAAE,EAC3C,CAAC,KACD,EAAgB,KAAO,EACvB,CAAE,kBAAmB,MAAM,KAAK,CAAe,CAAE,EACjD,CAAC,KACD,EAAW,CAAE,UAAS,EAAI,CAAC,CACjC,EAOA,MAAO,CACL,OALA,EAAO,iBAAmB,QAC1B,EAAO,oBAAsB,QAC7B,EAAO,WAAa,OAGA,EAAS,KAC7B,QACF,EAGK,SAAS,EAAyB,CACvC,EACA,EAA4C,CAAC,EACpB,CACzB,OAAO,GAAyB,EAAO,CAAO,EAAE,OAG3C,SAAS,EAA6B,CAC3C,EACA,EAA4C,CAAC,EACpB,CACzB,GAAI,OAAO,IAAQ,UAAY,EAAI,KAAK,EAAE,SAAW,EACnD,OAAO,KAGT,GAAI,CACF,IAAM,EAAS,KAAK,MAAM,CAAG,EAC7B,OAAO,GAA0B,EAAQ,CAAO,EAChD,KAAM,CACN,OAAO,MAIX,IAAM,GAA0B,CAC9B,EACA,IACuB,CACvB,IAAM,EAAW,EAAO,SACxB,GAAI,CAAC,EAAe,CAAQ,EAC1B,OAGF,OAAO,EACL,EAAU,EAAU,CAAC,SAAU,aAAc,YAAY,CAAC,EAC1D,CACF,GAGI,GAAoB,CACxB,EACA,IAC0B,CAC1B,GAAI,aAAiB,GAAa,MAAM,QAAQ,EAAM,UAAU,EAC9D,OAAO,EAAM,WAAW,MAAM,EAGhC,GAAI,EAAe,CAAK,EAAG,CACzB,IAAM,EAAY,EAAM,WACxB,GAAI,MAAM,QAAQ,CAAS,EACzB,OAAO,EAAU,MAAM,EAGzB,IAAM,EAAU,EAAM,QACtB,GAAI,IAAS,UAAY,EAAe,CAAO,EAAG,CAChD,IAAM,EAAc,EAAQ,WAC5B,GAAI,MAAM,QAAQ,CAAW,EAC3B,OAAO,EAAY,MAAM,EAE3B,GAAI,IAAgB,OAClB,MAAO,CAAC,CAAW,GAKzB,IAAM,EAAmB,CAAC,EACpB,EAAO,IAAI,IACb,EAAkB,EAEtB,QAAS,EAAQ,EAAG,EAAQ,EAAG,GAAS,EAAG,CACzC,GAAI,CAAC,EAAe,CAAM,EAAG,MAC7B,IAAM,EAAQ,EAAO,MACrB,GAAI,IAAU,QAAa,EAAK,IAAI,CAAK,EAAG,MAC5C,EAAK,IAAI,CAAK,EACd,EAAM,KAAK,CAAK,EAChB,EAAS,EAGX,OAAO,EAAM,OAAS,EAAI,EAAQ,QAG9B,GAAsB,CAAC,IAA2B,CACtD,GAAI,aAAiB,OAAS,OAAO,EAAM,UAAY,SACrD,OAAO,EAAM,QAGf,GAAI,EAAe,CAAK,GAAK,OAAO,EAAM,UAAY,SACpD,OAAO,EAAM,QAGf,OAAO,OAAO,IAAU,SAAW,EAAQ,iBAGtC,SAAS,EAAsB,CACpC,EACA,EAAyC,CAAC,EACjB,CACzB,IAAM,EAAO,GAAoB,EAAQ,IAAI,EAGzC,EAFgB,EAAQ,aAAe,gBAGrC,EAA0C,CAC9C,KAAM,WACN,eAAgB,EAAQ,OAAS,SAAW,UAC9C,EAEI,EACA,EACA,EACA,EACA,EACA,EACA,EAEE,EAAqB,CAAC,IAAyB,CACnD,GAAI,EAAU,oBAAsB,OAClC,EAAoB,EAAU,kBAC9B,EAAQ,kBAAoB,WAE9B,GAAI,EAAU,oBAAsB,OAClC,EAAoB,EAAU,kBAC9B,EAAQ,kBAAoB,WAE9B,GAAI,EAAU,aAAe,OAC3B,EAAa,EAAU,WACvB,EAAQ,WAAa,WAEvB,GAAI,EAAU,YAAc,OAC1B,EAAY,EAAU,UACtB,EAAQ,UAAY,WAEtB,GAAI,EAAU,eAAiB,OAC7B,EAAe,EAAsB,EAAU,YAAY,EAC3D,EAAQ,aAAe,WAEzB,GAAI,EAAU,UAAY,OACxB,EAAU,EAAqB,EAAU,QAAS,CAAI,EACtD,EAAQ,QAAU,WAEpB,GAAI,MAAM,QAAQ,EAAU,UAAU,EACpC,EAAa,EAAU,WAAW,MAAM,EACxC,EAAQ,WAAa,YAInB,EAAmB,CACvB,EACA,IACG,CACH,GAAI,IAAsB,OAAW,CACnC,IAAM,EAAO,EACX,EAAU,EAAQ,CAAC,oBAAqB,YAAa,YAAY,CAAC,EAClE,CACF,EACA,GAAI,IAAS,OACX,EAAoB,EACpB,EAAQ,kBAAoB,EAIhC,GAAI,IAAsB,OAAW,CACnC,IAAM,EAAO,EACX,EAAU,EAAQ,CAChB,oBACA,eACA,MACA,SACF,CAAC,EACD,CACF,EACA,GAAI,IAAS,OACX,EAAoB,EACpB,EAAQ,kBAAoB,EAIhC,GAAI,IAAe,OAAW,CAC5B,IAAM,EACJ,EACE,EAAU,EAAQ,CAAC,aAAc,aAAc,QAAQ,CAAC,EACxD,CACF,GAAK,GAAwB,EAAQ,CAAI,EAC3C,GAAI,IAAS,OACX,EAAa,EACb,EAAQ,WAAa,IAAW,UAAY,UAAY,OAI5D,GAAI,IAAc,OAAW,CAC3B,IAAM,EAAO,EACX,EAAU,EAAQ,CAAC,YAAa,aAAc,QAAS,SAAS,CAAC,EACjE,CACF,EACA,GAAI,IAAS,OACX,EAAY,EACZ,EAAQ,UAAY,EAIxB,GAAI,IAAiB,OAAW,CAC9B,IAAM,EAAO,EACX,EACE,EAAU,EAAQ,CAAC,eAAgB,iBAAkB,YAAY,CAAC,EAClE,CACF,CACF,EACA,GAAI,IAAS,OACX,EAAe,EACf,EAAQ,aAAe,EAI3B,GAAI,IAAY,OAAW,CACzB,IAAM,EAAO,EAAqB,EAAO,QAAS,CAAI,EACtD,GAAI,IAAS,QAAa,EAAO,EAC/B,EAAU,EACV,EAAQ,QAAU,IAKxB,GAAI,aAAiB,GAKnB,GAJA,EAAO,EAAM,KACb,EAAQ,KAAO,QACf,EAAmB,CAAK,EAEpB,IAAS,UAAY,EAAe,EAAM,OAAO,EACnD,EAAiB,EAAM,QAAS,SAAS,EAEtC,QAAI,EAAe,CAAK,EAAG,CAChC,IAAM,EAAgB,GACpB,EAAU,EAAO,CAAC,OAAQ,YAAa,YAAY,CAAC,CACtD,EACA,GAAI,IAAkB,OACpB,EAAO,EACP,EAAQ,KAAO,QACV,QAAI,IAAe,OAAW,CACnC,IAAM,EACJ,EACE,EAAU,EAAO,CAAC,aAAc,aAAc,QAAQ,CAAC,EACvD,CACF,GAAK,GAAwB,EAAO,CAAI,EAC1C,GAAI,IAAe,QAAa,GAAc,IAC5C,EAAO,iBACP,EAAQ,KAAO,OAKnB,GADA,EAAiB,EAAO,OAAO,EAC3B,IAAS,UAAY,EAAe,EAAM,OAAO,EACnD,EAAiB,EAAM,QAAS,SAAS,EAI7C,GAAI,IAAe,OAAW,CAC5B,IAAM,EAAiB,GAAkB,EAAO,CAAI,EACpD,GAAI,IAAmB,OACrB,EAAa,EACb,EAAQ,WAAa,QAIzB,GACE,EAAQ,UAAY,QACpB,EAAqB,EAAQ,QAAS,CAAI,IAAM,OAChD,CACA,IAAM,EAAoB,EAAqB,EAAQ,QAAS,CAAI,EACpE,GAAI,IAAsB,QAAa,EAAoB,EACzD,EAAU,EACV,EAAQ,QAAU,QAItB,IAAM,EAAsB,IAAI,EAC9B,EACA,GAAoB,CAAK,EACzB,OACA,CACE,oBACA,oBACA,aACA,YACA,eACA,UACA,YACF,CACF,EACM,EAAiB,EAAW,iBAChC,EACA,EAAQ,MACV,EAEA,MAAO,CACL,OACA,oBACI,IAAsB,OAAY,CAAE,mBAAkB,EAAI,CAAC,KAC3D,IAAsB,OAAY,CAAE,mBAAkB,EAAI,CAAC,KAC3D,IAAe,OAAY,CAAE,YAAW,EAAI,CAAC,KAC7C,IAAc,OAAY,CAAE,WAAU,EAAI,CAAC,KAC3C,IAAiB,OAAY,CAAE,cAAa,EAAI,CAAC,KACjD,IAAY,OAAY,CAAE,SAAQ,EAAI,CAAC,KACvC,IAAe,OAAY,CAAE,YAAW,EAAI,CAAC,EACjD,SACF,EAGK,IAAM,EAAa,CACxB,WAAW,CAAC,EAAgB,EAA2B,CAAC,EAAY,CAClE,OAAO,EAAW,iBAAiB,EAAO,CAAM,IAAM,aAGxD,gBAAgB,CACd,EACA,EAA2B,CAAC,EACT,CACnB,GAAI,aAAiB,EAAW,CAI9B,GAHuB,IAAI,IACzB,EAAO,gBAAkB,MAAM,KAAK,EAA6B,CACnE,EACmB,IAAI,EAAM,IAAI,EAC/B,MAAO,YAOT,GAJ0B,IAAI,IAC5B,EAAO,mBACL,MAAM,KAAK,EAAiC,CAChD,EACsB,IAAI,EAAM,IAAI,EAClC,MAAO,gBAGT,GAAI,EAAM,aAAe,OACvB,OAAO,GAAqB,EAAM,UAAU,EAG9C,IAAM,EAAsB,GAAkB,EAAM,OAAO,EAC3D,GAAI,EACF,OAAO,EAGT,GAAI,EAAO,mBAAqB,EAAM,QAAS,CAC7C,IAAM,EAAa,EAAO,kBAAkB,EAAM,OAAO,EACzD,GAAI,EACF,OAAO,EAIX,GAAI,EAAO,SACT,OAAO,EAAO,SAGhB,MAAO,gBAGT,IAAM,EACJ,GAAS,OAAO,IAAU,SACrB,EAOD,OAEA,EACJ,EAAc,GAAW,MAAM,GAC/B,EAAc,GAAW,UAAU,GACnC,EAAc,GAAW,IAAI,EACzB,EACJ,EAAgB,GAAW,MAAM,GACjC,EAAgB,GAAW,UAAU,GACrC,EAAgB,GAAW,UAAU,EAEvC,GAAI,OAAO,IAAW,UAAY,EAAO,WAAW,GAAG,EACrD,MAAO,YAGT,GAAI,IAAe,OAAW,CAC5B,GAAI,EAAO,qBACT,OAAO,EAAO,qBAAqB,CAAU,EAG/C,OAAO,GAAqB,CAAU,EAGxC,IAAM,EACJ,OAAO,GAAW,UAAY,SAC1B,GAAkB,EAAU,OAAO,EACnC,OAEN,GAAI,EACF,OAAO,EAGT,GAAI,EAAO,mBAAqB,OAAO,GAAW,UAAY,SAAU,CACtE,IAAM,EAAa,EAAO,kBAAkB,EAAU,OAAO,EAC7D,GAAI,EACF,OAAO,EAIX,OAAO,EAAO,UAAY,iBAG5B,mBAAmB,CACjB,EACA,EACoB,CACpB,GAAI,GAAQ,aAAc,CACxB,IAAM,EAAW,EAAO,aAAa,CAAK,EACpC,EAAa,EAAsB,CAAQ,EACjD,GAAI,IAAe,OACjB,OAAO,EAIX,GAAI,EAAM,eAAiB,OACzB,OAAO,EAAsB,EAAM,YAAY,EAGjD,GACE,EAAM,OAAS,uBACf,EAAM,eAAiB,OAEvB,OAGF,QAGF,gBAAiB,CAAC,IAA4C,CAC5D,GACE,IAAe,QACf,OAAO,MAAM,CAAU,GACvB,CAAC,OAAO,SAAS,CAAU,EAE3B,MAAO,GAGT,OAAO,EAAa,KAGtB,eAAe,CAAC,EAAqC,CACnD,MAAO,CACL,kBAAmB,EAAM,kBACzB,kBAAmB,EAAM,kBACzB,WAAY,EAAM,WAClB,UAAW,EAAM,UACjB,aAAc,EAAM,aACpB,QAAS,EAAM,QACf,WAAY,EAAM,UACpB,GAGF,WAAW,CAAC,EAAkB,EAA4B,CACxD,OAAO,IAAI,EAAU,EAAM,KAAM,EAAM,QAAS,EAAM,QAAS,IAC1D,EAAW,gBAAgB,CAAK,EACnC,QAAS,EAAgB,CAAO,CAClC,CAAC,GAGH,iCACA,oCACF,EChhCA,SAAS,EAAW,CAAC,EAA2C,CAC9D,OAAQ,OACD,SACH,gCACG,UACH,kCACG,UACH,kCACG,OACH,+BACG,SACH,iCAUC,MAAM,UAAyB,CAAU,CACrC,KACA,UACA,SACA,aAET,WAAW,CACT,EACA,EACA,EACA,EAAqC,CAAC,EACtC,CACA,MAAM,GAAY,CAAI,EAAG,EAAS,EAAS,CAAQ,EACnD,KAAK,KAAO,mBACZ,KAAK,KAAO,EACZ,KAAK,UACH,OAAO,EAAS,YAAc,SAAW,EAAS,UAAY,OAChE,KAAK,SAAW,EAAS,SACzB,KAAK,aAAe,EAAS,aAGtB,MAAM,EAAG,CAChB,MAAO,IACF,MAAM,OAAO,EAChB,KAAM,KAAK,KACX,UAAW,KAAK,UAChB,SAAU,KAAK,SACf,aAAc,KAAK,YACrB,EAEJ,CClCA,IAAM,GAAkE,CACtE,WACA,aACA,WACF,EAEA,SAAS,CAAY,CAAC,EAAoC,CACxD,GAAI,OAAO,IAAU,SAAU,OAC/B,IAAM,EAAU,EAAM,KAAK,EAC3B,OAAO,EAAQ,OAAS,EAAI,EAAU,OAGxC,SAAS,EAAgB,CAAC,EAAoC,CAC5D,GAAI,OAAO,IAAU,UAAY,CAAC,OAAO,SAAS,CAAK,EAAG,OAC1D,GAAI,GAAS,GAAK,EAAQ,IAAK,OAC/B,OAAO,EAGT,SAAS,EAAe,CACtB,EAC0B,CAC1B,IAAM,EAAiC,CAAC,EACxC,QAAW,KAAU,EAAS,CAC5B,IAAM,EAAM,EAAa,EAAO,GAAG,EAC7B,EAAa,GAAiB,EAAO,UAAU,EACrD,GAAI,CAAC,GAAO,IAAe,OAAW,SACtC,EAAK,KAAK,CAAE,MAAK,YAAW,CAAC,EAE/B,OAAO,EAGT,SAAS,EAAW,CAClB,EACA,EACA,EACQ,CACR,IAAM,EAAU,EACb,IAAI,CAAC,IAAU,CACd,IAAM,EAAQ,EAAQ,GACtB,OAAO,OAAO,IAAU,SAAW,EAAQ,GAC5C,EACA,KAAK,GAAG,EACX,MAAO,GAAG,MAAS,IAMrB,SAAS,EAAM,CAAC,EAAuB,CACrC,IAAI,EAAO,WACX,QAAS,EAAQ,EAAG,EAAQ,EAAM,OAAQ,GAAS,EACjD,GAAQ,EAAM,WAAW,CAAK,EAC9B,EAAQ,EAAO,WAAgB,EAEjC,OAAO,IAAS,EAGlB,SAAS,EAAgB,CACvB,EACA,EACoB,CACpB,IAAI,EAAS,EACb,QAAW,KAAU,EAEnB,GADA,GAAU,EAAO,WACb,EAAa,EACf,OAAO,EAAO,IAGlB,OAGK,SAAS,CAAwB,CACtC,EACA,EACA,EACoB,CACpB,IAAM,EAAU,GAAgB,EAAO,OAAO,EACxC,EACJ,EAAa,EAAO,UAAU,GAAK,EAAa,CAAW,EAE7D,GAAI,EAAQ,SAAW,EACrB,OAAO,EAGT,IAAM,EAAO,EAAa,EAAO,IAAI,GAAK,kBACpC,EAAe,EAAO,cAAgB,GACtC,EAAY,GAAY,EAAS,EAAc,CAAI,EACnD,EAAa,GAAO,CAAS,EAAI,IACvC,OAAO,GAAiB,EAAS,CAAU,GAAK,EAG3C,SAAS,CAAmB,CACjC,EACmB,CACnB,OAAO,GAAgB,EAAO,OAAO,EAAE,IAAI,CAAC,IAAW,EAAO,GAAG,EC3FnE,SAAS,CAAY,CAAC,EAAoC,CACxD,GAAI,OAAO,IAAU,SAAU,OAC/B,IAAM,EAAU,EAAM,KAAK,EAC3B,OAAO,EAAQ,OAAS,EAAI,EAAU,OAGxC,SAAS,CAAgB,CAAC,EAAgD,CACxE,GAAI,CAAC,MAAM,QAAQ,CAAK,EAAG,MAAO,CAAC,EACnC,OAAO,EACJ,IAAI,CAAC,IAAQ,EAAa,CAAG,CAAC,EAC9B,OAAO,CAAC,IAAuB,QAAQ,CAAG,CAAC,EAGhD,SAAS,CAAU,CAAC,EAAqC,CACvD,IAAM,EAAiB,CAAC,EAClB,EAAO,IAAI,IACjB,QAAW,KAAS,EAAQ,CAC1B,IAAM,EAAa,EAAa,CAAK,EACrC,GAAI,CAAC,GAAc,EAAK,IAAI,CAAU,EAAG,SACzC,EAAK,IAAI,CAAU,EACnB,EAAK,KAAK,CAAU,EAEtB,OAAO,EAGT,SAAS,EAAsB,CAAC,EAAwC,CACtE,OAAO,EAAa,EAAQ,UAAU,GAAK,UAGtC,SAAS,CAAuB,CACrC,EACa,CACb,IAAM,EAAY,EAAa,EAAQ,SAAS,GAAK,UAC/C,EAAc,EAAW,CAC7B,EACA,GAAG,EAAiB,EAAQ,WAAW,CACzC,CAAC,EAED,MAAO,MACC,kBAAiB,EAAG,CACxB,MAAO,CAAE,IAAK,CAAU,QAEpB,mBAAkB,EAAG,CACzB,OAAO,EAEX,EAGK,SAAS,CAA4B,CAC1C,EACa,CACb,IAAM,EACJ,OAAO,EAAQ,aAAe,UAAY,EAAQ,YAAc,EAC5D,KAAK,MAAM,EAAQ,UAAU,EAC7B,MAEA,EAAoB,EAAa,EAAQ,UAAU,SAAS,EAC5D,EAAsB,EAAiB,EAAQ,UAAU,WAAW,EACtE,EAEJ,eAAe,CAAI,CAAC,EAAsD,CACxE,IAAM,EAAM,KAAK,IAAI,EACrB,GAAI,GAAS,EAAM,EAAM,UACvB,OAAO,EAAM,MAGf,IAAM,EAAS,MAAM,EAAQ,SAAS,WAAW,CAAO,EAClD,EACJ,EAAa,EAAO,SAAS,GAC7B,GACA,GAAuB,CAAO,EAE1B,EAAc,EAAW,CAC7B,EACA,GAAG,EAAiB,EAAO,WAAW,EACtC,GAAG,CACL,CAAC,EAEK,EAAoB,CACxB,YACA,cACA,YAAa,KAAK,IAAI,CACxB,EAKA,OAJA,EAAQ,CACN,MAAO,EACP,UAAW,KAAK,IAAI,EAAI,CAC1B,EACO,EAGT,MAAO,MACC,kBAAiB,CAAC,EAAS,CAE/B,MAAO,CAAE,KADK,MAAM,EAAK,CAAO,GACZ,SAAU,QAE1B,mBAAkB,CAAC,EAAS,CAChC,IAAM,EAAQ,MAAM,EAAK,CAAO,EAChC,OAAO,EAAM,aAAe,CAAC,EAAM,SAAS,EAEhD,EAGK,SAAS,EAAwB,CACtC,EACA,EACa,CACb,MAAO,MACC,kBAAiB,CAAC,EAAS,CAC/B,IAAM,EAAO,MAAM,EAAa,kBAAkB,CAAO,EAEzD,MAAO,CACL,IAFe,EAAyB,EAAS,EAAQ,EAAK,GAAG,GAEhD,EAAK,GACxB,QAEI,mBAAkB,CAAC,EAAS,CAChC,IAAM,EAAc,MAAM,EAAa,kBAAkB,CAAO,EAC1D,EAAc,EAAa,mBAC7B,MAAM,EAAa,mBAAmB,CAAO,EAC7C,CAAC,EAAY,GAAG,EACd,EAAW,EACf,EACA,EACA,EAAY,GACd,EACM,EAAc,EAAoB,CAAM,EAE9C,OAAO,EAAW,CAChB,GAAI,EAAW,CAAC,CAAQ,EAAI,CAAC,EAC7B,EAAY,IACZ,GAAI,GAAe,CAAC,EACpB,GAAG,CACL,CAAC,EAEL,EC3IK,SAAS,EAAuB,CACrC,EACa,CAWb,OAAO,EAA6B,CAClC,SAXoC,MAC9B,WAAU,CAAC,EAAS,CACxB,OAAO,EAAQ,OAAO,YAAY,IAC7B,KACC,EAAQ,SAAW,CAAE,SAAU,EAAQ,QAAS,EAAI,CAAC,KACrD,EAAQ,OAAS,CAAE,OAAQ,EAAQ,MAAO,EAAI,CAAC,CACrD,CAAC,EAEL,EAIE,WAAY,EAAQ,WACpB,SAAU,CACR,UAAW,EAAQ,kBACnB,YAAa,EAAQ,mBACvB,CACF,CAAC,EChCH,SAAS,CAAS,CAAC,EAAoC,CACrD,GAAI,OAAO,IAAU,SAAU,OAC/B,IAAM,EAAU,EAAM,KAAK,EAC3B,OAAO,EAAQ,OAAS,EAAI,EAAU,OAGxC,SAAS,EAAU,CACjB,EACA,EACoB,CACpB,OAAO,EAAU,EAAI,EAAI,EAG3B,SAAS,EAAS,CAAC,EAAyB,EAA6B,CACvE,GAAI,CAAC,EAAK,MAAO,CAAC,EAClB,OAAO,EACJ,MAAM,CAAS,EACf,IAAI,CAAC,IAAS,EAAU,CAAI,CAAC,EAC7B,OAAO,CAAC,IAAyB,QAAQ,CAAI,CAAC,EAG5C,SAAS,EAAoB,CAClC,EAAiC,CAAC,EACrB,CACb,IAAM,EACJ,EAAQ,MACN,OAAO,QAAY,IAAc,QAAQ,IAAM,CAAC,GAI9C,EAAY,EAAU,EAAQ,SAAS,GAAK,IAC5C,EAAe,EAAQ,cAAgB,kBACvC,EAAiB,EAAQ,gBAAkB,oBAE3C,EACJ,GAAW,EAAW,CAAY,GAClC,EAAU,EAAQ,iBAAiB,GACnC,UACI,EAAc,CAClB,EACA,GAAG,GAAU,GAAW,EAAW,CAAc,EAAG,CAAS,EAC7D,GAAI,EAAQ,qBAAuB,CAAC,CACtC,EAEA,OAAO,EAAwB,CAC7B,YACA,aACF,CAAC,ECjCI,SAAS,EAA6B,CAC3C,EACa,CAYb,OAAO,EAA6B,CAClC,SAZoC,MAC9B,WAAU,CAAC,EAAS,CACxB,OAAO,EAAQ,OAAO,YAAY,IAC7B,KACC,EAAQ,UAAY,CAAE,UAAW,EAAQ,SAAU,EAAI,CAAC,KACxD,EAAQ,QAAU,CAAE,QAAS,EAAQ,OAAQ,EAAI,CAAC,KAClD,EAAQ,UAAY,CAAE,UAAW,EAAQ,SAAU,EAAI,CAAC,CAC9D,CAAC,EAEL,EAIE,WAAY,EAAQ,WACpB,SAAU,CACR,UAAW,EAAQ,kBACnB,YAAa,EAAQ,mBACvB,CACF,CAAC,EC3BH,SAAS,CAAU,CAAC,EAA0D,CAC5E,OAAO,OAAO,IAAU,WAG1B,SAAS,EAAe,CAAC,EAAoC,CAC3D,GAAI,OAAO,IAAU,SAAU,OAC/B,IAAM,EAAU,EAAM,KAAK,EAC3B,OAAO,EAAQ,OAAS,EAAI,EAAU,OAGjC,SAAS,CAAgB,CAC9B,EACA,EACA,EACW,CACX,IAAM,EAAQ,EAAO,OAAO,GAC5B,GAAI,EAAO,OAAO,EAElB,GAAI,EAAK,WAAW,WAAW,EAAG,CAChC,IAAM,EAAW,EAAO,OAAO,cAC/B,GAAI,EAAU,OAAO,EAGvB,OAAO,EAGF,SAAS,EAAyB,CACvC,EACA,EAAoC,CAAC,EACF,CACnC,IAAM,EAA6C,CAAC,EAEpD,GAAI,CAAC,GAAU,OAAO,IAAW,SAC/B,MAAO,CACL,MAAO,GACP,OAAQ,CACN,CACE,QAAS,uCACT,KAAM,4BACN,KAAM,0CACR,CACF,CACF,EAGF,GAAI,CAAC,EAAO,UAAY,OAAO,EAAO,WAAa,SACjD,EAAO,KAAK,CACV,QAAS,mCACT,KAAM,gCACN,KAAM,WACN,KAAM,gDACR,CAAC,EACI,KACL,GAAI,CAAC,EAAW,EAAO,SAAS,OAAO,EACrC,EAAO,KAAK,CACV,QAAS,sCACT,KAAM,wCACN,KAAM,kBACR,CAAC,EAEH,GAAI,CAAC,EAAW,EAAO,SAAS,OAAO,EACrC,EAAO,KAAK,CACV,QAAS,sCACT,KAAM,wCACN,KAAM,kBACR,CAAC,EAEH,GAAI,CAAC,EAAW,EAAO,SAAS,IAAI,EAClC,EAAO,KAAK,CACV,QAAS,mCACT,KAAM,qCACN,KAAM,eACR,CAAC,EAIL,GAAI,CAAC,EAAO,QAAU,OAAO,EAAO,SAAW,SAC7C,EAAO,KAAK,CACV,QAAS,uCACT,KAAM,4BACN,KAAM,SACN,KAAM,wDACR,CAAC,EACI,KACL,IAAM,EAAU,OAAO,QAAQ,EAAO,MAAM,EAC5C,GAAI,EAAQ,SAAW,EACrB,EAAO,KAAK,CACV,QAAS,uCACT,KAAM,+BACN,KAAM,SACN,KAAM,qCACR,CAAC,EAGH,QAAY,EAAM,KAAS,EAAS,CAElC,GAAI,CADmB,GAAgB,CAAI,EAEzC,EAAO,KAAK,CACV,QAAS,wCACT,KAAM,oCACN,KAAM,QACR,CAAC,EAGH,GACE,IAAS,SACT,IAAS,WACT,IAAS,gBACT,IAAS,OAET,EAAO,KAAK,CACV,QAAS,2BAA2B,OAAO,CAAI,IAC/C,KAAM,oCACN,KAAM,UAAU,GAClB,CAAC,GAKP,IAAM,EAAW,EAAO,UAAY,SAC9B,EAAe,EAAO,cAAgB,SAC5C,GACE,IAAa,QACb,IAAiB,aACjB,EAAO,8BAAgC,GAEvC,EAAO,KAAK,CACV,QACE,mEACF,KAAM,wCACN,KAAM,eACN,KAAM,iEACR,CAAC,EAGH,GAAI,MAAM,QAAQ,EAAO,SAAS,EAAG,CACnC,GAAI,EAAO,UAAU,SAAW,EAC9B,EAAO,KAAK,CACV,QAAS,4CACT,KAAM,mCACN,KAAM,WACR,CAAC,EAGH,QAAS,EAAQ,EAAG,EAAQ,EAAO,UAAU,OAAQ,GAAS,EAAG,CAC/D,IAAM,EAAM,EAAO,UAAU,GAC7B,GAAI,CAAC,GAAgB,CAAG,EACtB,EAAO,KAAK,CACV,QAAS,qCACT,KAAM,sCACN,KAAM,aAAa,IACrB,CAAC,GAKP,GAAI,EAAQ,YAAc,CAAC,EAAQ,mBAAoB,CACrD,IAAM,EAAS,EAAiB,EAAQ,KAAM,cAAc,EACtD,EAAW,EAAiB,EAAQ,OAAQ,cAAc,EAEhE,GAAI,IAAW,QACb,EAAO,KAAK,CACV,QACE,+EACF,KAAM,uCACN,KAAM,YACN,KAAM,oCACR,CAAC,EAGH,GAAI,IAAa,QACf,EAAO,KAAK,CACV,QACE,iFACF,KAAM,yCACN,KAAM,cACN,KAAM,oCACR,CAAC,EAIL,MAAO,CACL,MAAO,EAAO,SAAW,EACzB,QACF,EAGK,SAAS,EAAuB,CACrC,EACA,EAAoC,CAAC,EAC/B,CACN,IAAM,EAAS,GAA0B,EAAQ,CAAO,EACxD,GAAI,EAAO,MAAO,OAElB,IAAM,EAAQ,EAAO,OAAO,GAC5B,GAAI,CAAC,EACH,MAAM,IAAI,EACR,SACA,uCACA,CACE,KAAM,6BACN,OAAQ,EAAO,MACjB,CACF,EAGF,MAAM,IAAI,EACR,SACA,EAAM,QACN,CACE,KAAM,EAAM,KACZ,KAAM,EAAM,KACZ,KAAM,EAAM,KACZ,OAAQ,EAAO,MACjB,EACA,CACE,UAAW,EAAM,IACnB,CACF,ECpHF,SAAS,CAAe,CAAC,EAA0C,CACjE,IAAM,EAAQ,aAAkB,WAAa,EAAS,IAAI,WAAW,CAAM,EACrE,EACJ,OAAO,WAAe,IAEhB,WAOA,OACF,OAIN,OAHe,EACX,EAAY,KAAK,CAAK,EAAE,SAAS,QAAQ,EACzC,KAAK,OAAO,aAAa,GAAG,CAAK,CAAC,GACxB,QAAQ,MAAO,GAAG,EAAE,QAAQ,MAAO,GAAG,EAAE,QAAQ,OAAQ,EAAE,EAG1E,SAAS,CAAe,CAAC,EAA2B,CAClD,IAAM,EAAa,EAAM,QAAQ,KAAM,GAAG,EAAE,QAAQ,KAAM,GAAG,EACvD,EACJ,EAAW,OAAS,IAAM,EACtB,EACA,GAAG,IAAa,IAAI,OAAO,EAAK,EAAW,OAAS,CAAE,IAEtD,EACJ,OAAO,WAAe,IAEhB,WAGA,OACF,OAEN,GAAI,EACF,OAAO,IAAI,WAAW,EAAY,KAAK,EAAQ,QAAQ,CAAC,EAG1D,IAAM,EAAS,KAAK,CAAM,EACpB,EAAQ,IAAI,WAAW,EAAO,MAAM,EAC1C,QAAS,EAAQ,EAAG,EAAQ,EAAO,OAAQ,GAAS,EAClD,EAAM,GAAS,EAAO,WAAW,CAAK,EAExC,OAAO,EAGT,SAAS,EAAY,CACnB,EACA,EACY,CACZ,GAAI,aAAiB,WAAY,OAAO,EACxC,GAAI,aAAiB,YAAa,OAAO,IAAI,WAAW,CAAK,EAC7D,GAAI,IAAa,YAAa,OAAO,EAAgB,CAAK,EAC1D,OAAO,IAAI,YAAY,EAAE,OAAO,CAAK,EAGvC,SAAS,EAAK,CAAC,EAA0C,CACvD,IAAM,EAAQ,aAAkB,WAAa,EAAS,IAAI,WAAW,CAAM,EAC3E,OAAO,MAAM,KAAK,CAAK,EACpB,IAAI,CAAC,IAAS,EAAK,SAAS,EAAE,EAAE,SAAS,EAAG,GAAG,CAAC,EAChD,KAAK,EAAE,EAGZ,SAAS,CAAoB,CAAC,EAAgC,CAC5D,IAAM,EAAO,IAAI,WAAW,EAAM,UAAU,EAE5C,OADA,EAAK,IAAI,CAAK,EACP,EAAK,OAGd,SAAS,EAAa,CAAC,EAAoC,CACzD,IAAM,EAAS,KAAK,MAAM,CAAU,EACpC,GACE,CAAC,GACD,OAAO,IAAW,UAClB,OAAO,EAAO,IAAM,UACpB,OAAO,EAAO,MAAQ,UACtB,OAAO,EAAO,MAAQ,UACtB,OAAO,EAAO,KAAO,UACrB,OAAO,EAAO,MAAQ,UACtB,OAAO,EAAO,KAAO,SAErB,MAAU,MAAM,6BAA6B,EAG/C,OAAO,EAGT,SAAS,EAAkB,CAAC,EAAwC,CAClE,GAAI,OAAO,IAAU,SAAU,OAAO,EACtC,OAAO,KAAK,UAAU,CAAK,EAGtB,SAAS,EAAgB,CAAC,EAAyC,CACxE,GAAI,CAAC,GAAS,OAAO,IAAU,SAAU,MAAO,GAChD,IAAM,EAAY,EAClB,OACE,OAAO,EAAU,IAAM,UACvB,OAAO,EAAU,MAAQ,UACzB,OAAO,EAAU,MAAQ,UACzB,OAAO,EAAU,KAAO,UACxB,OAAO,EAAU,MAAQ,UACzB,OAAO,EAAU,KAAO,SAIrB,SAAS,EAAqB,CAAC,EAAuB,CAC3D,IAAM,EAAU,OAAO,GAAS,EAAE,EAAE,KAAK,EACzC,GAAI,EAAQ,SAAW,EAAG,MAAO,GAEjC,IAAM,EAAiB,EAAQ,WAAW,GAAG,EACvC,EAAa,EAAQ,QAAQ,MAAO,EAAE,EAC5C,OAAO,EAAiB,IAAI,IAAe,EAGtC,SAAS,CAAmB,CACjC,EAAe,EACf,EAAa,EACc,CAC3B,MAAO,CAAC,IAA0B,CAChC,IAAM,EAAa,OAAO,GAAS,EAAE,EACrC,GAAI,EAAW,QAAU,EAAe,EACtC,MAAO,IAAI,OAAO,KAAK,IAAI,EAAG,EAAW,MAAM,CAAC,EAElD,IAAM,EAAQ,EAAW,MAAM,EAAG,CAAY,EACxC,EAAM,EAAW,MAAM,CAAC,CAAU,EACxC,MAAO,GAAG,IAAQ,IAAI,OAAO,EAAW,OAAS,EAAe,CAAU,IAAI,KAa3E,SAAS,EAA+B,CAC7C,EACqB,CACrB,IAAM,EAAY,EAAQ,WAAa,UACjC,EAAc,EAAQ,aAAe,YACrC,EAAkB,EAAQ,iBAAmB,EAC7C,EAAc,IAAI,IAClB,EAAe,IAAI,IAEnB,EAAe,CAAC,IAAoC,CACxD,IAAM,EAAS,EAAY,IAAI,CAAG,EAClC,GAAI,EAAQ,OAAO,EAEnB,IAAM,EAAM,EAAQ,KAAK,GACzB,GAAI,CAAC,EACH,MAAU,MAAM,8BAA8B,GAAK,EAErD,IAAM,EAAQ,GAAa,EAAK,CAAW,EACrC,EAAU,OAAO,OAAO,UAC5B,MACA,EAAqB,CAAK,EAC1B,UACA,GACA,CAAC,UAAW,SAAS,CACvB,EAEA,OADA,EAAY,IAAI,EAAK,CAAO,EACrB,GAGH,EAAgB,CAAC,IAAoC,CACzD,IAAM,EAAS,EAAa,IAAI,CAAG,EACnC,GAAI,EAAQ,OAAO,EAEnB,IAAM,EAAM,EAAQ,WAAW,IAAQ,EAAQ,KAAK,GACpD,GAAI,CAAC,EACH,MAAU,MAAM,wBAAwB,GAAK,EAE/C,IAAM,EAAQ,GAAa,EAAK,CAAe,EACzC,EAAU,OAAO,OAAO,UAC5B,MACA,EAAqB,CAAK,EAC1B,CAAE,KAAM,OAAQ,KAAM,SAAU,EAChC,GACA,CAAC,MAAM,CACT,EAEA,OADA,EAAa,IAAI,EAAK,CAAO,EACtB,GAGT,MAAO,MACC,QAAO,CAAC,EAAO,CACnB,IAAM,EAAM,EAAM,KAAO,EAAQ,UAC3B,EAAM,MAAM,EAAa,CAAG,EAC5B,EAAK,OAAO,gBAAgB,IAAI,WAAW,EAAE,CAAC,EAC9C,EAAiB,IAAI,YAAY,EAAE,OACvC,KAAK,UAAU,EAAM,KAAO,CAAC,CAAC,CAChC,EACM,EAAY,IAAI,YAAY,EAAE,OAAO,EAAM,KAAK,EAEhD,EAAY,MAAM,OAAO,OAAO,QACpC,CACE,KAAM,UACN,GAAI,EAAqB,CAAE,EAC3B,eAAgB,EAAqB,CAAc,EACnD,UAAW,GACb,EACA,EACA,EAAqB,CAAS,CAChC,EAEM,EAAiB,IAAI,WAAW,CAAS,EACzC,EAAM,EAAe,MAAM,EAAe,OAAS,EAAE,EACrD,EAAa,EAAe,MAAM,EAAG,EAAe,OAAS,EAAE,EAErE,MAAO,CACL,WAAY,CACV,EAAG,EACH,IAAK,EACL,MACA,GAAI,EAAgB,CAAE,EACtB,IAAK,EAAgB,CAAG,EACxB,GAAI,EAAgB,CAAU,CAChC,EACA,KACF,QAGI,QAAO,CAAC,EAAO,CACnB,IAAM,EAAW,GAAc,EAAM,UAAU,EACzC,EACJ,EAAM,eAAiB,EAAM,cAAc,OAAS,EAChD,EAAM,cACN,CAAC,EAAS,GAAG,EACb,EAAK,EAAgB,EAAS,EAAE,EAChC,EAAM,EAAgB,EAAS,GAAG,EAClC,EAAa,EAAgB,EAAS,EAAE,EAExC,EAAY,IAAI,WAAW,EAAW,OAAS,EAAI,MAAM,EAC/D,EAAU,IAAI,EAAY,CAAC,EAC3B,EAAU,IAAI,EAAK,EAAW,MAAM,EAEpC,IAAM,EAAiB,IAAI,YAAY,EAAE,OACvC,KAAK,UAAU,EAAM,KAAO,CAAC,CAAC,CAChC,EAEI,EACJ,QAAW,KAAO,EAChB,GAAI,CACF,IAAM,EAAM,MAAM,EAAa,CAAG,EAC5B,EAAY,MAAM,OAAO,OAAO,QACpC,CACE,KAAM,UACN,GAAI,EAAqB,CAAE,EAC3B,eAAgB,EAAqB,CAAc,EACnD,UAAW,GACb,EACA,EACA,EAAqB,CAAS,CAChC,EACA,OAAO,IAAI,YAAY,EAAE,OAAO,IAAI,WAAW,CAAS,CAAC,EACzD,MAAO,EAAO,CACd,EAAY,EAIhB,MAAU,MACR,iCAAiC,aAAqB,MAAQ,EAAU,QAAU,OAAO,GAAa,SAAS,GACjH,QAGI,KAAI,CAAC,EAAO,CAChB,IAAM,EAAM,EAAM,KAAO,EAAQ,UAC3B,EAAM,MAAM,EAAc,CAAG,EAC7B,EAAY,MAAM,OAAO,OAAO,KACpC,OACA,EACA,EAAqB,IAAI,YAAY,EAAE,OAAO,EAAM,KAAK,CAAC,CAC5D,EACA,OAAO,GAAM,CAAS,GAGxB,IAAI,CAAC,EAAO,CACV,OAAO,EAAoB,EAAE,EAAM,KAAK,EAE5C,EAGK,SAAS,EAA6B,EAAwB,CACnE,MAAO,CACL,OAAO,CAAC,EAAO,CACb,MAAO,CACL,WAAY,KAAK,UAAU,CACzB,EAAG,EACH,IAAK,OACL,IAAK,OACL,GAAI,GACJ,IAAK,GACL,GAAI,EAAM,KACZ,CAA0B,CAC5B,GAEF,OAAO,CAAC,EAAO,CACb,GAAI,CAEF,OADe,GAAc,EAAM,UAAU,EAC/B,GACd,KAAM,CACN,OAAO,EAAM,aAGjB,IAAI,CAAC,EAAO,CACV,IAAM,EAAa,GAAsB,EAAM,KAAK,EACpD,OAAO,EAAgB,IAAI,YAAY,EAAE,OAAO,CAAU,CAAC,GAE7D,IAAI,CAAC,EAAO,CACV,OAAO,EAAoB,EAAE,EAAM,KAAK,EAE5C,EAGK,SAAS,EAA0B,CACxC,EACQ,CACR,OAAO,GAAmB,CAAU,EC5b/B,IAAK,IAAL,CAAK,IAAL,CACL,QAAQ,QACR,OAAO,OACP,OAAO,OACP,QAAQ,UAJE,SAuCZ,IAAM,GAAyB,CAC7B,KACA,OACA,QACA,cACA,YACA,SACA,SACA,SACA,YACA,gBACA,OACA,QACA,WACA,UACA,UACA,UACA,MACF,EAEA,SAAS,EAAqB,CAAC,EAAyB,CACtD,IAAM,EAAM,EAAO,YAAY,EAC/B,OAAO,GAAuB,KAAK,CAAC,IAClC,EAAI,SAAS,EAAU,YAAY,CAAC,CACtC,EAGF,SAAS,EAAe,CAAC,EAAuB,CAC9C,IAAM,EAAU,EAAM,KAAK,EAC3B,GAAI,EAAQ,QAAU,EAAG,MA9BN,MA+BnB,GAAI,EAAQ,SAAS,GAAG,EAAG,CACzB,IAAO,EAAO,GAAU,EAAQ,MAAM,GAAG,EAEzC,MAAO,GADM,EAAM,MAAM,EAAG,CAAC,IACZ,IAAI,OAAO,KAAK,IAAI,EAAG,EAAM,OAAS,CAAC,CAAC,KAAK,IAEhE,IAAM,EAAO,EAAQ,MAAM,EAAG,CAAC,EACzB,EAAO,EAAQ,MAAM,EAAE,EAC7B,MAAO,GAAG,IAAO,IAAI,OAAO,KAAK,IAAI,EAAG,EAAQ,OAAS,CAAC,CAAC,IAAI,IAGjE,SAAS,CAAoB,CAAC,EAAa,EAAyB,CAClE,GAAI,IAAU,QAAa,IAAU,KAAM,OAAO,EAElD,GAAI,GAAsB,CAAG,EAAG,CAC9B,GAAI,OAAO,IAAU,SAAU,OAAO,GAAgB,CAAK,EAC3D,GAAI,OAAO,IAAU,UAAY,OAAO,IAAU,UAChD,MA/Ce,MAiDjB,GAAI,MAAM,QAAQ,CAAK,EAAG,MAlDP,aAmDnB,GAAI,OAAO,IAAU,SAAU,MAnDZ,aAsDrB,GAAI,MAAM,QAAQ,CAAK,EACrB,OAAO,EAAM,IAAI,CAAC,IAAU,EAAqB,EAAK,CAAK,CAAC,EAG9D,GAAI,OAAO,IAAU,SAAU,CAC7B,IAAM,EAAgC,CAAC,EACvC,QAAY,EAAU,KAAe,OAAO,QAAQ,CAAK,EACvD,EAAK,GAAY,EAAqB,EAAU,CAAU,EAE5D,OAAO,EAGT,OAAO,EAGT,SAAS,EAAkB,CAAC,EAAiC,CAC3D,IAAM,EAAwB,CAAC,EAC/B,QAAY,EAAK,KAAU,OAAO,QAAQ,CAAO,EAC/C,EAAU,GAAO,EAAqB,EAAK,CAAK,EAElD,OAAO,EAGF,MAAM,CAAO,CACV,OACA,QAER,WAAW,CAAC,EAAsB,CAAC,EAAG,EAAgC,CAAC,EAAG,CACxE,KAAK,QAAU,EACf,KAAK,OAAS,CACZ,MAAO,OACP,cAAe,GACf,WAAY,GACZ,aAAc,MACX,CACL,EAGM,SAAS,CAAC,EAA0B,CAC1C,IAAM,EAAS,CACb,QACA,OACA,OACA,OACF,EACA,OAAO,EAAO,QAAQ,CAAK,GAAK,EAAO,QAAQ,KAAK,OAAO,KAAK,EAG1D,aAAa,CAAC,EAAyB,CAC7C,IAAM,EAAU,GAAmB,EAAM,OAAO,EAEhD,GAAI,KAAK,OAAO,WACd,OAAO,KAAK,UAAU,CACpB,MAAO,EAAM,MACb,QAAS,EAAM,QACf,UAAW,EAAM,UAAU,YAAY,EACvC,aACI,EAAM,OAAS,CACjB,MAAO,CACL,KAAM,EAAM,MAAM,KAClB,QAAS,EAAM,MAAM,QACrB,MAAO,EAAM,MAAM,KACrB,CACF,KACI,EAAM,UAAY,CAAE,SAAU,EAAM,QAAS,CACnD,CAAC,EAGH,IAAM,EAAY,EAAM,UAAU,YAAY,EACxC,EAAQ,KAAK,OAAO,aACtB,KAAK,cAAc,EAAM,KAAK,EAC9B,EAAM,MACJ,EACJ,OAAO,KAAK,CAAO,EAAE,OAAS,EAC1B,KAAK,OAAO,QAAQ,CAAO,EACxB,IAAI,EAAE,EAAG,KAAO,GAAG,KAAK,GAAG,EAC3B,KAAK,IAAI,KACZ,GAEF,EAAU,GAAG,KAAa,IAAQ,MAAe,EAAM,UAE3D,GAAI,EAAM,WAAa,OACrB,GAAW,KAAK,EAAM,cAGxB,GAAI,EAAM,MACR,GAAW;AAAA,EAAK,EAAM,MAAM,QAG9B,OAAO,EAGD,aAAa,CAAC,EAAyB,CAC7C,GAAI,CAAC,KAAK,OAAO,aAAc,OAAO,EAStC,MAAO,GAPQ,EACZ,SAAiB,YACjB,QAAgB,YAChB,QAAgB,YAChB,SAAiB,UACpB,EAEiB,KAAS,WAGpB,QAAQ,CAAC,EAAuB,CACtC,GAAI,CAAC,KAAK,UAAU,EAAM,KAAK,EAAG,OAElC,IAAM,EAAU,KAAK,cAAc,CAAK,EAExC,GAAI,KAAK,OAAO,eAEZ,EAAM,QAAU,QACZ,QAAQ,MACR,EAAM,QAAU,OACd,QAAQ,KACR,QAAQ,KACV,CAAO,EAIf,GAAI,KAAK,OAAO,YAAc,KAAK,OAAO,SAAU,EAKtD,KAAK,CAAC,EAAiB,EAAsB,CAAC,EAAS,CACrD,KAAK,SAAS,CACZ,MAAO,QACP,UACA,UAAW,IAAI,KACf,QAAS,IAAK,KAAK,WAAY,CAAQ,CACzC,CAAC,EAGH,IAAI,CAAC,EAAiB,EAAsB,CAAC,EAAS,CACpD,KAAK,SAAS,CACZ,MAAO,OACP,UACA,UAAW,IAAI,KACf,QAAS,IAAK,KAAK,WAAY,CAAQ,CACzC,CAAC,EAGH,IAAI,CAAC,EAAiB,EAAsB,CAAC,EAAG,EAAqB,CACnE,KAAK,SAAS,CACZ,MAAO,OACP,UACA,UAAW,IAAI,KACf,QAAS,IAAK,KAAK,WAAY,CAAQ,EACvC,OACF,CAAC,EAGH,KAAK,CAAC,EAAiB,EAAsB,CAAC,EAAG,EAAqB,CACpE,KAAK,SAAS,CACZ,MAAO,QACP,UACA,UAAW,IAAI,KACf,QAAS,IAAK,KAAK,WAAY,CAAQ,EACvC,OACF,CAAC,EAGH,KAAK,CAAC,EAA6B,CACjC,OAAO,IAAI,EAAO,IAAK,KAAK,WAAY,CAAQ,EAAG,KAAK,MAAM,EAGhE,IAAI,CAAC,EAA2B,CAC9B,IAAM,EAAQ,KAAK,IAAI,EACvB,MAAO,IAAM,CACX,IAAM,EAAW,KAAK,IAAI,EAAI,EAC9B,KAAK,KAAK,GAAG,cAAmB,CAAE,UAAS,CAAC,QAI1C,QAAU,CACd,EACA,EACA,EAAsB,CAAC,EACX,CACZ,IAAM,EAAQ,KAAK,IAAI,EACjB,EAAmB,IAAK,EAAS,WAAU,EAEjD,KAAK,MAAM,YAAY,IAAa,CAAgB,EAEpD,GAAI,CACF,IAAM,EAAS,MAAM,EAAG,EAClB,EAAW,KAAK,IAAI,EAAI,EAG9B,OADA,KAAK,KAAK,aAAa,IAAa,IAAK,EAAkB,UAAS,CAAC,EAC9D,EACP,MAAO,EAAO,CACd,IAAM,EAAW,KAAK,IAAI,EAAI,EAO9B,MALA,KAAK,MACH,UAAU,IACV,IAAK,EAAkB,UAAS,EAChC,aAAiB,MAAQ,EAAY,MAAM,OAAO,CAAK,CAAC,CAC1D,EACM,GAGZ,CAGA,IAAI,EAEG,SAAS,EAAY,CAC1B,EACA,EACQ,CACR,OAAO,IAAI,EAAO,EAAS,CAAM,EAG5B,SAAS,CAAS,EAAW,CAClC,GAAI,CAAC,EACH,EAAe,GAAa,EAE9B,OAAO,EAGF,SAAS,EAAe,CAAC,EAAsB,CACpD,EAAe,EAIV,IAAM,GAAS,CACpB,MAAO,CAAC,EAAiB,IACvB,EAAU,EAAE,MAAM,EAAS,CAAO,EACpC,KAAM,CAAC,EAAiB,IACtB,EAAU,EAAE,KAAK,EAAS,CAAO,EACnC,KAAM,CAAC,EAAiB,EAAsB,IAC5C,EAAU,EAAE,KAAK,EAAS,EAAS,CAAK,EAC1C,MAAO,CAAC,EAAiB,EAAsB,IAC7C,EAAU,EAAE,MAAM,EAAS,EAAS,CAAK,EAC3C,MAAO,CAAC,IAAwB,EAAU,EAAE,MAAM,CAAO,EACzD,KAAM,CAAC,IAAkB,EAAU,EAAE,KAAK,CAAK,EAC/C,QAAS,CAAI,EAAmB,EAAsB,IACpD,EAAU,EAAE,QAAQ,EAAW,EAAI,CAAO,CAC9C,EAGO,SAAS,EAAgB,CAAC,EAAgC,CAC/D,IAAM,EAAgB,GAAa,CAAC,EAAG,CAAM,EAE7C,MAAO,OAAO,EAAQ,IAAc,CAClC,IAAM,EAAQ,KAAK,IAAI,EAGjB,EAAU,CACd,UAHgB,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,UAAU,CAAC,EAItD,OAAQ,EAAE,IAAI,OACd,KAAM,EAAE,IAAI,KACZ,UAAW,EAAE,IAAI,OAAO,YAAY,GAAK,SAC3C,EAEA,EAAc,KAAK,kBAAmB,CAAO,EAE7C,GAAI,CACF,MAAM,EAAK,EAEX,IAAM,EAAW,KAAK,IAAI,EAAI,EAC9B,EAAc,KAAK,oBAAqB,IACnC,EACH,OAAQ,EAAE,IAAI,OACd,UACF,CAAC,EACD,MAAO,EAAO,CACd,IAAM,EAAW,KAAK,IAAI,EAAI,EAU9B,MATA,EAAc,MACZ,iBACA,IACK,EACH,UACF,EACA,aAAiB,MAAQ,EAAY,MAAM,OAAO,CAAK,CAAC,CAC1D,EAEM,IC/VL,MAAM,CAAa,OACT,gBAA+B,CAC5C,YAAa,EACb,aAAc,KACd,SAAU,MACV,kBAAmB,EACnB,OAAQ,GACR,eAAgB,CAAC,IAAU,EAAW,YAAY,CAAK,CACzD,cAEa,QAAU,CACrB,EACA,EAAiC,CAAC,EACtB,CACZ,IAAM,EAAO,IACR,EAAa,kBACb,CACL,EACI,EACA,EAAQ,EAAK,aAEjB,QAAS,EAAU,EAAG,GAAW,EAAK,YAAa,IACjD,GAAI,CACF,OAAO,MAAM,EAAU,EACvB,MAAO,EAAO,CAGd,GAFA,EAAY,EAGV,IAAY,EAAK,aACjB,CAAC,EAAK,eAAgB,EAAW,CAAO,EAExC,MAAM,EAGR,IAAM,EAAc,EAAK,OACrB,EAAQ,KAAK,OAAO,EAAI,EAAQ,IAChC,EAEJ,EAAK,UAAU,EAAW,CAAO,EAEjC,MAAM,IAAI,QAAQ,CAAC,IAAY,WAAW,EAAS,CAAW,CAAC,EAE/D,EAAQ,KAAK,IAAI,EAAQ,EAAK,kBAAmB,EAAK,QAAQ,EAIlE,MAAM,QAGD,wBAA2C,CAChD,EACA,EAAiC,CAAC,EACN,CAC5B,MAAO,UAAU,IAAY,CAC3B,OAAO,EAAa,QAAQ,IAAM,EAAK,GAAG,CAAI,EAAG,CAAO,GAG9D,CC9DO,MAAM,CAAqB,aACnB,QAAa,CACxB,EACA,EACA,EAAyC,CAAC,EAUzC,CACD,IAAM,EAA6B,CACjC,YAAa,EACb,aAAc,CACZ,YAAa,EACb,aAAc,KACd,SAAU,IACV,kBAAmB,EACnB,OAAQ,EACV,EACA,SAAU,MACP,CACL,EAEM,EAAY,KAAK,IAAI,EACrB,EAAuC,CAAC,EACxC,EAAsC,CAAC,EACzC,EAAY,EAEV,EAAqB,EAAa,wBACtC,EACA,EAAK,YACP,EAEM,EAAU,EAAqB,cAAc,EAAO,EAAK,WAAW,EAE1E,QAAW,KAAS,EAAS,CAC3B,IAAM,EAAgB,EAAM,IAAI,MAAO,IAAS,CAC9C,GAAI,CACF,IAAM,EAAS,MAAM,EAAmB,CAAI,EAC5C,EAAW,KAAK,CAAE,OAAM,QAAO,CAAC,EAChC,MAAO,EAAO,CAGd,GAFA,EAAO,KAAK,CAAE,OAAM,MAAO,CAAe,CAAC,EAEvC,EAAK,SACP,MAAM,IAAI,wBAER,oCAAoC,EAAO,kBAC3C,CAAE,WAAY,EAAM,OAAQ,YAAa,EAAO,MAAO,CACzD,SAEF,CACA,IACA,EAAK,aAAa,EAAW,EAAM,OAAQ,EAAO,MAAM,GAE3D,EAID,GAFA,MAAM,QAAQ,WAAW,CAAa,EAElC,EAAK,UAAY,EAAO,OAAS,EACnC,MAIJ,IAAM,EAAW,KAAK,IAAI,EAAI,EAE9B,MAAO,CACL,aACA,SACA,QAAS,CACP,MAAO,EAAM,OACb,WAAY,EAAW,OACvB,OAAQ,EAAO,OACf,UACF,CACF,QAGa,cAAgB,CAAC,EAAY,EAA0B,CACpE,IAAM,EAAiB,CAAC,EACxB,QAAS,EAAI,EAAG,EAAI,EAAM,OAAQ,GAAK,EACrC,EAAQ,KAAK,EAAM,MAAM,EAAG,EAAI,CAAS,CAAC,EAE5C,OAAO,EAEX,CCxFO,MAAM,EAAe,CAMN,QALZ,MAAyC,SACzC,aAAe,EACf,gBAAkB,EAClB,gBAAkB,EAE1B,WAAW,CAAS,EAAgC,CAAhC,oBAEd,QAAU,CAAC,EAAyC,CACxD,IAAM,EAAM,KAAK,IAAI,EAErB,OAAQ,KAAK,WACN,OACH,GAAI,EAAM,KAAK,gBACb,MAAM,IAAI,gCAER,0BACA,CAAE,MAAO,KAAK,MAAO,gBAAiB,KAAK,eAAgB,CAC7D,EAEF,KAAK,MAAQ,YACb,KAAK,QAAQ,aAAa,EAC1B,UAEG,YACH,UAEG,SACH,MAGJ,GAAI,CACF,IAAM,EAAS,MAAM,QAAQ,KAAK,CAChC,EAAU,EACV,IAAI,QAAe,CAAC,EAAG,IACrB,WACE,IACE,EACE,IAAI,oBAEF,0BACA,CAAE,QAAS,KAAK,QAAQ,OAAQ,CAClC,CACF,EACF,KAAK,QAAQ,OACf,CACF,CACF,CAAC,EAED,GAAI,KAAK,QAAU,YACjB,KAAK,MAAQ,SACb,KAAK,aAAe,EACpB,KAAK,QAAQ,UAAU,EAGzB,OAAO,EACP,MAAO,EAAO,CAEd,MADA,KAAK,cAAc,EACb,GAIF,aAAa,EAAS,CAI5B,GAHA,KAAK,eACL,KAAK,gBAAkB,KAAK,IAAI,EAE5B,KAAK,cAAgB,KAAK,QAAQ,iBACpC,KAAK,MAAQ,OACb,KAAK,gBAAkB,KAAK,gBAAkB,KAAK,QAAQ,aAC3D,KAAK,QAAQ,SAAS,EAI1B,QAAQ,EAAW,CACjB,OAAO,KAAK,MAGd,eAAe,EAAW,CACxB,OAAO,KAAK,aAGd,KAAK,EAAS,CACZ,KAAK,MAAQ,SACb,KAAK,aAAe,EACpB,KAAK,gBAAkB,EACvB,KAAK,gBAAkB,EAE3B,CClGO,MAAM,EAAY,CAIb,YACA,SAJF,SAAqB,CAAC,EAE9B,WAAW,CACD,EACA,EACR,CAFQ,mBACA,qBAGJ,QAAO,EAAkB,CAC7B,IAAM,EAAM,KAAK,IAAI,EAIrB,GAFA,KAAK,SAAW,KAAK,SAAS,OAAO,CAAC,IAAS,EAAM,EAAO,KAAK,QAAQ,EAErE,KAAK,SAAS,QAAU,KAAK,YAAa,CAC5C,IAAM,EAAgB,KAAK,IAAI,GAAG,KAAK,QAAQ,EACzC,EAAW,KAAK,UAAY,EAAM,GAExC,GAAI,EAAW,EAEb,OADA,MAAM,IAAI,QAAQ,CAAC,IAAY,WAAW,EAAS,CAAQ,CAAC,EACrD,KAAK,QAAQ,EAIxB,KAAK,SAAS,KAAK,CAAG,EAGxB,cAAc,EAAY,CACxB,IAAM,EAAM,KAAK,IAAI,EAErB,OADA,KAAK,SAAW,KAAK,SAAS,OAAO,CAAC,IAAS,EAAM,EAAO,KAAK,QAAQ,EAClE,KAAK,SAAS,OAAS,KAAK,YAGrC,oBAAoB,EAAW,CAC7B,IAAM,EAAM,KAAK,IAAI,EAErB,OADA,KAAK,SAAW,KAAK,SAAS,OAAO,CAAC,IAAS,EAAM,EAAO,KAAK,QAAQ,EAClE,KAAK,IAAI,EAAG,KAAK,YAAc,KAAK,SAAS,MAAM,EAE9D,CCYO,IAAM,GAAK,CAAI,KAAqB,CACzC,UAAW,GACX,UAAW,GACX,OACF,GAOa,GAAO,CAAI,KAAuB,CAC7C,UAAW,GACX,UAAW,GACX,OACF,GAKa,GAAS,CAIpB,GAAY,CAAC,EAAsB,EAAmC,CACpE,GAAI,EAAO,UACT,OAAO,GAAG,EAAG,EAAO,KAAK,CAAC,EAE5B,OAAO,GAMT,OAAgB,CACd,EACA,EACc,CACd,GAAI,EAAO,UACT,OAAO,EAAG,EAAO,KAAK,EAExB,OAAO,GAMT,QAAiB,CAAC,EAAsB,EAAmC,CACzE,GAAI,EAAO,UACT,OAAO,GAAK,EAAG,EAAO,KAAK,CAAC,EAE9B,OAAO,GAMT,MAAY,CAAC,EAAyB,CACpC,GAAI,EAAO,UACT,OAAO,EAAO,MAEhB,MAAM,EAAO,OAMf,QAAc,CAAC,EAAsB,EAAoB,CACvD,GAAI,EAAO,UACT,OAAO,EAAO,MAEhB,OAAO,GAMT,YAAkB,CAAC,EAAsB,EAAwB,CAC/D,GAAI,EAAO,UACT,OAAO,EAAO,MAEhB,OAAO,EAAG,EAAO,KAAK,GAMxB,KAAc,CACZ,EACA,EACG,CACH,GAAI,EAAO,UACT,OAAO,EAAS,GAAG,EAAO,KAAK,EAEjC,OAAO,EAAS,KAAK,EAAO,KAAK,QAM7B,YAAyB,CAAC,EAA4C,CAC1E,GAAI,CACF,IAAM,EAAQ,MAAM,EACpB,OAAO,GAAG,CAAK,EACf,MAAO,EAAO,CACd,OAAO,GAAK,CAAU,IAO1B,IAAU,CAAC,EAAuC,CAChD,OAAO,EAAO,WAMhB,MAAY,CAAC,EAAyC,CACpD,OAAO,EAAO,WAiBhB,GAAS,CACP,EACA,EACc,CAEd,OADA,EAAG,CAAM,EACF,GAgBT,KAAW,CAAC,EAAsB,EAAsC,CACtE,GAAI,EAAO,UACT,EAAG,EAAO,KAAK,EAEjB,OAAO,GAgBT,MAAY,CAAC,EAAsB,EAAsC,CACvE,GAAI,EAAO,UACT,EAAG,EAAO,KAAK,EAEjB,OAAO,GAkBT,MAAY,CAAC,EAAsB,EAAoB,CACrD,GAAI,EAAO,UACT,OAAO,EAAO,MAEhB,MAAU,MAAM,EAAS,CAAE,MAAO,EAAO,KAAM,CAAC,EAEpD,ECjPO,SAAS,EAAmB,EAAqB,CACtD,IAAM,EAAgB,WACtB,OACE,EAAc,eACd,EAAc,SACd,EAAc,SAAS,KACvB,CAAC,EAIE,SAAS,EAAc,CAAC,EAAiC,CAC9D,IAAM,EAAQ,GAAoB,EAAE,GACpC,GAAI,OAAO,IAAU,SACnB,OAAO,EAET,GAAI,IAAU,OACZ,OAEF,OAAO,OAAO,CAAK,EC1Bd,IAAM,GAAyB,CACpC,UACA,OACA,YACA,SACA,YACA,SACF,EAEa,GAAyB,CACpC,YACA,SACA,YACA,SACF,EAEa,GAAyB,CACpC,UACA,MACF,EAEM,GAA2C,IAAI,IACnD,EACF,EACM,GAA2C,IAAI,IACnD,EACF,EACM,GAA2C,IAAI,IACnD,EACF,EAEO,SAAS,EAAoB,CAAC,EAAwC,CAC3E,OAAO,GAAoB,IAAI,CAAK,EAG/B,SAAS,EAAoB,CAAC,EAAwB,CAC3D,OAAO,GAAoB,IAAI,CAAK,EAG/B,SAAS,EAAwB,CAAC,EAAiC,CACxE,OAAO,GAAoB,IAAI,CAAM,EAGhC,SAAS,EAAwB,CAAC,EAAiC,CACxE,OAAO,GAAoB,IAAI,CAAM,EAGhC,SAAS,EAAmB,EAA8B,CAC/D,OAAO,GC5BF,IAAM,GAAqB,CAChC,WACA,aACA,MACA,MACA,MACA,MACA,QACA,MACA,UACA,UACA,UACA,UACA,WACA,UACF,EAEM,GAA6C,IAAI,IAAI,EAAkB,EAEtE,SAAS,EAAiB,CAAC,EAAqC,CACrE,OAAO,GAAsB,IAAI,CAAK,EAYjC,IAAM,GAA0C,CACrD,UACA,OACA,QACF,EAEa,GAAuC,UAEvC,GAAyB,CAAC,IAAmC,CACxE,IAAM,EAAM,OAAO,IAAW,SAAW,EAAO,KAAK,EAAE,YAAY,EAAI,GAEvE,GAAI,IAAQ,WAAa,IAAQ,QAAU,IAAQ,SACjD,OAAO,EAGT,OAAO",
|
|
25
|
-
"debugId": "
|
|
25
|
+
"debugId": "B007D233B807038664756E2164756E21",
|
|
26
26
|
"names": []
|
|
27
27
|
}
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var E;((d)=>{d.INVALID_REQUEST="INVALID_REQUEST";d.AUTHENTICATION_FAILED="AUTHENTICATION_FAILED";d.INSUFFICIENT_BALANCE="INSUFFICIENT_BALANCE";d.TEMPLATE_NOT_FOUND="TEMPLATE_NOT_FOUND";d.RATE_LIMIT_EXCEEDED="RATE_LIMIT_EXCEEDED";d.NETWORK_ERROR="NETWORK_ERROR";d.NETWORK_TIMEOUT="NETWORK_TIMEOUT";d.NETWORK_SERVICE_UNAVAILABLE="NETWORK_SERVICE_UNAVAILABLE";d.PROVIDER_ERROR="PROVIDER_ERROR";d.MESSAGE_SEND_FAILED="MESSAGE_SEND_FAILED";d.CRYPTO_CONFIG_ERROR="CRYPTO_CONFIG_ERROR";d.CRYPTO_ENCRYPT_FAILED="CRYPTO_ENCRYPT_FAILED";d.CRYPTO_DECRYPT_FAILED="CRYPTO_DECRYPT_FAILED";d.CRYPTO_HASH_FAILED="CRYPTO_HASH_FAILED";d.CRYPTO_POLICY_VIOLATION="CRYPTO_POLICY_VIOLATION";d.UNKNOWN_ERROR="UNKNOWN_ERROR"})(E||={});var At={["INVALID_REQUEST"]:{ko:"잘못된 요청입니다",en:"Invalid request"},["AUTHENTICATION_FAILED"]:{ko:"인증에 실패했습니다",en:"Authentication failed"},["INSUFFICIENT_BALANCE"]:{ko:"잔액이 부족합니다",en:"Insufficient balance"},["TEMPLATE_NOT_FOUND"]:{ko:"템플릿을 찾을 수 없습니다",en:"Template not found"},["RATE_LIMIT_EXCEEDED"]:{ko:"요청 한도를 초과했습니다",en:"Rate limit exceeded"},["NETWORK_ERROR"]:{ko:"네트워크 오류가 발생했습니다",en:"Network error"},["NETWORK_TIMEOUT"]:{ko:"네트워크 요청 시간이 초과되었습니다",en:"Network timeout"},["NETWORK_SERVICE_UNAVAILABLE"]:{ko:"서비스를 일시적으로 사용할 수 없습니다",en:"Service temporarily unavailable"},["PROVIDER_ERROR"]:{ko:"제공자 오류가 발생했습니다",en:"Provider error"},["MESSAGE_SEND_FAILED"]:{ko:"메시지 전송에 실패했습니다",en:"Message send failed"},["CRYPTO_CONFIG_ERROR"]:{ko:"암호화 설정 오류가 발생했습니다",en:"Crypto configuration error"},["CRYPTO_ENCRYPT_FAILED"]:{ko:"암호화에 실패했습니다",en:"Encryption failed"},["CRYPTO_DECRYPT_FAILED"]:{ko:"복호화에 실패했습니다",en:"Decryption failed"},["CRYPTO_HASH_FAILED"]:{ko:"해시 생성에 실패했습니다",en:"Hash generation failed"},["CRYPTO_POLICY_VIOLATION"]:{ko:"암호화 정책 위반이 발생했습니다",en:"Crypto policy violation"},["UNKNOWN_ERROR"]:{ko:"알 수 없는 오류가 발생했습니다",en:"Unknown error"}},Pt=new Set(Object.values(E)),Q=new Set(["NETWORK_ERROR","RATE_LIMIT_EXCEEDED","NETWORK_TIMEOUT","NETWORK_SERVICE_UNAVAILABLE","PROVIDER_ERROR","UNKNOWN_ERROR"]),Z=new Set(["INVALID_REQUEST","AUTHENTICATION_FAILED","INSUFFICIENT_BALANCE","TEMPLATE_NOT_FOUND","MESSAGE_SEND_FAILED","CRYPTO_CONFIG_ERROR","CRYPTO_ENCRYPT_FAILED","CRYPTO_DECRYPT_FAILED","CRYPTO_HASH_FAILED","CRYPTO_POLICY_VIOLATION"]),P=(t)=>{if(typeof t!=="number"||Number.isNaN(t)||!Number.isFinite(t))return;return Math.trunc(t)},x=(t)=>{let e=P(t);if(e===void 0||e<0)return;return e},q=(t)=>{if(typeof t!=="string")return;return t.toLowerCase().trim()},St=(t)=>{if(typeof t!=="string")return;let e=t.trim();return e.length>0?e:void 0},S=(t)=>{return typeof t==="object"&&t!==null&&!Array.isArray(t)},m=(t,e)=>{for(let n of e)if(n in t)return t[n];return},ut=(t)=>{return t.length>0?t:"$"},et=(t)=>{return t==="compat"?"compat":"safe"},L=(t)=>{if(t>=500)return"retryable";if(t===408||t===425||t===429)return"retryable";return"non_retryable"},X=(t)=>{let e=t.toLowerCase();if(e.includes("timeout")||e.includes("temporar")||e.includes("network")||e.includes("retry"))return"retryable";return};class K extends Error{code;details;providerErrorCode;providerErrorText;httpStatus;requestId;retryAfterMs;attempt;causeChain;constructor(t,e,n,i={}){super(e);if(this.name="KMsgError",this.code=t,this.details=n,this.providerErrorCode=i.providerErrorCode,this.providerErrorText=i.providerErrorText,this.httpStatus=P(i.httpStatus),this.requestId=typeof i.requestId==="string"?i.requestId:void 0,this.retryAfterMs=P(i.retryAfterMs),this.attempt=P(i.attempt),Array.isArray(i.causeChain))this.causeChain=i.causeChain;else if(i.causeChain!==void 0)this.causeChain=[i.causeChain];if(Error.captureStackTrace)Error.captureStackTrace(this,K)}getLocalizedMessage(t="ko"){let e=At[this.code];if(e?.[t])return e[t];return this.message}toJSON(){return{name:this.name,code:this.code,message:this.message,details:this.details,providerErrorCode:this.providerErrorCode,providerErrorText:this.providerErrorText,httpStatus:this.httpStatus,requestId:this.requestId,retryAfterMs:this.retryAfterMs,attempt:this.attempt,causeChain:this.causeChain}}}var b=(t,e)=>{let n=P(t);if(n!==void 0)return n;if(e==="compat"&&typeof t==="string"){let i=Number(t.trim());if(Number.isFinite(i))return Math.trunc(i)}return},$=(t,e)=>{let n=St(t);if(n)return n;if(e==="compat"&&(typeof t==="number"||typeof t==="boolean"))return String(t);return},nt=(t)=>{if(typeof t!=="string")return;let e=t.trim().toUpperCase();if(!Pt.has(e))return;return e},D=(t,e)=>{t.push({...e,path:ut(e.path)})},z=(t,e,n,i)=>{if(t===void 0)return[];let r=(()=>{if(Array.isArray(t))return t;if(n==="compat"&&typeof t==="string")return t.split(",").map((o)=>o.trim()).filter((o)=>o.length>0);return D(i,{code:"invalid_type",message:"expected array of KMsgErrorCode values",path:e}),[]})(),s=[],p=new Set;for(let o=0;o<r.length;o+=1){let y=r[o],f=nt(typeof y==="string"?y:n==="compat"?String(y):y);if(!f){D(i,{code:"unknown_code",message:`unknown retry policy code: ${String(y)}`,path:`${e}[${o}]`});continue}if(p.has(f)){D(i,{code:"duplicate_code",message:`duplicate retry policy code: ${f}`,path:`${e}[${o}]`});continue}p.add(f),s.push(f)}return s},wt=(t,e,n)=>{if(t===void 0)return;if(typeof t==="string"){let i=t.trim().toLowerCase();if(i==="retryable")return"retryable";if(i==="non_retryable"||i==="non-retryable")return"non_retryable"}if(e==="compat"&&typeof t==="boolean")return t?"retryable":"non_retryable";D(n,{code:"invalid_fallback",message:`invalid fallback value: ${String(t)}`,path:"fallback"});return};function mt(t,e={}){let n=et(e.mode),i=[];if(!S(t))return D(i,{code:"invalid_root",message:"retry policy must be an object",path:"$"}),{policy:null,issues:i};let r=new Set(["retryableCodes","nonRetryableCodes","fallback"]);for(let l of Object.keys(t)){if(r.has(l))continue;D(i,{code:"unknown_field",message:`unknown retry policy field: ${l}`,path:l})}let s=z(t.retryableCodes,"retryableCodes",n,i),p=z(t.nonRetryableCodes,"nonRetryableCodes",n,i),o=wt(t.fallback,n,i),y=new Set(s),f=new Set(p);for(let l of y){if(!f.has(l))continue;y.delete(l),D(i,{code:"conflicting_code",message:`code '${l}' is both retryable and nonRetryable; nonRetryable wins`,path:"retryableCodes"})}let a={...y.size>0?{retryableCodes:Array.from(y)}:{},...f.size>0?{nonRetryableCodes:Array.from(f)}:{},...o?{fallback:o}:{}};return{policy:a.retryableCodes!==void 0||a.nonRetryableCodes!==void 0||a.fallback!==void 0?a:null,issues:i}}function bt(t,e={}){return mt(t,e).policy}function zt(t,e={}){if(typeof t!=="string"||t.trim().length===0)return null;try{let n=JSON.parse(t);return bt(n,e)}catch{return null}}var tt=(t,e)=>{let n=t.response;if(!S(n))return;return b(m(n,["status","statusCode","httpStatus"]),e)},Dt=(t,e)=>{if(t instanceof K&&Array.isArray(t.causeChain))return t.causeChain.slice();if(S(t)){let s=t.causeChain;if(Array.isArray(s))return s.slice();let p=t.details;if(e==="compat"&&S(p)){let o=p.causeChain;if(Array.isArray(o))return o.slice();if(o!==void 0)return[o]}}let n=[],i=new Set,r=t;for(let s=0;s<8;s+=1){if(!S(r))break;let p=r.cause;if(p===void 0||i.has(p))break;i.add(p),n.push(p),r=p}return n.length>0?n:void 0},Tt=(t)=>{if(t instanceof Error&&typeof t.message==="string")return t.message;if(S(t)&&typeof t.message==="string")return t.message;return typeof t==="string"?t:"Unknown error"};function te(t,e={}){let n=et(e.mode),r=e.defaultCode??"UNKNOWN_ERROR",s={code:"fallback",classification:e.policy?"policy":"fallback"},p,o,y,f,a,h,l,A=(c)=>{if(c.providerErrorCode!==void 0)p=c.providerErrorCode,s.providerErrorCode="metadata";if(c.providerErrorText!==void 0)o=c.providerErrorText,s.providerErrorText="metadata";if(c.httpStatus!==void 0)y=c.httpStatus,s.httpStatus="metadata";if(c.requestId!==void 0)f=c.requestId,s.requestId="metadata";if(c.retryAfterMs!==void 0)a=x(c.retryAfterMs),s.retryAfterMs="metadata";if(c.attempt!==void 0)h=b(c.attempt,n),s.attempt="metadata";if(Array.isArray(c.causeChain))l=c.causeChain.slice(),s.causeChain="metadata"},C=(c,F)=>{if(p===void 0){let g=$(m(c,["providerErrorCode","errorCode","resultCode"]),n);if(g!==void 0)p=g,s.providerErrorCode=F}if(o===void 0){let g=$(m(c,["providerErrorText","errorMessage","msg","message"]),n);if(g!==void 0)o=g,s.providerErrorText=F}if(y===void 0){let g=b(m(c,["httpStatus","statusCode","status"]),n)??tt(c,n);if(g!==void 0)y=g,s.httpStatus=F==="details"?"details":"http"}if(f===void 0){let g=$(m(c,["requestId","request_id","reqId","traceId"]),n);if(g!==void 0)f=g,s.requestId=F}if(a===void 0){let g=x(b(m(c,["retryAfterMs","retry_after_ms","retryAfter"]),n));if(g!==void 0)a=g,s.retryAfterMs=F}if(h===void 0){let g=b(c.attempt,n);if(g!==void 0&&g>0)h=g,s.attempt=F}};if(t instanceof K){if(r=t.code,s.code="input",A(t),n==="compat"&&S(t.details))C(t.details,"details")}else if(S(t)){let c=nt(m(t,["code","errorCode","resultCode"]));if(c!==void 0)r=c,s.code="input";else if(y===void 0){let F=b(m(t,["httpStatus","statusCode","status"]),n)??tt(t,n);if(F!==void 0&&F>=500)r="PROVIDER_ERROR",s.code="http"}if(C(t,"input"),n==="compat"&&S(t.details))C(t.details,"details")}if(l===void 0){let c=Dt(t,n);if(c!==void 0)l=c,s.causeChain="input"}if(e.attempt!==void 0&&b(e.attempt,n)!==void 0){let c=b(e.attempt,n);if(c!==void 0&&c>0)h=c,s.attempt="input"}let w=new K(r,Tt(t),void 0,{providerErrorCode:p,providerErrorText:o,httpStatus:y,requestId:f,retryAfterMs:a,attempt:h,causeChain:l}),d=O.classifyForRetry(w,e.policy);return{code:r,classification:d,...p!==void 0?{providerErrorCode:p}:{},...o!==void 0?{providerErrorText:o}:{},...y!==void 0?{httpStatus:y}:{},...f!==void 0?{requestId:f}:{},...a!==void 0?{retryAfterMs:a}:{},...h!==void 0?{attempt:h}:{},...l!==void 0?{causeChain:l}:{},sources:s}}var O={isRetryable(t,e={}){return O.classifyForRetry(t,e)==="retryable"},classifyForRetry(t,e={}){if(t instanceof K){if(new Set(e.retryableCodes??Array.from(Q)).has(t.code))return"retryable";if(new Set(e.nonRetryableCodes??Array.from(Z)).has(t.code))return"non_retryable";if(t.httpStatus!==void 0)return L(t.httpStatus);let y=X(t.message);if(y)return y;if(e.classifyByMessage&&t.message){let f=e.classifyByMessage(t.message);if(f)return f}if(e.fallback)return e.fallback;return"non_retryable"}let n=t&&typeof t==="object"?t:void 0,i=q(n?.status)??q(n?.statusCode)??q(n?.code),r=P(n?.status)??P(n?.statusCode)??P(n?.httpStatus);if(typeof i==="string"&&i.startsWith("5"))return"retryable";if(r!==void 0){if(e.classifyByStatusCode)return e.classifyByStatusCode(r);return L(r)}let s=typeof n?.message==="string"?X(n.message):void 0;if(s)return s;if(e.classifyByMessage&&typeof n?.message==="string"){let p=e.classifyByMessage(n.message);if(p)return p}return e.fallback??"non_retryable"},resolveRetryAfterMs(t,e){if(e?.retryAfterMs){let n=e.retryAfterMs(t),i=x(n);if(i!==void 0)return i}if(t.retryAfterMs!==void 0)return x(t.retryAfterMs);if(t.code==="RATE_LIMIT_EXCEEDED"&&t.retryAfterMs===void 0)return;return},isUnknownStatus:(t)=>{if(t===void 0||Number.isNaN(t)||!Number.isFinite(t))return!1;return t<500},toRetryMetadata(t){return{providerErrorCode:t.providerErrorCode,providerErrorText:t.providerErrorText,httpStatus:t.httpStatus,requestId:t.requestId,retryAfterMs:t.retryAfterMs,attempt:t.attempt,causeChain:t.causeChain}},withAttempt(t,e){return new K(t.code,t.message,t.details,{...O.toRetryMetadata(t),attempt:P(e)})},DEFAULT_RETRYABLE_ERROR_CODES:Q,DEFAULT_NON_RETRYABLE_ERROR_CODES:Z};function kt(t){switch(t){case"config":return"CRYPTO_CONFIG_ERROR";case"encrypt":return"CRYPTO_ENCRYPT_FAILED";case"decrypt":return"CRYPTO_DECRYPT_FAILED";case"hash":return"CRYPTO_HASH_FAILED";case"policy":return"CRYPTO_POLICY_VIOLATION"}}class M extends K{kind;fieldPath;failMode;openFallback;constructor(t,e,n,i={}){super(kt(t),e,n,i);this.name="FieldCryptoError",this.kind=t,this.fieldPath=typeof i.fieldPath==="string"?i.fieldPath:void 0,this.failMode=i.failMode,this.openFallback=i.openFallback}toJSON(){return{...super.toJSON(),kind:this.kind,fieldPath:this.fieldPath,failMode:this.failMode,openFallback:this.openFallback}}}var Rt=["tenantId","providerId","messageId"];function v(t){if(typeof t!=="string")return;let e=t.trim();return e.length>0?e:void 0}function Ot(t){if(typeof t!=="number"||!Number.isFinite(t))return;if(t<=0||t>100)return;return t}function it(t){let e=[];for(let n of t){let i=v(n.kid),r=Ot(n.percentage);if(!i||r===void 0)continue;e.push({kid:i,percentage:r})}return e}function Et(t,e,n){let i=e.map((r)=>{let s=t[r];return typeof s==="string"?s:""}).join("|");return`${n}::${i}`}function xt(t){let e=2166136261;for(let n=0;n<t.length;n+=1)e^=t.charCodeAt(n),e=e*16777619>>>0;return e>>>0}function Mt(t,e){let n=0;for(let i of t)if(n+=i.percentage,e<n)return i.kid;return}function H(t,e,n){let i=it(e.buckets),r=v(e.defaultKid)??v(n);if(i.length===0)return r;let s=v(e.seed)??"kmsg-rollout-v1",p=e.stickyFields??Rt,o=Et(t,p,s),y=xt(o)%100;return Mt(i,y)??r}function st(t){return it(t.buckets).map((e)=>e.kid)}function k(t){if(typeof t!=="string")return;let e=t.trim();return e.length>0?e:void 0}function V(t){if(!Array.isArray(t))return[];return t.map((e)=>k(e)).filter((e)=>Boolean(e))}function G(t){let e=[],n=new Set;for(let i of t){let r=k(i);if(!r||n.has(r))continue;n.add(r),e.push(r)}return e}function vt(t){return k(t.providerId)??"default"}function rt(t){let e=k(t.activeKid)??"default",n=G([e,...V(t.decryptKids)]);return{async resolveEncryptKey(){return{kid:e}},async resolveDecryptKeys(){return n}}}function I(t){let e=typeof t.cacheTtlMs==="number"&&t.cacheTtlMs>=0?Math.trunc(t.cacheTtlMs):30000,n=k(t.fallback?.activeKid),i=V(t.fallback?.decryptKids),r;async function s(p){let o=Date.now();if(r&&o<r.expiresAt)return r.value;let y=await t.provider.loadKeySet(p),f=k(y.activeKid)??n??vt(p),a=G([f,...V(y.decryptKids),...i]),h={activeKid:f,decryptKids:a,refreshedAt:Date.now()};return r={value:h,expiresAt:Date.now()+e},h}return{async resolveEncryptKey(p){return{kid:(await s(p)).activeKid}},async resolveDecryptKeys(p){let o=await s(p);return o.decryptKids??[o.activeKid]}}}function pe(t,e){return{async resolveEncryptKey(n){let i=await t.resolveEncryptKey(n);return{kid:H(n,e,i.kid)??i.kid}},async resolveDecryptKeys(n){let i=await t.resolveEncryptKey(n),r=t.resolveDecryptKeys?await t.resolveDecryptKeys(n):[i.kid],s=H(n,e,i.kid),p=st(e);return G([...s?[s]:[],i.kid,...r??[],...p])}}}function fe(t){return I({provider:{async loadKeySet(n){return t.client.getKeyState({...n,...t.keyAlias?{keyAlias:t.keyAlias}:{},...t.region?{region:t.region}:{}})}},cacheTtlMs:t.cacheTtlMs,fallback:{activeKid:t.fallbackActiveKid,decryptKids:t.fallbackDecryptKids}})}function N(t){if(typeof t!=="string")return;let e=t.trim();return e.length>0?e:void 0}function pt(t,e){return N(t[e])}function It(t,e){if(!t)return[];return t.split(e).map((n)=>N(n)).filter((n)=>Boolean(n))}function le(t={}){let e=t.env??(typeof process<"u"?process.env:{}),n=N(t.delimiter)??",",i=t.activeKidEnv??"KMSG_ACTIVE_KID",r=t.decryptKidsEnv??"KMSG_DECRYPT_KIDS",s=pt(e,i)??N(t.fallbackActiveKid)??"default",p=[s,...It(pt(e,r),n),...t.fallbackDecryptKids??[]];return rt({activeKid:s,decryptKids:p})}function ge(t){return I({provider:{async loadKeySet(n){return t.client.getKeyState({...n,...t.mountPath?{mountPath:t.mountPath}:{},...t.keyName?{keyName:t.keyName}:{},...t.namespace?{namespace:t.namespace}:{}})}},cacheTtlMs:t.cacheTtlMs,fallback:{activeKid:t.fallbackActiveKid,decryptKids:t.fallbackDecryptKids}})}function J(t){return typeof t==="function"}function yt(t){if(typeof t!=="string")return;let e=t.trim();return e.length>0?e:void 0}function ot(t,e,n){let i=t.fields[e];if(i)return i;if(e.startsWith("metadata.")){let r=t.fields["metadata.*"];if(r)return r}return n}function Nt(t,e={}){let n=[];if(!t||typeof t!=="object")return{valid:!1,issues:[{message:"fieldCrypto config must be an object",rule:"fieldCrypto.config.object",hint:"Provide a valid FieldCryptoConfig object"}]};if(!t.provider||typeof t.provider!=="object")n.push({message:"fieldCrypto provider is required",rule:"fieldCrypto.provider.required",path:"provider",hint:"Set provider with encrypt/decrypt/hash methods"});else{if(!J(t.provider.encrypt))n.push({message:"provider.encrypt must be a function",rule:"fieldCrypto.provider.encrypt.required",path:"provider.encrypt"});if(!J(t.provider.decrypt))n.push({message:"provider.decrypt must be a function",rule:"fieldCrypto.provider.decrypt.required",path:"provider.decrypt"});if(!J(t.provider.hash))n.push({message:"provider.hash must be a function",rule:"fieldCrypto.provider.hash.required",path:"provider.hash"})}if(!t.fields||typeof t.fields!=="object")n.push({message:"fieldCrypto.fields must be an object",rule:"fieldCrypto.fields.object",path:"fields",hint:"Define policies such as to, from, metadata.phoneNumber"});else{let s=Object.entries(t.fields);if(s.length===0)n.push({message:"fieldCrypto.fields must not be empty",rule:"fieldCrypto.fields.non_empty",path:"fields",hint:"Add at least one field mode mapping"});for(let[p,o]of s){if(!yt(p))n.push({message:"field path must be a non-empty string",rule:"fieldCrypto.fields.path.non_empty",path:"fields"});if(o!=="plain"&&o!=="encrypt"&&o!=="encrypt+hash"&&o!=="mask")n.push({message:`unsupported field mode: ${String(o)}`,rule:"fieldCrypto.fields.mode.supported",path:`fields.${p}`})}}let i=t.failMode??"closed",r=t.openFallback??"masked";if(i==="open"&&r==="plaintext"&&t.unsafeAllowPlaintextStorage!==!0)n.push({message:"openFallback=plaintext requires unsafeAllowPlaintextStorage=true",rule:"fieldCrypto.fail_open.plaintext_guard",path:"openFallback",hint:"Use masked/null fallback, or explicitly enable unsafe plaintext"});if(Array.isArray(t.aadFields)){if(t.aadFields.length===0)n.push({message:"aadFields must not be empty when provided",rule:"fieldCrypto.aad_fields.non_empty",path:"aadFields"});for(let s=0;s<t.aadFields.length;s+=1){let p=t.aadFields[s];if(!yt(p))n.push({message:"aadFields cannot include empty key",rule:"fieldCrypto.aad_fields.no_empty_key",path:`aadFields[${s}]`})}}if(e.secureMode&&!e.compatPlainColumns){let s=ot(t,"to","encrypt+hash"),p=ot(t,"from","encrypt+hash");if(s==="plain")n.push({message:"secure mode requires non-plain policy for `to` when compatPlainColumns=false",rule:"fieldCrypto.secure_mode.to_non_plain",path:"fields.to",hint:"Use encrypt+hash for lookup fields"});if(p==="plain")n.push({message:"secure mode requires non-plain policy for `from` when compatPlainColumns=false",rule:"fieldCrypto.secure_mode.from_non_plain",path:"fields.from",hint:"Use encrypt+hash for lookup fields"})}return{valid:n.length===0,issues:n}}function Fe(t,e={}){let n=Nt(t,e);if(n.valid)return;let i=n.issues[0];if(!i)throw new M("config","fieldCrypto config validation failed",{rule:"fieldCrypto.config.invalid",issues:n.issues});throw new M("config",i.message,{rule:i.rule,path:i.path,hint:i.hint,issues:n.issues},{fieldPath:i.path})}function _(t){let e=t instanceof Uint8Array?t:new Uint8Array(t),n=typeof globalThis<"u"?globalThis.Buffer:void 0;return(n?n.from(e).toString("base64"):btoa(String.fromCharCode(...e))).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function B(t){let e=t.replace(/-/g,"+").replace(/_/g,"/"),n=e.length%4===0?e:`${e}${"=".repeat(4-e.length%4)}`,i=typeof globalThis<"u"?globalThis.Buffer:void 0;if(i)return new Uint8Array(i.from(n,"base64"));let r=atob(n),s=new Uint8Array(r.length);for(let p=0;p<r.length;p+=1)s[p]=r.charCodeAt(p);return s}function ft(t,e){if(t instanceof Uint8Array)return t;if(t instanceof ArrayBuffer)return new Uint8Array(t);if(e==="base64url")return B(t);return new TextEncoder().encode(t)}function _t(t){let e=t instanceof Uint8Array?t:new Uint8Array(t);return Array.from(e).map((n)=>n.toString(16).padStart(2,"0")).join("")}function u(t){let e=new Uint8Array(t.byteLength);return e.set(t),e.buffer}function ct(t){let e=JSON.parse(t);if(!e||typeof e!=="object"||typeof e.v!=="number"||typeof e.alg!=="string"||typeof e.kid!=="string"||typeof e.iv!=="string"||typeof e.tag!=="string"||typeof e.ct!=="string")throw Error("Invalid ciphertext envelope");return e}function Bt(t){if(typeof t==="string")return t;return JSON.stringify(t)}function Pe(t){if(!t||typeof t!=="object")return!1;let e=t;return typeof e.v==="number"&&typeof e.alg==="string"&&typeof e.kid==="string"&&typeof e.iv==="string"&&typeof e.tag==="string"&&typeof e.ct==="string"}function Ut(t){let e=String(t??"").trim();if(e.length===0)return"";let n=e.startsWith("+"),i=e.replace(/\D/g,"");return n?`+${i}`:i}function at(t=3,e=2){return(n)=>{let i=String(n??"");if(i.length<=t+e)return"*".repeat(Math.max(0,i.length));let r=i.slice(0,t),s=i.slice(-e);return`${r}${"*".repeat(i.length-t-e)}${s}`}}function Se(t){let e=t.algorithm??"A256GCM",n=t.keyEncoding??"base64url",i=t.hashKeyEncoding??n,r=new Map,s=new Map,p=(y)=>{let f=r.get(y);if(f)return f;let a=t.keys[y];if(!a)throw Error(`Unknown encryption key id: ${y}`);let h=ft(a,n),l=crypto.subtle.importKey("raw",u(h),"AES-GCM",!1,["encrypt","decrypt"]);return r.set(y,l),l},o=(y)=>{let f=s.get(y);if(f)return f;let a=t.hashKeys?.[y]??t.keys[y];if(!a)throw Error(`Unknown hash key id: ${y}`);let h=ft(a,i),l=crypto.subtle.importKey("raw",u(h),{name:"HMAC",hash:"SHA-256"},!1,["sign"]);return s.set(y,l),l};return{async encrypt(y){let f=y.kid??t.activeKid,a=await p(f),h=crypto.getRandomValues(new Uint8Array(12)),l=new TextEncoder().encode(JSON.stringify(y.aad??{})),A=new TextEncoder().encode(y.value),C=await crypto.subtle.encrypt({name:"AES-GCM",iv:u(h),additionalData:u(l),tagLength:128},a,u(A)),w=new Uint8Array(C),d=w.slice(w.length-16),c=w.slice(0,w.length-16);return{ciphertext:{v:1,alg:e,kid:f,iv:_(h),tag:_(d),ct:_(c)},kid:f}},async decrypt(y){let f=ct(y.ciphertext),a=y.candidateKids&&y.candidateKids.length>0?y.candidateKids:[f.kid],h=B(f.iv),l=B(f.tag),A=B(f.ct),C=new Uint8Array(A.length+l.length);C.set(A,0),C.set(l,A.length);let w=new TextEncoder().encode(JSON.stringify(y.aad??{})),d;for(let c of a)try{let F=await p(c),g=await crypto.subtle.decrypt({name:"AES-GCM",iv:u(h),additionalData:u(w),tagLength:128},F,u(C));return new TextDecoder().decode(new Uint8Array(g))}catch(F){d=F}throw Error(`Failed to decrypt ciphertext: ${d instanceof Error?d.message:String(d??"unknown")}`)},async hash(y){let f=y.kid??t.activeKid,a=await o(f),h=await crypto.subtle.sign("HMAC",a,u(new TextEncoder().encode(y.value)));return _t(h)},mask(y){return at()(y.value)}}}function ue(){return{encrypt(t){return{ciphertext:JSON.stringify({v:1,alg:"NOOP",kid:"noop",iv:"",tag:"",ct:t.value})}},decrypt(t){try{return ct(t.ciphertext).ct}catch{return t.ciphertext}},hash(t){let e=Ut(t.value);return _(new TextEncoder().encode(e))},mask(t){return at()(t.value)}}}function we(t){return Bt(t)}var qt;((r)=>{r.DEBUG="DEBUG";r.INFO="INFO";r.WARN="WARN";r.ERROR="ERROR"})(qt||={});var $t=["to","from","phone","phoneNumber","recipient","sender","secret","apiKey","apiSecret","authorization","auth","token","password","payload","message","content","text"];function Ht(t){let e=t.toLowerCase();return $t.some((n)=>e.includes(n.toLowerCase()))}function Vt(t){let e=t.trim();if(e.length<=4)return"***";if(e.includes("@")){let[r,s]=e.split("@");return`${r.slice(0,2)}${"*".repeat(Math.max(1,r.length-2))}@${s}`}let n=e.slice(0,3),i=e.slice(-2);return`${n}${"*".repeat(Math.max(1,e.length-5))}${i}`}function W(t,e){if(e===void 0||e===null)return e;if(Ht(t)){if(typeof e==="string")return Vt(e);if(typeof e==="number"||typeof e==="boolean")return"***";if(Array.isArray(e))return"[REDACTED]";if(typeof e==="object")return"[REDACTED]"}if(Array.isArray(e))return e.map((n)=>W(t,n));if(typeof e==="object"){let n={};for(let[i,r]of Object.entries(e))n[i]=W(i,r);return n}return e}function Gt(t){let e={};for(let[n,i]of Object.entries(t))e[n]=W(n,i);return e}class Y{config;context;constructor(t={},e={}){this.context=t,this.config={level:"INFO",enableConsole:!0,enableJson:!1,enableColors:!0,...e}}shouldLog(t){let e=["DEBUG","INFO","WARN","ERROR"];return e.indexOf(t)>=e.indexOf(this.config.level)}formatMessage(t){let e=Gt(t.context);if(this.config.enableJson)return JSON.stringify({level:t.level,message:t.message,timestamp:t.timestamp.toISOString(),context:e,...t.error&&{error:{name:t.error.name,message:t.error.message,stack:t.error.stack}},...t.duration&&{duration:t.duration}});let n=t.timestamp.toISOString(),i=this.config.enableColors?this.colorizeLevel(t.level):t.level,r=Object.keys(e).length>0?` [${Object.entries(e).map(([p,o])=>`${p}=${o}`).join(", ")}]`:"",s=`${n} ${i}${r}: ${t.message}`;if(t.duration!==void 0)s+=` (${t.duration}ms)`;if(t.error)s+=`
|
|
2
|
-
${t.error.stack}`;return s}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
|
|
1
|
+
var E;((l)=>{l.INVALID_REQUEST="INVALID_REQUEST";l.AUTHENTICATION_FAILED="AUTHENTICATION_FAILED";l.INSUFFICIENT_BALANCE="INSUFFICIENT_BALANCE";l.TEMPLATE_NOT_FOUND="TEMPLATE_NOT_FOUND";l.RATE_LIMIT_EXCEEDED="RATE_LIMIT_EXCEEDED";l.NETWORK_ERROR="NETWORK_ERROR";l.NETWORK_TIMEOUT="NETWORK_TIMEOUT";l.NETWORK_SERVICE_UNAVAILABLE="NETWORK_SERVICE_UNAVAILABLE";l.PROVIDER_ERROR="PROVIDER_ERROR";l.MESSAGE_SEND_FAILED="MESSAGE_SEND_FAILED";l.CRYPTO_CONFIG_ERROR="CRYPTO_CONFIG_ERROR";l.CRYPTO_ENCRYPT_FAILED="CRYPTO_ENCRYPT_FAILED";l.CRYPTO_DECRYPT_FAILED="CRYPTO_DECRYPT_FAILED";l.CRYPTO_HASH_FAILED="CRYPTO_HASH_FAILED";l.CRYPTO_POLICY_VIOLATION="CRYPTO_POLICY_VIOLATION";l.UNKNOWN_ERROR="UNKNOWN_ERROR"})(E||={});var At={["INVALID_REQUEST"]:{ko:"잘못된 요청입니다",en:"Invalid request"},["AUTHENTICATION_FAILED"]:{ko:"인증에 실패했습니다",en:"Authentication failed"},["INSUFFICIENT_BALANCE"]:{ko:"잔액이 부족합니다",en:"Insufficient balance"},["TEMPLATE_NOT_FOUND"]:{ko:"템플릿을 찾을 수 없습니다",en:"Template not found"},["RATE_LIMIT_EXCEEDED"]:{ko:"요청 한도를 초과했습니다",en:"Rate limit exceeded"},["NETWORK_ERROR"]:{ko:"네트워크 오류가 발생했습니다",en:"Network error"},["NETWORK_TIMEOUT"]:{ko:"네트워크 요청 시간이 초과되었습니다",en:"Network timeout"},["NETWORK_SERVICE_UNAVAILABLE"]:{ko:"서비스를 일시적으로 사용할 수 없습니다",en:"Service temporarily unavailable"},["PROVIDER_ERROR"]:{ko:"제공자 오류가 발생했습니다",en:"Provider error"},["MESSAGE_SEND_FAILED"]:{ko:"메시지 전송에 실패했습니다",en:"Message send failed"},["CRYPTO_CONFIG_ERROR"]:{ko:"암호화 설정 오류가 발생했습니다",en:"Crypto configuration error"},["CRYPTO_ENCRYPT_FAILED"]:{ko:"암호화에 실패했습니다",en:"Encryption failed"},["CRYPTO_DECRYPT_FAILED"]:{ko:"복호화에 실패했습니다",en:"Decryption failed"},["CRYPTO_HASH_FAILED"]:{ko:"해시 생성에 실패했습니다",en:"Hash generation failed"},["CRYPTO_POLICY_VIOLATION"]:{ko:"암호화 정책 위반이 발생했습니다",en:"Crypto policy violation"},["UNKNOWN_ERROR"]:{ko:"알 수 없는 오류가 발생했습니다",en:"Unknown error"}},Pt=new Set(Object.values(E)),Q=new Set(["NETWORK_ERROR","RATE_LIMIT_EXCEEDED","NETWORK_TIMEOUT","NETWORK_SERVICE_UNAVAILABLE","PROVIDER_ERROR","UNKNOWN_ERROR"]),Z=new Set(["INVALID_REQUEST","AUTHENTICATION_FAILED","INSUFFICIENT_BALANCE","TEMPLATE_NOT_FOUND","MESSAGE_SEND_FAILED","CRYPTO_CONFIG_ERROR","CRYPTO_ENCRYPT_FAILED","CRYPTO_DECRYPT_FAILED","CRYPTO_HASH_FAILED","CRYPTO_POLICY_VIOLATION"]),P=(t)=>{if(typeof t!=="number"||Number.isNaN(t)||!Number.isFinite(t))return;return Math.trunc(t)},x=(t)=>{let n=P(t);if(n===void 0||n<0)return;return n},q=(t)=>{if(typeof t!=="string")return;return t.toLowerCase().trim()},wt=(t)=>{if(typeof t!=="string")return;let n=t.trim();return n.length>0?n:void 0},w=(t)=>{return typeof t==="object"&&t!==null&&!Array.isArray(t)},u=(t,n)=>{for(let e of n)if(e in t)return t[e];return},St=(t)=>{return t.length>0?t:"$"},nt=(t)=>{return t==="compat"?"compat":"safe"},L=(t)=>{if(t>=500)return"retryable";if(t===408||t===425||t===429)return"retryable";return"non_retryable"},X=(t)=>{let n=t.toLowerCase();if(n.includes("timeout")||n.includes("temporar")||n.includes("network")||n.includes("retry"))return"retryable";return};class K extends Error{code;details;providerErrorCode;providerErrorText;httpStatus;requestId;retryAfterMs;attempt;causeChain;constructor(t,n,e,i={}){super(n);if(this.name="KMsgError",this.code=t,this.details=e,this.providerErrorCode=i.providerErrorCode,this.providerErrorText=i.providerErrorText,this.httpStatus=P(i.httpStatus),this.requestId=typeof i.requestId==="string"?i.requestId:void 0,this.retryAfterMs=P(i.retryAfterMs),this.attempt=P(i.attempt),Array.isArray(i.causeChain))this.causeChain=i.causeChain;else if(i.causeChain!==void 0)this.causeChain=[i.causeChain];if(Error.captureStackTrace)Error.captureStackTrace(this,K)}getLocalizedMessage(t="ko"){let n=At[this.code];if(n?.[t])return n[t];return this.message}toJSON(){return{name:this.name,code:this.code,message:this.message,details:this.details,providerErrorCode:this.providerErrorCode,providerErrorText:this.providerErrorText,httpStatus:this.httpStatus,requestId:this.requestId,retryAfterMs:this.retryAfterMs,attempt:this.attempt,causeChain:this.causeChain}}}var k=(t,n)=>{let e=P(t);if(e!==void 0)return e;if(n==="compat"&&typeof t==="string"){let i=Number(t.trim());if(Number.isFinite(i))return Math.trunc(i)}return},$=(t,n)=>{let e=wt(t);if(e)return e;if(n==="compat"&&(typeof t==="number"||typeof t==="boolean"))return String(t);return},et=(t)=>{if(typeof t!=="string")return;let n=t.trim().toUpperCase();if(!Pt.has(n))return;return n},D=(t,n)=>{t.push({...n,path:St(n.path)})},z=(t,n,e,i)=>{if(t===void 0)return[];let r=(()=>{if(Array.isArray(t))return t;if(e==="compat"&&typeof t==="string")return t.split(",").map((f)=>f.trim()).filter((f)=>f.length>0);return D(i,{code:"invalid_type",message:"expected array of KMsgErrorCode values",path:n}),[]})(),s=[],p=new Set;for(let f=0;f<r.length;f+=1){let y=r[f],c=et(typeof y==="string"?y:e==="compat"?String(y):y);if(!c){D(i,{code:"unknown_code",message:`unknown retry policy code: ${String(y)}`,path:`${n}[${f}]`});continue}if(p.has(c)){D(i,{code:"duplicate_code",message:`duplicate retry policy code: ${c}`,path:`${n}[${f}]`});continue}p.add(c),s.push(c)}return s},bt=(t,n,e)=>{if(t===void 0)return;if(typeof t==="string"){let i=t.trim().toLowerCase();if(i==="retryable")return"retryable";if(i==="non_retryable"||i==="non-retryable")return"non_retryable"}if(n==="compat"&&typeof t==="boolean")return t?"retryable":"non_retryable";D(e,{code:"invalid_fallback",message:`invalid fallback value: ${String(t)}`,path:"fallback"});return};function ut(t,n={}){let e=nt(n.mode),i=[];if(!w(t))return D(i,{code:"invalid_root",message:"retry policy must be an object",path:"$"}),{policy:null,issues:i};let r=new Set(["retryableCodes","nonRetryableCodes","fallback"]);for(let d of Object.keys(t)){if(r.has(d))continue;D(i,{code:"unknown_field",message:`unknown retry policy field: ${d}`,path:d})}let s=z(t.retryableCodes,"retryableCodes",e,i),p=z(t.nonRetryableCodes,"nonRetryableCodes",e,i),f=bt(t.fallback,e,i),y=new Set(s),c=new Set(p);for(let d of y){if(!c.has(d))continue;y.delete(d),D(i,{code:"conflicting_code",message:`code '${d}' is both retryable and nonRetryable; nonRetryable wins`,path:"retryableCodes"})}let a={...y.size>0?{retryableCodes:Array.from(y)}:{},...c.size>0?{nonRetryableCodes:Array.from(c)}:{},...f?{fallback:f}:{}};return{policy:a.retryableCodes!==void 0||a.nonRetryableCodes!==void 0||a.fallback!==void 0?a:null,issues:i}}function kt(t,n={}){return ut(t,n).policy}function zt(t,n={}){if(typeof t!=="string"||t.trim().length===0)return null;try{let e=JSON.parse(t);return kt(e,n)}catch{return null}}var tt=(t,n)=>{let e=t.response;if(!w(e))return;return k(u(e,["status","statusCode","httpStatus"]),n)},Dt=(t,n)=>{if(t instanceof K&&Array.isArray(t.causeChain))return t.causeChain.slice();if(w(t)){let s=t.causeChain;if(Array.isArray(s))return s.slice();let p=t.details;if(n==="compat"&&w(p)){let f=p.causeChain;if(Array.isArray(f))return f.slice();if(f!==void 0)return[f]}}let e=[],i=new Set,r=t;for(let s=0;s<8;s+=1){if(!w(r))break;let p=r.cause;if(p===void 0||i.has(p))break;i.add(p),e.push(p),r=p}return e.length>0?e:void 0},mt=(t)=>{if(t instanceof Error&&typeof t.message==="string")return t.message;if(w(t)&&typeof t.message==="string")return t.message;return typeof t==="string"?t:"Unknown error"};function tn(t,n={}){let e=nt(n.mode),r=n.defaultCode??"UNKNOWN_ERROR",s={code:"fallback",classification:n.policy?"policy":"fallback"},p,f,y,c,a,h,d,A=(o)=>{if(o.providerErrorCode!==void 0)p=o.providerErrorCode,s.providerErrorCode="metadata";if(o.providerErrorText!==void 0)f=o.providerErrorText,s.providerErrorText="metadata";if(o.httpStatus!==void 0)y=o.httpStatus,s.httpStatus="metadata";if(o.requestId!==void 0)c=o.requestId,s.requestId="metadata";if(o.retryAfterMs!==void 0)a=x(o.retryAfterMs),s.retryAfterMs="metadata";if(o.attempt!==void 0)h=k(o.attempt,e),s.attempt="metadata";if(Array.isArray(o.causeChain))d=o.causeChain.slice(),s.causeChain="metadata"},C=(o,F)=>{if(p===void 0){let g=$(u(o,["providerErrorCode","errorCode","resultCode"]),e);if(g!==void 0)p=g,s.providerErrorCode=F}if(f===void 0){let g=$(u(o,["providerErrorText","errorMessage","msg","message"]),e);if(g!==void 0)f=g,s.providerErrorText=F}if(y===void 0){let g=k(u(o,["httpStatus","statusCode","status"]),e)??tt(o,e);if(g!==void 0)y=g,s.httpStatus=F==="details"?"details":"http"}if(c===void 0){let g=$(u(o,["requestId","request_id","reqId","traceId"]),e);if(g!==void 0)c=g,s.requestId=F}if(a===void 0){let g=x(k(u(o,["retryAfterMs","retry_after_ms","retryAfter"]),e));if(g!==void 0)a=g,s.retryAfterMs=F}if(h===void 0){let g=k(o.attempt,e);if(g!==void 0&&g>0)h=g,s.attempt=F}};if(t instanceof K){if(r=t.code,s.code="input",A(t),e==="compat"&&w(t.details))C(t.details,"details")}else if(w(t)){let o=et(u(t,["code","errorCode","resultCode"]));if(o!==void 0)r=o,s.code="input";else if(y===void 0){let F=k(u(t,["httpStatus","statusCode","status"]),e)??tt(t,e);if(F!==void 0&&F>=500)r="PROVIDER_ERROR",s.code="http"}if(C(t,"input"),e==="compat"&&w(t.details))C(t.details,"details")}if(d===void 0){let o=Dt(t,e);if(o!==void 0)d=o,s.causeChain="input"}if(n.attempt!==void 0&&k(n.attempt,e)!==void 0){let o=k(n.attempt,e);if(o!==void 0&&o>0)h=o,s.attempt="input"}let b=new K(r,mt(t),void 0,{providerErrorCode:p,providerErrorText:f,httpStatus:y,requestId:c,retryAfterMs:a,attempt:h,causeChain:d}),l=R.classifyForRetry(b,n.policy);return{code:r,classification:l,...p!==void 0?{providerErrorCode:p}:{},...f!==void 0?{providerErrorText:f}:{},...y!==void 0?{httpStatus:y}:{},...c!==void 0?{requestId:c}:{},...a!==void 0?{retryAfterMs:a}:{},...h!==void 0?{attempt:h}:{},...d!==void 0?{causeChain:d}:{},sources:s}}var R={isRetryable(t,n={}){return R.classifyForRetry(t,n)==="retryable"},classifyForRetry(t,n={}){if(t instanceof K){if(new Set(n.retryableCodes??Array.from(Q)).has(t.code))return"retryable";if(new Set(n.nonRetryableCodes??Array.from(Z)).has(t.code))return"non_retryable";if(t.httpStatus!==void 0)return L(t.httpStatus);let y=X(t.message);if(y)return y;if(n.classifyByMessage&&t.message){let c=n.classifyByMessage(t.message);if(c)return c}if(n.fallback)return n.fallback;return"non_retryable"}let e=t&&typeof t==="object"?t:void 0,i=q(e?.status)??q(e?.statusCode)??q(e?.code),r=P(e?.status)??P(e?.statusCode)??P(e?.httpStatus);if(typeof i==="string"&&i.startsWith("5"))return"retryable";if(r!==void 0){if(n.classifyByStatusCode)return n.classifyByStatusCode(r);return L(r)}let s=typeof e?.message==="string"?X(e.message):void 0;if(s)return s;if(n.classifyByMessage&&typeof e?.message==="string"){let p=n.classifyByMessage(e.message);if(p)return p}return n.fallback??"non_retryable"},resolveRetryAfterMs(t,n){if(n?.retryAfterMs){let e=n.retryAfterMs(t),i=x(e);if(i!==void 0)return i}if(t.retryAfterMs!==void 0)return x(t.retryAfterMs);if(t.code==="RATE_LIMIT_EXCEEDED"&&t.retryAfterMs===void 0)return;return},isUnknownStatus:(t)=>{if(t===void 0||Number.isNaN(t)||!Number.isFinite(t))return!1;return t<500},toRetryMetadata(t){return{providerErrorCode:t.providerErrorCode,providerErrorText:t.providerErrorText,httpStatus:t.httpStatus,requestId:t.requestId,retryAfterMs:t.retryAfterMs,attempt:t.attempt,causeChain:t.causeChain}},withAttempt(t,n){return new K(t.code,t.message,t.details,{...R.toRetryMetadata(t),attempt:P(n)})},DEFAULT_RETRYABLE_ERROR_CODES:Q,DEFAULT_NON_RETRYABLE_ERROR_CODES:Z};function Tt(t){switch(t){case"config":return"CRYPTO_CONFIG_ERROR";case"encrypt":return"CRYPTO_ENCRYPT_FAILED";case"decrypt":return"CRYPTO_DECRYPT_FAILED";case"hash":return"CRYPTO_HASH_FAILED";case"policy":return"CRYPTO_POLICY_VIOLATION"}}class M extends K{kind;fieldPath;failMode;openFallback;constructor(t,n,e,i={}){super(Tt(t),n,e,i);this.name="FieldCryptoError",this.kind=t,this.fieldPath=typeof i.fieldPath==="string"?i.fieldPath:void 0,this.failMode=i.failMode,this.openFallback=i.openFallback}toJSON(){return{...super.toJSON(),kind:this.kind,fieldPath:this.fieldPath,failMode:this.failMode,openFallback:this.openFallback}}}var Ot=["tenantId","providerId","messageId"];function v(t){if(typeof t!=="string")return;let n=t.trim();return n.length>0?n:void 0}function Rt(t){if(typeof t!=="number"||!Number.isFinite(t))return;if(t<=0||t>100)return;return t}function it(t){let n=[];for(let e of t){let i=v(e.kid),r=Rt(e.percentage);if(!i||r===void 0)continue;n.push({kid:i,percentage:r})}return n}function Et(t,n,e){let i=n.map((r)=>{let s=t[r];return typeof s==="string"?s:""}).join("|");return`${e}::${i}`}function xt(t){let n=2166136261;for(let e=0;e<t.length;e+=1)n^=t.charCodeAt(e),n=n*16777619>>>0;return n>>>0}function Mt(t,n){let e=0;for(let i of t)if(e+=i.percentage,n<e)return i.kid;return}function H(t,n,e){let i=it(n.buckets),r=v(n.defaultKid)??v(e);if(i.length===0)return r;let s=v(n.seed)??"kmsg-rollout-v1",p=n.stickyFields??Ot,f=Et(t,p,s),y=xt(f)%100;return Mt(i,y)??r}function st(t){return it(t.buckets).map((n)=>n.kid)}function T(t){if(typeof t!=="string")return;let n=t.trim();return n.length>0?n:void 0}function V(t){if(!Array.isArray(t))return[];return t.map((n)=>T(n)).filter((n)=>Boolean(n))}function G(t){let n=[],e=new Set;for(let i of t){let r=T(i);if(!r||e.has(r))continue;e.add(r),n.push(r)}return n}function vt(t){return T(t.providerId)??"default"}function rt(t){let n=T(t.activeKid)??"default",e=G([n,...V(t.decryptKids)]);return{async resolveEncryptKey(){return{kid:n}},async resolveDecryptKeys(){return e}}}function _(t){let n=typeof t.cacheTtlMs==="number"&&t.cacheTtlMs>=0?Math.trunc(t.cacheTtlMs):30000,e=T(t.fallback?.activeKid),i=V(t.fallback?.decryptKids),r;async function s(p){let f=Date.now();if(r&&f<r.expiresAt)return r.value;let y=await t.provider.loadKeySet(p),c=T(y.activeKid)??e??vt(p),a=G([c,...V(y.decryptKids),...i]),h={activeKid:c,decryptKids:a,refreshedAt:Date.now()};return r={value:h,expiresAt:Date.now()+n},h}return{async resolveEncryptKey(p){return{kid:(await s(p)).activeKid}},async resolveDecryptKeys(p){let f=await s(p);return f.decryptKids??[f.activeKid]}}}function yn(t,n){return{async resolveEncryptKey(e){let i=await t.resolveEncryptKey(e);return{kid:H(e,n,i.kid)??i.kid}},async resolveDecryptKeys(e){let i=await t.resolveEncryptKey(e),r=t.resolveDecryptKeys?await t.resolveDecryptKeys(e):[i.kid],s=H(e,n,i.kid),p=st(n);return G([...s?[s]:[],i.kid,...r??[],...p])}}}function on(t){return _({provider:{async loadKeySet(e){return t.client.getKeyState({...e,...t.keyAlias?{keyAlias:t.keyAlias}:{},...t.region?{region:t.region}:{}})}},cacheTtlMs:t.cacheTtlMs,fallback:{activeKid:t.fallbackActiveKid,decryptKids:t.fallbackDecryptKids}})}function N(t){if(typeof t!=="string")return;let n=t.trim();return n.length>0?n:void 0}function pt(t,n){return N(t[n])}function _t(t,n){if(!t)return[];return t.split(n).map((e)=>N(e)).filter((e)=>Boolean(e))}function ln(t={}){let n=t.env??(typeof process<"u"?process.env:{}),e=N(t.delimiter)??",",i=t.activeKidEnv??"KMSG_ACTIVE_KID",r=t.decryptKidsEnv??"KMSG_DECRYPT_KIDS",s=pt(n,i)??N(t.fallbackActiveKid)??"default",p=[s,..._t(pt(n,r),e),...t.fallbackDecryptKids??[]];return rt({activeKid:s,decryptKids:p})}function Kn(t){return _({provider:{async loadKeySet(e){return t.client.getKeyState({...e,...t.mountPath?{mountPath:t.mountPath}:{},...t.keyName?{keyName:t.keyName}:{},...t.namespace?{namespace:t.namespace}:{}})}},cacheTtlMs:t.cacheTtlMs,fallback:{activeKid:t.fallbackActiveKid,decryptKids:t.fallbackDecryptKids}})}function J(t){return typeof t==="function"}function yt(t){if(typeof t!=="string")return;let n=t.trim();return n.length>0?n:void 0}function ft(t,n,e){let i=t.fields[n];if(i)return i;if(n.startsWith("metadata.")){let r=t.fields["metadata.*"];if(r)return r}return e}function Nt(t,n={}){let e=[];if(!t||typeof t!=="object")return{valid:!1,issues:[{message:"fieldCrypto config must be an object",rule:"fieldCrypto.config.object",hint:"Provide a valid FieldCryptoConfig object"}]};if(!t.provider||typeof t.provider!=="object")e.push({message:"fieldCrypto provider is required",rule:"fieldCrypto.provider.required",path:"provider",hint:"Set provider with encrypt/decrypt/hash methods"});else{if(!J(t.provider.encrypt))e.push({message:"provider.encrypt must be a function",rule:"fieldCrypto.provider.encrypt.required",path:"provider.encrypt"});if(!J(t.provider.decrypt))e.push({message:"provider.decrypt must be a function",rule:"fieldCrypto.provider.decrypt.required",path:"provider.decrypt"});if(!J(t.provider.hash))e.push({message:"provider.hash must be a function",rule:"fieldCrypto.provider.hash.required",path:"provider.hash"})}if(!t.fields||typeof t.fields!=="object")e.push({message:"fieldCrypto.fields must be an object",rule:"fieldCrypto.fields.object",path:"fields",hint:"Define policies such as to, from, metadata.phoneNumber"});else{let s=Object.entries(t.fields);if(s.length===0)e.push({message:"fieldCrypto.fields must not be empty",rule:"fieldCrypto.fields.non_empty",path:"fields",hint:"Add at least one field mode mapping"});for(let[p,f]of s){if(!yt(p))e.push({message:"field path must be a non-empty string",rule:"fieldCrypto.fields.path.non_empty",path:"fields"});if(f!=="plain"&&f!=="encrypt"&&f!=="encrypt+hash"&&f!=="mask")e.push({message:`unsupported field mode: ${String(f)}`,rule:"fieldCrypto.fields.mode.supported",path:`fields.${p}`})}}let i=t.failMode??"closed",r=t.openFallback??"masked";if(i==="open"&&r==="plaintext"&&t.unsafeAllowPlaintextStorage!==!0)e.push({message:"openFallback=plaintext requires unsafeAllowPlaintextStorage=true",rule:"fieldCrypto.fail_open.plaintext_guard",path:"openFallback",hint:"Use masked/null fallback, or explicitly enable unsafe plaintext"});if(Array.isArray(t.aadFields)){if(t.aadFields.length===0)e.push({message:"aadFields must not be empty when provided",rule:"fieldCrypto.aad_fields.non_empty",path:"aadFields"});for(let s=0;s<t.aadFields.length;s+=1){let p=t.aadFields[s];if(!yt(p))e.push({message:"aadFields cannot include empty key",rule:"fieldCrypto.aad_fields.no_empty_key",path:`aadFields[${s}]`})}}if(n.secureMode&&!n.compatPlainColumns){let s=ft(t,"to","encrypt+hash"),p=ft(t,"from","encrypt+hash");if(s==="plain")e.push({message:"secure mode requires non-plain policy for `to` when compatPlainColumns=false",rule:"fieldCrypto.secure_mode.to_non_plain",path:"fields.to",hint:"Use encrypt+hash for lookup fields"});if(p==="plain")e.push({message:"secure mode requires non-plain policy for `from` when compatPlainColumns=false",rule:"fieldCrypto.secure_mode.from_non_plain",path:"fields.from",hint:"Use encrypt+hash for lookup fields"})}return{valid:e.length===0,issues:e}}function An(t,n={}){let e=Nt(t,n);if(e.valid)return;let i=e.issues[0];if(!i)throw new M("config","fieldCrypto config validation failed",{rule:"fieldCrypto.config.invalid",issues:e.issues});throw new M("config",i.message,{rule:i.rule,path:i.path,hint:i.hint,issues:e.issues},{fieldPath:i.path})}function I(t){let n=t instanceof Uint8Array?t:new Uint8Array(t),e=typeof globalThis<"u"?globalThis.Buffer:void 0;return(e?e.from(n).toString("base64"):btoa(String.fromCharCode(...n))).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function U(t){let n=t.replace(/-/g,"+").replace(/_/g,"/"),e=n.length%4===0?n:`${n}${"=".repeat(4-n.length%4)}`,i=typeof globalThis<"u"?globalThis.Buffer:void 0;if(i)return new Uint8Array(i.from(e,"base64"));let r=atob(e),s=new Uint8Array(r.length);for(let p=0;p<r.length;p+=1)s[p]=r.charCodeAt(p);return s}function ct(t,n){if(t instanceof Uint8Array)return t;if(t instanceof ArrayBuffer)return new Uint8Array(t);if(n==="base64url")return U(t);return new TextEncoder().encode(t)}function It(t){let n=t instanceof Uint8Array?t:new Uint8Array(t);return Array.from(n).map((e)=>e.toString(16).padStart(2,"0")).join("")}function S(t){let n=new Uint8Array(t.byteLength);return n.set(t),n.buffer}function ot(t){let n=JSON.parse(t);if(!n||typeof n!=="object"||typeof n.v!=="number"||typeof n.alg!=="string"||typeof n.kid!=="string"||typeof n.iv!=="string"||typeof n.tag!=="string"||typeof n.ct!=="string")throw Error("Invalid ciphertext envelope");return n}function Ut(t){if(typeof t==="string")return t;return JSON.stringify(t)}function wn(t){if(!t||typeof t!=="object")return!1;let n=t;return typeof n.v==="number"&&typeof n.alg==="string"&&typeof n.kid==="string"&&typeof n.iv==="string"&&typeof n.tag==="string"&&typeof n.ct==="string"}function Bt(t){let n=String(t??"").trim();if(n.length===0)return"";let e=n.startsWith("+"),i=n.replace(/\D/g,"");return e?`+${i}`:i}function at(t=3,n=2){return(e)=>{let i=String(e??"");if(i.length<=t+n)return"*".repeat(Math.max(0,i.length));let r=i.slice(0,t),s=i.slice(-n);return`${r}${"*".repeat(i.length-t-n)}${s}`}}function Sn(t){let n=t.algorithm??"A256GCM",e=t.keyEncoding??"base64url",i=t.hashKeyEncoding??e,r=new Map,s=new Map,p=(y)=>{let c=r.get(y);if(c)return c;let a=t.keys[y];if(!a)throw Error(`Unknown encryption key id: ${y}`);let h=ct(a,e),d=crypto.subtle.importKey("raw",S(h),"AES-GCM",!1,["encrypt","decrypt"]);return r.set(y,d),d},f=(y)=>{let c=s.get(y);if(c)return c;let a=t.hashKeys?.[y]??t.keys[y];if(!a)throw Error(`Unknown hash key id: ${y}`);let h=ct(a,i),d=crypto.subtle.importKey("raw",S(h),{name:"HMAC",hash:"SHA-256"},!1,["sign"]);return s.set(y,d),d};return{async encrypt(y){let c=y.kid??t.activeKid,a=await p(c),h=crypto.getRandomValues(new Uint8Array(12)),d=new TextEncoder().encode(JSON.stringify(y.aad??{})),A=new TextEncoder().encode(y.value),C=await crypto.subtle.encrypt({name:"AES-GCM",iv:S(h),additionalData:S(d),tagLength:128},a,S(A)),b=new Uint8Array(C),l=b.slice(b.length-16),o=b.slice(0,b.length-16);return{ciphertext:{v:1,alg:n,kid:c,iv:I(h),tag:I(l),ct:I(o)},kid:c}},async decrypt(y){let c=ot(y.ciphertext),a=y.candidateKids&&y.candidateKids.length>0?y.candidateKids:[c.kid],h=U(c.iv),d=U(c.tag),A=U(c.ct),C=new Uint8Array(A.length+d.length);C.set(A,0),C.set(d,A.length);let b=new TextEncoder().encode(JSON.stringify(y.aad??{})),l;for(let o of a)try{let F=await p(o),g=await crypto.subtle.decrypt({name:"AES-GCM",iv:S(h),additionalData:S(b),tagLength:128},F,S(C));return new TextDecoder().decode(new Uint8Array(g))}catch(F){l=F}throw Error(`Failed to decrypt ciphertext: ${l instanceof Error?l.message:String(l??"unknown")}`)},async hash(y){let c=y.kid??t.activeKid,a=await f(c),h=await crypto.subtle.sign("HMAC",a,S(new TextEncoder().encode(y.value)));return It(h)},mask(y){return at()(y.value)}}}function bn(){return{encrypt(t){return{ciphertext:JSON.stringify({v:1,alg:"NOOP",kid:"noop",iv:"",tag:"",ct:t.value})}},decrypt(t){try{return ot(t.ciphertext).ct}catch{return t.ciphertext}},hash(t){let n=Bt(t.value);return I(new TextEncoder().encode(n))},mask(t){return at()(t.value)}}}function un(t){return Ut(t)}var qt;((r)=>{r.DEBUG="DEBUG";r.INFO="INFO";r.WARN="WARN";r.ERROR="ERROR"})(qt||={});var $t=["to","from","phone","phoneNumber","recipient","sender","secret","apiKey","apiSecret","authorization","auth","token","password","payload","message","content","text"];function Ht(t){let n=t.toLowerCase();return $t.some((e)=>n.includes(e.toLowerCase()))}function Vt(t){let n=t.trim();if(n.length<=4)return"***";if(n.includes("@")){let[r,s]=n.split("@");return`${r.slice(0,2)}${"*".repeat(Math.max(1,r.length-2))}@${s}`}let e=n.slice(0,3),i=n.slice(-2);return`${e}${"*".repeat(Math.max(1,n.length-5))}${i}`}function W(t,n){if(n===void 0||n===null)return n;if(Ht(t)){if(typeof n==="string")return Vt(n);if(typeof n==="number"||typeof n==="boolean")return"***";if(Array.isArray(n))return"[REDACTED]";if(typeof n==="object")return"[REDACTED]"}if(Array.isArray(n))return n.map((e)=>W(t,e));if(typeof n==="object"){let e={};for(let[i,r]of Object.entries(n))e[i]=W(i,r);return e}return n}function Gt(t){let n={};for(let[e,i]of Object.entries(t))n[e]=W(e,i);return n}class Y{config;context;constructor(t={},n={}){this.context=t,this.config={level:"INFO",enableConsole:!0,enableJson:!1,enableColors:!0,...n}}shouldLog(t){let n=["DEBUG","INFO","WARN","ERROR"];return n.indexOf(t)>=n.indexOf(this.config.level)}formatMessage(t){let n=Gt(t.context);if(this.config.enableJson)return JSON.stringify({level:t.level,message:t.message,timestamp:t.timestamp.toISOString(),context:n,...t.error&&{error:{name:t.error.name,message:t.error.message,stack:t.error.stack}},...t.duration&&{duration:t.duration}});let e=t.timestamp.toISOString(),i=this.config.enableColors?this.colorizeLevel(t.level):t.level,r=Object.keys(n).length>0?` [${Object.entries(n).map(([p,f])=>`${p}=${f}`).join(", ")}]`:"",s=`${e} ${i}${r}: ${t.message}`;if(t.duration!==void 0)s+=` (${t.duration}ms)`;if(t.error)s+=`
|
|
2
|
+
${t.error.stack}`;return s}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 n=this.formatMessage(t);if(this.config.enableConsole)(t.level==="ERROR"?console.error:t.level==="WARN"?console.warn:console.log)(n);if(this.config.enableFile&&this.config.filePath);}debug(t,n={}){this.writeLog({level:"DEBUG",message:t,timestamp:new Date,context:{...this.context,...n}})}info(t,n={}){this.writeLog({level:"INFO",message:t,timestamp:new Date,context:{...this.context,...n}})}warn(t,n={},e){this.writeLog({level:"WARN",message:t,timestamp:new Date,context:{...this.context,...n},error:e})}error(t,n={},e){this.writeLog({level:"ERROR",message:t,timestamp:new Date,context:{...this.context,...n},error:e})}child(t){return new Y({...this.context,...t},this.config)}time(t){let n=Date.now();return()=>{let e=Date.now()-n;this.info(`${t} completed`,{duration:e})}}async measure(t,n,e={}){let i=Date.now(),r={...e,operation:t};this.debug(`Starting ${t}`,r);try{let s=await n(),p=Date.now()-i;return this.info(`Completed ${t}`,{...r,duration:p}),s}catch(s){let p=Date.now()-i;throw this.error(`Failed ${t}`,{...r,duration:p},s instanceof Error?s:Error(String(s))),s}}}var B;function dt(t,n){return new Y(t,n)}function m(){if(!B)B=dt();return B}function Dn(t){B=t}var mn={debug:(t,n)=>m().debug(t,n),info:(t,n)=>m().info(t,n),warn:(t,n,e)=>m().warn(t,n,e),error:(t,n,e)=>m().error(t,n,e),child:(t)=>m().child(t),time:(t)=>m().time(t),measure:(t,n,e)=>m().measure(t,n,e)};function Tn(t){let n=dt({},t);return async(e,i)=>{let r=Date.now(),p={requestId:Math.random().toString(36).substring(7),method:e.req.method,path:e.req.path,userAgent:e.req.header("user-agent")||"unknown"};n.info("Request started",p);try{await i();let f=Date.now()-r;n.info("Request completed",{...p,status:e.res.status,duration:f})}catch(f){let y=Date.now()-r;throw n.error("Request failed",{...p,duration:y},f instanceof Error?f:Error(String(f))),f}}}class O{static defaultOptions={maxAttempts:3,initialDelay:1000,maxDelay:30000,backoffMultiplier:2,jitter:!0,retryCondition:(t)=>R.isRetryable(t)};static async execute(t,n={}){let e={...O.defaultOptions,...n},i,r=e.initialDelay;for(let s=1;s<=e.maxAttempts;s++)try{return await t()}catch(p){if(i=p,s===e.maxAttempts||!e.retryCondition(i,s))throw i;let f=e.jitter?r+Math.random()*r*0.1:r;e.onRetry?.(i,s),await new Promise((y)=>setTimeout(y,f)),r=Math.min(r*e.backoffMultiplier,e.maxDelay)}throw i}static createRetryableFunction(t,n={}){return async(...e)=>{return O.execute(()=>t(...e),n)}}}class j{static async execute(t,n,e={}){let i={concurrency:5,retryOptions:{maxAttempts:3,initialDelay:1000,maxDelay:1e4,backoffMultiplier:2,jitter:!0},failFast:!1,...e},r=Date.now(),s=[],p=[],f=0,y=O.createRetryableFunction(n,i.retryOptions),c=j.createBatches(t,i.concurrency);for(let h of c){let d=h.map(async(A)=>{try{let C=await y(A);s.push({item:A,result:C})}catch(C){if(p.push({item:A,error:C}),i.failFast)throw new K("MESSAGE_SEND_FAILED",`Bulk operation failed fast after ${p.length} failures`,{totalItems:t.length,failedCount:p.length})}finally{f++,i.onProgress?.(f,t.length,p.length)}});if(await Promise.allSettled(d),i.failFast&&p.length>0)break}let a=Date.now()-r;return{successful:s,failed:p,summary:{total:t.length,successful:s.length,failed:p.length,duration:a}}}static createBatches(t,n){let e=[];for(let i=0;i<t.length;i+=n)e.push(t.slice(i,i+n));return e}}class lt{options;state="CLOSED";failureCount=0;lastFailureTime=0;nextAttemptTime=0;constructor(t){this.options=t}async execute(t){let n=Date.now();switch(this.state){case"OPEN":if(n<this.nextAttemptTime)throw new K("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 e=await Promise.race([t(),new Promise((i,r)=>setTimeout(()=>r(new K("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 e}catch(e){throw this.recordFailure(),e}}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 ht{maxRequests;windowMs;requests=[];constructor(t,n){this.maxRequests=t;this.windowMs=n}async acquire(){let t=Date.now();if(this.requests=this.requests.filter((n)=>t-n<this.windowMs),this.requests.length>=this.maxRequests){let n=Math.min(...this.requests),e=this.windowMs-(t-n);if(e>0)return await new Promise((i)=>setTimeout(i,e)),this.acquire()}this.requests.push(t)}canMakeRequest(){let t=Date.now();return this.requests=this.requests.filter((n)=>t-n<this.windowMs),this.requests.length<this.maxRequests}getRemainingRequests(){let t=Date.now();return this.requests=this.requests.filter((n)=>t-n<this.windowMs),Math.max(0,this.maxRequests-this.requests.length)}}var gt=(t)=>({isSuccess:!0,isFailure:!1,value:t}),Kt=(t)=>({isSuccess:!1,isFailure:!0,error:t}),Vn={map(t,n){if(t.isSuccess)return gt(n(t.value));return t},flatMap(t,n){if(t.isSuccess)return n(t.value);return t},mapError(t,n){if(t.isFailure)return Kt(n(t.error));return t},unwrap(t){if(t.isSuccess)return t.value;throw t.error},unwrapOr(t,n){if(t.isSuccess)return t.value;return n},unwrapOrElse(t,n){if(t.isSuccess)return t.value;return n(t.error)},match(t,n){if(t.isSuccess)return n.ok(t.value);return n.fail(t.error)},async fromPromise(t){try{let n=await t;return gt(n)}catch(n){return Kt(n)}},isOk(t){return t.isSuccess},isFail(t){return t.isFailure},tap(t,n){return n(t),t},tapOk(t,n){if(t.isSuccess)n(t.value);return t},tapErr(t,n){if(t.isFailure)n(t.error);return t},expect(t,n){if(t.isSuccess)return t.value;throw Error(n,{cause:t.error})}};function Jt(){let t=globalThis;return t.__K_MSG_ENV__??t.__ENV__??t.process?.env??{}}function Jn(t){let n=Jt()[t];if(typeof n==="string")return n;if(n===void 0)return;return String(n)}var Wt=["PENDING","SENT","DELIVERED","FAILED","CANCELLED","UNKNOWN"],Yt=["DELIVERED","FAILED","CANCELLED","UNKNOWN"],Ct=["PENDING","SENT"],jt=new Set(Wt),Ft=new Set(Yt),Qt=new Set(Ct);function Yn(t){return jt.has(t)}function jn(t){return Ft.has(t)}function Qn(t){return Ft.has(t)}function Zn(t){return Qt.has(t)}function Ln(){return Ct}var Zt=["ALIMTALK","FRIENDTALK","SMS","LMS","MMS","NSA","VOICE","FAX","RCS_SMS","RCS_LMS","RCS_MMS","RCS_TPL","RCS_ITPL","RCS_LTPL"],Lt=new Set(Zt);function zn(t){return Lt.has(t)}var te=["PENDING","SENT","FAILED"],Xt="PENDING",ne=(t)=>{let n=typeof t==="string"?t.trim().toUpperCase():"";if(n==="PENDING"||n==="SENT"||n==="FAILED")return n;return Xt};export{Nt as validateFieldCryptoConfig,ut as validateErrorRetryPolicy,un as toCiphertextEnvelopeString,Dn as setGlobalLogger,H as selectActiveKidByRollout,ft as resolveFieldMode,Jn as readRuntimeEnv,zt as parseErrorRetryPolicyFromJson,gt as ok,x as normalizeRetryAfterMs,tn as normalizeProviderError,Bt as normalizePhoneForHash,ne as normalizeMessageStatus,kt as normalizeErrorRetryPolicy,Tn as loggerMiddleware,mn as logger,Qn as isTerminalDeliveryStatus,Zn as isPollableDeliveryStatus,jn as isKMsgTerminalStatus,zn as isKMsgMessageType,Yn as isKMsgDeliveryStatus,wn as isCryptoEnvelope,Jt as getRuntimeEnvSource,st as getRolloutKnownKids,Ln as getPollableStatuses,m as getLogger,Kt as fail,Kn as createVaultTransitKeyResolver,rt as createStaticKeyResolver,yn as createRollingKeyResolver,_ as createRefreshableKeyResolver,bn as createNoopFieldCryptoProvider,dt as createLogger,ln as createEnvKeyResolver,at as createDefaultMasker,on as createAwsKmsKeyResolver,Sn as createAesGcmFieldCryptoProvider,An as assertFieldCryptoConfig,O as RetryHandler,Vn as Result,ht as RateLimiter,Xt as QUEUED_MESSAGE_STATUS,Y as Logger,qt as LogLevel,te as KNOWN_MESSAGE_STATUSES,E as KMsgErrorCode,K as KMsgError,Yt as KMSG_TERMINAL_STATUSES,Ct as KMSG_POLLABLE_STATUSES,Zt as KMSG_MESSAGE_TYPES,Wt as KMSG_DELIVERY_STATUSES,M as FieldCryptoError,R as ErrorUtils,lt as CircuitBreaker,j as BulkOperationHandler};
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=28C35CCFF2625FAA64756E2164756E21
|
|
5
5
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -22,6 +22,6 @@
|
|
|
22
22
|
"/**\n * Supported message types in the k-msg platform.\n *\n * - ALIMTALK: Kakao AlimTalk (notification talk) with approved template\n * - FRIENDTALK: Kakao FriendTalk (friend message, no template required)\n * - SMS: Short message (up to 90 bytes, typically ~90 Korean characters)\n * - LMS: Long message with subject line\n * - MMS: Multimedia message with image attachment\n * - NSA: Naver Smart Alarm (notification service)\n * - VOICE: Voice call message\n * - FAX: Fax transmission\n * - RCS_SMS/LMS/MMS: Rich Communication Services text/media messages\n * - RCS_TPL/ITPL/LTPL: RCS template-based messages\n */\nexport type MessageType =\n | \"ALIMTALK\"\n | \"FRIENDTALK\"\n | \"SMS\"\n | \"LMS\"\n | \"MMS\"\n | \"NSA\"\n | \"VOICE\"\n | \"FAX\"\n | \"RCS_SMS\"\n | \"RCS_LMS\"\n | \"RCS_MMS\"\n | \"RCS_TPL\"\n | \"RCS_ITPL\"\n | \"RCS_LTPL\";\n\nexport const KMSG_MESSAGE_TYPES = [\n \"ALIMTALK\",\n \"FRIENDTALK\",\n \"SMS\",\n \"LMS\",\n \"MMS\",\n \"NSA\",\n \"VOICE\",\n \"FAX\",\n \"RCS_SMS\",\n \"RCS_LMS\",\n \"RCS_MMS\",\n \"RCS_TPL\",\n \"RCS_ITPL\",\n \"RCS_LTPL\",\n] as const satisfies readonly MessageType[];\n\nconst KMSG_MESSAGE_TYPE_SET: ReadonlySet<string> = new Set(KMSG_MESSAGE_TYPES);\n\nexport function isKMsgMessageType(value: string): value is MessageType {\n return KMSG_MESSAGE_TYPE_SET.has(value);\n}\n\n/**\n * Message delivery status.\n *\n * - PENDING: Queued or in transit\n * - SENT: Successfully delivered to the carrier\n * - FAILED: Delivery failed\n */\nexport type MessageStatus = \"PENDING\" | \"SENT\" | \"FAILED\";\n\nexport const KNOWN_MESSAGE_STATUSES: MessageStatus[] = [\n \"PENDING\",\n \"SENT\",\n \"FAILED\",\n];\n\nexport const QUEUED_MESSAGE_STATUS: MessageStatus = \"PENDING\";\n\nexport const normalizeMessageStatus = (status: unknown): MessageStatus => {\n const raw = typeof status === \"string\" ? status.trim().toUpperCase() : \"\";\n\n if (raw === \"PENDING\" || raw === \"SENT\" || raw === \"FAILED\") {\n return raw;\n }\n\n return QUEUED_MESSAGE_STATUS;\n};\n\n/**\n * Variables for template interpolation.\n * Values are substituted into #{variableName} placeholders in templates.\n * @example { name: \"John\", code: \"123456\" }\n */\nexport type MessageVariables = Record<\n string,\n string | number | boolean | Date | null | undefined\n>;\n\nexport interface MessageButton {\n name: string;\n /**\n * Provider-dependent. Common values: \"WL\" (web link), \"AL\" (app link), ...\n */\n type: string;\n urlPc?: string;\n urlMobile?: string;\n}\n\nexport type MessageBinaryInput =\n | {\n /**\n * URL or file path (provider-dependent).\n */\n ref: string;\n filename?: string;\n contentType?: string;\n }\n | {\n bytes: Uint8Array;\n filename?: string;\n contentType?: string;\n }\n | {\n blob: Blob;\n filename?: string;\n contentType?: string;\n };\n\nexport interface MessageMedia {\n /**\n * Image attachment (used by MMS, FriendTalk image, RCS_MMS, ...).\n */\n image?: MessageBinaryInput;\n}\n\nexport interface CommonSendOptions {\n /**\n * Correlation id generated by KMsg (or provided by the caller).\n * Providers must echo this value back in SendResult.messageId.\n */\n messageId?: string;\n /**\n * Optional routing hint to force a specific provider by id.\n */\n providerId?: string;\n /**\n * Recipient phone number in Korean format without hyphens.\n * @example \"01012345678\"\n */\n to: string;\n /**\n * Sender number / sender id. Optional at KMsg layer; providers may require it.\n */\n from?: string;\n /**\n * Common delivery options understood by multiple providers.\n */\n options?: {\n scheduledAt?: Date;\n /**\n * Country code for providers that support it (e.g. SOLAPI).\n * Examples: \"82\", \"+82\".\n */\n country?: string;\n customFields?: Record<string, string>;\n };\n /**\n * Provider-specific escape hatch (use sparingly).\n */\n providerOptions?: Record<string, unknown>;\n}\n\nexport interface KakaoSendOptions {\n profileId?: string;\n plusId?: string;\n disableSms?: boolean;\n adFlag?: boolean;\n buttons?: unknown[];\n imageId?: string;\n /**\n * FriendTalk image upload link hint (SOLAPI).\n */\n imageLink?: string;\n // biome-ignore lint/suspicious/noExplicitAny: provider-specific extras\n [key: string]: any;\n}\n\nexport interface AlimTalkFailoverOptions {\n enabled?: boolean;\n fallbackChannel?: \"sms\" | \"lms\";\n fallbackContent?: string;\n fallbackTitle?: string;\n}\n\nexport type SendWarningCode =\n | \"FAILOVER_UNSUPPORTED_PROVIDER\"\n | \"FAILOVER_PARTIAL_PROVIDER\"\n | \"FALLBACK_CONTENT_MISSING\"\n | (string & {});\n\nexport interface SendWarning {\n code: SendWarningCode;\n message: string;\n details?: Record<string, unknown>;\n}\n\nexport interface NaverSendOptions {\n talkId?: string;\n /**\n * Override the template identifier for NSA (provider-specific).\n */\n templateId?: string;\n disableSms?: boolean;\n variables?: MessageVariables;\n buttons?: unknown[];\n // biome-ignore lint/suspicious/noExplicitAny: provider-specific extras\n [key: string]: any;\n}\n\nexport interface VoiceSendOptions {\n voiceType?: \"FEMALE\" | \"MALE\";\n headerMessage?: string;\n tailMessage?: string;\n replyRange?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;\n counselorNumber?: string;\n // biome-ignore lint/suspicious/noExplicitAny: provider-specific extras\n [key: string]: any;\n}\n\nexport interface FaxSendOptions {\n fileIds?: string[];\n fileUrls?: string[];\n // biome-ignore lint/suspicious/noExplicitAny: provider-specific extras\n [key: string]: any;\n}\n\nexport interface RcsSendOptions {\n brandId?: string;\n /**\n * Override template identifier for RCS_*TPL types.\n */\n templateId?: string;\n copyAllowed?: boolean;\n variables?: MessageVariables;\n mmsType?: \"M3\" | \"S3\" | \"M4\" | \"S4\" | \"M5\" | \"S5\" | \"M6\" | \"S6\";\n commercialType?: boolean;\n disableSms?: boolean;\n buttons?: unknown[];\n additionalBody?: {\n title?: string;\n description?: string;\n imageId?: string;\n buttons?: unknown[];\n // biome-ignore lint/suspicious/noExplicitAny: provider-specific extras\n [key: string]: any;\n };\n // biome-ignore lint/suspicious/noExplicitAny: provider-specific extras\n [key: string]: any;\n}\n\nexport interface SmsSendOptions extends CommonSendOptions {\n type: \"SMS\" | \"LMS\" | \"MMS\";\n text: string;\n /**\n * LMS/MMS subject.\n */\n subject?: string;\n /**\n * Media attachments. For backwards compatibility, `imageUrl` is treated as a legacy alias\n * for `media.image.ref` by some providers.\n */\n media?: MessageMedia;\n /**\n * Optional image URL for MMS (provider-specific).\n */\n imageUrl?: string;\n variables?: MessageVariables;\n}\n\nexport interface AlimTalkSendOptions extends CommonSendOptions {\n type: \"ALIMTALK\";\n templateId: string;\n variables: MessageVariables;\n kakao?: KakaoSendOptions;\n failover?: AlimTalkFailoverOptions;\n}\n\nexport interface FriendTalkSendOptions extends CommonSendOptions {\n type: \"FRIENDTALK\";\n text: string;\n media?: MessageMedia;\n imageUrl?: string;\n buttons?: MessageButton[];\n variables?: MessageVariables;\n kakao?: KakaoSendOptions;\n}\n\nexport interface NsaSendOptions extends CommonSendOptions {\n type: \"NSA\";\n templateId: string;\n variables: MessageVariables;\n naver?: NaverSendOptions;\n}\n\nexport interface VoiceMessageSendOptions extends CommonSendOptions {\n type: \"VOICE\";\n text: string;\n variables?: MessageVariables;\n voice?: VoiceSendOptions;\n}\n\nexport interface FaxMessageSendOptions extends CommonSendOptions {\n type: \"FAX\";\n fax: FaxSendOptions;\n}\n\nexport interface RcsTextSendOptions extends CommonSendOptions {\n type: \"RCS_SMS\" | \"RCS_LMS\" | \"RCS_MMS\";\n text: string;\n subject?: string;\n media?: MessageMedia;\n imageUrl?: string;\n variables?: MessageVariables;\n rcs?: RcsSendOptions;\n}\n\nexport interface RcsTemplateSendOptions extends CommonSendOptions {\n type: \"RCS_TPL\" | \"RCS_ITPL\" | \"RCS_LTPL\";\n templateId: string;\n variables: MessageVariables;\n rcs?: RcsSendOptions;\n}\n\n/**\n * Union of all supported send option types.\n * Use this for type narrowing based on the `type` discriminator.\n */\nexport type SendOptions =\n | SmsSendOptions\n | AlimTalkSendOptions\n | FriendTalkSendOptions\n | NsaSendOptions\n | VoiceMessageSendOptions\n | FaxMessageSendOptions\n | RcsTextSendOptions\n | RcsTemplateSendOptions;\n\n/**\n * Relaxed SMS input type that allows omitting `type` and using `content` as an alias for `text`.\n * Used for developer convenience when sending simple SMS messages.\n */\nexport type SmsDefaultSendInput = Omit<SmsSendOptions, \"type\" | \"text\"> & {\n type?: undefined;\n /**\n * SMS text. If omitted, `content` is used.\n */\n text?: string;\n /**\n * Alias for `text`.\n */\n content?: string;\n};\n\n/**\n * Developer-facing input type.\n * - SMS defaults allow omitting `type` and using `content`.\n * - Other channels are modeled as discriminated unions on `type`.\n */\nexport type SendInput = SendOptions | SmsDefaultSendInput;\n\n/**\n * Result of a message send operation.\n * Returned by Provider.send() and KMsg.send().\n */\nexport interface SendResult {\n /**\n * Correlation id (equals the request `messageId`).\n */\n messageId: string;\n /**\n * Identifier of the provider that handled this message.\n */\n providerId: string;\n /**\n * Provider-specific message identifier for tracking.\n */\n providerMessageId?: string;\n /**\n * Current delivery status of the message.\n */\n status: MessageStatus;\n /**\n * The message type that was sent.\n */\n type: MessageType;\n /**\n * Recipient phone number.\n */\n to: string;\n /**\n * Non-fatal warnings (e.g., failover partially applied).\n */\n warnings?: SendWarning[];\n /**\n * Raw provider response for debugging (provider-specific shape).\n */\n raw?: unknown;\n}\n"
|
|
23
23
|
],
|
|
24
24
|
"mappings": "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",
|
|
25
|
-
"debugId": "
|
|
25
|
+
"debugId": "28C35CCFF2625FAA64756E2164756E21",
|
|
26
26
|
"names": []
|
|
27
27
|
}
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@k-msg/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.27.0",
|
|
4
4
|
"packageManager": "bun@1.3.8",
|
|
5
5
|
"description": "Core types and interfaces for K-Message platform",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "./dist/index.js",
|
|
8
8
|
"module": "./dist/index.mjs",
|
|
9
9
|
"types": "./dist/index.d.ts",
|
|
10
|
+
"sideEffects": false,
|
|
10
11
|
"exports": {
|
|
11
12
|
".": {
|
|
12
13
|
"types": "./dist/index.d.ts",
|
|
@@ -19,8 +20,8 @@
|
|
|
19
20
|
},
|
|
20
21
|
"scripts": {
|
|
21
22
|
"build": "bun run clean && bun run build:esm && bun run build:cjs && bun run build:types",
|
|
22
|
-
"build:esm": "bun build ./src/index.ts --outdir ./dist --format esm --minify --sourcemap --entry-naming '[name].mjs' --external 'bun:test'",
|
|
23
|
-
"build:cjs": "bun build ./src/index.ts --outdir ./dist --format cjs --minify --sourcemap --entry-naming '[name].js' --external 'bun:test'",
|
|
23
|
+
"build:esm": "bun build ./src/index.ts --outdir ./dist --format esm --minify --sourcemap --entry-naming '[name].mjs' --external 'bun:test' --external 'zod'",
|
|
24
|
+
"build:cjs": "bun build ./src/index.ts --outdir ./dist --format cjs --minify --sourcemap --entry-naming '[name].js' --external 'bun:test' --external 'zod'",
|
|
24
25
|
"build:types": "tsc",
|
|
25
26
|
"dev": "tsc --watch",
|
|
26
27
|
"test": "bun run test:unit",
|