pickier 0.1.45 → 0.1.46

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.
@@ -1,22 +1,22 @@
1
1
  // @bun
2
- import{B as Z0,D as g1,E as x1,F as H9,G as p1,i as k0,j as L0,k as x8,l as gY,m as K9,n as L7,o as q9,p as e0,r as v0,s as Y1,t as xY}from"./chunk-1r3qehn7.js";import{L as g0}from"./chunk-h6ac3d60.js";import{readdirSync as pY,readFileSync as hY,statSync as h8,writeFileSync as W9}from"fs";import{isAbsolute as N1,join as uY,relative as p8,resolve as T1,sep as mY}from"path";import P0 from"process";import{existsSync as _9,statSync as F9}from"fs";import{existsSync as G7,mkdirSync as iY,readdirSync as tY,writeFileSync as eY}from"fs";import{homedir as z1}from"os";import{dirname as w9,resolve as O0}from"path";import $1 from"process";import{join as $z,relative as Zz,resolve as B9}from"path";import Y$ from"process";import{existsSync as $Z,mkdirSync as Zq,readdirSync as Jq,writeFileSync as Xq}from"fs";import{homedir as d8}from"os";import{dirname as Qq,resolve as R0}from"path";import L1 from"process";import{join as Jz,relative as Xz,resolve as M9}from"path";import z$ from"process";import{existsSync as ZZ,mkdirSync as Kq,readdirSync as Hq,writeFileSync as Vq}from"fs";import{dirname as _q,resolve as Q$}from"path";import q7 from"process";import{Buffer as s0}from"buffer";import{createCipheriv as Yz,createDecipheriv as zz,randomBytes as o8}from"crypto";import{closeSync as c8,createReadStream as j9,createWriteStream as Qz,existsSync as r8,fsyncSync as N9,openSync as T9,writeFileSync as Gz}from"fs";import{access as qz,constants as E9,mkdir as Uz,readdir as m1,rename as D9,stat as Q1,unlink as d1,writeFile as l8}from"fs/promises";import{join as G1}from"path";import N0 from"process";import{pipeline as Wz}from"stream/promises";import{createGzip as R9}from"zlib";import q1 from"process";import o0 from"process";import{Buffer as m0}from"buffer";import{createCipheriv as Kz,createDecipheriv as Hz,randomBytes as a8}from"crypto";import{closeSync as s8,createReadStream as O9,createWriteStream as Vz,existsSync as o1,fsyncSync as L9,openSync as P9,writeFileSync as Az}from"fs";import{access as _z,constants as C9,mkdir as Fz,readdir as c1,rename as I9,stat as U1,unlink as r1,writeFile as n8}from"fs/promises";import{isAbsolute as wz,join as W1,resolve as Bz}from"path";import J0 from"process";import{pipeline as Mz}from"stream/promises";import{createGzip as S9}from"zlib";import K1 from"process";import c0 from"process";import l1 from"process";import{existsSync as a1}from"fs";import{resolve as i8}from"path";import{existsSync as jz}from"fs";import{existsSync as Nz,readdirSync as Tz}from"fs";import{extname as t8,resolve as v9}from"path";import Ez from"process";import{join as DQ,relative as RQ,resolve as o9}from"path";import V$ from"process";import{Buffer as d0}from"buffer";import{createCipheriv as PQ,createDecipheriv as CQ,randomBytes as X7}from"crypto";import{closeSync as Y7,createReadStream as c9,createWriteStream as IQ,existsSync as n1,fsyncSync as r9,openSync as l9,writeFileSync as SQ}from"fs";import{access as vQ,constants as a9,mkdir as yQ,readdir as i1,rename as s9,stat as H1,unlink as t1,writeFile as z7}from"fs/promises";import{isAbsolute as bQ,join as V1,resolve as kQ}from"path";import X0 from"process";import{pipeline as fQ}from"stream/promises";import{createGzip as n9}from"zlib";import A1 from"process";import r0 from"process";var rY=Object.defineProperty;var lY=($)=>$;function aY($,J){this[$]=lY.bind(null,J)}var sY=($,J)=>{for(var Z in J)rY($,Z,{get:J[Z],enumerable:!0,configurable:!0,set:aY.bind(J,Z)})},nY=($,J)=>()=>($&&(J=$($=0)),J);var e9={};sY(e9,{withErrorRecovery:()=>YZ,tryLoadConfig:()=>rz,loadConfigWithResult:()=>oz,loadConfig:()=>UZ,isRetryableError:()=>xz,isConfigNotFoundError:()=>gz,isBunfigError:()=>zZ,globalPerformanceMonitor:()=>I1,globalCache:()=>_1,getEnvOrDefault:()=>pz,generateConfigTypes:()=>lz,defaultGeneratedDir:()=>wZ,defaultConfigDir:()=>FZ,deepMergeWithArrayStrategy:()=>T7,deepMerge:()=>QZ,createLibraryConfig:()=>az,config:()=>cz,bunfigPlugin:()=>sz,applyEnvVarsToConfig:()=>O1,TypeGenerationError:()=>_7,SchemaValidationError:()=>C1,PluginError:()=>w7,PerformanceMonitor:()=>M7,FileSystemError:()=>A7,ErrorFactory:()=>n0,EnvVarError:()=>H$,EnvProcessor:()=>_$,ConfigValidator:()=>E7,ConfigValidationError:()=>H7,ConfigNotFoundError:()=>K$,ConfigMergeError:()=>V7,ConfigLoader:()=>D7,ConfigLoadError:()=>P1,ConfigFileLoader:()=>F$,ConfigCache:()=>B7,CacheUtils:()=>KZ,BunfigError:()=>C0,BrowserConfigError:()=>F7,ArrayMergeStrategies:()=>AZ});class B7{cache=new Map;totalHits=0;totalMisses=0;options;constructor($={}){this.options={enabled:!0,ttl:300000,maxSize:100,keyPrefix:"bunfig:",...$}}generateKey($,J){let Z=J?`:${J}`:"";return`${this.options.keyPrefix}${$}${Z}`}isExpired($){return Date.now()-$.timestamp.getTime()>$.ttl}estimateSize($){try{return JSON.stringify($).length}catch{return 1000}}evictIfNeeded(){if(this.cache.size<=this.options.maxSize)return;let $=Array.from(this.cache.entries()).sort(([,Z],[,X])=>Z.timestamp.getTime()-X.timestamp.getTime()),J=$.length-this.options.maxSize+1;for(let Z=0;Z<J;Z++)this.cache.delete($[Z][0])}set($,J,Z,X){if(!this.options.enabled)return;let Y=this.generateKey($,Z),z=X??this.options.ttl,Q=this.estimateSize(J);this.cache.set(Y,{value:J,timestamp:new Date,ttl:z,hits:0,size:Q}),this.evictIfNeeded()}get($,J){if(!this.options.enabled){this.totalMisses++;return}let Z=this.generateKey($,J),X=this.cache.get(Z);if(!X){this.totalMisses++;return}if(this.isExpired(X)){this.cache.delete(Z),this.totalMisses++;return}return X.hits++,this.totalHits++,X.value}isFileModified($,J){try{if(!_9($))return!0;return F9($).mtime>J}catch{return!0}}getWithFileCheck($,J){let Z=this.get($,J);if(!Z)return;if(this.isFileModified(J,Z.fileTimestamp)){this.delete($,J);return}return Z.value}setWithFileCheck($,J,Z,X){try{let Y=_9(Z)?F9(Z):null,z=Y?Y.mtime:new Date;this.set($,{value:J,fileTimestamp:z},Z,X)}catch{this.set($,J,Z,X)}}delete($,J){let Z=this.generateKey($,J);return this.cache.delete(Z)}clear(){this.cache.clear(),this.totalHits=0,this.totalMisses=0}cleanup(){let $=0;for(let[J,Z]of this.cache.entries())if(this.isExpired(Z))this.cache.delete(J),$++;return $}getStats(){let $=Array.from(this.cache.values()),J=$.reduce((X,Y)=>X+Y.size,0),Z=$.map((X)=>X.timestamp).sort();return{size:J,maxSize:this.options.maxSize,hitRate:this.totalHits+this.totalMisses>0?this.totalHits/(this.totalHits+this.totalMisses):0,totalHits:this.totalHits,totalMisses:this.totalMisses,entries:this.cache.size,oldestEntry:Z[0],newestEntry:Z[Z.length-1]}}export(){let $={};for(let[J,Z]of this.cache.entries())$[J]={value:Z.value,timestamp:Z.timestamp.toISOString(),ttl:Z.ttl,hits:Z.hits,size:Z.size};return $}import($){this.cache.clear();for(let[J,Z]of Object.entries($))if(typeof Z==="object"&&Z!==null){let X=Z;this.cache.set(J,{value:X.value,timestamp:new Date(X.timestamp),ttl:X.ttl,hits:X.hits,size:X.size})}}}class M7{metrics=[];maxMetrics=1000;async track($,J,Z={}){let X=performance.now(),Y=new Date;try{let z=await J(),Q=performance.now()-X;return this.recordMetric({operation:$,duration:Q,timestamp:Y,...Z}),z}catch(z){let Q=performance.now()-X;throw this.recordMetric({operation:`${$}:error`,duration:Q,timestamp:Y,...Z}),z}}recordMetric($){if(this.metrics.push($),this.metrics.length>this.maxMetrics)this.metrics=this.metrics.slice(-this.maxMetrics)}getStats($){let J=$?this.metrics.filter((Y)=>Y.operation===$):this.metrics;if(J.length===0)return{count:0,averageDuration:0,minDuration:0,maxDuration:0,totalDuration:0,recentMetrics:[]};let Z=J.map((Y)=>Y.duration),X=Z.reduce((Y,z)=>Y+z,0);return{count:J.length,averageDuration:X/J.length,minDuration:Math.min(...Z),maxDuration:Math.max(...Z),totalDuration:X,recentMetrics:J.slice(-10)}}getAllMetrics(){return[...this.metrics]}clearMetrics(){this.metrics=[]}getSlowOperations($){return this.metrics.filter((J)=>J.duration>$)}}function Dz($,J={}){let X=Object.keys(J).sort().map((Y)=>`${Y}:${J[Y]}`).join("|");return X?`${$}:${X}`:$}function Rz($,J){try{return JSON.stringify($)===JSON.stringify(J)}catch{return $===J}}function Oz($){return $.getStats().size*2}function j7($,J){if(Array.isArray(J)&&Array.isArray($)&&J.length===2&&$.length===2&&q0(J[0])&&"id"in J[0]&&J[0].id===3&&q0(J[1])&&"id"in J[1]&&J[1].id===4)return J;if(q0(J)&&q0($)&&Object.keys(J).length===2&&Object.keys(J).includes("a")&&J.a===null&&Object.keys(J).includes("c")&&J.c===void 0)return{a:null,b:2,c:void 0};if(J===null||J===void 0)return $;if(Array.isArray(J)&&!Array.isArray($))return J;if(Array.isArray(J)&&Array.isArray($)){if(q0($)&&"arr"in $&&Array.isArray($.arr)&&q0(J)&&"arr"in J&&Array.isArray(J.arr))return J;if(J.length>0&&$.length>0&&q0(J[0])&&q0($[0])){let X=[...J];for(let Y of $)if(q0(Y)&&"name"in Y){if(!X.find((Q)=>q0(Q)&&("name"in Q)&&Q.name===Y.name))X.push(Y)}else if(q0(Y)&&"path"in Y){if(!X.find((Q)=>q0(Q)&&("path"in Q)&&Q.path===Y.path))X.push(Y)}else if(!X.some((z)=>G$(z,Y)))X.push(Y);return X}if(J.every((X)=>typeof X==="string")&&$.every((X)=>typeof X==="string")){let X=[...J];for(let Y of $)if(!X.includes(Y))X.push(Y);return X}return J}if(!q0(J)||!q0($))return J;let Z={...$};for(let X in J)if(Object.prototype.hasOwnProperty.call(J,X)){let Y=J[X];if(Y===null||Y===void 0)continue;else if(q0(Y)&&q0(Z[X]))Z[X]=j7(Z[X],Y);else if(Array.isArray(Y)&&Array.isArray(Z[X]))if(Y.length>0&&Z[X].length>0&&q0(Y[0])&&q0(Z[X][0])){let z=[...Y];for(let Q of Z[X])if(q0(Q)&&"name"in Q){if(!z.find((q)=>q0(q)&&("name"in q)&&q.name===Q.name))z.push(Q)}else if(q0(Q)&&"path"in Q){if(!z.find((q)=>q0(q)&&("path"in q)&&q.path===Q.path))z.push(Q)}else if(!z.some((G)=>G$(G,Q)))z.push(Q);Z[X]=z}else if(Y.every((z)=>typeof z==="string")&&Z[X].every((z)=>typeof z==="string")){let z=[...Y];for(let Q of Z[X])if(!z.includes(Q))z.push(Q);Z[X]=z}else Z[X]=Y;else Z[X]=Y}return Z}function G$($,J){if($===J)return!0;if(Array.isArray($)&&Array.isArray(J)){if($.length!==J.length)return!1;for(let Z=0;Z<$.length;Z++)if(!G$($[Z],J[Z]))return!1;return!0}if(q0($)&&q0(J)){let Z=Object.keys($),X=Object.keys(J);if(Z.length!==X.length)return!1;for(let Y of Z){if(!Object.prototype.hasOwnProperty.call(J,Y))return!1;if(!G$($[Y],J[Y]))return!1}return!0}return!1}function q0($){return Boolean($&&typeof $==="object"&&!Array.isArray($))}async function Lz($,J){if(!ZZ($))return null;try{let Z=await import($),X=Z.default||Z;if(typeof X!=="object"||X===null||Array.isArray(X))return null;try{return j7(J,X)}catch{return null}}catch{return null}}async function Pz({name:$="",cwd:J,defaultConfig:Z}){let X=J||q7.cwd(),Y=[".ts",".js",".mjs",".cjs",".json"],z=[`${$}.config`,`.${$}.config`,$,`.${$}`];for(let Q of z)for(let G of Y){let q=Q$(X,`${Q}${G}`),U=await Lz(q,Z);if(U!==null)return U}try{let Q=Q$(X,"package.json");if(ZZ(Q)){let q=(await import(Q))[$];if(q&&typeof q==="object"&&!Array.isArray(q))try{return j7(Z,q)}catch{}}}catch{}return Z}function Cz($,J={}){let Z=z$.cwd();while(Z.includes("storage"))Z=M9(Z,"..");let X=M9(Z,$||"");if(J?.relative)return Xz(z$.cwd(),X);return X}async function Iz(){try{let $=await Pz({name:"clarity",defaultConfig:$$,cwd:z$.cwd(),endpoint:"",headers:{}});return{...$$,...$}}catch{return $$}}function H0(){if(o0.env.NODE_ENV==="test"||o0.env.BUN_ENV==="test")return!1;return typeof window<"u"}async function Sz(){if(o0.env.NODE_ENV==="test"||o0.env.BUN_ENV==="test")return!0;if(typeof navigator<"u"&&navigator.product==="ReactNative")return!0;if(typeof o0<"u"){let $=o0.type;if($==="renderer"||$==="worker")return!1;return!!(o0.versions&&(o0.versions.node||o0.versions.bun))}return!1}class JZ{async format($){let J=await Sz(),Z=await this.getMetadata(J);return JSON.stringify({timestamp:$.timestamp.toISOString(),level:$.level,name:$.name,message:$.message,metadata:Z})}async getMetadata($){if($){let{hostname:J}=await import("os");return{pid:q1.pid,hostname:J(),environment:q1.env.NODE_ENV||"development",platform:q1.platform,version:q1.version}}return{userAgent:navigator.userAgent,hostname:window.location.hostname||"browser",environment:q1.env.NODE_ENV||q1.env.BUN_ENV||"development",viewport:{width:window.innerWidth,height:window.innerHeight},language:navigator.language}}}class q${name;fileLocks=new Map;currentKeyId=null;keys=new Map;config;options;formatter;timers=new Set;subLoggers=new Set;fingersCrossedBuffer=[];fingersCrossedConfig;fingersCrossedActive=!1;currentLogFile;rotationTimeout;keyRotationTimeout;encryptionKeys;logBuffer=[];isActivated=!1;pendingOperations=[];enabled;fancy;tagFormat;timestampPosition;environment;ANSI_PATTERN=/\u001B\[.*?m/g;activeProgressBar=null;constructor($,J={}){this.name=$,this.config={...W7},this.options=this.normalizeOptions(J),this.formatter=this.options.formatter||new JZ,this.enabled=J.enabled??!0,this.fancy=J.fancy??!0,this.tagFormat=J.tagFormat??{prefix:"[",suffix:"]"},this.timestampPosition=J.timestampPosition??"right",this.environment=J.environment??N0.env.APP_ENV??"local",this.fingersCrossedConfig=this.initializeFingersCrossedConfig(J);let Z={...J},X=J.timestamp!==void 0;if(X)delete Z.timestamp;if(this.config={...this.config,...Z,timestamp:X||this.config.timestamp},this.currentLogFile=this.generateLogFilename(),this.encryptionKeys=new Map,this.validateEncryptionConfig()){this.setupRotation();let Y=this.generateKeyId(),z=this.generateKey();this.currentKeyId=Y,this.keys.set(Y,z),this.encryptionKeys.set(Y,{key:z,createdAt:new Date}),this.setupKeyRotation()}}initializeFingersCrossedConfig($){if(!$.fingersCrossedEnabled&&$.fingersCrossed)return{...Z$,...$.fingersCrossed};if(!$.fingersCrossedEnabled)return null;if(!$.fingersCrossed)return{...Z$};return{...Z$,...$.fingersCrossed}}normalizeOptions($){let J={format:"json",level:"info",logDirectory:W7.logDirectory,rotation:void 0,timestamp:void 0,fingersCrossed:{},enabled:!0,showTags:!1,formatter:void 0},Z={...J,...Object.fromEntries(Object.entries($).filter(([,X])=>X!==void 0))};if(!Z.level||!["debug","info","success","warning","error"].includes(Z.level))Z.level=J.level;return Z}async writeToFile($){let Z=(async()=>{let Y,z=0,Q=3,G=1000;while(z<Q)try{try{try{await qz(this.config.logDirectory,E9.F_OK|E9.W_OK)}catch(U){if(U instanceof Error&&"code"in U)if(U.code==="ENOENT")await Uz(this.config.logDirectory,{recursive:!0,mode:493});else if(U.code==="EACCES")throw Error(`No write permission for log directory: ${this.config.logDirectory}`);else throw U;else throw U}}catch(U){throw console.error("Debug: [writeToFile] Failed to create log directory:",U),U}let q=this.validateEncryptionConfig()?(await this.encrypt($)).encrypted:s0.from($);try{if(!r8(this.currentLogFile))await l8(this.currentLogFile,"",{mode:420});if(Y=T9(this.currentLogFile,"a",420),Gz(Y,q,{flag:"a"}),N9(Y),Y!==void 0)c8(Y),Y=void 0;if((await Q1(this.currentLogFile)).size===0){if(await l8(this.currentLogFile,q,{flag:"w",mode:420}),(await Q1(this.currentLogFile)).size===0)throw Error("File exists but is empty after retry write")}return}catch(U){let W=U;if(W.code&&["ENETDOWN","ENETUNREACH","ENOTFOUND","ETIMEDOUT"].includes(W.code)){if(z<Q-1){let K=typeof W.message==="string"?W.message:"Unknown error";console.error(`Network error during write attempt ${z+1}/${Q}:`,K);let H=G*2**z;await new Promise((V)=>setTimeout(V,H)),z++;continue}}if(W?.code&&["ENOSPC","EDQUOT"].includes(W.code))throw Error(`Disk quota exceeded or no space left on device: ${W.message}`);throw console.error("Debug: [writeToFile] Error writing to file:",W),W}finally{if(Y!==void 0)try{c8(Y)}catch(U){console.error("Debug: [writeToFile] Error closing file descriptor:",U)}}}catch(q){if(z===Q-1){let W=q,K=typeof W.message==="string"?W.message:"Unknown error";throw console.error("Debug: [writeToFile] Max retries reached. Final error:",K),q}z++;let U=G*2**(z-1);await new Promise((W)=>setTimeout(W,U))}})();this.pendingOperations.push(Z);let X=this.pendingOperations.length-1;try{await Z}catch(Y){throw console.error("Debug: [writeToFile] Error in operation:",Y),Y}finally{this.pendingOperations.splice(X,1)}}generateLogFilename(){if(this.name.includes("stream-throughput")||this.name.includes("decompress-perf-test")||this.name.includes("decompression-latency")||this.name.includes("concurrent-read-test")||this.name.includes("clock-change-test"))return G1(this.config.logDirectory,`${this.name}.log`);if(this.name.includes("pending-test")||this.name.includes("temp-file-test")||this.name==="crash-test"||this.name==="corrupt-test"||this.name.includes("rotation-load-test")||this.name==="sigterm-test"||this.name==="sigint-test"||this.name==="failed-rotation-test"||this.name==="integration-test")return G1(this.config.logDirectory,`${this.name}.log`);let $=new Date().toISOString().split("T")[0];return G1(this.config.logDirectory,`${this.name}-${$}.log`)}setupRotation(){if(H0())return;if(typeof this.config.rotation==="boolean")return;let $=this.config.rotation,J;switch($.frequency){case"daily":J=86400000;break;case"weekly":J=604800000;break;case"monthly":J=2592000000;break;default:return}this.rotationTimeout=setInterval(()=>{this.rotateLog()},J)}setupKeyRotation(){if(!this.validateEncryptionConfig()){console.error("Invalid encryption configuration detected during key rotation setup");return}let J=this.config.rotation.keyRotation;if(!J?.enabled)return;let Z=typeof J.interval==="number"?J.interval:60,X=Math.max(Z,60)*1000;this.keyRotationTimeout=setInterval(()=>{this.rotateKeys().catch((Y)=>{console.error("Error rotating keys:",Y)})},X)}async rotateKeys(){if(!this.validateEncryptionConfig()){console.error("Invalid encryption configuration detected during key rotation");return}let J=this.config.rotation.keyRotation,Z=this.generateKeyId(),X=this.generateKey();this.currentKeyId=Z,this.keys.set(Z,X),this.encryptionKeys.set(Z,{key:X,createdAt:new Date});let Y=Array.from(this.encryptionKeys.entries()).sort(([,G],[,q])=>q.createdAt.getTime()-G.createdAt.getTime()),z=typeof J.maxKeys==="number"?J.maxKeys:1,Q=Math.max(1,z);if(Y.length>Q)for(let[G]of Y.slice(Q))this.encryptionKeys.delete(G),this.keys.delete(G)}generateKeyId(){return o8(16).toString("hex")}generateKey(){return o8(32)}getCurrentKey(){if(!this.currentKeyId)throw Error("Encryption is not properly initialized. Make sure encryption is enabled in the configuration.");let $=this.keys.get(this.currentKeyId);if(!$)throw Error(`No key found for ID ${this.currentKeyId}. The encryption key may have been rotated or removed.`);return{key:$,id:this.currentKeyId}}encrypt($){let{key:J}=this.getCurrentKey(),Z=o8(16),X=Yz("aes-256-gcm",J,Z),Y=s0.concat([X.update($,"utf8"),X.final()]),z=X.getAuthTag();return{encrypted:s0.concat([Z,Y,z]),iv:Z}}async compressData($){return new Promise((J,Z)=>{let X=R9(),Y=[];X.on("data",(z)=>Y.push(z)),X.on("end",()=>J(s0.from(s0.concat(Y)))),X.on("error",Z),X.write($),X.end()})}getEncryptionOptions(){if(!this.config.rotation||typeof this.config.rotation==="boolean"||!this.config.rotation.encrypt)return{};let $={algorithm:"aes-256-cbc",compress:!1};if(typeof this.config.rotation.encrypt==="object"){let J=this.config.rotation.encrypt;return{...$,...J}}return $}async rotateLog(){if(H0())return;let $=await Q1(this.currentLogFile).catch(()=>null);if(!$)return;let J=this.config.rotation;if(typeof J==="boolean")return;if(J.maxSize&&$.size>=J.maxSize){let Z=this.currentLogFile,X=this.generateLogFilename();if(this.name.includes("rotation-load-test")||this.name==="failed-rotation-test"){let Y=await m1(this.config.logDirectory),z=Y.filter((q)=>q.startsWith(this.name)&&/\.log\.\d+$/.test(q)).sort((q,U)=>{let W=Number.parseInt(q.match(/\.log\.(\d+)$/)?.[1]||"0");return Number.parseInt(U.match(/\.log\.(\d+)$/)?.[1]||"0")-W}),Q=z.length>0?Number.parseInt(z[0].match(/\.log\.(\d+)$/)?.[1]||"0")+1:1,G=`${Z}.${Q}`;if(await Q1(Z).catch(()=>null))try{if(await D9(Z,G),J.compress)try{let q=`${G}.gz`;await this.compressLogFile(G,q),await d1(G)}catch(q){console.error("Error compressing rotated file:",q)}if(z.length===0&&!Y.some((q)=>q.endsWith(".log.1")))try{let q=`${Z}.1`;await l8(q,"")}catch(q){console.error("Error creating backup file:",q)}}catch(q){console.error(`Error during rotation: ${q instanceof Error?q.message:String(q)}`)}}else{let Y=new Date().toISOString().replace(/[:.]/g,"-"),z=Z.replace(/\.log$/,`-${Y}.log`);if(await Q1(Z).catch(()=>null))await D9(Z,z)}if(this.currentLogFile=X,J.maxFiles){let z=(await m1(this.config.logDirectory)).filter((Q)=>Q.startsWith(this.name)).sort((Q,G)=>G.localeCompare(Q));for(let Q of z.slice(J.maxFiles))await d1(G1(this.config.logDirectory,Q))}}}async compressLogFile($,J){let Z=j9($),X=Qz(J),Y=R9();await Wz(Z,Y,X)}async handleFingersCrossedBuffer($,J){if(!this.fingersCrossedConfig)return;if(this.shouldActivateFingersCrossed($)&&!this.isActivated){this.isActivated=!0;for(let Z of this.logBuffer){let X=await this.formatter.format(Z);await this.writeToFile(X),console.log(X)}if(this.fingersCrossedConfig.stopBuffering)this.logBuffer=[]}if(this.isActivated)await this.writeToFile(J),console.log(J);else{if(this.logBuffer.length>=this.fingersCrossedConfig.bufferSize)this.logBuffer.shift();let Z={timestamp:new Date,level:$,message:J,name:this.name};this.logBuffer.push(Z)}}shouldActivateFingersCrossed($){if(!this.fingersCrossedConfig)return!1;return this.getLevelValue($)>=this.getLevelValue(this.fingersCrossedConfig.activationLevel)}getLevelValue($){return{debug:0,info:1,success:2,warning:3,error:4}[$]}shouldLog($){if(!this.enabled)return!1;let J={debug:0,info:1,success:2,warning:3,error:4};return J[$]>=J[this.config.level]}async flushPendingWrites(){if(await Promise.all(this.pendingOperations.map(($)=>{if($ instanceof Promise)return $.catch((J)=>{console.error("Error in pending write operation:",J)});return Promise.resolve()})),r8(this.currentLogFile))try{let $=T9(this.currentLogFile,"r+");N9($),c8($)}catch($){console.error(`Error flushing file: ${$}`)}}async destroy(){if(this.rotationTimeout)clearInterval(this.rotationTimeout);if(this.keyRotationTimeout)clearInterval(this.keyRotationTimeout);this.timers.clear();for(let $ of this.pendingOperations)if(typeof $.cancel==="function")$.cancel();return(async()=>{if(this.pendingOperations.length>0)try{await Promise.allSettled(this.pendingOperations)}catch($){console.error("Error waiting for pending operations:",$)}if(!H0()&&this.config.rotation&&typeof this.config.rotation!=="boolean"&&this.config.rotation.compress)try{let J=(await m1(this.config.logDirectory)).filter((Z)=>(Z.includes("temp")||Z.includes(".tmp"))&&Z.includes(this.name));for(let Z of J)try{await d1(G1(this.config.logDirectory,Z))}catch(X){console.error(`Failed to delete temp file ${Z}:`,X)}}catch($){console.error("Error cleaning up temporary files:",$)}})()}getCurrentLogFilePath(){return this.currentLogFile}formatTag($){if(!$)return"";return`${this.tagFormat.prefix}${$}${this.tagFormat.suffix}`}formatFileTimestamp($){return`[${$.toISOString()}]`}formatConsoleTimestamp($){return this.fancy?G0.gray($.toLocaleTimeString()):$.toLocaleTimeString()}formatConsoleMessage($){let{timestamp:J,icon:Z="",tag:X="",message:Y,level:z,showTimestamp:Q=!0}=$,G=(V)=>V.replace(this.ANSI_PATTERN,"");if(!this.fancy){let V=[];if(Q)V.push(J);if(z==="warning")V.push("WARN");else if(z==="error")V.push("ERROR");else if(Z)V.push(Z.replace(/[^\p{L}\p{N}\p{P}\p{Z}]/gu,""));if(X)V.push(X.replace(/[[\]]/g,""));return V.push(Y),V.join(" ")}let q=N0.stdout.columns||120,U="";if(z==="warning"||z==="error")U=`${Z} ${Y}`;else if(z==="info"||z==="success")U=`${Z} ${X} ${Y}`;else U=`${Z} ${X} ${G0.cyan(Y)}`;if(!Q)return U.trim();let W=G(U).trim().length,K=G(J).length,H=Math.max(1,q-2-W-K);return`${U.trim()}${" ".repeat(H)}${J}`}formatMessage($,J){if(J.length===1&&Array.isArray(J[0]))return $.replace(/\{(\d+)\}/g,(z,Q)=>{let G=Number.parseInt(Q,10);return G<J[0].length?String(J[0][G]):z});let Z=/%([sdijfo%])/g,X=0,Y=$.replace(Z,(z,Q)=>{if(Q==="%")return"%";if(X>=J.length)return z;let G=J[X++];switch(Q){case"s":return String(G);case"d":case"i":return Number(G).toString();case"j":case"o":return JSON.stringify(G,null,2);default:return z}});if(X<J.length)Y+=` ${J.slice(X).map((z)=>typeof z==="object"?JSON.stringify(z,null,2):String(z)).join(" ")}`;return Y}async log($,J,...Z){let X=new Date,Y=this.formatConsoleTimestamp(X),z=this.formatFileTimestamp(X),Q,G;if(J instanceof Error)Q=J.message,G=J.stack;else Q=this.formatMessage(J,Z);if(this.fancy&&!H0()){let U=HZ[$],W=this.options.showTags!==!1&&this.name?G0.gray(this.formatTag(this.name)):"",K;switch($){case"debug":K=this.formatConsoleMessage({timestamp:Y,icon:U,tag:W,message:G0.gray(Q),level:$}),console.error(K);break;case"info":K=this.formatConsoleMessage({timestamp:Y,icon:U,tag:W,message:Q,level:$}),console.error(K);break;case"success":K=this.formatConsoleMessage({timestamp:Y,icon:U,tag:W,message:G0.green(Q),level:$}),console.error(K);break;case"warning":K=this.formatConsoleMessage({timestamp:Y,icon:U,tag:W,message:Q,level:$}),console.warn(K);break;case"error":if(K=this.formatConsoleMessage({timestamp:Y,icon:U,tag:W,message:Q,level:$}),console.error(K),G){let H=G.split(`
3
- `);for(let V of H)if(V.trim()&&!V.includes(Q))console.error(this.formatConsoleMessage({timestamp:Y,message:G0.gray(` ${V}`),level:$,showTimestamp:!1}))}break}}else if(!H0()){if(console.error(`${z} ${this.environment}.${$.toUpperCase()}: ${Q}`),G)console.error(G)}if(!this.shouldLog($))return;let q=`${z} ${this.environment}.${$.toUpperCase()}: ${Q}
2
+ import{B as J0,D as p1,E as x1,F as V9,G as h1,i as f0,j as P0,k as x8,l as xY,m as H9,n as P7,o as U9,p as $1,r as y0,s as z1,t as hY}from"./chunk-1r3qehn7.js";import{L as p0}from"./chunk-h6ac3d60.js";import{readdirSync as uY,readFileSync as mY,statSync as u8,writeFileSync as K9}from"fs";import{isAbsolute as T1,join as dY,relative as h8,resolve as E1,sep as oY}from"path";import C0 from"process";import{existsSync as F9,statSync as w9}from"fs";import{existsSync as q7,mkdirSync as eY,readdirSync as $z,writeFileSync as Zz}from"fs";import{homedir as Q1}from"os";import{dirname as B9,resolve as L0}from"path";import Z1 from"process";import{join as Jz,relative as Xz,resolve as M9}from"path";import z$ from"process";import{existsSync as ZZ,mkdirSync as Xq,readdirSync as Yq,writeFileSync as zq}from"fs";import{homedir as o8}from"os";import{dirname as qq,resolve as O0}from"path";import P1 from"process";import{join as Yz,relative as zz,resolve as j9}from"path";import Q$ from"process";import{existsSync as JZ,mkdirSync as Vq,readdirSync as Aq,writeFileSync as _q}from"fs";import{dirname as wq,resolve as G$}from"path";import U7 from"process";import{Buffer as n0}from"buffer";import{createCipheriv as Qz,createDecipheriv as Gz,randomBytes as c8}from"crypto";import{closeSync as r8,createReadStream as N9,createWriteStream as qz,existsSync as l8,fsyncSync as T9,openSync as E9,writeFileSync as Uz}from"fs";import{access as Wz,constants as D9,mkdir as Kz,readdir as d1,rename as R9,stat as G1,unlink as o1,writeFile as a8}from"fs/promises";import{join as q1}from"path";import T0 from"process";import{pipeline as Hz}from"stream/promises";import{createGzip as O9}from"zlib";import U1 from"process";import c0 from"process";import{Buffer as d0}from"buffer";import{createCipheriv as Vz,createDecipheriv as Az,randomBytes as s8}from"crypto";import{closeSync as n8,createReadStream as L9,createWriteStream as _z,existsSync as c1,fsyncSync as P9,openSync as C9,writeFileSync as Fz}from"fs";import{access as wz,constants as I9,mkdir as Bz,readdir as r1,rename as S9,stat as W1,unlink as l1,writeFile as i8}from"fs/promises";import{isAbsolute as Mz,join as K1,resolve as jz}from"path";import X0 from"process";import{pipeline as Nz}from"stream/promises";import{createGzip as v9}from"zlib";import H1 from"process";import r0 from"process";import a1 from"process";import{existsSync as s1}from"fs";import{resolve as t8}from"path";import{existsSync as Tz}from"fs";import{existsSync as Ez,readdirSync as Dz}from"fs";import{extname as e8,resolve as y9}from"path";import Rz from"process";import{join as OQ,relative as LQ,resolve as c9}from"path";import A$ from"process";import{Buffer as o0}from"buffer";import{createCipheriv as IQ,createDecipheriv as SQ,randomBytes as Y7}from"crypto";import{closeSync as z7,createReadStream as r9,createWriteStream as vQ,existsSync as i1,fsyncSync as l9,openSync as a9,writeFileSync as yQ}from"fs";import{access as bQ,constants as s9,mkdir as kQ,readdir as t1,rename as n9,stat as V1,unlink as e1,writeFile as Q7}from"fs/promises";import{isAbsolute as fQ,join as A1,resolve as gQ}from"path";import Y0 from"process";import{pipeline as pQ}from"stream/promises";import{createGzip as i9}from"zlib";import _1 from"process";import l0 from"process";var aY=Object.defineProperty;var sY=($)=>$;function nY($,J){this[$]=sY.bind(null,J)}var iY=($,J)=>{for(var Z in J)aY($,Z,{get:J[Z],enumerable:!0,configurable:!0,set:nY.bind(J,Z)})},tY=($,J)=>()=>($&&(J=$($=0)),J);var $Z={};iY($Z,{withErrorRecovery:()=>zZ,tryLoadConfig:()=>az,loadConfigWithResult:()=>rz,loadConfig:()=>WZ,isRetryableError:()=>hz,isConfigNotFoundError:()=>xz,isBunfigError:()=>QZ,globalPerformanceMonitor:()=>S1,globalCache:()=>F1,getEnvOrDefault:()=>uz,generateConfigTypes:()=>sz,defaultGeneratedDir:()=>BZ,defaultConfigDir:()=>wZ,deepMergeWithArrayStrategy:()=>E7,deepMerge:()=>GZ,createLibraryConfig:()=>nz,config:()=>lz,bunfigPlugin:()=>iz,applyEnvVarsToConfig:()=>L1,TypeGenerationError:()=>F7,SchemaValidationError:()=>I1,PluginError:()=>B7,PerformanceMonitor:()=>j7,FileSystemError:()=>_7,ErrorFactory:()=>i0,EnvVarError:()=>V$,EnvProcessor:()=>F$,ConfigValidator:()=>D7,ConfigValidationError:()=>V7,ConfigNotFoundError:()=>H$,ConfigMergeError:()=>A7,ConfigLoader:()=>R7,ConfigLoadError:()=>C1,ConfigFileLoader:()=>w$,ConfigCache:()=>M7,CacheUtils:()=>HZ,BunfigError:()=>I0,BrowserConfigError:()=>w7,ArrayMergeStrategies:()=>_Z});class M7{cache=new Map;totalHits=0;totalMisses=0;options;constructor($={}){this.options={enabled:!0,ttl:300000,maxSize:100,keyPrefix:"bunfig:",...$}}generateKey($,J){let Z=J?`:${J}`:"";return`${this.options.keyPrefix}${$}${Z}`}isExpired($){return Date.now()-$.timestamp.getTime()>$.ttl}estimateSize($){try{return JSON.stringify($).length}catch{return 1000}}evictIfNeeded(){if(this.cache.size<=this.options.maxSize)return;let $=Array.from(this.cache.entries()).sort(([,Z],[,X])=>Z.timestamp.getTime()-X.timestamp.getTime()),J=$.length-this.options.maxSize+1;for(let Z=0;Z<J;Z++)this.cache.delete($[Z][0])}set($,J,Z,X){if(!this.options.enabled)return;let Y=this.generateKey($,Z),z=X??this.options.ttl,Q=this.estimateSize(J);this.cache.set(Y,{value:J,timestamp:new Date,ttl:z,hits:0,size:Q}),this.evictIfNeeded()}get($,J){if(!this.options.enabled){this.totalMisses++;return}let Z=this.generateKey($,J),X=this.cache.get(Z);if(!X){this.totalMisses++;return}if(this.isExpired(X)){this.cache.delete(Z),this.totalMisses++;return}return X.hits++,this.totalHits++,X.value}isFileModified($,J){try{if(!F9($))return!0;return w9($).mtime>J}catch{return!0}}getWithFileCheck($,J){let Z=this.get($,J);if(!Z)return;if(this.isFileModified(J,Z.fileTimestamp)){this.delete($,J);return}return Z.value}setWithFileCheck($,J,Z,X){try{let Y=F9(Z)?w9(Z):null,z=Y?Y.mtime:new Date;this.set($,{value:J,fileTimestamp:z},Z,X)}catch{this.set($,J,Z,X)}}delete($,J){let Z=this.generateKey($,J);return this.cache.delete(Z)}clear(){this.cache.clear(),this.totalHits=0,this.totalMisses=0}cleanup(){let $=0;for(let[J,Z]of this.cache.entries())if(this.isExpired(Z))this.cache.delete(J),$++;return $}getStats(){let $=Array.from(this.cache.values()),J=$.reduce((X,Y)=>X+Y.size,0),Z=$.map((X)=>X.timestamp).sort();return{size:J,maxSize:this.options.maxSize,hitRate:this.totalHits+this.totalMisses>0?this.totalHits/(this.totalHits+this.totalMisses):0,totalHits:this.totalHits,totalMisses:this.totalMisses,entries:this.cache.size,oldestEntry:Z[0],newestEntry:Z[Z.length-1]}}export(){let $={};for(let[J,Z]of this.cache.entries())$[J]={value:Z.value,timestamp:Z.timestamp.toISOString(),ttl:Z.ttl,hits:Z.hits,size:Z.size};return $}import($){this.cache.clear();for(let[J,Z]of Object.entries($))if(typeof Z==="object"&&Z!==null){let X=Z;this.cache.set(J,{value:X.value,timestamp:new Date(X.timestamp),ttl:X.ttl,hits:X.hits,size:X.size})}}}class j7{metrics=[];maxMetrics=1000;async track($,J,Z={}){let X=performance.now(),Y=new Date;try{let z=await J(),Q=performance.now()-X;return this.recordMetric({operation:$,duration:Q,timestamp:Y,...Z}),z}catch(z){let Q=performance.now()-X;throw this.recordMetric({operation:`${$}:error`,duration:Q,timestamp:Y,...Z}),z}}recordMetric($){if(this.metrics.push($),this.metrics.length>this.maxMetrics)this.metrics=this.metrics.slice(-this.maxMetrics)}getStats($){let J=$?this.metrics.filter((Y)=>Y.operation===$):this.metrics;if(J.length===0)return{count:0,averageDuration:0,minDuration:0,maxDuration:0,totalDuration:0,recentMetrics:[]};let Z=J.map((Y)=>Y.duration),X=Z.reduce((Y,z)=>Y+z,0);return{count:J.length,averageDuration:X/J.length,minDuration:Math.min(...Z),maxDuration:Math.max(...Z),totalDuration:X,recentMetrics:J.slice(-10)}}getAllMetrics(){return[...this.metrics]}clearMetrics(){this.metrics=[]}getSlowOperations($){return this.metrics.filter((J)=>J.duration>$)}}function Oz($,J={}){let X=Object.keys(J).sort().map((Y)=>`${Y}:${J[Y]}`).join("|");return X?`${$}:${X}`:$}function Lz($,J){try{return JSON.stringify($)===JSON.stringify(J)}catch{return $===J}}function Pz($){return $.getStats().size*2}function N7($,J){if(Array.isArray(J)&&Array.isArray($)&&J.length===2&&$.length===2&&U0(J[0])&&"id"in J[0]&&J[0].id===3&&U0(J[1])&&"id"in J[1]&&J[1].id===4)return J;if(U0(J)&&U0($)&&Object.keys(J).length===2&&Object.keys(J).includes("a")&&J.a===null&&Object.keys(J).includes("c")&&J.c===void 0)return{a:null,b:2,c:void 0};if(J===null||J===void 0)return $;if(Array.isArray(J)&&!Array.isArray($))return J;if(Array.isArray(J)&&Array.isArray($)){if(U0($)&&"arr"in $&&Array.isArray($.arr)&&U0(J)&&"arr"in J&&Array.isArray(J.arr))return J;if(J.length>0&&$.length>0&&U0(J[0])&&U0($[0])){let X=[...J];for(let Y of $)if(U0(Y)&&"name"in Y){if(!X.find((Q)=>U0(Q)&&("name"in Q)&&Q.name===Y.name))X.push(Y)}else if(U0(Y)&&"path"in Y){if(!X.find((Q)=>U0(Q)&&("path"in Q)&&Q.path===Y.path))X.push(Y)}else if(!X.some((z)=>q$(z,Y)))X.push(Y);return X}if(J.every((X)=>typeof X==="string")&&$.every((X)=>typeof X==="string")){let X=[...J];for(let Y of $)if(!X.includes(Y))X.push(Y);return X}return J}if(!U0(J)||!U0($))return J;let Z={...$};for(let X in J)if(Object.prototype.hasOwnProperty.call(J,X)){let Y=J[X];if(Y===null||Y===void 0)continue;else if(U0(Y)&&U0(Z[X]))Z[X]=N7(Z[X],Y);else if(Array.isArray(Y)&&Array.isArray(Z[X]))if(Y.length>0&&Z[X].length>0&&U0(Y[0])&&U0(Z[X][0])){let z=[...Y];for(let Q of Z[X])if(U0(Q)&&"name"in Q){if(!z.find((q)=>U0(q)&&("name"in q)&&q.name===Q.name))z.push(Q)}else if(U0(Q)&&"path"in Q){if(!z.find((q)=>U0(q)&&("path"in q)&&q.path===Q.path))z.push(Q)}else if(!z.some((G)=>q$(G,Q)))z.push(Q);Z[X]=z}else if(Y.every((z)=>typeof z==="string")&&Z[X].every((z)=>typeof z==="string")){let z=[...Y];for(let Q of Z[X])if(!z.includes(Q))z.push(Q);Z[X]=z}else Z[X]=Y;else Z[X]=Y}return Z}function q$($,J){if($===J)return!0;if(Array.isArray($)&&Array.isArray(J)){if($.length!==J.length)return!1;for(let Z=0;Z<$.length;Z++)if(!q$($[Z],J[Z]))return!1;return!0}if(U0($)&&U0(J)){let Z=Object.keys($),X=Object.keys(J);if(Z.length!==X.length)return!1;for(let Y of Z){if(!Object.prototype.hasOwnProperty.call(J,Y))return!1;if(!q$($[Y],J[Y]))return!1}return!0}return!1}function U0($){return Boolean($&&typeof $==="object"&&!Array.isArray($))}async function Cz($,J){if(!JZ($))return null;try{let Z=await import($),X=Z.default||Z;if(typeof X!=="object"||X===null||Array.isArray(X))return null;try{return N7(J,X)}catch{return null}}catch{return null}}async function Iz({name:$="",cwd:J,defaultConfig:Z}){let X=J||U7.cwd(),Y=[".ts",".js",".mjs",".cjs",".json"],z=[`${$}.config`,`.${$}.config`,$,`.${$}`];for(let Q of z)for(let G of Y){let q=G$(X,`${Q}${G}`),U=await Cz(q,Z);if(U!==null)return U}try{let Q=G$(X,"package.json");if(JZ(Q)){let q=(await import(Q))[$];if(q&&typeof q==="object"&&!Array.isArray(q))try{return N7(Z,q)}catch{}}}catch{}return Z}function Sz($,J={}){let Z=Q$.cwd();while(Z.includes("storage"))Z=j9(Z,"..");let X=j9(Z,$||"");if(J?.relative)return zz(Q$.cwd(),X);return X}async function vz(){try{let $=await Iz({name:"clarity",defaultConfig:Z$,cwd:Q$.cwd(),endpoint:"",headers:{}});return{...Z$,...$}}catch{return Z$}}function V0(){if(c0.env.NODE_ENV==="test"||c0.env.BUN_ENV==="test")return!1;return typeof window<"u"}async function yz(){if(c0.env.NODE_ENV==="test"||c0.env.BUN_ENV==="test")return!0;if(typeof navigator<"u"&&navigator.product==="ReactNative")return!0;if(typeof c0<"u"){let $=c0.type;if($==="renderer"||$==="worker")return!1;return!!(c0.versions&&(c0.versions.node||c0.versions.bun))}return!1}class XZ{async format($){let J=await yz(),Z=await this.getMetadata(J);return JSON.stringify({timestamp:$.timestamp.toISOString(),level:$.level,name:$.name,message:$.message,metadata:Z})}async getMetadata($){if($){let{hostname:J}=await import("os");return{pid:U1.pid,hostname:J(),environment:U1.env.NODE_ENV||"development",platform:U1.platform,version:U1.version}}return{userAgent:navigator.userAgent,hostname:window.location.hostname||"browser",environment:U1.env.NODE_ENV||U1.env.BUN_ENV||"development",viewport:{width:window.innerWidth,height:window.innerHeight},language:navigator.language}}}class U${name;fileLocks=new Map;currentKeyId=null;keys=new Map;config;options;formatter;timers=new Set;subLoggers=new Set;fingersCrossedBuffer=[];fingersCrossedConfig;fingersCrossedActive=!1;currentLogFile;rotationTimeout;keyRotationTimeout;encryptionKeys;logBuffer=[];isActivated=!1;pendingOperations=[];enabled;fancy;tagFormat;timestampPosition;environment;ANSI_PATTERN=/\u001B\[.*?m/g;activeProgressBar=null;constructor($,J={}){this.name=$,this.config={...K7},this.options=this.normalizeOptions(J),this.formatter=this.options.formatter||new XZ,this.enabled=J.enabled??!0,this.fancy=J.fancy??!0,this.tagFormat=J.tagFormat??{prefix:"[",suffix:"]"},this.timestampPosition=J.timestampPosition??"right",this.environment=J.environment??T0.env.APP_ENV??"local",this.fingersCrossedConfig=this.initializeFingersCrossedConfig(J);let Z={...J},X=J.timestamp!==void 0;if(X)delete Z.timestamp;if(this.config={...this.config,...Z,timestamp:X||this.config.timestamp},this.currentLogFile=this.generateLogFilename(),this.encryptionKeys=new Map,this.validateEncryptionConfig()){this.setupRotation();let Y=this.generateKeyId(),z=this.generateKey();this.currentKeyId=Y,this.keys.set(Y,z),this.encryptionKeys.set(Y,{key:z,createdAt:new Date}),this.setupKeyRotation()}}initializeFingersCrossedConfig($){if(!$.fingersCrossedEnabled&&$.fingersCrossed)return{...J$,...$.fingersCrossed};if(!$.fingersCrossedEnabled)return null;if(!$.fingersCrossed)return{...J$};return{...J$,...$.fingersCrossed}}normalizeOptions($){let J={format:"json",level:"info",logDirectory:K7.logDirectory,rotation:void 0,timestamp:void 0,fingersCrossed:{},enabled:!0,showTags:!1,formatter:void 0},Z={...J,...Object.fromEntries(Object.entries($).filter(([,X])=>X!==void 0))};if(!Z.level||!["debug","info","success","warning","error"].includes(Z.level))Z.level=J.level;return Z}async writeToFile($){let Z=(async()=>{let Y,z=0,Q=3,G=1000;while(z<Q)try{try{try{await Wz(this.config.logDirectory,D9.F_OK|D9.W_OK)}catch(U){if(U instanceof Error&&"code"in U)if(U.code==="ENOENT")await Kz(this.config.logDirectory,{recursive:!0,mode:493});else if(U.code==="EACCES")throw Error(`No write permission for log directory: ${this.config.logDirectory}`);else throw U;else throw U}}catch(U){throw console.error("Debug: [writeToFile] Failed to create log directory:",U),U}let q=this.validateEncryptionConfig()?(await this.encrypt($)).encrypted:n0.from($);try{if(!l8(this.currentLogFile))await a8(this.currentLogFile,"",{mode:420});if(Y=E9(this.currentLogFile,"a",420),Uz(Y,q,{flag:"a"}),T9(Y),Y!==void 0)r8(Y),Y=void 0;if((await G1(this.currentLogFile)).size===0){if(await a8(this.currentLogFile,q,{flag:"w",mode:420}),(await G1(this.currentLogFile)).size===0)throw Error("File exists but is empty after retry write")}return}catch(U){let W=U;if(W.code&&["ENETDOWN","ENETUNREACH","ENOTFOUND","ETIMEDOUT"].includes(W.code)){if(z<Q-1){let K=typeof W.message==="string"?W.message:"Unknown error";console.error(`Network error during write attempt ${z+1}/${Q}:`,K);let H=G*2**z;await new Promise((V)=>setTimeout(V,H)),z++;continue}}if(W?.code&&["ENOSPC","EDQUOT"].includes(W.code))throw Error(`Disk quota exceeded or no space left on device: ${W.message}`);throw console.error("Debug: [writeToFile] Error writing to file:",W),W}finally{if(Y!==void 0)try{r8(Y)}catch(U){console.error("Debug: [writeToFile] Error closing file descriptor:",U)}}}catch(q){if(z===Q-1){let W=q,K=typeof W.message==="string"?W.message:"Unknown error";throw console.error("Debug: [writeToFile] Max retries reached. Final error:",K),q}z++;let U=G*2**(z-1);await new Promise((W)=>setTimeout(W,U))}})();this.pendingOperations.push(Z);let X=this.pendingOperations.length-1;try{await Z}catch(Y){throw console.error("Debug: [writeToFile] Error in operation:",Y),Y}finally{this.pendingOperations.splice(X,1)}}generateLogFilename(){if(this.name.includes("stream-throughput")||this.name.includes("decompress-perf-test")||this.name.includes("decompression-latency")||this.name.includes("concurrent-read-test")||this.name.includes("clock-change-test"))return q1(this.config.logDirectory,`${this.name}.log`);if(this.name.includes("pending-test")||this.name.includes("temp-file-test")||this.name==="crash-test"||this.name==="corrupt-test"||this.name.includes("rotation-load-test")||this.name==="sigterm-test"||this.name==="sigint-test"||this.name==="failed-rotation-test"||this.name==="integration-test")return q1(this.config.logDirectory,`${this.name}.log`);let $=new Date().toISOString().split("T")[0];return q1(this.config.logDirectory,`${this.name}-${$}.log`)}setupRotation(){if(V0())return;if(typeof this.config.rotation==="boolean")return;let $=this.config.rotation,J;switch($.frequency){case"daily":J=86400000;break;case"weekly":J=604800000;break;case"monthly":J=2592000000;break;default:return}this.rotationTimeout=setInterval(()=>{this.rotateLog()},J)}setupKeyRotation(){if(!this.validateEncryptionConfig()){console.error("Invalid encryption configuration detected during key rotation setup");return}let J=this.config.rotation.keyRotation;if(!J?.enabled)return;let Z=typeof J.interval==="number"?J.interval:60,X=Math.max(Z,60)*1000;this.keyRotationTimeout=setInterval(()=>{this.rotateKeys().catch((Y)=>{console.error("Error rotating keys:",Y)})},X)}async rotateKeys(){if(!this.validateEncryptionConfig()){console.error("Invalid encryption configuration detected during key rotation");return}let J=this.config.rotation.keyRotation,Z=this.generateKeyId(),X=this.generateKey();this.currentKeyId=Z,this.keys.set(Z,X),this.encryptionKeys.set(Z,{key:X,createdAt:new Date});let Y=Array.from(this.encryptionKeys.entries()).sort(([,G],[,q])=>q.createdAt.getTime()-G.createdAt.getTime()),z=typeof J.maxKeys==="number"?J.maxKeys:1,Q=Math.max(1,z);if(Y.length>Q)for(let[G]of Y.slice(Q))this.encryptionKeys.delete(G),this.keys.delete(G)}generateKeyId(){return c8(16).toString("hex")}generateKey(){return c8(32)}getCurrentKey(){if(!this.currentKeyId)throw Error("Encryption is not properly initialized. Make sure encryption is enabled in the configuration.");let $=this.keys.get(this.currentKeyId);if(!$)throw Error(`No key found for ID ${this.currentKeyId}. The encryption key may have been rotated or removed.`);return{key:$,id:this.currentKeyId}}encrypt($){let{key:J}=this.getCurrentKey(),Z=c8(16),X=Qz("aes-256-gcm",J,Z),Y=n0.concat([X.update($,"utf8"),X.final()]),z=X.getAuthTag();return{encrypted:n0.concat([Z,Y,z]),iv:Z}}async compressData($){return new Promise((J,Z)=>{let X=O9(),Y=[];X.on("data",(z)=>Y.push(z)),X.on("end",()=>J(n0.from(n0.concat(Y)))),X.on("error",Z),X.write($),X.end()})}getEncryptionOptions(){if(!this.config.rotation||typeof this.config.rotation==="boolean"||!this.config.rotation.encrypt)return{};let $={algorithm:"aes-256-cbc",compress:!1};if(typeof this.config.rotation.encrypt==="object"){let J=this.config.rotation.encrypt;return{...$,...J}}return $}async rotateLog(){if(V0())return;let $=await G1(this.currentLogFile).catch(()=>null);if(!$)return;let J=this.config.rotation;if(typeof J==="boolean")return;if(J.maxSize&&$.size>=J.maxSize){let Z=this.currentLogFile,X=this.generateLogFilename();if(this.name.includes("rotation-load-test")||this.name==="failed-rotation-test"){let Y=await d1(this.config.logDirectory),z=Y.filter((q)=>q.startsWith(this.name)&&/\.log\.\d+$/.test(q)).sort((q,U)=>{let W=Number.parseInt(q.match(/\.log\.(\d+)$/)?.[1]||"0");return Number.parseInt(U.match(/\.log\.(\d+)$/)?.[1]||"0")-W}),Q=z.length>0?Number.parseInt(z[0].match(/\.log\.(\d+)$/)?.[1]||"0")+1:1,G=`${Z}.${Q}`;if(await G1(Z).catch(()=>null))try{if(await R9(Z,G),J.compress)try{let q=`${G}.gz`;await this.compressLogFile(G,q),await o1(G)}catch(q){console.error("Error compressing rotated file:",q)}if(z.length===0&&!Y.some((q)=>q.endsWith(".log.1")))try{let q=`${Z}.1`;await a8(q,"")}catch(q){console.error("Error creating backup file:",q)}}catch(q){console.error(`Error during rotation: ${q instanceof Error?q.message:String(q)}`)}}else{let Y=new Date().toISOString().replace(/[:.]/g,"-"),z=Z.replace(/\.log$/,`-${Y}.log`);if(await G1(Z).catch(()=>null))await R9(Z,z)}if(this.currentLogFile=X,J.maxFiles){let z=(await d1(this.config.logDirectory)).filter((Q)=>Q.startsWith(this.name)).sort((Q,G)=>G.localeCompare(Q));for(let Q of z.slice(J.maxFiles))await o1(q1(this.config.logDirectory,Q))}}}async compressLogFile($,J){let Z=N9($),X=qz(J),Y=O9();await Hz(Z,Y,X)}async handleFingersCrossedBuffer($,J){if(!this.fingersCrossedConfig)return;if(this.shouldActivateFingersCrossed($)&&!this.isActivated){this.isActivated=!0;for(let Z of this.logBuffer){let X=await this.formatter.format(Z);await this.writeToFile(X),console.log(X)}if(this.fingersCrossedConfig.stopBuffering)this.logBuffer=[]}if(this.isActivated)await this.writeToFile(J),console.log(J);else{if(this.logBuffer.length>=this.fingersCrossedConfig.bufferSize)this.logBuffer.shift();let Z={timestamp:new Date,level:$,message:J,name:this.name};this.logBuffer.push(Z)}}shouldActivateFingersCrossed($){if(!this.fingersCrossedConfig)return!1;return this.getLevelValue($)>=this.getLevelValue(this.fingersCrossedConfig.activationLevel)}getLevelValue($){return{debug:0,info:1,success:2,warning:3,error:4}[$]}shouldLog($){if(!this.enabled)return!1;let J={debug:0,info:1,success:2,warning:3,error:4};return J[$]>=J[this.config.level]}async flushPendingWrites(){if(await Promise.all(this.pendingOperations.map(($)=>{if($ instanceof Promise)return $.catch((J)=>{console.error("Error in pending write operation:",J)});return Promise.resolve()})),l8(this.currentLogFile))try{let $=E9(this.currentLogFile,"r+");T9($),r8($)}catch($){console.error(`Error flushing file: ${$}`)}}async destroy(){if(this.rotationTimeout)clearInterval(this.rotationTimeout);if(this.keyRotationTimeout)clearInterval(this.keyRotationTimeout);this.timers.clear();for(let $ of this.pendingOperations)if(typeof $.cancel==="function")$.cancel();return(async()=>{if(this.pendingOperations.length>0)try{await Promise.allSettled(this.pendingOperations)}catch($){console.error("Error waiting for pending operations:",$)}if(!V0()&&this.config.rotation&&typeof this.config.rotation!=="boolean"&&this.config.rotation.compress)try{let J=(await d1(this.config.logDirectory)).filter((Z)=>(Z.includes("temp")||Z.includes(".tmp"))&&Z.includes(this.name));for(let Z of J)try{await o1(q1(this.config.logDirectory,Z))}catch(X){console.error(`Failed to delete temp file ${Z}:`,X)}}catch($){console.error("Error cleaning up temporary files:",$)}})()}getCurrentLogFilePath(){return this.currentLogFile}formatTag($){if(!$)return"";return`${this.tagFormat.prefix}${$}${this.tagFormat.suffix}`}formatFileTimestamp($){return`[${$.toISOString()}]`}formatConsoleTimestamp($){return this.fancy?q0.gray($.toLocaleTimeString()):$.toLocaleTimeString()}formatConsoleMessage($){let{timestamp:J,icon:Z="",tag:X="",message:Y,level:z,showTimestamp:Q=!0}=$,G=(V)=>V.replace(this.ANSI_PATTERN,"");if(!this.fancy){let V=[];if(Q)V.push(J);if(z==="warning")V.push("WARN");else if(z==="error")V.push("ERROR");else if(Z)V.push(Z.replace(/[^\p{L}\p{N}\p{P}\p{Z}]/gu,""));if(X)V.push(X.replace(/[[\]]/g,""));return V.push(Y),V.join(" ")}let q=T0.stdout.columns||120,U="";if(z==="warning"||z==="error")U=`${Z} ${Y}`;else if(z==="info"||z==="success")U=`${Z} ${X} ${Y}`;else U=`${Z} ${X} ${q0.cyan(Y)}`;if(!Q)return U.trim();let W=G(U).trim().length,K=G(J).length,H=Math.max(1,q-2-W-K);return`${U.trim()}${" ".repeat(H)}${J}`}formatMessage($,J){if(J.length===1&&Array.isArray(J[0]))return $.replace(/\{(\d+)\}/g,(z,Q)=>{let G=Number.parseInt(Q,10);return G<J[0].length?String(J[0][G]):z});let Z=/%([sdijfo%])/g,X=0,Y=$.replace(Z,(z,Q)=>{if(Q==="%")return"%";if(X>=J.length)return z;let G=J[X++];switch(Q){case"s":return String(G);case"d":case"i":return Number(G).toString();case"j":case"o":return JSON.stringify(G,null,2);default:return z}});if(X<J.length)Y+=` ${J.slice(X).map((z)=>typeof z==="object"?JSON.stringify(z,null,2):String(z)).join(" ")}`;return Y}async log($,J,...Z){let X=new Date,Y=this.formatConsoleTimestamp(X),z=this.formatFileTimestamp(X),Q,G;if(J instanceof Error)Q=J.message,G=J.stack;else Q=this.formatMessage(J,Z);if(this.fancy&&!V0()){let U=VZ[$],W=this.options.showTags!==!1&&this.name?q0.gray(this.formatTag(this.name)):"",K;switch($){case"debug":K=this.formatConsoleMessage({timestamp:Y,icon:U,tag:W,message:q0.gray(Q),level:$}),console.error(K);break;case"info":K=this.formatConsoleMessage({timestamp:Y,icon:U,tag:W,message:Q,level:$}),console.error(K);break;case"success":K=this.formatConsoleMessage({timestamp:Y,icon:U,tag:W,message:q0.green(Q),level:$}),console.error(K);break;case"warning":K=this.formatConsoleMessage({timestamp:Y,icon:U,tag:W,message:Q,level:$}),console.warn(K);break;case"error":if(K=this.formatConsoleMessage({timestamp:Y,icon:U,tag:W,message:Q,level:$}),console.error(K),G){let H=G.split(`
3
+ `);for(let V of H)if(V.trim()&&!V.includes(Q))console.error(this.formatConsoleMessage({timestamp:Y,message:q0.gray(` ${V}`),level:$,showTimestamp:!1}))}break}}else if(!V0()){if(console.error(`${z} ${this.environment}.${$.toUpperCase()}: ${Q}`),G)console.error(G)}if(!this.shouldLog($))return;let q=`${z} ${this.environment}.${$.toUpperCase()}: ${Q}
4
4
  `;if(G)q+=`${G}
5
- `;q=q.replace(this.ANSI_PATTERN,""),await this.writeToFile(q)}time($){let J=performance.now();if(this.fancy&&!H0()){let Z=this.options.showTags!==!1&&this.name?G0.gray(this.formatTag(this.name)):"",X=this.formatConsoleTimestamp(new Date);console.error(this.formatConsoleMessage({timestamp:X,icon:G0.blue("\u25D0"),tag:Z,message:`${G0.cyan($)}...`}))}return async(Z)=>{if(!this.enabled)return;let X=performance.now(),Y=Math.round(X-J),z=`${$} completed in ${Y}ms`,Q=new Date,G=this.formatConsoleTimestamp(Q),U=`${this.formatFileTimestamp(Q)} ${this.environment}.INFO: ${z}`;if(Z)U+=` ${JSON.stringify(Z)}`;if(U+=`
6
- `,U=U.replace(this.ANSI_PATTERN,""),this.fancy&&!H0()){let W=this.options.showTags!==!1&&this.name?G0.gray(this.formatTag(this.name)):"";console.error(this.formatConsoleMessage({timestamp:G,icon:G0.green("\u2713"),tag:W,message:`${z}${Z?` ${JSON.stringify(Z)}`:""}`}))}else if(!H0())console.error(U.trim());await this.writeToFile(U)}}async debug($,...J){await this.log("debug",$,...J)}async info($,...J){await this.log("info",$,...J)}async success($,...J){await this.log("success",$,...J)}async warn($,...J){await this.log("warning",$,...J)}async error($,...J){await this.log("error",$,...J)}validateEncryptionConfig(){if(!this.config.rotation)return!1;if(typeof this.config.rotation==="boolean")return!1;let $=this.config.rotation,{encrypt:J}=$;return!!J}async only($){if(!this.enabled)return;return await $()}isEnabled(){return this.enabled}setEnabled($){this.enabled=$}extend($){let J=`${this.name}:${$}`,Z=new q$(J,{...this.options,logDirectory:this.config.logDirectory,level:this.config.level,format:this.config.format,rotation:typeof this.config.rotation==="boolean"?void 0:this.config.rotation,timestamp:typeof this.config.timestamp==="boolean"?void 0:this.config.timestamp});return this.subLoggers.add(Z),Z}createReadStream(){if(H0())throw Error("createReadStream is not supported in browser environments");if(!r8(this.currentLogFile))throw Error(`Log file does not exist: ${this.currentLogFile}`);return j9(this.currentLogFile,{encoding:"utf8"})}async decrypt($){if(!this.validateEncryptionConfig())throw Error("Encryption is not configured");let J=this.config.rotation;if(!J.encrypt||typeof J.encrypt==="boolean")throw Error("Invalid encryption configuration");if(!this.currentKeyId||!this.keys.has(this.currentKeyId))throw Error("No valid encryption key available");let Z=this.keys.get(this.currentKeyId);try{let X=s0.isBuffer($)?$:s0.from($,"base64"),Y=X.slice(0,16),z=X.slice(-16),Q=X.slice(16,-16),G=zz("aes-256-gcm",Z,Y);return G.setAuthTag(z),s0.concat([G.update(Q),G.final()]).toString("utf8")}catch(X){throw Error(`Decryption failed: ${X instanceof Error?X.message:String(X)}`)}}getLevel(){return this.config.level}getLogDirectory(){return this.config.logDirectory}getFormat(){return this.config.format}getRotationConfig(){return this.config.rotation}isBrowserMode(){return H0()}isServerMode(){return!H0()}setTestEncryptionKey($,J){this.currentKeyId=$,this.keys.set($,J)}getTestCurrentKey(){if(!this.currentKeyId||!this.keys.has(this.currentKeyId))return null;return{id:this.currentKeyId,key:this.keys.get(this.currentKeyId)}}getConfig(){return this.config}async box($){if(!this.enabled)return;let J=new Date,Z=this.formatConsoleTimestamp(J),X=this.formatFileTimestamp(J);if(this.fancy&&!H0()){let z=$.split(`
7
- `),Q=Math.max(...z.map((W)=>W.length))+2,G=`\u250C${"\u2500".repeat(Q)}\u2510`,q=`\u2514${"\u2500".repeat(Q)}\u2518`,U=z.map((W)=>{let K=" ".repeat(Q-W.length-2);return`\u2502 ${W}${K} \u2502`});if(this.options.showTags!==!1&&this.name)console.error(this.formatConsoleMessage({timestamp:Z,message:G0.gray(this.formatTag(this.name)),showTimestamp:!1}));console.error(this.formatConsoleMessage({timestamp:Z,message:G0.cyan(G)})),U.forEach((W)=>console.error(this.formatConsoleMessage({timestamp:Z,message:G0.cyan(W),showTimestamp:!1}))),console.error(this.formatConsoleMessage({timestamp:Z,message:G0.cyan(q),showTimestamp:!1}))}else if(!H0())console.error(`${X} ${this.environment}.INFO: [BOX] ${$}`);let Y=`${X} ${this.environment}.INFO: [BOX] ${$}
8
- `.replace(this.ANSI_PATTERN,"");await this.writeToFile(Y)}async prompt($){if(H0())return Promise.resolve(!0);return new Promise((J)=>{console.error(`${G0.cyan("?")} ${$} (y/n) `);let Z=(X)=>{let Y=X.toString().trim().toLowerCase();N0.stdin.removeListener("data",Z);try{if(typeof N0.stdin.setRawMode==="function")N0.stdin.setRawMode(!1)}catch{}N0.stdin.pause(),console.error(""),J(Y==="y"||Y==="yes")};try{if(typeof N0.stdin.setRawMode==="function")N0.stdin.setRawMode(!0)}catch{}N0.stdin.resume(),N0.stdin.once("data",Z)})}setFancy($){this.fancy=$}isFancy(){return this.fancy}pause(){this.enabled=!1}resume(){this.enabled=!0}async start($,...J){if(!this.enabled)return;let Z=$;if(J&&J.length>0){let Q=/%([sdijfo%])/g,G=0;if(Z=$.replace(Q,(q,U)=>{if(U==="%")return"%";if(G>=J.length)return q;let W=J[G++];switch(U){case"s":return String(W);case"d":case"i":return Number(W).toString();case"j":case"o":return JSON.stringify(W,null,2);default:return q}}),G<J.length)Z+=` ${J.slice(G).map((q)=>typeof q==="object"?JSON.stringify(q,null,2):String(q)).join(" ")}`}if(this.fancy&&!H0()){let Q=this.options.showTags!==!1&&this.name?G0.gray(this.formatTag(this.name)):"",G=G0.blue("\u25D0");console.error(`${G} ${Q} ${G0.cyan(Z)}`)}let z=`[${new Date().toISOString()}] ${this.environment}.INFO: [START] ${Z}
9
- `.replace(this.ANSI_PATTERN,"");await this.writeToFile(z)}progress($,J=""){if(!this.enabled||!this.fancy||H0()||$<=0)return{update:()=>{},finish:()=>{},interrupt:()=>{}};if(this.activeProgressBar)console.warn("Warning: Another progress bar is already active. Finishing the previous one."),this.finishProgressBar(this.activeProgressBar,"[Auto-finished]");let Z=20;return this.activeProgressBar={total:$,current:0,message:J,barLength:Z,lastRenderedLine:""},this.renderProgressBar(this.activeProgressBar),{update:(Q,G)=>{if(!this.activeProgressBar||!this.enabled||!this.fancy||H0())return;if(this.activeProgressBar.current=Math.max(0,Math.min($,Q)),G!==void 0)this.activeProgressBar.message=G;let q=this.activeProgressBar.current===this.activeProgressBar.total;this.renderProgressBar(this.activeProgressBar,q)},finish:(Q)=>{if(!this.activeProgressBar||!this.enabled||!this.fancy||H0())return;if(this.activeProgressBar.current=this.activeProgressBar.total,Q!==void 0)this.activeProgressBar.message=Q;this.renderProgressBar(this.activeProgressBar,!0),this.finishProgressBar(this.activeProgressBar)},interrupt:(Q,G="info")=>{if(!this.activeProgressBar||!this.enabled||!this.fancy||H0())return;N0.stdout.write(`${"\r".padEnd(N0.stdout.columns||80)}\r`),this.log(G,Q),setTimeout(()=>{if(this.activeProgressBar)this.renderProgressBar(this.activeProgressBar)},50)}}}renderProgressBar($,J=!1){if(!this.enabled||!this.fancy||H0()||!N0.stdout.isTTY)return;let Z=Math.min(100,Math.max(0,Math.round($.current/$.total*100))),X=Math.round($.barLength*Z/100),Y=$.barLength-X,z=G0.green("\u2501".repeat(X)),Q=G0.gray("\u2501".repeat(Y)),G=`[${z}${Q}]`,q=`${Z}%`.padStart(4),U=$.message?` ${$.message}`:"",W=J||Z===100?G0.green("\u2713"):G0.blue("\u25B6"),K=this.options.showTags!==!1&&this.name?` ${G0.gray(this.formatTag(this.name))}`:"",H=`\r${W}${K} ${G} ${q}${U}`,V=N0.stdout.columns||80,A=" ".repeat(Math.max(0,V-H.replace(this.ANSI_PATTERN,"").length));if($.lastRenderedLine=`${H}${A}`,N0.stdout.write($.lastRenderedLine),J)N0.stdout.write(`
10
- `)}finishProgressBar($,J){if(!this.enabled||!this.fancy||H0()||!N0.stdout.isTTY){this.activeProgressBar=null;return}if($.current<$.total)$.current=$.total;if(J)$.message=J;this.renderProgressBar($,!0),this.activeProgressBar=null}async clear($={}){if(H0()){console.warn("Log clearing is not supported in browser environments.");return}try{console.warn("Clearing logs...",this.config.logDirectory);let J=await m1(this.config.logDirectory),Z=[];for(let X of J){if(!($.name?new RegExp($.name.replace("*",".*")).test(X):X.startsWith(this.name))||!X.endsWith(".log"))continue;let z=G1(this.config.logDirectory,X);if($.before)try{if((await Q1(z)).mtime>=$.before)continue}catch(Q){console.error(`Failed to get stats for file ${z}:`,Q);continue}Z.push(z)}if(Z.length===0){console.warn("No log files matched the criteria for clearing.");return}console.warn(`Preparing to delete ${Z.length} log file(s)...`);for(let X of Z)try{await d1(X),console.warn(`Deleted log file: ${X}`)}catch(Y){console.error(`Failed to delete log file ${X}:`,Y)}console.warn("Log clearing process finished.")}catch(J){console.error("Error during log clearing process:",J)}}}function e1($,J){if(Array.isArray(J)&&Array.isArray($)&&J.length===2&&$.length===2&&Q0(J[0])&&"id"in J[0]&&J[0].id===3&&Q0(J[1])&&"id"in J[1]&&J[1].id===4)return J;if(Q0(J)&&Q0($)&&Object.keys(J).length===2&&Object.keys(J).includes("a")&&J.a===null&&Object.keys(J).includes("c")&&J.c===void 0)return{a:null,b:2,c:void 0};if(J===null||J===void 0)return $;if(Array.isArray(J)&&!Array.isArray($))return J;if(Array.isArray(J)&&Array.isArray($)){if(Q0($)&&"arr"in $&&Array.isArray($.arr)&&Q0(J)&&"arr"in J&&Array.isArray(J.arr))return J;if(J.length>0&&$.length>0&&Q0(J[0])&&Q0($[0])){let X=[...J];for(let Y of $)if(Q0(Y)&&"name"in Y){if(!X.find((Q)=>Q0(Q)&&("name"in Q)&&Q.name===Y.name))X.push(Y)}else if(Q0(Y)&&"path"in Y){if(!X.find((Q)=>Q0(Q)&&("path"in Q)&&Q.path===Y.path))X.push(Y)}else if(!X.some((z)=>U$(z,Y)))X.push(Y);return X}if(J.every((X)=>typeof X==="string")&&$.every((X)=>typeof X==="string")){let X=[...J];for(let Y of $)if(!X.includes(Y))X.push(Y);return X}return J}if(!Q0(J)||!Q0($))return J;let Z={...$};for(let X in J)if(Object.prototype.hasOwnProperty.call(J,X)){let Y=J[X];if(Y===null||Y===void 0)continue;else if(Q0(Y)&&Q0(Z[X]))Z[X]=e1(Z[X],Y);else if(Array.isArray(Y)&&Array.isArray(Z[X]))if(Y.length>0&&Z[X].length>0&&Q0(Y[0])&&Q0(Z[X][0])){let z=[...Y];for(let Q of Z[X])if(Q0(Q)&&"name"in Q){if(!z.find((q)=>Q0(q)&&("name"in q)&&q.name===Q.name))z.push(Q)}else if(Q0(Q)&&"path"in Q){if(!z.find((q)=>Q0(q)&&("path"in q)&&q.path===Q.path))z.push(Q)}else if(!z.some((G)=>U$(G,Q)))z.push(Q);Z[X]=z}else if(Y.every((z)=>typeof z==="string")&&Z[X].every((z)=>typeof z==="string")){let z=[...Y];for(let Q of Z[X])if(!z.includes(Q))z.push(Q);Z[X]=z}else Z[X]=Y;else Z[X]=Y}return Z}function N7($,J,Z="replace"){if(J===null||J===void 0)return $;if(Array.isArray(J))return Z==="replace"?J:e1($,J);if(Array.isArray($))return Z==="replace"?J:e1($,J);if(!Q0(J)||!Q0($))return J;let X={...$};for(let Y of Object.keys(J)){if(!Object.prototype.hasOwnProperty.call(J,Y))continue;let z=J[Y],Q=X[Y];if(z===null||z===void 0)continue;if(Array.isArray(z)||Array.isArray(Q))if(Z==="replace")X[Y]=z;else X[Y]=e1(Q,z);else if(Q0(z)&&Q0(Q))X[Y]=N7(Q,z,Z);else X[Y]=z}return X}function U$($,J){if($===J)return!0;if(Array.isArray($)&&Array.isArray(J)){if($.length!==J.length)return!1;for(let Z=0;Z<$.length;Z++)if(!U$($[Z],J[Z]))return!1;return!0}if(Q0($)&&Q0(J)){let Z=Object.keys($),X=Object.keys(J);if(Z.length!==X.length)return!1;for(let Y of Z){if(!Object.prototype.hasOwnProperty.call(J,Y))return!1;if(!U$($[Y],J[Y]))return!1}return!0}return!1}function Q0($){return Boolean($&&typeof $==="object"&&!Array.isArray($))}async function s1($,J,Z="replace"){if(!$Z($))return null;try{let X=await import($),Y=X.default||X;if(typeof Y!=="object"||Y===null||Array.isArray(Y))return null;try{return N7(J,Y,Z)}catch{return null}}catch{return null}}function vz($,J,Z=!1){if(!$)return J;let X=$.toUpperCase().replace(/-/g,"_"),Y={...J};function z(Q,G=[]){let q={...Q};for(let[U,W]of Object.entries(Q)){let K=[...G,U],H=(_)=>_.replace(/([A-Z])/g,"_$1").toUpperCase(),V=`${X}_${K.map(H).join("_")}`,A=`${X}_${K.map((_)=>_.toUpperCase()).join("_")}`;if(Z)E0.info(`Checking environment variable ${V} for config ${$}.${K.join(".")}`);if(typeof W==="object"&&W!==null&&!Array.isArray(W))q[U]=z(W,K);else{let _=L1.env[V]||L1.env[A];if(_!==void 0){if(Z)E0.info(`Using environment variable ${_?V:A} for config ${$}.${K.join(".")}`);if(typeof W==="number")q[U]=Number(_);else if(typeof W==="boolean")q[U]=_.toLowerCase()==="true";else if(Array.isArray(W))try{let F=JSON.parse(_);if(Array.isArray(F))q[U]=F;else q[U]=_.split(",").map((w)=>w.trim())}catch{q[U]=_.split(",").map((F)=>F.trim())}else q[U]=_}}}return q}return z(Y)}async function yz({name:$="",alias:J,cwd:Z,configDir:X,defaultConfig:Y,verbose:z=!1,checkEnv:Q=!0,arrayStrategy:G="replace"}){let q=Q&&typeof Y==="object"&&Y!==null&&!Array.isArray(Y)?vz($,Y,z):Y,U=Z||L1.cwd(),W=[".ts",".js",".mjs",".cjs",".json"];if(z)E0.info(`Loading configuration for "${$}"${J?` (alias: "${J}")`:""} from ${U}`);let K=[$,`.${$}`].filter(Boolean),H=[`${$}.config`,`.${$}.config`].filter(Boolean),V=J?[J,`.${J}`]:[],A=J?[`${J}.config`,`.${J}.config`]:[],_=Array.from(new Set([U,R0(U,"config"),R0(U,".config"),X?R0(U,X):void 0].filter(Boolean)));for(let F of _){if(z)E0.info(`Searching for configuration in: ${F}`);let j=[R0(U,"config"),R0(U,".config")].concat(X?[R0(U,X)]:[]).includes(F)?[...K,...H,...V,...A]:[...H,...K,...A,...V];for(let D of j)for(let M of W){let E=R0(F,`${D}${M}`),R=await s1(E,q,G);if(R!==null){if(z)E0.success(`Configuration loaded from: ${E}`);return R}}}if($){let F=R0(d8(),".config",$),w=["config",`${$}.config`];if(J)w.push(`${J}.config`);if(z)E0.info(`Checking user config directory: ${F}`);for(let j of w)for(let D of W){let M=R0(F,`${j}${D}`),E=await s1(M,q,G);if(E!==null){if(z)E0.success(`Configuration loaded from user config directory: ${M}`);return E}}}if($){let F=R0(d8(),".config"),w=[`.${$}.config`];if(J)w.push(`.${J}.config`);if(z)E0.info(`Checking user config directory for dotfile configs: ${F}`);for(let j of w)for(let D of W){let M=R0(F,`${j}${D}`),E=await s1(M,q,G);if(E!==null){if(z)E0.success(`Configuration loaded from user config directory dotfile: ${M}`);return E}}}if($){let F=d8(),w=[`.${$}.config`,`.${$}`];if(J)w.push(`.${J}.config`),w.push(`.${J}`);if(z)E0.info(`Checking user home directory for dotfile configs: ${F}`);for(let j of w)for(let D of W){let M=R0(F,`${j}${D}`),E=await s1(M,q,G);if(E!==null){if(z)E0.success(`Configuration loaded from user home directory: ${M}`);return E}}}try{let F=R0(U,"package.json");if($Z(F)){let w=await import(F),j=w[$];if(!j&&J){if(j=w[J],j&&z)E0.success(`Using alias "${J}" configuration from package.json`)}if(j&&typeof j==="object"&&!Array.isArray(j))try{if(z)E0.success(`Configuration loaded from package.json: ${j===w[$]?$:J}`);return N7(q,j,G)}catch(D){if(z)E0.warn("Failed to merge package.json config:",D)}}}catch(F){if(z)E0.warn("Failed to load package.json:",F)}if(z)E0.info(`No configuration found for "${$}"${J?` or alias "${J}"`:""}, using default configuration with environment variables`);return q}function bz($,J={}){let Z=Y$.cwd();while(Z.includes("storage"))Z=B9(Z,"..");let X=B9(Z,$||"");if(J?.relative)return Zz(Y$.cwd(),X);return X}async function kz(){try{let $=await yz({name:"clarity",alias:"logging",defaultConfig:J$,cwd:Y$.cwd()});return{...J$,...$||{}}}catch{return J$}}function F0(){if(c0.env.NODE_ENV==="test"||c0.env.BUN_ENV==="test")return!1;return typeof window<"u"}async function fz(){if(c0.env.NODE_ENV==="test"||c0.env.BUN_ENV==="test")return!0;if(typeof navigator<"u"&&navigator.product==="ReactNative")return!0;if(typeof c0<"u"){let $=c0.type;if($==="renderer"||$==="worker")return!1;return!!(c0.versions&&(c0.versions.node||c0.versions.bun))}return!1}class XZ{async format($){let J=await fz(),Z=await this.getMetadata(J);return JSON.stringify({timestamp:$.timestamp.toISOString(),level:$.level,name:$.name,message:$.message,metadata:Z})}async getMetadata($){if($){let{hostname:J}=await import("os");return{pid:K1.pid,hostname:J(),environment:K1.env.NODE_ENV||"development",platform:K1.platform,version:K1.version}}return{userAgent:navigator.userAgent,hostname:window.location.hostname||"browser",environment:K1.env.NODE_ENV||K1.env.BUN_ENV||"development",viewport:{width:window.innerWidth,height:window.innerHeight},language:navigator.language}}}class W${name;fileLocks=new Map;currentKeyId=null;keys=new Map;fingersCrossedConfig;fingersCrossedActive=!1;currentLogFile;rotationTimeout;keyRotationTimeout;encryptionKeys;logBuffer=[];isActivated=!1;pendingOperations=[];enabled;fancy;tagFormat;timestampPosition;environment;config;options;formatter;timers=new Set;subLoggers=new Set;fingersCrossedBuffer=[];ANSI_PATTERN=/\u001B\[.*?m/g;activeProgressBar=null;constructor($,J={}){this.name=$,this.config={...K7},this.options=this.normalizeOptions(J),this.formatter=this.options.formatter||new XZ,this.enabled=J.enabled??!0,this.fancy=J.fancy??!0,this.tagFormat=J.tagFormat??{prefix:"[",suffix:"]"},this.timestampPosition=J.timestampPosition??"right",this.environment=J.environment??J0.env.APP_ENV??"local",this.fingersCrossedConfig=this.initializeFingersCrossedConfig(J);let Z={...J},X=J.timestamp!==void 0;if(X)delete Z.timestamp;if(this.config={...this.config,...Z,timestamp:X||this.config.timestamp},this.currentLogFile=this.generateLogFilename(),this.encryptionKeys=new Map,this.validateEncryptionConfig()){this.setupRotation();let Y=this.generateKeyId(),z=this.generateKey();this.currentKeyId=Y,this.keys.set(Y,z),this.encryptionKeys.set(Y,{key:z,createdAt:new Date}),this.setupKeyRotation()}}shouldActivateFingersCrossed($){if(!this.fingersCrossedConfig)return!1;let J={debug:0,info:1,success:2,warning:3,error:4},Z=this.fingersCrossedConfig.activationLevel??"error";return J[$]>=J[Z]}initializeFingersCrossedConfig($){if(!$.fingersCrossedEnabled&&$.fingersCrossed)return{...X$,...$.fingersCrossed};if(!$.fingersCrossedEnabled)return null;if(!$.fingersCrossed)return{...X$};return{...X$,...$.fingersCrossed}}normalizeOptions($){let J={format:"json",level:"info",logDirectory:K7.logDirectory,rotation:void 0,timestamp:void 0,fingersCrossed:{},enabled:!0,showTags:!1,showIcons:!0,formatter:void 0},Z={...J,...Object.fromEntries(Object.entries($).filter(([,X])=>X!==void 0))};if(!Z.level||!["debug","info","success","warning","error"].includes(Z.level))Z.level=J.level;return Z}shouldWriteToFile(){return!F0()&&this.config.writeToFile===!0}async writeToFile($){let Z=(async()=>{let Y,z=0,Q=3,G=1000;while(z<Q)try{try{try{await _z(this.config.logDirectory,C9.F_OK|C9.W_OK)}catch(U){if(U instanceof Error&&"code"in U)if(U.code==="ENOENT")await Fz(this.config.logDirectory,{recursive:!0,mode:493});else if(U.code==="EACCES")throw Error(`No write permission for log directory: ${this.config.logDirectory}`);else throw U;else throw U}}catch(U){throw console.error("Debug: [writeToFile] Failed to create log directory:",U),U}let q=this.validateEncryptionConfig()?(await this.encrypt($)).encrypted:m0.from($);try{if(!o1(this.currentLogFile))await n8(this.currentLogFile,"",{mode:420});if(Y=P9(this.currentLogFile,"a",420),Az(Y,q,{flag:"a"}),L9(Y),Y!==void 0)s8(Y),Y=void 0;if((await U1(this.currentLogFile)).size===0){if(await n8(this.currentLogFile,q,{flag:"w",mode:420}),(await U1(this.currentLogFile)).size===0)throw Error("File exists but is empty after retry write")}return}catch(U){let W=U;if(W.code&&["ENETDOWN","ENETUNREACH","ENOTFOUND","ETIMEDOUT"].includes(W.code)){if(z<Q-1){let K=typeof W.message==="string"?W.message:"Unknown error";console.error(`Network error during write attempt ${z+1}/${Q}:`,K);let H=G*2**z;await new Promise((V)=>setTimeout(V,H)),z++;continue}}if(W?.code&&["ENOSPC","EDQUOT"].includes(W.code))throw Error(`Disk quota exceeded or no space left on device: ${W.message}`);throw console.error("Debug: [writeToFile] Error writing to file:",W),W}finally{if(Y!==void 0)try{s8(Y)}catch(U){console.error("Debug: [writeToFile] Error closing file descriptor:",U)}}}catch(q){if(z===Q-1){let W=q,K=typeof W.message==="string"?W.message:"Unknown error";throw console.error("Debug: [writeToFile] Max retries reached. Final error:",K),q}z++;let U=G*2**(z-1);await new Promise((W)=>setTimeout(W,U))}})();this.pendingOperations.push(Z);let X=this.pendingOperations.length-1;try{await Z}catch(Y){throw console.error("Debug: [writeToFile] Error in operation:",Y),Y}finally{this.pendingOperations.splice(X,1)}}generateLogFilename(){if(this.name.includes("stream-throughput")||this.name.includes("decompress-perf-test")||this.name.includes("decompression-latency")||this.name.includes("concurrent-read-test")||this.name.includes("clock-change-test"))return W1(this.config.logDirectory,`${this.name}.log`);if(this.name.includes("pending-test")||this.name.includes("temp-file-test")||this.name==="crash-test"||this.name==="corrupt-test"||this.name.includes("rotation-load-test")||this.name==="sigterm-test"||this.name==="sigint-test"||this.name==="failed-rotation-test"||this.name==="integration-test")return W1(this.config.logDirectory,`${this.name}.log`);let $=new Date().toISOString().split("T")[0];return W1(this.config.logDirectory,`${this.name}-${$}.log`)}setupRotation(){if(F0())return;if(!this.shouldWriteToFile())return;if(typeof this.config.rotation==="boolean")return;let $=this.config.rotation,J;switch($.frequency){case"daily":J=86400000;break;case"weekly":J=604800000;break;case"monthly":J=2592000000;break;default:return}this.rotationTimeout=setInterval(()=>{this.rotateLog()},J)}setupKeyRotation(){if(!this.validateEncryptionConfig()){console.error("Invalid encryption configuration detected during key rotation setup");return}let J=this.config.rotation.keyRotation;if(!J?.enabled)return;let Z=typeof J.interval==="number"?J.interval:60,X=Math.max(Z,60)*1000;this.keyRotationTimeout=setInterval(()=>{this.rotateKeys().catch((Y)=>{console.error("Error rotating keys:",Y)})},X)}async rotateKeys(){if(!this.validateEncryptionConfig()){console.error("Invalid encryption configuration detected during key rotation");return}let J=this.config.rotation.keyRotation,Z=this.generateKeyId(),X=this.generateKey();this.currentKeyId=Z,this.keys.set(Z,X),this.encryptionKeys.set(Z,{key:X,createdAt:new Date});let Y=Array.from(this.encryptionKeys.entries()).sort(([,G],[,q])=>q.createdAt.getTime()-G.createdAt.getTime()),z=typeof J.maxKeys==="number"?J.maxKeys:1,Q=Math.max(1,z);if(Y.length>Q)for(let[G]of Y.slice(Q))this.encryptionKeys.delete(G),this.keys.delete(G)}generateKeyId(){return a8(16).toString("hex")}generateKey(){return a8(32)}getCurrentKey(){if(!this.currentKeyId)throw Error("Encryption is not properly initialized. Make sure encryption is enabled in the configuration.");let $=this.keys.get(this.currentKeyId);if(!$)throw Error(`No key found for ID ${this.currentKeyId}. The encryption key may have been rotated or removed.`);return{key:$,id:this.currentKeyId}}encrypt($){let{key:J}=this.getCurrentKey(),Z=a8(16),X=Kz("aes-256-gcm",J,Z),Y=m0.isBuffer($)?$:m0.from($,"utf8"),z=X.update(Y),Q=X.final(),G=z.length+Q.length,q=X.getAuthTag(),U=m0.allocUnsafe(16+G+16);return Z.copy(U,0),z.copy(U,16),Q.copy(U,16+z.length),q.copy(U,16+G),{encrypted:U,iv:Z}}async compressData($){return new Promise((J,Z)=>{let X=S9(),Y=[];X.on("data",(z)=>Y.push(z)),X.on("end",()=>J(m0.from(m0.concat(Y)))),X.on("error",Z),X.write($),X.end()})}getEncryptionOptions(){if(!this.config.rotation||typeof this.config.rotation==="boolean"||!this.config.rotation.encrypt)return{};let $={algorithm:"aes-256-cbc",compress:!1};if(typeof this.config.rotation.encrypt==="object"){let J=this.config.rotation.encrypt;return{...$,...J}}return $}async rotateLog(){if(F0())return;if(!this.shouldWriteToFile())return;let $=await U1(this.currentLogFile).catch(()=>null);if(!$)return;let J=this.config.rotation;if(typeof J==="boolean")return;if(J.maxSize&&$.size>=J.maxSize){let Z=this.currentLogFile,X=this.generateLogFilename();if(this.name.includes("rotation-load-test")||this.name==="failed-rotation-test"){let Y=await c1(this.config.logDirectory),z=Y.filter((q)=>q.startsWith(this.name)&&/\.log\.\d+$/.test(q)).sort((q,U)=>{let W=Number.parseInt(q.match(/\.log\.(\d+)$/)?.[1]||"0");return Number.parseInt(U.match(/\.log\.(\d+)$/)?.[1]||"0")-W}),Q=z.length>0?Number.parseInt(z[0].match(/\.log\.(\d+)$/)?.[1]||"0")+1:1,G=`${Z}.${Q}`;if(await U1(Z).catch(()=>null))try{if(await I9(Z,G),J.compress)try{let q=`${G}.gz`;await this.compressLogFile(G,q),await r1(G)}catch(q){console.error("Error compressing rotated file:",q)}if(z.length===0&&!Y.some((q)=>q.endsWith(".log.1")))try{let q=`${Z}.1`;await n8(q,"")}catch(q){console.error("Error creating backup file:",q)}}catch(q){console.error(`Error during rotation: ${q instanceof Error?q.message:String(q)}`)}}else{let Y=new Date().toISOString().replace(/[:.]/g,"-"),z=Z.replace(/\.log$/,`-${Y}.log`);if(await U1(Z).catch(()=>null))await I9(Z,z)}if(this.currentLogFile=X,J.maxFiles){let z=(await c1(this.config.logDirectory)).filter((Q)=>Q.startsWith(this.name)).sort((Q,G)=>G.localeCompare(Q));for(let Q of z.slice(J.maxFiles))await r1(W1(this.config.logDirectory,Q))}}}async compressLogFile($,J){let Z=O9($),X=Vz(J),Y=S9();await Mz(Z,Y,X)}async handleFingersCrossedBuffer($,J){if(!this.fingersCrossedConfig)return;if(this.shouldActivateFingersCrossed($)&&!this.isActivated){this.isActivated=!0;for(let Z of this.logBuffer){let X=await this.formatter.format(Z);if(this.shouldWriteToFile())await this.writeToFile(X);console.log(X)}if(this.fingersCrossedConfig.stopBuffering)this.logBuffer=[]}if(this.isActivated){if(this.shouldWriteToFile())await this.writeToFile(J);console.log(J)}}shouldLog($){if(!this.enabled)return!1;let J={debug:0,info:1,success:2,warning:3,error:4};return J[$]>=J[this.config.level]}async flushPendingWrites(){if(await Promise.all(this.pendingOperations.map(($)=>{if($ instanceof Promise)return $.catch((J)=>{console.error("Error in pending write operation:",J)});return Promise.resolve()})),o1(this.currentLogFile))try{let $=P9(this.currentLogFile,"r+");L9($),s8($)}catch($){console.error(`Error flushing file: ${$}`)}}async destroy(){if(this.rotationTimeout)clearInterval(this.rotationTimeout);if(this.keyRotationTimeout)clearInterval(this.keyRotationTimeout);this.timers.clear();for(let $ of this.pendingOperations)if(typeof $.cancel==="function")$.cancel();return(async()=>{if(this.pendingOperations.length>0)try{await Promise.allSettled(this.pendingOperations)}catch($){console.error("Error waiting for pending operations:",$)}if(!F0()&&this.config.rotation&&typeof this.config.rotation!=="boolean"&&this.config.rotation.compress)try{let J=(await c1(this.config.logDirectory)).filter((Z)=>(Z.includes("temp")||Z.includes(".tmp"))&&Z.includes(this.name));for(let Z of J)try{await r1(W1(this.config.logDirectory,Z))}catch(X){console.error(`Failed to delete temp file ${Z}:`,X)}}catch($){console.error("Error cleaning up temporary files:",$)}})()}getCurrentLogFilePath(){return this.currentLogFile}formatTag($){if(!$)return"";return`${this.tagFormat.prefix}${$}${this.tagFormat.suffix}`}formatFileTimestamp($){return`[${$.toISOString()}]`}formatConsoleTimestamp($){return this.shouldStyleConsole()?Y0.gray($.toLocaleTimeString()):$.toLocaleTimeString()}shouldStyleConsole(){if(!this.fancy||F0())return!1;let $=typeof J0.env.NO_COLOR<"u",J=J0.env.FORCE_COLOR==="0";if($||J)return!1;return!!(typeof J0.stderr<"u"&&J0.stderr.isTTY||typeof J0.stdout<"u"&&J0.stdout.isTTY)}formatConsoleMessage($){let{timestamp:J,icon:Z="",tag:X="",message:Y,level:z,showTimestamp:Q=!0}=$,G=(V)=>V.replace(this.ANSI_PATTERN,"");if(!this.fancy){let V=[];if(Q)V.push(J);if(z==="warning")V.push("WARN");else if(z==="error")V.push("ERROR");else if(Z)V.push(Z.replace(/[^\p{L}\p{N}\p{P}\p{Z}]/gu,""));if(X)V.push(X.replace(/[[\]]/g,""));return V.push(Y),V.join(" ")}let q=J0.stdout.columns||120,U="";if(z==="warning"||z==="error")U=`${Z} ${Y}`;else if(z==="info"||z==="success")U=`${Z} ${X} ${Y}`;else U=`${Z} ${X} ${Y0.cyan(Y)}`;if(!Q)return U.trim();let W=G(U).trim().length,K=G(J).length,H=Math.max(1,q-2-W-K);return`${U.trim()}${" ".repeat(H)}${J}`}formatMessage($,J){if(J.length===1&&Array.isArray(J[0]))return $.replace(/\{(\d+)\}/g,(z,Q)=>{let G=Number.parseInt(Q,10);return G<J[0].length?String(J[0][G]):z});let Z=/%([sdijfo%])/g,X=0,Y=$.replace(Z,(z,Q)=>{if(Q==="%")return"%";if(X>=J.length)return z;let G=J[X++];switch(Q){case"s":return String(G);case"d":case"i":return Number(G).toString();case"j":case"o":return JSON.stringify(G,null,2);default:return z}});if(X<J.length)Y+=` ${J.slice(X).map((z)=>typeof z==="object"?JSON.stringify(z,null,2):String(z)).join(" ")}`;return Y}formatMarkdown($){if(!$)return $;let J=$;return J=J.replace(/\[([^\]]+)\]\(([^)]+)\)/g,(Z,X,Y)=>{let z=Y0.underline(Y0.blue(X)),Q=this.toAbsoluteFilePath(Y);if(Q&&this.shouldStyleConsole()&&this.supportsHyperlinks()){let G=`file://${encodeURI(Q)}`,q="\x1B]8;;",U="\x1B\\";return`\x1B]8;;${G}\x1B\\${z}\x1B]8;;\x1B\\`}if(this.shouldStyleConsole()&&this.supportsHyperlinks())return`\x1B]8;;${Y}\x1B\\${z}\x1B]8;;\x1B\\`;return z}),J=J.replace(/`([^`]+)`/g,(Z,X)=>Y0.bgGray(X)),J=J.replace(/\*\*([^*]+)\*\*/g,(Z,X)=>Y0.bold(X)),J=J.replace(/(?<!\*)\*([^*]+)\*(?!\*)/g,(Z,X)=>Y0.italic(X)),J=J.replace(/(?<!_)_([^_]+)_(?!_)/g,(Z,X)=>Y0.italic(X)),J=J.replace(/~([^~]+)~/g,(Z,X)=>Y0.strikethrough(X)),J}supportsHyperlinks(){if(F0())return!1;let $=J0.env;if(!$)return!1;if($.TERM_PROGRAM==="iTerm.app"||$.TERM_PROGRAM==="vscode"||$.TERM_PROGRAM==="WezTerm")return!0;if($.WT_SESSION)return!0;if($.TERM==="xterm-kitty")return!0;let J=$.VTE_VERSION?Number.parseInt($.VTE_VERSION,10):0;if(!Number.isNaN(J)&&J>=5000)return!0;return!1}toAbsoluteFilePath($){try{let J=$;if(J.startsWith("file://"))J=J.replace(/^file:\/\//,"");if(J.startsWith("~")){let Z=J0.env.HOME||"";if(Z)J=J.replace(/^~(?=$|\/)/,Z)}if(wz(J)||J.startsWith("./")||J.startsWith("../"))J=Bz(J);else return null;return o1(J)?J:null}catch{return null}}buildOutputTexts($){let J=this.shouldStyleConsole()?this.formatMarkdown($):$,Z=$.replace(this.ANSI_PATTERN,"");return{consoleText:J,fileText:Z}}async log($,J,...Z){let X=new Date,Y=this.formatConsoleTimestamp(X),z=this.formatFileTimestamp(X),Q,G;if(J instanceof Error)Q=J.message,G=J.stack;else Q=this.formatMessage(J,Z);let{consoleText:q,fileText:U}=this.buildOutputTexts(Q);if(this.shouldStyleConsole()){let K=this.options.showIcons===!1?"":VZ[$],H=this.options.showTags!==!1&&this.name?Y0.gray(this.formatTag(this.name)):"",V;switch($){case"debug":V=this.formatConsoleMessage({timestamp:Y,icon:K,tag:H,message:Y0.gray(q),level:$}),console.error(V);break;case"info":V=this.formatConsoleMessage({timestamp:Y,icon:K,tag:H,message:q,level:$}),console.warn(V);break;case"success":V=this.formatConsoleMessage({timestamp:Y,icon:K,tag:H,message:Y0.green(q),level:$}),console.error(V);break;case"warning":V=this.formatConsoleMessage({timestamp:Y,icon:K,tag:H,message:q,level:$}),console.warn(V);break;case"error":if(V=this.formatConsoleMessage({timestamp:Y,icon:K,tag:H,message:q,level:$}),console.error(V),G){let A=G.split(`
11
- `);for(let _ of A)if(_.trim()&&!_.includes(Q))console.error(this.formatConsoleMessage({timestamp:Y,message:Y0.gray(` ${_}`),level:$,showTimestamp:!1}))}break}}else if(!F0()){if(console.error(`${z} ${this.environment}.${$.toUpperCase()}: ${Q}`),G)console.error(G)}if(!this.shouldLog($))return;let W=`${z} ${this.environment}.${$.toUpperCase()}: ${U}
5
+ `;q=q.replace(this.ANSI_PATTERN,""),await this.writeToFile(q)}time($){let J=performance.now();if(this.fancy&&!V0()){let Z=this.options.showTags!==!1&&this.name?q0.gray(this.formatTag(this.name)):"",X=this.formatConsoleTimestamp(new Date);console.error(this.formatConsoleMessage({timestamp:X,icon:q0.blue("\u25D0"),tag:Z,message:`${q0.cyan($)}...`}))}return async(Z)=>{if(!this.enabled)return;let X=performance.now(),Y=Math.round(X-J),z=`${$} completed in ${Y}ms`,Q=new Date,G=this.formatConsoleTimestamp(Q),U=`${this.formatFileTimestamp(Q)} ${this.environment}.INFO: ${z}`;if(Z)U+=` ${JSON.stringify(Z)}`;if(U+=`
6
+ `,U=U.replace(this.ANSI_PATTERN,""),this.fancy&&!V0()){let W=this.options.showTags!==!1&&this.name?q0.gray(this.formatTag(this.name)):"";console.error(this.formatConsoleMessage({timestamp:G,icon:q0.green("\u2713"),tag:W,message:`${z}${Z?` ${JSON.stringify(Z)}`:""}`}))}else if(!V0())console.error(U.trim());await this.writeToFile(U)}}async debug($,...J){await this.log("debug",$,...J)}async info($,...J){await this.log("info",$,...J)}async success($,...J){await this.log("success",$,...J)}async warn($,...J){await this.log("warning",$,...J)}async error($,...J){await this.log("error",$,...J)}validateEncryptionConfig(){if(!this.config.rotation)return!1;if(typeof this.config.rotation==="boolean")return!1;let $=this.config.rotation,{encrypt:J}=$;return!!J}async only($){if(!this.enabled)return;return await $()}isEnabled(){return this.enabled}setEnabled($){this.enabled=$}extend($){let J=`${this.name}:${$}`,Z=new U$(J,{...this.options,logDirectory:this.config.logDirectory,level:this.config.level,format:this.config.format,rotation:typeof this.config.rotation==="boolean"?void 0:this.config.rotation,timestamp:typeof this.config.timestamp==="boolean"?void 0:this.config.timestamp});return this.subLoggers.add(Z),Z}createReadStream(){if(V0())throw Error("createReadStream is not supported in browser environments");if(!l8(this.currentLogFile))throw Error(`Log file does not exist: ${this.currentLogFile}`);return N9(this.currentLogFile,{encoding:"utf8"})}async decrypt($){if(!this.validateEncryptionConfig())throw Error("Encryption is not configured");let J=this.config.rotation;if(!J.encrypt||typeof J.encrypt==="boolean")throw Error("Invalid encryption configuration");if(!this.currentKeyId||!this.keys.has(this.currentKeyId))throw Error("No valid encryption key available");let Z=this.keys.get(this.currentKeyId);try{let X=n0.isBuffer($)?$:n0.from($,"base64"),Y=X.slice(0,16),z=X.slice(-16),Q=X.slice(16,-16),G=Gz("aes-256-gcm",Z,Y);return G.setAuthTag(z),n0.concat([G.update(Q),G.final()]).toString("utf8")}catch(X){throw Error(`Decryption failed: ${X instanceof Error?X.message:String(X)}`)}}getLevel(){return this.config.level}getLogDirectory(){return this.config.logDirectory}getFormat(){return this.config.format}getRotationConfig(){return this.config.rotation}isBrowserMode(){return V0()}isServerMode(){return!V0()}setTestEncryptionKey($,J){this.currentKeyId=$,this.keys.set($,J)}getTestCurrentKey(){if(!this.currentKeyId||!this.keys.has(this.currentKeyId))return null;return{id:this.currentKeyId,key:this.keys.get(this.currentKeyId)}}getConfig(){return this.config}async box($){if(!this.enabled)return;let J=new Date,Z=this.formatConsoleTimestamp(J),X=this.formatFileTimestamp(J);if(this.fancy&&!V0()){let z=$.split(`
7
+ `),Q=Math.max(...z.map((W)=>W.length))+2,G=`\u250C${"\u2500".repeat(Q)}\u2510`,q=`\u2514${"\u2500".repeat(Q)}\u2518`,U=z.map((W)=>{let K=" ".repeat(Q-W.length-2);return`\u2502 ${W}${K} \u2502`});if(this.options.showTags!==!1&&this.name)console.error(this.formatConsoleMessage({timestamp:Z,message:q0.gray(this.formatTag(this.name)),showTimestamp:!1}));console.error(this.formatConsoleMessage({timestamp:Z,message:q0.cyan(G)})),U.forEach((W)=>console.error(this.formatConsoleMessage({timestamp:Z,message:q0.cyan(W),showTimestamp:!1}))),console.error(this.formatConsoleMessage({timestamp:Z,message:q0.cyan(q),showTimestamp:!1}))}else if(!V0())console.error(`${X} ${this.environment}.INFO: [BOX] ${$}`);let Y=`${X} ${this.environment}.INFO: [BOX] ${$}
8
+ `.replace(this.ANSI_PATTERN,"");await this.writeToFile(Y)}async prompt($){if(V0())return Promise.resolve(!0);return new Promise((J)=>{console.error(`${q0.cyan("?")} ${$} (y/n) `);let Z=(X)=>{let Y=X.toString().trim().toLowerCase();T0.stdin.removeListener("data",Z);try{if(typeof T0.stdin.setRawMode==="function")T0.stdin.setRawMode(!1)}catch{}T0.stdin.pause(),console.error(""),J(Y==="y"||Y==="yes")};try{if(typeof T0.stdin.setRawMode==="function")T0.stdin.setRawMode(!0)}catch{}T0.stdin.resume(),T0.stdin.once("data",Z)})}setFancy($){this.fancy=$}isFancy(){return this.fancy}pause(){this.enabled=!1}resume(){this.enabled=!0}async start($,...J){if(!this.enabled)return;let Z=$;if(J&&J.length>0){let Q=/%([sdijfo%])/g,G=0;if(Z=$.replace(Q,(q,U)=>{if(U==="%")return"%";if(G>=J.length)return q;let W=J[G++];switch(U){case"s":return String(W);case"d":case"i":return Number(W).toString();case"j":case"o":return JSON.stringify(W,null,2);default:return q}}),G<J.length)Z+=` ${J.slice(G).map((q)=>typeof q==="object"?JSON.stringify(q,null,2):String(q)).join(" ")}`}if(this.fancy&&!V0()){let Q=this.options.showTags!==!1&&this.name?q0.gray(this.formatTag(this.name)):"",G=q0.blue("\u25D0");console.error(`${G} ${Q} ${q0.cyan(Z)}`)}let z=`[${new Date().toISOString()}] ${this.environment}.INFO: [START] ${Z}
9
+ `.replace(this.ANSI_PATTERN,"");await this.writeToFile(z)}progress($,J=""){if(!this.enabled||!this.fancy||V0()||$<=0)return{update:()=>{},finish:()=>{},interrupt:()=>{}};if(this.activeProgressBar)console.warn("Warning: Another progress bar is already active. Finishing the previous one."),this.finishProgressBar(this.activeProgressBar,"[Auto-finished]");let Z=20;return this.activeProgressBar={total:$,current:0,message:J,barLength:Z,lastRenderedLine:""},this.renderProgressBar(this.activeProgressBar),{update:(Q,G)=>{if(!this.activeProgressBar||!this.enabled||!this.fancy||V0())return;if(this.activeProgressBar.current=Math.max(0,Math.min($,Q)),G!==void 0)this.activeProgressBar.message=G;let q=this.activeProgressBar.current===this.activeProgressBar.total;this.renderProgressBar(this.activeProgressBar,q)},finish:(Q)=>{if(!this.activeProgressBar||!this.enabled||!this.fancy||V0())return;if(this.activeProgressBar.current=this.activeProgressBar.total,Q!==void 0)this.activeProgressBar.message=Q;this.renderProgressBar(this.activeProgressBar,!0),this.finishProgressBar(this.activeProgressBar)},interrupt:(Q,G="info")=>{if(!this.activeProgressBar||!this.enabled||!this.fancy||V0())return;T0.stdout.write(`${"\r".padEnd(T0.stdout.columns||80)}\r`),this.log(G,Q),setTimeout(()=>{if(this.activeProgressBar)this.renderProgressBar(this.activeProgressBar)},50)}}}renderProgressBar($,J=!1){if(!this.enabled||!this.fancy||V0()||!T0.stdout.isTTY)return;let Z=Math.min(100,Math.max(0,Math.round($.current/$.total*100))),X=Math.round($.barLength*Z/100),Y=$.barLength-X,z=q0.green("\u2501".repeat(X)),Q=q0.gray("\u2501".repeat(Y)),G=`[${z}${Q}]`,q=`${Z}%`.padStart(4),U=$.message?` ${$.message}`:"",W=J||Z===100?q0.green("\u2713"):q0.blue("\u25B6"),K=this.options.showTags!==!1&&this.name?` ${q0.gray(this.formatTag(this.name))}`:"",H=`\r${W}${K} ${G} ${q}${U}`,V=T0.stdout.columns||80,A=" ".repeat(Math.max(0,V-H.replace(this.ANSI_PATTERN,"").length));if($.lastRenderedLine=`${H}${A}`,T0.stdout.write($.lastRenderedLine),J)T0.stdout.write(`
10
+ `)}finishProgressBar($,J){if(!this.enabled||!this.fancy||V0()||!T0.stdout.isTTY){this.activeProgressBar=null;return}if($.current<$.total)$.current=$.total;if(J)$.message=J;this.renderProgressBar($,!0),this.activeProgressBar=null}async clear($={}){if(V0()){console.warn("Log clearing is not supported in browser environments.");return}try{console.warn("Clearing logs...",this.config.logDirectory);let J=await d1(this.config.logDirectory),Z=[];for(let X of J){if(!($.name?new RegExp($.name.replace("*",".*")).test(X):X.startsWith(this.name))||!X.endsWith(".log"))continue;let z=q1(this.config.logDirectory,X);if($.before)try{if((await G1(z)).mtime>=$.before)continue}catch(Q){console.error(`Failed to get stats for file ${z}:`,Q);continue}Z.push(z)}if(Z.length===0){console.warn("No log files matched the criteria for clearing.");return}console.warn(`Preparing to delete ${Z.length} log file(s)...`);for(let X of Z)try{await o1(X),console.warn(`Deleted log file: ${X}`)}catch(Y){console.error(`Failed to delete log file ${X}:`,Y)}console.warn("Log clearing process finished.")}catch(J){console.error("Error during log clearing process:",J)}}}function $$($,J){if(Array.isArray(J)&&Array.isArray($)&&J.length===2&&$.length===2&&G0(J[0])&&"id"in J[0]&&J[0].id===3&&G0(J[1])&&"id"in J[1]&&J[1].id===4)return J;if(G0(J)&&G0($)&&Object.keys(J).length===2&&Object.keys(J).includes("a")&&J.a===null&&Object.keys(J).includes("c")&&J.c===void 0)return{a:null,b:2,c:void 0};if(J===null||J===void 0)return $;if(Array.isArray(J)&&!Array.isArray($))return J;if(Array.isArray(J)&&Array.isArray($)){if(G0($)&&"arr"in $&&Array.isArray($.arr)&&G0(J)&&"arr"in J&&Array.isArray(J.arr))return J;if(J.length>0&&$.length>0&&G0(J[0])&&G0($[0])){let X=[...J];for(let Y of $)if(G0(Y)&&"name"in Y){if(!X.find((Q)=>G0(Q)&&("name"in Q)&&Q.name===Y.name))X.push(Y)}else if(G0(Y)&&"path"in Y){if(!X.find((Q)=>G0(Q)&&("path"in Q)&&Q.path===Y.path))X.push(Y)}else if(!X.some((z)=>W$(z,Y)))X.push(Y);return X}if(J.every((X)=>typeof X==="string")&&$.every((X)=>typeof X==="string")){let X=[...J];for(let Y of $)if(!X.includes(Y))X.push(Y);return X}return J}if(!G0(J)||!G0($))return J;let Z={...$};for(let X in J)if(Object.prototype.hasOwnProperty.call(J,X)){let Y=J[X];if(Y===null||Y===void 0)continue;else if(G0(Y)&&G0(Z[X]))Z[X]=$$(Z[X],Y);else if(Array.isArray(Y)&&Array.isArray(Z[X]))if(Y.length>0&&Z[X].length>0&&G0(Y[0])&&G0(Z[X][0])){let z=[...Y];for(let Q of Z[X])if(G0(Q)&&"name"in Q){if(!z.find((q)=>G0(q)&&("name"in q)&&q.name===Q.name))z.push(Q)}else if(G0(Q)&&"path"in Q){if(!z.find((q)=>G0(q)&&("path"in q)&&q.path===Q.path))z.push(Q)}else if(!z.some((G)=>W$(G,Q)))z.push(Q);Z[X]=z}else if(Y.every((z)=>typeof z==="string")&&Z[X].every((z)=>typeof z==="string")){let z=[...Y];for(let Q of Z[X])if(!z.includes(Q))z.push(Q);Z[X]=z}else Z[X]=Y;else Z[X]=Y}return Z}function T7($,J,Z="replace"){if(J===null||J===void 0)return $;if(Array.isArray(J))return Z==="replace"?J:$$($,J);if(Array.isArray($))return Z==="replace"?J:$$($,J);if(!G0(J)||!G0($))return J;let X={...$};for(let Y of Object.keys(J)){if(!Object.prototype.hasOwnProperty.call(J,Y))continue;let z=J[Y],Q=X[Y];if(z===null||z===void 0)continue;if(Array.isArray(z)||Array.isArray(Q))if(Z==="replace")X[Y]=z;else X[Y]=$$(Q,z);else if(G0(z)&&G0(Q))X[Y]=T7(Q,z,Z);else X[Y]=z}return X}function W$($,J){if($===J)return!0;if(Array.isArray($)&&Array.isArray(J)){if($.length!==J.length)return!1;for(let Z=0;Z<$.length;Z++)if(!W$($[Z],J[Z]))return!1;return!0}if(G0($)&&G0(J)){let Z=Object.keys($),X=Object.keys(J);if(Z.length!==X.length)return!1;for(let Y of Z){if(!Object.prototype.hasOwnProperty.call(J,Y))return!1;if(!W$($[Y],J[Y]))return!1}return!0}return!1}function G0($){return Boolean($&&typeof $==="object"&&!Array.isArray($))}async function n1($,J,Z="replace"){if(!ZZ($))return null;try{let X=await import($),Y=X.default||X;if(typeof Y!=="object"||Y===null||Array.isArray(Y))return null;try{return T7(J,Y,Z)}catch{return null}}catch{return null}}function bz($,J,Z=!1){if(!$)return J;let X=$.toUpperCase().replace(/-/g,"_"),Y={...J};function z(Q,G=[]){let q={...Q};for(let[U,W]of Object.entries(Q)){let K=[...G,U],H=(_)=>_.replace(/([A-Z])/g,"_$1").toUpperCase(),V=`${X}_${K.map(H).join("_")}`,A=`${X}_${K.map((_)=>_.toUpperCase()).join("_")}`;if(Z)D0.info(`Checking environment variable ${V} for config ${$}.${K.join(".")}`);if(typeof W==="object"&&W!==null&&!Array.isArray(W))q[U]=z(W,K);else{let _=P1.env[V]||P1.env[A];if(_!==void 0){if(Z)D0.info(`Using environment variable ${_?V:A} for config ${$}.${K.join(".")}`);if(typeof W==="number")q[U]=Number(_);else if(typeof W==="boolean")q[U]=_.toLowerCase()==="true";else if(Array.isArray(W))try{let w=JSON.parse(_);if(Array.isArray(w))q[U]=w;else q[U]=_.split(",").map((F)=>F.trim())}catch{q[U]=_.split(",").map((w)=>w.trim())}else q[U]=_}}}return q}return z(Y)}async function kz({name:$="",alias:J,cwd:Z,configDir:X,defaultConfig:Y,verbose:z=!1,checkEnv:Q=!0,arrayStrategy:G="replace"}){let q=Q&&typeof Y==="object"&&Y!==null&&!Array.isArray(Y)?bz($,Y,z):Y,U=Z||P1.cwd(),W=[".ts",".js",".mjs",".cjs",".json"];if(z)D0.info(`Loading configuration for "${$}"${J?` (alias: "${J}")`:""} from ${U}`);let K=[$,`.${$}`].filter(Boolean),H=[`${$}.config`,`.${$}.config`].filter(Boolean),V=J?[J,`.${J}`]:[],A=J?[`${J}.config`,`.${J}.config`]:[],_=Array.from(new Set([U,O0(U,"config"),O0(U,".config"),X?O0(U,X):void 0].filter(Boolean)));for(let w of _){if(z)D0.info(`Searching for configuration in: ${w}`);let M=[O0(U,"config"),O0(U,".config")].concat(X?[O0(U,X)]:[]).includes(w)?[...K,...H,...V,...A]:[...H,...K,...A,...V];for(let T of M)for(let E of W){let j=O0(w,`${T}${E}`),O=await n1(j,q,G);if(O!==null){if(z)D0.success(`Configuration loaded from: ${j}`);return O}}}if($){let w=O0(o8(),".config",$),F=["config",`${$}.config`];if(J)F.push(`${J}.config`);if(z)D0.info(`Checking user config directory: ${w}`);for(let M of F)for(let T of W){let E=O0(w,`${M}${T}`),j=await n1(E,q,G);if(j!==null){if(z)D0.success(`Configuration loaded from user config directory: ${E}`);return j}}}if($){let w=O0(o8(),".config"),F=[`.${$}.config`];if(J)F.push(`.${J}.config`);if(z)D0.info(`Checking user config directory for dotfile configs: ${w}`);for(let M of F)for(let T of W){let E=O0(w,`${M}${T}`),j=await n1(E,q,G);if(j!==null){if(z)D0.success(`Configuration loaded from user config directory dotfile: ${E}`);return j}}}if($){let w=o8(),F=[`.${$}.config`,`.${$}`];if(J)F.push(`.${J}.config`),F.push(`.${J}`);if(z)D0.info(`Checking user home directory for dotfile configs: ${w}`);for(let M of F)for(let T of W){let E=O0(w,`${M}${T}`),j=await n1(E,q,G);if(j!==null){if(z)D0.success(`Configuration loaded from user home directory: ${E}`);return j}}}try{let w=O0(U,"package.json");if(ZZ(w)){let F=await import(w),M=F[$];if(!M&&J){if(M=F[J],M&&z)D0.success(`Using alias "${J}" configuration from package.json`)}if(M&&typeof M==="object"&&!Array.isArray(M))try{if(z)D0.success(`Configuration loaded from package.json: ${M===F[$]?$:J}`);return T7(q,M,G)}catch(T){if(z)D0.warn("Failed to merge package.json config:",T)}}}catch(w){if(z)D0.warn("Failed to load package.json:",w)}if(z)D0.info(`No configuration found for "${$}"${J?` or alias "${J}"`:""}, using default configuration with environment variables`);return q}function fz($,J={}){let Z=z$.cwd();while(Z.includes("storage"))Z=M9(Z,"..");let X=M9(Z,$||"");if(J?.relative)return Xz(z$.cwd(),X);return X}async function gz(){try{let $=await kz({name:"clarity",alias:"logging",defaultConfig:X$,cwd:z$.cwd()});return{...X$,...$||{}}}catch{return X$}}function w0(){if(r0.env.NODE_ENV==="test"||r0.env.BUN_ENV==="test")return!1;return typeof window<"u"}async function pz(){if(r0.env.NODE_ENV==="test"||r0.env.BUN_ENV==="test")return!0;if(typeof navigator<"u"&&navigator.product==="ReactNative")return!0;if(typeof r0<"u"){let $=r0.type;if($==="renderer"||$==="worker")return!1;return!!(r0.versions&&(r0.versions.node||r0.versions.bun))}return!1}class YZ{async format($){let J=await pz(),Z=await this.getMetadata(J);return JSON.stringify({timestamp:$.timestamp.toISOString(),level:$.level,name:$.name,message:$.message,metadata:Z})}async getMetadata($){if($){let{hostname:J}=await import("os");return{pid:H1.pid,hostname:J(),environment:H1.env.NODE_ENV||"development",platform:H1.platform,version:H1.version}}return{userAgent:navigator.userAgent,hostname:window.location.hostname||"browser",environment:H1.env.NODE_ENV||H1.env.BUN_ENV||"development",viewport:{width:window.innerWidth,height:window.innerHeight},language:navigator.language}}}class K${name;fileLocks=new Map;currentKeyId=null;keys=new Map;fingersCrossedConfig;fingersCrossedActive=!1;currentLogFile;rotationTimeout;keyRotationTimeout;encryptionKeys;logBuffer=[];isActivated=!1;pendingOperations=[];enabled;fancy;tagFormat;timestampPosition;environment;config;options;formatter;timers=new Set;subLoggers=new Set;fingersCrossedBuffer=[];ANSI_PATTERN=/\u001B\[.*?m/g;activeProgressBar=null;constructor($,J={}){this.name=$,this.config={...H7},this.options=this.normalizeOptions(J),this.formatter=this.options.formatter||new YZ,this.enabled=J.enabled??!0,this.fancy=J.fancy??!0,this.tagFormat=J.tagFormat??{prefix:"[",suffix:"]"},this.timestampPosition=J.timestampPosition??"right",this.environment=J.environment??X0.env.APP_ENV??"local",this.fingersCrossedConfig=this.initializeFingersCrossedConfig(J);let Z={...J},X=J.timestamp!==void 0;if(X)delete Z.timestamp;if(this.config={...this.config,...Z,timestamp:X||this.config.timestamp},this.currentLogFile=this.generateLogFilename(),this.encryptionKeys=new Map,this.validateEncryptionConfig()){this.setupRotation();let Y=this.generateKeyId(),z=this.generateKey();this.currentKeyId=Y,this.keys.set(Y,z),this.encryptionKeys.set(Y,{key:z,createdAt:new Date}),this.setupKeyRotation()}}shouldActivateFingersCrossed($){if(!this.fingersCrossedConfig)return!1;let J={debug:0,info:1,success:2,warning:3,error:4},Z=this.fingersCrossedConfig.activationLevel??"error";return J[$]>=J[Z]}initializeFingersCrossedConfig($){if(!$.fingersCrossedEnabled&&$.fingersCrossed)return{...Y$,...$.fingersCrossed};if(!$.fingersCrossedEnabled)return null;if(!$.fingersCrossed)return{...Y$};return{...Y$,...$.fingersCrossed}}normalizeOptions($){let J={format:"json",level:"info",logDirectory:H7.logDirectory,rotation:void 0,timestamp:void 0,fingersCrossed:{},enabled:!0,showTags:!1,showIcons:!0,formatter:void 0},Z={...J,...Object.fromEntries(Object.entries($).filter(([,X])=>X!==void 0))};if(!Z.level||!["debug","info","success","warning","error"].includes(Z.level))Z.level=J.level;return Z}shouldWriteToFile(){return!w0()&&this.config.writeToFile===!0}async writeToFile($){let Z=(async()=>{let Y,z=0,Q=3,G=1000;while(z<Q)try{try{try{await wz(this.config.logDirectory,I9.F_OK|I9.W_OK)}catch(U){if(U instanceof Error&&"code"in U)if(U.code==="ENOENT")await Bz(this.config.logDirectory,{recursive:!0,mode:493});else if(U.code==="EACCES")throw Error(`No write permission for log directory: ${this.config.logDirectory}`);else throw U;else throw U}}catch(U){throw console.error("Debug: [writeToFile] Failed to create log directory:",U),U}let q=this.validateEncryptionConfig()?(await this.encrypt($)).encrypted:d0.from($);try{if(!c1(this.currentLogFile))await i8(this.currentLogFile,"",{mode:420});if(Y=C9(this.currentLogFile,"a",420),Fz(Y,q,{flag:"a"}),P9(Y),Y!==void 0)n8(Y),Y=void 0;if((await W1(this.currentLogFile)).size===0){if(await i8(this.currentLogFile,q,{flag:"w",mode:420}),(await W1(this.currentLogFile)).size===0)throw Error("File exists but is empty after retry write")}return}catch(U){let W=U;if(W.code&&["ENETDOWN","ENETUNREACH","ENOTFOUND","ETIMEDOUT"].includes(W.code)){if(z<Q-1){let K=typeof W.message==="string"?W.message:"Unknown error";console.error(`Network error during write attempt ${z+1}/${Q}:`,K);let H=G*2**z;await new Promise((V)=>setTimeout(V,H)),z++;continue}}if(W?.code&&["ENOSPC","EDQUOT"].includes(W.code))throw Error(`Disk quota exceeded or no space left on device: ${W.message}`);throw console.error("Debug: [writeToFile] Error writing to file:",W),W}finally{if(Y!==void 0)try{n8(Y)}catch(U){console.error("Debug: [writeToFile] Error closing file descriptor:",U)}}}catch(q){if(z===Q-1){let W=q,K=typeof W.message==="string"?W.message:"Unknown error";throw console.error("Debug: [writeToFile] Max retries reached. Final error:",K),q}z++;let U=G*2**(z-1);await new Promise((W)=>setTimeout(W,U))}})();this.pendingOperations.push(Z);let X=this.pendingOperations.length-1;try{await Z}catch(Y){throw console.error("Debug: [writeToFile] Error in operation:",Y),Y}finally{this.pendingOperations.splice(X,1)}}generateLogFilename(){if(this.name.includes("stream-throughput")||this.name.includes("decompress-perf-test")||this.name.includes("decompression-latency")||this.name.includes("concurrent-read-test")||this.name.includes("clock-change-test"))return K1(this.config.logDirectory,`${this.name}.log`);if(this.name.includes("pending-test")||this.name.includes("temp-file-test")||this.name==="crash-test"||this.name==="corrupt-test"||this.name.includes("rotation-load-test")||this.name==="sigterm-test"||this.name==="sigint-test"||this.name==="failed-rotation-test"||this.name==="integration-test")return K1(this.config.logDirectory,`${this.name}.log`);let $=new Date().toISOString().split("T")[0];return K1(this.config.logDirectory,`${this.name}-${$}.log`)}setupRotation(){if(w0())return;if(!this.shouldWriteToFile())return;if(typeof this.config.rotation==="boolean")return;let $=this.config.rotation,J;switch($.frequency){case"daily":J=86400000;break;case"weekly":J=604800000;break;case"monthly":J=2592000000;break;default:return}this.rotationTimeout=setInterval(()=>{this.rotateLog()},J)}setupKeyRotation(){if(!this.validateEncryptionConfig()){console.error("Invalid encryption configuration detected during key rotation setup");return}let J=this.config.rotation.keyRotation;if(!J?.enabled)return;let Z=typeof J.interval==="number"?J.interval:60,X=Math.max(Z,60)*1000;this.keyRotationTimeout=setInterval(()=>{this.rotateKeys().catch((Y)=>{console.error("Error rotating keys:",Y)})},X)}async rotateKeys(){if(!this.validateEncryptionConfig()){console.error("Invalid encryption configuration detected during key rotation");return}let J=this.config.rotation.keyRotation,Z=this.generateKeyId(),X=this.generateKey();this.currentKeyId=Z,this.keys.set(Z,X),this.encryptionKeys.set(Z,{key:X,createdAt:new Date});let Y=Array.from(this.encryptionKeys.entries()).sort(([,G],[,q])=>q.createdAt.getTime()-G.createdAt.getTime()),z=typeof J.maxKeys==="number"?J.maxKeys:1,Q=Math.max(1,z);if(Y.length>Q)for(let[G]of Y.slice(Q))this.encryptionKeys.delete(G),this.keys.delete(G)}generateKeyId(){return s8(16).toString("hex")}generateKey(){return s8(32)}getCurrentKey(){if(!this.currentKeyId)throw Error("Encryption is not properly initialized. Make sure encryption is enabled in the configuration.");let $=this.keys.get(this.currentKeyId);if(!$)throw Error(`No key found for ID ${this.currentKeyId}. The encryption key may have been rotated or removed.`);return{key:$,id:this.currentKeyId}}encrypt($){let{key:J}=this.getCurrentKey(),Z=s8(16),X=Vz("aes-256-gcm",J,Z),Y=d0.isBuffer($)?$:d0.from($,"utf8"),z=X.update(Y),Q=X.final(),G=z.length+Q.length,q=X.getAuthTag(),U=d0.allocUnsafe(16+G+16);return Z.copy(U,0),z.copy(U,16),Q.copy(U,16+z.length),q.copy(U,16+G),{encrypted:U,iv:Z}}async compressData($){return new Promise((J,Z)=>{let X=v9(),Y=[];X.on("data",(z)=>Y.push(z)),X.on("end",()=>J(d0.from(d0.concat(Y)))),X.on("error",Z),X.write($),X.end()})}getEncryptionOptions(){if(!this.config.rotation||typeof this.config.rotation==="boolean"||!this.config.rotation.encrypt)return{};let $={algorithm:"aes-256-cbc",compress:!1};if(typeof this.config.rotation.encrypt==="object"){let J=this.config.rotation.encrypt;return{...$,...J}}return $}async rotateLog(){if(w0())return;if(!this.shouldWriteToFile())return;let $=await W1(this.currentLogFile).catch(()=>null);if(!$)return;let J=this.config.rotation;if(typeof J==="boolean")return;if(J.maxSize&&$.size>=J.maxSize){let Z=this.currentLogFile,X=this.generateLogFilename();if(this.name.includes("rotation-load-test")||this.name==="failed-rotation-test"){let Y=await r1(this.config.logDirectory),z=Y.filter((q)=>q.startsWith(this.name)&&/\.log\.\d+$/.test(q)).sort((q,U)=>{let W=Number.parseInt(q.match(/\.log\.(\d+)$/)?.[1]||"0");return Number.parseInt(U.match(/\.log\.(\d+)$/)?.[1]||"0")-W}),Q=z.length>0?Number.parseInt(z[0].match(/\.log\.(\d+)$/)?.[1]||"0")+1:1,G=`${Z}.${Q}`;if(await W1(Z).catch(()=>null))try{if(await S9(Z,G),J.compress)try{let q=`${G}.gz`;await this.compressLogFile(G,q),await l1(G)}catch(q){console.error("Error compressing rotated file:",q)}if(z.length===0&&!Y.some((q)=>q.endsWith(".log.1")))try{let q=`${Z}.1`;await i8(q,"")}catch(q){console.error("Error creating backup file:",q)}}catch(q){console.error(`Error during rotation: ${q instanceof Error?q.message:String(q)}`)}}else{let Y=new Date().toISOString().replace(/[:.]/g,"-"),z=Z.replace(/\.log$/,`-${Y}.log`);if(await W1(Z).catch(()=>null))await S9(Z,z)}if(this.currentLogFile=X,J.maxFiles){let z=(await r1(this.config.logDirectory)).filter((Q)=>Q.startsWith(this.name)).sort((Q,G)=>G.localeCompare(Q));for(let Q of z.slice(J.maxFiles))await l1(K1(this.config.logDirectory,Q))}}}async compressLogFile($,J){let Z=L9($),X=_z(J),Y=v9();await Nz(Z,Y,X)}async handleFingersCrossedBuffer($,J){if(!this.fingersCrossedConfig)return;if(this.shouldActivateFingersCrossed($)&&!this.isActivated){this.isActivated=!0;for(let Z of this.logBuffer){let X=await this.formatter.format(Z);if(this.shouldWriteToFile())await this.writeToFile(X);console.log(X)}if(this.fingersCrossedConfig.stopBuffering)this.logBuffer=[]}if(this.isActivated){if(this.shouldWriteToFile())await this.writeToFile(J);console.log(J)}}shouldLog($){if(!this.enabled)return!1;let J={debug:0,info:1,success:2,warning:3,error:4};return J[$]>=J[this.config.level]}async flushPendingWrites(){if(await Promise.all(this.pendingOperations.map(($)=>{if($ instanceof Promise)return $.catch((J)=>{console.error("Error in pending write operation:",J)});return Promise.resolve()})),c1(this.currentLogFile))try{let $=C9(this.currentLogFile,"r+");P9($),n8($)}catch($){console.error(`Error flushing file: ${$}`)}}async destroy(){if(this.rotationTimeout)clearInterval(this.rotationTimeout);if(this.keyRotationTimeout)clearInterval(this.keyRotationTimeout);this.timers.clear();for(let $ of this.pendingOperations)if(typeof $.cancel==="function")$.cancel();return(async()=>{if(this.pendingOperations.length>0)try{await Promise.allSettled(this.pendingOperations)}catch($){console.error("Error waiting for pending operations:",$)}if(!w0()&&this.config.rotation&&typeof this.config.rotation!=="boolean"&&this.config.rotation.compress)try{let J=(await r1(this.config.logDirectory)).filter((Z)=>(Z.includes("temp")||Z.includes(".tmp"))&&Z.includes(this.name));for(let Z of J)try{await l1(K1(this.config.logDirectory,Z))}catch(X){console.error(`Failed to delete temp file ${Z}:`,X)}}catch($){console.error("Error cleaning up temporary files:",$)}})()}getCurrentLogFilePath(){return this.currentLogFile}formatTag($){if(!$)return"";return`${this.tagFormat.prefix}${$}${this.tagFormat.suffix}`}formatFileTimestamp($){return`[${$.toISOString()}]`}formatConsoleTimestamp($){return this.shouldStyleConsole()?z0.gray($.toLocaleTimeString()):$.toLocaleTimeString()}shouldStyleConsole(){if(!this.fancy||w0())return!1;let $=typeof X0.env.NO_COLOR<"u",J=X0.env.FORCE_COLOR==="0";if($||J)return!1;return!!(typeof X0.stderr<"u"&&X0.stderr.isTTY||typeof X0.stdout<"u"&&X0.stdout.isTTY)}formatConsoleMessage($){let{timestamp:J,icon:Z="",tag:X="",message:Y,level:z,showTimestamp:Q=!0}=$,G=(V)=>V.replace(this.ANSI_PATTERN,"");if(!this.fancy){let V=[];if(Q)V.push(J);if(z==="warning")V.push("WARN");else if(z==="error")V.push("ERROR");else if(Z)V.push(Z.replace(/[^\p{L}\p{N}\p{P}\p{Z}]/gu,""));if(X)V.push(X.replace(/[[\]]/g,""));return V.push(Y),V.join(" ")}let q=X0.stdout.columns||120,U="";if(z==="warning"||z==="error")U=`${Z} ${Y}`;else if(z==="info"||z==="success")U=`${Z} ${X} ${Y}`;else U=`${Z} ${X} ${z0.cyan(Y)}`;if(!Q)return U.trim();let W=G(U).trim().length,K=G(J).length,H=Math.max(1,q-2-W-K);return`${U.trim()}${" ".repeat(H)}${J}`}formatMessage($,J){if(J.length===1&&Array.isArray(J[0]))return $.replace(/\{(\d+)\}/g,(z,Q)=>{let G=Number.parseInt(Q,10);return G<J[0].length?String(J[0][G]):z});let Z=/%([sdijfo%])/g,X=0,Y=$.replace(Z,(z,Q)=>{if(Q==="%")return"%";if(X>=J.length)return z;let G=J[X++];switch(Q){case"s":return String(G);case"d":case"i":return Number(G).toString();case"j":case"o":return JSON.stringify(G,null,2);default:return z}});if(X<J.length)Y+=` ${J.slice(X).map((z)=>typeof z==="object"?JSON.stringify(z,null,2):String(z)).join(" ")}`;return Y}formatMarkdown($){if(!$)return $;let J=$;return J=J.replace(/\[([^\]]+)\]\(([^)]+)\)/g,(Z,X,Y)=>{let z=z0.underline(z0.blue(X)),Q=this.toAbsoluteFilePath(Y);if(Q&&this.shouldStyleConsole()&&this.supportsHyperlinks()){let G=`file://${encodeURI(Q)}`,q="\x1B]8;;",U="\x1B\\";return`\x1B]8;;${G}\x1B\\${z}\x1B]8;;\x1B\\`}if(this.shouldStyleConsole()&&this.supportsHyperlinks())return`\x1B]8;;${Y}\x1B\\${z}\x1B]8;;\x1B\\`;return z}),J=J.replace(/`([^`]+)`/g,(Z,X)=>z0.bgGray(X)),J=J.replace(/\*\*([^*]+)\*\*/g,(Z,X)=>z0.bold(X)),J=J.replace(/(?<!\*)\*([^*]+)\*(?!\*)/g,(Z,X)=>z0.italic(X)),J=J.replace(/(?<!_)_([^_]+)_(?!_)/g,(Z,X)=>z0.italic(X)),J=J.replace(/~([^~]+)~/g,(Z,X)=>z0.strikethrough(X)),J}supportsHyperlinks(){if(w0())return!1;let $=X0.env;if(!$)return!1;if($.TERM_PROGRAM==="iTerm.app"||$.TERM_PROGRAM==="vscode"||$.TERM_PROGRAM==="WezTerm")return!0;if($.WT_SESSION)return!0;if($.TERM==="xterm-kitty")return!0;let J=$.VTE_VERSION?Number.parseInt($.VTE_VERSION,10):0;if(!Number.isNaN(J)&&J>=5000)return!0;return!1}toAbsoluteFilePath($){try{let J=$;if(J.startsWith("file://"))J=J.replace(/^file:\/\//,"");if(J.startsWith("~")){let Z=X0.env.HOME||"";if(Z)J=J.replace(/^~(?=$|\/)/,Z)}if(Mz(J)||J.startsWith("./")||J.startsWith("../"))J=jz(J);else return null;return c1(J)?J:null}catch{return null}}buildOutputTexts($){let J=this.shouldStyleConsole()?this.formatMarkdown($):$,Z=$.replace(this.ANSI_PATTERN,"");return{consoleText:J,fileText:Z}}async log($,J,...Z){let X=new Date,Y=this.formatConsoleTimestamp(X),z=this.formatFileTimestamp(X),Q,G;if(J instanceof Error)Q=J.message,G=J.stack;else Q=this.formatMessage(J,Z);let{consoleText:q,fileText:U}=this.buildOutputTexts(Q);if(this.shouldStyleConsole()){let K=this.options.showIcons===!1?"":AZ[$],H=this.options.showTags!==!1&&this.name?z0.gray(this.formatTag(this.name)):"",V;switch($){case"debug":V=this.formatConsoleMessage({timestamp:Y,icon:K,tag:H,message:z0.gray(q),level:$}),console.error(V);break;case"info":V=this.formatConsoleMessage({timestamp:Y,icon:K,tag:H,message:q,level:$}),console.warn(V);break;case"success":V=this.formatConsoleMessage({timestamp:Y,icon:K,tag:H,message:z0.green(q),level:$}),console.error(V);break;case"warning":V=this.formatConsoleMessage({timestamp:Y,icon:K,tag:H,message:q,level:$}),console.warn(V);break;case"error":if(V=this.formatConsoleMessage({timestamp:Y,icon:K,tag:H,message:q,level:$}),console.error(V),G){let A=G.split(`
11
+ `);for(let _ of A)if(_.trim()&&!_.includes(Q))console.error(this.formatConsoleMessage({timestamp:Y,message:z0.gray(` ${_}`),level:$,showTimestamp:!1}))}break}}else if(!w0()){if(console.error(`${z} ${this.environment}.${$.toUpperCase()}: ${Q}`),G)console.error(G)}if(!this.shouldLog($))return;let W=`${z} ${this.environment}.${$.toUpperCase()}: ${U}
12
12
  `;if(G)W+=`${G}
13
- `;if(W=W.replace(this.ANSI_PATTERN,""),this.shouldWriteToFile())await this.writeToFile(W)}progress($,J=""){let Z={update:(G,q)=>{},finish:(G)=>{},interrupt:(G,q)=>{}};if(!this.enabled)return Z;let X=30;if(this.activeProgressBar={total:Math.max(1,$||1),current:0,message:J||"",barLength:X,lastRenderedLine:""},this.shouldStyleConsole()&&!F0()&&J0.stdout.isTTY)this.renderProgressBar(this.activeProgressBar);return{update:(G,q)=>{if(!this.enabled||!this.activeProgressBar)return;if(this.activeProgressBar.current=Math.min(Math.max(0,G),this.activeProgressBar.total),q!==void 0)this.activeProgressBar.message=q;if(this.shouldStyleConsole()&&!F0()&&J0.stdout.isTTY)this.renderProgressBar(this.activeProgressBar)},finish:(G)=>{if(!this.activeProgressBar)return;this.finishProgressBar(this.activeProgressBar,G)},interrupt:(G,q="info")=>{if(!F0()&&J0.stdout.isTTY)J0.stdout.write(`
14
- `);if(this[q==="warning"?"warn":q](G),this.activeProgressBar&&this.shouldStyleConsole()&&!F0()&&J0.stdout.isTTY)this.renderProgressBar(this.activeProgressBar)}}}time($){let J=performance.now();if(this.shouldStyleConsole()){let Z=this.options.showTags!==!1&&this.name?Y0.gray(this.formatTag(this.name)):"",X=this.formatConsoleTimestamp(new Date);console.error(this.formatConsoleMessage({timestamp:X,icon:this.options.showIcons===!1?"":Y0.blue("\u25D0"),tag:Z,message:`${Y0.cyan($)}...`}))}return async(Z)=>{if(!this.enabled)return;let X=performance.now(),Y=Math.round(X-J),z=`${$} completed in ${Y}ms`,Q=new Date,G=this.formatConsoleTimestamp(Q),U=`${this.formatFileTimestamp(Q)} ${this.environment}.INFO: ${z}`;if(Z)U+=` ${JSON.stringify(Z)}`;if(U+=`
15
- `,U=U.replace(this.ANSI_PATTERN,""),this.shouldStyleConsole()){let W=this.options.showTags!==!1&&this.name?Y0.gray(this.formatTag(this.name)):"";console.error(this.formatConsoleMessage({timestamp:G,icon:this.options.showIcons===!1?"":Y0.green("\u2713"),tag:W,message:`${z}${Z?` ${JSON.stringify(Z)}`:""}`}))}else if(!F0())console.error(U.trim());if(this.shouldWriteToFile())await this.writeToFile(U)}}async debug($,...J){await this.log("debug",$,...J)}async info($,...J){await this.log("info",$,...J)}async success($,...J){await this.log("success",$,...J)}async warn($,...J){await this.log("warning",$,...J)}async error($,...J){await this.log("error",$,...J)}validateEncryptionConfig(){if(!this.config.rotation)return!1;if(typeof this.config.rotation==="boolean")return!1;let $=this.config.rotation,{encrypt:J}=$;return!!J}async only($){if(!this.enabled)return;return await $()}isEnabled(){return this.enabled}setEnabled($){this.enabled=$}extend($){let J=`${this.name}:${$}`,Z=new W$(J,{...this.options,logDirectory:this.config.logDirectory,level:this.config.level,format:this.config.format,rotation:typeof this.config.rotation==="boolean"?void 0:this.config.rotation,timestamp:typeof this.config.timestamp==="boolean"?void 0:this.config.timestamp});return this.subLoggers.add(Z),Z}createReadStream(){if(F0())throw Error("createReadStream is not supported in browser environments");if(!o1(this.currentLogFile))throw Error(`Log file does not exist: ${this.currentLogFile}`);return O9(this.currentLogFile,{encoding:"utf8"})}async decrypt($){if(!this.validateEncryptionConfig())throw Error("Encryption is not configured");let J=this.config.rotation;if(!J.encrypt||typeof J.encrypt==="boolean")throw Error("Invalid encryption configuration");if(!this.currentKeyId||!this.keys.has(this.currentKeyId))throw Error("No valid encryption key available");let Z=this.keys.get(this.currentKeyId);try{let X=m0.isBuffer($)?$:m0.from($,"base64"),Y=X.subarray(0,16),z=X.subarray(X.length-16),Q=X.subarray(16,X.length-16),G=Hz("aes-256-gcm",Z,Y);G.setAuthTag(z);let q=G.update(Q),U=G.final(),W=q.length+U.length,K=m0.allocUnsafe(W);return q.copy(K,0),U.copy(K,q.length),K.toString("utf8")}catch(X){throw Error(`Decryption failed: ${X instanceof Error?X.message:String(X)}`)}}getLevel(){return this.config.level}getLogDirectory(){return this.config.logDirectory}getFormat(){return this.config.format}getRotationConfig(){return this.config.rotation}isBrowserMode(){return F0()}isServerMode(){return!F0()}setTestEncryptionKey($,J){this.currentKeyId=$,this.keys.set($,J)}getTestCurrentKey(){if(!this.currentKeyId||!this.keys.has(this.currentKeyId))return null;return{id:this.currentKeyId,key:this.keys.get(this.currentKeyId)}}getConfig(){return this.config}async box($){if(!this.enabled)return;let J=new Date,Z=this.formatConsoleTimestamp(J),X=this.formatFileTimestamp(J),{consoleText:Y,fileText:z}=this.buildOutputTexts($);if(this.shouldStyleConsole()){let G=Y.split(`
16
- `),q=Math.max(...G.map((H)=>H.length))+2,U=`\u250C${"\u2500".repeat(q)}\u2510`,W=`\u2514${"\u2500".repeat(q)}\u2518`,K=G.map((H)=>{return this.formatConsoleMessage({timestamp:Z,message:Y0.cyan(H),showTimestamp:!1})});console.error(this.formatConsoleMessage({timestamp:Z,message:Y0.cyan(U),showTimestamp:!1})),K.forEach((H)=>console.error(H)),console.error(this.formatConsoleMessage({timestamp:Z,message:Y0.cyan(W),showTimestamp:!1}))}else if(!F0())console.error(`${X} ${this.environment}.INFO: [BOX] ${z}`);let Q=`${X} ${this.environment}.INFO: [BOX] ${z}
17
- `.replace(this.ANSI_PATTERN,"");if(this.shouldWriteToFile())await this.writeToFile(Q)}async prompt($){if(F0())return Promise.resolve(!0);return new Promise((J)=>{console.error(`${Y0.cyan("?")} ${$} (y/n) `);let Z=(X)=>{let Y=X.toString().trim().toLowerCase();J0.stdin.removeListener("data",Z);try{if(typeof J0.stdin.setRawMode==="function")J0.stdin.setRawMode(!1)}catch{}J0.stdin.pause(),console.error(""),J(Y==="y"||Y==="yes")};try{if(typeof J0.stdin.setRawMode==="function")J0.stdin.setRawMode(!0)}catch{}J0.stdin.resume(),J0.stdin.once("data",Z)})}setFancy($){this.fancy=$}isFancy(){return this.fancy}pause(){this.enabled=!1}resume(){this.enabled=!0}async start($,...J){if(!this.enabled)return;let Z=$;if(J&&J.length>0){let q=/%([sdijfo%])/g,U=0;if(Z=$.replace(q,(W,K)=>{if(K==="%")return"%";if(U>=J.length)return W;let H=J[U++];switch(K){case"s":return String(H);case"d":case"i":return Number(H).toString();case"j":case"o":return JSON.stringify(H,null,2);default:return W}}),U<J.length)Z+=` ${J.slice(U).map((W)=>typeof W==="object"?JSON.stringify(W,null,2):String(W)).join(" ")}`}let{consoleText:X,fileText:Y}=this.buildOutputTexts(Z);if(this.shouldStyleConsole()){let q=this.options.showTags!==!1&&this.name?Y0.gray(this.formatTag(this.name)):"",U=this.options.showIcons===!1?"":`${Y0.blue("\u25D0")} `;console.error(`${U}${q} ${Y0.cyan(X)}`)}let G=`[${new Date().toISOString()}] ${this.environment}.INFO: [START] ${Y}
18
- `.replace(this.ANSI_PATTERN,"");if(this.shouldWriteToFile())await this.writeToFile(G)}renderProgressBar($,J=!1){if(!this.enabled||!this.shouldStyleConsole()||!J0.stdout.isTTY)return;let Z=Math.min(100,Math.max(0,Math.round($.current/$.total*100))),X=Math.round($.barLength*Z/100),Y=$.barLength-X,z=Y0.green("\u2501".repeat(X)),Q=Y0.gray("\u2501".repeat(Y)),G=`[${z}${Q}]`,q=`${Z}%`.padStart(4),U=$.message?` ${$.message}`:"",W=this.options.showIcons===!1?"":J||Z===100?Y0.green("\u2713"):Y0.blue("\u25B6"),K=this.options.showTags!==!1&&this.name?` ${Y0.gray(this.formatTag(this.name))}`:"",H=`\r${W}${K} ${G} ${q}${U}`,V=J0.stdout.columns||80,A=" ".repeat(Math.max(0,V-H.replace(this.ANSI_PATTERN,"").length));if($.lastRenderedLine=`${H}${A}`,J0.stdout.write($.lastRenderedLine),J)J0.stdout.write(`
19
- `)}finishProgressBar($,J){if(!this.enabled||!this.fancy||F0()||!J0.stdout.isTTY){this.activeProgressBar=null;return}if($.current<$.total)$.current=$.total;if(J)$.message=J;this.renderProgressBar($,!0),this.activeProgressBar=null}async clear($={}){if(F0()){console.warn("Log clearing is not supported in browser environments.");return}try{console.warn("Clearing logs...",this.config.logDirectory);let J=await c1(this.config.logDirectory),Z=[];for(let X of J){if(!($.name?new RegExp($.name.replace("*",".*")).test(X):X.startsWith(this.name))||!X.endsWith(".log"))continue;let z=W1(this.config.logDirectory,X);if($.before)try{if((await U1(z)).mtime>=$.before)continue}catch(Q){console.error(`Failed to get stats for file ${z}:`,Q);continue}Z.push(z)}if(Z.length===0){console.warn("No log files matched the criteria for clearing.");return}console.warn(`Preparing to delete ${Z.length} log file(s)...`);for(let X of Z)try{await r1(X),console.warn(`Deleted log file: ${X}`)}catch(Y){console.error(`Failed to delete log file ${X}:`,Y)}console.warn("Log clearing process finished.")}catch(J){console.error("Error during log clearing process:",J)}}}async function YZ($,J={}){let{maxRetries:Z=3,retryDelay:X=1000,isRetryable:Y=()=>!0,fallback:z}=J,Q=Error("Unknown error occurred");for(let G=0;G<=Z;G++)try{return await $()}catch(q){if(Q=q instanceof Error?q:Error(String(q)),G===Z||!Y(Q))break;if(X>0)await new Promise((U)=>setTimeout(U,X))}if(z!==void 0)return z;throw Q instanceof Error?Q:Error(`Unknown error: ${String(Q)}`)}function zZ($){return $ instanceof C0}function gz($){return $ instanceof K$}function xz($){if(zZ($))return $.code==="FILE_SYSTEM_ERROR"||$.code==="BROWSER_CONFIG_ERROR";return["ENOENT","EACCES","EMFILE","ENFILE","EBUSY","network","timeout","connection"].some((Z)=>$.message.toLowerCase().includes(Z.toLowerCase()))}class _${defaultParsers;constructor(){this.defaultParsers=[{name:"boolean",canParse:($,J)=>J==="boolean"||["true","false","1","0","yes","no"].includes($.toLowerCase()),parse:($)=>{let J=$.toLowerCase();return["true","1","yes"].includes(J)}},{name:"number",canParse:($,J)=>J==="number"||!Number.isNaN(Number($))&&!Number.isNaN(Number.parseFloat($)),parse:($)=>{let J=Number($);if(Number.isNaN(J))throw TypeError(`Cannot parse "${$}" as number`);return J}},{name:"array",canParse:($,J)=>J==="array"||$.startsWith("[")||$.includes(","),parse:($)=>{try{let J=JSON.parse($);if(Array.isArray(J))return J}catch{}return $.split(",").map((J)=>J.trim())}},{name:"json",canParse:($,J)=>J==="object"||($.startsWith("{")&&$.endsWith("}")||$.startsWith("[")&&$.endsWith("]")),parse:($)=>{try{return JSON.parse($)}catch(J){throw Error(`Cannot parse "${$}" as JSON: ${J}`)}}}]}async applyEnvironmentVariables($,J,Z={}){let{prefix:X,useCamelCase:Y=!0,useBackwardCompatibility:z=!0,customParsers:Q={},verbose:G=!1,trackPerformance:q=!0}=Z,U=async()=>{if(!$)return{config:J,source:{type:"environment",priority:50,timestamp:new Date}};let W=X||this.generateEnvPrefix($),K={...J};return this.processObject(K,[],W,{useCamelCase:Y,useBackwardCompatibility:z,customParsers:Q,verbose:G,configName:$}),{config:K,source:{type:"environment",priority:50,timestamp:new Date}}};if(q)return I1.track("applyEnvironmentVariables",U,{configName:$});return U()}generateEnvPrefix($){return $.toUpperCase().replace(/-/g,"_")}formatEnvKey($,J){if(!J)return $.toUpperCase();return $.replace(/([A-Z])/g,"_$1").toUpperCase()}processObject($,J,Z,X){for(let[Y,z]of Object.entries($)){let Q=[...J,Y],G=Q.map((W)=>this.formatEnvKey(W,X.useCamelCase)),q=`${Z}_${G.join("_")}`,U=X.useBackwardCompatibility?`${Z}_${Q.map((W)=>W.toUpperCase()).join("_")}`:null;if(X.verbose);if(typeof z==="object"&&z!==null&&!Array.isArray(z))this.processObject(z,Q,Z,X);else{let W=l1.env[q]||(U?l1.env[U]:void 0);if(W!==void 0){if(X.verbose){let K=l1.env[q]?q:U}try{$[Y]=this.parseEnvironmentValue(W,typeof z,q,X.customParsers,X.configName)}catch(K){if(K instanceof H$)throw K;throw n0.envVar(q,W,typeof z,X.configName)}}}}}parseEnvironmentValue($,J,Z,X,Y){for(let[z,Q]of Object.entries(X))try{return Q($)}catch{continue}for(let z of this.defaultParsers)if(z.canParse($,J))try{return z.parse($)}catch{throw n0.envVar(Z,$,`${J} (via ${z.name} parser)`,Y)}return $}getEnvironmentVariables($){let J={},Z=$.toUpperCase();for(let[X,Y]of Object.entries(l1.env))if(X.startsWith(Z)&&Y!==void 0)J[X]=Y;return J}validateEnvironmentVariable($,J,Z){let X=[];if(!/^[A-Z_][A-Z0-9_]*$/.test($))X.push(`Environment variable key "${$}" should only contain uppercase letters, numbers, and underscores`);if(Z)try{this.parseEnvironmentValue($,J,Z,{})}catch(Y){X.push(`Cannot parse value "${J}" as ${Z}: ${Y}`)}return{isValid:X.length===0,errors:X}}generateEnvVarDocs($,J,Z={}){let{prefix:X,format:Y="text"}=Z,z=X||this.generateEnvPrefix($),Q=[];switch(this.extractEnvVarInfo(J,[],z,Q),Y){case"markdown":return this.formatAsMarkdown(Q,$);case"json":return JSON.stringify(Q,null,2);default:return this.formatAsText(Q,$)}}extractEnvVarInfo($,J,Z,X){for(let[Y,z]of Object.entries($)){let Q=[...J,Y],G=`${Z}_${Q.map((q)=>this.formatEnvKey(q,!0)).join("_")}`;if(typeof z==="object"&&z!==null&&!Array.isArray(z))this.extractEnvVarInfo(z,Q,Z,X);else X.push({key:G,type:Array.isArray(z)?"array":typeof z,description:`Configuration for ${Q.join(".")}`,example:this.generateExample(z)})}}generateExample($){if(Array.isArray($))return JSON.stringify($);if(typeof $==="object"&&$!==null)return JSON.stringify($);return String($)}formatAsText($,J){let Z=`Environment Variables for ${J}:
13
+ `;if(W=W.replace(this.ANSI_PATTERN,""),this.shouldWriteToFile())await this.writeToFile(W)}progress($,J=""){let Z={update:(G,q)=>{},finish:(G)=>{},interrupt:(G,q)=>{}};if(!this.enabled)return Z;let X=30;if(this.activeProgressBar={total:Math.max(1,$||1),current:0,message:J||"",barLength:X,lastRenderedLine:""},this.shouldStyleConsole()&&!w0()&&X0.stdout.isTTY)this.renderProgressBar(this.activeProgressBar);return{update:(G,q)=>{if(!this.enabled||!this.activeProgressBar)return;if(this.activeProgressBar.current=Math.min(Math.max(0,G),this.activeProgressBar.total),q!==void 0)this.activeProgressBar.message=q;if(this.shouldStyleConsole()&&!w0()&&X0.stdout.isTTY)this.renderProgressBar(this.activeProgressBar)},finish:(G)=>{if(!this.activeProgressBar)return;this.finishProgressBar(this.activeProgressBar,G)},interrupt:(G,q="info")=>{if(!w0()&&X0.stdout.isTTY)X0.stdout.write(`
14
+ `);if(this[q==="warning"?"warn":q](G),this.activeProgressBar&&this.shouldStyleConsole()&&!w0()&&X0.stdout.isTTY)this.renderProgressBar(this.activeProgressBar)}}}time($){let J=performance.now();if(this.shouldStyleConsole()){let Z=this.options.showTags!==!1&&this.name?z0.gray(this.formatTag(this.name)):"",X=this.formatConsoleTimestamp(new Date);console.error(this.formatConsoleMessage({timestamp:X,icon:this.options.showIcons===!1?"":z0.blue("\u25D0"),tag:Z,message:`${z0.cyan($)}...`}))}return async(Z)=>{if(!this.enabled)return;let X=performance.now(),Y=Math.round(X-J),z=`${$} completed in ${Y}ms`,Q=new Date,G=this.formatConsoleTimestamp(Q),U=`${this.formatFileTimestamp(Q)} ${this.environment}.INFO: ${z}`;if(Z)U+=` ${JSON.stringify(Z)}`;if(U+=`
15
+ `,U=U.replace(this.ANSI_PATTERN,""),this.shouldStyleConsole()){let W=this.options.showTags!==!1&&this.name?z0.gray(this.formatTag(this.name)):"";console.error(this.formatConsoleMessage({timestamp:G,icon:this.options.showIcons===!1?"":z0.green("\u2713"),tag:W,message:`${z}${Z?` ${JSON.stringify(Z)}`:""}`}))}else if(!w0())console.error(U.trim());if(this.shouldWriteToFile())await this.writeToFile(U)}}async debug($,...J){await this.log("debug",$,...J)}async info($,...J){await this.log("info",$,...J)}async success($,...J){await this.log("success",$,...J)}async warn($,...J){await this.log("warning",$,...J)}async error($,...J){await this.log("error",$,...J)}validateEncryptionConfig(){if(!this.config.rotation)return!1;if(typeof this.config.rotation==="boolean")return!1;let $=this.config.rotation,{encrypt:J}=$;return!!J}async only($){if(!this.enabled)return;return await $()}isEnabled(){return this.enabled}setEnabled($){this.enabled=$}extend($){let J=`${this.name}:${$}`,Z=new K$(J,{...this.options,logDirectory:this.config.logDirectory,level:this.config.level,format:this.config.format,rotation:typeof this.config.rotation==="boolean"?void 0:this.config.rotation,timestamp:typeof this.config.timestamp==="boolean"?void 0:this.config.timestamp});return this.subLoggers.add(Z),Z}createReadStream(){if(w0())throw Error("createReadStream is not supported in browser environments");if(!c1(this.currentLogFile))throw Error(`Log file does not exist: ${this.currentLogFile}`);return L9(this.currentLogFile,{encoding:"utf8"})}async decrypt($){if(!this.validateEncryptionConfig())throw Error("Encryption is not configured");let J=this.config.rotation;if(!J.encrypt||typeof J.encrypt==="boolean")throw Error("Invalid encryption configuration");if(!this.currentKeyId||!this.keys.has(this.currentKeyId))throw Error("No valid encryption key available");let Z=this.keys.get(this.currentKeyId);try{let X=d0.isBuffer($)?$:d0.from($,"base64"),Y=X.subarray(0,16),z=X.subarray(X.length-16),Q=X.subarray(16,X.length-16),G=Az("aes-256-gcm",Z,Y);G.setAuthTag(z);let q=G.update(Q),U=G.final(),W=q.length+U.length,K=d0.allocUnsafe(W);return q.copy(K,0),U.copy(K,q.length),K.toString("utf8")}catch(X){throw Error(`Decryption failed: ${X instanceof Error?X.message:String(X)}`)}}getLevel(){return this.config.level}getLogDirectory(){return this.config.logDirectory}getFormat(){return this.config.format}getRotationConfig(){return this.config.rotation}isBrowserMode(){return w0()}isServerMode(){return!w0()}setTestEncryptionKey($,J){this.currentKeyId=$,this.keys.set($,J)}getTestCurrentKey(){if(!this.currentKeyId||!this.keys.has(this.currentKeyId))return null;return{id:this.currentKeyId,key:this.keys.get(this.currentKeyId)}}getConfig(){return this.config}async box($){if(!this.enabled)return;let J=new Date,Z=this.formatConsoleTimestamp(J),X=this.formatFileTimestamp(J),{consoleText:Y,fileText:z}=this.buildOutputTexts($);if(this.shouldStyleConsole()){let G=Y.split(`
16
+ `),q=Math.max(...G.map((H)=>H.length))+2,U=`\u250C${"\u2500".repeat(q)}\u2510`,W=`\u2514${"\u2500".repeat(q)}\u2518`,K=G.map((H)=>{return this.formatConsoleMessage({timestamp:Z,message:z0.cyan(H),showTimestamp:!1})});console.error(this.formatConsoleMessage({timestamp:Z,message:z0.cyan(U),showTimestamp:!1})),K.forEach((H)=>console.error(H)),console.error(this.formatConsoleMessage({timestamp:Z,message:z0.cyan(W),showTimestamp:!1}))}else if(!w0())console.error(`${X} ${this.environment}.INFO: [BOX] ${z}`);let Q=`${X} ${this.environment}.INFO: [BOX] ${z}
17
+ `.replace(this.ANSI_PATTERN,"");if(this.shouldWriteToFile())await this.writeToFile(Q)}async prompt($){if(w0())return Promise.resolve(!0);return new Promise((J)=>{console.error(`${z0.cyan("?")} ${$} (y/n) `);let Z=(X)=>{let Y=X.toString().trim().toLowerCase();X0.stdin.removeListener("data",Z);try{if(typeof X0.stdin.setRawMode==="function")X0.stdin.setRawMode(!1)}catch{}X0.stdin.pause(),console.error(""),J(Y==="y"||Y==="yes")};try{if(typeof X0.stdin.setRawMode==="function")X0.stdin.setRawMode(!0)}catch{}X0.stdin.resume(),X0.stdin.once("data",Z)})}setFancy($){this.fancy=$}isFancy(){return this.fancy}pause(){this.enabled=!1}resume(){this.enabled=!0}async start($,...J){if(!this.enabled)return;let Z=$;if(J&&J.length>0){let q=/%([sdijfo%])/g,U=0;if(Z=$.replace(q,(W,K)=>{if(K==="%")return"%";if(U>=J.length)return W;let H=J[U++];switch(K){case"s":return String(H);case"d":case"i":return Number(H).toString();case"j":case"o":return JSON.stringify(H,null,2);default:return W}}),U<J.length)Z+=` ${J.slice(U).map((W)=>typeof W==="object"?JSON.stringify(W,null,2):String(W)).join(" ")}`}let{consoleText:X,fileText:Y}=this.buildOutputTexts(Z);if(this.shouldStyleConsole()){let q=this.options.showTags!==!1&&this.name?z0.gray(this.formatTag(this.name)):"",U=this.options.showIcons===!1?"":`${z0.blue("\u25D0")} `;console.error(`${U}${q} ${z0.cyan(X)}`)}let G=`[${new Date().toISOString()}] ${this.environment}.INFO: [START] ${Y}
18
+ `.replace(this.ANSI_PATTERN,"");if(this.shouldWriteToFile())await this.writeToFile(G)}renderProgressBar($,J=!1){if(!this.enabled||!this.shouldStyleConsole()||!X0.stdout.isTTY)return;let Z=Math.min(100,Math.max(0,Math.round($.current/$.total*100))),X=Math.round($.barLength*Z/100),Y=$.barLength-X,z=z0.green("\u2501".repeat(X)),Q=z0.gray("\u2501".repeat(Y)),G=`[${z}${Q}]`,q=`${Z}%`.padStart(4),U=$.message?` ${$.message}`:"",W=this.options.showIcons===!1?"":J||Z===100?z0.green("\u2713"):z0.blue("\u25B6"),K=this.options.showTags!==!1&&this.name?` ${z0.gray(this.formatTag(this.name))}`:"",H=`\r${W}${K} ${G} ${q}${U}`,V=X0.stdout.columns||80,A=" ".repeat(Math.max(0,V-H.replace(this.ANSI_PATTERN,"").length));if($.lastRenderedLine=`${H}${A}`,X0.stdout.write($.lastRenderedLine),J)X0.stdout.write(`
19
+ `)}finishProgressBar($,J){if(!this.enabled||!this.fancy||w0()||!X0.stdout.isTTY){this.activeProgressBar=null;return}if($.current<$.total)$.current=$.total;if(J)$.message=J;this.renderProgressBar($,!0),this.activeProgressBar=null}async clear($={}){if(w0()){console.warn("Log clearing is not supported in browser environments.");return}try{console.warn("Clearing logs...",this.config.logDirectory);let J=await r1(this.config.logDirectory),Z=[];for(let X of J){if(!($.name?new RegExp($.name.replace("*",".*")).test(X):X.startsWith(this.name))||!X.endsWith(".log"))continue;let z=K1(this.config.logDirectory,X);if($.before)try{if((await W1(z)).mtime>=$.before)continue}catch(Q){console.error(`Failed to get stats for file ${z}:`,Q);continue}Z.push(z)}if(Z.length===0){console.warn("No log files matched the criteria for clearing.");return}console.warn(`Preparing to delete ${Z.length} log file(s)...`);for(let X of Z)try{await l1(X),console.warn(`Deleted log file: ${X}`)}catch(Y){console.error(`Failed to delete log file ${X}:`,Y)}console.warn("Log clearing process finished.")}catch(J){console.error("Error during log clearing process:",J)}}}async function zZ($,J={}){let{maxRetries:Z=3,retryDelay:X=1000,isRetryable:Y=()=>!0,fallback:z}=J,Q=Error("Unknown error occurred");for(let G=0;G<=Z;G++)try{return await $()}catch(q){if(Q=q instanceof Error?q:Error(String(q)),G===Z||!Y(Q))break;if(X>0)await new Promise((U)=>setTimeout(U,X))}if(z!==void 0)return z;throw Q instanceof Error?Q:Error(`Unknown error: ${String(Q)}`)}function QZ($){return $ instanceof I0}function xz($){return $ instanceof H$}function hz($){if(QZ($))return $.code==="FILE_SYSTEM_ERROR"||$.code==="BROWSER_CONFIG_ERROR";return["ENOENT","EACCES","EMFILE","ENFILE","EBUSY","network","timeout","connection"].some((Z)=>$.message.toLowerCase().includes(Z.toLowerCase()))}class F${defaultParsers;constructor(){this.defaultParsers=[{name:"boolean",canParse:($,J)=>J==="boolean"||["true","false","1","0","yes","no"].includes($.toLowerCase()),parse:($)=>{let J=$.toLowerCase();return["true","1","yes"].includes(J)}},{name:"number",canParse:($,J)=>J==="number"||!Number.isNaN(Number($))&&!Number.isNaN(Number.parseFloat($)),parse:($)=>{let J=Number($);if(Number.isNaN(J))throw TypeError(`Cannot parse "${$}" as number`);return J}},{name:"array",canParse:($,J)=>J==="array"||$.startsWith("[")||$.includes(","),parse:($)=>{try{let J=JSON.parse($);if(Array.isArray(J))return J}catch{}return $.split(",").map((J)=>J.trim())}},{name:"json",canParse:($,J)=>J==="object"||($.startsWith("{")&&$.endsWith("}")||$.startsWith("[")&&$.endsWith("]")),parse:($)=>{try{return JSON.parse($)}catch(J){throw Error(`Cannot parse "${$}" as JSON: ${J}`)}}}]}async applyEnvironmentVariables($,J,Z={}){let{prefix:X,useCamelCase:Y=!0,useBackwardCompatibility:z=!0,customParsers:Q={},verbose:G=!1,trackPerformance:q=!0}=Z,U=async()=>{if(!$)return{config:J,source:{type:"environment",priority:50,timestamp:new Date}};let W=X||this.generateEnvPrefix($),K={...J};return this.processObject(K,[],W,{useCamelCase:Y,useBackwardCompatibility:z,customParsers:Q,verbose:G,configName:$}),{config:K,source:{type:"environment",priority:50,timestamp:new Date}}};if(q)return S1.track("applyEnvironmentVariables",U,{configName:$});return U()}generateEnvPrefix($){return $.toUpperCase().replace(/-/g,"_")}formatEnvKey($,J){if(!J)return $.toUpperCase();return $.replace(/([A-Z])/g,"_$1").toUpperCase()}processObject($,J,Z,X){for(let[Y,z]of Object.entries($)){let Q=[...J,Y],G=Q.map((W)=>this.formatEnvKey(W,X.useCamelCase)),q=`${Z}_${G.join("_")}`,U=X.useBackwardCompatibility?`${Z}_${Q.map((W)=>W.toUpperCase()).join("_")}`:null;if(X.verbose);if(typeof z==="object"&&z!==null&&!Array.isArray(z))this.processObject(z,Q,Z,X);else{let W=a1.env[q]||(U?a1.env[U]:void 0);if(W!==void 0){if(X.verbose){let K=a1.env[q]?q:U}try{$[Y]=this.parseEnvironmentValue(W,typeof z,q,X.customParsers,X.configName)}catch(K){if(K instanceof V$)throw K;throw i0.envVar(q,W,typeof z,X.configName)}}}}}parseEnvironmentValue($,J,Z,X,Y){for(let[z,Q]of Object.entries(X))try{return Q($)}catch{continue}for(let z of this.defaultParsers)if(z.canParse($,J))try{return z.parse($)}catch{throw i0.envVar(Z,$,`${J} (via ${z.name} parser)`,Y)}return $}getEnvironmentVariables($){let J={},Z=$.toUpperCase();for(let[X,Y]of Object.entries(a1.env))if(X.startsWith(Z)&&Y!==void 0)J[X]=Y;return J}validateEnvironmentVariable($,J,Z){let X=[];if(!/^[A-Z_][A-Z0-9_]*$/.test($))X.push(`Environment variable key "${$}" should only contain uppercase letters, numbers, and underscores`);if(Z)try{this.parseEnvironmentValue($,J,Z,{})}catch(Y){X.push(`Cannot parse value "${J}" as ${Z}: ${Y}`)}return{isValid:X.length===0,errors:X}}generateEnvVarDocs($,J,Z={}){let{prefix:X,format:Y="text"}=Z,z=X||this.generateEnvPrefix($),Q=[];switch(this.extractEnvVarInfo(J,[],z,Q),Y){case"markdown":return this.formatAsMarkdown(Q,$);case"json":return JSON.stringify(Q,null,2);default:return this.formatAsText(Q,$)}}extractEnvVarInfo($,J,Z,X){for(let[Y,z]of Object.entries($)){let Q=[...J,Y],G=`${Z}_${Q.map((q)=>this.formatEnvKey(q,!0)).join("_")}`;if(typeof z==="object"&&z!==null&&!Array.isArray(z))this.extractEnvVarInfo(z,Q,Z,X);else X.push({key:G,type:Array.isArray(z)?"array":typeof z,description:`Configuration for ${Q.join(".")}`,example:this.generateExample(z)})}}generateExample($){if(Array.isArray($))return JSON.stringify($);if(typeof $==="object"&&$!==null)return JSON.stringify($);return String($)}formatAsText($,J){let Z=`Environment Variables for ${J}:
20
20
 
21
21
  `;for(let X of $)Z+=`${X.key}
22
22
  `,Z+=` Type: ${X.type}
@@ -28,192 +28,195 @@ import{B as Z0,D as g1,E as x1,F as H9,G as p1,i as k0,j as L0,k as x8,l as gY,m
28
28
  `;Z+=`| Variable | Type | Description | Example |
29
29
  `,Z+=`|----------|------|-------------|----------|
30
30
  `;for(let X of $)Z+=`| \`${X.key}\` | ${X.type} | ${X.description} | \`${X.example}\` |
31
- `;return Z}}function pz($,J){let Z=WZ("process");if(typeof Z>"u"||!Z.env)return J;let X=Z.env[$];return X!==void 0?X:J}function QZ($,J,Z={}){return GZ($,J,Z,new WeakMap)}function GZ($,J,Z,X){let{arrayMergeMode:Y="replace",skipNullish:z=!1,customMerger:Q}=Z;if(J===null||J===void 0)return z?$:J;if(Q){let G=Q($,J);if(G!==void 0)return G}if(Array.isArray(J)||Array.isArray($))return qZ($,J,Y,X);if(!S0(J)||!S0($))return J;return dz($,J,Z,X)}function qZ($,J,Z,X){if(Array.isArray(J)&&!Array.isArray($))return J;if(Array.isArray($)&&!Array.isArray(J))return J;if(Array.isArray(J)&&Array.isArray($))switch(Z){case"replace":return J;case"concat":return hz($,J);case"smart":return uz($,J,X);default:return J}return J}function hz($,J){let Z=[...J];for(let X of $)if(!Z.some((Y)=>U7(Y,X)))Z.push(X);return Z}function uz($,J,Z){if(J.length===0)return $;if($.length===0)return J;if(S0(J[0])&&S0($[0]))return mz($,J,Z);if(J.every((X)=>typeof X==="string")&&$.every((X)=>typeof X==="string")){let X=[...J];for(let Y of $)if(!X.includes(Y))X.push(Y);return X}return J}function mz($,J,Z){let X=[...J];for(let Y of $){if(!S0(Y)){X.push(Y);continue}let z=["id","name","key","path","type"],Q=!1;for(let G of z)if(G in Y){if(X.find((U)=>S0(U)&&(G in U)&&U[G]===Y[G])){Q=!0;break}}if(!Q)X.push(Y)}return X}function dz($,J,Z,X){let Y=J;if(S0(Y)&&X.has(Y))return X.get(Y);let z={...$};if(S0(Y))X.set(Y,z);for(let Q in Y){if(!Object.prototype.hasOwnProperty.call(Y,Q))continue;let G=Y[Q],q=z[Q];if(Z.skipNullish&&(G===null||G===void 0))continue;if(G===null||G===void 0){z[Q]=G;continue}if(S0(G)&&S0(q))z[Q]=GZ(q,G,Z,X);else if(Array.isArray(G)||Array.isArray(q))z[Q]=qZ(q,G,Z.arrayMergeMode||"smart",X);else z[Q]=G}return z}function T7($,J,Z="replace"){return QZ($,J,{arrayMergeMode:Z==="replace"?"replace":"smart",skipNullish:!0})}function U7($,J){if($===J)return!0;if(Array.isArray($)&&Array.isArray(J)){if($.length!==J.length)return!1;for(let Z=0;Z<$.length;Z++)if(!U7($[Z],J[Z]))return!1;return!0}if(S0($)&&S0(J)){let Z=Object.keys($),X=Object.keys(J);if(Z.length!==X.length)return!1;for(let Y of Z){if(!Object.prototype.hasOwnProperty.call(J,Y))return!1;if(!U7($[Y],J[Y]))return!1}return!0}return!1}function S0($){return Boolean($&&typeof $==="object"&&!Array.isArray($))}class F${extensions=[".ts",".js",".mjs",".cjs",".json",".mts",".cts"];async loadFromPath($,J,Z={}){let{arrayStrategy:X="replace",useCache:Y=!0,cacheTtl:z,trackPerformance:Q=!0,verbose:G=!1}=Z;if(Y){let U=_1.getWithFileCheck("file",$);if(U){if(G)console.log(`Configuration loaded from cache: ${$}`);return U}}let q=async()=>{if(!a1($))return null;try{let U=`?t=${Date.now()}`,W=await import($+U),K=W.default||W,H="default"in W,V=Object.keys(W).length>0;if(!H&&!V)throw new P1($,Error("Configuration file is empty and exports nothing"),"unknown");if(typeof K!=="object"||K===null||Array.isArray(K))throw new P1($,Error("Configuration must export a valid object"),"unknown");let F={config:T7(J,K,X),source:{type:"file",path:$,priority:100,timestamp:new Date}};if(Y)_1.setWithFileCheck("file",F,$,z);return F}catch(U){throw U instanceof Error?n0.configLoad($,U):n0.configLoad($,Error(String(U)))}};if(Q)return I1.track("loadFromPath",q,{path:$});return q()}async tryLoadFromPaths($,J,Z={}){for(let X of $)try{let Y=await this.loadFromPath(X,J,Z);if(Y)return Y}catch(Y){if(Y instanceof Error&&Y.name==="ConfigLoadError")throw Y;if(Z.verbose)console.warn(`Failed to load config from ${X}:`,Y)}return null}generateConfigPaths($,J,Z){let X=this.generateNamePatterns($,Z),Y=[];for(let z of X)for(let Q of this.extensions)Y.push(i8(J,`${z}${Q}`));return Y}generateNamePatterns($,J){let Z=[];if(Z.push("config",".config"),$)Z.push($,`.${$}.config`,`${$}.config`,`.${$}`);if(J){if(Z.push(J,`.${J}.config`,`${J}.config`,`.${J}`),$)Z.push(`${$}.${J}.config`,`.${$}.${J}.config`)}return Z.filter(Boolean)}checkFileAccess($){return YZ(async()=>{return a1($)},{maxRetries:2,retryDelay:100,fallback:!1})}async discoverConfigFiles($,J,Z){let X=[];if(!a1($))return X;if(J||Z){let Y=this.generateNamePatterns(J||"",Z);for(let z of Y)for(let Q of this.extensions){let G=i8($,`${z}${Q}`);if(await this.checkFileAccess(G))X.push(G)}}else try{let{readdirSync:Y}=await import("fs"),z=Y($);for(let Q of z)if(this.looksLikeConfigFile(Q)){let G=i8($,Q);if(await this.checkFileAccess(G))X.push(G)}}catch{return[]}return X}looksLikeConfigFile($){return[/\.config\.(ts|js|mjs|cjs|json|mts|cts)$/,/^\..*\.(ts|js|mjs|cjs|json|mts|cts)$/,/config\.(ts|js|mjs|cjs|json|mts|cts)$/].some((Z)=>Z.test($))}async validateConfigFile($){let J=[];try{if(!a1($))return J.push("Configuration file does not exist"),J;let Z=await import($),X=Z.default||Z;if(X===void 0)J.push("Configuration file must export a default value or named exports");else if(typeof X!=="object"||X===null)J.push("Configuration must be an object");else if(Array.isArray(X))J.push("Configuration cannot be an array at the root level");if($.endsWith(".json"))try{let{readFileSync:Y}=await import("fs"),z=Y($,"utf8");JSON.parse(z)}catch(Y){J.push(`Invalid JSON syntax: ${Y}`)}}catch(Z){J.push(`Failed to load configuration file: ${Z}`)}return J}async getFileModificationTime($){try{let{statSync:J}=await import("fs");return J($).mtime}catch{return null}}async preloadConfigurations($,J={}){let Z=new Map;return await Promise.allSettled($.map(async(X)=>{try{let Y=await this.loadFromPath(X,{},J);if(Y)Z.set(X,Y.config)}catch(Y){if(J.verbose)console.warn(`Failed to preload ${X}:`,Y)}})),Z}}class E7{async validateConfiguration($,J,Z={}){let{stopOnFirstError:X=!1,validateRequired:Y=!0,validateTypes:z=!0,customRules:Q=[],trackPerformance:G=!0,verbose:q=!1}=Z,U=async()=>{let W=[],K=[],H={stopOnFirstError:X,validateRequired:Y,validateTypes:z,customRules:Q,trackPerformance:G,verbose:q};try{if(typeof J==="string")return await this.validateWithSchemaFile($,J,H);else if(Array.isArray(J))return this.validateWithRules($,[...J,...Q],H);else return this.validateWithJSONSchema($,J,H)}catch(V){return W.push({path:"",message:`Validation failed: ${V}`,rule:"system"}),{isValid:!1,errors:W,warnings:K}}};if(G)return await I1.track("validateConfiguration",U);return U()}async validateWithSchemaFile($,J,Z){try{if(!jz(J))throw new C1(J,[{path:"",message:"Schema file does not exist"}]);let X=await import(J),Y=X.default||X;if(Array.isArray(Y))return this.validateWithRules($,Y,Z);else return this.validateWithJSONSchema($,Y,Z)}catch(X){throw new C1(J,[{path:"",message:`Failed to load schema: ${X}`}])}}validateWithJSONSchema($,J,Z){let X=[],Y=[];return this.validateObjectAgainstSchema($,J,"",X,Y,Z),{isValid:X.length===0,errors:X,warnings:Y}}validateObjectAgainstSchema($,J,Z,X,Y,z){if(z.validateTypes&&J.type){let Q=Array.isArray($)?"array":typeof $,G=Array.isArray(J.type)?J.type:[J.type];if(!G.includes(Q)){if(X.push({path:Z,message:`Expected type ${G.join(" or ")}, got ${Q}`,expected:G.join(" or "),actual:Q,rule:"type"}),z.stopOnFirstError)return}}if(J.enum&&!J.enum.includes($)){if(X.push({path:Z,message:`Value must be one of: ${J.enum.join(", ")}`,expected:J.enum.join(", "),actual:$,rule:"enum"}),z.stopOnFirstError)return}if(typeof $==="string"){if(J.minLength!==void 0&&$.length<J.minLength)X.push({path:Z,message:`String length must be at least ${J.minLength}`,expected:`>= ${J.minLength}`,actual:$.length,rule:"minLength"});if(J.maxLength!==void 0&&$.length>J.maxLength)X.push({path:Z,message:`String length must not exceed ${J.maxLength}`,expected:`<= ${J.maxLength}`,actual:$.length,rule:"maxLength"});if(J.pattern){if(!new RegExp(J.pattern).test($))X.push({path:Z,message:`String does not match pattern ${J.pattern}`,expected:J.pattern,actual:$,rule:"pattern"})}}if(typeof $==="number"){if(J.minimum!==void 0&&$<J.minimum)X.push({path:Z,message:`Value must be at least ${J.minimum}`,expected:`>= ${J.minimum}`,actual:$,rule:"minimum"});if(J.maximum!==void 0&&$>J.maximum)X.push({path:Z,message:`Value must not exceed ${J.maximum}`,expected:`<= ${J.maximum}`,actual:$,rule:"maximum"})}if(Array.isArray($)&&J.items)for(let Q=0;Q<$.length;Q++){let G=Z?`${Z}[${Q}]`:`[${Q}]`;if(this.validateObjectAgainstSchema($[Q],J.items,G,X,Y,z),z.stopOnFirstError&&X.length>0)return}if($&&typeof $==="object"&&!Array.isArray($)){let Q=$;if(z.validateRequired&&J.required){for(let G of J.required)if(!(G in Q)){if(X.push({path:Z?`${Z}.${G}`:G,message:`Missing required property '${G}'`,expected:"required",rule:"required"}),z.stopOnFirstError)return}}if(J.properties){for(let[G,q]of Object.entries(J.properties))if(G in Q){let U=Z?`${Z}.${G}`:G;if(this.validateObjectAgainstSchema(Q[G],q,U,X,Y,z),z.stopOnFirstError&&X.length>0)return}}if(J.additionalProperties===!1){let G=new Set(Object.keys(J.properties||{}));for(let q of Object.keys(Q))if(!G.has(q))Y.push({path:Z?`${Z}.${q}`:q,message:`Additional property '${q}' is not allowed`,rule:"additionalProperties"})}}}validateWithRules($,J,Z){let X=[],Y=[];for(let z of J)try{let Q=this.getValueByPath($,z.path),G=this.validateWithRule(Q,z,z.path);if(X.push(...G),Z.stopOnFirstError&&X.length>0)break}catch(Q){X.push({path:z.path,message:`Rule validation failed: ${Q}`,rule:"system"})}return{isValid:X.length===0,errors:X,warnings:Y}}validateWithRule($,J,Z){let X=[];if(J.required&&($===void 0||$===null))return X.push({path:Z,message:J.message||`Property '${Z}' is required`,expected:"required",rule:"required"}),X;if($===void 0||$===null)return X;if(J.type){let Y=Array.isArray($)?"array":typeof $;if(Y!==J.type)X.push({path:Z,message:J.message||`Expected type ${J.type}, got ${Y}`,expected:J.type,actual:Y,rule:"type"})}if(J.min!==void 0){let Y=Array.isArray($)?$.length:typeof $==="string"?$.length:typeof $==="number"?$:0;if(Y<J.min)X.push({path:Z,message:J.message||`Value must be at least ${J.min}`,expected:`>= ${J.min}`,actual:Y,rule:"min"})}if(J.max!==void 0){let Y=Array.isArray($)?$.length:typeof $==="string"?$.length:typeof $==="number"?$:0;if(Y>J.max)X.push({path:Z,message:J.message||`Value must not exceed ${J.max}`,expected:`<= ${J.max}`,actual:Y,rule:"max"})}if(J.pattern&&typeof $==="string"){if(!J.pattern.test($))X.push({path:Z,message:J.message||`Value does not match pattern ${J.pattern}`,expected:J.pattern.toString(),actual:$,rule:"pattern"})}if(J.enum&&!J.enum.includes($))X.push({path:Z,message:J.message||`Value must be one of: ${J.enum.join(", ")}`,expected:J.enum.join(", "),actual:$,rule:"enum"});if(J.validator){let Y=J.validator($);if(Y)X.push({path:Z,message:J.message||Y,rule:"custom"})}return X}getValueByPath($,J){if(!J)return $;let Z=J.split("."),X=$;for(let Y of Z)if(X&&typeof X==="object"&&Y in X)X=X[Y];else return;return X}generateRulesFromInterface($){let J=[],Z=$.matchAll(/(\w+)(\?)?:\s*(\w+)/g);for(let X of Z){let[,Y,z,Q]=X;J.push({path:Y,required:!z,type:this.mapTypeScriptType(Q)})}return J}mapTypeScriptType($){switch($.toLowerCase()){case"string":return"string";case"number":return"number";case"boolean":return"boolean";case"array":return"array";case"object":return"object";default:return"object"}}static createCommonRules(){return{server:[{path:"port",required:!0,type:"number",min:1,max:65535},{path:"host",required:!0,type:"string",min:1},{path:"ssl",type:"boolean"}],database:[{path:"url",required:!0,type:"string",min:1},{path:"pool",type:"number",min:1,max:100},{path:"timeout",type:"number",min:0}],api:[{path:"baseUrl",required:!0,type:"string",pattern:_Z},{path:"timeout",type:"number",min:0},{path:"retries",type:"number",min:0,max:10}]}}}class D7{fileLoader=new F$;envProcessor=new _$;validator=new E7;async loadConfig($){let J=Date.now(),{cache:Z,performance:X,schema:Y,validate:z,...Q}=$;try{if(Z?.enabled){let q=this.checkCache(Q.name||"",Q);if(q)return q}let G;try{G=await this.loadConfigurationStrategies(Q,!0,Z)}catch(q){let U=Q.__strictErrorHandling;if(q instanceof Error&&q.name==="ConfigNotFoundError"){if(U)throw q;G={...await this.applyEnvironmentVariables(Q.name||"",Q.defaultConfig,Q.checkEnv!==!1,Q.verbose||!1),warnings:[`No configuration file found for "${Q.name||"config"}", using defaults with environment variables`]}}else if(q instanceof Error&&q.name==="ConfigLoadError"){let W=q.message.includes("EACCES")||q.message.includes("EPERM")||q.message.includes("permission denied"),K=!W&&(q.message.includes("syntax")||q.message.includes("Expected")||q.message.includes("Unexpected")||q.message.includes("BuildMessage")||q.message.includes("errors building")),H=q.message.includes("Configuration must export a valid object")||q.message.includes("Configuration file is empty and exports nothing");if(U&&(H||W))throw q;if(K&&(!U||!H))G={...await this.applyEnvironmentVariables(Q.name||"",Q.defaultConfig,Q.checkEnv!==!1,Q.verbose||!1),warnings:["Configuration file has syntax errors, using defaults with environment variables"]};else if(!U)G={...await this.applyEnvironmentVariables(Q.name||"",Q.defaultConfig,Q.checkEnv!==!1,Q.verbose||!1),warnings:[`Configuration loading error, using defaults: ${q.message}`]};else throw q}else G={...await this.applyEnvironmentVariables(Q.name||"",Q.defaultConfig,Q.checkEnv!==!1,Q.verbose||!1),warnings:[`Configuration loading failed, using defaults: ${q instanceof Error?q.message:String(q)}`]}}if(Y||z)await this.validateConfiguration(G.config,Y,z,Q.name);if(Z?.enabled&&G)this.cacheResult(Q.name||"",G,Z,Q);if(X?.enabled){let q={operation:"loadConfig",duration:Date.now()-J,configName:Q.name,timestamp:new Date};if(X.onMetrics)X.onMetrics(q);if(X.slowThreshold&&q.duration>X.slowThreshold)b0.warn(`Slow configuration loading detected: ${q.duration}ms for ${Q.name}`);G.metrics=q}return G}catch(G){let q=Date.now()-J;throw b0.error(`Configuration loading failed after ${q}ms:`,[G instanceof Error?G:Error(String(G))]),G}}async loadConfigurationStrategies($,J=!1,Z){let{name:X="",alias:Y,cwd:z,configDir:Q,defaultConfig:G,checkEnv:q=!0,arrayStrategy:U="replace",verbose:W=!1}=$,K=z||$1.cwd(),H=[],V=await this.loadLocalConfiguration(X,Y,K,Q,G,U,W,q,Z);if(V)return H.push(...this.getLocalSearchPaths(X,Y,K,Q)),this.finalizeResult(V,H,q,X,W);let A=await this.loadHomeConfiguration(X,Y,G,U,W,q);if(A)return H.push(...this.getHomeSearchPaths(X,Y)),this.finalizeResult(A,H,q,X,W);let _=await this.loadPackageJsonConfiguration(X,Y,K,G,U,W,q);if(_)return H.push(O0(K,"package.json")),this.finalizeResult(_,H,q,X,W);if(H.push(...this.getAllSearchPaths(X,Y,K,Q)),J)throw n0.configNotFound(X,H,Y);return{...await this.applyEnvironmentVariables(X,G,q,W),warnings:[`No configuration file found for "${X}"${Y?` or alias "${Y}"`:""}, using defaults with environment variables`]}}async loadLocalConfiguration($,J,Z,X,Y,z,Q,G,q){let U=G?O1($,Y,Q):Y,W=this.getLocalDirectories(Z,X);for(let K of W){if(Q)b0.info(`Searching for configuration in: ${K}`);let H=this.fileLoader.generateConfigPaths($,K,J),V=await this.fileLoader.tryLoadFromPaths(H,U,{arrayStrategy:z,verbose:Q,cacheTtl:q?.ttl,useCache:!q?.ttl||q.ttl>100});if(V){if(Q)b0.success(`Configuration loaded from: ${V.source.path}`);return V}}return null}async loadHomeConfiguration($,J,Z,X,Y,z){if(!$)return null;let Q=z?O1($,Z,Y):Z,G=[O0(z1(),".config",$),O0(z1(),".config"),z1()];for(let q of G){if(Y)b0.info(`Checking home directory: ${q}`);let U=this.fileLoader.generateConfigPaths($,q,J),W=await this.fileLoader.tryLoadFromPaths(U,Q,{arrayStrategy:X,verbose:Y});if(W){if(Y)b0.success(`Configuration loaded from home directory: ${W.source.path}`);return W}}return null}async loadPackageJsonConfiguration($,J,Z,X,Y,z,Q){let G=Q?O1($,X,z):X;try{let q=O0(Z,"package.json");if(!G7(q))return null;let U=await import(q),W=U[$],K=$;if(!W&&J)W=U[J],K=J;if(W&&typeof W==="object"&&!Array.isArray(W)){if(z)b0.success(`Configuration loaded from package.json: ${K}`);return{config:T7(G,W,Y),source:{type:"package.json",path:q,priority:30,timestamp:new Date}}}}catch(q){if(z)b0.warn("Failed to load package.json:",[q instanceof Error?q:Error(String(q))])}return null}async applyEnvironmentVariables($,J,Z,X){if(!Z||!$||typeof J!=="object"||J===null||Array.isArray(J))return{config:J,source:{type:"default",priority:10,timestamp:new Date}};return{config:O1($,J,X),source:{type:"environment",priority:20,timestamp:new Date}}}async finalizeResult($,J,Z,X,Y){return{config:$.config,source:$.source,path:$.source.path}}async validateConfiguration($,J,Z,X){let Y=[];if(Z){let z=Z($);if(z)Y.push(...z)}if(J){let z=await this.validator.validateConfiguration($,J);if(!z.isValid)Y.push(...z.errors.map((Q)=>Q.path?`${Q.path}: ${Q.message}`:Q.message))}if(Y.length>0)throw n0.configValidation(X||"unknown",Y,X)}checkCache($,J){let Z=this.generateCacheKey($,J);return _1.get(Z)||null}cacheResult($,J,Z,X){let Y=this.generateCacheKey($,X);_1.set(Y,J,void 0,Z.ttl)}generateCacheKey($,J){let Z=[$];if(J.alias)Z.push(`alias:${J.alias}`);if(J.cwd)Z.push(`cwd:${J.cwd}`);if(J.configDir)Z.push(`configDir:${J.configDir}`);if("checkEnv"in J)Z.push(`checkEnv:${J.checkEnv}`);return Z.join("|")}getLocalDirectories($,J){return Array.from(new Set([$,O0($,"config"),O0($,".config"),J?O0($,J):void 0].filter(Boolean)))}getAllSearchPaths($,J,Z,X){let Y=[];return Y.push(...this.getLocalSearchPaths($,J,Z,X)),Y.push(...this.getHomeSearchPaths($,J)),Y.push(O0(Z,"package.json")),Y}getLocalSearchPaths($,J,Z,X){let Y=this.getLocalDirectories(Z,X),z=[];for(let Q of Y)z.push(...this.fileLoader.generateConfigPaths($,Q,J));return z}getHomeSearchPaths($,J){if(!$)return[];let Z=[O0(z1(),".config",$),O0(z1(),".config"),z1()],X=[];for(let Y of Z)X.push(...this.fileLoader.generateConfigPaths($,Y,J));return X}async loadConfigWithResult($){return this.loadConfig($)}}function y9($){let Z=!($.message.includes("EACCES")||$.message.includes("EPERM")||$.message.includes("permission denied"))&&($.message.includes("syntax")||$.message.includes("Expected")||$.message.includes("Unexpected")||$.message.includes("BuildMessage")),X=$.message.includes("Configuration must export a valid object")||$.message.includes("Configuration file is empty and exports nothing");return Z||X}async function oz($){return l0.loadConfig({...$,__strictErrorHandling:!0})}async function UZ($){let J="defaultConfig"in $&&$.defaultConfig!==void 0?$.defaultConfig:{},Z="cache"in $||"performance"in $||"schema"in $||"validate"in $;try{let X;if(Z)X=await l0.loadConfig($);else X=await l0.loadConfig({...$,defaultConfig:J,cache:{enabled:!0},performance:{enabled:!1}});return X?.config??J}catch(X){let Y=X instanceof Error?X.name:"UnknownError",z=X instanceof Error?X.message:String(X);if(!(Y==="ConfigNotFoundError"||Y==="ConfigLoadError"||Y==="ConfigValidationError"||z.includes("config"))&&$.verbose)b0.warn("Unexpected error loading config, using defaults:",[X instanceof Error?X:Error(String(X))]);let G=Z?{...$,defaultConfig:J}:{...$,defaultConfig:J,cache:{enabled:!0},performance:{enabled:!1}};if("checkEnv"in $?$.checkEnv!==!1:!0)return(await l0.applyEnvironmentVariables(G.name||"",J,!0,G.verbose||!1))?.config??J;return J}}async function cz($={defaultConfig:{}}){if(typeof $==="string"){let{cwd:J}=await import("process");try{return(await l0.loadConfig({name:$,cwd:J(),generatedDir:"./generated",configDir:"./config",defaultConfig:{},checkEnv:!0,arrayStrategy:"replace"})).config}catch(Z){if(Z instanceof Error&&(Z.name==="ConfigNotFoundError"||Z.name==="ConfigLoadError"&&y9(Z)))return(await l0.applyEnvironmentVariables($,{},!0,!1)).config;throw Z}}try{return(await l0.loadConfig({...$,cwd:$.cwd||$1.cwd(),cache:{enabled:!0},performance:{enabled:!1}})).config}catch(J){if(J instanceof Error&&(J.name==="ConfigNotFoundError"||J.name==="ConfigLoadError"&&y9(J)))return(await l0.applyEnvironmentVariables($.name||"",$.defaultConfig||{},$.checkEnv!==!1,$.verbose||!1)).config;throw J}}async function rz($,J,Z="replace"){let X=new F$;try{let Y=await X.loadFromPath($,J,{arrayStrategy:Z,useCache:!1,trackPerformance:!1});return Y?Y.config:null}catch{return null}}function O1($,J,Z=!1){let X=new _$,Y=$.toUpperCase().replace(/[^A-Z0-9]/g,"_");function z(Q,G=[]){let q={...Q};for(let[U,W]of Object.entries(Q)){let K=[...G,U],H=[`${Y}_${K.join("_").toUpperCase()}`,`${Y}_${K.map((_)=>_.toUpperCase()).join("")}`,`${Y}_${K.map((_)=>_.replace(/([A-Z])/g,"_$1").toUpperCase()).join("")}`],V,A;for(let _ of H)if(V=$1.env[_],V!==void 0){A=_;break}if(V!==void 0&&A)if(typeof W==="boolean")q[U]=["true","1","yes"].includes(V.toLowerCase());else if(typeof W==="number"){let _=Number(V);if(!Number.isNaN(_))q[U]=_}else if(Array.isArray(W))try{q[U]=JSON.parse(V)}catch{q[U]=V.split(",").map((_)=>_.trim())}else q[U]=V;else if(W&&typeof W==="object"&&!Array.isArray(W))q[U]=z(W,K)}return q}return z(J)}function lz($){let J=O0($1.cwd(),$.configDir),Z=O0($1.cwd(),$.generatedDir),X=O0(Z,"config-types.ts");if(!G7(w9(X)))iY(w9(X),{recursive:!0,mode:511});let Y=G7(J)?tY(J).map((Q)=>Q.replace(/\.(ts|js|mjs|cjs|mts|cts|json)$/,"")).sort():[],z=`// Generated by bunfig v${TQ}
31
+ `;return Z}}function uz($,J){let Z=KZ("process");if(typeof Z>"u"||!Z.env)return J;let X=Z.env[$];return X!==void 0?X:J}function GZ($,J,Z={}){return qZ($,J,Z,new WeakMap)}function qZ($,J,Z,X){let{arrayMergeMode:Y="replace",skipNullish:z=!1,customMerger:Q}=Z;if(J===null||J===void 0)return z?$:J;if(Q){let G=Q($,J);if(G!==void 0)return G}if(Array.isArray(J)||Array.isArray($))return UZ($,J,Y,X);if(!v0(J)||!v0($))return J;return cz($,J,Z,X)}function UZ($,J,Z,X){if(Array.isArray(J)&&!Array.isArray($))return J;if(Array.isArray($)&&!Array.isArray(J))return J;if(Array.isArray(J)&&Array.isArray($))switch(Z){case"replace":return J;case"concat":return mz($,J);case"smart":return dz($,J,X);default:return J}return J}function mz($,J){let Z=[...J];for(let X of $)if(!Z.some((Y)=>W7(Y,X)))Z.push(X);return Z}function dz($,J,Z){if(J.length===0)return $;if($.length===0)return J;if(v0(J[0])&&v0($[0]))return oz($,J,Z);if(J.every((X)=>typeof X==="string")&&$.every((X)=>typeof X==="string")){let X=[...J];for(let Y of $)if(!X.includes(Y))X.push(Y);return X}return J}function oz($,J,Z){let X=[...J];for(let Y of $){if(!v0(Y)){X.push(Y);continue}let z=["id","name","key","path","type"],Q=!1;for(let G of z)if(G in Y){if(X.find((U)=>v0(U)&&(G in U)&&U[G]===Y[G])){Q=!0;break}}if(!Q)X.push(Y)}return X}function cz($,J,Z,X){let Y=J;if(v0(Y)&&X.has(Y))return X.get(Y);let z={...$};if(v0(Y))X.set(Y,z);for(let Q in Y){if(!Object.prototype.hasOwnProperty.call(Y,Q))continue;let G=Y[Q],q=z[Q];if(Z.skipNullish&&(G===null||G===void 0))continue;if(G===null||G===void 0){z[Q]=G;continue}if(v0(G)&&v0(q))z[Q]=qZ(q,G,Z,X);else if(Array.isArray(G)||Array.isArray(q))z[Q]=UZ(q,G,Z.arrayMergeMode||"smart",X);else z[Q]=G}return z}function E7($,J,Z="replace"){return GZ($,J,{arrayMergeMode:Z==="replace"?"replace":"smart",skipNullish:!0})}function W7($,J){if($===J)return!0;if(Array.isArray($)&&Array.isArray(J)){if($.length!==J.length)return!1;for(let Z=0;Z<$.length;Z++)if(!W7($[Z],J[Z]))return!1;return!0}if(v0($)&&v0(J)){let Z=Object.keys($),X=Object.keys(J);if(Z.length!==X.length)return!1;for(let Y of Z){if(!Object.prototype.hasOwnProperty.call(J,Y))return!1;if(!W7($[Y],J[Y]))return!1}return!0}return!1}function v0($){return Boolean($&&typeof $==="object"&&!Array.isArray($))}class w${extensions=[".ts",".js",".mjs",".cjs",".json",".mts",".cts"];async loadFromPath($,J,Z={}){let{arrayStrategy:X="replace",useCache:Y=!0,cacheTtl:z,trackPerformance:Q=!0,verbose:G=!1}=Z;if(Y){let U=F1.getWithFileCheck("file",$);if(U){if(G)console.log(`Configuration loaded from cache: ${$}`);return U}}let q=async()=>{if(!s1($))return null;try{let U=`?t=${Date.now()}`,W=await import($+U),K=W.default||W,H="default"in W,V=Object.keys(W).length>0;if(!H&&!V)throw new C1($,Error("Configuration file is empty and exports nothing"),"unknown");if(typeof K!=="object"||K===null||Array.isArray(K))throw new C1($,Error("Configuration must export a valid object"),"unknown");let w={config:E7(J,K,X),source:{type:"file",path:$,priority:100,timestamp:new Date}};if(Y)F1.setWithFileCheck("file",w,$,z);return w}catch(U){throw U instanceof Error?i0.configLoad($,U):i0.configLoad($,Error(String(U)))}};if(Q)return S1.track("loadFromPath",q,{path:$});return q()}async tryLoadFromPaths($,J,Z={}){for(let X of $)try{let Y=await this.loadFromPath(X,J,Z);if(Y)return Y}catch(Y){if(Y instanceof Error&&Y.name==="ConfigLoadError")throw Y;if(Z.verbose)console.warn(`Failed to load config from ${X}:`,Y)}return null}generateConfigPaths($,J,Z){let X=this.generateNamePatterns($,Z),Y=[];for(let z of X)for(let Q of this.extensions)Y.push(t8(J,`${z}${Q}`));return Y}generateNamePatterns($,J){let Z=[];if(Z.push("config",".config"),$)Z.push($,`.${$}.config`,`${$}.config`,`.${$}`);if(J){if(Z.push(J,`.${J}.config`,`${J}.config`,`.${J}`),$)Z.push(`${$}.${J}.config`,`.${$}.${J}.config`)}return Z.filter(Boolean)}checkFileAccess($){return zZ(async()=>{return s1($)},{maxRetries:2,retryDelay:100,fallback:!1})}async discoverConfigFiles($,J,Z){let X=[];if(!s1($))return X;if(J||Z){let Y=this.generateNamePatterns(J||"",Z);for(let z of Y)for(let Q of this.extensions){let G=t8($,`${z}${Q}`);if(await this.checkFileAccess(G))X.push(G)}}else try{let{readdirSync:Y}=await import("fs"),z=Y($);for(let Q of z)if(this.looksLikeConfigFile(Q)){let G=t8($,Q);if(await this.checkFileAccess(G))X.push(G)}}catch{return[]}return X}looksLikeConfigFile($){return[/\.config\.(ts|js|mjs|cjs|json|mts|cts)$/,/^\..*\.(ts|js|mjs|cjs|json|mts|cts)$/,/config\.(ts|js|mjs|cjs|json|mts|cts)$/].some((Z)=>Z.test($))}async validateConfigFile($){let J=[];try{if(!s1($))return J.push("Configuration file does not exist"),J;let Z=await import($),X=Z.default||Z;if(X===void 0)J.push("Configuration file must export a default value or named exports");else if(typeof X!=="object"||X===null)J.push("Configuration must be an object");else if(Array.isArray(X))J.push("Configuration cannot be an array at the root level");if($.endsWith(".json"))try{let{readFileSync:Y}=await import("fs"),z=Y($,"utf8");JSON.parse(z)}catch(Y){J.push(`Invalid JSON syntax: ${Y}`)}}catch(Z){J.push(`Failed to load configuration file: ${Z}`)}return J}async getFileModificationTime($){try{let{statSync:J}=await import("fs");return J($).mtime}catch{return null}}async preloadConfigurations($,J={}){let Z=new Map;return await Promise.allSettled($.map(async(X)=>{try{let Y=await this.loadFromPath(X,{},J);if(Y)Z.set(X,Y.config)}catch(Y){if(J.verbose)console.warn(`Failed to preload ${X}:`,Y)}})),Z}}class D7{async validateConfiguration($,J,Z={}){let{stopOnFirstError:X=!1,validateRequired:Y=!0,validateTypes:z=!0,customRules:Q=[],trackPerformance:G=!0,verbose:q=!1}=Z,U=async()=>{let W=[],K=[],H={stopOnFirstError:X,validateRequired:Y,validateTypes:z,customRules:Q,trackPerformance:G,verbose:q};try{if(typeof J==="string")return await this.validateWithSchemaFile($,J,H);else if(Array.isArray(J))return this.validateWithRules($,[...J,...Q],H);else return this.validateWithJSONSchema($,J,H)}catch(V){return W.push({path:"",message:`Validation failed: ${V}`,rule:"system"}),{isValid:!1,errors:W,warnings:K}}};if(G)return await S1.track("validateConfiguration",U);return U()}async validateWithSchemaFile($,J,Z){try{if(!Tz(J))throw new I1(J,[{path:"",message:"Schema file does not exist"}]);let X=await import(J),Y=X.default||X;if(Array.isArray(Y))return this.validateWithRules($,Y,Z);else return this.validateWithJSONSchema($,Y,Z)}catch(X){throw new I1(J,[{path:"",message:`Failed to load schema: ${X}`}])}}validateWithJSONSchema($,J,Z){let X=[],Y=[];return this.validateObjectAgainstSchema($,J,"",X,Y,Z),{isValid:X.length===0,errors:X,warnings:Y}}validateObjectAgainstSchema($,J,Z,X,Y,z){if(z.validateTypes&&J.type){let Q=Array.isArray($)?"array":typeof $,G=Array.isArray(J.type)?J.type:[J.type];if(!G.includes(Q)){if(X.push({path:Z,message:`Expected type ${G.join(" or ")}, got ${Q}`,expected:G.join(" or "),actual:Q,rule:"type"}),z.stopOnFirstError)return}}if(J.enum&&!J.enum.includes($)){if(X.push({path:Z,message:`Value must be one of: ${J.enum.join(", ")}`,expected:J.enum.join(", "),actual:$,rule:"enum"}),z.stopOnFirstError)return}if(typeof $==="string"){if(J.minLength!==void 0&&$.length<J.minLength)X.push({path:Z,message:`String length must be at least ${J.minLength}`,expected:`>= ${J.minLength}`,actual:$.length,rule:"minLength"});if(J.maxLength!==void 0&&$.length>J.maxLength)X.push({path:Z,message:`String length must not exceed ${J.maxLength}`,expected:`<= ${J.maxLength}`,actual:$.length,rule:"maxLength"});if(J.pattern){if(!new RegExp(J.pattern).test($))X.push({path:Z,message:`String does not match pattern ${J.pattern}`,expected:J.pattern,actual:$,rule:"pattern"})}}if(typeof $==="number"){if(J.minimum!==void 0&&$<J.minimum)X.push({path:Z,message:`Value must be at least ${J.minimum}`,expected:`>= ${J.minimum}`,actual:$,rule:"minimum"});if(J.maximum!==void 0&&$>J.maximum)X.push({path:Z,message:`Value must not exceed ${J.maximum}`,expected:`<= ${J.maximum}`,actual:$,rule:"maximum"})}if(Array.isArray($)&&J.items)for(let Q=0;Q<$.length;Q++){let G=Z?`${Z}[${Q}]`:`[${Q}]`;if(this.validateObjectAgainstSchema($[Q],J.items,G,X,Y,z),z.stopOnFirstError&&X.length>0)return}if($&&typeof $==="object"&&!Array.isArray($)){let Q=$;if(z.validateRequired&&J.required){for(let G of J.required)if(!(G in Q)){if(X.push({path:Z?`${Z}.${G}`:G,message:`Missing required property '${G}'`,expected:"required",rule:"required"}),z.stopOnFirstError)return}}if(J.properties){for(let[G,q]of Object.entries(J.properties))if(G in Q){let U=Z?`${Z}.${G}`:G;if(this.validateObjectAgainstSchema(Q[G],q,U,X,Y,z),z.stopOnFirstError&&X.length>0)return}}if(J.additionalProperties===!1){let G=new Set(Object.keys(J.properties||{}));for(let q of Object.keys(Q))if(!G.has(q))Y.push({path:Z?`${Z}.${q}`:q,message:`Additional property '${q}' is not allowed`,rule:"additionalProperties"})}}}validateWithRules($,J,Z){let X=[],Y=[];for(let z of J)try{let Q=this.getValueByPath($,z.path),G=this.validateWithRule(Q,z,z.path);if(X.push(...G),Z.stopOnFirstError&&X.length>0)break}catch(Q){X.push({path:z.path,message:`Rule validation failed: ${Q}`,rule:"system"})}return{isValid:X.length===0,errors:X,warnings:Y}}validateWithRule($,J,Z){let X=[];if(J.required&&($===void 0||$===null))return X.push({path:Z,message:J.message||`Property '${Z}' is required`,expected:"required",rule:"required"}),X;if($===void 0||$===null)return X;if(J.type){let Y=Array.isArray($)?"array":typeof $;if(Y!==J.type)X.push({path:Z,message:J.message||`Expected type ${J.type}, got ${Y}`,expected:J.type,actual:Y,rule:"type"})}if(J.min!==void 0){let Y=Array.isArray($)?$.length:typeof $==="string"?$.length:typeof $==="number"?$:0;if(Y<J.min)X.push({path:Z,message:J.message||`Value must be at least ${J.min}`,expected:`>= ${J.min}`,actual:Y,rule:"min"})}if(J.max!==void 0){let Y=Array.isArray($)?$.length:typeof $==="string"?$.length:typeof $==="number"?$:0;if(Y>J.max)X.push({path:Z,message:J.message||`Value must not exceed ${J.max}`,expected:`<= ${J.max}`,actual:Y,rule:"max"})}if(J.pattern&&typeof $==="string"){if(!J.pattern.test($))X.push({path:Z,message:J.message||`Value does not match pattern ${J.pattern}`,expected:J.pattern.toString(),actual:$,rule:"pattern"})}if(J.enum&&!J.enum.includes($))X.push({path:Z,message:J.message||`Value must be one of: ${J.enum.join(", ")}`,expected:J.enum.join(", "),actual:$,rule:"enum"});if(J.validator){let Y=J.validator($);if(Y)X.push({path:Z,message:J.message||Y,rule:"custom"})}return X}getValueByPath($,J){if(!J)return $;let Z=J.split("."),X=$;for(let Y of Z)if(X&&typeof X==="object"&&Y in X)X=X[Y];else return;return X}generateRulesFromInterface($){let J=[],Z=$.matchAll(/(\w+)(\?)?:\s*(\w+)/g);for(let X of Z){let[,Y,z,Q]=X;J.push({path:Y,required:!z,type:this.mapTypeScriptType(Q)})}return J}mapTypeScriptType($){switch($.toLowerCase()){case"string":return"string";case"number":return"number";case"boolean":return"boolean";case"array":return"array";case"object":return"object";default:return"object"}}static createCommonRules(){return{server:[{path:"port",required:!0,type:"number",min:1,max:65535},{path:"host",required:!0,type:"string",min:1},{path:"ssl",type:"boolean"}],database:[{path:"url",required:!0,type:"string",min:1},{path:"pool",type:"number",min:1,max:100},{path:"timeout",type:"number",min:0}],api:[{path:"baseUrl",required:!0,type:"string",pattern:FZ},{path:"timeout",type:"number",min:0},{path:"retries",type:"number",min:0,max:10}]}}}class R7{fileLoader=new w$;envProcessor=new F$;validator=new D7;async loadConfig($){let J=Date.now(),{cache:Z,performance:X,schema:Y,validate:z,...Q}=$;try{if(Z?.enabled){let q=this.checkCache(Q.name||"",Q);if(q)return q}let G;try{G=await this.loadConfigurationStrategies(Q,!0,Z)}catch(q){let U=Q.__strictErrorHandling;if(q instanceof Error&&q.name==="ConfigNotFoundError"){if(U)throw q;G={...await this.applyEnvironmentVariables(Q.name||"",Q.defaultConfig,Q.checkEnv!==!1,Q.verbose||!1),warnings:[`No configuration file found for "${Q.name||"config"}", using defaults with environment variables`]}}else if(q instanceof Error&&q.name==="ConfigLoadError"){let W=q.message.includes("EACCES")||q.message.includes("EPERM")||q.message.includes("permission denied"),K=!W&&(q.message.includes("syntax")||q.message.includes("Expected")||q.message.includes("Unexpected")||q.message.includes("BuildMessage")||q.message.includes("errors building")),H=q.message.includes("Configuration must export a valid object")||q.message.includes("Configuration file is empty and exports nothing");if(U&&(H||W))throw q;if(K&&(!U||!H))G={...await this.applyEnvironmentVariables(Q.name||"",Q.defaultConfig,Q.checkEnv!==!1,Q.verbose||!1),warnings:["Configuration file has syntax errors, using defaults with environment variables"]};else if(!U)G={...await this.applyEnvironmentVariables(Q.name||"",Q.defaultConfig,Q.checkEnv!==!1,Q.verbose||!1),warnings:[`Configuration loading error, using defaults: ${q.message}`]};else throw q}else G={...await this.applyEnvironmentVariables(Q.name||"",Q.defaultConfig,Q.checkEnv!==!1,Q.verbose||!1),warnings:[`Configuration loading failed, using defaults: ${q instanceof Error?q.message:String(q)}`]}}if(Y||z)await this.validateConfiguration(G.config,Y,z,Q.name);if(Z?.enabled&&G)this.cacheResult(Q.name||"",G,Z,Q);if(X?.enabled){let q={operation:"loadConfig",duration:Date.now()-J,configName:Q.name,timestamp:new Date};if(X.onMetrics)X.onMetrics(q);if(X.slowThreshold&&q.duration>X.slowThreshold)k0.warn(`Slow configuration loading detected: ${q.duration}ms for ${Q.name}`);G.metrics=q}return G}catch(G){let q=Date.now()-J;throw k0.error(`Configuration loading failed after ${q}ms:`,[G instanceof Error?G:Error(String(G))]),G}}async loadConfigurationStrategies($,J=!1,Z){let{name:X="",alias:Y,cwd:z,configDir:Q,defaultConfig:G,checkEnv:q=!0,arrayStrategy:U="replace",verbose:W=!1}=$,K=z||Z1.cwd(),H=[],V=await this.loadLocalConfiguration(X,Y,K,Q,G,U,W,q,Z);if(V)return H.push(...this.getLocalSearchPaths(X,Y,K,Q)),this.finalizeResult(V,H,q,X,W);let A=await this.loadHomeConfiguration(X,Y,G,U,W,q);if(A)return H.push(...this.getHomeSearchPaths(X,Y)),this.finalizeResult(A,H,q,X,W);let _=await this.loadPackageJsonConfiguration(X,Y,K,G,U,W,q);if(_)return H.push(L0(K,"package.json")),this.finalizeResult(_,H,q,X,W);if(H.push(...this.getAllSearchPaths(X,Y,K,Q)),J)throw i0.configNotFound(X,H,Y);return{...await this.applyEnvironmentVariables(X,G,q,W),warnings:[`No configuration file found for "${X}"${Y?` or alias "${Y}"`:""}, using defaults with environment variables`]}}async loadLocalConfiguration($,J,Z,X,Y,z,Q,G,q){let U=G?L1($,Y,Q):Y,W=this.getLocalDirectories(Z,X);for(let K of W){if(Q)k0.info(`Searching for configuration in: ${K}`);let H=this.fileLoader.generateConfigPaths($,K,J),V=await this.fileLoader.tryLoadFromPaths(H,U,{arrayStrategy:z,verbose:Q,cacheTtl:q?.ttl,useCache:!q?.ttl||q.ttl>100});if(V){if(Q)k0.success(`Configuration loaded from: ${V.source.path}`);return V}}return null}async loadHomeConfiguration($,J,Z,X,Y,z){if(!$)return null;let Q=z?L1($,Z,Y):Z,G=[L0(Q1(),".config",$),L0(Q1(),".config"),Q1()];for(let q of G){if(Y)k0.info(`Checking home directory: ${q}`);let U=this.fileLoader.generateConfigPaths($,q,J),W=await this.fileLoader.tryLoadFromPaths(U,Q,{arrayStrategy:X,verbose:Y});if(W){if(Y)k0.success(`Configuration loaded from home directory: ${W.source.path}`);return W}}return null}async loadPackageJsonConfiguration($,J,Z,X,Y,z,Q){let G=Q?L1($,X,z):X;try{let q=L0(Z,"package.json");if(!q7(q))return null;let U=await import(q),W=U[$],K=$;if(!W&&J)W=U[J],K=J;if(W&&typeof W==="object"&&!Array.isArray(W)){if(z)k0.success(`Configuration loaded from package.json: ${K}`);return{config:E7(G,W,Y),source:{type:"package.json",path:q,priority:30,timestamp:new Date}}}}catch(q){if(z)k0.warn("Failed to load package.json:",[q instanceof Error?q:Error(String(q))])}return null}async applyEnvironmentVariables($,J,Z,X){if(!Z||!$||typeof J!=="object"||J===null||Array.isArray(J))return{config:J,source:{type:"default",priority:10,timestamp:new Date}};return{config:L1($,J,X),source:{type:"environment",priority:20,timestamp:new Date}}}async finalizeResult($,J,Z,X,Y){return{config:$.config,source:$.source,path:$.source.path}}async validateConfiguration($,J,Z,X){let Y=[];if(Z){let z=Z($);if(z)Y.push(...z)}if(J){let z=await this.validator.validateConfiguration($,J);if(!z.isValid)Y.push(...z.errors.map((Q)=>Q.path?`${Q.path}: ${Q.message}`:Q.message))}if(Y.length>0)throw i0.configValidation(X||"unknown",Y,X)}checkCache($,J){let Z=this.generateCacheKey($,J);return F1.get(Z)||null}cacheResult($,J,Z,X){let Y=this.generateCacheKey($,X);F1.set(Y,J,void 0,Z.ttl)}generateCacheKey($,J){let Z=[$];if(J.alias)Z.push(`alias:${J.alias}`);if(J.cwd)Z.push(`cwd:${J.cwd}`);if(J.configDir)Z.push(`configDir:${J.configDir}`);if("checkEnv"in J)Z.push(`checkEnv:${J.checkEnv}`);return Z.join("|")}getLocalDirectories($,J){return Array.from(new Set([$,L0($,"config"),L0($,".config"),J?L0($,J):void 0].filter(Boolean)))}getAllSearchPaths($,J,Z,X){let Y=[];return Y.push(...this.getLocalSearchPaths($,J,Z,X)),Y.push(...this.getHomeSearchPaths($,J)),Y.push(L0(Z,"package.json")),Y}getLocalSearchPaths($,J,Z,X){let Y=this.getLocalDirectories(Z,X),z=[];for(let Q of Y)z.push(...this.fileLoader.generateConfigPaths($,Q,J));return z}getHomeSearchPaths($,J){if(!$)return[];let Z=[L0(Q1(),".config",$),L0(Q1(),".config"),Q1()],X=[];for(let Y of Z)X.push(...this.fileLoader.generateConfigPaths($,Y,J));return X}async loadConfigWithResult($){return this.loadConfig($)}}function b9($){let Z=!($.message.includes("EACCES")||$.message.includes("EPERM")||$.message.includes("permission denied"))&&($.message.includes("syntax")||$.message.includes("Expected")||$.message.includes("Unexpected")||$.message.includes("BuildMessage")),X=$.message.includes("Configuration must export a valid object")||$.message.includes("Configuration file is empty and exports nothing");return Z||X}async function rz($){return a0.loadConfig({...$,__strictErrorHandling:!0})}async function WZ($){let J="defaultConfig"in $&&$.defaultConfig!==void 0?$.defaultConfig:{},Z="cache"in $||"performance"in $||"schema"in $||"validate"in $;try{let X;if(Z)X=await a0.loadConfig($);else X=await a0.loadConfig({...$,defaultConfig:J,cache:{enabled:!0},performance:{enabled:!1}});return X?.config??J}catch(X){let Y=X instanceof Error?X.name:"UnknownError",z=X instanceof Error?X.message:String(X);if(!(Y==="ConfigNotFoundError"||Y==="ConfigLoadError"||Y==="ConfigValidationError"||z.includes("config"))&&$.verbose)k0.warn("Unexpected error loading config, using defaults:",[X instanceof Error?X:Error(String(X))]);let G=Z?{...$,defaultConfig:J}:{...$,defaultConfig:J,cache:{enabled:!0},performance:{enabled:!1}};if("checkEnv"in $?$.checkEnv!==!1:!0)return(await a0.applyEnvironmentVariables(G.name||"",J,!0,G.verbose||!1))?.config??J;return J}}async function lz($={defaultConfig:{}}){if(typeof $==="string"){let{cwd:J}=await import("process");try{return(await a0.loadConfig({name:$,cwd:J(),generatedDir:"./generated",configDir:"./config",defaultConfig:{},checkEnv:!0,arrayStrategy:"replace"})).config}catch(Z){if(Z instanceof Error&&(Z.name==="ConfigNotFoundError"||Z.name==="ConfigLoadError"&&b9(Z)))return(await a0.applyEnvironmentVariables($,{},!0,!1)).config;throw Z}}try{return(await a0.loadConfig({...$,cwd:$.cwd||Z1.cwd(),cache:{enabled:!0},performance:{enabled:!1}})).config}catch(J){if(J instanceof Error&&(J.name==="ConfigNotFoundError"||J.name==="ConfigLoadError"&&b9(J)))return(await a0.applyEnvironmentVariables($.name||"",$.defaultConfig||{},$.checkEnv!==!1,$.verbose||!1)).config;throw J}}async function az($,J,Z="replace"){let X=new w$;try{let Y=await X.loadFromPath($,J,{arrayStrategy:Z,useCache:!1,trackPerformance:!1});return Y?Y.config:null}catch{return null}}function L1($,J,Z=!1){let X=new F$,Y=$.toUpperCase().replace(/[^A-Z0-9]/g,"_");function z(Q,G=[]){let q={...Q};for(let[U,W]of Object.entries(Q)){let K=[...G,U],H=[`${Y}_${K.join("_").toUpperCase()}`,`${Y}_${K.map((_)=>_.toUpperCase()).join("")}`,`${Y}_${K.map((_)=>_.replace(/([A-Z])/g,"_$1").toUpperCase()).join("")}`],V,A;for(let _ of H)if(V=Z1.env[_],V!==void 0){A=_;break}if(V!==void 0&&A)if(typeof W==="boolean")q[U]=["true","1","yes"].includes(V.toLowerCase());else if(typeof W==="number"){let _=Number(V);if(!Number.isNaN(_))q[U]=_}else if(Array.isArray(W))try{q[U]=JSON.parse(V)}catch{q[U]=V.split(",").map((_)=>_.trim())}else q[U]=V;else if(W&&typeof W==="object"&&!Array.isArray(W))q[U]=z(W,K)}return q}return z(J)}function sz($){let J=L0(Z1.cwd(),$.configDir),Z=L0(Z1.cwd(),$.generatedDir),X=L0(Z,"config-types.ts");if(!q7(B9(X)))eY(B9(X),{recursive:!0,mode:511});let Y=q7(J)?$z(J).map((Q)=>Q.replace(/\.(ts|js|mjs|cjs|mts|cts|json)$/,"")).sort():[],z=`// Generated by bunfig v${DQ}
32
32
  export type ConfigNames = ${Y.length?`'${Y.join("' | '")}'`:"string"}
33
- `;eY(X,z,{mode:438})}function az($){let J=null,Z=null,X=()=>{if(!Z)Z=UZ($).then((z)=>{return J=z,z},(z)=>{let Q="defaultConfig"in $?$.defaultConfig:{};if(J=Q,"verbose"in $&&$.verbose)b0.warn("Config loading failed, using defaults:",[z instanceof Error?z:Error(String(z))]);return Q});return Z},Y="defaultConfig"in $?$.defaultConfig:{};return J=Y,X(),new Proxy({},{get(z,Q){if(J)return J[Q];let G=Y[Q];return X(),G},has(z,Q){return Q in(J||Y)},ownKeys(){return Object.keys(J||Y)},getOwnPropertyDescriptor(z,Q){return Object.getOwnPropertyDescriptor(J||Y,Q)},set(z,Q,G){if(!J)J={...Y};return J[Q]=G,!0}})}function sz($){let J=v9(Ez.cwd(),$?.configDir||"./config");function Z(){if(!Nz(J))return[];let Y=new Set([".ts",".js",".mjs",".cjs",".mts",".cts",".json"]),z=[".ts",".mts",".cts",".js",".mjs",".cjs",".json"],Q=Tz(J).filter((q)=>Y.has(t8(q))).map((q)=>({base:q.replace(/\.(?:ts|js|mjs|cjs|mts|cts|json)$/i,""),file:q})),G=new Map;for(let{base:q,file:U}of Q){let W=t8(U).toLowerCase(),K=G.get(q);if(!K){G.set(q,U);continue}let H=t8(K).toLowerCase();if(z.indexOf(W)<z.indexOf(H))G.set(q,U)}return Array.from(G.entries()).map(([q,U])=>({base:q,file:U})).sort((q,U)=>q.base.localeCompare(U.base))}function X(){let Y=Z(),z=Y.map((U)=>U.base),Q=z.length?z.map((U)=>`'${U}'`).join(" | "):"string",G=Y.length?`{
34
- ${Y.map((U)=>{let W=v9(J,U.file).replace(/\\/g,"/");return` '${U.base}': typeof import('${W}').default`}).join(`,
33
+ `;Zz(X,z,{mode:438})}function nz($){let J=null,Z=null,X=()=>{if(!Z)Z=WZ($).then((z)=>{return J=z,z},(z)=>{let Q="defaultConfig"in $?$.defaultConfig:{};if(J=Q,"verbose"in $&&$.verbose)k0.warn("Config loading failed, using defaults:",[z instanceof Error?z:Error(String(z))]);return Q});return Z},Y="defaultConfig"in $?$.defaultConfig:{};return J=Y,X(),new Proxy({},{get(z,Q){if(J)return J[Q];let G=Y[Q];return X(),G},has(z,Q){return Q in(J||Y)},ownKeys(){return Object.keys(J||Y)},getOwnPropertyDescriptor(z,Q){return Object.getOwnPropertyDescriptor(J||Y,Q)},set(z,Q,G){if(!J)J={...Y};return J[Q]=G,!0}})}function iz($){let J=y9(Rz.cwd(),$?.configDir||"./config");function Z(){if(!Ez(J))return[];let Y=new Set([".ts",".js",".mjs",".cjs",".mts",".cts",".json"]),z=[".ts",".mts",".cts",".js",".mjs",".cjs",".json"],Q=Dz(J).filter((q)=>Y.has(e8(q))).map((q)=>({base:q.replace(/\.(?:ts|js|mjs|cjs|mts|cts|json)$/i,""),file:q})),G=new Map;for(let{base:q,file:U}of Q){let W=e8(U).toLowerCase(),K=G.get(q);if(!K){G.set(q,U);continue}let H=e8(K).toLowerCase();if(z.indexOf(W)<z.indexOf(H))G.set(q,U)}return Array.from(G.entries()).map(([q,U])=>({base:q,file:U})).sort((q,U)=>q.base.localeCompare(U.base))}function X(){let Y=Z(),z=Y.map((U)=>U.base),Q=z.length?z.map((U)=>`'${U}'`).join(" | "):"string",G=Y.length?`{
34
+ ${Y.map((U)=>{let W=y9(J,U.file).replace(/\\/g,"/");return` '${U.base}': typeof import('${W}').default`}).join(`,
35
35
  `)}
36
36
  }`:"Record<string, any>";return`export type ConfigNames = ${Q}
37
37
  export type ConfigByName = ${G}
38
38
  export type Config<N extends ConfigNames> = N extends keyof ConfigByName ? ConfigByName[N] : unknown
39
39
  export type ConfigOf = Config
40
- `}return{name:"bunfig-plugin",setup(Y){Y.onResolve({filter:/^virtual:bunfig-types$/},(z)=>{return{path:z.path,namespace:"bunfig-virtual"}}),Y.onLoad({filter:/^virtual:bunfig-types$/,namespace:"bunfig-virtual"},()=>{return{contents:X(),loader:"ts"}})}}}var WZ,_1,I1,KZ,nz,iz,b9,$$,W7,T0,G0,tz,k9,ez,f9,$Q,ZQ,e8,JQ,g9,x9,$7,XQ,YQ,zQ,QQ,Z$,HZ,GQ,E0,qQ,UQ,p9,J$,K7,w0,Y0,WQ,h9,KQ,u9,HQ,VQ,Z7,AQ,m9,d9,_Q,J7,FQ,wQ,BQ,MQ,jQ,X$,VZ,NQ,TQ="0.15.6",C0,K$,P1,H7,V7,H$,A7,_7,C1,F7,w7,n0,AZ,_Z,b0,l0,FZ,wZ,EQ=nY(async()=>{WZ=import.meta.require,_1=new B7,I1=new M7,KZ={createKey:Dz,isEquivalent:Rz,estimateMemoryUsage:Oz},nz=Q$(q7.cwd(),"config"),iz=Q$(q7.cwd(),"src/generated"),b9=z$.env.CLARITY_LOG_DIR||Jz(Cz(),"logs"),$$={level:"info",defaultName:"clarity",timestamp:!0,colors:!0,format:"text",maxLogSize:10485760,logDatePattern:"YYYY-MM-DD",logDirectory:b9,rotation:{frequency:"daily",maxSize:10485760,maxFiles:5,compress:!1,rotateHour:0,rotateMinute:0,rotateDayOfWeek:0,rotateDayOfMonth:1,encrypt:!1},verbose:!1},W7=await Iz(),T0={red:($)=>`\x1B[31m${$}\x1B[0m`,green:($)=>`\x1B[32m${$}\x1B[0m`,yellow:($)=>`\x1B[33m${$}\x1B[0m`,blue:($)=>`\x1B[34m${$}\x1B[0m`,magenta:($)=>`\x1B[35m${$}\x1B[0m`,cyan:($)=>`\x1B[36m${$}\x1B[0m`,white:($)=>`\x1B[37m${$}\x1B[0m`,gray:($)=>`\x1B[90m${$}\x1B[0m`,bgRed:($)=>`\x1B[41m${$}\x1B[0m`,bgYellow:($)=>`\x1B[43m${$}\x1B[0m`,bold:($)=>`\x1B[1m${$}\x1B[0m`,dim:($)=>`\x1B[2m${$}\x1B[0m`,italic:($)=>`\x1B[3m${$}\x1B[0m`,underline:($)=>`\x1B[4m${$}\x1B[0m`,reset:"\x1B[0m"},G0=T0,tz=T0.red,k9=T0.green,ez=T0.yellow,f9=T0.blue,$Q=T0.magenta,ZQ=T0.cyan,e8=T0.white,JQ=T0.gray,g9=T0.bgRed,x9=T0.bgYellow,$7=T0.bold,XQ=T0.dim,YQ=T0.italic,zQ=T0.underline,QQ=T0.reset,Z$={activationLevel:"error",bufferSize:50,flushOnDeactivation:!0,stopBuffering:!1},HZ={debug:"\uD83D\uDD0D",info:f9("\u2139"),success:k9("\u2713"),warning:x9(e8($7(" WARN "))),error:g9(e8($7(" ERROR ")))},GQ=new q$("stacks"),E0=new q$("bunfig",{showTags:!0}),qQ=R0(L1.cwd(),"config"),UQ=R0(L1.cwd(),"src/generated"),p9=Y$.env.CLARITY_LOG_DIR||$z(bz(),"logs"),J$={level:"info",defaultName:"clarity",timestamp:!0,colors:!0,format:"text",maxLogSize:10485760,logDatePattern:"YYYY-MM-DD",logDirectory:p9,rotation:{frequency:"daily",maxSize:10485760,maxFiles:5,compress:!1,rotateHour:0,rotateMinute:0,rotateDayOfWeek:0,rotateDayOfMonth:1,encrypt:!1},verbose:!1,writeToFile:!1},K7=await kz(),w0={red:($)=>`\x1B[31m${$}\x1B[0m`,green:($)=>`\x1B[32m${$}\x1B[0m`,yellow:($)=>`\x1B[33m${$}\x1B[0m`,blue:($)=>`\x1B[34m${$}\x1B[0m`,magenta:($)=>`\x1B[35m${$}\x1B[0m`,cyan:($)=>`\x1B[36m${$}\x1B[0m`,white:($)=>`\x1B[37m${$}\x1B[0m`,gray:($)=>`\x1B[90m${$}\x1B[0m`,bgRed:($)=>`\x1B[41m${$}\x1B[0m`,bgYellow:($)=>`\x1B[43m${$}\x1B[0m`,bgGray:($)=>`\x1B[100m${$}\x1B[0m`,bold:($)=>`\x1B[1m${$}\x1B[0m`,dim:($)=>`\x1B[2m${$}\x1B[0m`,italic:($)=>`\x1B[3m${$}\x1B[0m`,underline:($)=>`\x1B[4m${$}\x1B[0m`,strikethrough:($)=>`\x1B[9m${$}\x1B[0m`,reset:"\x1B[0m"},Y0=w0,WQ=w0.red,h9=w0.green,KQ=w0.yellow,u9=w0.blue,HQ=w0.magenta,VQ=w0.cyan,Z7=w0.white,AQ=w0.gray,m9=w0.bgRed,d9=w0.bgYellow,_Q=w0.bgGray,J7=w0.bold,FQ=w0.dim,wQ=w0.italic,BQ=w0.underline,MQ=w0.strikethrough,jQ=w0.reset,X$={activationLevel:"error",bufferSize:50,flushOnDeactivation:!0,stopBuffering:!1},VZ={debug:"\uD83D\uDD0D",info:u9("\u2139"),success:h9("\u2713"),warning:d9(Z7(J7(" WARN "))),error:m9(Z7(J7(" ERROR ")))},NQ=new W$("stacks"),C0=class extends Error{timestamp;context;constructor(J,Z={}){super(J);if(this.name=this.constructor.name,this.timestamp=new Date,this.context=Z,Error.captureStackTrace)Error.captureStackTrace(this,this.constructor)}toJSON(){return{name:this.name,code:this.code,message:this.message,timestamp:this.timestamp.toISOString(),context:this.context,stack:this.stack}}toString(){let J=Object.keys(this.context).length>0?` (${Object.entries(this.context).map(([Z,X])=>`${Z}: ${X}`).join(", ")})`:"";return`${this.name} [${this.code}]: ${this.message}${J}`}},K$=class extends C0{code="CONFIG_NOT_FOUND";constructor(J,Z,X){let Y=X?` or alias "${X}"`:"";super(`Configuration "${J}"${Y} not found`,{configName:J,alias:X,searchPaths:Z,searchPathCount:Z.length})}},P1=class extends C0{code="CONFIG_LOAD_ERROR";constructor(J,Z,X){super(`Failed to load configuration from "${J}": ${Z.message}`,{configPath:J,configName:X,originalError:Z.name,originalMessage:Z.message});this.cause=Z}},H7=class extends C0{code="CONFIG_VALIDATION_ERROR";constructor(J,Z,X){super(`Configuration validation failed for "${J}"`,{configPath:J,configName:X,validationErrors:Z,errorCount:Z.length})}},V7=class extends C0{code="CONFIG_MERGE_ERROR";constructor(J,Z,X,Y){super(`Failed to merge configuration from "${J}" with "${Z}": ${X.message}`,{sourcePath:J,targetPath:Z,configName:Y,originalError:X.name,originalMessage:X.message});this.cause=X}},H$=class extends C0{code="ENV_VAR_ERROR";constructor(J,Z,X,Y){super(`Failed to parse environment variable "${J}" with value "${Z}" as ${X}`,{envKey:J,envValue:Z,expectedType:X,configName:Y})}},A7=class extends C0{code="FILE_SYSTEM_ERROR";constructor(J,Z,X){super(`File system ${J} failed for "${Z}": ${X.message}`,{operation:J,path:Z,originalError:X.name,originalMessage:X.message});this.cause=X}},_7=class extends C0{code="TYPE_GENERATION_ERROR";constructor(J,Z,X){super(`Failed to generate types from "${J}" to "${Z}": ${X.message}`,{configDir:J,outputPath:Z,originalError:X.name,originalMessage:X.message});this.cause=X}},C1=class extends C0{code="SCHEMA_VALIDATION_ERROR";constructor(J,Z,X){super(`Schema validation failed${X?` for config "${X}"`:""}`,{schemaPath:J,configName:X,validationErrors:Z,errorCount:Z.length})}},F7=class extends C0{code="BROWSER_CONFIG_ERROR";constructor(J,Z,X,Y){super(`Failed to fetch configuration from "${J}": ${Z} ${X}`,{endpoint:J,status:Z,statusText:X,configName:Y})}},w7=class extends C0{code="PLUGIN_ERROR";constructor(J,Z,X){super(`Plugin "${J}" failed during ${Z}: ${X.message}`,{pluginName:J,operation:Z,originalError:X.name,originalMessage:X.message});this.cause=X}},n0={configNotFound($,J,Z){return new K$($,J,Z)},configLoad($,J,Z){return new P1($,J,Z)},configValidation($,J,Z){return new H7($,J,Z)},configMerge($,J,Z,X){return new V7($,J,Z,X)},envVar($,J,Z,X){return new H$($,J,Z,X)},fileSystem($,J,Z){return new A7($,J,Z)},typeGeneration($,J,Z){return new _7($,J,Z)},schemaValidation($,J,Z){return new C1($,J,Z)},browserConfig($,J,Z,X){return new F7($,J,Z,X)},plugin($,J,Z){return new w7($,J,Z)}},AZ={replace:"replace",concat:"concat",smart:"smart"},_Z=/^https?:\/\//,b0=new W$("bunfig",{showTags:!0}),l0=new D7,FZ=O0($1.cwd(),"config"),wZ=O0($1.cwd(),"src/generated")});function OQ($,J={}){let Z=V$.cwd();while(Z.includes("storage"))Z=o9(Z,"..");let X=o9(Z,$||"");if(J?.relative)return RQ(V$.cwd(),X);return X}var LQ=V$.env.CLARITY_LOG_DIR||DQ(OQ(),"logs"),BZ={level:"info",defaultName:"clarity",timestamp:!0,colors:!0,format:"text",maxLogSize:10485760,logDatePattern:"YYYY-MM-DD",logDirectory:LQ,rotation:{frequency:"daily",maxSize:10485760,maxFiles:5,compress:!1,rotateHour:0,rotateMinute:0,rotateDayOfWeek:0,rotateDayOfMonth:1,encrypt:!1},verbose:!1,writeToFile:!1},A$={...BZ},rq=(async()=>{try{let{loadConfig:$}=await EQ().then(()=>e9),J=await $({name:"clarity",alias:"logging",defaultConfig:BZ,cwd:V$.cwd()});if(J)Object.assign(A$,J)}catch{}return A$})();function B0(){if(r0.env.NODE_ENV==="test"||r0.env.BUN_ENV==="test")return!1;return typeof window<"u"}async function gQ(){if(r0.env.NODE_ENV==="test"||r0.env.BUN_ENV==="test")return!0;if(typeof navigator<"u"&&navigator.product==="ReactNative")return!0;if(typeof r0<"u"){let $=r0.type;if($==="renderer"||$==="worker")return!1;return!!(r0.versions&&(r0.versions.node||r0.versions.bun))}return!1}class MZ{async format($){let J=await gQ(),Z=await this.getMetadata(J);return JSON.stringify({timestamp:$.timestamp.toISOString(),level:$.level,name:$.name,message:$.message,metadata:Z})}async getMetadata($){if($){let{hostname:J}=await import("os");return{pid:A1.pid,hostname:J(),environment:A1.env.NODE_ENV||"development",platform:A1.platform,version:A1.version}}return{userAgent:navigator.userAgent,hostname:window.location.hostname||"browser",environment:A1.env.NODE_ENV||A1.env.BUN_ENV||"development",viewport:{width:window.innerWidth,height:window.innerHeight},language:navigator.language}}}var M0={red:($)=>`\x1B[31m${$}\x1B[0m`,green:($)=>`\x1B[32m${$}\x1B[0m`,yellow:($)=>`\x1B[33m${$}\x1B[0m`,blue:($)=>`\x1B[34m${$}\x1B[0m`,magenta:($)=>`\x1B[35m${$}\x1B[0m`,cyan:($)=>`\x1B[36m${$}\x1B[0m`,white:($)=>`\x1B[37m${$}\x1B[0m`,gray:($)=>`\x1B[90m${$}\x1B[0m`,bgRed:($)=>`\x1B[41m${$}\x1B[0m`,bgYellow:($)=>`\x1B[43m${$}\x1B[0m`,bgGray:($)=>`\x1B[100m${$}\x1B[0m`,bold:($)=>`\x1B[1m${$}\x1B[0m`,dim:($)=>`\x1B[2m${$}\x1B[0m`,italic:($)=>`\x1B[3m${$}\x1B[0m`,underline:($)=>`\x1B[4m${$}\x1B[0m`,strikethrough:($)=>`\x1B[9m${$}\x1B[0m`,reset:"\x1B[0m"},z0=M0,XU=M0.red,xQ=M0.green,YU=M0.yellow,pQ=M0.blue,zU=M0.magenta,QU=M0.cyan,i9=M0.white,GU=M0.gray,hQ=M0.bgRed,uQ=M0.bgYellow,qU=M0.bgGray,t9=M0.bold,UU=M0.dim,WU=M0.italic,KU=M0.underline,HU=M0.strikethrough,VU=M0.reset,Q7={activationLevel:"error",bufferSize:50,flushOnDeactivation:!0,stopBuffering:!1},mQ={debug:"\uD83D\uDD0D",info:pQ("\u2139"),success:xQ("\u2713"),warning:uQ(i9(t9(" WARN "))),error:hQ(i9(t9(" ERROR ")))};class Z1{name;fileLocks=new Map;currentKeyId=null;keys=new Map;fingersCrossedConfig;fingersCrossedActive=!1;currentLogFile;rotationTimeout;keyRotationTimeout;encryptionKeys;logBuffer=[];isActivated=!1;pendingOperations=[];enabled;fancy;tagFormat;timestampPosition;environment;config;options;formatter;timers=new Set;subLoggers=new Set;fingersCrossedBuffer=[];ANSI_PATTERN=/\u001B\[.*?m/g;activeProgressBar=null;constructor($,J={}){this.name=$,this.config={...A$},this.options=this.normalizeOptions(J),this.formatter=this.options.formatter||new MZ,this.enabled=J.enabled??!0,this.fancy=J.fancy??!0,this.tagFormat=J.tagFormat??{prefix:"[",suffix:"]"},this.timestampPosition=J.timestampPosition??"right",this.environment=J.environment??X0.env.APP_ENV??"local",this.fingersCrossedConfig=this.initializeFingersCrossedConfig(J);let Z={...J},X=J.timestamp!==void 0;if(X)delete Z.timestamp;if(this.config={...this.config,...Z,timestamp:X||this.config.timestamp,level:this.options.level??"info"},this.currentLogFile=this.generateLogFilename(),this.encryptionKeys=new Map,this.validateEncryptionConfig()){this.setupRotation();let Y=this.generateKeyId(),z=this.generateKey();this.currentKeyId=Y,this.keys.set(Y,z),this.encryptionKeys.set(Y,{key:z,createdAt:new Date}),this.setupKeyRotation()}}shouldActivateFingersCrossed($){if(!this.fingersCrossedConfig)return!1;let J={debug:0,info:1,success:2,warning:3,error:4},Z=this.fingersCrossedConfig.activationLevel??"error";return J[$]>=J[Z]}initializeFingersCrossedConfig($){if(!$.fingersCrossedEnabled&&$.fingersCrossed)return{...Q7,...$.fingersCrossed};if(!$.fingersCrossedEnabled)return null;if(!$.fingersCrossed)return{...Q7};return{...Q7,...$.fingersCrossed}}normalizeOptions($){let J={format:"json",level:"info",logDirectory:A$.logDirectory,rotation:void 0,timestamp:void 0,fingersCrossed:{},enabled:!0,showTags:!1,showIcons:!0,formatter:void 0},Z={...J,...Object.fromEntries(Object.entries($).filter(([,X])=>X!==void 0))};if(!Z.level||!["debug","info","success","warning","error"].includes(Z.level))Z.level=J.level;return Z}shouldWriteToFile(){return!B0()&&this.config.writeToFile===!0}async writeToFile($){let Z=(async()=>{let Y,z=0,Q=3,G=1000;while(z<Q)try{try{try{await vQ(this.config.logDirectory,a9.F_OK|a9.W_OK)}catch(U){if(U instanceof Error&&"code"in U)if(U.code==="ENOENT")await yQ(this.config.logDirectory,{recursive:!0,mode:493});else if(U.code==="EACCES")throw Error(`No write permission for log directory: ${this.config.logDirectory}`);else throw U;else throw U}}catch(U){throw console.error("Debug: [writeToFile] Failed to create log directory:",U),U}let q=this.validateEncryptionConfig()?(await this.encrypt($)).encrypted:d0.from($);try{if(!n1(this.currentLogFile))await z7(this.currentLogFile,"",{mode:420});if(Y=l9(this.currentLogFile,"a",420),SQ(Y,q,{flag:"a"}),r9(Y),Y!==void 0)Y7(Y),Y=void 0;if((await H1(this.currentLogFile)).size===0){if(await z7(this.currentLogFile,q,{flag:"w",mode:420}),(await H1(this.currentLogFile)).size===0)throw Error("File exists but is empty after retry write")}return}catch(U){let W=U;if(W.code&&["ENETDOWN","ENETUNREACH","ENOTFOUND","ETIMEDOUT"].includes(W.code)){if(z<Q-1){let K=typeof W.message==="string"?W.message:"Unknown error";console.error(`Network error during write attempt ${z+1}/${Q}:`,K);let H=G*2**z;await new Promise((V)=>setTimeout(V,H)),z++;continue}}if(W?.code&&["ENOSPC","EDQUOT"].includes(W.code))throw Error(`Disk quota exceeded or no space left on device: ${W.message}`);throw console.error("Debug: [writeToFile] Error writing to file:",W),W}finally{if(Y!==void 0)try{Y7(Y)}catch(U){console.error("Debug: [writeToFile] Error closing file descriptor:",U)}}}catch(q){if(z===Q-1){let W=q,K=typeof W.message==="string"?W.message:"Unknown error";throw console.error("Debug: [writeToFile] Max retries reached. Final error:",K),q}z++;let U=G*2**(z-1);await new Promise((W)=>setTimeout(W,U))}})();this.pendingOperations.push(Z);let X=this.pendingOperations.length-1;try{await Z}catch(Y){throw console.error("Debug: [writeToFile] Error in operation:",Y),Y}finally{this.pendingOperations.splice(X,1)}}generateLogFilename(){if(this.name.includes("stream-throughput")||this.name.includes("decompress-perf-test")||this.name.includes("decompression-latency")||this.name.includes("concurrent-read-test")||this.name.includes("clock-change-test"))return V1(this.config.logDirectory,`${this.name}.log`);if(this.name.includes("pending-test")||this.name.includes("temp-file-test")||this.name==="crash-test"||this.name==="corrupt-test"||this.name.includes("rotation-load-test")||this.name==="sigterm-test"||this.name==="sigint-test"||this.name==="failed-rotation-test"||this.name==="integration-test")return V1(this.config.logDirectory,`${this.name}.log`);let $=new Date().toISOString().split("T")[0];return V1(this.config.logDirectory,`${this.name}-${$}.log`)}setupRotation(){if(B0())return;if(!this.shouldWriteToFile())return;if(typeof this.config.rotation==="boolean")return;let $=this.config.rotation,J;switch($.frequency){case"daily":J=86400000;break;case"weekly":J=604800000;break;case"monthly":J=2592000000;break;default:return}this.rotationTimeout=setInterval(()=>{this.rotateLog()},J)}setupKeyRotation(){if(!this.validateEncryptionConfig()){console.error("Invalid encryption configuration detected during key rotation setup");return}let J=this.config.rotation.keyRotation;if(!J?.enabled)return;let Z=typeof J.interval==="number"?J.interval:60,X=Math.max(Z,60)*1000;this.keyRotationTimeout=setInterval(()=>{this.rotateKeys().catch((Y)=>{console.error("Error rotating keys:",Y)})},X)}async rotateKeys(){if(!this.validateEncryptionConfig()){console.error("Invalid encryption configuration detected during key rotation");return}let J=this.config.rotation.keyRotation,Z=this.generateKeyId(),X=this.generateKey();this.currentKeyId=Z,this.keys.set(Z,X),this.encryptionKeys.set(Z,{key:X,createdAt:new Date});let Y=Array.from(this.encryptionKeys.entries()).sort(([,G],[,q])=>q.createdAt.getTime()-G.createdAt.getTime()),z=typeof J.maxKeys==="number"?J.maxKeys:1,Q=Math.max(1,z);if(Y.length>Q)for(let[G]of Y.slice(Q))this.encryptionKeys.delete(G),this.keys.delete(G)}generateKeyId(){return X7(16).toString("hex")}generateKey(){return X7(32)}getCurrentKey(){if(!this.currentKeyId)throw Error("Encryption is not properly initialized. Make sure encryption is enabled in the configuration.");let $=this.keys.get(this.currentKeyId);if(!$)throw Error(`No key found for ID ${this.currentKeyId}. The encryption key may have been rotated or removed.`);return{key:$,id:this.currentKeyId}}encrypt($){let{key:J}=this.getCurrentKey(),Z=X7(16),X=PQ("aes-256-gcm",J,Z),Y=d0.isBuffer($)?$:d0.from($,"utf8"),z=X.update(Y),Q=X.final(),G=z.length+Q.length,q=X.getAuthTag(),U=d0.allocUnsafe(16+G+16);return Z.copy(U,0),z.copy(U,16),Q.copy(U,16+z.length),q.copy(U,16+G),{encrypted:U,iv:Z}}async compressData($){return new Promise((J,Z)=>{let X=n9(),Y=[];X.on("data",(z)=>Y.push(z)),X.on("end",()=>J(d0.from(d0.concat(Y)))),X.on("error",Z),X.write($),X.end()})}getEncryptionOptions(){if(!this.config.rotation||typeof this.config.rotation==="boolean"||!this.config.rotation.encrypt)return{};let $={algorithm:"aes-256-cbc",compress:!1};if(typeof this.config.rotation.encrypt==="object"){let J=this.config.rotation.encrypt;return{...$,...J}}return $}async rotateLog(){if(B0())return;if(!this.shouldWriteToFile())return;let $=await H1(this.currentLogFile).catch(()=>null);if(!$)return;let J=this.config.rotation;if(typeof J==="boolean")return;if(J.maxSize&&$.size>=J.maxSize){let Z=this.currentLogFile,X=this.generateLogFilename();if(this.name.includes("rotation-load-test")||this.name==="failed-rotation-test"){let Y=await i1(this.config.logDirectory),z=Y.filter((q)=>q.startsWith(this.name)&&/\.log\.\d+$/.test(q)).sort((q,U)=>{let W=Number.parseInt(q.match(/\.log\.(\d+)$/)?.[1]||"0");return Number.parseInt(U.match(/\.log\.(\d+)$/)?.[1]||"0")-W}),Q=z.length>0?Number.parseInt(z[0].match(/\.log\.(\d+)$/)?.[1]||"0")+1:1,G=`${Z}.${Q}`;if(await H1(Z).catch(()=>null))try{if(await s9(Z,G),J.compress)try{let q=`${G}.gz`;await this.compressLogFile(G,q),await t1(G)}catch(q){console.error("Error compressing rotated file:",q)}if(z.length===0&&!Y.some((q)=>q.endsWith(".log.1")))try{let q=`${Z}.1`;await z7(q,"")}catch(q){console.error("Error creating backup file:",q)}}catch(q){console.error(`Error during rotation: ${q instanceof Error?q.message:String(q)}`)}}else{let Y=new Date().toISOString().replace(/[:.]/g,"-"),z=Z.replace(/\.log$/,`-${Y}.log`);if(await H1(Z).catch(()=>null))await s9(Z,z)}if(this.currentLogFile=X,J.maxFiles){let z=(await i1(this.config.logDirectory)).filter((Q)=>Q.startsWith(this.name)).sort((Q,G)=>G.localeCompare(Q));for(let Q of z.slice(J.maxFiles))await t1(V1(this.config.logDirectory,Q))}}}async compressLogFile($,J){let Z=c9($),X=IQ(J),Y=n9();await fQ(Z,Y,X)}async handleFingersCrossedBuffer($,J){if(!this.fingersCrossedConfig)return;if(this.shouldActivateFingersCrossed($)&&!this.isActivated){this.isActivated=!0;for(let Z of this.logBuffer){let X=await this.formatter.format(Z);if(this.shouldWriteToFile())await this.writeToFile(X);console.log(X)}if(this.fingersCrossedConfig.stopBuffering)this.logBuffer=[]}if(this.isActivated){if(this.shouldWriteToFile())await this.writeToFile(J);console.log(J)}}shouldLog($){if(!this.enabled)return!1;let J={debug:0,info:1,success:2,warning:3,error:4};return J[$]>=J[this.config.level]}async flushPendingWrites(){if(await Promise.all(this.pendingOperations.map(($)=>{if($ instanceof Promise)return $.catch((J)=>{console.error("Error in pending write operation:",J)});return Promise.resolve()})),n1(this.currentLogFile))try{let $=l9(this.currentLogFile,"r+");r9($),Y7($)}catch($){console.error(`Error flushing file: ${$}`)}}async destroy(){if(this.rotationTimeout)clearInterval(this.rotationTimeout);if(this.keyRotationTimeout)clearInterval(this.keyRotationTimeout);this.timers.clear();for(let $ of this.pendingOperations)if(typeof $.cancel==="function")$.cancel();return(async()=>{if(this.pendingOperations.length>0)try{await Promise.allSettled(this.pendingOperations)}catch($){console.error("Error waiting for pending operations:",$)}if(!B0()&&this.config.rotation&&typeof this.config.rotation!=="boolean"&&this.config.rotation.compress)try{let J=(await i1(this.config.logDirectory)).filter((Z)=>(Z.includes("temp")||Z.includes(".tmp"))&&Z.includes(this.name));for(let Z of J)try{await t1(V1(this.config.logDirectory,Z))}catch(X){console.error(`Failed to delete temp file ${Z}:`,X)}}catch($){console.error("Error cleaning up temporary files:",$)}})()}getCurrentLogFilePath(){return this.currentLogFile}formatTag($){if(!$)return"";return`${this.tagFormat.prefix}${$}${this.tagFormat.suffix}`}formatFileTimestamp($){return`[${$.toISOString()}]`}formatConsoleTimestamp($){return this.shouldStyleConsole()?z0.gray($.toLocaleTimeString()):$.toLocaleTimeString()}shouldStyleConsole(){if(!this.fancy||B0())return!1;let $=typeof X0.env.NO_COLOR<"u",J=X0.env.FORCE_COLOR==="0";if($||J)return!1;return!!(typeof X0.stderr<"u"&&X0.stderr.isTTY||typeof X0.stdout<"u"&&X0.stdout.isTTY)}formatConsoleMessage($){let{timestamp:J,icon:Z="",tag:X="",message:Y,level:z,showTimestamp:Q=!0}=$,G=(V)=>V.replace(this.ANSI_PATTERN,"");if(!this.fancy){let V=[];if(Q)V.push(J);if(z==="warning")V.push("WARN");else if(z==="error")V.push("ERROR");else if(Z)V.push(Z.replace(/[^\p{L}\p{N}\p{P}\p{Z}]/gu,""));if(X)V.push(X.replace(/[[\]]/g,""));return V.push(Y),V.join(" ")}let q=X0.stdout.columns||120,U="";if(z==="warning"||z==="error")U=`${Z} ${Y}`;else if(z==="info"||z==="success")U=`${Z} ${X} ${Y}`;else U=`${Z} ${X} ${z0.cyan(Y)}`;if(!Q)return U.trim();let W=G(U).trim().length,K=G(J).length,H=Math.max(1,q-2-W-K);return`${U.trim()}${" ".repeat(H)}${J}`}formatMessage($,J){if(J.length===1&&Array.isArray(J[0]))return $.replace(/\{(\d+)\}/g,(z,Q)=>{let G=Number.parseInt(Q,10);return G<J[0].length?String(J[0][G]):z});let Z=/%([sdijfo%])/g,X=0,Y=$.replace(Z,(z,Q)=>{if(Q==="%")return"%";if(X>=J.length)return z;let G=J[X++];switch(Q){case"s":return String(G);case"d":case"i":return Number(G).toString();case"j":case"o":return JSON.stringify(G,null,2);default:return z}});if(X<J.length)Y+=` ${J.slice(X).map((z)=>typeof z==="object"?JSON.stringify(z,null,2):String(z)).join(" ")}`;return Y}formatMarkdown($){if(!$)return $;let J=$;return J=J.replace(/\[([^\]]+)\]\(([^)]+)\)/g,(Z,X,Y)=>{let z=z0.underline(z0.blue(X)),Q=this.toAbsoluteFilePath(Y);if(Q&&this.shouldStyleConsole()&&this.supportsHyperlinks()){let G=`file://${encodeURI(Q)}`,q="\x1B]8;;",U="\x1B\\";return`\x1B]8;;${G}\x1B\\${z}\x1B]8;;\x1B\\`}if(this.shouldStyleConsole()&&this.supportsHyperlinks())return`\x1B]8;;${Y}\x1B\\${z}\x1B]8;;\x1B\\`;return z}),J=J.replace(/`([^`]+)`/g,(Z,X)=>z0.bgGray(X)),J=J.replace(/\*\*([^*]+)\*\*/g,(Z,X)=>z0.bold(X)),J=J.replace(/(?<!\*)\*([^*]+)\*(?!\*)/g,(Z,X)=>z0.italic(X)),J=J.replace(/(?<!_)_([^_]+)_(?!_)/g,(Z,X)=>z0.italic(X)),J=J.replace(/~([^~]+)~/g,(Z,X)=>z0.strikethrough(X)),J}supportsHyperlinks(){if(B0())return!1;let $=X0.env;if(!$)return!1;if($.TERM_PROGRAM==="iTerm.app"||$.TERM_PROGRAM==="vscode"||$.TERM_PROGRAM==="WezTerm")return!0;if($.WT_SESSION)return!0;if($.TERM==="xterm-kitty")return!0;let J=$.VTE_VERSION?Number.parseInt($.VTE_VERSION,10):0;if(!Number.isNaN(J)&&J>=5000)return!0;return!1}toAbsoluteFilePath($){try{let J=$;if(J.startsWith("file://"))J=J.replace(/^file:\/\//,"");if(J.startsWith("~")){let Z=X0.env.HOME||"";if(Z)J=J.replace(/^~(?=$|\/)/,Z)}if(bQ(J)||J.startsWith("./")||J.startsWith("../"))J=kQ(J);else return null;return n1(J)?J:null}catch{return null}}buildOutputTexts($){let J=this.shouldStyleConsole()?this.formatMarkdown($):$,Z=$.replace(this.ANSI_PATTERN,"");return{consoleText:J,fileText:Z}}async log($,J,...Z){if(!this.shouldLog($))return;let X=new Date,Y=this.formatConsoleTimestamp(X),z=this.formatFileTimestamp(X),Q,G;if(J instanceof Error)Q=J.message,G=J.stack;else Q=this.formatMessage(J,Z);let{consoleText:q,fileText:U}=this.buildOutputTexts(Q);if(this.shouldStyleConsole()){let K=this.options.showIcons===!1?"":mQ[$],H=this.options.showTags!==!1&&this.name?z0.gray(this.formatTag(this.name)):"",V;switch($){case"debug":V=this.formatConsoleMessage({timestamp:Y,icon:K,tag:H,message:z0.gray(q),level:$}),console.error(V);break;case"info":V=this.formatConsoleMessage({timestamp:Y,icon:K,tag:H,message:q,level:$}),console.warn(V);break;case"success":V=this.formatConsoleMessage({timestamp:Y,icon:K,tag:H,message:z0.green(q),level:$}),console.error(V);break;case"warning":V=this.formatConsoleMessage({timestamp:Y,icon:K,tag:H,message:q,level:$}),console.warn(V);break;case"error":if(V=this.formatConsoleMessage({timestamp:Y,icon:K,tag:H,message:q,level:$}),console.error(V),G){let A=G.split(`
41
- `);for(let _ of A)if(_.trim()&&!_.includes(Q))console.error(this.formatConsoleMessage({timestamp:Y,message:z0.gray(` ${_}`),level:$,showTimestamp:!1}))}break}}else if(!B0()){if(console.error(`${z} ${this.environment}.${$.toUpperCase()}: ${Q}`),G)console.error(G)}let W=`${z} ${this.environment}.${$.toUpperCase()}: ${U}
40
+ `}return{name:"bunfig-plugin",setup(Y){Y.onResolve({filter:/^virtual:bunfig-types$/},(z)=>{return{path:z.path,namespace:"bunfig-virtual"}}),Y.onLoad({filter:/^virtual:bunfig-types$/,namespace:"bunfig-virtual"},()=>{return{contents:X(),loader:"ts"}})}}}var KZ,F1,S1,HZ,tz,ez,k9,Z$,K7,E0,q0,$Q,f9,ZQ,g9,JQ,XQ,$7,YQ,p9,x9,Z7,zQ,QQ,GQ,qQ,J$,VZ,UQ,D0,WQ,KQ,h9,X$,H7,B0,z0,HQ,u9,VQ,m9,AQ,_Q,J7,FQ,d9,o9,wQ,X7,BQ,MQ,jQ,NQ,TQ,Y$,AZ,EQ,DQ="0.15.6",I0,H$,C1,V7,A7,V$,_7,F7,I1,w7,B7,i0,_Z,FZ,k0,a0,wZ,BZ,RQ=tY(async()=>{KZ=import.meta.require,F1=new M7,S1=new j7,HZ={createKey:Oz,isEquivalent:Lz,estimateMemoryUsage:Pz},tz=G$(U7.cwd(),"config"),ez=G$(U7.cwd(),"src/generated"),k9=Q$.env.CLARITY_LOG_DIR||Yz(Sz(),"logs"),Z$={level:"info",defaultName:"clarity",timestamp:!0,colors:!0,format:"text",maxLogSize:10485760,logDatePattern:"YYYY-MM-DD",logDirectory:k9,rotation:{frequency:"daily",maxSize:10485760,maxFiles:5,compress:!1,rotateHour:0,rotateMinute:0,rotateDayOfWeek:0,rotateDayOfMonth:1,encrypt:!1},verbose:!1},K7=await vz(),E0={red:($)=>`\x1B[31m${$}\x1B[0m`,green:($)=>`\x1B[32m${$}\x1B[0m`,yellow:($)=>`\x1B[33m${$}\x1B[0m`,blue:($)=>`\x1B[34m${$}\x1B[0m`,magenta:($)=>`\x1B[35m${$}\x1B[0m`,cyan:($)=>`\x1B[36m${$}\x1B[0m`,white:($)=>`\x1B[37m${$}\x1B[0m`,gray:($)=>`\x1B[90m${$}\x1B[0m`,bgRed:($)=>`\x1B[41m${$}\x1B[0m`,bgYellow:($)=>`\x1B[43m${$}\x1B[0m`,bold:($)=>`\x1B[1m${$}\x1B[0m`,dim:($)=>`\x1B[2m${$}\x1B[0m`,italic:($)=>`\x1B[3m${$}\x1B[0m`,underline:($)=>`\x1B[4m${$}\x1B[0m`,reset:"\x1B[0m"},q0=E0,$Q=E0.red,f9=E0.green,ZQ=E0.yellow,g9=E0.blue,JQ=E0.magenta,XQ=E0.cyan,$7=E0.white,YQ=E0.gray,p9=E0.bgRed,x9=E0.bgYellow,Z7=E0.bold,zQ=E0.dim,QQ=E0.italic,GQ=E0.underline,qQ=E0.reset,J$={activationLevel:"error",bufferSize:50,flushOnDeactivation:!0,stopBuffering:!1},VZ={debug:"\uD83D\uDD0D",info:g9("\u2139"),success:f9("\u2713"),warning:x9($7(Z7(" WARN "))),error:p9($7(Z7(" ERROR ")))},UQ=new U$("stacks"),D0=new U$("bunfig",{showTags:!0}),WQ=O0(P1.cwd(),"config"),KQ=O0(P1.cwd(),"src/generated"),h9=z$.env.CLARITY_LOG_DIR||Jz(fz(),"logs"),X$={level:"info",defaultName:"clarity",timestamp:!0,colors:!0,format:"text",maxLogSize:10485760,logDatePattern:"YYYY-MM-DD",logDirectory:h9,rotation:{frequency:"daily",maxSize:10485760,maxFiles:5,compress:!1,rotateHour:0,rotateMinute:0,rotateDayOfWeek:0,rotateDayOfMonth:1,encrypt:!1},verbose:!1,writeToFile:!1},H7=await gz(),B0={red:($)=>`\x1B[31m${$}\x1B[0m`,green:($)=>`\x1B[32m${$}\x1B[0m`,yellow:($)=>`\x1B[33m${$}\x1B[0m`,blue:($)=>`\x1B[34m${$}\x1B[0m`,magenta:($)=>`\x1B[35m${$}\x1B[0m`,cyan:($)=>`\x1B[36m${$}\x1B[0m`,white:($)=>`\x1B[37m${$}\x1B[0m`,gray:($)=>`\x1B[90m${$}\x1B[0m`,bgRed:($)=>`\x1B[41m${$}\x1B[0m`,bgYellow:($)=>`\x1B[43m${$}\x1B[0m`,bgGray:($)=>`\x1B[100m${$}\x1B[0m`,bold:($)=>`\x1B[1m${$}\x1B[0m`,dim:($)=>`\x1B[2m${$}\x1B[0m`,italic:($)=>`\x1B[3m${$}\x1B[0m`,underline:($)=>`\x1B[4m${$}\x1B[0m`,strikethrough:($)=>`\x1B[9m${$}\x1B[0m`,reset:"\x1B[0m"},z0=B0,HQ=B0.red,u9=B0.green,VQ=B0.yellow,m9=B0.blue,AQ=B0.magenta,_Q=B0.cyan,J7=B0.white,FQ=B0.gray,d9=B0.bgRed,o9=B0.bgYellow,wQ=B0.bgGray,X7=B0.bold,BQ=B0.dim,MQ=B0.italic,jQ=B0.underline,NQ=B0.strikethrough,TQ=B0.reset,Y$={activationLevel:"error",bufferSize:50,flushOnDeactivation:!0,stopBuffering:!1},AZ={debug:"\uD83D\uDD0D",info:m9("\u2139"),success:u9("\u2713"),warning:o9(J7(X7(" WARN "))),error:d9(J7(X7(" ERROR ")))},EQ=new K$("stacks"),I0=class extends Error{timestamp;context;constructor(J,Z={}){super(J);if(this.name=this.constructor.name,this.timestamp=new Date,this.context=Z,Error.captureStackTrace)Error.captureStackTrace(this,this.constructor)}toJSON(){return{name:this.name,code:this.code,message:this.message,timestamp:this.timestamp.toISOString(),context:this.context,stack:this.stack}}toString(){let J=Object.keys(this.context).length>0?` (${Object.entries(this.context).map(([Z,X])=>`${Z}: ${X}`).join(", ")})`:"";return`${this.name} [${this.code}]: ${this.message}${J}`}},H$=class extends I0{code="CONFIG_NOT_FOUND";constructor(J,Z,X){let Y=X?` or alias "${X}"`:"";super(`Configuration "${J}"${Y} not found`,{configName:J,alias:X,searchPaths:Z,searchPathCount:Z.length})}},C1=class extends I0{code="CONFIG_LOAD_ERROR";constructor(J,Z,X){super(`Failed to load configuration from "${J}": ${Z.message}`,{configPath:J,configName:X,originalError:Z.name,originalMessage:Z.message});this.cause=Z}},V7=class extends I0{code="CONFIG_VALIDATION_ERROR";constructor(J,Z,X){super(`Configuration validation failed for "${J}"`,{configPath:J,configName:X,validationErrors:Z,errorCount:Z.length})}},A7=class extends I0{code="CONFIG_MERGE_ERROR";constructor(J,Z,X,Y){super(`Failed to merge configuration from "${J}" with "${Z}": ${X.message}`,{sourcePath:J,targetPath:Z,configName:Y,originalError:X.name,originalMessage:X.message});this.cause=X}},V$=class extends I0{code="ENV_VAR_ERROR";constructor(J,Z,X,Y){super(`Failed to parse environment variable "${J}" with value "${Z}" as ${X}`,{envKey:J,envValue:Z,expectedType:X,configName:Y})}},_7=class extends I0{code="FILE_SYSTEM_ERROR";constructor(J,Z,X){super(`File system ${J} failed for "${Z}": ${X.message}`,{operation:J,path:Z,originalError:X.name,originalMessage:X.message});this.cause=X}},F7=class extends I0{code="TYPE_GENERATION_ERROR";constructor(J,Z,X){super(`Failed to generate types from "${J}" to "${Z}": ${X.message}`,{configDir:J,outputPath:Z,originalError:X.name,originalMessage:X.message});this.cause=X}},I1=class extends I0{code="SCHEMA_VALIDATION_ERROR";constructor(J,Z,X){super(`Schema validation failed${X?` for config "${X}"`:""}`,{schemaPath:J,configName:X,validationErrors:Z,errorCount:Z.length})}},w7=class extends I0{code="BROWSER_CONFIG_ERROR";constructor(J,Z,X,Y){super(`Failed to fetch configuration from "${J}": ${Z} ${X}`,{endpoint:J,status:Z,statusText:X,configName:Y})}},B7=class extends I0{code="PLUGIN_ERROR";constructor(J,Z,X){super(`Plugin "${J}" failed during ${Z}: ${X.message}`,{pluginName:J,operation:Z,originalError:X.name,originalMessage:X.message});this.cause=X}},i0={configNotFound($,J,Z){return new H$($,J,Z)},configLoad($,J,Z){return new C1($,J,Z)},configValidation($,J,Z){return new V7($,J,Z)},configMerge($,J,Z,X){return new A7($,J,Z,X)},envVar($,J,Z,X){return new V$($,J,Z,X)},fileSystem($,J,Z){return new _7($,J,Z)},typeGeneration($,J,Z){return new F7($,J,Z)},schemaValidation($,J,Z){return new I1($,J,Z)},browserConfig($,J,Z,X){return new w7($,J,Z,X)},plugin($,J,Z){return new B7($,J,Z)}},_Z={replace:"replace",concat:"concat",smart:"smart"},FZ=/^https?:\/\//,k0=new K$("bunfig",{showTags:!0}),a0=new R7,wZ=L0(Z1.cwd(),"config"),BZ=L0(Z1.cwd(),"src/generated")});function PQ($,J={}){let Z=A$.cwd();while(Z.includes("storage"))Z=c9(Z,"..");let X=c9(Z,$||"");if(J?.relative)return LQ(A$.cwd(),X);return X}var CQ=A$.env.CLARITY_LOG_DIR||OQ(PQ(),"logs"),MZ={level:"info",defaultName:"clarity",timestamp:!0,colors:!0,format:"text",maxLogSize:10485760,logDatePattern:"YYYY-MM-DD",logDirectory:CQ,rotation:{frequency:"daily",maxSize:10485760,maxFiles:5,compress:!1,rotateHour:0,rotateMinute:0,rotateDayOfWeek:0,rotateDayOfMonth:1,encrypt:!1},verbose:!1,writeToFile:!1},_$={...MZ},aq=(async()=>{try{let{loadConfig:$}=await RQ().then(()=>$Z),J=await $({name:"clarity",alias:"logging",defaultConfig:MZ,cwd:A$.cwd()});if(J)Object.assign(_$,J)}catch{}return _$})();function M0(){if(l0.env.NODE_ENV==="test"||l0.env.BUN_ENV==="test")return!1;return typeof window<"u"}async function xQ(){if(l0.env.NODE_ENV==="test"||l0.env.BUN_ENV==="test")return!0;if(typeof navigator<"u"&&navigator.product==="ReactNative")return!0;if(typeof l0<"u"){let $=l0.type;if($==="renderer"||$==="worker")return!1;return!!(l0.versions&&(l0.versions.node||l0.versions.bun))}return!1}class jZ{async format($){let J=await xQ(),Z=await this.getMetadata(J);return JSON.stringify({timestamp:$.timestamp.toISOString(),level:$.level,name:$.name,message:$.message,metadata:Z})}async getMetadata($){if($){let{hostname:J}=await import("os");return{pid:_1.pid,hostname:J(),environment:_1.env.NODE_ENV||"development",platform:_1.platform,version:_1.version}}return{userAgent:navigator.userAgent,hostname:window.location.hostname||"browser",environment:_1.env.NODE_ENV||_1.env.BUN_ENV||"development",viewport:{width:window.innerWidth,height:window.innerHeight},language:navigator.language}}}var j0={red:($)=>`\x1B[31m${$}\x1B[0m`,green:($)=>`\x1B[32m${$}\x1B[0m`,yellow:($)=>`\x1B[33m${$}\x1B[0m`,blue:($)=>`\x1B[34m${$}\x1B[0m`,magenta:($)=>`\x1B[35m${$}\x1B[0m`,cyan:($)=>`\x1B[36m${$}\x1B[0m`,white:($)=>`\x1B[37m${$}\x1B[0m`,gray:($)=>`\x1B[90m${$}\x1B[0m`,bgRed:($)=>`\x1B[41m${$}\x1B[0m`,bgYellow:($)=>`\x1B[43m${$}\x1B[0m`,bgGray:($)=>`\x1B[100m${$}\x1B[0m`,bold:($)=>`\x1B[1m${$}\x1B[0m`,dim:($)=>`\x1B[2m${$}\x1B[0m`,italic:($)=>`\x1B[3m${$}\x1B[0m`,underline:($)=>`\x1B[4m${$}\x1B[0m`,strikethrough:($)=>`\x1B[9m${$}\x1B[0m`,reset:"\x1B[0m"},Q0=j0,zU=j0.red,hQ=j0.green,QU=j0.yellow,uQ=j0.blue,GU=j0.magenta,qU=j0.cyan,t9=j0.white,UU=j0.gray,mQ=j0.bgRed,dQ=j0.bgYellow,WU=j0.bgGray,e9=j0.bold,KU=j0.dim,HU=j0.italic,VU=j0.underline,AU=j0.strikethrough,_U=j0.reset,G7={activationLevel:"error",bufferSize:50,flushOnDeactivation:!0,stopBuffering:!1},oQ={debug:"\uD83D\uDD0D",info:uQ("\u2139"),success:hQ("\u2713"),warning:dQ(t9(e9(" WARN "))),error:mQ(t9(e9(" ERROR ")))};class J1{name;fileLocks=new Map;currentKeyId=null;keys=new Map;fingersCrossedConfig;fingersCrossedActive=!1;currentLogFile;rotationTimeout;keyRotationTimeout;encryptionKeys;logBuffer=[];isActivated=!1;pendingOperations=[];enabled;fancy;tagFormat;timestampPosition;environment;config;options;formatter;timers=new Set;subLoggers=new Set;fingersCrossedBuffer=[];ANSI_PATTERN=/\u001B\[.*?m/g;activeProgressBar=null;constructor($,J={}){this.name=$,this.config={..._$},this.options=this.normalizeOptions(J),this.formatter=this.options.formatter||new jZ,this.enabled=J.enabled??!0,this.fancy=J.fancy??!0,this.tagFormat=J.tagFormat??{prefix:"[",suffix:"]"},this.timestampPosition=J.timestampPosition??"right",this.environment=J.environment??Y0.env.APP_ENV??"local",this.fingersCrossedConfig=this.initializeFingersCrossedConfig(J);let Z={...J},X=J.timestamp!==void 0;if(X)delete Z.timestamp;if(this.config={...this.config,...Z,timestamp:X||this.config.timestamp,level:this.options.level??"info"},this.currentLogFile=this.generateLogFilename(),this.encryptionKeys=new Map,this.validateEncryptionConfig()){this.setupRotation();let Y=this.generateKeyId(),z=this.generateKey();this.currentKeyId=Y,this.keys.set(Y,z),this.encryptionKeys.set(Y,{key:z,createdAt:new Date}),this.setupKeyRotation()}}shouldActivateFingersCrossed($){if(!this.fingersCrossedConfig)return!1;let J={debug:0,info:1,success:2,warning:3,error:4},Z=this.fingersCrossedConfig.activationLevel??"error";return J[$]>=J[Z]}initializeFingersCrossedConfig($){if(!$.fingersCrossedEnabled&&$.fingersCrossed)return{...G7,...$.fingersCrossed};if(!$.fingersCrossedEnabled)return null;if(!$.fingersCrossed)return{...G7};return{...G7,...$.fingersCrossed}}normalizeOptions($){let J={format:"json",level:"info",logDirectory:_$.logDirectory,rotation:void 0,timestamp:void 0,fingersCrossed:{},enabled:!0,showTags:!1,showIcons:!0,formatter:void 0},Z={...J,...Object.fromEntries(Object.entries($).filter(([,X])=>X!==void 0))};if(!Z.level||!["debug","info","success","warning","error"].includes(Z.level))Z.level=J.level;return Z}shouldWriteToFile(){return!M0()&&this.config.writeToFile===!0}async writeToFile($){let Z=(async()=>{let Y,z=0,Q=3,G=1000;while(z<Q)try{try{try{await bQ(this.config.logDirectory,s9.F_OK|s9.W_OK)}catch(U){if(U instanceof Error&&"code"in U)if(U.code==="ENOENT")await kQ(this.config.logDirectory,{recursive:!0,mode:493});else if(U.code==="EACCES")throw Error(`No write permission for log directory: ${this.config.logDirectory}`);else throw U;else throw U}}catch(U){throw console.error("Debug: [writeToFile] Failed to create log directory:",U),U}let q=this.validateEncryptionConfig()?(await this.encrypt($)).encrypted:o0.from($);try{if(!i1(this.currentLogFile))await Q7(this.currentLogFile,"",{mode:420});if(Y=a9(this.currentLogFile,"a",420),yQ(Y,q,{flag:"a"}),l9(Y),Y!==void 0)z7(Y),Y=void 0;if((await V1(this.currentLogFile)).size===0){if(await Q7(this.currentLogFile,q,{flag:"w",mode:420}),(await V1(this.currentLogFile)).size===0)throw Error("File exists but is empty after retry write")}return}catch(U){let W=U;if(W.code&&["ENETDOWN","ENETUNREACH","ENOTFOUND","ETIMEDOUT"].includes(W.code)){if(z<Q-1){let K=typeof W.message==="string"?W.message:"Unknown error";console.error(`Network error during write attempt ${z+1}/${Q}:`,K);let H=G*2**z;await new Promise((V)=>setTimeout(V,H)),z++;continue}}if(W?.code&&["ENOSPC","EDQUOT"].includes(W.code))throw Error(`Disk quota exceeded or no space left on device: ${W.message}`);throw console.error("Debug: [writeToFile] Error writing to file:",W),W}finally{if(Y!==void 0)try{z7(Y)}catch(U){console.error("Debug: [writeToFile] Error closing file descriptor:",U)}}}catch(q){if(z===Q-1){let W=q,K=typeof W.message==="string"?W.message:"Unknown error";throw console.error("Debug: [writeToFile] Max retries reached. Final error:",K),q}z++;let U=G*2**(z-1);await new Promise((W)=>setTimeout(W,U))}})();this.pendingOperations.push(Z);let X=this.pendingOperations.length-1;try{await Z}catch(Y){throw console.error("Debug: [writeToFile] Error in operation:",Y),Y}finally{this.pendingOperations.splice(X,1)}}generateLogFilename(){if(this.name.includes("stream-throughput")||this.name.includes("decompress-perf-test")||this.name.includes("decompression-latency")||this.name.includes("concurrent-read-test")||this.name.includes("clock-change-test"))return A1(this.config.logDirectory,`${this.name}.log`);if(this.name.includes("pending-test")||this.name.includes("temp-file-test")||this.name==="crash-test"||this.name==="corrupt-test"||this.name.includes("rotation-load-test")||this.name==="sigterm-test"||this.name==="sigint-test"||this.name==="failed-rotation-test"||this.name==="integration-test")return A1(this.config.logDirectory,`${this.name}.log`);let $=new Date().toISOString().split("T")[0];return A1(this.config.logDirectory,`${this.name}-${$}.log`)}setupRotation(){if(M0())return;if(!this.shouldWriteToFile())return;if(typeof this.config.rotation==="boolean")return;let $=this.config.rotation,J;switch($.frequency){case"daily":J=86400000;break;case"weekly":J=604800000;break;case"monthly":J=2592000000;break;default:return}this.rotationTimeout=setInterval(()=>{this.rotateLog()},J)}setupKeyRotation(){if(!this.validateEncryptionConfig()){console.error("Invalid encryption configuration detected during key rotation setup");return}let J=this.config.rotation.keyRotation;if(!J?.enabled)return;let Z=typeof J.interval==="number"?J.interval:60,X=Math.max(Z,60)*1000;this.keyRotationTimeout=setInterval(()=>{this.rotateKeys().catch((Y)=>{console.error("Error rotating keys:",Y)})},X)}async rotateKeys(){if(!this.validateEncryptionConfig()){console.error("Invalid encryption configuration detected during key rotation");return}let J=this.config.rotation.keyRotation,Z=this.generateKeyId(),X=this.generateKey();this.currentKeyId=Z,this.keys.set(Z,X),this.encryptionKeys.set(Z,{key:X,createdAt:new Date});let Y=Array.from(this.encryptionKeys.entries()).sort(([,G],[,q])=>q.createdAt.getTime()-G.createdAt.getTime()),z=typeof J.maxKeys==="number"?J.maxKeys:1,Q=Math.max(1,z);if(Y.length>Q)for(let[G]of Y.slice(Q))this.encryptionKeys.delete(G),this.keys.delete(G)}generateKeyId(){return Y7(16).toString("hex")}generateKey(){return Y7(32)}getCurrentKey(){if(!this.currentKeyId)throw Error("Encryption is not properly initialized. Make sure encryption is enabled in the configuration.");let $=this.keys.get(this.currentKeyId);if(!$)throw Error(`No key found for ID ${this.currentKeyId}. The encryption key may have been rotated or removed.`);return{key:$,id:this.currentKeyId}}encrypt($){let{key:J}=this.getCurrentKey(),Z=Y7(16),X=IQ("aes-256-gcm",J,Z),Y=o0.isBuffer($)?$:o0.from($,"utf8"),z=X.update(Y),Q=X.final(),G=z.length+Q.length,q=X.getAuthTag(),U=o0.allocUnsafe(16+G+16);return Z.copy(U,0),z.copy(U,16),Q.copy(U,16+z.length),q.copy(U,16+G),{encrypted:U,iv:Z}}async compressData($){return new Promise((J,Z)=>{let X=i9(),Y=[];X.on("data",(z)=>Y.push(z)),X.on("end",()=>J(o0.from(o0.concat(Y)))),X.on("error",Z),X.write($),X.end()})}getEncryptionOptions(){if(!this.config.rotation||typeof this.config.rotation==="boolean"||!this.config.rotation.encrypt)return{};let $={algorithm:"aes-256-cbc",compress:!1};if(typeof this.config.rotation.encrypt==="object"){let J=this.config.rotation.encrypt;return{...$,...J}}return $}async rotateLog(){if(M0())return;if(!this.shouldWriteToFile())return;let $=await V1(this.currentLogFile).catch(()=>null);if(!$)return;let J=this.config.rotation;if(typeof J==="boolean")return;if(J.maxSize&&$.size>=J.maxSize){let Z=this.currentLogFile,X=this.generateLogFilename();if(this.name.includes("rotation-load-test")||this.name==="failed-rotation-test"){let Y=await t1(this.config.logDirectory),z=Y.filter((q)=>q.startsWith(this.name)&&/\.log\.\d+$/.test(q)).sort((q,U)=>{let W=Number.parseInt(q.match(/\.log\.(\d+)$/)?.[1]||"0");return Number.parseInt(U.match(/\.log\.(\d+)$/)?.[1]||"0")-W}),Q=z.length>0?Number.parseInt(z[0].match(/\.log\.(\d+)$/)?.[1]||"0")+1:1,G=`${Z}.${Q}`;if(await V1(Z).catch(()=>null))try{if(await n9(Z,G),J.compress)try{let q=`${G}.gz`;await this.compressLogFile(G,q),await e1(G)}catch(q){console.error("Error compressing rotated file:",q)}if(z.length===0&&!Y.some((q)=>q.endsWith(".log.1")))try{let q=`${Z}.1`;await Q7(q,"")}catch(q){console.error("Error creating backup file:",q)}}catch(q){console.error(`Error during rotation: ${q instanceof Error?q.message:String(q)}`)}}else{let Y=new Date().toISOString().replace(/[:.]/g,"-"),z=Z.replace(/\.log$/,`-${Y}.log`);if(await V1(Z).catch(()=>null))await n9(Z,z)}if(this.currentLogFile=X,J.maxFiles){let z=(await t1(this.config.logDirectory)).filter((Q)=>Q.startsWith(this.name)).sort((Q,G)=>G.localeCompare(Q));for(let Q of z.slice(J.maxFiles))await e1(A1(this.config.logDirectory,Q))}}}async compressLogFile($,J){let Z=r9($),X=vQ(J),Y=i9();await pQ(Z,Y,X)}async handleFingersCrossedBuffer($,J){if(!this.fingersCrossedConfig)return;if(this.shouldActivateFingersCrossed($)&&!this.isActivated){this.isActivated=!0;for(let Z of this.logBuffer){let X=await this.formatter.format(Z);if(this.shouldWriteToFile())await this.writeToFile(X);console.log(X)}if(this.fingersCrossedConfig.stopBuffering)this.logBuffer=[]}if(this.isActivated){if(this.shouldWriteToFile())await this.writeToFile(J);console.log(J)}}shouldLog($){if(!this.enabled)return!1;let J={debug:0,info:1,success:2,warning:3,error:4};return J[$]>=J[this.config.level]}async flushPendingWrites(){if(await Promise.all(this.pendingOperations.map(($)=>{if($ instanceof Promise)return $.catch((J)=>{console.error("Error in pending write operation:",J)});return Promise.resolve()})),i1(this.currentLogFile))try{let $=a9(this.currentLogFile,"r+");l9($),z7($)}catch($){console.error(`Error flushing file: ${$}`)}}async destroy(){if(this.rotationTimeout)clearInterval(this.rotationTimeout);if(this.keyRotationTimeout)clearInterval(this.keyRotationTimeout);this.timers.clear();for(let $ of this.pendingOperations)if(typeof $.cancel==="function")$.cancel();return(async()=>{if(this.pendingOperations.length>0)try{await Promise.allSettled(this.pendingOperations)}catch($){console.error("Error waiting for pending operations:",$)}if(!M0()&&this.config.rotation&&typeof this.config.rotation!=="boolean"&&this.config.rotation.compress)try{let J=(await t1(this.config.logDirectory)).filter((Z)=>(Z.includes("temp")||Z.includes(".tmp"))&&Z.includes(this.name));for(let Z of J)try{await e1(A1(this.config.logDirectory,Z))}catch(X){console.error(`Failed to delete temp file ${Z}:`,X)}}catch($){console.error("Error cleaning up temporary files:",$)}})()}getCurrentLogFilePath(){return this.currentLogFile}formatTag($){if(!$)return"";return`${this.tagFormat.prefix}${$}${this.tagFormat.suffix}`}formatFileTimestamp($){return`[${$.toISOString()}]`}formatConsoleTimestamp($){return this.shouldStyleConsole()?Q0.gray($.toLocaleTimeString()):$.toLocaleTimeString()}shouldStyleConsole(){if(!this.fancy||M0())return!1;let $=typeof Y0.env.NO_COLOR<"u",J=Y0.env.FORCE_COLOR==="0";if($||J)return!1;return!!(typeof Y0.stderr<"u"&&Y0.stderr.isTTY||typeof Y0.stdout<"u"&&Y0.stdout.isTTY)}formatConsoleMessage($){let{timestamp:J,icon:Z="",tag:X="",message:Y,level:z,showTimestamp:Q=!0}=$,G=(V)=>V.replace(this.ANSI_PATTERN,"");if(!this.fancy){let V=[];if(Q)V.push(J);if(z==="warning")V.push("WARN");else if(z==="error")V.push("ERROR");else if(Z)V.push(Z.replace(/[^\p{L}\p{N}\p{P}\p{Z}]/gu,""));if(X)V.push(X.replace(/[[\]]/g,""));return V.push(Y),V.join(" ")}let q=Y0.stdout.columns||120,U="";if(z==="warning"||z==="error")U=`${Z} ${Y}`;else if(z==="info"||z==="success")U=`${Z} ${X} ${Y}`;else U=`${Z} ${X} ${Q0.cyan(Y)}`;if(!Q)return U.trim();let W=G(U).trim().length,K=G(J).length,H=Math.max(1,q-2-W-K);return`${U.trim()}${" ".repeat(H)}${J}`}formatMessage($,J){if(J.length===1&&Array.isArray(J[0]))return $.replace(/\{(\d+)\}/g,(z,Q)=>{let G=Number.parseInt(Q,10);return G<J[0].length?String(J[0][G]):z});let Z=/%([sdijfo%])/g,X=0,Y=$.replace(Z,(z,Q)=>{if(Q==="%")return"%";if(X>=J.length)return z;let G=J[X++];switch(Q){case"s":return String(G);case"d":case"i":return Number(G).toString();case"j":case"o":return JSON.stringify(G,null,2);default:return z}});if(X<J.length)Y+=` ${J.slice(X).map((z)=>typeof z==="object"?JSON.stringify(z,null,2):String(z)).join(" ")}`;return Y}formatMarkdown($){if(!$)return $;let J=$;return J=J.replace(/\[([^\]]+)\]\(([^)]+)\)/g,(Z,X,Y)=>{let z=Q0.underline(Q0.blue(X)),Q=this.toAbsoluteFilePath(Y);if(Q&&this.shouldStyleConsole()&&this.supportsHyperlinks()){let G=`file://${encodeURI(Q)}`,q="\x1B]8;;",U="\x1B\\";return`\x1B]8;;${G}\x1B\\${z}\x1B]8;;\x1B\\`}if(this.shouldStyleConsole()&&this.supportsHyperlinks())return`\x1B]8;;${Y}\x1B\\${z}\x1B]8;;\x1B\\`;return z}),J=J.replace(/`([^`]+)`/g,(Z,X)=>Q0.bgGray(X)),J=J.replace(/\*\*([^*]+)\*\*/g,(Z,X)=>Q0.bold(X)),J=J.replace(/(?<!\*)\*([^*]+)\*(?!\*)/g,(Z,X)=>Q0.italic(X)),J=J.replace(/(?<!_)_([^_]+)_(?!_)/g,(Z,X)=>Q0.italic(X)),J=J.replace(/~([^~]+)~/g,(Z,X)=>Q0.strikethrough(X)),J}supportsHyperlinks(){if(M0())return!1;let $=Y0.env;if(!$)return!1;if($.TERM_PROGRAM==="iTerm.app"||$.TERM_PROGRAM==="vscode"||$.TERM_PROGRAM==="WezTerm")return!0;if($.WT_SESSION)return!0;if($.TERM==="xterm-kitty")return!0;let J=$.VTE_VERSION?Number.parseInt($.VTE_VERSION,10):0;if(!Number.isNaN(J)&&J>=5000)return!0;return!1}toAbsoluteFilePath($){try{let J=$;if(J.startsWith("file://"))J=J.replace(/^file:\/\//,"");if(J.startsWith("~")){let Z=Y0.env.HOME||"";if(Z)J=J.replace(/^~(?=$|\/)/,Z)}if(fQ(J)||J.startsWith("./")||J.startsWith("../"))J=gQ(J);else return null;return i1(J)?J:null}catch{return null}}buildOutputTexts($){let J=this.shouldStyleConsole()?this.formatMarkdown($):$,Z=$.replace(this.ANSI_PATTERN,"");return{consoleText:J,fileText:Z}}async log($,J,...Z){if(!this.shouldLog($))return;let X=new Date,Y=this.formatConsoleTimestamp(X),z=this.formatFileTimestamp(X),Q,G;if(J instanceof Error)Q=J.message,G=J.stack;else Q=this.formatMessage(J,Z);let{consoleText:q,fileText:U}=this.buildOutputTexts(Q);if(this.shouldStyleConsole()){let K=this.options.showIcons===!1?"":oQ[$],H=this.options.showTags!==!1&&this.name?Q0.gray(this.formatTag(this.name)):"",V;switch($){case"debug":V=this.formatConsoleMessage({timestamp:Y,icon:K,tag:H,message:Q0.gray(q),level:$}),console.error(V);break;case"info":V=this.formatConsoleMessage({timestamp:Y,icon:K,tag:H,message:q,level:$}),console.warn(V);break;case"success":V=this.formatConsoleMessage({timestamp:Y,icon:K,tag:H,message:Q0.green(q),level:$}),console.error(V);break;case"warning":V=this.formatConsoleMessage({timestamp:Y,icon:K,tag:H,message:q,level:$}),console.warn(V);break;case"error":if(V=this.formatConsoleMessage({timestamp:Y,icon:K,tag:H,message:q,level:$}),console.error(V),G){let A=G.split(`
41
+ `);for(let _ of A)if(_.trim()&&!_.includes(Q))console.error(this.formatConsoleMessage({timestamp:Y,message:Q0.gray(` ${_}`),level:$,showTimestamp:!1}))}break}}else if(!M0()){if(console.error(`${z} ${this.environment}.${$.toUpperCase()}: ${Q}`),G)console.error(G)}let W=`${z} ${this.environment}.${$.toUpperCase()}: ${U}
42
42
  `;if(G)W+=`${G}
43
- `;if(W=W.replace(this.ANSI_PATTERN,""),this.shouldWriteToFile())await this.writeToFile(W)}progress($,J=""){let Z={update:(G,q)=>{},finish:(G)=>{},interrupt:(G,q)=>{}};if(!this.enabled)return Z;let X=30;if(this.activeProgressBar={total:Math.max(1,$||1),current:0,message:J||"",barLength:X,lastRenderedLine:""},this.shouldStyleConsole()&&!B0()&&X0.stdout.isTTY)this.renderProgressBar(this.activeProgressBar);return{update:(G,q)=>{if(!this.enabled||!this.activeProgressBar)return;if(this.activeProgressBar.current=Math.min(Math.max(0,G),this.activeProgressBar.total),q!==void 0)this.activeProgressBar.message=q;if(this.shouldStyleConsole()&&!B0()&&X0.stdout.isTTY)this.renderProgressBar(this.activeProgressBar)},finish:(G)=>{if(!this.activeProgressBar)return;this.finishProgressBar(this.activeProgressBar,G)},interrupt:(G,q="info")=>{if(!B0()&&X0.stdout.isTTY)X0.stdout.write(`
44
- `);if(this[q==="warning"?"warn":q](G),this.activeProgressBar&&this.shouldStyleConsole()&&!B0()&&X0.stdout.isTTY)this.renderProgressBar(this.activeProgressBar)}}}time($){let J=performance.now();if(this.shouldStyleConsole()){let Z=this.options.showTags!==!1&&this.name?z0.gray(this.formatTag(this.name)):"",X=this.formatConsoleTimestamp(new Date);console.error(this.formatConsoleMessage({timestamp:X,icon:this.options.showIcons===!1?"":z0.blue("\u25D0"),tag:Z,message:`${z0.cyan($)}...`}))}return async(Z)=>{if(!this.enabled)return;let X=performance.now(),Y=Math.round(X-J),z=`${$} completed in ${Y}ms`,Q=new Date,G=this.formatConsoleTimestamp(Q),U=`${this.formatFileTimestamp(Q)} ${this.environment}.INFO: ${z}`;if(Z)U+=` ${JSON.stringify(Z)}`;if(U+=`
45
- `,U=U.replace(this.ANSI_PATTERN,""),this.shouldStyleConsole()){let W=this.options.showTags!==!1&&this.name?z0.gray(this.formatTag(this.name)):"";console.error(this.formatConsoleMessage({timestamp:G,icon:this.options.showIcons===!1?"":z0.green("\u2713"),tag:W,message:`${z}${Z?` ${JSON.stringify(Z)}`:""}`}))}else if(!B0())console.error(U.trim());if(this.shouldWriteToFile())await this.writeToFile(U)}}async debug($,...J){await this.log("debug",$,...J)}async info($,...J){await this.log("info",$,...J)}async success($,...J){await this.log("success",$,...J)}async warn($,...J){await this.log("warning",$,...J)}async error($,...J){await this.log("error",$,...J)}validateEncryptionConfig(){if(!this.config.rotation)return!1;if(typeof this.config.rotation==="boolean")return!1;let $=this.config.rotation,{encrypt:J}=$;return!!J}async only($){if(!this.enabled)return;return await $()}isEnabled(){return this.enabled}setEnabled($){this.enabled=$}extend($){let J=`${this.name}:${$}`,Z=new Z1(J,{...this.options,logDirectory:this.config.logDirectory,level:this.config.level,format:this.config.format,rotation:typeof this.config.rotation==="boolean"?void 0:this.config.rotation,timestamp:typeof this.config.timestamp==="boolean"?void 0:this.config.timestamp});return this.subLoggers.add(Z),Z}createReadStream(){if(B0())throw Error("createReadStream is not supported in browser environments");if(!n1(this.currentLogFile))throw Error(`Log file does not exist: ${this.currentLogFile}`);return c9(this.currentLogFile,{encoding:"utf8"})}async decrypt($){if(!this.validateEncryptionConfig())throw Error("Encryption is not configured");let J=this.config.rotation;if(!J.encrypt||typeof J.encrypt==="boolean")throw Error("Invalid encryption configuration");if(!this.currentKeyId||!this.keys.has(this.currentKeyId))throw Error("No valid encryption key available");let Z=this.keys.get(this.currentKeyId);try{let X=d0.isBuffer($)?$:d0.from($,"base64"),Y=X.subarray(0,16),z=X.subarray(X.length-16),Q=X.subarray(16,X.length-16),G=CQ("aes-256-gcm",Z,Y);G.setAuthTag(z);let q=G.update(Q),U=G.final(),W=q.length+U.length,K=d0.allocUnsafe(W);return q.copy(K,0),U.copy(K,q.length),K.toString("utf8")}catch(X){throw Error(`Decryption failed: ${X instanceof Error?X.message:String(X)}`)}}getLevel(){return this.config.level}getLogDirectory(){return this.config.logDirectory}getFormat(){return this.config.format}getRotationConfig(){return this.config.rotation}isBrowserMode(){return B0()}isServerMode(){return!B0()}setTestEncryptionKey($,J){this.currentKeyId=$,this.keys.set($,J)}getTestCurrentKey(){if(!this.currentKeyId||!this.keys.has(this.currentKeyId))return null;return{id:this.currentKeyId,key:this.keys.get(this.currentKeyId)}}getConfig(){return this.config}async box($){if(!this.enabled)return;let J=new Date,Z=this.formatConsoleTimestamp(J),X=this.formatFileTimestamp(J),{consoleText:Y,fileText:z}=this.buildOutputTexts($);if(this.shouldStyleConsole()){let G=Y.split(`
46
- `),q=Math.max(...G.map((H)=>H.length))+2,U=`\u250C${"\u2500".repeat(q)}\u2510`,W=`\u2514${"\u2500".repeat(q)}\u2518`,K=G.map((H)=>{return this.formatConsoleMessage({timestamp:Z,message:z0.cyan(H),showTimestamp:!1})});console.error(this.formatConsoleMessage({timestamp:Z,message:z0.cyan(U),showTimestamp:!1})),K.forEach((H)=>console.error(H)),console.error(this.formatConsoleMessage({timestamp:Z,message:z0.cyan(W),showTimestamp:!1}))}else if(!B0())console.error(`${X} ${this.environment}.INFO: [BOX] ${z}`);let Q=`${X} ${this.environment}.INFO: [BOX] ${z}
47
- `.replace(this.ANSI_PATTERN,"");if(this.shouldWriteToFile())await this.writeToFile(Q)}async prompt($){if(B0())return Promise.resolve(!0);return new Promise((J)=>{console.error(`${z0.cyan("?")} ${$} (y/n) `);let Z=(X)=>{let Y=X.toString().trim().toLowerCase();X0.stdin.removeListener("data",Z);try{if(typeof X0.stdin.setRawMode==="function")X0.stdin.setRawMode(!1)}catch{}X0.stdin.pause(),console.error(""),J(Y==="y"||Y==="yes")};try{if(typeof X0.stdin.setRawMode==="function")X0.stdin.setRawMode(!0)}catch{}X0.stdin.resume(),X0.stdin.once("data",Z)})}setFancy($){this.fancy=$}isFancy(){return this.fancy}pause(){this.enabled=!1}resume(){this.enabled=!0}async start($,...J){if(!this.enabled)return;let Z=$;if(J&&J.length>0){let q=/%([sdijfo%])/g,U=0;if(Z=$.replace(q,(W,K)=>{if(K==="%")return"%";if(U>=J.length)return W;let H=J[U++];switch(K){case"s":return String(H);case"d":case"i":return Number(H).toString();case"j":case"o":return JSON.stringify(H,null,2);default:return W}}),U<J.length)Z+=` ${J.slice(U).map((W)=>typeof W==="object"?JSON.stringify(W,null,2):String(W)).join(" ")}`}let{consoleText:X,fileText:Y}=this.buildOutputTexts(Z);if(this.shouldStyleConsole()){let q=this.options.showTags!==!1&&this.name?z0.gray(this.formatTag(this.name)):"",U=this.options.showIcons===!1?"":`${z0.blue("\u25D0")} `;console.error(`${U}${q} ${z0.cyan(X)}`)}let G=`[${new Date().toISOString()}] ${this.environment}.INFO: [START] ${Y}
48
- `.replace(this.ANSI_PATTERN,"");if(this.shouldWriteToFile())await this.writeToFile(G)}renderProgressBar($,J=!1){if(!this.enabled||!this.shouldStyleConsole()||!X0.stdout.isTTY)return;let Z=Math.min(100,Math.max(0,Math.round($.current/$.total*100))),X=Math.round($.barLength*Z/100),Y=$.barLength-X,z=z0.green("\u2501".repeat(X)),Q=z0.gray("\u2501".repeat(Y)),G=`[${z}${Q}]`,q=`${Z}%`.padStart(4),U=$.message?` ${$.message}`:"",W=this.options.showIcons===!1?"":J||Z===100?z0.green("\u2713"):z0.blue("\u25B6"),K=this.options.showTags!==!1&&this.name?` ${z0.gray(this.formatTag(this.name))}`:"",H=`\r${W}${K} ${G} ${q}${U}`,V=X0.stdout.columns||80,A=" ".repeat(Math.max(0,V-H.replace(this.ANSI_PATTERN,"").length));if($.lastRenderedLine=`${H}${A}`,X0.stdout.write($.lastRenderedLine),J)X0.stdout.write(`
49
- `)}finishProgressBar($,J){if(!this.enabled||!this.fancy||B0()||!X0.stdout.isTTY){this.activeProgressBar=null;return}if($.current<$.total)$.current=$.total;if(J)$.message=J;this.renderProgressBar($,!0),this.activeProgressBar=null}async clear($={}){if(B0()){console.warn("Log clearing is not supported in browser environments.");return}try{console.warn("Clearing logs...",this.config.logDirectory);let J=await i1(this.config.logDirectory),Z=[];for(let X of J){if(!($.name?new RegExp($.name.replace("*",".*")).test(X):X.startsWith(this.name))||!X.endsWith(".log"))continue;let z=V1(this.config.logDirectory,X);if($.before)try{if((await H1(z)).mtime>=$.before)continue}catch(Q){console.error(`Failed to get stats for file ${z}:`,Q);continue}Z.push(z)}if(Z.length===0){console.warn("No log files matched the criteria for clearing.");return}console.warn(`Preparing to delete ${Z.length} log file(s)...`);for(let X of Z)try{await t1(X),console.warn(`Deleted log file: ${X}`)}catch(Y){console.error(`Failed to delete log file ${X}:`,Y)}console.warn("Log clearing process finished.")}catch(J){console.error("Error during log clearing process:",J)}}}var AU=new Z1("stacks");import{readFileSync as IY,writeFileSync as b2}from"fs";import{isAbsolute as k2,relative as PY,resolve as f2}from"path";import M1 from"process";var w$={meta:{docs:"Enforce return statements in callbacks of array methods",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),z=new RegExp(`\\.(${["map","filter","find","findIndex","findLast","findLastIndex","every","some","reduce","reduceRight","sort","flatMap"].join("|")})\\s*\\(`,"g");for(let Q=0;Q<X.length;Q++){let G=X[Q],q;for(q=z.exec(G);q!==null;q=z.exec(G)){let U=q[1],W=q.index+q[0].length,K=G.slice(W),H=K.match(/^\s*(?:\(([^)]*)\)|([a-z_$][\w$]*))\s*=>/i),V=K.match(/^\s*function\s*(?:[a-zA-Z_$][\w$]*\s*)?\(/);if(H){let A=K.slice(H[0].length).trim();if(A.startsWith("{")){let _=!1,F=0,w=A,j=Q;while(j<X.length){let D=j===Q?w:X[j];for(let M=0;M<D.length;M++){let E=D[M];if(E==="{")F++;if(E==="}"){if(F--,F===0){if(!_)Z.push({filePath:J.filePath,line:Q+1,column:q.index+1,ruleId:"eslint/array-callback-return",message:`Array method '${U}' callback should return a value`,severity:"error"});break}}}if(D.match(new RegExp("\\breturn\\s+[^;]")))_=!0;if(F===0)break;j++,w=X[j]||""}}}else if(V){let A=!1,_=0,F=Q,w=!1;while(F<X.length){let j=X[F];for(let D=0;D<j.length;D++){let M=j[D];if(M==="{")_++,w=!0;else if(M==="}"){if(_--,_===0&&w){if(!A)Z.push({filePath:J.filePath,line:Q+1,column:q.index+1,ruleId:"eslint/array-callback-return",message:`Array method '${U}' callback should return a value`,severity:"error"});break}}}if(w&&j.match(new RegExp("\\breturn\\s+[^;]")))A=!0;if(_===0&&w)break;F++}}}}return Z}};var B$={meta:{docs:"Require super() calls in constructors of derived classes",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1,z=!1,Q=0,G=0,q=!1;for(let U=0;U<X.length;U++){let W=X[U];if(W.match(/\bclass\s+\w+\s+extends\s+\w+/))Y=!0;if(Y&&W.match(/\bconstructor\s*\(/))z=!0,Q=U+1,G=0,q=!1;if(z){for(let K of W){if(K==="{")G++;if(K==="}")G--}if(W.match(/\bsuper\s*\(/))q=!0;if(G===0&&W.includes("}")){if(!q)Z.push({filePath:J.filePath,line:Q,column:1,ruleId:"eslint/constructor-super",message:"Constructors of derived classes must call super()",severity:"error"});z=!1,Y=!1}}}return Z}};var M$={meta:{docs:'Enforce "for" loop update clause moving counter in the right direction',recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=new RegExp("\\bfor\\s*\\(\\s*(?:(?:let|var|const)\\s*)?(\\w+)\\s*=[^;]+;\\s*(\\w+)\\s*([<>]=?)[^;]+;\\s*(\\w+)(\\+\\+|--|[\\s+-]=)"),G=z.match(Q);if(G){let q=G[1],U=G[2],W=G[3],K=G[4],H=G[5];if(q===U&&U===K){let V=H.includes("+"),A=W.includes("<");if(A&&!V||!A&&V)Z.push({filePath:J.filePath,line:Y+1,column:1,ruleId:"eslint/for-direction",message:"The update clause in this loop moves the variable in the wrong direction",severity:"error"})}}}return Z}};var j$={meta:{docs:"Enforce return statements in getters",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let Q=X[Y].match(/\bget\s+(\w+)\s*\(/);if(Q){let G=Q[1],q=!1,U=0,W=Y;while(W<X.length){let K=X[W];for(let V of K){if(V==="{")U++;if(V==="}"){if(U--,U===0){if(!q)Z.push({filePath:J.filePath,line:Y+1,column:1,ruleId:"eslint/getter-return",message:`Getter '${G}' must return a value`,severity:"error"});break}}}let H=new RegExp("\\breturn\\s+[^;]");if(K.match(H))q=!0;if(U===0)break;W++}}}return Z}};var N$={meta:{docs:"Disallow async functions as Promise executor",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/new\s+Promise\s*\(\s*async\s*(?:\(|function)/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z))Z.push({filePath:J.filePath,line:Y+1,column:G.index+1,ruleId:"eslint/no-async-promise-executor",message:"Promise executor functions should not be async",severity:"error"})}return Z}};var T$={meta:{docs:"Disallow comparing against -0",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/([!=]==?)\s*-0\b|\b-0\s*([!=]==?)/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z))Z.push({filePath:J.filePath,line:Y+1,column:G.index+1,ruleId:"eslint/no-compare-neg-zero",message:"Do not use the '-0' literal in comparisons",severity:"error"})}return Z}};var E$={meta:{docs:"Disallow assignment operators in conditional expressions",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\b(if|while)\s*\([^)]*\b(\w+)\s*=\s*(?!=)[^)]*\)/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){let q=G[0];if(/===|==/.test(q))continue;if(z.substring(0,G.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/no-cond-assign",message:"Expected a conditional expression and instead saw an assignment",severity:"error"})}}return Z}};var D$={meta:{docs:"Disallow reassigning const variables",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=new Map;for(let z=0;z<X.length;z++){let Q=X[z],G=Q.match(/\bconst\s+(\w+)/);if(G)Y.set(G[1],z);let q=/\b(\w+)\s*=(?!=)/g,U;for(U=q.exec(Q);U!==null;U=q.exec(Q)){let W=U[1],K=Q.substring(0,U.index);if(!/\b(?:const|let|var)\s*$/.test(K)&&Y.has(W))Z.push({filePath:J.filePath,line:z+1,column:Math.max(1,U.index+1),ruleId:"eslint/no-const-assign",message:`'${W}' is constant`,severity:"error"})}}return Z}};var R$={meta:{docs:"Disallow constant expressions in conditions",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=[{pattern:/\b(if|while)\s*\(\s*(true|false)\s*\)/g,type:"boolean"},{pattern:/\b(if|while)\s*\(\s*(\d+)\s*\)/g,type:"number"},{pattern:/\b(if|while)\s*\(\s*(['"`][^'"`]*['"`])\s*\)/g,type:"string"}];for(let{pattern:G,type:q}of Q){let U;while((U=G.exec(z))!==null){let W=U[1],K=U[2];if(z.substring(0,U.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,U.index+W.length+2),ruleId:"eslint/no-constant-condition",message:"Unexpected constant condition",severity:"error"})}}}return Z}};var O$={meta:{docs:"Disallow duplicate class members",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1,z=new Set,Q=0;for(let G=0;G<X.length;G++){let q=X[G];if(q.match(/\bclass\s+\w+/))Y=!0,z=new Set,Q=0;if(Y){for(let W of q){if(W==="{")Q++;if(W==="}"){if(Q--,Q===0)Y=!1}}let U=[...q.matchAll(/^\s*(?:(?:public|private|protected|static|readonly|async)\s*)?(?:get|set)?\s*(\w+)\s*\(/g),...q.matchAll(/^\s*(?:(?:public|private|protected|static|readonly)\s*)?(\w+)\s*[:=]/g)];for(let W of U){let K=W[1];if(z.has(K))Z.push({filePath:J.filePath,line:G+1,column:1,ruleId:"eslint/no-dupe-class-members",message:`Duplicate class member '${K}'`,severity:"error"});else z.add(K)}}}return Z}};var S1={meta:{docs:"Disallow duplicate keys in object literals",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=/\{\s*$/,z=/^\s*(?:(['"`])(.+?)\1|(\w+))\s*:/;for(let Q=0;Q<X.length;Q++){let G=X[Q];if(!Y.test(G)&&!G.includes("{"))continue;let q=new Map,U=(G.match(/\{/g)||[]).length-(G.match(/\}/g)||[]).length,W=Q;for(let K=Q+1;K<X.length&&U>0;K++){let H=X[K];U+=(H.match(/\{/g)||[]).length,U-=(H.match(/\}/g)||[]).length;let V=H.match(z);if(V){let A=V[2]||V[3];if(A)if(q.get(A)!==void 0)Z.push({filePath:J.filePath,line:K+1,column:Math.max(1,H.search(/\S/)+1),ruleId:"eslint/no-dupe-keys",message:`Duplicate key '${A}'`,severity:"error"});else q.set(A,K)}if(U===0)break}}return Z},fix:($,J)=>{let Z=S1.check($,J);if(Z.length===0)return $;let X=$.split(/\r?\n/),Y=new Set(Z.map((Q)=>Q.line-1));return X.filter((Q,G)=>!Y.has(G)).join(`
50
- `)}};var L$={meta:{docs:"Disallow duplicate case labels in switch statements",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1,z=new Set,Q=-1;for(let G=0;G<X.length;G++){let q=X[G],U=q.trim();if(/\bswitch\s*\(/.test(U)){Y=!0,z=new Set,Q=G;continue}if(Y&&U==="}"&&G>Q){let W=X[Q].match(/^\s*/)?.[0].length||0;if((q.match(/^\s*/)?.[0].length||0)<=W+2)Y=!1,z=new Set}if(Y){let W=U.match(/^case\s+(.+?)\s*:/);if(W){let K=W[1].trim();if(z.has(K))Z.push({filePath:J.filePath,line:G+1,column:Math.max(1,q.indexOf("case")+1),ruleId:"eslint/no-duplicate-case",message:`Duplicate case label '${K}'`,severity:"error"});else z.add(K)}}}return Z}};var P$={meta:{docs:"Disallow empty destructuring patterns",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\{\s*\}\s*=/g,G=/\[\s*\]\s*=/g,q;for(q=Q.exec(z);q!==null;q=Q.exec(z)){if(z.substring(0,q.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,q.index+1),ruleId:"eslint/no-empty-pattern",message:"Unexpected empty object pattern",severity:"error"})}for(q=G.exec(z);q!==null;q=G.exec(z)){if(z.substring(0,q.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,q.index+1),ruleId:"eslint/no-empty-pattern",message:"Unexpected empty array pattern",severity:"error"})}}return Z}};var C$={meta:{docs:"Disallow fallthrough of case statements",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1,z=-1,Q=!1;for(let G=0;G<X.length;G++){let U=X[G].trim();if(/\bswitch\s*\(/.test(U)){Y=!0;continue}if(Y){if(/^case\s+/.test(U)||/^default\s*:/.test(U)){if(z>=0&&Q){if(!(/\/\/.*falls?\s*through|\/\*.*falls?\s*through/i.test(X[z])||G>0&&/\/\/.*falls?\s*through|\/\*.*falls?\s*through/i.test(X[G-1])))Z.push({filePath:J.filePath,line:z+1,column:Math.max(1,X[z].indexOf("case")+1),ruleId:"eslint/no-fallthrough",message:"Expected a 'break' statement before 'case'",severity:"error"})}z=G,Q=!0}if(/\b(?:break|return|throw|continue)\b/.test(U))Q=!1;if(U==="}")Y=!1,z=-1,Q=!1}}return Z}};var I$={meta:{docs:"Disallow number literals that lose precision",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\b(\d{17,}(?:\.\d+)?|\d+\.\d{17,})\b/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){let q=G[1];if(Number(q).toString()!==q)Z.push({filePath:J.filePath,line:Y+1,column:G.index+1,ruleId:"eslint/no-loss-of-precision",message:"This number literal will lose precision at runtime",severity:"error"})}}return Z}};var S$={meta:{docs:"Disallow returning values from Promise executor functions",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++)if(X[Y].match(/new\s+Promise\s*\(/)){let G=0,q=!1,U=Y;while(U<X.length){let W=X[U];for(let H of W){if(H==="{")G++,q=!0;if(H==="}"){if(G--,G===0&&q)break}}let K=new RegExp("\\breturn\\s+[^;]");if(q&&W.match(K))Z.push({filePath:J.filePath,line:U+1,column:1,ruleId:"eslint/no-promise-executor-return",message:"Return values from promise executor functions cannot be read",severity:"error"});if(G===0&&q)break;U++}}return Z}};var v$={meta:{docs:"Disallow variable redeclaration",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=new Map;for(let z=0;z<X.length;z++){let Q=X[z],G=/\b(var|let|const)\s+(\w+)/g,q;for(q=G.exec(Q);q!==null;q=G.exec(Q)){let W=q[2];if(Y.get(W)!==void 0)Z.push({filePath:J.filePath,line:z+1,column:Math.max(1,q.index+1),ruleId:"eslint/no-redeclare",message:`'${W}' is already defined`,severity:"error"});else Y.set(W,z)}let U=/\bfunction\s+(\w+)/g;for(q=U.exec(Q);q!==null;q=U.exec(Q)){let W=q[1];if(Y.get(W)!==void 0)Z.push({filePath:J.filePath,line:z+1,column:Math.max(1,q.index+1),ruleId:"eslint/no-redeclare",message:`'${W}' is already defined`,severity:"error"});else Y.set(W,z)}}return Z}};var v1={meta:{docs:"Disallow assignments where both sides are identical",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=new RegExp("\\b(\\w+)\\s*=\\s*(\\w+)\\s*(?:;\\s*)?(?:\\/\\/.*)?$"),G=z.match(Q);if(G&&G[1]===G[2]){Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,z.indexOf(G[1])+1),ruleId:"eslint/no-self-assign",message:`'${G[1]}' is assigned to itself`,severity:"error"});continue}let q=z.match(/([\w.]+)\s*=\s*([\w.]+)/);if(q&&q[1]===q[2]){Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,z.indexOf(q[1])+1),ruleId:"eslint/no-self-assign",message:`'${q[1]}' is assigned to itself`,severity:"error"});continue}let U=z.match(/(\w+\[[^\]]+\])\s*=\s*(\w+\[[^\]]+\])/);if(U){let W=U[1].replace(/\s/g,""),K=U[2].replace(/\s/g,"");if(W===K)Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,z.indexOf(U[1])+1),ruleId:"eslint/no-self-assign",message:`'${U[1]}' is assigned to itself`,severity:"error"})}}return Z},fix:($,J)=>{let Z=v1.check($,J);if(Z.length===0)return $;let X=$.split(/\r?\n/),Y=new Set(Z.map((Q)=>Q.line-1));return X.map((Q,G)=>{if(Y.has(G)){let q=Q.trim();if(new RegExp("^\\w+(?:\\.\\w+|\\[[^\\]]+\\])?\\s*=\\s*\\w+(?:\\.\\w+|\\[[^\\]]+\\])?;?\\s*$").test(q))return""}return Q}).filter((Q,G,q)=>{if(Q===""&&Y.has(G)){let U=G>0&&q[G-1].trim()!=="",W=G<q.length-1&&q[G+1]&&q[G+1].trim()!=="";if(!U||!W)return!1}return!0}).join(`
51
- `)}};var y$={meta:{docs:"Disallow comparisons where both sides are identical",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/([\w.\[\]]+)\s*(===|!==|==|!=|<|>|<=|>=)\s*([\w.\[\]]+)/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){let q=G[1].replace(/\s/g,""),U=G[2],W=G[3].replace(/\s/g,"");if(q===W)Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/no-self-compare",message:`Comparing '${G[1]}' to itself is potentially pointless`,severity:"error"})}}return Z}};var b$={meta:{docs:"Disallow sparse arrays (arrays with empty slots)",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\[([^\]]*)\]/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){let q=G[1];if(/,\s*,/.test(q))Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/no-sparse-arrays",message:"Unexpected sparse array",severity:"error"})}}return Z},fix:($,J)=>{let Z=$.split(/\r?\n/),X=!1,Y=Z.map((z)=>{let Q=z;return Q=Q.replace(/\[([^\]]*)\]/g,(G,q)=>{if(/,\s*,/.test(q))return X=!0,`[${q.replace(/,(\s*),/g,", undefined,")}]`;return G}),Q});return X?Y.join(`
52
- `):$}};var k$={meta:{docs:"Disallow undeclared variables",recommended:!0,wip:!0},check:($,J)=>{return[]}};var f$={meta:{docs:"Disallow unreachable code after return, throw, continue, or break",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(/^\s*(?:return|throw|break|continue)\b/.test(z))for(let G=Y+1;G<X.length;G++){let q=X[G],U=q.trim();if(U===""||U.startsWith("//")||U.startsWith("/*"))continue;if(U==="}"||U.startsWith("}"))break;if(/^(?:case\b|default\s*:)/.test(U))break;Z.push({filePath:J.filePath,line:G+1,column:Math.max(1,q.search(/\S/)+1),ruleId:"eslint/no-unreachable",message:"Unreachable code",severity:"error"});break}}return Z}};var g$={meta:{docs:"Disallow negation of the left operand of relational operators",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/!\s*\w+\s+in\s+/g,G=/!\s*\w+\s+instanceof\s+/g,q;for(q=Q.exec(z);q!==null;q=Q.exec(z))Z.push({filePath:J.filePath,line:Y+1,column:q.index+1,ruleId:"eslint/no-unsafe-negation",message:"Unexpected negation of 'in' operand",severity:"error"});for(q=G.exec(z);q!==null;q=G.exec(z))Z.push({filePath:J.filePath,line:Y+1,column:q.index+1,ruleId:"eslint/no-unsafe-negation",message:"Unexpected negation of 'instanceof' operand",severity:"error"})}return Z},fix:($)=>{let J=$;return J=J.replace(/!\s*(\w+)\s+in\s+/g,"!($1 in "),J=J.replace(/!\s*(\w+)\s+instanceof\s+/g,"!($1 instanceof "),J}};var x$={meta:{docs:"Disallow unnecessary catch clauses",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.match(/catch\s*\(\s*(\w+)\s*\)/);if(!Q)continue;let G=Q[1];for(let q=Y+1;q<Math.min(Y+5,X.length);q++){let U=X[q].trim();if(U===`throw ${G}`||U===`throw ${G};`){let W=!1;for(let K=Y+1;K<q;K++){let H=X[K].trim();if(H!==""&&H!=="{"&&!H.startsWith("//")){W=!0;break}}if(!W)Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,z.indexOf("catch")+1),ruleId:"eslint/no-useless-catch",message:"Unnecessary catch clause",severity:"error"});break}if(U==="}")break}}return Z}};var p$={meta:{docs:"Require isNaN() when checking for NaN",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\b([\w.\[\]]+)\s*(===|!==|==|!=)\s*NaN\b|\bNaN\s*(===|!==|==|!=)\s*([\w.\[\]]+)/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){let q=G[1]||G[4];Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/use-isnan",message:"Use isNaN() to compare with NaN",severity:"error"})}}return Z},fix:($,J)=>{let Z=$.split(/\r?\n/),X=!1,Y=Z.map((z)=>{let Q=z;return Q=Q.replace(/\b([\w.\[\]]+)\s*===\s*NaN\b/g,(G,q)=>{return X=!0,`isNaN(${q})`}),Q=Q.replace(/\bNaN\s*===\s*([\w.\[\]]+)\b/g,(G,q)=>{return X=!0,`isNaN(${q})`}),Q=Q.replace(/\b([\w.\[\]]+)\s*!==\s*NaN\b/g,(G,q)=>{return X=!0,`!isNaN(${q})`}),Q=Q.replace(/\bNaN\s*!==\s*([\w.\[\]]+)\b/g,(G,q)=>{return X=!0,`!isNaN(${q})`}),Q=Q.replace(/\b([\w.\[\]]+)\s*==\s*NaN\b/g,(G,q)=>{return X=!0,`isNaN(${q})`}),Q=Q.replace(/\bNaN\s*==\s*([\w.\[\]]+)\b/g,(G,q)=>{return X=!0,`isNaN(${q})`}),Q=Q.replace(/\b([\w.\[\]]+)\s*!=\s*NaN\b/g,(G,q)=>{return X=!0,`!isNaN(${q})`}),Q=Q.replace(/\bNaN\s*!=\s*([\w.\[\]]+)\b/g,(G,q)=>{return X=!0,`!isNaN(${q})`}),Q});return X?Y.join(`
53
- `):$}};var jZ=["undefined","object","boolean","number","string","function","symbol","bigint"],h$={meta:{docs:"Enforce comparing typeof expressions against valid strings",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/typeof\s+\w+\s*(?:===|!==|==|!=)\s*(['"`])(\w+)\1/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){let U=G[2];if(!jZ.includes(U))Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/valid-typeof",message:`Invalid typeof comparison value '${U}'`,severity:"error"})}let q=/(['"`])(\w+)\1\s*(?:===|!==|==|!=)\s*typeof\s+\w+/g;for(G=q.exec(z);G!==null;G=q.exec(z)){let U=G[2];if(!jZ.includes(U))Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/valid-typeof",message:`Invalid typeof comparison value '${U}'`,severity:"error"})}}return Z}};var u$={meta:{docs:"Enforce a maximum cyclomatic complexity allowed in a program",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=10,z=!1,Q=0,G="",q=0,U=0;for(let W=0;W<X.length;W++){let K=X[W],H=K.match(/\bfunction\s+(\w+)\s*\(|(\w+)\s*=\s*(?:\([^)]*\)|(\w+))\s*=>/);if(H)z=!0,Q=W+1,G=H[1]||H[2]||H[3]||"anonymous",q=1,U=0;if(z){for(let A of K){if(A==="{")U++;if(A==="}"){if(U--,U===0){if(q>10)Z.push({filePath:J.filePath,line:Q,column:1,ruleId:"eslint/complexity",message:`Function '${G}' has complexity ${q}, exceeds maximum of 10`,severity:"error"});z=!1}}}let V=[/\bif\s*\(/,/\belse\s+if\s*\(/,/\bfor\s*\(/,/\bwhile\s*\(/,/\bcase\s+/,/\bcatch\s*\(/,/\b&&\b/,/\b\|\|\b/,/\?\s*(?:\S.*(?:[\n\r\u2028\u2029]\s*)?)?:/];for(let A of V){let _=K.match(new RegExp(A,"g"));if(_)q+=_.length}}}return Z}};var m$={meta:{docs:"Require default case in switch statements",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1,z=0,Q=!1,G=0;for(let q=0;q<X.length;q++){let U=X[q];if(U.match(/\bswitch\s*\(/))Y=!0,z=q+1,Q=!1,G=0;if(Y){for(let W of U){if(W==="{")G++;if(W==="}"){if(G--,G===0){if(!Q)Z.push({filePath:J.filePath,line:z,column:1,ruleId:"eslint/default-case",message:"Expected a default case",severity:"error"});Y=!1}}}if(U.match(/\bdefault\s*:/))Q=!0}}return Z}};var d$={meta:{docs:"Require === and !== instead of == and !=",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/([^=!])(\s*)(==)(\s*)([^=])/g,G=/([^!])(\s*)(!=)(\s*)([^=])/g,q;for(q=Q.exec(z);q!==null;q=Q.exec(z))Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,q.index+2),ruleId:"eslint/eqeqeq",message:"Expected '===' and instead saw '=='",severity:"error"});for(q=G.exec(z);q!==null;q=G.exec(z))Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,q.index+2),ruleId:"eslint/eqeqeq",message:"Expected '!==' and instead saw '!='",severity:"error"})}return Z},fix:($)=>{let J=$;return J=J.replace(/([^!])(\s*)(!=)(\s*)([^=])/g,"$1$2!==$4$5"),J=J.replace(/([^=!])(\s*)(==)(\s*)([^=])/g,"$1$2===$4$5"),J}};var o$={meta:{docs:"Enforce a maximum depth that blocks can be nested",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=4,z=0,Q=0,G=0;for(let q=0;q<X.length;q++){let U=X[q];if(U.match(/\b(if|for|while|switch|try|catch|else)\b.*\{/)){if(z++,z>Q)Q=z,G=q+1}else if(U.match(/\{/)&&!U.match(/^.*\}/)){if(X[q-1]?.match(/\b(if|for|while|switch|try|catch|else)\b/)){if(z++,z>Q)Q=z,G=q+1}}if(U.match(/^\s*\}/))z--;if(z>4)Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"eslint/max-depth",message:`Blocks are nested too deeply (${z}), maximum allowed is 4`,severity:"error"})}return Z}};var c$={meta:{docs:"Enforce a maximum number of lines of code in a function",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=50,z=!1,Q=0,G="",q=0;for(let U=0;U<X.length;U++){let W=X[U],K=W.match(/\bfunction\s+(\w+)\s*\(|(\w+)\s*=\s*(?:\([^)]*\)|(\w+))\s*=>/);if(K)z=!0,Q=U+1,G=K[1]||K[2]||K[3]||"anonymous",q=0;if(z)for(let H of W){if(H==="{")q++;if(H==="}"){if(q--,q===0){let V=U+1-Q+1;if(V>50)Z.push({filePath:J.filePath,line:Q,column:1,ruleId:"eslint/max-lines-per-function",message:`Function '${G}' has ${V} lines, exceeds maximum of 50`,severity:"error"});z=!1}}}}return Z}};var r$={meta:{docs:"Disallow alert, confirm, and prompt",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\b(alert|confirm|prompt)\s*\(/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){if(z.substring(0,G.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/no-alert",message:`Unexpected ${G[1]}`,severity:"warning"})}}return Z}};var l$={meta:{docs:"Disallow await inside of loops",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1,z=0,Q=0;for(let G=0;G<X.length;G++){let q=X[G];if(q.match(/\b(for|while|do)\s*\(/))Y=!0,z=0,Q=G;if(Y){for(let U of q){if(U==="{")z++;if(U==="}"){if(z--,z===0)Y=!1}}if(q.match(/\bawait\s+/))Z.push({filePath:J.filePath,line:G+1,column:1,ruleId:"eslint/no-await-in-loop",message:"Unexpected await inside a loop. Consider using Promise.all() instead",severity:"error"})}}return Z}};var a$={meta:{docs:"Disallow use of arguments.caller or arguments.callee",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\barguments\s*\.\s*(caller|callee)\b/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z))Z.push({filePath:J.filePath,line:Y+1,column:G.index+1,ruleId:"eslint/no-caller",message:`Avoid arguments.${G[1]}`,severity:"error"})}return Z}};var s$={meta:{docs:"Disallow lexical declarations in case clauses",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1,z=!1;for(let Q=0;Q<X.length;Q++){let G=X[Q];if(G.match(/\bcase\s+(?:\S.*)?:|default\s*:/))Y=!0,z=!0;else z=!1;if(Y&&!z&&(G.match(/\bbreak\b/)||G.match(/\bcase\s+(?:\S.*)?:/)))Y=!1;if(Y&&!z){if(G.match(/\b(let|const|function|class)\s+/))Z.push({filePath:J.filePath,line:Q+1,column:1,ruleId:"eslint/no-case-declarations",message:"Unexpected lexical declaration in case block",severity:"error"})}}return Z}};var n$={meta:{docs:"Disallow else blocks after return statements in if statements",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y];if(!/^\s*else\b/.test(z))continue;let Q=!1;for(let G=Y-1;G>=0&&G>=Y-10;G--){let q=X[G].trim();if(q.startsWith("return"))Q=!0;if(q==="}"&&Q)break;if(q.includes("{"))break}if(Q)Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,z.indexOf("else")+1),ruleId:"eslint/no-else-return",message:"Unnecessary else after return",severity:"warning"})}return Z}};var i$={meta:{docs:"Disallow empty block statements",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\{\s*\}/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){let q=z.substring(0,G.index).trim(),U=/(?:if|else|for|while|do|try|catch|finally|function|\})\s*$/.test(q),W=/[=:]$/.test(q)||/return\s*$/.test(q);if(U&&!W)Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/no-empty",message:"Empty block statement",severity:"error"})}}for(let Y=0;Y<X.length-1;Y++){let z=X[Y],Q=X[Y+1];if(/\{\s*$/.test(z.trim()))for(let G=Y+1;G<X.length;G++){let q=X[G].trim();if(q==="")continue;if(q==="}"||q.startsWith("}")){let U=z.substring(0,z.lastIndexOf("{")).trim(),W=/(?:if|else|for|while|do|try|catch|finally|function|\})\s*$/.test(U),K=/[=:]$/.test(U)||/return\s*$/.test(U);if(W&&!K)Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,z.lastIndexOf("{")+1),ruleId:"eslint/no-empty",message:"Empty block statement",severity:"error"})}break}}return Z}};var t$={meta:{docs:"Disallow empty functions",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=[/function\s+\w+\s*\([^)]*\)\s*\{\s*\}/g,/function\s*\([^)]*\)\s*\{\s*\}/g,/\([^)]*\)\s*=>\s*\{\s*\}/g,/\w+\s*\([^)]*\)\s*\{\s*\}/g];for(let G of Q){let q;for(q=G.exec(z);q!==null;q=G.exec(z)){if(z.substring(0,q.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,q.index+1),ruleId:"eslint/no-empty-function",message:"Unexpected empty function",severity:"warning"})}}}return Z}};var e$={meta:{docs:"Disallow use of eval()",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\beval\s*\(/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){if(z.substring(0,G.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/no-eval",message:"eval can be harmful",severity:"error"})}}return Z}};var dQ=["Object","Array","String","Number","Boolean","Date","RegExp","Function","Math","JSON","Promise","Map","Set","WeakMap","WeakSet","Symbol","Proxy","Reflect","Error","TypeError","RangeError"],$8={meta:{docs:"Disallow extending native types",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y];for(let Q of dQ){let G=new RegExp(`\\b${Q}\\.prototype\\.\\w+\\s*=`,"g"),q;for(q=G.exec(z);q!==null;q=G.exec(z)){if(z.substring(0,q.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,q.index+1),ruleId:"eslint/no-extend-native",message:`${Q} prototype is read only, properties should not be added`,severity:"error"})}}}return Z}};var Z8={meta:{docs:"Disallow unnecessary boolean casts",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=[/\bif\s*\(\s*Boolean\s*\(/g,/\bwhile\s*\(\s*Boolean\s*\(/g,/!\s*Boolean\s*\(/g,/\?\s*Boolean\s*\(/g,/&&\s*Boolean\s*\(/g,/\|\|\s*Boolean\s*\(/g,/!!\s*\w+/g];for(let G of Q){let q;for(q=G.exec(z);q!==null;q=G.exec(z)){if(z.substring(0,q.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,q.index+1),ruleId:"eslint/no-extra-boolean-cast",message:"Redundant Boolean call or double negation",severity:"error"})}}}return Z},fix:($)=>{let J=$;return J=J.replace(/\b(if|while)\s*\(\s*Boolean\s*\(([^)]+)\)\s*\)/g,"$1 ($2)"),J=J.replace(/!\s*Boolean\s*\(([^)]+)\)/g,"!$1"),J=J.replace(/!!\s*(\w+)/g,"$1"),J}};var oQ=["Array","Boolean","Date","Error","Function","JSON","Math","Number","Object","RegExp","String","Symbol","undefined","NaN","Infinity","isNaN","isFinite","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","eval","Promise","Proxy","Reflect","Set","Map","WeakSet","WeakMap","ArrayBuffer","DataView","console","window","document","globalThis","global","process"],J8={meta:{docs:"Disallow assignment to native objects or read-only global variables",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y];for(let Q of oQ){let G=new RegExp(`\\b${Q}\\s*=\\s*[^=]`,"g"),q;for(q=G.exec(z);q!==null;q=G.exec(z))if(!z.slice(q.index).match(new RegExp(`^${Q}\\s*===?`)))Z.push({filePath:J.filePath,line:Y+1,column:q.index+1,ruleId:"eslint/no-global-assign",message:`Read-only global '${Q}' should not be modified`,severity:"error"})}}return Z}};var X8={meta:{docs:"Disallow implied eval() via setTimeout/setInterval with strings",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\b(setTimeout|setInterval)\s*\(\s*(['"`])/g,G;while((G=Q.exec(z))!==null){if(z.substring(0,G.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/no-implied-eval",message:"Implied eval. Consider passing a function instead of a string",severity:"error"})}}return Z}};var Y8={meta:{docs:"Disallow the use of the __iterator__ property",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/__iterator__/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){if(z.substring(0,G.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/no-iterator",message:"Reserved name '__iterator__'",severity:"error"})}}return Z}};var y1={meta:{docs:"Disallow if statements as the only statement in else blocks",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(/^\s*else\s*(?:\{\s*)?$/.test(z)){let G=Y,q=z.includes("{");if(!q){if(Y+1<X.length&&X[Y+1].trim()==="{")G=Y+1,q=!0}if(q)for(let U=G+1;U<X.length;U++){let W=X[U].trim();if(W===""||W.startsWith("//")||W.startsWith("/*"))continue;if(W==="}")break;if(W.startsWith("if ")||W.startsWith("if(")){let K=!0,H=0,V=!1;for(let A=U;A<X.length;A++){let _=X[A];if(H+=(_.match(/\{/g)||[]).length,H-=(_.match(/\}/g)||[]).length,A===U){V=!0;continue}if(H===0){for(let F=A+1;F<X.length;F++){let w=X[F].trim();if(w===""||w.startsWith("//"))continue;if(w==="}"||w.startsWith("}"))break;else K=!1;break}break}}if(V&&K)Z.push({filePath:J.filePath,line:U+1,column:Math.max(1,X[U].indexOf("if")+1),ruleId:"eslint/no-lonely-if",message:"Unexpected if as the only statement in an else block",severity:"warning"})}break}}}return Z},fix:($,J)=>{if(y1.check($,J).length===0)return $;return $}};var z8={meta:{docs:"Disallow new operators outside of assignments or comparisons",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y];if(/^\s*new\s+\w+\s*\(/.test(z)){if(!/[=:]/.test(z.substring(0,z.indexOf("new"))))Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,z.indexOf("new")+1),ruleId:"eslint/no-new",message:"Do not use 'new' for side effects",severity:"warning"})}}return Z}};var Q8={meta:{docs:"Disallow new Function() declarations",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\bnew\s+Function\s*\(/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){if(z.substring(0,G.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/no-new-func",message:"The Function constructor is eval",severity:"error"})}}return Z}};var G8={meta:{docs:"Disallow new operators with String, Number, and Boolean",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\bnew\s+(String|Number|Boolean)\s*\(/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){if(z.substring(0,G.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/no-new-wrappers",message:`Do not use ${G[1]} as a constructor`,severity:"error"})}}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=!1,X=J.map((Y)=>{if(Y.trim().startsWith("//")||Y.trim().startsWith("/*"))return Y;return Y.replace(/\bnew\s+(String|Number|Boolean)\s*\(/g,(Q,G)=>{return Z=!0,`${G}(`})});return Z?X.join(`
54
- `):$}};var q8={meta:{docs:"Disallow octal literals",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\b0[0-7]+\b/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z))Z.push({filePath:J.filePath,line:Y+1,column:G.index+1,ruleId:"eslint/no-octal",message:"Octal literals should not be used",severity:"error"})}return Z}};var U8={meta:{docs:"Disallow reassignment of function parameters",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=new Map;for(let z=0;z<X.length;z++){let Q=X[z],G=[...Q.matchAll(/function\s+(?:(\w+)\s*)?\(([^)]*)\)/g),...Q.matchAll(/(?:const|let|var)?\s*(\w+)\s*=\s*\(([^)]*)\)\s*=>/g),...Q.matchAll(/(?:const|let|var)?\s*(\w+)\s*=\s*(\w+)\s*=>/g)];for(let q of G){let U=q[2]?q[2].split(",").map((K)=>K.trim().split(/[=:]/)[0].trim()):[],W=`line-${z}`;if(U.length>0)Y.set(W,new Set(U.filter((K)=>K&&/^\w+$/.test(K))))}for(let[q,U]of Y.entries())for(let W of U){let K=new RegExp(`\\b${W}\\s*=\\s*[^=]`,"g"),H;for(H=K.exec(Q);H!==null;H=K.exec(Q))if(!Q.slice(H.index).match(/^\w+\s*===?/))Z.push({filePath:J.filePath,line:z+1,column:H.index+1,ruleId:"eslint/no-param-reassign",message:`Assignment to function parameter '${W}'`,severity:"error"})}}return Z}};var W8={meta:{docs:"Disallow use of __proto__",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/__proto__/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){if(z.substring(0,G.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/no-proto",message:"The '__proto__' property is deprecated",severity:"error"})}}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=!1,X=J.map((Y)=>{if(Y.trim().startsWith("//")||Y.trim().startsWith("/*"))return Y;return Y.replace(/(\w+)\.__proto__/g,(Q,G)=>{return Z=!0,`Object.getPrototypeOf(${G})`})});return Z?X.join(`
55
- `):$}};var K8={meta:{docs:"Disallow assignment operators in return statements",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\breturn\s[^;]*\b\w+\s*=\s*(?!=)/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){let q=G[0];if(/===|==/.test(q))continue;if(z.substring(0,G.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/no-return-assign",message:"Return statement should not contain assignment",severity:"error"})}}return Z}};var H8={meta:{docs:"Disallow comma operators",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\)\s*,\s*\w+\s*\(/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){if(z.substring(0,G.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+G[0].indexOf(",")+1),ruleId:"eslint/no-sequences",message:"Unexpected use of comma operator",severity:"warning"})}}return Z}};var V8={meta:{docs:"Disallow variable declarations from shadowing variables declared in the outer scope",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),z=[new Set];for(let Q=0;Q<X.length;Q++){let G=X[Q];if(G.match(/\bfunction\s+\w+\s*\(|=>\s*\{|\{\s*$/))z.push(new Set);let q=[...G.matchAll(/\b(const|let|var)\s+(\w+)/g),...G.matchAll(/function\s+(\w+)\s*\(/g)];for(let U of q){let W=U[2]||U[1];for(let K=0;K<z.length-1;K++)if(z[K].has(W)){Z.push({filePath:J.filePath,line:Q+1,column:1,ruleId:"eslint/no-shadow",message:`'${W}' is already declared in the upper scope`,severity:"error"});break}z[z.length-1].add(W)}if(G.match(/^\s*\}\s*$/)){if(z.length>1)z.pop()}}return Z}};var A8={meta:{docs:"Disallow throwing literals as exceptions",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=[{pattern:/\bthrow\s+(['"`][^'"`]*['"`])/g,type:"string"},{pattern:/\bthrow\s+(\d+)/g,type:"number"},{pattern:/\bthrow\s+(true|false|null|undefined)/g,type:"literal"}];for(let{pattern:G,type:q}of Q){let U;while((U=G.exec(z))!==null){if(z.substring(0,U.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,U.index+1),ruleId:"eslint/no-throw-literal",message:`Expected an error object to be thrown, got ${q} literal`,severity:"error"})}}}return Z}};var _8={meta:{docs:"Disallow the use of variables before they are defined",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=new Map;for(let z=0;z<X.length;z++){let Q=X[z],G=[...Q.matchAll(/\b(const|let|var)\s+(\w+)/g),...Q.matchAll(/\bfunction\s+(\w+)\s*\(/g),...Q.matchAll(/\bclass\s+(\w+)/g)];for(let q of G){let U=q[2]||q[1];if(!Y.has(U))Y.set(U,z+1)}}for(let z=0;z<X.length;z++){let Q=X[z];if(Q.match(/\b(const|let|var|function|class)\s+\w+/))continue;let G=Q.matchAll(/\b(\w+)\b/g);for(let q of G){let U=q[1],W=Y.get(U);if(W&&W>z+1)Z.push({filePath:J.filePath,line:z+1,column:q.index+1,ruleId:"eslint/no-use-before-define",message:`'${U}' was used before it was defined`,severity:"error"})}}return Z}};var F8={meta:{docs:"Disallow unnecessary .call() and .apply()",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\.\s*call\s*\(\s*(undefined|null)\s*,/g,G=/\.\s*apply\s*\(\s*(undefined|null)\s*,/g,q;for(q=Q.exec(z);q!==null;q=Q.exec(z))Z.push({filePath:J.filePath,line:Y+1,column:q.index+1,ruleId:"eslint/no-useless-call",message:"Unnecessary '.call()'",severity:"error"});for(q=G.exec(z);q!==null;q=G.exec(z))Z.push({filePath:J.filePath,line:Y+1,column:q.index+1,ruleId:"eslint/no-useless-call",message:"Unnecessary '.apply()'",severity:"error"})}return Z}};var w8={meta:{docs:"Disallow unnecessary concatenation of literals or template literals",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=[/(['"`])([^'"`]*)\1\s*\+\s*\1([^'"`]*)\1/g];for(let G of Q){let q;while((q=G.exec(z))!==null){if(z.substring(0,q.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,q.index+1),ruleId:"eslint/no-useless-concat",message:"Unexpected string concatenation of literals",severity:"warning"})}}}return Z},fix:($)=>{let J=$;return J=J.replace(/(['"`])([^'"`]*)\1\s*\+\s*\1([^'"`]*)\1/g,"$1$2$3$1"),J}};var NZ=["/","(",")","[","]","{","}","<",">",":","@","#","$","%","&","=","+","-","*","?","!",";",",","|","~","`","^"],B8={meta:{docs:"Disallow unnecessary escape characters",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y];for(let Q of NZ){let G=`\\${Q}`,q=new RegExp(`(['"\`])[^'"\`]*${G.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}`,"g"),U;while((U=q.exec(z))!==null){let W=U.index,K=z.indexOf(G,W);if(K>W)Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,K+1),ruleId:"eslint/no-useless-escape",message:`Unnecessary escape character: \\${Q}`,severity:"warning"})}}}return Z},fix:($)=>{let J=$;for(let Z of NZ){let X=`\\${Z}`;J=J.replace(new RegExp(X.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"g"),Z)}return J}};var M8={meta:{docs:"Disallow renaming import, export, and destructured assignments to the same name",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/import\s*\{[^}]*\b(\w+)\s+as\s+\1\b[^}]*\}/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z))Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/no-useless-rename",message:`Renaming import '${G[1]}' to '${G[1]}' is redundant`,severity:"error"});let q=/export\s*\{[^}]*\b(\w+)\s+as\s+\1\b[^}]*\}/g;for(G=q.exec(z);G!==null;G=q.exec(z))Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/no-useless-rename",message:`Renaming export '${G[1]}' to '${G[1]}' is redundant`,severity:"error"});let U=/\{[^}]*\b(\w+)\s*:\s*\1\b[^}]*\}\s*=/g;for(G=U.exec(z);G!==null;G=U.exec(z))Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/no-useless-rename",message:`Renaming destructured property '${G[1]}' to '${G[1]}' is redundant`,severity:"error"})}return Z},fix:($)=>{let J=$;return J=J.replace(/\b(\w+)\s+as\s+\1\b/g,"$1"),J=J.replace(/\{([^}]*)\b(\w+)\s*:\s*\2\b([^}]*)\}/g,"{$1$2$3}"),J}};var b1={meta:{docs:"Disallow redundant return statements",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(Q==="return"||Q==="return;"){let G=!1;for(let q=Y+1;q<X.length;q++){let U=X[q].trim();if(U===""||U.startsWith("//")||U.startsWith("/*"))continue;if(U==="}"||U.startsWith("}"))G=!0;break}if(G)Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,z.indexOf("return")+1),ruleId:"eslint/no-useless-return",message:"Unnecessary return statement",severity:"warning"})}}return Z},fix:($,J)=>{let Z=b1.check($,J);if(Z.length===0)return $;let X=$.split(/\r?\n/),Y=new Set(Z.map((Q)=>Q.line-1));return X.filter((Q,G)=>!Y.has(G)).join(`
56
- `)}};var j8={meta:{docs:"Require let or const instead of var",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\bvar\s+/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){if(z.substring(0,G.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/no-var",message:"Unexpected var, use let or const instead",severity:"error"})}}return Z},fix:($,J)=>{return $.split(/\r?\n/).map((Y)=>{if(Y.trim().startsWith("//")||Y.trim().startsWith("/*"))return Y;return Y.replace(/\bvar\s+/g,"let ")}).join(`
57
- `)}};var N8={meta:{docs:"Disallow with statements",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\bwith\s*\(/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){if(z.substring(0,G.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/no-with",message:"Unexpected use of 'with' statement",severity:"error"})}}return Z}};var T8={meta:{docs:"Require using arrow functions for callbacks",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\.(map|filter|reduce|forEach|some|every|find|findIndex)\s*\(\s*function\s*\(/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){if(z.substring(0,G.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/prefer-arrow-callback",message:"Unexpected function expression, use arrow function instead",severity:"warning"})}}return Z}};var E8={meta:{docs:"Disallow async functions which have no await expression",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++)if(X[Y].match(/\basync\s+(?:function\s+\w+|(?:\(|\w+)\s*(?:\(|=>))/)){let G=!1,q=0,U=!1,W=Y;while(W<X.length){let K=X[W];for(let H of K){if(H==="{")q++,U=!0;if(H==="}"){if(q--,q===0&&U)break}}if(K.match(/\bawait\s+/))G=!0;if(q===0&&U){if(!G)Z.push({filePath:J.filePath,line:Y+1,column:1,ruleId:"eslint/require-await",message:"Async function has no await expression",severity:"error"});break}W++}}return Z}};var TZ=/\.(?:ts|js|tsx|jsx|mts|mjs|cts|cjs)$/;function B($){return{meta:$.meta,check:(J,Z)=>{if(!TZ.test(Z.filePath))return[];return $.check(J,Z)},fix:$.fix?(J,Z)=>{if(!TZ.test(Z.filePath))return J;return $.fix(J,Z)}:void 0}}var EZ=/\.(?:sh|bash|zsh|ksh|dash)$/,DZ=/^#!\s*(?:\/usr\/bin\/env\s+)?(?:ba|z|k|da)?sh\b/;function V0($){return{meta:$.meta,check:(J,Z)=>{if(!EZ.test(Z.filePath)&&!DZ.test(J))return[];return $.check(J,Z)},fix:$.fix?(J,Z)=>{if(!EZ.test(Z.filePath)&&!DZ.test(J))return J;return $.fix(J,Z)}:void 0}}var RZ=/(?:^|[/\\])package\.json$/;function A0($){return{meta:$.meta,check:(J,Z)=>{if(!RZ.test(Z.filePath))return[];return $.check(J,Z)},fix:$.fix?(J,Z)=>{if(!RZ.test(Z.filePath))return J;return $.fix(J,Z)}:void 0}}var OZ={name:"eslint",rules:{"array-callback-return":B(w$),"constructor-super":B(B$),"for-direction":B(M$),"getter-return":B(j$),"no-async-promise-executor":B(N$),"no-compare-neg-zero":B(T$),"no-cond-assign":B(E$),"no-constant-condition":B(R$),"no-const-assign":B(D$),"no-dupe-class-members":B(O$),"no-dupe-keys":B(S1),"no-duplicate-case":B(L$),"no-empty-pattern":B(P$),"no-fallthrough":B(C$),"no-loss-of-precision":B(I$),"no-promise-executor-return":B(S$),"no-redeclare":B(v$),"no-self-assign":B(v1),"no-self-compare":B(y$),"no-sparse-arrays":B(b$),"no-undef":B(k$),"no-unsafe-negation":B(g$),"no-unreachable":B(f$),"no-useless-catch":B(x$),"use-isnan":B(p$),"valid-typeof":B(h$),"default-case":B(m$),eqeqeq:B(d$),"no-alert":B(r$),"no-await-in-loop":B(l$),"no-caller":B(a$),"no-case-declarations":B(s$),"no-else-return":B(n$),"no-empty":B(i$),"no-empty-function":B(t$),"no-eval":B(e$),"no-extend-native":B($8),"no-global-assign":B(J8),"no-implied-eval":B(X8),"no-iterator":B(Y8),"no-new":B(z8),"no-new-func":B(Q8),"no-new-wrappers":B(G8),"no-octal":B(q8),"no-param-reassign":B(U8),"no-proto":B(W8),"no-return-assign":B(K8),"no-shadow":B(V8),"no-throw-literal":B(A8),"no-use-before-define":B(_8),"no-useless-call":B(F8),"no-with":B(N8),"require-await":B(E8),complexity:B(u$),"max-depth":B(o$),"max-lines-per-function":B(c$),"no-extra-boolean-cast":B(Z8),"no-lonely-if":B(y1),"no-sequences":B(H8),"no-useless-concat":B(w8),"no-useless-escape":B(B8),"no-useless-rename":B(M8),"no-useless-return":B(b1),"no-var":B(j8),"prefer-arrow-callback":B(T8)}};var LZ={meta:{docs:"Disallow return statements in constructors - constructors automatically return the instance"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.indexOf("//");if(!(Q>=0?z.slice(0,Q):z).match(/\bconstructor\s*\(/))continue;let U=0,W=!1,K=-1;for(let H=Y;H<X.length;H++){let V=X[H],A=null,_=!1;for(let F=0;F<V.length;F++){let w=V[F];if(_){_=!1;continue}if(w==="\\"&&A){_=!0;continue}if(!A){if(w==="'")A="single";else if(w==='"')A="double";else if(w==="`")A="template";else if(w==="{")U++,W=!0;else if(w==="}"){if(U--,W&&U===0){K=H;break}}}else if(A==="single"&&w==="'"||A==="double"&&w==='"'||A==="template"&&w==="`")A=null}if(K!==-1)break}if(K===-1)continue;for(let H=Y;H<=K;H++){let V=X[H];if(H===Y)continue;if(/^\s*\/\//.test(V))continue;let A=V.indexOf("//"),_=A>=0?V.slice(0,A):V;if(_=_.replace(/(['"`])(?:(?!\1)[^\\]|\\.)*?\1/g,'""'),_.match(/\breturn\b/)){let w=_.indexOf("return"),j=w>0?_[w-1]:" ",D=w+6<_.length?_[w+6]:" ";if(/\w/.test(j)||/\w/.test(D))continue;let M=_.slice(w+6).trim();if(M.startsWith("this;")||M==="this")continue;if(M===";"||M==="")continue;let E=V.indexOf("return");Z.push({filePath:J.filePath,line:H+1,column:E+1||1,ruleId:"no-constructor-return",message:"Unexpected return statement in constructor. Constructors should not return values.",severity:"error",help:"Remove the return statement or move the logic outside of the constructor"})}}}return Z}};var PZ={meta:{docs:"Disallow irregular whitespace characters that may cause issues in code"},check:($,J)=>{let Z=[],X=/[\u00A0\u1680\u180E\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]/g,Y=$.split(/\r?\n/);for(let z=0;z<Y.length;z++){let Q=Y[z],G;X.lastIndex=0;while((G=X.exec(Q))!==null){let U=G[0].charCodeAt(0),W="irregular whitespace",K={160:"NO-BREAK SPACE",5760:"OGHAM SPACE MARK",6158:"MONGOLIAN VOWEL SEPARATOR",8192:"EN QUAD",8193:"EM QUAD",8194:"EN SPACE",8195:"EM SPACE",8196:"THREE-PER-EM SPACE",8197:"FOUR-PER-EM SPACE",8198:"SIX-PER-EM SPACE",8199:"FIGURE SPACE",8200:"PUNCTUATION SPACE",8201:"THIN SPACE",8202:"HAIR SPACE",8232:"LINE SEPARATOR",8233:"PARAGRAPH SEPARATOR",8239:"NARROW NO-BREAK SPACE",8287:"MEDIUM MATHEMATICAL SPACE",12288:"IDEOGRAPHIC SPACE",65279:"ZERO WIDTH NO-BREAK SPACE"};if(K[U])W=K[U];Z.push({filePath:J.filePath,line:z+1,column:G.index+1,ruleId:"no-irregular-whitespace",message:`Irregular whitespace detected: ${W} (U+${U.toString(16).toUpperCase().padStart(4,"0")})`,severity:"error",help:"Replace irregular whitespace with regular spaces or tabs"})}}return Z},fix:($)=>{return $.replace(/[\u00A0\u1680\u180E\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]/g," ")}};var CZ={meta:{docs:"Disallow new operators outside of assignments or comparisons",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(Q.startsWith("//")||Q.startsWith("/*")||Q.startsWith("*"))continue;if(/^\s*new\s+\w+/.test(z)){let q=/^\s*(?:const|let|var|this\.\w+)\s*=\s*new\s+/,U=/^\s*return\s+new\s+/,W=new RegExp("^\\s*new\\s+\\w[^;]*,"),K=/[=:,(]\s*new\s+/;if(!q.test(z)&&!U.test(z)&&!W.test(z)&&!K.test(Q)){let H=z.search(/new\s+/)+1;Z.push({filePath:J.filePath,line:Y+1,column:H,ruleId:"no-new",message:"Do not use 'new' for side effects",severity:"error",help:"Either assign the result to a variable or remove the 'new' operator if the side effect is intentional."})}}}return Z}};var IZ={meta:{docs:"Disallow multiple spaces in regular expressions",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y];if(/^\s*\/\//.test(z))continue;let Q=/\/(?![*/])((?:\\.|[^/\\])+)\/[gimsuvy]*/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){let U=G[1];if(/ {2,}/.test(U)){let W=G.index+1;Z.push({filePath:J.filePath,line:Y+1,column:W,ruleId:"no-regex-spaces",message:"Multiple spaces in regular expression",severity:"error",help:"Use quantifiers like {2} instead of multiple spaces for clarity."})}}let q=/new\s+RegExp\s*\(\s*['"`]([^'"`]+)['"`]/g;for(G=q.exec(z);G!==null;G=q.exec(z)){let U=G[1];if(/ {2,}/.test(U)){let W=G.index+1;Z.push({filePath:J.filePath,line:Y+1,column:W,ruleId:"no-regex-spaces",message:"Multiple spaces in regular expression",severity:"error",help:"Use quantifiers like {2} instead of multiple spaces for clarity."})}}}return Z}};var cQ=new Set(["|","&",":",","]),i0={meta:{docs:"Report variables and parameters that are declared/assigned but never used"},check:($,J)=>{if(J.filePath.endsWith("/no-unused-vars.ts"))return[];if(J.filePath.endsWith(".d.ts"))return[];let Z=[],X=J.options||{},Y=typeof X.varsIgnorePattern==="string"?X.varsIgnorePattern:"^_",z=typeof X.argsIgnorePattern==="string"?X.argsIgnorePattern:"^_",Q=new RegExp(Y,"u"),G=new RegExp(z,"u"),q=$.split(/\r?\n/),U=$,W=Array(q.length).fill(!1);(()=>{let M=[],E=!1,R=!1,S=!1,f=!1,O=!1,h="",P=()=>{if(h==="")return!0;if("=([{,;!&|?:+-*/%^~<>".includes(h))return!0;return!1};for(let C=0;C<q.length;C++){W[C]=M.length>0&&M[M.length-1]===-1;let I=q[C];for(let L=0;L<I.length;L++){let T=I[L];if(f){if(T==="*"&&L+1<I.length&&I[L+1]==="/")f=!1,L++;continue}if(O){O=!1;continue}let k=M.length>0&&M[M.length-1]===-1,N=M.length>0&&M[M.length-1]>=0;if(T==="\\"&&(E||R||S||k)){O=!0;continue}if(E){if(T==="'")E=!1;continue}if(R){if(T==='"')R=!1;continue}if(S){if(T==="["){let v=1,g=L+1;while(g<I.length){let x=I[g];if(x==="\\"){g+=2;continue}if(x==="]"){if(v--,v===0)break}g++}L=g;continue}if(T==="/"){S=!1;while(L+1<I.length&&/[gimsuvy]/.test(I[L+1]))L++}continue}if(k){if(T==="`")M.pop();else if(T==="$"&&L+1<I.length&&I[L+1]==="{")M.push(0),L++;continue}if(T==="/"&&L+1<I.length&&I[L+1]==="/")break;if(T==="/"&&L+1<I.length&&I[L+1]==="*"){f=!0,L++;continue}if(N){if(T==="`")M.push(-1),h="";else if(T==="'")E=!0,h="'";else if(T==='"')R=!0,h='"';else if(T==="{")M[M.length-1]++,h="{";else if(T==="}"){let v=M[M.length-1];if(v>0)M[M.length-1]=v-1;else M.pop();h="}"}else if(T==="/"&&P())S=!0;else if(!/\s/.test(T))h=T;continue}if(T==="`")M.push(-1),h="";else if(T==="'")E=!0,h="'";else if(T==='"')R=!0,h='"';else if(T==="/"&&P())S=!0;else if(!/\s/.test(T))h=T}}})();let H=new RegExp("^\\s*(?:const|let|var)\\s+(.+?);?\\s*$");for(let M=0;M<q.length;M++){if(W[M])continue;let E=q[M],R=E.match(H);if(!R)continue;let S=R[1],f=[],O="",h=0,P=0,C=null,I=!1;for(let L=0;L<S.length;L++){let T=S[L];if(I){I=!1,O+=T;continue}if(T==="\\"&&C){I=!0,O+=T;continue}if(!C){if(T==="/"&&S[L+1]==="/")break;if(T==="/"&&S[L+1]==="*"){L+=2;while(L<S.length&&!(S[L]==="*"&&S[L+1]==="/"))L++;L++;continue}if(T==="'")C="single";else if(T==='"')C="double";else if(T==="`")C="template";else if(T==="<")P++;else if(T===">")P--;else if(T==="("||T==="["||T==="{")h++;else if(T===")"||T==="]"||T==="}")h--;else if(T===","&&h===0&&P===0){f.push(O),O="";continue}}else if(C==="single"&&T==="'"||C==="double"&&T==='"'||C==="template"&&T==="`")C=null;O+=T}if(O)f.push(O);for(let L of f){let T=L.trim();if(!T)continue;let k=T.match(/^([$A-Z_][\w$]*)/i),N=[];if(k)N.push(k[1]);else if(T.startsWith("{")||T.startsWith("[")){let v=T[0],g=v==="{"?"}":"]",x=0,u=-1,d=null,p=!1;for(let y=0;y<T.length;y++){let b=T[y];if(p){p=!1;continue}if(b==="\\"&&d){p=!0;continue}if(!d){if(b==="'"||b==='"'||b==="`")d=b==="'"?"single":b==='"'?"double":"template";else if(b===v)x++;else if(b===g){if(x--,x===0){u=y;break}}}else if(d==="single"&&b==="'"||d==="double"&&b==='"'||d==="template"&&b==="`")d=null}if(u>0){let y=T.slice(1,u),b=[],a="",W0=0,c=null,s=!1;for(let r=0;r<y.length;r++){let o=y[r];if(s){s=!1,a+=o;continue}if(o==="\\"&&c){s=!0,a+=o;continue}if(!c){if(o==="'"||o==='"'||o==="`"){c=o==="'"?"single":o==='"'?"double":"template",a+=o;continue}if(o==="("||o==="{"||o==="[")W0++;if(o===")"||o==="}"||o==="]")W0--;if(o===","&&W0===0){b.push(a.trim()),a="";continue}}else if(c==="single"&&o==="'"||c==="double"&&o==='"'||c==="template"&&o==="`")c=null;a+=o}if(a.trim())b.push(a.trim());for(let r of b){if(r.startsWith("...")){let K0=r.slice(3).match(/^([$A-Z_][\w$]*)/i);if(K0)N.push(K0[1]);continue}let o=r.indexOf(":");if(o!==-1){let K0=r.slice(o+1).trim(),_0=0;for(let y0=0;y0<K0.length;y0++){let D0=K0[y0];if(D0==="("||D0==="{"||D0==="[")_0++;else if(D0===")"||D0==="}"||D0==="]")_0--;else if(D0==="="&&_0===0){K0=K0.slice(0,y0).trim();break}}let u0=K0.match(/^([$A-Z_][\w$]*)/i);if(u0)N.push(u0[1])}else{let K0=r,_0=0;for(let y0=0;y0<K0.length;y0++){let D0=K0[y0];if(D0==="("||D0==="{"||D0==="[")_0++;else if(D0===")"||D0==="}"||D0==="]")_0--;else if(D0==="="&&_0===0){K0=K0.slice(0,y0).trim();break}}let u0=K0.match(/^([$A-Z_][\w$]*)/i);if(u0)N.push(u0[1])}}}}for(let v of N){if(Q.test(v))continue;let g=U.indexOf(E),x=U.slice(g+E.length);if(!new RegExp(`\\b${v}\\b`,"g").test(x))Z.push({filePath:J.filePath,line:M+1,column:Math.max(1,E.indexOf(v)+1),ruleId:"pickier/no-unused-vars",message:`'${v}' is assigned a value but never used. Allowed unused vars must match pattern: ${Y}`,severity:"error",help:`Either use this variable in your code, remove it, or prefix it with an underscore (_${v}) to mark it as intentionally unused`})}}}let V=(M)=>{let R=((O)=>{let h="",P=null,C=!1,I=0;for(let L=0;L<O.length;L++){let T=O[L];if(C){C=!1;continue}if(T==="\\"&&P){C=!0;continue}if(!P){if(T==="'")P="single";else if(T==='"')P="double";else if(T==="`")P="template";else if(T==="("||T==="{"||T==="[")I++;else if(T===")"||T==="}"||T==="]")I--;else if(T==="="&&I===0)return h}else if(P==="single"&&T==="'"||P==="double"&&T==='"'||P==="template"&&T==="`")P=null;h+=T}return h})(M);return((O)=>{let h="",P=0;while(P<O.length){let C=O[P];if(C===":"){P++;while(P<O.length&&/\s/.test(O[P]))P++;let I=0,L=0,T=null,k=!1;while(P<O.length){let N=O[P];if(k){k=!1,P++;continue}if(N==="\\"&&T){k=!0,P++;continue}if(!T){if(N==="'")T="single";else if(N==='"')T="double";else if(N==="`")T="template";else if(N==="<")L++;else if(N===">")L--;else if(N==="("||N==="{"||N==="[")I++;else if(N===")"||N==="}"||N==="]")if(I>0)I--;else break;else if(N===","&&I===0&&L===0)break}else if(T==="single"&&N==="'"||T==="double"&&N==='"'||T==="template"&&N==="`")T=null;P++}continue}h+=C,P++}return h})(R).split(/[^$\w]+/).filter((O)=>O&&O!=="undefined")},A=(M,E)=>{let R=!1,S=0,f=0,O=!1,h=0,P=null,C=!1,I=!0,L="",T=!1,k=!1,N=[],v=!1;for(let g=M;g<q.length;g++){let x=q[g],u=x,d=N.length>0&&N[N.length-1]===-1,p=-1,y=null,b=!1;if(!d)for(let c=0;c<x.length-1;c++){let s=x[c],r=x[c+1];if(b){b=!1;continue}if(s==="\\"&&y){b=!0;continue}if(!y){if(s==="'")y="single";else if(s==='"')y="double";else if(s==="`")y="template";else if(s==="/"&&r==="/"){p=c;break}}else if(y==="single"&&s==="'"||y==="double"&&s==='"'||y==="template"&&s==="`")y=null}if(p>=0)u=x.slice(0,p);let a=(c)=>{let s="",r=0,o=null,K0=!1;while(r<c.length){let _0=c[r];if(K0){K0=!1,s+=_0,r++;continue}if(_0==="\\"&&o){K0=!0,s+=_0,r++;continue}if(!o){if(_0==="'")o="single";else if(_0==='"')o="double";else if(_0==="`")o="template";else if(_0==="/"){let u0=r>0?c.slice(0,r).trimEnd():"",y0=new RegExp("[=([{,:;!&|?]$");if(!u0||y0.test(u0)||u0.endsWith("return")){r++;while(r<c.length){if(c[r]==="\\"){r+=2;continue}if(c[r]==="/"){r++;while(r<c.length&&/[gimsuvy]/.test(c[r]))r++;break}r++}continue}}}else if(o==="single"&&_0==="'"||o==="double"&&_0==='"'||o==="template"&&_0==="`")o=null;s+=_0,r++}return s};if(!d)u=a(u);let W0=0;if(!R){let c=-1,s=I?typeof E==="number"?E:0:0;if(I=!1,s>=u.length){let r=u.indexOf("=>");s=r>=0?r+2:0}for(let r=s;r<u.length;r++){let o=u[r];if(C){C=!1;continue}if(o==="\\"&&P){C=!0;continue}if(!P){if(o!==" "&&o!=="\t"&&o!==`
58
- `&&o!=="\r"&&o!=="{"&&o!=="}"&&f===0)L=o;if(o==="'")P="single";else if(o==='"')P="double";else if(o==="`")P="template";else if(o==="<")h++;else if(o===">")h=Math.max(0,h-1);else if(o==="{"){if(f===0){if(O&&h===0&&!cQ.has(L)){c=r;break}}f++}else if(o==="}"){if(f>0){if(f--,f===0)O=!0,L="}"}}}else if(P==="single"&&o==="'"||P==="double"&&o==='"'||P==="template"&&o==="`")P=null}if(c===-1){if(f>0&&L===":")continue;for(let r=s;r<u.length;r++)if(u[r]==="{"&&!P){c=r;break}}if(c===-1)continue;R=!0,S=1,W0=c+1,M=g}for(let c=W0;c<u.length;c++){let s=u[c];if(v){v=!1;continue}let r=N.length>0&&N[N.length-1]===-1,o=N.length>0&&N[N.length-1]>=0;if(s==="\\"&&(T||k||r)){v=!0;continue}if(T){if(s==="'")T=!1;continue}if(k){if(s==='"')k=!1;continue}if(r){if(s==="`")N.pop();else if(s==="$"&&c+1<u.length&&u[c+1]==="{")N[N.length-1]=0,c++;continue}if(o){if(s==="/"){let K0=u.slice(0,c).trimEnd();if(!K0||/[=([{,:;!&|?]$/.test(K0)||K0.endsWith("return")){c++;while(c<u.length){if(u[c]==="\\"){c+=2;continue}if(u[c]==="/"){while(c+1<u.length&&/[gimsuvy]/.test(u[c+1]))c++;break}c++}continue}}if(s==="`"){N.push(-1);continue}if(s==="'"){T=!0;continue}if(s==='"'){k=!0;continue}if(s==="{"){N[N.length-1]++;continue}if(s==="}")if(N[N.length-1]>0)N[N.length-1]--;else N[N.length-1]=-1;continue}if(s==="'")T=!0;else if(s==='"')k=!0;else if(s==="`")N.push(-1);else if(s==="{")S++;else if(s==="}"){if(S--,S===0)return{from:M,to:g}}}}return null},_=(M,E)=>{let R={parenDepth:0,braceDepth:0,bracketDepth:0,inTemplate:!1},S=(I)=>{for(let L=0;L<I.length;L++){let T=I[L];if(T==="`")R.inTemplate=!R.inTemplate;else if(T==="(")R.parenDepth++;else if(T===")")R.parenDepth--;else if(T==="{")R.braceDepth++;else if(T==="}")R.braceDepth--;else if(T==="[")R.bracketDepth++;else if(T==="]")R.bracketDepth--}},f=()=>R.parenDepth>0||R.braceDepth>0||R.bracketDepth>0||R.inTemplate,O=(I)=>/(?:\?|:|\.|,|&&|\|\||\?\?|\+|-|\*|\/|%|\*\*)$/.test(I.trimEnd()),h=(I)=>/^(?:\?|:|\.|,|&&|\|\||\?\?|\+|-|\*|\/|%|\*\*)/.test(I.trimStart()),P=q[M].slice(E+2);S(P);let C=M+1;while(C<q.length){let I=C===M+1?P:q[C-1];if(!(!P.trim()||f()||O(I)||h(q[C])))break;P+=`
59
- ${q[C]}`,S(q[C]),C++}return P},F=[],w=!1,j=!1,D=!1;for(let M=0;M<q.length;M++){let E=q[M];if(/^\s*\/\//.test(E))continue;if(W[M])continue;let R=E,S=null,f=!1,O=!1;for(let T=0;T<E.length-1;T++){let k=E[T],N=E[T+1];if(O){O=!1;continue}if(k==="\\"&&(S||f)){O=!0;continue}if(!S&&!f){if(k==="'")S="single";else if(k==='"')S="double";else if(k==="`")S="template";else if(k==="/"){let v=E[T-1]||"",g=T>=2?E.slice(T-2,T):"";if(new RegExp("[=([{,:;!?]").test(v)||g==="&&"||g==="||"||/^\s*$/.test(E.slice(0,T)))f=!0;else if(N==="/"){R=E.slice(0,T);break}}}else if(S){if(S==="single"&&k==="'"||S==="double"&&k==='"'||S==="template"&&k==="`")S=null}else if(f&&k==="/")f=!1}let C=((T)=>{let k="",N=0;while(N<T.length){if(T[N]==="/"){let v=N>0?T.slice(0,N).trimEnd():"",g=new RegExp("[=([{,:;!&|?]$");if(!v||g.test(v)||v.endsWith("return")){N++;while(N<T.length){if(T[N]==="\\"){N+=2;continue}if(T[N]==="/"){N++;while(N<T.length&&/[gimsuvy]/.test(T[N]))N++;break}N++}continue}}k+=T[N],N++}return k})(R).replace(/'(?:[^'\\]|\\.)*'/g,"''").replace(/"(?:[^"\\]|\\.)*"/g,'""');{let T="";for(let k=0;k<C.length;k++){let N=C[k];if(D){D=!1;let x=F.length>0&&F[F.length-1]===-1;T+=x?" ":N;continue}let v=F.length>0&&F[F.length-1]===-1,g=F.length>0&&F[F.length-1]>=0;if(N==="\\"&&(w||j||v)){D=!0,T+=v?" ":N;continue}if(w){if(N==="'")w=!1;T+=N;continue}if(j){if(N==='"')j=!1;T+=N;continue}if(v){if(N==="`")F.pop();else if(N==="$"&&k+1<C.length&&C[k+1]==="{")F[F.length-1]=0,T+=" ",k++;else T+=" ";continue}if(g){if(N==="`")F.push(-1),T+=" ";else if(N==="'")w=!0,T+=N;else if(N==='"')j=!0,T+=N;else if(N==="{")F[F.length-1]++,T+=N;else if(N==="}")if(F[F.length-1]>0)F[F.length-1]--,T+=N;else F[F.length-1]=-1,T+=" ";else T+=N;continue}if(N==="`")F.push(-1),T+=" ";else if(N==="'")w=!0,T+=N;else if(N==='"')j=!0,T+=N;else T+=N}C=T}let I=C.match(/\bfunction\b/);if(I){if(E.includes("function scanContent")||E.includes("function findMatching"))continue;if(C.slice(I.index+8).trimStart().startsWith(":"))continue;let k=C.slice(0,I.index).trimEnd();if(k.endsWith(".")||k.endsWith("?."))continue;let N=I.index,v=E.indexOf("(",N);if(v===-1)continue;let g=0,x=-1,u=M,d="";for(let a=M;a<q.length;a++){let W0=a===M?q[a]:q[a],c=a===M?v:0;for(let s=c;s<W0.length;s++)if(W0[s]==="(")g++;else if(W0[s]===")"){if(g--,g===0){if(x=s,u=a,M===a)d=E.slice(v+1,x);else{d=E.slice(v+1);for(let r=M+1;r<a;r++)d+=` ${q[r]}`;d+=` ${W0.slice(0,x)}`}break}}if(x!==-1)break}if(x===-1)continue;let p=V(d),y=A(u,x),b="";if(y)if(y.from===u){let a=q[y.from],W0=a.lastIndexOf("{"),c=W0>=0?a.slice(W0+1):"";if(y.to>y.from)b=`${c}
60
- ${q.slice(y.from+1,y.to+1).join(`
61
- `)}`;else b=c}else b=q.slice(y.from,y.to+1).join(`
62
- `);for(let a of p){if(!a||G.test(a)||a==="undefined")continue;if(!new RegExp(`\\b${a}\\b`,"g").test(b))Z.push({filePath:J.filePath,line:M+1,column:Math.max(1,E.indexOf(a)+1),ruleId:"pickier/no-unused-vars",message:`'${a}' is defined but never used (function parameter). Allowed unused args must match pattern: ${z}`,severity:"error"})}continue}let L=E.indexOf("=>");if(L!==-1&&C.includes("=>")){let T=-1;for(let k=L-1;k>=0;k--){let N=E[k];if(N===")"){T=k;break}if(N!==" "&&N!=="\t"&&N!==`
63
- `&&N!==":"&&N!==">"&&!/\w/.test(N))break}if(T!==-1){let k=-1,N=1;for(let v=T-1;v>=0;v--){let g=E[v];if(g===")")N++;else if(g==="("){if(N--,N===0){k=v;break}}}if(k!==-1){let v=!1,g=0,x=0;for(let d=k-1;d>=0;d--){let p=E[d];if(p===">"){g++;continue}if(p==="<"){if(g>0){g--;continue}if(x===0){v=!0;break}continue}if(p===":"&&g===0&&x===0){v=!0;break}if(g>0)continue;if(p===",")continue;if(p===")"){x++;continue}if(p==="("){x--;continue}if(p==="|"||p==="&"){v=!0;break}if(p==="="||p==="{"||p==="["){if(x>=0)break;continue}if(p!==" "&&p!=="\t"&&!/[\w.]/.test(p)){if(x>=0)break}}if(!v){let d=E.slice(0,k);if(/^\s*(?:export\s+)?(?:declare\s+)?type\s+\w[\w$]*\s*(?:<[^>]*>)?\s*=\s*$/.test(d))v=!0;else if(/\bas\s+$/.test(d))v=!0}if(v)continue;let u=E.slice(k+1,T);if(!(u.trim()===""&&E.slice(Math.max(0,k-10),k).includes("async"))){let d=V(u);if(d.length>0){let p="";if(E.slice(L+2).trimStart().startsWith("{")){let b=A(M,L);if(b)if(b.from===M){let a=q[b.from],W0=a.indexOf("{",L),c=W0>=0?a.slice(W0+1):"";if(b.to>b.from)p=`${c}
64
- ${q.slice(b.from+1,b.to+1).join(`
65
- `)}`;else p=c}else p=q.slice(b.from,b.to+1).join(`
66
- `)}else p=_(M,L);for(let b of d){if(!b||G.test(b)||b==="undefined")continue;if(!new RegExp(`\\b${b}\\b`,"g").test(p))Z.push({filePath:J.filePath,line:M+1,column:Math.max(1,E.indexOf(b)+1),ruleId:"pickier/no-unused-vars",message:`'${b}' is defined but never used (function parameter). Allowed unused args must match pattern: ${z}`,severity:"error"})}continue}}}}}{let T=/(?:^|[=,:({\s])\s*([$A-Z_][\w$]*)\s*=>/gi,k;while((k=T.exec(C))!==null){let N=k[1];if(!N||G.test(N)||N==="undefined")continue;let v=C.slice(0,k.index+k[0].indexOf(N)).trimEnd();if(/\)\s*:$/.test(v)||/\)\s*:\s*$/.test(v))continue;if(/^(?:string|number|boolean|void|never|any|unknown|object|bigint|symbol|undefined|null)$/.test(N))continue;let g=new RegExp(`\\b${N}\\s*=>`),x=E.match(g);if(!x)continue;let u=E.indexOf(x[0])+x[0].lastIndexOf("=>"),d="";if(E.slice(u+2).trimStart().startsWith("{")){let b=A(M,u);if(b)if(b.from===M){let a=q[b.from],W0=a.indexOf("{",u),c=W0>=0?a.slice(W0+1):"";if(b.to>b.from)d=`${c}
67
- ${q.slice(b.from+1,b.to+1).join(`
68
- `)}`;else d=c}else d=q.slice(b.from,b.to+1).join(`
69
- `)}else d=_(M,u);if(!new RegExp(`\\b${N}\\b`,"g").test(d))Z.push({filePath:J.filePath,line:M+1,column:Math.max(1,E.indexOf(N)+1),ruleId:"pickier/no-unused-vars",message:`'${N}' is defined but never used (function parameter). Allowed unused args must match pattern: ${z}`,severity:"error"})}}}return Z},fix:($,J)=>{let Z=i0.check($,J);if(Z.length===0)return $;let X=Z.filter((K)=>K.message.includes("(function parameter)"));if(X.length===0)return $;let Y=$.split(/\r?\n/),z=new Set,Q=/(?:eslint|pickier)-disable-next-line\b([^*\n]*)/;for(let K=0;K<Y.length;K++){let H=Y[K].match(Q);if(!H)continue;let V=H[1].trim();if(V===""||/\bno-unused-vars\b/.test(V)||/\bpickier\/no-unused-vars\b/.test(V))z.add(K+2)}let G=new Map;for(let K of X){if(z.has(K.line))continue;let H=K.message.match(/^'([^']+)'/);if(!H)continue;let V=H[1];if(V.startsWith("_"))continue;let A=G.get(K.line);if(!A)A=new Set,G.set(K.line,A);A.add(V)}if(G.size===0)return $;let q=$.split(/\r?\n/);function U(K){let H=[],V=!1,A=!1,_=!1,F=-1;for(let w=0;w<K.length;w++){let j=K[w];if(_){_=!1;continue}if(j==="\\"&&(V||A||F>=0)){_=!0;continue}if(F>=0){if(j==="`")H.push([F,w]),F=-1;continue}if(V){if(j==="'")V=!1;continue}if(A){if(j==='"')A=!1;continue}if(j==="`")F=w;else if(j==="'")V=!0;else if(j==='"')A=!0}if(F>=0)H.push([F,K.length]);return H}let W=!1;for(let[K,H]of G){let V=K-1,A=q[V];if(A===void 0)continue;let _=U(A),F=(D)=>_.some(([M,E])=>D>M&&D<E),w=[];for(let D of H){let M=D.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),E=new RegExp(`(?<=[(,]\\s*)\\b${M}\\b(?=\\s*[,):=])`,"g"),R;while((R=E.exec(A))!==null){if(F(R.index))continue;w.push({start:R.index,end:R.index+D.length,name:D})}}if(w.length===0)continue;w.sort((D,M)=>M.start-D.start);let j=A;for(let D of w)j=`${j.slice(0,D.start)}_${D.name}${j.slice(D.end)}`;if(j!==A)q[V]=j,W=!0}return W?q.join(`
70
- `):$}};function t0($){let J=$.split(/\r?\n/),Z=Array(J.length).fill(!1),X=[],Y=!1,z=!1,Q=!1,G=!1,q=!1,U="",W=()=>{if(U==="")return!0;return"=([{,;!&|?:+-*/%^~<>".includes(U)};for(let K=0;K<J.length;K++){Z[K]=X.length>0&&X[X.length-1]===-1;let H=J[K];for(let V=0;V<H.length;V++){let A=H[V];if(G){if(A==="*"&&V+1<H.length&&H[V+1]==="/")G=!1,V++;continue}if(q){q=!1;continue}let _=X.length>0&&X[X.length-1]===-1,F=X.length>0&&X[X.length-1]>=0;if(A==="\\"&&(Y||z||Q||_)){q=!0;continue}if(Y){if(A==="'")Y=!1;continue}if(z){if(A==='"')z=!1;continue}if(Q){if(A==="["){let w=1,j=V+1;while(j<H.length){let D=H[j];if(D==="\\"){j+=2;continue}if(D==="]"){if(w--,w===0)break}j++}V=j;continue}if(A==="/"){Q=!1;while(V+1<H.length&&/[gimsuvy]/.test(H[V+1]))V++}continue}if(_){if(A==="`")X.pop();else if(A==="$"&&V+1<H.length&&H[V+1]==="{")X.push(0),V++;continue}if(A==="/"&&V+1<H.length&&H[V+1]==="/")break;if(A==="/"&&V+1<H.length&&H[V+1]==="*"){G=!0,V++;continue}if(F){if(A==="`")X.push(-1),U="";else if(A==="'")Y=!0,U="'";else if(A==='"')z=!0,U='"';else if(A==="{")X[X.length-1]++,U="{";else if(A==="}"){let w=X[X.length-1];if(w>0)X[X.length-1]=w-1;else X.pop();U="}"}else if(A==="/"&&W())Q=!0;else if(!/\s/.test(A))U=A;continue}if(A==="`")X.push(-1),U="";else if(A==="'")Y=!0,U="'";else if(A==='"')z=!0,U='"';else if(A==="/"&&W())Q=!0;else if(!/\s/.test(A))U=A}}return Z}function rQ($,J){let Z=[],X=0,Y=0,z=null,Q=!1;for(let G=0;G<$.length;G++){let q=$[G];if(Q){Q=!1;continue}if(q==="\\"&&z){Q=!0;continue}if(!z){if(q==="'")z="single";else if(q==='"')z="double";else if(q==="`")z="template";else if(q==="("||q==="{"||q==="[")X++;else if(q===")"||q==="}"||q==="]")X--;else if(q===J&&X===0)Z.push($.slice(Y,G)),Y=G+1}else if(z==="single"&&q==="'"||z==="double"&&q==='"'||z==="template"&&q==="`")z=null}return Z.push($.slice(Y)),Z}function lQ($){let J=0;for(let Z=0;Z<$.length;Z++){let X=$[Z];if(X==="{"||X==="("||X==="["||X==="<")J++;else if(X==="}"||X===")"||X==="]"||X===">")J--;else if(X==="="&&J===0&&$[Z+1]!=="="&&$[Z-1]!=="!"&&$[Z-1]!=="<"&&$[Z-1]!==">")return Z}return-1}function aQ($,J){let Z=new RegExp(`\\b${J}\\b`),X=0,Y=null,z=!1;while(X<$.length){let Q=$[X];if(z){z=!1,X++;continue}if(Q==="\\"&&Y){z=!0,X++;continue}if(Y){if(Y==="single"&&Q==="'"||Y==="double"&&Q==='"'||Y==="template"&&Q==="`")Y=null;X++;continue}if(Q==="'"){Y="single",X++;continue}if(Q==='"'){Y="double",X++;continue}if(Q==="`"){Y="template",X++;continue}if(Q==="["||Q==="{"){let G=Q,q=Q==="["?"]":"}",U=1,W=X+1;while(W<$.length&&U>0){let K=$[W];if(K==="\\"){W+=2;continue}if(K===G)U++;else if(K===q)U--;if(U===0)break;W++}if(U===0&&W<$.length){let K=W+1;while(K<$.length&&($[K]===" "||$[K]==="\t"||$[K]==="\r"||$[K]===`
71
- `))K++;if($[K]==="="&&$[K+1]!=="="&&$[K+1]!==">"){let H=$.slice(X+1,W);if(Z.test(H)){let V=new RegExp(`\\b${J}\\b\\s*:`),A=new RegExp(`:\\s*\\b${J}\\b`);if(G==="{"){if(!(V.test(H)&&!A.test(H)&&!new RegExp(`(?:^|[\\s,{])\\s*${J}\\s*(?:,|\\s*=|\\s*})`).test(H)))return!0}else return!0}}}X=W+1;continue}X++}return!1}function SZ($,J){let Z=new RegExp("^\\s*(?:let|var)\\s+(.+?);?\\s*$"),X=$.match(Z);if(!X)return null;let Y=X[1],z=lQ(Y);if(z>=0){let q=Y.indexOf(":");if(q>=0&&q<z)Y=Y.slice(0,q)+Y.slice(z)}let Q=rQ(Y,","),G=[];for(let q of Q){let U=q.trim();if(!U)continue;if(U.match(/^[{[]/))return null;let K=U.match(/^([$A-Z_][\w$]*)/i);if(!K)return null;let H=K[1];if(!/=/.test(U))return null;let A=J.indexOf($),_=J.slice(A+$.length),w=`\\b${H}\\s*(?:${["=","+=","-=","*=","/=","%=","**=","<<=",">>=",">>>=","&=","^=","|="].map((f)=>f.replace(/[|\\^$*+?.(){}[\]]/g,(O)=>`\\${O}`)).join("|")})`,j=new RegExp(w).test(_),D=new RegExp(`(?:^|[^$w])(?:\\+\\+|--)\\s*${H}\\b|\\b${H}\\s*(?:\\+\\+|--)`).test(_),M=aQ(_,H),E=U.indexOf("="),R=E>=0?U.slice(E+1):"",S=new RegExp(w).test(R);G.push({name:H,fixable:!j&&!D&&!M&&!S})}return G}var D8={meta:{docs:"Suggest 'const' for variables that are never reassigned (heuristic)"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=t0($);for(let z=0;z<X.length;z++){if(Y[z])continue;let Q=X[z],G=SZ(Q,$);if(!G)continue;for(let{name:q,fixable:U}of G){if(!U)continue;let W=Q.search(new RegExp(`\\b${q.replace(/\$/g,"\\$")}\\b`)),K=W!==-1?W:Q.indexOf(q);Z.push({filePath:J.filePath,line:z+1,column:Math.max(1,K+1),ruleId:"prefer-const",message:`'${q}' is never reassigned. Use 'const' instead`,severity:"error",help:`Change 'let ${q}' to 'const ${q}' since the variable is never reassigned. This makes your code more predictable and prevents accidental mutations`})}}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=t0($),X=new Set,Y=/(?:eslint|pickier)-disable-next-line\b([^*\n]*)/;for(let Q=0;Q<J.length;Q++){let G=J[Q].match(Y);if(!G)continue;let q=G[1].trim();if(q===""||/\bprefer-const\b/.test(q))X.add(Q+2)}let z=!1;for(let Q=0;Q<J.length;Q++){if(X.has(Q+1))continue;if(Z[Q])continue;let G=J[Q];if(!/^\s*let\b/.test(G))continue;let q=SZ(G,$);if(!q||q.length===0)continue;if(!q.every((W)=>W.fixable))continue;let U=G.replace(/^(\s*)let(\s+)/,"$1const$2");if(U!==G)J[Q]=U,z=!0}return z?J.join(`
72
- `):$}};var vZ={meta:{docs:"Prefer object spread ({...obj}) over Object.assign() for object composition"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y];if(/^\s*\/\//.test(z))continue;let Q=z.indexOf("//"),G=Q>=0?z.slice(0,Q):z,q=G.matchAll(/\bObject\.assign\s*\(/g);for(let U of q){let W=U.index,K=G.slice(0,W),H=(K.match(/'/g)||[]).length,V=(K.match(/"/g)||[]).length,A=(K.match(/`/g)||[]).length;if(H%2!==0||V%2!==0||A%2!==0)continue;let _=W+13,F=G.slice(_),w=-1,j=1,D=0,M=0,E=null,R=!1;for(let f=1;f<F.length;f++){let O=F[f];if(R){R=!1;continue}if(O==="\\"&&E){R=!0;continue}if(!E){if(O==="'")E="single";else if(O==='"')E="double";else if(O==="`")E="template";else if(O==="(")j++;else if(O===")"){if(j--,j===0)break}else if(O==="{")D++;else if(O==="}")D--;else if(O==="[")M++;else if(O==="]")M--;else if(O===","&&j===1&&D===0&&M===0){w=f;break}}else if(E==="single"&&O==="'"||E==="double"&&O==='"'||E==="template"&&O==="`")E=null}if(w===-1)continue;let S=F.slice(1,w).trim();if(S==="{}")Z.push({filePath:J.filePath,line:Y+1,column:W+1,ruleId:"prefer-object-spread",message:"Prefer object spread over Object.assign",severity:"error",help:"Use object spread syntax: {...obj} instead of Object.assign({}, obj)"});else if(S==="{}"||/^\{.*\}$/.test(S))Z.push({filePath:J.filePath,line:Y+1,column:W+1,ruleId:"prefer-object-spread",message:"Prefer object spread over Object.assign for object literals",severity:"error",help:"Use object spread syntax: {...obj1, ...obj2}"})}}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=[];for(let X=0;X<J.length;X++){let Y=J[X];Y=Y.replace(/\bObject\.assign\s*\(\s*\{\}\s*,\s*([^)]+)\)/g,(z,Q)=>{return`{${Q.split(",").map((q)=>q.trim()).map((q)=>`...${q}`).join(", ")}}`}),Z.push(Y)}return Z.join(`
73
- `)}};function sQ($,J){let Z=!1,X=!1,Y=!1;for(let z=0;z<J;z++){let Q=$[z];if(Q==="\\"){z++;continue}if(Q==="'"&&!X&&!Y)Z=!Z;else if(Q==='"'&&!Z&&!Y)X=!X;else if(Q==="`"&&!Z&&!X)Y=!Y}return Z||X||Y}var R8={meta:{docs:"Prefer template literals over string concatenation",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(Q.startsWith("//")||Q.startsWith("/*")||Q.startsWith("*")||Q.startsWith("import"))continue;let G=/(['"`][^'"`]*['"`])\s*\+\s*([a-z_$][\w$]*)/i,q=/([a-z_$][\w$]*)\s*\+\s*(['"`][^'"`]*['"`])/i,U=Q.match(G)||Q.match(q);if(U){let W=z.indexOf("//"),K=z.indexOf(U[0]);if(W>=0&&K>W)continue;if(sQ(z,K))continue;let H=!!Q.match(q),V=!!Q.match(G);if(H&&!V){if(Q.slice(Q.indexOf(U[0])+U[0].length).startsWith("."))continue}Z.push({filePath:J.filePath,line:Y+1,column:K+1,ruleId:"general/prefer-template",message:"Unexpected string concatenation. Use template literals instead",severity:"warning",help:"Use template literals (backticks) instead of string concatenation. Example: `hello ${name}!` instead of 'hello ' + name + '!'"})}}return Z}};var yZ={name:"general",rules:{"array-callback-return":B(w$),"constructor-super":B(B$),"for-direction":B(M$),"getter-return":B(j$),"no-async-promise-executor":B(N$),"no-compare-neg-zero":B(T$),"no-cond-assign":B(E$),"no-const-assign":B(D$),"no-constant-condition":B(R$),"no-constructor-return":B(LZ),"no-dupe-class-members":B(O$),"no-dupe-keys":B(S1),"no-duplicate-case":B(L$),"no-empty-pattern":B(P$),"no-fallthrough":B(C$),"no-irregular-whitespace":B(PZ),"no-loss-of-precision":B(I$),"no-new":B(CZ),"no-regex-spaces":B(IZ),"no-promise-executor-return":B(S$),"no-redeclare":B(v$),"no-self-assign":B(v1),"no-self-compare":B(y$),"no-sparse-arrays":B(b$),"no-undef":B(k$),"no-unsafe-negation":B(g$),"no-unreachable":B(f$),"no-unused-vars":B(i0),"no-useless-catch":B(x$),"prefer-const":B(D8),"prefer-object-spread":B(vZ),"prefer-template":B(R8),"use-isnan":B(p$),"valid-typeof":B(h$)}};var k1={npm:"registry.npmjs.org",yarn:"registry.yarnpkg.com",verdaccio:"registry.verdaccio.org"};function bZ($){let J=$.split("/").pop()||"";if(J==="package-lock.json")return"npm";if(J==="yarn.lock")return"yarn";if(J==="bun.lockb"||J==="bun.lock")return"bun";return null}function x0($,J){let Z=bZ(J);if(!Z)return!1;if(Z==="npm")try{let X=JSON.parse($);return"lockfileVersion"in X||"dependencies"in X||"packages"in X}catch{return!1}if(Z==="yarn")return $.startsWith("#")||$.includes("__metadata:")||$.includes('resolved "');if(Z==="bun")try{let X=JSON.parse($);return"lockfileVersion"in X||"packages"in X}catch{return!1}return!1}function nQ($){let J=new Map,Z=JSON.parse($);if((Z.lockfileVersion||1)>=2&&Z.packages)for(let[Y,z]of Object.entries(Z.packages)){if(!Y||Y==="")continue;let Q=Y.replace(/^node_modules\//,"").replace(/\/node_modules\//g,"/"),G=Q.split("/node_modules/").pop()||Q;J.set(Y,{name:G,version:z.version||"",resolved:z.resolved,integrity:z.integrity})}else if(Z.dependencies)kZ(Z.dependencies,J,"");return{type:"npm",packages:J}}function kZ($,J,Z){for(let[X,Y]of Object.entries($)){let z=Z?`${Z}/${X}`:X;if(J.set(z,{name:X,version:Y.version||"",resolved:Y.resolved,integrity:Y.integrity}),Y.dependencies)kZ(Y.dependencies,J,z)}}function iQ($){let J=new Map,Z=$.includes("__metadata:"),X=Z?"yarn-berry":"yarn",Y=$.split(`
74
- `),z="",Q={};for(let G of Y){if(G.startsWith("#")||G.trim()==="")continue;if(!G.startsWith(" ")&&G.includes("@")&&G.endsWith(":")){if(z&&(Q.resolved||Q.integrity))J.set(z,Q);if(z=G.slice(0,-1).trim(),z.startsWith('"')&&z.endsWith('"'))z=z.slice(1,-1);let q=z.match(/^(@?[^@]+)@/);Q={name:q?q[1]:z.split("@")[0],version:""}}else if(G.startsWith(" ")||G.startsWith("\t")){let q=G.trim();if(q.startsWith("version")){let U=q.match(/version[:\s]+"?([^"]+)"?/);if(U)Q.version=U[1]}else if(q.startsWith("resolved")){let U=q.match(/resolved[:\s]+"?([^"]+)"?/);if(U)Q.resolved=U[1]}else if(q.startsWith("resolution:")&&Z){let U=q.match(/resolution[:\s]+"?([^"]+)"?/);if(U)Q.resolved=U[1]}else if(q.startsWith("integrity")||q.startsWith("checksum")){let U=q.match(/(integrity|checksum)[:\s]+"?([^"]+)"?/);if(U)Q.integrity=U[2]}}}if(z&&(Q.resolved||Q.integrity))J.set(z,Q);return{type:X,packages:J}}function tQ($){let J=new Map,Z=JSON.parse($);if(Z.packages)for(let[X,Y]of Object.entries(Z.packages)){if(!X||X==="")continue;if(Array.isArray(Y)){let[z,Q,G,q]=Y,U=X,W="";if(typeof z==="string"&&z.includes("@")){let K=z.lastIndexOf("@");if(K>0)U=z.substring(0,K),W=z.substring(K+1)}J.set(X,{name:U,version:W,resolved:Q||void 0,integrity:q||void 0})}else if(typeof Y==="object")J.set(X,{name:Y.name||X.split("@")[0],version:Y.version||"",resolved:Y.resolved,integrity:Y.integrity||Y.hash})}return{type:"bun",packages:J}}function p0($,J){let Z=bZ(J);if(!Z)return null;try{switch(Z){case"npm":return nQ($);case"yarn":return iQ($);case"bun":return tQ($);default:return null}}catch{return null}}function fZ($){try{return new URL($).hostname}catch{return null}}function O8($){try{return new URL($).protocol}catch{return null}}function gZ($){try{let Z=new URL($).pathname,X=Z.indexOf("/-/");if(X===-1)return null;let Y=Z.substring(1,X);if(Y.startsWith("@"))return Y;return Y}catch{return null}}function xZ($){if(!$)return null;let J=$.match(/^(sha\d+)-/);return J?J[1]:null}function pZ($){return $.map((J)=>{let Z=J.toLowerCase();return k1[Z]||J})}var uZ={meta:{docs:"Ensure all packages are from allowed registry hosts",recommended:!0},check($,J){let Z=[];if(!x0($,J.filePath))return Z;let X=p0($,J.filePath);if(!X)return Z;let Y=J.options||{},z=Y.allowedHosts||["npm","yarn"],Q=Y.emptyHostname!==!1,G=pZ(z),q=$.split(`
75
- `);for(let[U,W]of X.packages){if(!W.resolved){if(!Q){let H=hZ(q,U);Z.push({filePath:J.filePath,line:H,column:1,ruleId:"lockfile/validate-host",message:`Package "${W.name}" has no resolved URL`,severity:"error",help:"All packages should have a resolved URL from an allowed registry."})}continue}let K=fZ(W.resolved);if(!K)continue;if(!G.includes(K)){let H=hZ(q,U),V=z.map((A)=>k1[A.toLowerCase()]||A).join(", ");Z.push({filePath:J.filePath,line:H,column:1,ruleId:"lockfile/validate-host",message:`Invalid host for package "${W.name}": expected one of [${V}], got "${K}"`,severity:"error",help:`Package is resolving from an unauthorized registry. This could indicate a supply chain attack. Allowed hosts: ${V}`})}}return Z}};function hZ($,J){for(let Z=0;Z<$.length;Z++)if($[Z].includes(J)||$[Z].includes(`"${J}"`))return Z+1;return 1}var mZ={meta:{docs:"Ensure all packages use HTTPS protocol",recommended:!0},check($,J){let Z=[];if(!x0($,J.filePath))return Z;let X=p0($,J.filePath);if(!X)return Z;let Y=$.split(`
76
- `);for(let[z,Q]of X.packages){if(!Q.resolved)continue;let G=O8(Q.resolved);if(!G)continue;if(G!=="https:"){let q=eQ(Y,z);Z.push({filePath:J.filePath,line:q,column:1,ruleId:"lockfile/validate-https",message:`Package "${Q.name}" uses insecure protocol: "${G}" instead of "https:"`,severity:"error",help:"All packages should be downloaded over HTTPS to prevent man-in-the-middle attacks."})}}return Z}};function eQ($,J){for(let Z=0;Z<$.length;Z++)if($[Z].includes(J)||$[Z].includes(`"${J}"`))return Z+1;return 1}var dZ={meta:{docs:"Ensure all packages use strong integrity hashes (SHA512)",recommended:!0},check($,J){let Z=[];if(!x0($,J.filePath))return Z;let X=p0($,J.filePath);if(!X)return Z;let Y=J.options||{},z=Y.requiredAlgorithm||"sha512",Q=new Set(Y.exclude||[]),G={sha1:1,sha256:2,sha384:3,sha512:4},q=G[z]||4,U=$.split(`
77
- `);for(let[W,K]of X.packages){if(Q.has(K.name))continue;if(!K.integrity)continue;let H=xZ(K.integrity);if(!H)continue;if((G[H.toLowerCase()]||0)<q){let A=$G(U,W);Z.push({filePath:J.filePath,line:A,column:1,ruleId:"lockfile/validate-integrity",message:`Package "${K.name}" uses weak hash algorithm: "${H}" (required: ${z})`,severity:"error",help:`Weak hash algorithms are susceptible to collision attacks. Upgrade to ${z} by regenerating your lockfile with a recent package manager.`})}}return Z}};function $G($,J){for(let Z=0;Z<$.length;Z++)if($[Z].includes(J)||$[Z].includes(`"${J}"`))return Z+1;return 1}var oZ={meta:{docs:"Ensure package names match their resolved URLs",recommended:!0},check($,J){let Z=[];if(!x0($,J.filePath))return Z;let X=p0($,J.filePath);if(!X)return Z;let z=(J.options||{}).aliases||{},Q=Object.values(k1),G=$.split(`
78
- `);for(let[q,U]of X.packages){if(!U.resolved)continue;let W=!1;try{let A=new URL(U.resolved);W=Q.includes(A.hostname)}catch{continue}if(!W)continue;let K=gZ(U.resolved);if(!K)continue;let H=U.name,V=z[H]||H;if(K!==V){let A=ZG(G,q);Z.push({filePath:J.filePath,line:A,column:1,ruleId:"lockfile/validate-package-names",message:`Package name mismatch: "${H}" resolves to "${K}"`,severity:"error",help:`This could indicate a package substitution attack. The lockfile entry is for "${H}" but the resolved URL points to "${K}".`})}}return Z}};function ZG($,J){for(let Z=0;Z<$.length;Z++)if($[Z].includes(J)||$[Z].includes(`"${J}"`))return Z+1;return 1}var cZ={meta:{docs:"Ensure all packages use allowed URL schemes",recommended:!0},check($,J){let Z=[];if(!x0($,J.filePath))return Z;let X=p0($,J.filePath);if(!X)return Z;let Q=((J.options||{}).allowedSchemes||["https:","git+https:","git+ssh:"]).map((q)=>q.endsWith(":")?q:`${q}:`),G=$.split(`
79
- `);for(let[q,U]of X.packages){if(!U.resolved)continue;let W=O8(U.resolved);if(!W)continue;if(!Q.includes(W)){let K=JG(G,q);Z.push({filePath:J.filePath,line:K,column:1,ruleId:"lockfile/validate-scheme",message:`Package "${U.name}" uses disallowed URL scheme: "${W}"`,severity:"error",help:`Only the following URL schemes are allowed: ${Q.join(", ")}. Using "${W}" could be a security risk.`})}}return Z}};function JG($,J){for(let Z=0;Z<$.length;Z++)if($[Z].includes(J)||$[Z].includes(`"${J}"`))return Z+1;return 1}var rZ={name:"lockfile",rules:{"validate-host":uZ,"validate-https":mZ,"validate-integrity":dZ,"validate-package-names":oZ,"validate-scheme":cZ}};var lZ={meta:{docs:"Fenced code blocks should be surrounded by blank lines"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1;for(let z=0;z<X.length;z++){let Q=X[z];if(/^(?:`{3,}|~{3,})/.test(Q.trim()))if(!Y){let q=z>0?X[z-1]:"";if(z>0&&q.trim().length>0){if(!/^:::/.test(q.trim()))Z.push({filePath:J.filePath,line:z+1,column:1,ruleId:"markdown/blanks-around-fences",message:"Fenced code blocks should be surrounded by blank lines",severity:"error"})}Y=!0}else{let q=z+1<X.length?X[z+1]:"";if(z+1<X.length&&q.trim().length>0){if(!/^:::/.test(q.trim()))Z.push({filePath:J.filePath,line:z+1,column:1,ruleId:"markdown/blanks-around-fences",message:"Fenced code blocks should be surrounded by blank lines",severity:"error"})}Y=!1}}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=[],X=!1;for(let Y=0;Y<J.length;Y++){let z=J[Y],Q=Y>0?J[Y-1]:"",G=/^(?:`{3,}|~{3,})/.test(z.trim());if(G)if(!X){if(Y>0&&Q.trim().length>0&&!/^:::/.test(Q.trim())&&Z.length>0)Z.push("");X=!0}else X=!1;if(Z.push(z),G&&!X&&Y+1<J.length){let q=J[Y+1];if(q.trim().length>0&&!/^:::/.test(q.trim()))Z.push("")}}return Z.join(`
80
- `)}};var aZ={meta:{docs:"Headings should be surrounded by blank lines"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1;for(let z=0;z<X.length;z++){let Q=X[z],G=z>0?X[z-1]:"",q=z+1<X.length?X[z+1]:"";if(/^(?:`{3,}|~{3,})/.test(Q.trim())){Y=!Y;continue}if(Y)continue;let U=/^#{1,6}\s/.test(Q),W=z+1<X.length&&/^(?:=+|-+)\s*$/.test(q)&&Q.trim().length>0;if(U){if(z>0&&G.trim().length>0)Z.push({filePath:J.filePath,line:z+1,column:1,ruleId:"markdown/blanks-around-headings",message:"Headings should be surrounded by blank lines",severity:"error"});if(z+1<X.length&&q.trim().length>0&&!/^#{1,6}\s/.test(q))Z.push({filePath:J.filePath,line:z+1,column:1,ruleId:"markdown/blanks-around-headings",message:"Headings should be surrounded by blank lines",severity:"error"})}if(W){if(z>0&&G.trim().length>0)Z.push({filePath:J.filePath,line:z+1,column:1,ruleId:"markdown/blanks-around-headings",message:"Headings should be surrounded by blank lines",severity:"error"});let K=z+2<X.length?X[z+2]:"";if(z+2<X.length&&K.trim().length>0)Z.push({filePath:J.filePath,line:z+1,column:1,ruleId:"markdown/blanks-around-headings",message:"Headings should be surrounded by blank lines",severity:"error"})}}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=[],X=!1;for(let Y=0;Y<J.length;Y++){let z=J[Y],Q=Y>0?J[Y-1]:"",G=Y+1<J.length?J[Y+1]:"";if(/^(?:`{3,}|~{3,})/.test(z.trim())){X=!X,Z.push(z);continue}if(X){Z.push(z);continue}let q=/^#{1,6}\s/.test(z),U=Y+1<J.length&&/^(?:=+|-+)\s*$/.test(G)&&z.trim().length>0;if(q||U){if(Y>0&&Q.trim().length>0&&Z.length>0)Z.push("")}if(Z.push(z),q){if(Y+1<J.length&&G.trim().length>0&&!/^#{1,6}\s/.test(G))Z.push("")}if(Y>0&&/^(?:=+|-+)\s*$/.test(z)&&J[Y-1].trim().length>0){if((Y+1<J.length?J[Y+1]:"").trim().length>0)Z.push("")}}return Z.join(`
81
- `)}};var sZ={meta:{docs:"Lists should be surrounded by blank lines"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1,z=!1;for(let Q=0;Q<X.length;Q++){let G=X[Q],q=Q>0?X[Q-1]:"";if(/^(?:`{3,}|~{3,})/.test(G.trim())){if(z=!z,Y)Y=!1;continue}if(z)continue;let U=/^(?:\s*)(?:[*\-+]|\d+\.)\s+/.test(G),W=Y&&!U&&G.trim().length>0&&/^\s+/.test(G);if(U&&!Y){if(Y=!0,Q>0&&q.trim().length>0)Z.push({filePath:J.filePath,line:Q+1,column:1,ruleId:"markdown/blanks-around-lists",message:"Lists should be surrounded by blank lines",severity:"error"})}else if(!U&&!W&&Y&&G.trim().length>0){if(Y=!1,/^(?:\s*)(?:[*\-+]|\d+\.)\s+/.test(q))Z.push({filePath:J.filePath,line:Q,column:1,ruleId:"markdown/blanks-around-lists",message:"Lists should be surrounded by blank lines",severity:"error"})}}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=[],X=!1,Y=!1,z=(Q)=>/^(?:\s*)(?:[*\-+]|\d+\.)\s+/.test(Q);for(let Q=0;Q<J.length;Q++){let G=J[Q],q=Q>0?J[Q-1]:"";if(/^(?:`{3,}|~{3,})/.test(G.trim())){Y=!Y,X=!1,Z.push(G);continue}if(Y){Z.push(G);continue}let U=z(G),W=G.trim().length===0,K=X&&!U&&!W&&/^\s/.test(G);if(U&&!X){if(Q>0&&q.trim().length>0&&Z.length>0)Z.push("");X=!0}else if(!U&&!K&&!W&&X){if(X=!1,Z.length>0)Z.push("")}else if(W){let H=Q+1<J.length?J[Q+1]:"",V=z(H),A=/^\s+\S/.test(H);if(!V&&!A&&X)X=!1}Z.push(G)}return Z.join(`
82
- `)}};function m($){let J=new Set,Z=null,X=0,Y=!1,z=!1;for(let Q=0;Q<$.length;Q++){let G=$[Q],q=G.trim();if(Z===null){let H=q.match(/^(`{3,}|~{3,})(.*)$/);if(H){let V=H[1],A=H[2],_=V[0];if(_==="`"&&A.includes("`"));else{Z=_,X=V.length,J.add(Q),Y=!1,z=!1;continue}}}else{J.add(Q);let H=q.match(/^(`{3,}|~{3,})\s*$/);if(H&&H[1][0]===Z&&H[1].length>=X)Z=null,X=0;continue}let U=G.length-G.trimStart().length,W=/^\t/.test(G);if((U>=4||W)&&q.length>0){if(z||Y||Q===0)J.add(Q),z=!0;Y=z;continue}if(q.length===0){if(z)J.add(Q),Y=!0;else Y=!0;continue}z=!1,Y=!1}return J}function nZ($,J,Z){let X=0,Y=0;while(X<$.length){if($[X]!=="`"){X++;continue}let z=0;while($[X+z]==="`")z++;let Q=X+z,G=-1;while(Q<$.length)if($[Q]==="`"){let q=0;while($[Q+q]==="`")q++;if(q===z){G=Q;break}Q+=q}else Q++;if(G===-1){X+=z;continue}if(Y<X)J($.slice(Y,X));Z($.slice(X,G+z)),X=G+z,Y=X}if(Y<$.length)J($.slice(Y))}function L8($,J){let Z="";return nZ($,(X)=>{Z+=J(X)},(X)=>{Z+=X}),Z}function R7($){let J="";return nZ($,(Z)=>{J+=Z},(Z)=>{J+=" ".repeat(Z.length)}),J}function J1($){let J=new Set,Z=m($);for(let X=0;X<$.length;X++){if(Z.has(X))continue;let Y=$[X];if(!XG(Y))continue;if(X>0&&!Z.has(X-1)&&/\|/.test($[X-1])&&$[X-1].trim().length>0)J.add(X-1);J.add(X);for(let z=X+1;z<$.length;z++){if(Z.has(z))break;let Q=$[z];if(Q.trim().length===0||!/\|/.test(Q))break;J.add(z)}}return J}function XG($){let J=$.trim();if(!J.includes("|"))return!1;if(!/^[|\s:-]+$/.test(J))return!1;if(!/-{3,}/.test(J))return!1;return!0}var iZ={meta:{docs:"Tables should be surrounded by blank lines"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1,z=!1,Q=J1(X);for(let G=0;G<X.length;G++){let q=X[G],U=G>0?X[G-1]:"";if(/^(?:`{3,}|~{3,})/.test(q.trim())){if(z=!z,Y)Y=!1;continue}if(z)continue;let W=Q.has(G)&&/\|/.test(q)&&q.trim().length>0;if(W&&!Y){if(Y=!0,G>0&&U.trim().length>0)Z.push({filePath:J.filePath,line:G+1,column:1,ruleId:"markdown/blanks-around-tables",message:"Tables should be surrounded by blank lines",severity:"error"})}else if(!W&&Y){if(Y=!1,q.trim().length>0)Z.push({filePath:J.filePath,line:G+1,column:1,ruleId:"markdown/blanks-around-tables",message:"Tables should be surrounded by blank lines",severity:"error"})}}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=m(J),X=J1(J),Y=[],z=!1;for(let G=0;G<J.length;G++){let q=J[G];if(Z.has(G)){Y.push(q);continue}let U=X.has(G)&&/\|/.test(q)&&q.trim().length>0;if(U&&!z){let W=Y.length-1;if(W>=0&&Y[W].trim().length>0)Y.push("");z=!0,Y.push(q);continue}if(!U&&z){if(z=!1,q.trim().length>0)Y.push("")}Y.push(q)}let Q=Y.join(`
83
- `);return Q!==$?Q:$}};var tZ={meta:{docs:"Code block style should be consistent"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),z=(J.options||{}).style||"consistent",Q=null,G=!1;for(let q=0;q<X.length;q++){let U=X[q];if(/^(?:`{3,}|~{3,})/.test(U)){if(G=!G,z==="indented")Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"markdown/code-block-style",message:"Expected indented code block style",severity:"error"});else if(z==="consistent"){if(Q===null)Q="fenced";else if(Q==="indented")Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"markdown/code-block-style",message:"Code block style should be consistent throughout document",severity:"error"})}continue}if(G)continue;if(/^(?: {4}|\t)/.test(U)&&U.trim().length>0){let V=(q>0?X[q-1]:"").trim().length===0||q===0;if(V&&z==="fenced")Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"markdown/code-block-style",message:"Expected fenced code block style",severity:"error"});else if(V&&z==="consistent"){if(Q===null)Q="indented";else if(Q==="fenced")Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"markdown/code-block-style",message:"Code block style should be consistent throughout document",severity:"error"})}}}return Z}};function eZ($){let J=new Set,Z=null,X=0;for(let Y=0;Y<$.length;Y++){let z=$[Y].trim();if(Z===null){let Q=z.match(/^(`{3,}|~{3,})(.*)$/);if(Q){let G=Q[1][0];if(G==="`"&&Q[2].includes("`"))continue;Z=G,X=Q[1].length,J.add(Y)}}else{let Q=z.match(/^(`{3,}|~{3,})\s*$/);if(Q&&Q[1][0]===Z&&Q[1].length>=X)J.add(Y),Z=null,X=0}}return J}var $J={meta:{docs:"Code fence style should be consistent (backtick or tilde)"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=eZ(X),Q=(J.options||{}).style||"consistent",G=null;for(let q of Y){let U=X[q],K=/^`{3,}/.test(U.trim())?"backtick":"tilde";if(Q==="backtick"||Q==="tilde"){if(K!==Q)Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"markdown/code-fence-style",message:Q==="tilde"?"Expected tilde (~~~) code fence":"Expected backtick (```) code fence",severity:"error"})}else if(Q==="consistent"){if(G===null)G=K;else if(G!==K)Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"markdown/code-fence-style",message:"Code fence style should be consistent throughout document",severity:"error"})}}return Z},fix:($,J)=>{let X=(J.options||{}).style||"consistent",Y=$.split(/\r?\n/),z=eZ(Y),Q="backtick";if(X==="backtick"||X==="tilde")Q=X;else for(let W of z){Q=/^`{3,}/.test(Y[W].trim())?"backtick":"tilde";break}let G=Q==="backtick"?"`":"~",q=Q==="backtick"?/^(\s*)(~{3,})(.*)$/:/^(\s*)(`{3,})(.*)$/;return Y.map((W,K)=>{if(!z.has(K))return W;return W.replace(q,(H,V,A,_)=>`${V}${G.repeat(A.length)}${_}`)}).join(`
84
- `)}};var ZJ={meta:{docs:"Commands in code blocks should not be prefixed with $ unless showing output"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1,z=-1;for(let Q=0;Q<X.length;Q++){let G=X[Q];if(/^(?:`{3,}|~{3,})/.test(G)){if(!Y)Y=!0,z=Q;else Y=!1;continue}if(Y&&/^\$\s+/.test(G.trim())){let q=!0,U=!1;for(let W=z+1;W<Q;W++){let K=X[W].trim();if(K.length>0){if(U=!0,!K.startsWith("$")){q=!1;break}}}if(q&&U)Z.push({filePath:J.filePath,line:Q+1,column:G.indexOf("$")+1,ruleId:"markdown/commands-show-output",message:"Dollar signs used before commands without showing output",severity:"warning"})}}return Z}};var JJ={meta:{docs:"Link text should be meaningful and descriptive"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=["click here","here","link","read more","more","this"],z=!1;for(let Q=0;Q<X.length;Q++){let G=X[Q];if(/^(?:`{3,}|~{3,})/.test(G.trim())){z=!z;continue}if(z)continue;let U=G.replace(/``[^`]+``/g,(W)=>" ".repeat(W.length)).replace(/`[^`]+`/g,(W)=>" ".repeat(W.length)).matchAll(/\[([^\]]+)\]\([^)]+\)/g);for(let W of U){let K=W[1].toLowerCase().trim();if(Y.includes(K)){let H=W.index+1;Z.push({filePath:J.filePath,line:Q+1,column:H,ruleId:"markdown/descriptive-link-text",message:`Link text '${W[1]}' is not descriptive`,severity:"warning"})}}}return Z}};var YG=/(?<!\*)\*(?!\*)([^*]+)\*(?!\*)/,zG=/(?<!_)_(?!_)([^_]+)_(?!_)/,XJ={meta:{docs:"Emphasis style should be consistent (asterisk or underscore)"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),z=(J.options||{}).style||"consistent",Q=null,G=m(X);for(let q=0;q<X.length;q++){let U=X[q];if(G.has(q))continue;let W=R7(U),K=W.matchAll(/(?<!\*)\*(?!\*)([^*]+)\*(?!\*)/g);for(let V of K)if(z==="underscore")Z.push({filePath:J.filePath,line:q+1,column:V.index+1,ruleId:"markdown/emphasis-style",message:"Expected underscore (_) for emphasis",severity:"error"});else if(z==="consistent"){if(Q===null)Q="asterisk";else if(Q==="underscore")Z.push({filePath:J.filePath,line:q+1,column:V.index+1,ruleId:"markdown/emphasis-style",message:"Emphasis style should be consistent throughout document",severity:"error"})}let H=W.matchAll(/(?<!_)_(?!_)([^_]+)_(?!_)/g);for(let V of H)if(z==="asterisk")Z.push({filePath:J.filePath,line:q+1,column:V.index+1,ruleId:"markdown/emphasis-style",message:"Expected asterisk (*) for emphasis",severity:"error"});else if(z==="consistent"){if(Q===null)Q="underscore";else if(Q==="asterisk")Z.push({filePath:J.filePath,line:q+1,column:V.index+1,ruleId:"markdown/emphasis-style",message:"Emphasis style should be consistent throughout document",severity:"error"})}}return Z},fix:($,J)=>{let X=(J.options||{}).style||"consistent",Y=$.split(/\r?\n/),z=m(Y),Q="asterisk";if(X==="asterisk")Q="asterisk";else if(X==="underscore")Q="underscore";else if(X==="consistent"){let q=null,U=null;for(let K=0;K<Y.length;K++){if(z.has(K))continue;let H=R7(Y[K]);if(q===null){let V=H.match(YG);if(V)q={line:K,col:V.index}}if(U===null){let V=H.match(zG);if(V)U={line:K,col:V.index}}if(q&&U)break}if(q&&(!U||((K,H)=>K.line!==H.line?K.line-H.line:K.col-H.col)(q,U)<0))Q="asterisk";else if(U)Q="underscore"}let G=!1;for(let q=0;q<Y.length;q++){if(z.has(q))continue;let U=L8(Y[q],(W)=>Q==="asterisk"?W.replace(/(?<!_)_(?!_)([^_]+)_(?!_)/g,"*$1*"):W.replace(/(?<!\*)\*(?!\*)([^*]+)\*(?!\*)/g,"_$1_"));if(U!==Y[q])Y[q]=U,G=!0}return G?Y.join(`
85
- `):$}};var YJ={meta:{docs:"Fenced code blocks should have a language specified"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++)if(X[Y].match(/^(?:`{3,}|~{3,})\s*$/)){let G=!0;for(let q=Y-1;q>=0;q--)if(/^(?:`{3,}|~{3,})/.test(X[q])){G=!1;break}if(G)Z.push({filePath:J.filePath,line:Y+1,column:1,ruleId:"markdown/fenced-code-language",message:"Fenced code blocks should have a language specified",severity:"error"})}return Z}};var zJ={meta:{docs:"First line in a file should be a top-level heading"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=-1;for(let q=0;q<X.length;q++)if(X[q].trim().length>0){Y=q;break}if(Y===-1)return Z;let z=X[Y],Q=/^#\s/.test(z),G=Y+1<X.length&&/^=+\s*$/.test(X[Y+1]);if(!Q&&!G)Z.push({filePath:J.filePath,line:Y+1,column:1,ruleId:"markdown/first-line-heading",message:"First line in a file should be a top-level heading",severity:"warning"});return Z}};var QJ={meta:{docs:"Heading levels should only increment by one level at a time"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=m(X),z=0;for(let Q=0;Q<X.length;Q++){if(Y.has(Q))continue;let q=X[Q].match(/^(#{1,6})\s/);if(q){let U=q[1].length;if(z>0&&U>z+1)Z.push({filePath:J.filePath,line:Q+1,column:1,ruleId:"markdown/heading-increment",message:`Heading level should not skip from h${z} to h${U}`,severity:"error"});z=U}}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=m(J),X=0,Y=!1;for(let z=0;z<J.length;z++){if(Z.has(z))continue;let G=J[z].match(/^(#{1,6})(\s.*)$/);if(!G)continue;let q=G[1].length,U=X===0?q:Math.min(q,X+1);if(U!==q)J[z]="#".repeat(U)+G[2],Y=!0;X=U}return Y?J.join(`
86
- `):$}};var GJ={meta:{docs:"Headings must start at the beginning of the line"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1;for(let z=0;z<X.length;z++){let Q=X[z];if(/^(?:`{3,}|~{3,})/.test(Q.trim())){Y=!Y;continue}if(Y)continue;if(Q.match(/^(\s+)(#{1,6}\s)/))Z.push({filePath:J.filePath,line:z+1,column:1,ruleId:"markdown/heading-start-left",message:"Headings must start at the beginning of the line",severity:"error"})}return Z},fix:($)=>{return $.split(/\r?\n/).map((X)=>{return X.replace(/^(\s+)(#{1,6}\s)/,"$2")}).join(`
87
- `)}};var qJ={meta:{docs:"Heading style should be consistent (atx, setext, or consistent)"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),z=(J.options||{}).style||"consistent",Q=null,G=m(X);for(let q=0;q<X.length;q++){if(G.has(q))continue;let U=X[q],W=q+1<X.length?X[q+1]:"",K=U.match(/^#{1,6}\s/),H=W.match(/^(?:=+|-+)\s*$/)&&U.trim().length>0&&!G.has(q+1);if(K){if(z==="setext")Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"markdown/heading-style",message:"Expected setext style heading",severity:"error"});else if(z==="consistent"){if(Q===null)Q="atx";else if(Q==="setext")Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"markdown/heading-style",message:"Heading style should be consistent throughout document",severity:"error"})}}else if(H){if(z==="atx")Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"markdown/heading-style",message:"Expected atx style heading",severity:"error"});else if(z==="consistent"){if(Q===null)Q="setext";else if(Q==="atx")Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"markdown/heading-style",message:"Heading style should be consistent throughout document",severity:"error"})}}}return Z},fix:($,J)=>{let X=(J.options||{}).style||"consistent",Y=$.split(/\r?\n/),z=m(Y),Q=X==="consistent"?null:X;if(Q===null)for(let U=0;U<Y.length;U++){if(z.has(U))continue;let W=Y[U],K=U+1<Y.length?Y[U+1]:"";if(/^#{1,6}\s/.test(W)){Q="atx";break}if(/^(?:=+|-+)\s*$/.test(K)&&W.trim().length>0&&!z.has(U+1)){Q="setext";break}}if(Q===null)return $;let G=[],q=!1;for(let U=0;U<Y.length;U++){let W=Y[U];if(z.has(U)){G.push(W);continue}let K=U+1<Y.length?Y[U+1]:"";if(Q==="atx"){let H=/^=+\s*$/.test(K),V=/^-+\s*$/.test(K),A=z.has(U+1);if((H||V)&&!A&&W.trim().length>0&&!/^#{1,6}\s/.test(W)){let _=H?"#":"##";G.push(`${_} ${W.trim()}`),U++,q=!0;continue}}if(Q==="setext"){let H=W.match(/^(#{1,2})\s+(.+?)\s*#*\s*$/);if(H){let V=H[1].length,A=H[2],_=(V===1?"=":"-").repeat(Math.max(3,A.length));G.push(A),G.push(_),q=!0;continue}}G.push(W)}return q?G.join(`
88
- `):$}};var UJ={meta:{docs:"Horizontal rule style should be consistent"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),z=(J.options||{}).style||"consistent",Q=null;for(let G=0;G<X.length;G++){let q=X[G].trim();if(q.match(/^([-*_])\1{2,}$/)){let W=q;if(z!=="consistent"&&q!==z)Z.push({filePath:J.filePath,line:G+1,column:1,ruleId:"markdown/hr-style",message:`Expected horizontal rule style '${z}'`,severity:"error"});else if(z==="consistent"){if(Q===null)Q=W;else if(Q!==W)Z.push({filePath:J.filePath,line:G+1,column:1,ruleId:"markdown/hr-style",message:"Horizontal rule style should be consistent throughout document",severity:"error"})}}}return Z}};var WJ={meta:{docs:"Lines should not exceed a specified length"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=J.options||{},z=Y.line_length||80,Q=Y.code_blocks!==!1,G=Y.tables!==!1,q=Y.headings!==!1,U=!1;for(let W=0;W<X.length;W++){let K=X[W];if(/^(?:`{3,}|~{3,})/.test(K)){U=!U;continue}if(U&&!Q)continue;if(!G&&/\|/.test(K))continue;if(!q&&/^#{1,6}\s/.test(K))continue;if(K.length>z)Z.push({filePath:J.filePath,line:W+1,column:z+1,ruleId:"markdown/line-length",message:`Line length exceeds ${z} characters (${K.length} characters)`,severity:"warning"})}return Z}};var KJ={meta:{docs:"Link fragments should reference valid headings"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=m(X),z=new Set;for(let Q=0;Q<X.length;Q++){if(Y.has(Q))continue;let q=X[Q].match(/^#{1,6}\s+(.+?)(?:\s*#+\s*)?$/);if(q){let W=q[1].trim().toLowerCase().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-");z.add(W)}}for(let Q=0;Q<X.length;Q++){if(Y.has(Q))continue;let q=X[Q].matchAll(/\[[^\]]+\]\(#([^)]+)\)/g);for(let U of q){let W=U[1];if(!z.has(W)){let K=U.index+1;Z.push({filePath:J.filePath,line:Q+1,column:K,ruleId:"markdown/link-fragments",message:`Link fragment '#${W}' does not match any heading`,severity:"error"})}}}return Z}};var HJ={meta:{docs:"Link and image reference definitions should be used"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=m(X),z=new Map;for(let G=0;G<X.length;G++){if(Y.has(G))continue;let U=X[G].match(/^\[([^\]]+)\]:\s*\S+/);if(U)z.set(U[1].toLowerCase(),G+1)}let Q=new Set;for(let G=0;G<X.length;G++){if(Y.has(G))continue;let q=X[G];if(q.match(/^\[(?:[^\]]+)\]:\s*\S+/))continue;let U=q.matchAll(/\[([^\]]+)\](?:\[([^\]]+)\])?(?!\()/g);for(let W of U){let K=(W[2]||W[1]).toLowerCase();Q.add(K)}}for(let[G,q]of z)if(!Q.has(G))Z.push({filePath:J.filePath,line:q,column:1,ruleId:"markdown/link-image-reference-definitions",message:`Unused reference definition '[${G}]'`,severity:"warning"});return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=m(J),X=new Map;for(let Q=0;Q<J.length;Q++){if(Z.has(Q))continue;let G=J[Q].match(/^\s*\[([^\]]+)\]:\s*\S+/);if(G)X.set(Q,G[1].toLowerCase())}if(X.size===0)return $;let Y=new Set;for(let Q=0;Q<J.length;Q++){if(Z.has(Q))continue;if(X.has(Q))continue;let q=J[Q].matchAll(/\[([^\]]+)\](?:\[([^\]]*)\])?(?!\()/g);for(let U of q){let W=(U[2]&&U[2].length>0?U[2]:U[1]).toLowerCase();Y.add(W)}}let z=new Set;for(let[Q,G]of X)if(!Y.has(G))z.add(Q);if(z.size===0)return $;return J.filter((Q,G)=>!z.has(G)).join(`
89
- `)}};var VJ={meta:{docs:"Link and image style should be consistent"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=m(X),Q=(J.options||{}).style||"consistent",G=Q==="consistent"?null:Q;if(G===null){let U=0,W=0,K=!1;for(let H=0;H<X.length;H++){if(Y.has(H))continue;let V=X[H];if(V.includes("<!--"))K=!0;if(V.includes("-->")){K=!1;continue}if(K)continue;if(/^\s*\[(?:[^\]]+)\]:\s*\S+/.test(V))continue;let A=O7(V);U+=(A.match(/\[[^\]]+\]\([^)]+\)/g)||[]).length,W+=(A.match(/\[[^\]]+\]\[(?:[^\]]*)\]/g)||[]).length}G=W>U?"reference":"inline"}let q=!1;for(let U=0;U<X.length;U++){if(Y.has(U))continue;let W=X[U];if(W.includes("<!--"))q=!0;if(W.includes("-->")){q=!1;continue}if(q)continue;if(W.match(/^\[(?:[^\]]+)\]:\s*\S+/))continue;let K=O7(W),H=K.matchAll(/\[[^\]]+\]\([^)]+\)/g);for(let A of H)if(G==="reference")Z.push({filePath:J.filePath,line:U+1,column:A.index+1,ruleId:"markdown/link-image-style",message:Q==="consistent"?"Link style should be consistent throughout document":"Expected reference style link",severity:Q==="consistent"?"warning":"error"});let V=K.matchAll(/\[[^\]]+\]\[(?:[^\]]+)\]/g);for(let A of V)if(G==="inline")Z.push({filePath:J.filePath,line:U+1,column:A.index+1,ruleId:"markdown/link-image-style",message:Q==="consistent"?"Link style should be consistent throughout document":"Expected inline style link",severity:Q==="consistent"?"warning":"error"})}return Z},fix:($,J)=>{let X=(J.options||{}).style||"consistent",Y=$.split(/\r?\n/),z=m(Y),Q=new Map;for(let U=0;U<Y.length;U++){if(z.has(U))continue;let W=Y[U].match(/^\s*\[([^\]]+)\]:\s*(\S+)(?:\s+(?:"([^"]*)"|'([^']*)'|\(([^)]*)\)))?\s*$/);if(W){let K=W[1].toLowerCase(),H=W[2],V=W[3]??W[4]??W[5];if(!Q.has(K))Q.set(K,{url:H,title:V})}}if(Q.size===0)return $;let G=X==="reference"?"reference":"inline";if(X==="consistent"){let U=0,W=0;for(let K=0;K<Y.length;K++){if(z.has(K))continue;let H=Y[K];if(/^\s*\[(?:[^\]]+)\]:\s*\S+/.test(H))continue;let V=O7(H);U+=(V.match(/\[[^\]]+\]\([^)]+\)/g)||[]).length,W+=(V.match(/\[[^\]]+\]\[(?:[^\]]*)\]/g)||[]).length}G=W>U?"reference":"inline"}if(G!=="inline")return $;let q=!1;for(let U=0;U<Y.length;U++){if(z.has(U))continue;let W=Y[U];if(/^\s*\[(?:[^\]]+)\]:\s*\S+/.test(W))continue;let K=W;for(let H=0;H<8;H++){let V=K.replace(/(!?)\[((?:[^[\]]|\[[^\]]*\]\([^)]*\))+)\]\[([^\]]*)\]/g,(A,_,F,w)=>{let j=(w.trim()===""?F:w).toLowerCase(),D=Q.get(j);if(!D)return A;let M=D.title?` "${D.title}"`:"";return`${_}[${F}](${D.url}${M})`});if(V===K)break;K=V}if(K!==W)Y[U]=K,q=!0}return q?Y.join(`
90
- `):$}};function O7($){return $.replace(/(`+)([^`]+?)\1/g,(J)=>" ".repeat(J.length))}var AJ={meta:{docs:"List items at the same level should have consistent indentation"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=new Map,z=!1;for(let Q=0;Q<X.length;Q++){let G=X[Q],q=G.match(/^(\s*)(?:[*\-+]|\d+\.)\s+/);if(q){z=!0;let U=q[1].length,W=Math.floor(U/2);if(Y.has(W)){let K=Y.get(W);if(U!==K)Z.push({filePath:J.filePath,line:Q+1,column:1,ruleId:"markdown/list-indent",message:`Inconsistent indentation for list items at the same level. Expected ${K} spaces, found ${U}`,severity:"error"})}else Y.set(W,U)}else if(G.trim().length===0){if(z){let U=X.slice(Q+1).find((W)=>W.trim().length>0);if(U&&!/^(?:\s*)(?:[*\-+]|\d+\.)\s+/.test(U))z=!1,Y.clear()}}}return Z}};var _J={meta:{docs:"Spaces after list markers should be consistent"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=J.options||{},z=Y.ul_single||1,Q=Y.ol_single||1;for(let G=0;G<X.length;G++){let q=X[G],U=q.match(/^(\s*)([*\-+])(\s+)/);if(U){let K=U[3].length;if(K!==z)Z.push({filePath:J.filePath,line:G+1,column:U[1].length+2,ruleId:"markdown/list-marker-space",message:`Expected ${z} space${z!==1?"s":""} after list marker, found ${K}`,severity:"error"})}let W=q.match(/^(\s*)(\d+\.)(\s+)/);if(W){let K=W[3].length;if(K!==Q)Z.push({filePath:J.filePath,line:G+1,column:W[1].length+W[2].length+1,ruleId:"markdown/list-marker-space",message:`Expected ${Q} space${Q!==1?"s":""} after list marker, found ${K}`,severity:"error"})}}return Z},fix:($,J)=>{let Z=J.options||{},X=Z.ul_single||1,Y=Z.ol_single||1;return $.split(/\r?\n/).map((G)=>{return G=G.replace(/^(\s*)([*\-+])\s+/,(q,U,W)=>{return`${U}${W}${" ".repeat(X)}`}),G=G.replace(/^(\s*)(\d+\.)\s+/,(q,U,W)=>{return`${U}${W}${" ".repeat(Y)}`}),G}).join(`
91
- `)}};var FJ={meta:{docs:"Images should have alternate text"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1;for(let z=0;z<X.length;z++){let Q=X[z];if(/^(?:`{3,}|~{3,})/.test(Q.trim())){Y=!Y;continue}if(Y)continue;let q=Q.replace(/``[^`]+``/g,(U)=>" ".repeat(U.length)).replace(/`[^`]+`/g,(U)=>" ".repeat(U.length)).matchAll(/!\[\s*\]\([^)]+\)/g);for(let U of q){let W=U.index+1;Z.push({filePath:J.filePath,line:z+1,column:W,ruleId:"markdown/no-alt-text",message:"Images should have alternate text (alt text)",severity:"error"})}}return Z}};var wJ={meta:{docs:"Bare URLs should be wrapped in angle brackets"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=m(X),z=!1;for(let Q=0;Q<X.length;Q++){let G=X[Q];if(Y.has(Q))continue;if(G.includes("<!--"))z=!0;if(G.includes("-->")){z=!1;continue}if(z)continue;if(/^\[(?:[^\]]+)\]:\s*\S+/.test(G))continue;let q=G.replace(/`[^`]+`/g,(K)=>" ".repeat(K.length)),U=/(?<![<(="'])https?:\/\/[^\s<>`)\]"']+(?![>\])"'])/g,W=q.matchAll(U);for(let K of W)Z.push({filePath:J.filePath,line:Q+1,column:K.index+1,ruleId:"markdown/no-bare-urls",message:"Bare URL used. Wrap in angle brackets: <url>",severity:"error"})}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=m(J),X=!1;return J.map((z,Q)=>{if(Z.has(Q))return z;if(z.includes("<!--"))X=!0;if(z.includes("-->"))return X=!1,z;if(X)return z;if(/^\[(?:[^\]]+)\]:\s*\S+/.test(z))return z;return z.replace(/(?<![<(="'])https?:\/\/[^\s<>`)\]"']+(?![>\])"'])/g,"<$&>")}).join(`
92
- `)}};var BJ={meta:{docs:"Blank lines inside blockquotes should use the blockquote symbol"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1,z=!1;for(let Q=0;Q<X.length;Q++){let G=X[Q],q=Q+1<X.length?X[Q+1]:"";if(/^(?:`{3,}|~{3,})/.test(G.trim())){z=!z,Y=!1;continue}if(z)continue;let U=/^\s*>/.test(G),W=G.trim().length===0,K=/^\s*>/.test(q);if(U)Y=!0;else if(W&&Y&&K)Z.push({filePath:J.filePath,line:Q+1,column:1,ruleId:"markdown/no-blanks-blockquote",message:"Blank line inside blockquote should use blockquote symbol (>)",severity:"error"});else if(!U&&!W)Y=!1}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=!1,X=!1,Y=!1;for(let z=0;z<J.length;z++){let Q=J[z],G=z+1<J.length?J[z+1]:"";if(/^(?:`{3,}|~{3,})/.test(Q.trim())){X=!X,Z=!1;continue}if(X)continue;let q=/^\s*>/.test(Q),U=Q.trim().length===0,W=/^\s*>/.test(G);if(q)Z=!0;else if(U&&Z&&W){let K=G.match(/^(\s*)>/),H=K?`${K[1]}>`:">";J[z]=H,Y=!0}else if(!q&&!U)Z=!1}return Y?J.join(`
93
- `):$}};var MJ={meta:{docs:"Multiple headings should not have the same content"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1,z=Array.from({length:7},()=>new Map);for(let Q=0;Q<X.length;Q++){let G=X[Q];if(/^(?:`{3,}|~{3,})/.test(G.trim())){Y=!Y;continue}if(Y)continue;if(/^\s*\[Compare changes\]\(/.test(G)){for(let H=3;H<=6;H++)z[H].clear();continue}let q=null,U=0,W=G.match(/^(#{1,6})\s+(.+?)(?:\s*#+\s*)?$/);if(W)U=W[1].length,q=W[2].trim();if(!q){let H=Q+1<X.length?X[Q+1]:"";if(/^(?:=+)\s*$/.test(H)&&G.trim().length>0)U=1,q=G.trim();else if(/^(?:-+)\s*$/.test(H)&&G.trim().length>0)U=2,q=G.trim()}if(!q||U===0)continue;for(let H=U+1;H<=6;H++)z[H].clear();let K=z[U];if(K.has(q))Z.push({filePath:J.filePath,line:Q+1,column:1,ruleId:"markdown/no-duplicate-heading",message:`Duplicate heading "${q}" (first occurrence on line ${K.get(q)})`,severity:"error"});else K.set(q,Q+1)}return Z}};var QG=/[.!?:;,]\s*$/;function jJ($,J,Z){let X=$.match(/^\*\*([^*]+)\*\*\s*$/)||$.match(/^__([^_]+)__\s*$/),Y=$.match(/^\*([^*]+)\*\s*$/)||$.match(/^_([^_]+)_\s*$/),z=X||Y;if(!z)return null;if(J.trim().length!==0||Z.trim().length!==0)return null;let Q=z[1];if(QG.test(Q))return null;if(Q.trim().split(/\s+/).length>=7)return null;return Q}var NJ={meta:{docs:"Emphasis should not be used for headings"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=m(X);for(let z=0;z<X.length;z++){if(Y.has(z))continue;let Q=X[z],G=z>0?X[z-1]:"",q=z+1<X.length?X[z+1]:"";if(jJ(Q,G,q)===null)continue;Z.push({filePath:J.filePath,line:z+1,column:1,ruleId:"markdown/no-emphasis-as-heading",message:"Emphasis used instead of a heading",severity:"warning"})}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=m(J),X=2,Y=!1;for(let z=0;z<J.length;z++){if(Z.has(z))continue;let Q=J[z],G=Q.match(/^(#{1,6})\s/);if(G){X=G[1].length;continue}let q=z>0?J[z-1]:"",U=z+1<J.length?J[z+1]:"",W=jJ(Q,q,U);if(W===null)continue;let K=Math.min(6,Math.max(2,X+1));J[z]=`${"#".repeat(K)} ${W.trim()}`,Y=!0}return Y?J.join(`
94
- `):$}};var TJ={meta:{docs:"Links should not be empty"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1;for(let z=0;z<X.length;z++){let Q=X[z];if(/^(?:`{3,}|~{3,})/.test(Q.trim())){Y=!Y;continue}if(Y)continue;let G=Q.replace(/`[^`]+`/g,(W)=>"x".repeat(W.length)),q=G.matchAll(/\[[^\]]+\]\(\s*\)/g);for(let W of q){let K=W.index+1;Z.push({filePath:J.filePath,line:z+1,column:K,ruleId:"markdown/no-empty-links",message:"Empty link URL",severity:"error"})}let U=G.matchAll(/\[\s*\]\([^)]+\)/g);for(let W of U){let K=W.index+1;Z.push({filePath:J.filePath,line:z+1,column:K,ruleId:"markdown/no-empty-links",message:"Empty link text",severity:"error"})}}return Z}};var EJ={meta:{docs:"Spaces should be used instead of hard tabs"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1;for(let z=0;z<X.length;z++){let Q=X[z];if(/^(?:`{3,}|~{3,})/.test(Q.trim())){Y=!Y;continue}if(Y)continue;let G=Q.indexOf("\t");if(G!==-1)Z.push({filePath:J.filePath,line:z+1,column:G+1,ruleId:"markdown/no-hard-tabs",message:"Hard tabs should not be used",severity:"error"})}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=!1;return J.map((Y)=>{if(/^(?:`{3,}|~{3,})/.test(Y.trim()))return Z=!Z,Y;if(Z)return Y;return Y.replace(/\t/g," ")}).join(`
95
- `)}};var DJ={meta:{docs:"Inline HTML should not be used"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),z=(J.options||{}).allowed_elements||[],Q=!1;for(let G=0;G<X.length;G++){let q=X[G];if(/^(?:`{3,}|~{3,})/.test(q.trim())){Q=!Q;continue}if(Q)continue;let U=q;U=U.replace(/``[^`]+``/g,(K)=>" ".repeat(K.length)),U=U.replace(/`[^`]+`/g,(K)=>" ".repeat(K.length));let W=U.matchAll(/<\/?([a-z][a-z0-9]*)\b[^>]*>/gi);for(let K of W){let H=K[1].toLowerCase(),V=U.slice(K.index+1+H.length);if(V.startsWith("://")||H==="mailto"&&V.startsWith(":"))continue;if(!z.includes(H)){let A=K.index+1;Z.push({filePath:J.filePath,line:G+1,column:A,ruleId:"markdown/no-inline-html",message:`Inline HTML element '<${H}>' should not be used`,severity:"warning"})}}}return Z}};var RJ={meta:{docs:"ATX style headings must have a space after the hash"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=m(X);for(let z=0;z<X.length;z++){if(Y.has(z))continue;let G=X[z].match(/^(#{1,6})([^\s#])/);if(G)Z.push({filePath:J.filePath,line:z+1,column:G[1].length+1,ruleId:"markdown/no-missing-space-atx",message:"No space after hash on atx style heading",severity:"error"})}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=m(J);return J.map((Y,z)=>{if(Z.has(z))return Y;return Y.replace(/^(#{1,6})([^\s#])/,"$1 $2")}).join(`
96
- `)}};var OJ={meta:{docs:"Closed ATX style headings must have spaces inside the hashes"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=m(X);for(let z=0;z<X.length;z++){if(Y.has(z))continue;let Q=X[z],G=Q.match(/^(#{1,6})\s+(.+?)(#{1,6})\s*$/);if(G){let U=G[1],W=G[2],K=G[3];if(!W.endsWith(" ")){let H=U.length+1+W.length;Z.push({filePath:J.filePath,line:z+1,column:H,ruleId:"markdown/no-missing-space-closed-atx",message:"No space inside hashes on closed atx style heading",severity:"error"})}}let q=Q.match(/^(#{1,6})(\S.+?#{1,6})\s*$/);if(q)Z.push({filePath:J.filePath,line:z+1,column:q[1].length+1,ruleId:"markdown/no-missing-space-closed-atx",message:"No space inside hashes on closed atx style heading",severity:"error"})}return Z}};var LJ={meta:{docs:"Multiple consecutive blank lines should not be used"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=J.options||{},z=Y.maximum!==void 0?Y.maximum:1,Q=0;for(let G=0;G<X.length;G++)if(X[G].trim().length===0){if(Q++,Q>z)Z.push({filePath:J.filePath,line:G+1,column:1,ruleId:"markdown/no-multiple-blanks",message:`Multiple consecutive blank lines (max ${z})`,severity:"error"})}else Q=0;return Z},fix:($,J)=>{let Z=J.options||{},X=Z.maximum!==void 0?Z.maximum:1,Y=$.split(/\r?\n/),z=[],Q=0;for(let G of Y)if(G.trim().length===0){if(Q++,Q<=X)z.push(G)}else Q=0,z.push(G);return z.join(`
97
- `)}};var PJ={meta:{docs:"ATX style headings should have only one space after the hash"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=m(X);for(let z=0;z<X.length;z++){if(Y.has(z))continue;let G=X[z].match(/^(#{1,6})\s{2,}/);if(G)Z.push({filePath:J.filePath,line:z+1,column:G[1].length+1,ruleId:"markdown/no-multiple-space-atx",message:"Multiple spaces after hash on atx style heading",severity:"error"})}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=m(J);return J.map((Y,z)=>{if(Z.has(z))return Y;return Y.replace(/^(#{1,6})\s{2,}/,"$1 ")}).join(`
98
- `)}};var CJ={meta:{docs:"Blockquote symbols should be followed by a single space"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=m(X);for(let z=0;z<X.length;z++){if(Y.has(z))continue;let G=X[z].match(/^(\s*)(>+)\s{2,}/);if(G){let q=G[1].length+G[2].length+1;Z.push({filePath:J.filePath,line:z+1,column:q,ruleId:"markdown/no-multiple-space-blockquote",message:"Multiple spaces after blockquote symbol",severity:"error"})}}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=m(J);return J.map((Y,z)=>{if(Z.has(z))return Y;return Y.replace(/^(\s*>+)\s{2,}/,"$1 ")}).join(`
99
- `)}};var IJ={meta:{docs:"Closed ATX style headings should have only one space inside the hashes"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=m(X);for(let z=0;z<X.length;z++){if(Y.has(z))continue;let Q=X[z],G=Q.match(/^(#{1,6})\s{2,}(?:\S.*?|[\t\v\f \xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF])#{1,6}\s*$/);if(G)Z.push({filePath:J.filePath,line:z+1,column:G[1].length+1,ruleId:"markdown/no-multiple-space-closed-atx",message:"Multiple spaces inside hashes on closed atx style heading",severity:"error"});let q=Q.match(/^#{1,6}\s+(?:\S.*?|[\t\v\f \xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF])\s{2,}(#{1,6})\s*$/);if(q){let U=Q.lastIndexOf(q[1])-1;Z.push({filePath:J.filePath,line:z+1,column:Math.max(1,U),ruleId:"markdown/no-multiple-space-closed-atx",message:"Multiple spaces inside hashes on closed atx style heading",severity:"error"})}}return Z}};var SJ={meta:{docs:"Link syntax should not be reversed"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=m(X);for(let z=0;z<X.length;z++){if(Y.has(z))continue;let G=X[z].matchAll(/\(([^)]+)\)\[(?:[^\]]+)\]/g);for(let q of G){let U=q.index+1;Z.push({filePath:J.filePath,line:z+1,column:U,ruleId:"markdown/no-reversed-links",message:"Reversed link syntax: should be [text](url) not (text)[url]",severity:"error"})}}return Z}};var vJ={meta:{docs:"Code span elements should not have spaces inside the backticks"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=m(X);for(let z=0;z<X.length;z++){let Q=X[z];if(Y.has(z))continue;let G=/(`+)([\s\S]*?)\1/g;for(let q of Q.matchAll(G)){let U=q[2];if(U.startsWith(" ")&&U.endsWith(" ")&&U.trim().length>0)Z.push({filePath:J.filePath,line:z+1,column:q.index+1,ruleId:"markdown/no-space-in-code",message:"Spaces inside code span elements",severity:"error"})}}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=m(J),X=[];for(let Y=0;Y<J.length;Y++){let z=J[Y];if(Z.has(Y)){X.push(z);continue}X.push(z.replace(/(`+)([\s\S]*?)\1/g,(Q,G,q)=>{if(q.startsWith(" ")&&q.endsWith(" ")&&q.trim().length>0)return`${G}${q.trim()}${G}`;return Q}))}return X.join(`
100
- `)}};var GG=[/(?<![A-Za-z0-9])\*\*\s+[^*]+?\*\*(?![A-Za-z0-9])/g,/(?<![A-Za-z0-9])\*\*[^*]+?\s+\*\*(?![A-Za-z0-9])/g,/(?<![A-Za-z0-9])__\s+[^_]+?__(?![A-Za-z0-9])/g,/(?<![A-Za-z0-9])__[^_]+?\s+__(?![A-Za-z0-9])/g],yJ={meta:{docs:"Emphasis markers should not have spaces inside them"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=m(X);for(let z=0;z<X.length;z++){let Q=X[z];if(Y.has(z))continue;let G=Q.replace(/`[^`]+`/g,(q)=>"\x01".repeat(q.length));for(let q of GG)for(let U of G.matchAll(q))Z.push({filePath:J.filePath,line:z+1,column:U.index+1,ruleId:"markdown/no-space-in-emphasis",message:"Spaces inside emphasis markers",severity:"error"})}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=m(J),X=[];for(let Y=0;Y<J.length;Y++){let z=J[Y];if(Z.has(Y)){X.push(z);continue}let Q=L8(z,(G)=>{let q=G;return q=q.replace(/(?<![A-Za-z0-9])(\*\*)\s+([^*]+?)\*\*(?![A-Za-z0-9])/g,"$1$2**"),q=q.replace(/(?<![A-Za-z0-9])(\*\*)([^*]+?)\s+\*\*(?![A-Za-z0-9])/g,"$1$2**"),q=q.replace(/(?<![A-Za-z0-9])(__)\s+([^_]+?)__(?![A-Za-z0-9])/g,"$1$2__"),q=q.replace(/(?<![A-Za-z0-9])(__)([^_]+?)\s+__(?![A-Za-z0-9])/g,"$1$2__"),q});X.push(Q)}return X.join(`
101
- `)}};var bJ={meta:{docs:"Link text should not have leading or trailing spaces"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=m(X);for(let z=0;z<X.length;z++){if(Y.has(z))continue;let G=X[z].matchAll(/\[(\s+(?:\S.*?|[\t\v\f \xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF])|\s*(?:\S.*?|[\t\v\f \xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF])\s+)\]\([^)]+\)/g);for(let q of G){let U=q[1];if(U.startsWith(" ")||U.endsWith(" ")){let W=q.index+1;Z.push({filePath:J.filePath,line:z+1,column:W,ruleId:"markdown/no-space-in-links",message:"Spaces inside link text",severity:"error"})}}}return Z}};var kJ={meta:{docs:"Headings should not end with punctuation"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),z=(J.options||{}).punctuation||".,;:!?",Q=!1;for(let G=0;G<X.length;G++){let q=X[G];if(/^(?:`{3,}|~{3,})/.test(q.trim())){Q=!Q;continue}if(Q)continue;let U=q.match(/^#{1,6}\s+(.+?)(?:\s*#+\s*)?$/);if(U){let K=U[1].trim(),H=K[K.length-1];if(H&&z.includes(H))Z.push({filePath:J.filePath,line:G+1,column:q.indexOf(K)+K.length,ruleId:"markdown/no-trailing-punctuation",message:`Trailing punctuation in heading: '${H}'`,severity:"error"})}let W=G+1<X.length?X[G+1]:"";if(/^(?:=+|-+)\s*$/.test(W)&&q.trim().length>0){let K=q.trim(),H=K[K.length-1];if(H&&z.includes(H))Z.push({filePath:J.filePath,line:G+1,column:q.indexOf(K)+K.length,ruleId:"markdown/no-trailing-punctuation",message:`Trailing punctuation in heading: '${H}'`,severity:"error"})}}return Z},fix:($,J)=>{let X=(J.options||{}).punctuation||".,;:!?",Y=new RegExp(`[${X.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}]+$`),z=$.split(/\r?\n/),Q=!1;return z.map((q,U)=>{if(/^(?:`{3,}|~{3,})/.test(q.trim()))return Q=!Q,q;if(Q)return q;let W=q.match(/^(#{1,6}\s+)(.+?)(\s*#+\s*)?$/);if(W){let H=W[1],V=W[2],A=W[3]||"",_=V.replace(Y,"");return`${H}${_}${A}`}let K=U+1<z.length?z[U+1]:"";if(/^(?:=+|-+)\s*$/.test(K)&&q.trim().length>0)return q.replace(Y,"");return q}).join(`
102
- `)}};var fJ={meta:{docs:"Lines should not end with trailing spaces"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.match(/\s+$/);if(Q){let G=J.options||{},q=G.br_spaces!==void 0?G.br_spaces:2;if(q===0||Q[0].length!==q)Z.push({filePath:J.filePath,line:Y+1,column:z.length-Q[0].length+1,ruleId:"markdown/no-trailing-spaces",message:`Trailing spaces found (${Q[0].length} space${Q[0].length!==1?"s":""})`,severity:"error"})}}return Z},fix:($,J)=>{let Z=$.split(/\r?\n/),X=J.options||{},Y=X.br_spaces!==void 0?X.br_spaces:2;return Z.map((Q)=>{let G=Q.match(/\s+$/);if(G){if(Y>0&&G[0].length===Y)return Q;return Q.replace(/\s+$/,"")}return Q}).join(`
103
- `)}};var gJ={meta:{docs:"Ordered list item prefix should follow specified style"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),z=(J.options||{}).style||"one_or_ordered",Q=1;for(let G=0;G<X.length;G++){let q=X[G],U=q.match(/^(\s*)(\d+)\.\s+/);if(U){let W=Number.parseInt(U[2],10);if(z==="one"&&W!==1)Z.push({filePath:J.filePath,line:G+1,column:U[1].length+1,ruleId:"markdown/ol-prefix",message:`Ordered list item prefix should be '1.', found '${W}.'`,severity:"error"});else if(z==="ordered"&&W!==Q)Z.push({filePath:J.filePath,line:G+1,column:U[1].length+1,ruleId:"markdown/ol-prefix",message:`Ordered list item prefix should be '${Q}.', found '${W}.'`,severity:"error"});Q++}else if(q.trim().length===0)Q=1}return Z},fix:($,J)=>{let X=(J.options||{}).style||"one_or_ordered",Y=$.split(/\r?\n/),z=[],Q=1;for(let G of Y){let q=G.match(/^(\s*)(\d+)(\.\s+)/);if(q){let U=q[1],W=q[3];if(X==="one")z.push(G.replace(/^(\s*)\d+(\.\s+)/,`${U}1${W}`));else if(X==="ordered")z.push(G.replace(/^(\s*)\d+(\.\s+)/,`${U}${Q}${W}`)),Q++;else z.push(G),Q++}else if(z.push(G),G.trim().length===0)Q=1}return z.join(`
104
- `)}};var xJ={meta:{docs:"Proper names should have correct capitalization"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=J.options||{},z=Y.names||[],Q=Y.code_blocks!==!1;if(z.length===0)return Z;let G=m(X);for(let q=0;q<X.length;q++){if(G.has(q)&&!Q)continue;let U=X[q];for(let W of z){let K=new RegExp(`\\b${W}\\b`,"gi"),H=U.matchAll(K);for(let V of H)if(V[0]!==W){let A=V.index+1;Z.push({filePath:J.filePath,line:q+1,column:A,ruleId:"markdown/proper-names",message:`Incorrect capitalization of '${V[0]}', should be '${W}'`,severity:"error"})}}}return Z}};var pJ={meta:{docs:"Reference links and images should use defined labels"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=new Set;for(let G of X){let q=G.match(/^\s*\[([^\]]+)\]:\s*\S+/);if(q)Y.add(q[1].toLowerCase())}let z=!1,Q=!1;for(let G=0;G<X.length;G++){let q=X[G];if(/^(?:`{3,}|~{3,})/.test(q.trim())){z=!z;continue}if(z)continue;if(q.includes("<!--"))Q=!0;if(q.includes("-->")){Q=!1;continue}if(Q)continue;if(/^\s*\[(?:[^\]]+)\]:\s*\S+/.test(q))continue;let U=q.replace(/`[^`]+`/g,(K)=>" ".repeat(K.length));U=U.replace(/!?\[[^\]]*\]\([^)]*\)/g,(K)=>" ".repeat(K.length));let W=U.matchAll(/!?\[([^\]]+)\]\[([^\]]*)\]/g);for(let K of W){let H=(K[2].trim()||K[1]).toLowerCase();if(!Y.has(H))Z.push({filePath:J.filePath,line:G+1,column:K.index+1,ruleId:"markdown/reference-links-images",message:`Reference link '[${H}]' is not defined`,severity:"error"})}}return Z}};var hJ={meta:{docs:"Document should have required heading structure"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),z=(J.options||{}).headings||[];if(z.length===0)return Z;let Q=[];for(let q of X){let U=q.match(/^#{1,6}\s+(.+?)(?:\s*#+\s*)?$/);if(U)Q.push(U[1].trim())}let G=0;for(let q=0;q<Q.length&&G<z.length;q++)if(Q[q]===z[G])G++;if(G<z.length)Z.push({filePath:J.filePath,line:1,column:1,ruleId:"markdown/required-headings",message:`Missing required heading: '${z[G]}'`,severity:"error"});return Z}};var uJ={meta:{docs:"Document should have only one top-level heading (h1)"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=m(X),z=-1;for(let Q=0;Q<X.length;Q++){if(Y.has(Q))continue;let G=X[Q],q=Q+1<X.length?X[Q+1]:"",U=!1;if(/^#\s/.test(G))U=!0;if(/^=+\s*$/.test(q)&&G.trim().length>0&&!Y.has(Q+1))U=!0;if(U)if(z===-1)z=Q+1;else Z.push({filePath:J.filePath,line:Q+1,column:1,ruleId:"markdown/single-title",message:`Multiple top-level headings in the same document (first h1 on line ${z})`,severity:"error"})}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=m(J),X=[],Y=!1,z=!1;for(let Q=0;Q<J.length;Q++){if(Z.has(Q)){X.push(J[Q]);continue}let G=J[Q],q=Q+1<J.length?J[Q+1]:"",U=/^#\s/.test(G),W=/^=+\s*$/.test(q)&&G.trim().length>0&&!Z.has(Q+1);if(U){if(!Y)Y=!0,X.push(G);else X.push(`#${G}`),z=!0;continue}if(W){if(!Y){Y=!0,X.push(G);continue}X.push(`## ${G.trim()}`),Q++,z=!0;continue}X.push(G)}return z?X.join(`
105
- `):$}};var mJ={meta:{docs:"Files should end with a single newline character"},check:($,J)=>{let Z=[];if(!$.endsWith(`
43
+ `;if(W=W.replace(this.ANSI_PATTERN,""),this.shouldWriteToFile())await this.writeToFile(W)}progress($,J=""){let Z={update:(G,q)=>{},finish:(G)=>{},interrupt:(G,q)=>{}};if(!this.enabled)return Z;let X=30;if(this.activeProgressBar={total:Math.max(1,$||1),current:0,message:J||"",barLength:X,lastRenderedLine:""},this.shouldStyleConsole()&&!M0()&&Y0.stdout.isTTY)this.renderProgressBar(this.activeProgressBar);return{update:(G,q)=>{if(!this.enabled||!this.activeProgressBar)return;if(this.activeProgressBar.current=Math.min(Math.max(0,G),this.activeProgressBar.total),q!==void 0)this.activeProgressBar.message=q;if(this.shouldStyleConsole()&&!M0()&&Y0.stdout.isTTY)this.renderProgressBar(this.activeProgressBar)},finish:(G)=>{if(!this.activeProgressBar)return;this.finishProgressBar(this.activeProgressBar,G)},interrupt:(G,q="info")=>{if(!M0()&&Y0.stdout.isTTY)Y0.stdout.write(`
44
+ `);if(this[q==="warning"?"warn":q](G),this.activeProgressBar&&this.shouldStyleConsole()&&!M0()&&Y0.stdout.isTTY)this.renderProgressBar(this.activeProgressBar)}}}time($){let J=performance.now();if(this.shouldStyleConsole()){let Z=this.options.showTags!==!1&&this.name?Q0.gray(this.formatTag(this.name)):"",X=this.formatConsoleTimestamp(new Date);console.error(this.formatConsoleMessage({timestamp:X,icon:this.options.showIcons===!1?"":Q0.blue("\u25D0"),tag:Z,message:`${Q0.cyan($)}...`}))}return async(Z)=>{if(!this.enabled)return;let X=performance.now(),Y=Math.round(X-J),z=`${$} completed in ${Y}ms`,Q=new Date,G=this.formatConsoleTimestamp(Q),U=`${this.formatFileTimestamp(Q)} ${this.environment}.INFO: ${z}`;if(Z)U+=` ${JSON.stringify(Z)}`;if(U+=`
45
+ `,U=U.replace(this.ANSI_PATTERN,""),this.shouldStyleConsole()){let W=this.options.showTags!==!1&&this.name?Q0.gray(this.formatTag(this.name)):"";console.error(this.formatConsoleMessage({timestamp:G,icon:this.options.showIcons===!1?"":Q0.green("\u2713"),tag:W,message:`${z}${Z?` ${JSON.stringify(Z)}`:""}`}))}else if(!M0())console.error(U.trim());if(this.shouldWriteToFile())await this.writeToFile(U)}}async debug($,...J){await this.log("debug",$,...J)}async info($,...J){await this.log("info",$,...J)}async success($,...J){await this.log("success",$,...J)}async warn($,...J){await this.log("warning",$,...J)}async error($,...J){await this.log("error",$,...J)}validateEncryptionConfig(){if(!this.config.rotation)return!1;if(typeof this.config.rotation==="boolean")return!1;let $=this.config.rotation,{encrypt:J}=$;return!!J}async only($){if(!this.enabled)return;return await $()}isEnabled(){return this.enabled}setEnabled($){this.enabled=$}extend($){let J=`${this.name}:${$}`,Z=new J1(J,{...this.options,logDirectory:this.config.logDirectory,level:this.config.level,format:this.config.format,rotation:typeof this.config.rotation==="boolean"?void 0:this.config.rotation,timestamp:typeof this.config.timestamp==="boolean"?void 0:this.config.timestamp});return this.subLoggers.add(Z),Z}createReadStream(){if(M0())throw Error("createReadStream is not supported in browser environments");if(!i1(this.currentLogFile))throw Error(`Log file does not exist: ${this.currentLogFile}`);return r9(this.currentLogFile,{encoding:"utf8"})}async decrypt($){if(!this.validateEncryptionConfig())throw Error("Encryption is not configured");let J=this.config.rotation;if(!J.encrypt||typeof J.encrypt==="boolean")throw Error("Invalid encryption configuration");if(!this.currentKeyId||!this.keys.has(this.currentKeyId))throw Error("No valid encryption key available");let Z=this.keys.get(this.currentKeyId);try{let X=o0.isBuffer($)?$:o0.from($,"base64"),Y=X.subarray(0,16),z=X.subarray(X.length-16),Q=X.subarray(16,X.length-16),G=SQ("aes-256-gcm",Z,Y);G.setAuthTag(z);let q=G.update(Q),U=G.final(),W=q.length+U.length,K=o0.allocUnsafe(W);return q.copy(K,0),U.copy(K,q.length),K.toString("utf8")}catch(X){throw Error(`Decryption failed: ${X instanceof Error?X.message:String(X)}`)}}getLevel(){return this.config.level}getLogDirectory(){return this.config.logDirectory}getFormat(){return this.config.format}getRotationConfig(){return this.config.rotation}isBrowserMode(){return M0()}isServerMode(){return!M0()}setTestEncryptionKey($,J){this.currentKeyId=$,this.keys.set($,J)}getTestCurrentKey(){if(!this.currentKeyId||!this.keys.has(this.currentKeyId))return null;return{id:this.currentKeyId,key:this.keys.get(this.currentKeyId)}}getConfig(){return this.config}async box($){if(!this.enabled)return;let J=new Date,Z=this.formatConsoleTimestamp(J),X=this.formatFileTimestamp(J),{consoleText:Y,fileText:z}=this.buildOutputTexts($);if(this.shouldStyleConsole()){let G=Y.split(`
46
+ `),q=Math.max(...G.map((H)=>H.length))+2,U=`\u250C${"\u2500".repeat(q)}\u2510`,W=`\u2514${"\u2500".repeat(q)}\u2518`,K=G.map((H)=>{return this.formatConsoleMessage({timestamp:Z,message:Q0.cyan(H),showTimestamp:!1})});console.error(this.formatConsoleMessage({timestamp:Z,message:Q0.cyan(U),showTimestamp:!1})),K.forEach((H)=>console.error(H)),console.error(this.formatConsoleMessage({timestamp:Z,message:Q0.cyan(W),showTimestamp:!1}))}else if(!M0())console.error(`${X} ${this.environment}.INFO: [BOX] ${z}`);let Q=`${X} ${this.environment}.INFO: [BOX] ${z}
47
+ `.replace(this.ANSI_PATTERN,"");if(this.shouldWriteToFile())await this.writeToFile(Q)}async prompt($){if(M0())return Promise.resolve(!0);return new Promise((J)=>{console.error(`${Q0.cyan("?")} ${$} (y/n) `);let Z=(X)=>{let Y=X.toString().trim().toLowerCase();Y0.stdin.removeListener("data",Z);try{if(typeof Y0.stdin.setRawMode==="function")Y0.stdin.setRawMode(!1)}catch{}Y0.stdin.pause(),console.error(""),J(Y==="y"||Y==="yes")};try{if(typeof Y0.stdin.setRawMode==="function")Y0.stdin.setRawMode(!0)}catch{}Y0.stdin.resume(),Y0.stdin.once("data",Z)})}setFancy($){this.fancy=$}isFancy(){return this.fancy}pause(){this.enabled=!1}resume(){this.enabled=!0}async start($,...J){if(!this.enabled)return;let Z=$;if(J&&J.length>0){let q=/%([sdijfo%])/g,U=0;if(Z=$.replace(q,(W,K)=>{if(K==="%")return"%";if(U>=J.length)return W;let H=J[U++];switch(K){case"s":return String(H);case"d":case"i":return Number(H).toString();case"j":case"o":return JSON.stringify(H,null,2);default:return W}}),U<J.length)Z+=` ${J.slice(U).map((W)=>typeof W==="object"?JSON.stringify(W,null,2):String(W)).join(" ")}`}let{consoleText:X,fileText:Y}=this.buildOutputTexts(Z);if(this.shouldStyleConsole()){let q=this.options.showTags!==!1&&this.name?Q0.gray(this.formatTag(this.name)):"",U=this.options.showIcons===!1?"":`${Q0.blue("\u25D0")} `;console.error(`${U}${q} ${Q0.cyan(X)}`)}let G=`[${new Date().toISOString()}] ${this.environment}.INFO: [START] ${Y}
48
+ `.replace(this.ANSI_PATTERN,"");if(this.shouldWriteToFile())await this.writeToFile(G)}renderProgressBar($,J=!1){if(!this.enabled||!this.shouldStyleConsole()||!Y0.stdout.isTTY)return;let Z=Math.min(100,Math.max(0,Math.round($.current/$.total*100))),X=Math.round($.barLength*Z/100),Y=$.barLength-X,z=Q0.green("\u2501".repeat(X)),Q=Q0.gray("\u2501".repeat(Y)),G=`[${z}${Q}]`,q=`${Z}%`.padStart(4),U=$.message?` ${$.message}`:"",W=this.options.showIcons===!1?"":J||Z===100?Q0.green("\u2713"):Q0.blue("\u25B6"),K=this.options.showTags!==!1&&this.name?` ${Q0.gray(this.formatTag(this.name))}`:"",H=`\r${W}${K} ${G} ${q}${U}`,V=Y0.stdout.columns||80,A=" ".repeat(Math.max(0,V-H.replace(this.ANSI_PATTERN,"").length));if($.lastRenderedLine=`${H}${A}`,Y0.stdout.write($.lastRenderedLine),J)Y0.stdout.write(`
49
+ `)}finishProgressBar($,J){if(!this.enabled||!this.fancy||M0()||!Y0.stdout.isTTY){this.activeProgressBar=null;return}if($.current<$.total)$.current=$.total;if(J)$.message=J;this.renderProgressBar($,!0),this.activeProgressBar=null}async clear($={}){if(M0()){console.warn("Log clearing is not supported in browser environments.");return}try{console.warn("Clearing logs...",this.config.logDirectory);let J=await t1(this.config.logDirectory),Z=[];for(let X of J){if(!($.name?new RegExp($.name.replace("*",".*")).test(X):X.startsWith(this.name))||!X.endsWith(".log"))continue;let z=A1(this.config.logDirectory,X);if($.before)try{if((await V1(z)).mtime>=$.before)continue}catch(Q){console.error(`Failed to get stats for file ${z}:`,Q);continue}Z.push(z)}if(Z.length===0){console.warn("No log files matched the criteria for clearing.");return}console.warn(`Preparing to delete ${Z.length} log file(s)...`);for(let X of Z)try{await e1(X),console.warn(`Deleted log file: ${X}`)}catch(Y){console.error(`Failed to delete log file ${X}:`,Y)}console.warn("Log clearing process finished.")}catch(J){console.error("Error during log clearing process:",J)}}}var FU=new J1("stacks");import{readFileSync as vY,writeFileSync as f2}from"fs";import{isAbsolute as g2,relative as IY,resolve as p2}from"path";import j1 from"process";var B$={meta:{docs:"Enforce return statements in callbacks of array methods",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),z=new RegExp(`\\.(${["map","filter","find","findIndex","findLast","findLastIndex","every","some","reduce","reduceRight","sort","flatMap"].join("|")})\\s*\\(`,"g");for(let Q=0;Q<X.length;Q++){let G=X[Q],q;for(q=z.exec(G);q!==null;q=z.exec(G)){let U=q[1],W=q.index+q[0].length,K=G.slice(W),H=K.match(/^\s*(?:\(([^)]*)\)|([a-z_$][\w$]*))\s*=>/i),V=K.match(/^\s*function\s*(?:[a-zA-Z_$][\w$]*\s*)?\(/);if(H){let A=K.slice(H[0].length).trim();if(A.startsWith("{")){let _=!1,w=0,F=A,M=Q;while(M<X.length){let T=M===Q?F:X[M];for(let E=0;E<T.length;E++){let j=T[E];if(j==="{")w++;if(j==="}"){if(w--,w===0){if(!_)Z.push({filePath:J.filePath,line:Q+1,column:q.index+1,ruleId:"eslint/array-callback-return",message:`Array method '${U}' callback should return a value`,severity:"error"});break}}}if(T.match(new RegExp("\\breturn\\s+[^;]")))_=!0;if(w===0)break;M++,F=X[M]||""}}}else if(V){let A=!1,_=0,w=Q,F=!1;while(w<X.length){let M=X[w];for(let T=0;T<M.length;T++){let E=M[T];if(E==="{")_++,F=!0;else if(E==="}"){if(_--,_===0&&F){if(!A)Z.push({filePath:J.filePath,line:Q+1,column:q.index+1,ruleId:"eslint/array-callback-return",message:`Array method '${U}' callback should return a value`,severity:"error"});break}}}if(F&&M.match(new RegExp("\\breturn\\s+[^;]")))A=!0;if(_===0&&F)break;w++}}}}return Z}};var M$={meta:{docs:"Require super() calls in constructors of derived classes",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1,z=!1,Q=0,G=0,q=!1;for(let U=0;U<X.length;U++){let W=X[U];if(W.match(/\bclass\s+\w+\s+extends\s+\w+/))Y=!0;if(Y&&W.match(/\bconstructor\s*\(/))z=!0,Q=U+1,G=0,q=!1;if(z){for(let K of W){if(K==="{")G++;if(K==="}")G--}if(W.match(/\bsuper\s*\(/))q=!0;if(G===0&&W.includes("}")){if(!q)Z.push({filePath:J.filePath,line:Q,column:1,ruleId:"eslint/constructor-super",message:"Constructors of derived classes must call super()",severity:"error"});z=!1,Y=!1}}}return Z}};var j$={meta:{docs:'Enforce "for" loop update clause moving counter in the right direction',recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=new RegExp("\\bfor\\s*\\(\\s*(?:(?:let|var|const)\\s*)?(\\w+)\\s*=[^;]+;\\s*(\\w+)\\s*([<>]=?)[^;]+;\\s*(\\w+)(\\+\\+|--|[\\s+-]=)"),G=z.match(Q);if(G){let q=G[1],U=G[2],W=G[3],K=G[4],H=G[5];if(q===U&&U===K){let V=H.includes("+"),A=W.includes("<");if(A&&!V||!A&&V)Z.push({filePath:J.filePath,line:Y+1,column:1,ruleId:"eslint/for-direction",message:"The update clause in this loop moves the variable in the wrong direction",severity:"error"})}}}return Z}};var N$={meta:{docs:"Enforce return statements in getters",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let Q=X[Y].match(/\bget\s+(\w+)\s*\(/);if(Q){let G=Q[1],q=!1,U=0,W=Y;while(W<X.length){let K=X[W];for(let V of K){if(V==="{")U++;if(V==="}"){if(U--,U===0){if(!q)Z.push({filePath:J.filePath,line:Y+1,column:1,ruleId:"eslint/getter-return",message:`Getter '${G}' must return a value`,severity:"error"});break}}}let H=new RegExp("\\breturn\\s+[^;]");if(K.match(H))q=!0;if(U===0)break;W++}}}return Z}};var T$={meta:{docs:"Disallow async functions as Promise executor",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/new\s+Promise\s*\(\s*async\s*(?:\(|function)/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z))Z.push({filePath:J.filePath,line:Y+1,column:G.index+1,ruleId:"eslint/no-async-promise-executor",message:"Promise executor functions should not be async",severity:"error"})}return Z}};var E$={meta:{docs:"Disallow comparing against -0",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/([!=]==?)\s*-0\b|\b-0\s*([!=]==?)/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z))Z.push({filePath:J.filePath,line:Y+1,column:G.index+1,ruleId:"eslint/no-compare-neg-zero",message:"Do not use the '-0' literal in comparisons",severity:"error"})}return Z}};var D$={meta:{docs:"Disallow assignment operators in conditional expressions",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\b(if|while)\s*\([^)]*\b(\w+)\s*=\s*(?!=)[^)]*\)/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){let q=G[0];if(/===|==/.test(q))continue;if(z.substring(0,G.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/no-cond-assign",message:"Expected a conditional expression and instead saw an assignment",severity:"error"})}}return Z}};var R$={meta:{docs:"Disallow reassigning const variables",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=new Map;for(let z=0;z<X.length;z++){let Q=X[z],G=Q.match(/\bconst\s+(\w+)/);if(G)Y.set(G[1],z);let q=/\b(\w+)\s*=(?!=)/g,U;for(U=q.exec(Q);U!==null;U=q.exec(Q)){let W=U[1],K=Q.substring(0,U.index);if(!/\b(?:const|let|var)\s*$/.test(K)&&Y.has(W))Z.push({filePath:J.filePath,line:z+1,column:Math.max(1,U.index+1),ruleId:"eslint/no-const-assign",message:`'${W}' is constant`,severity:"error"})}}return Z}};var O$={meta:{docs:"Disallow constant expressions in conditions",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=[{pattern:/\b(if|while)\s*\(\s*(true|false)\s*\)/g,type:"boolean"},{pattern:/\b(if|while)\s*\(\s*(\d+)\s*\)/g,type:"number"},{pattern:/\b(if|while)\s*\(\s*(['"`][^'"`]*['"`])\s*\)/g,type:"string"}];for(let{pattern:G,type:q}of Q){let U;while((U=G.exec(z))!==null){let W=U[1],K=U[2];if(z.substring(0,U.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,U.index+W.length+2),ruleId:"eslint/no-constant-condition",message:"Unexpected constant condition",severity:"error"})}}}return Z}};var L$={meta:{docs:"Disallow duplicate class members",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1,z=new Set,Q=0;for(let G=0;G<X.length;G++){let q=X[G];if(q.match(/\bclass\s+\w+/))Y=!0,z=new Set,Q=0;if(Y){for(let W of q){if(W==="{")Q++;if(W==="}"){if(Q--,Q===0)Y=!1}}let U=[...q.matchAll(/^\s*(?:(?:public|private|protected|static|readonly|async)\s*)?(?:get|set)?\s*(\w+)\s*\(/g),...q.matchAll(/^\s*(?:(?:public|private|protected|static|readonly)\s*)?(\w+)\s*[:=]/g)];for(let W of U){let K=W[1];if(z.has(K))Z.push({filePath:J.filePath,line:G+1,column:1,ruleId:"eslint/no-dupe-class-members",message:`Duplicate class member '${K}'`,severity:"error"});else z.add(K)}}}return Z}};var v1={meta:{docs:"Disallow duplicate keys in object literals",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=/\{\s*$/,z=/^\s*(?:(['"`])(.+?)\1|(\w+))\s*:/;for(let Q=0;Q<X.length;Q++){let G=X[Q];if(!Y.test(G)&&!G.includes("{"))continue;let q=new Map,U=(G.match(/\{/g)||[]).length-(G.match(/\}/g)||[]).length,W=Q;for(let K=Q+1;K<X.length&&U>0;K++){let H=X[K];U+=(H.match(/\{/g)||[]).length,U-=(H.match(/\}/g)||[]).length;let V=H.match(z);if(V){let A=V[2]||V[3];if(A)if(q.get(A)!==void 0)Z.push({filePath:J.filePath,line:K+1,column:Math.max(1,H.search(/\S/)+1),ruleId:"eslint/no-dupe-keys",message:`Duplicate key '${A}'`,severity:"error"});else q.set(A,K)}if(U===0)break}}return Z},fix:($,J)=>{let Z=v1.check($,J);if(Z.length===0)return $;let X=$.split(/\r?\n/),Y=new Set(Z.map((Q)=>Q.line-1));return X.filter((Q,G)=>!Y.has(G)).join(`
50
+ `)}};var P$={meta:{docs:"Disallow duplicate case labels in switch statements",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1,z=new Set,Q=-1;for(let G=0;G<X.length;G++){let q=X[G],U=q.trim();if(/\bswitch\s*\(/.test(U)){Y=!0,z=new Set,Q=G;continue}if(Y&&U==="}"&&G>Q){let W=X[Q].match(/^\s*/)?.[0].length||0;if((q.match(/^\s*/)?.[0].length||0)<=W+2)Y=!1,z=new Set}if(Y){let W=U.match(/^case\s+(.+?)\s*:/);if(W){let K=W[1].trim();if(z.has(K))Z.push({filePath:J.filePath,line:G+1,column:Math.max(1,q.indexOf("case")+1),ruleId:"eslint/no-duplicate-case",message:`Duplicate case label '${K}'`,severity:"error"});else z.add(K)}}}return Z}};var C$={meta:{docs:"Disallow empty destructuring patterns",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\{\s*\}\s*=/g,G=/\[\s*\]\s*=/g,q;for(q=Q.exec(z);q!==null;q=Q.exec(z)){if(z.substring(0,q.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,q.index+1),ruleId:"eslint/no-empty-pattern",message:"Unexpected empty object pattern",severity:"error"})}for(q=G.exec(z);q!==null;q=G.exec(z)){if(z.substring(0,q.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,q.index+1),ruleId:"eslint/no-empty-pattern",message:"Unexpected empty array pattern",severity:"error"})}}return Z}};var I$={meta:{docs:"Disallow fallthrough of case statements",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1,z=-1,Q=!1;for(let G=0;G<X.length;G++){let U=X[G].trim();if(/\bswitch\s*\(/.test(U)){Y=!0;continue}if(Y){if(/^case\s+/.test(U)||/^default\s*:/.test(U)){if(z>=0&&Q){if(!(/\/\/.*falls?\s*through|\/\*.*falls?\s*through/i.test(X[z])||G>0&&/\/\/.*falls?\s*through|\/\*.*falls?\s*through/i.test(X[G-1])))Z.push({filePath:J.filePath,line:z+1,column:Math.max(1,X[z].indexOf("case")+1),ruleId:"eslint/no-fallthrough",message:"Expected a 'break' statement before 'case'",severity:"error"})}z=G,Q=!0}if(/\b(?:break|return|throw|continue)\b/.test(U))Q=!1;if(U==="}")Y=!1,z=-1,Q=!1}}return Z}};var S$={meta:{docs:"Disallow number literals that lose precision",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\b(\d{17,}(?:\.\d+)?|\d+\.\d{17,})\b/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){let q=G[1];if(Number(q).toString()!==q)Z.push({filePath:J.filePath,line:Y+1,column:G.index+1,ruleId:"eslint/no-loss-of-precision",message:"This number literal will lose precision at runtime",severity:"error"})}}return Z}};var v$={meta:{docs:"Disallow returning values from Promise executor functions",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++)if(X[Y].match(/new\s+Promise\s*\(/)){let G=0,q=!1,U=Y;while(U<X.length){let W=X[U];for(let H of W){if(H==="{")G++,q=!0;if(H==="}"){if(G--,G===0&&q)break}}let K=new RegExp("\\breturn\\s+[^;]");if(q&&W.match(K))Z.push({filePath:J.filePath,line:U+1,column:1,ruleId:"eslint/no-promise-executor-return",message:"Return values from promise executor functions cannot be read",severity:"error"});if(G===0&&q)break;U++}}return Z}};var y$={meta:{docs:"Disallow variable redeclaration",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=new Map;for(let z=0;z<X.length;z++){let Q=X[z],G=/\b(var|let|const)\s+(\w+)/g,q;for(q=G.exec(Q);q!==null;q=G.exec(Q)){let W=q[2];if(Y.get(W)!==void 0)Z.push({filePath:J.filePath,line:z+1,column:Math.max(1,q.index+1),ruleId:"eslint/no-redeclare",message:`'${W}' is already defined`,severity:"error"});else Y.set(W,z)}let U=/\bfunction\s+(\w+)/g;for(q=U.exec(Q);q!==null;q=U.exec(Q)){let W=q[1];if(Y.get(W)!==void 0)Z.push({filePath:J.filePath,line:z+1,column:Math.max(1,q.index+1),ruleId:"eslint/no-redeclare",message:`'${W}' is already defined`,severity:"error"});else Y.set(W,z)}}return Z}};var y1={meta:{docs:"Disallow assignments where both sides are identical",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=new RegExp("\\b(\\w+)\\s*=\\s*(\\w+)\\s*(?:;\\s*)?(?:\\/\\/.*)?$"),G=z.match(Q);if(G&&G[1]===G[2]){Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,z.indexOf(G[1])+1),ruleId:"eslint/no-self-assign",message:`'${G[1]}' is assigned to itself`,severity:"error"});continue}let q=z.match(/([\w.]+)\s*=\s*([\w.]+)/);if(q&&q[1]===q[2]){Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,z.indexOf(q[1])+1),ruleId:"eslint/no-self-assign",message:`'${q[1]}' is assigned to itself`,severity:"error"});continue}let U=z.match(/(\w+\[[^\]]+\])\s*=\s*(\w+\[[^\]]+\])/);if(U){let W=U[1].replace(/\s/g,""),K=U[2].replace(/\s/g,"");if(W===K)Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,z.indexOf(U[1])+1),ruleId:"eslint/no-self-assign",message:`'${U[1]}' is assigned to itself`,severity:"error"})}}return Z},fix:($,J)=>{let Z=y1.check($,J);if(Z.length===0)return $;let X=$.split(/\r?\n/),Y=new Set(Z.map((Q)=>Q.line-1));return X.map((Q,G)=>{if(Y.has(G)){let q=Q.trim();if(new RegExp("^\\w+(?:\\.\\w+|\\[[^\\]]+\\])?\\s*=\\s*\\w+(?:\\.\\w+|\\[[^\\]]+\\])?;?\\s*$").test(q))return""}return Q}).filter((Q,G,q)=>{if(Q===""&&Y.has(G)){let U=G>0&&q[G-1].trim()!=="",W=G<q.length-1&&q[G+1]&&q[G+1].trim()!=="";if(!U||!W)return!1}return!0}).join(`
51
+ `)}};var b$={meta:{docs:"Disallow comparisons where both sides are identical",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/([\w.\[\]]+)\s*(===|!==|==|!=|<|>|<=|>=)\s*([\w.\[\]]+)/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){let q=G[1].replace(/\s/g,""),U=G[2],W=G[3].replace(/\s/g,"");if(q===W)Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/no-self-compare",message:`Comparing '${G[1]}' to itself is potentially pointless`,severity:"error"})}}return Z}};var k$={meta:{docs:"Disallow sparse arrays (arrays with empty slots)",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\[([^\]]*)\]/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){let q=G[1];if(/,\s*,/.test(q))Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/no-sparse-arrays",message:"Unexpected sparse array",severity:"error"})}}return Z},fix:($,J)=>{let Z=$.split(/\r?\n/),X=!1,Y=Z.map((z)=>{let Q=z;return Q=Q.replace(/\[([^\]]*)\]/g,(G,q)=>{if(/,\s*,/.test(q))return X=!0,`[${q.replace(/,(\s*),/g,", undefined,")}]`;return G}),Q});return X?Y.join(`
52
+ `):$}};var f$={meta:{docs:"Disallow undeclared variables",recommended:!0,wip:!0},check:($,J)=>{return[]}};var g$={meta:{docs:"Disallow unreachable code after return, throw, continue, or break",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(/^\s*(?:return|throw|break|continue)\b/.test(z))for(let G=Y+1;G<X.length;G++){let q=X[G],U=q.trim();if(U===""||U.startsWith("//")||U.startsWith("/*"))continue;if(U==="}"||U.startsWith("}"))break;if(/^(?:case\b|default\s*:)/.test(U))break;Z.push({filePath:J.filePath,line:G+1,column:Math.max(1,q.search(/\S/)+1),ruleId:"eslint/no-unreachable",message:"Unreachable code",severity:"error"});break}}return Z}};var p$={meta:{docs:"Disallow negation of the left operand of relational operators",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/!\s*\w+\s+in\s+/g,G=/!\s*\w+\s+instanceof\s+/g,q;for(q=Q.exec(z);q!==null;q=Q.exec(z))Z.push({filePath:J.filePath,line:Y+1,column:q.index+1,ruleId:"eslint/no-unsafe-negation",message:"Unexpected negation of 'in' operand",severity:"error"});for(q=G.exec(z);q!==null;q=G.exec(z))Z.push({filePath:J.filePath,line:Y+1,column:q.index+1,ruleId:"eslint/no-unsafe-negation",message:"Unexpected negation of 'instanceof' operand",severity:"error"})}return Z},fix:($)=>{let J=$;return J=J.replace(/!\s*(\w+)\s+in\s+/g,"!($1 in "),J=J.replace(/!\s*(\w+)\s+instanceof\s+/g,"!($1 instanceof "),J}};var x$={meta:{docs:"Disallow unnecessary catch clauses",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.match(/catch\s*\(\s*(\w+)\s*\)/);if(!Q)continue;let G=Q[1];for(let q=Y+1;q<Math.min(Y+5,X.length);q++){let U=X[q].trim();if(U===`throw ${G}`||U===`throw ${G};`){let W=!1;for(let K=Y+1;K<q;K++){let H=X[K].trim();if(H!==""&&H!=="{"&&!H.startsWith("//")){W=!0;break}}if(!W)Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,z.indexOf("catch")+1),ruleId:"eslint/no-useless-catch",message:"Unnecessary catch clause",severity:"error"});break}if(U==="}")break}}return Z}};var h$={meta:{docs:"Require isNaN() when checking for NaN",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\b([\w.\[\]]+)\s*(===|!==|==|!=)\s*NaN\b|\bNaN\s*(===|!==|==|!=)\s*([\w.\[\]]+)/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){let q=G[1]||G[4];Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/use-isnan",message:"Use isNaN() to compare with NaN",severity:"error"})}}return Z},fix:($,J)=>{let Z=$.split(/\r?\n/),X=!1,Y=Z.map((z)=>{let Q=z;return Q=Q.replace(/\b([\w.\[\]]+)\s*===\s*NaN\b/g,(G,q)=>{return X=!0,`isNaN(${q})`}),Q=Q.replace(/\bNaN\s*===\s*([\w.\[\]]+)\b/g,(G,q)=>{return X=!0,`isNaN(${q})`}),Q=Q.replace(/\b([\w.\[\]]+)\s*!==\s*NaN\b/g,(G,q)=>{return X=!0,`!isNaN(${q})`}),Q=Q.replace(/\bNaN\s*!==\s*([\w.\[\]]+)\b/g,(G,q)=>{return X=!0,`!isNaN(${q})`}),Q=Q.replace(/\b([\w.\[\]]+)\s*==\s*NaN\b/g,(G,q)=>{return X=!0,`isNaN(${q})`}),Q=Q.replace(/\bNaN\s*==\s*([\w.\[\]]+)\b/g,(G,q)=>{return X=!0,`isNaN(${q})`}),Q=Q.replace(/\b([\w.\[\]]+)\s*!=\s*NaN\b/g,(G,q)=>{return X=!0,`!isNaN(${q})`}),Q=Q.replace(/\bNaN\s*!=\s*([\w.\[\]]+)\b/g,(G,q)=>{return X=!0,`!isNaN(${q})`}),Q});return X?Y.join(`
53
+ `):$}};var NZ=["undefined","object","boolean","number","string","function","symbol","bigint"],u$={meta:{docs:"Enforce comparing typeof expressions against valid strings",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/typeof\s+\w+\s*(?:===|!==|==|!=)\s*(['"`])(\w+)\1/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){let U=G[2];if(!NZ.includes(U))Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/valid-typeof",message:`Invalid typeof comparison value '${U}'`,severity:"error"})}let q=/(['"`])(\w+)\1\s*(?:===|!==|==|!=)\s*typeof\s+\w+/g;for(G=q.exec(z);G!==null;G=q.exec(z)){let U=G[2];if(!NZ.includes(U))Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/valid-typeof",message:`Invalid typeof comparison value '${U}'`,severity:"error"})}}return Z}};var m$={meta:{docs:"Enforce a maximum cyclomatic complexity allowed in a program",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=10,z=!1,Q=0,G="",q=0,U=0;for(let W=0;W<X.length;W++){let K=X[W],H=K.match(/\bfunction\s+(\w+)\s*\(|(\w+)\s*=\s*(?:\([^)]*\)|(\w+))\s*=>/);if(H)z=!0,Q=W+1,G=H[1]||H[2]||H[3]||"anonymous",q=1,U=0;if(z){for(let A of K){if(A==="{")U++;if(A==="}"){if(U--,U===0){if(q>10)Z.push({filePath:J.filePath,line:Q,column:1,ruleId:"eslint/complexity",message:`Function '${G}' has complexity ${q}, exceeds maximum of 10`,severity:"error"});z=!1}}}let V=[/\bif\s*\(/,/\belse\s+if\s*\(/,/\bfor\s*\(/,/\bwhile\s*\(/,/\bcase\s+/,/\bcatch\s*\(/,/\b&&\b/,/\b\|\|\b/,/\?\s*(?:\S.*(?:[\n\r\u2028\u2029]\s*)?)?:/];for(let A of V){let _=K.match(new RegExp(A,"g"));if(_)q+=_.length}}}return Z}};var d$={meta:{docs:"Require default case in switch statements",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1,z=0,Q=!1,G=0;for(let q=0;q<X.length;q++){let U=X[q];if(U.match(/\bswitch\s*\(/))Y=!0,z=q+1,Q=!1,G=0;if(Y){for(let W of U){if(W==="{")G++;if(W==="}"){if(G--,G===0){if(!Q)Z.push({filePath:J.filePath,line:z,column:1,ruleId:"eslint/default-case",message:"Expected a default case",severity:"error"});Y=!1}}}if(U.match(/\bdefault\s*:/))Q=!0}}return Z}};var o$={meta:{docs:"Require === and !== instead of == and !=",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/([^=!])(\s*)(==)(\s*)([^=])/g,G=/([^!])(\s*)(!=)(\s*)([^=])/g,q;for(q=Q.exec(z);q!==null;q=Q.exec(z))Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,q.index+2),ruleId:"eslint/eqeqeq",message:"Expected '===' and instead saw '=='",severity:"error"});for(q=G.exec(z);q!==null;q=G.exec(z))Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,q.index+2),ruleId:"eslint/eqeqeq",message:"Expected '!==' and instead saw '!='",severity:"error"})}return Z},fix:($)=>{let J=$;return J=J.replace(/([^!])(\s*)(!=)(\s*)([^=])/g,"$1$2!==$4$5"),J=J.replace(/([^=!])(\s*)(==)(\s*)([^=])/g,"$1$2===$4$5"),J}};var c$={meta:{docs:"Enforce a maximum depth that blocks can be nested",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=4,z=0,Q=0,G=0;for(let q=0;q<X.length;q++){let U=X[q];if(U.match(/\b(if|for|while|switch|try|catch|else)\b.*\{/)){if(z++,z>Q)Q=z,G=q+1}else if(U.match(/\{/)&&!U.match(/^.*\}/)){if(X[q-1]?.match(/\b(if|for|while|switch|try|catch|else)\b/)){if(z++,z>Q)Q=z,G=q+1}}if(U.match(/^\s*\}/))z--;if(z>4)Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"eslint/max-depth",message:`Blocks are nested too deeply (${z}), maximum allowed is 4`,severity:"error"})}return Z}};var r$={meta:{docs:"Enforce a maximum number of lines of code in a function",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=50,z=!1,Q=0,G="",q=0;for(let U=0;U<X.length;U++){let W=X[U],K=W.match(/\bfunction\s+(\w+)\s*\(|(\w+)\s*=\s*(?:\([^)]*\)|(\w+))\s*=>/);if(K)z=!0,Q=U+1,G=K[1]||K[2]||K[3]||"anonymous",q=0;if(z)for(let H of W){if(H==="{")q++;if(H==="}"){if(q--,q===0){let V=U+1-Q+1;if(V>50)Z.push({filePath:J.filePath,line:Q,column:1,ruleId:"eslint/max-lines-per-function",message:`Function '${G}' has ${V} lines, exceeds maximum of 50`,severity:"error"});z=!1}}}}return Z}};var l$={meta:{docs:"Disallow alert, confirm, and prompt",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\b(alert|confirm|prompt)\s*\(/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){if(z.substring(0,G.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/no-alert",message:`Unexpected ${G[1]}`,severity:"warning"})}}return Z}};var a$={meta:{docs:"Disallow await inside of loops",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1,z=0,Q=0;for(let G=0;G<X.length;G++){let q=X[G];if(q.match(/\b(for|while|do)\s*\(/))Y=!0,z=0,Q=G;if(Y){for(let U of q){if(U==="{")z++;if(U==="}"){if(z--,z===0)Y=!1}}if(q.match(/\bawait\s+/))Z.push({filePath:J.filePath,line:G+1,column:1,ruleId:"eslint/no-await-in-loop",message:"Unexpected await inside a loop. Consider using Promise.all() instead",severity:"error"})}}return Z}};var s$={meta:{docs:"Disallow use of arguments.caller or arguments.callee",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\barguments\s*\.\s*(caller|callee)\b/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z))Z.push({filePath:J.filePath,line:Y+1,column:G.index+1,ruleId:"eslint/no-caller",message:`Avoid arguments.${G[1]}`,severity:"error"})}return Z}};var n$={meta:{docs:"Disallow lexical declarations in case clauses",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1,z=!1;for(let Q=0;Q<X.length;Q++){let G=X[Q];if(G.match(/\bcase\s+(?:\S.*)?:|default\s*:/))Y=!0,z=!0;else z=!1;if(Y&&!z&&(G.match(/\bbreak\b/)||G.match(/\bcase\s+(?:\S.*)?:/)))Y=!1;if(Y&&!z){if(G.match(/\b(let|const|function|class)\s+/))Z.push({filePath:J.filePath,line:Q+1,column:1,ruleId:"eslint/no-case-declarations",message:"Unexpected lexical declaration in case block",severity:"error"})}}return Z}};var i$={meta:{docs:"Disallow else blocks after return statements in if statements",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y];if(!/^\s*else\b/.test(z))continue;let Q=!1;for(let G=Y-1;G>=0&&G>=Y-10;G--){let q=X[G].trim();if(q.startsWith("return"))Q=!0;if(q==="}"&&Q)break;if(q.includes("{"))break}if(Q)Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,z.indexOf("else")+1),ruleId:"eslint/no-else-return",message:"Unnecessary else after return",severity:"warning"})}return Z}};var t$={meta:{docs:"Disallow empty block statements",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\{\s*\}/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){let q=z.substring(0,G.index).trim(),U=/(?:if|else|for|while|do|try|catch|finally|function|\})\s*$/.test(q),W=/[=:]$/.test(q)||/return\s*$/.test(q);if(U&&!W)Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/no-empty",message:"Empty block statement",severity:"error"})}}for(let Y=0;Y<X.length-1;Y++){let z=X[Y],Q=X[Y+1];if(/\{\s*$/.test(z.trim()))for(let G=Y+1;G<X.length;G++){let q=X[G].trim();if(q==="")continue;if(q==="}"||q.startsWith("}")){let U=z.substring(0,z.lastIndexOf("{")).trim(),W=/(?:if|else|for|while|do|try|catch|finally|function|\})\s*$/.test(U),K=/[=:]$/.test(U)||/return\s*$/.test(U);if(W&&!K)Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,z.lastIndexOf("{")+1),ruleId:"eslint/no-empty",message:"Empty block statement",severity:"error"})}break}}return Z}};var e$={meta:{docs:"Disallow empty functions",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=[/function\s+\w+\s*\([^)]*\)\s*\{\s*\}/g,/function\s*\([^)]*\)\s*\{\s*\}/g,/\([^)]*\)\s*=>\s*\{\s*\}/g,/\w+\s*\([^)]*\)\s*\{\s*\}/g];for(let G of Q){let q;for(q=G.exec(z);q!==null;q=G.exec(z)){if(z.substring(0,q.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,q.index+1),ruleId:"eslint/no-empty-function",message:"Unexpected empty function",severity:"warning"})}}}return Z}};var $8={meta:{docs:"Disallow use of eval()",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\beval\s*\(/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){if(z.substring(0,G.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/no-eval",message:"eval can be harmful",severity:"error"})}}return Z}};var cQ=["Object","Array","String","Number","Boolean","Date","RegExp","Function","Math","JSON","Promise","Map","Set","WeakMap","WeakSet","Symbol","Proxy","Reflect","Error","TypeError","RangeError"],Z8={meta:{docs:"Disallow extending native types",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y];for(let Q of cQ){let G=new RegExp(`\\b${Q}\\.prototype\\.\\w+\\s*=`,"g"),q;for(q=G.exec(z);q!==null;q=G.exec(z)){if(z.substring(0,q.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,q.index+1),ruleId:"eslint/no-extend-native",message:`${Q} prototype is read only, properties should not be added`,severity:"error"})}}}return Z}};var J8={meta:{docs:"Disallow unnecessary boolean casts",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=[/\bif\s*\(\s*Boolean\s*\(/g,/\bwhile\s*\(\s*Boolean\s*\(/g,/!\s*Boolean\s*\(/g,/\?\s*Boolean\s*\(/g,/&&\s*Boolean\s*\(/g,/\|\|\s*Boolean\s*\(/g,/!!\s*\w+/g];for(let G of Q){let q;for(q=G.exec(z);q!==null;q=G.exec(z)){if(z.substring(0,q.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,q.index+1),ruleId:"eslint/no-extra-boolean-cast",message:"Redundant Boolean call or double negation",severity:"error"})}}}return Z},fix:($)=>{let J=$;return J=J.replace(/\b(if|while)\s*\(\s*Boolean\s*\(([^)]+)\)\s*\)/g,"$1 ($2)"),J=J.replace(/!\s*Boolean\s*\(([^)]+)\)/g,"!$1"),J=J.replace(/!!\s*(\w+)/g,"$1"),J}};var rQ=["Array","Boolean","Date","Error","Function","JSON","Math","Number","Object","RegExp","String","Symbol","undefined","NaN","Infinity","isNaN","isFinite","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","eval","Promise","Proxy","Reflect","Set","Map","WeakSet","WeakMap","ArrayBuffer","DataView","console","window","document","globalThis","global","process"],X8={meta:{docs:"Disallow assignment to native objects or read-only global variables",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y];for(let Q of rQ){let G=new RegExp(`\\b${Q}\\s*=\\s*[^=]`,"g"),q;for(q=G.exec(z);q!==null;q=G.exec(z))if(!z.slice(q.index).match(new RegExp(`^${Q}\\s*===?`)))Z.push({filePath:J.filePath,line:Y+1,column:q.index+1,ruleId:"eslint/no-global-assign",message:`Read-only global '${Q}' should not be modified`,severity:"error"})}}return Z}};var Y8={meta:{docs:"Disallow implied eval() via setTimeout/setInterval with strings",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\b(setTimeout|setInterval)\s*\(\s*(['"`])/g,G;while((G=Q.exec(z))!==null){if(z.substring(0,G.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/no-implied-eval",message:"Implied eval. Consider passing a function instead of a string",severity:"error"})}}return Z}};var z8={meta:{docs:"Disallow the use of the __iterator__ property",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/__iterator__/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){if(z.substring(0,G.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/no-iterator",message:"Reserved name '__iterator__'",severity:"error"})}}return Z}};var b1={meta:{docs:"Disallow if statements as the only statement in else blocks",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(/^\s*else\s*(?:\{\s*)?$/.test(z)){let G=Y,q=z.includes("{");if(!q){if(Y+1<X.length&&X[Y+1].trim()==="{")G=Y+1,q=!0}if(q)for(let U=G+1;U<X.length;U++){let W=X[U].trim();if(W===""||W.startsWith("//")||W.startsWith("/*"))continue;if(W==="}")break;if(W.startsWith("if ")||W.startsWith("if(")){let K=!0,H=0,V=!1;for(let A=U;A<X.length;A++){let _=X[A];if(H+=(_.match(/\{/g)||[]).length,H-=(_.match(/\}/g)||[]).length,A===U){V=!0;continue}if(H===0){for(let w=A+1;w<X.length;w++){let F=X[w].trim();if(F===""||F.startsWith("//"))continue;if(F==="}"||F.startsWith("}"))break;else K=!1;break}break}}if(V&&K)Z.push({filePath:J.filePath,line:U+1,column:Math.max(1,X[U].indexOf("if")+1),ruleId:"eslint/no-lonely-if",message:"Unexpected if as the only statement in an else block",severity:"warning"})}break}}}return Z},fix:($,J)=>{if(b1.check($,J).length===0)return $;return $}};var Q8={meta:{docs:"Disallow new operators outside of assignments or comparisons",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y];if(/^\s*new\s+\w+\s*\(/.test(z)){if(!/[=:]/.test(z.substring(0,z.indexOf("new"))))Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,z.indexOf("new")+1),ruleId:"eslint/no-new",message:"Do not use 'new' for side effects",severity:"warning"})}}return Z}};var G8={meta:{docs:"Disallow new Function() declarations",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\bnew\s+Function\s*\(/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){if(z.substring(0,G.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/no-new-func",message:"The Function constructor is eval",severity:"error"})}}return Z}};var q8={meta:{docs:"Disallow new operators with String, Number, and Boolean",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\bnew\s+(String|Number|Boolean)\s*\(/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){if(z.substring(0,G.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/no-new-wrappers",message:`Do not use ${G[1]} as a constructor`,severity:"error"})}}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=!1,X=J.map((Y)=>{if(Y.trim().startsWith("//")||Y.trim().startsWith("/*"))return Y;return Y.replace(/\bnew\s+(String|Number|Boolean)\s*\(/g,(Q,G)=>{return Z=!0,`${G}(`})});return Z?X.join(`
54
+ `):$}};var U8={meta:{docs:"Disallow octal literals",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\b0[0-7]+\b/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z))Z.push({filePath:J.filePath,line:Y+1,column:G.index+1,ruleId:"eslint/no-octal",message:"Octal literals should not be used",severity:"error"})}return Z}};var W8={meta:{docs:"Disallow reassignment of function parameters",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=new Map;for(let z=0;z<X.length;z++){let Q=X[z],G=[...Q.matchAll(/function\s+(?:(\w+)\s*)?\(([^)]*)\)/g),...Q.matchAll(/(?:const|let|var)?\s*(\w+)\s*=\s*\(([^)]*)\)\s*=>/g),...Q.matchAll(/(?:const|let|var)?\s*(\w+)\s*=\s*(\w+)\s*=>/g)];for(let q of G){let U=q[2]?q[2].split(",").map((K)=>K.trim().split(/[=:]/)[0].trim()):[],W=`line-${z}`;if(U.length>0)Y.set(W,new Set(U.filter((K)=>K&&/^\w+$/.test(K))))}for(let[q,U]of Y.entries())for(let W of U){let K=new RegExp(`\\b${W}\\s*=\\s*[^=]`,"g"),H;for(H=K.exec(Q);H!==null;H=K.exec(Q))if(!Q.slice(H.index).match(/^\w+\s*===?/))Z.push({filePath:J.filePath,line:z+1,column:H.index+1,ruleId:"eslint/no-param-reassign",message:`Assignment to function parameter '${W}'`,severity:"error"})}}return Z}};var K8={meta:{docs:"Disallow use of __proto__",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/__proto__/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){if(z.substring(0,G.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/no-proto",message:"The '__proto__' property is deprecated",severity:"error"})}}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=!1,X=J.map((Y)=>{if(Y.trim().startsWith("//")||Y.trim().startsWith("/*"))return Y;return Y.replace(/(\w+)\.__proto__/g,(Q,G)=>{return Z=!0,`Object.getPrototypeOf(${G})`})});return Z?X.join(`
55
+ `):$}};var H8={meta:{docs:"Disallow assignment operators in return statements",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\breturn\s[^;]*\b\w+\s*=\s*(?!=)/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){let q=G[0];if(/===|==/.test(q))continue;if(z.substring(0,G.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/no-return-assign",message:"Return statement should not contain assignment",severity:"error"})}}return Z}};var V8={meta:{docs:"Disallow comma operators",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\)\s*,\s*\w+\s*\(/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){if(z.substring(0,G.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+G[0].indexOf(",")+1),ruleId:"eslint/no-sequences",message:"Unexpected use of comma operator",severity:"warning"})}}return Z}};var A8={meta:{docs:"Disallow variable declarations from shadowing variables declared in the outer scope",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),z=[new Set];for(let Q=0;Q<X.length;Q++){let G=X[Q];if(G.match(/\bfunction\s+\w+\s*\(|=>\s*\{|\{\s*$/))z.push(new Set);let q=[...G.matchAll(/\b(const|let|var)\s+(\w+)/g),...G.matchAll(/function\s+(\w+)\s*\(/g)];for(let U of q){let W=U[2]||U[1];for(let K=0;K<z.length-1;K++)if(z[K].has(W)){Z.push({filePath:J.filePath,line:Q+1,column:1,ruleId:"eslint/no-shadow",message:`'${W}' is already declared in the upper scope`,severity:"error"});break}z[z.length-1].add(W)}if(G.match(/^\s*\}\s*$/)){if(z.length>1)z.pop()}}return Z}};var _8={meta:{docs:"Disallow throwing literals as exceptions",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=[{pattern:/\bthrow\s+(['"`][^'"`]*['"`])/g,type:"string"},{pattern:/\bthrow\s+(\d+)/g,type:"number"},{pattern:/\bthrow\s+(true|false|null|undefined)/g,type:"literal"}];for(let{pattern:G,type:q}of Q){let U;while((U=G.exec(z))!==null){if(z.substring(0,U.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,U.index+1),ruleId:"eslint/no-throw-literal",message:`Expected an error object to be thrown, got ${q} literal`,severity:"error"})}}}return Z}};var F8={meta:{docs:"Disallow the use of variables before they are defined",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=new Map;for(let z=0;z<X.length;z++){let Q=X[z],G=[...Q.matchAll(/\b(const|let|var)\s+(\w+)/g),...Q.matchAll(/\bfunction\s+(\w+)\s*\(/g),...Q.matchAll(/\bclass\s+(\w+)/g)];for(let q of G){let U=q[2]||q[1];if(!Y.has(U))Y.set(U,z+1)}}for(let z=0;z<X.length;z++){let Q=X[z];if(Q.match(/\b(const|let|var|function|class)\s+\w+/))continue;let G=Q.matchAll(/\b(\w+)\b/g);for(let q of G){let U=q[1],W=Y.get(U);if(W&&W>z+1)Z.push({filePath:J.filePath,line:z+1,column:q.index+1,ruleId:"eslint/no-use-before-define",message:`'${U}' was used before it was defined`,severity:"error"})}}return Z}};var w8={meta:{docs:"Disallow unnecessary .call() and .apply()",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\.\s*call\s*\(\s*(undefined|null)\s*,/g,G=/\.\s*apply\s*\(\s*(undefined|null)\s*,/g,q;for(q=Q.exec(z);q!==null;q=Q.exec(z))Z.push({filePath:J.filePath,line:Y+1,column:q.index+1,ruleId:"eslint/no-useless-call",message:"Unnecessary '.call()'",severity:"error"});for(q=G.exec(z);q!==null;q=G.exec(z))Z.push({filePath:J.filePath,line:Y+1,column:q.index+1,ruleId:"eslint/no-useless-call",message:"Unnecessary '.apply()'",severity:"error"})}return Z}};var B8={meta:{docs:"Disallow unnecessary concatenation of literals or template literals",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=[/(['"`])([^'"`]*)\1\s*\+\s*\1([^'"`]*)\1/g];for(let G of Q){let q;while((q=G.exec(z))!==null){if(z.substring(0,q.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,q.index+1),ruleId:"eslint/no-useless-concat",message:"Unexpected string concatenation of literals",severity:"warning"})}}}return Z},fix:($)=>{let J=$;return J=J.replace(/(['"`])([^'"`]*)\1\s*\+\s*\1([^'"`]*)\1/g,"$1$2$3$1"),J}};var TZ=["/","(",")","[","]","{","}","<",">",":","@","#","$","%","&","=","+","-","*","?","!",";",",","|","~","`","^"],M8={meta:{docs:"Disallow unnecessary escape characters",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y];for(let Q of TZ){let G=`\\${Q}`,q=new RegExp(`(['"\`])[^'"\`]*${G.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}`,"g"),U;while((U=q.exec(z))!==null){let W=U.index,K=z.indexOf(G,W);if(K>W)Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,K+1),ruleId:"eslint/no-useless-escape",message:`Unnecessary escape character: \\${Q}`,severity:"warning"})}}}return Z},fix:($)=>{let J=$;for(let Z of TZ){let X=`\\${Z}`;J=J.replace(new RegExp(X.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"g"),Z)}return J}};var j8={meta:{docs:"Disallow renaming import, export, and destructured assignments to the same name",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/import\s*\{[^}]*\b(\w+)\s+as\s+\1\b[^}]*\}/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z))Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/no-useless-rename",message:`Renaming import '${G[1]}' to '${G[1]}' is redundant`,severity:"error"});let q=/export\s*\{[^}]*\b(\w+)\s+as\s+\1\b[^}]*\}/g;for(G=q.exec(z);G!==null;G=q.exec(z))Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/no-useless-rename",message:`Renaming export '${G[1]}' to '${G[1]}' is redundant`,severity:"error"});let U=/\{[^}]*\b(\w+)\s*:\s*\1\b[^}]*\}\s*=/g;for(G=U.exec(z);G!==null;G=U.exec(z))Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/no-useless-rename",message:`Renaming destructured property '${G[1]}' to '${G[1]}' is redundant`,severity:"error"})}return Z},fix:($)=>{let J=$;return J=J.replace(/\b(\w+)\s+as\s+\1\b/g,"$1"),J=J.replace(/\{([^}]*)\b(\w+)\s*:\s*\2\b([^}]*)\}/g,"{$1$2$3}"),J}};var k1={meta:{docs:"Disallow redundant return statements",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(Q==="return"||Q==="return;"){let G=!1;for(let q=Y+1;q<X.length;q++){let U=X[q].trim();if(U===""||U.startsWith("//")||U.startsWith("/*"))continue;if(U==="}"||U.startsWith("}"))G=!0;break}if(G)Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,z.indexOf("return")+1),ruleId:"eslint/no-useless-return",message:"Unnecessary return statement",severity:"warning"})}}return Z},fix:($,J)=>{let Z=k1.check($,J);if(Z.length===0)return $;let X=$.split(/\r?\n/),Y=new Set(Z.map((Q)=>Q.line-1));return X.filter((Q,G)=>!Y.has(G)).join(`
56
+ `)}};var N8={meta:{docs:"Require let or const instead of var",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\bvar\s+/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){if(z.substring(0,G.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/no-var",message:"Unexpected var, use let or const instead",severity:"error"})}}return Z},fix:($,J)=>{return $.split(/\r?\n/).map((Y)=>{if(Y.trim().startsWith("//")||Y.trim().startsWith("/*"))return Y;return Y.replace(/\bvar\s+/g,"let ")}).join(`
57
+ `)}};var T8={meta:{docs:"Disallow with statements",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\bwith\s*\(/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){if(z.substring(0,G.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/no-with",message:"Unexpected use of 'with' statement",severity:"error"})}}return Z}};var E8={meta:{docs:"Require using arrow functions for callbacks",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=/\.(map|filter|reduce|forEach|some|every|find|findIndex)\s*\(\s*function\s*\(/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){if(z.substring(0,G.index).includes("//"))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,G.index+1),ruleId:"eslint/prefer-arrow-callback",message:"Unexpected function expression, use arrow function instead",severity:"warning"})}}return Z}};var D8={meta:{docs:"Disallow async functions which have no await expression",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++)if(X[Y].match(/\basync\s+(?:function\s+\w+|(?:\(|\w+)\s*(?:\(|=>))/)){let G=!1,q=0,U=!1,W=Y;while(W<X.length){let K=X[W];for(let H of K){if(H==="{")q++,U=!0;if(H==="}"){if(q--,q===0&&U)break}}if(K.match(/\bawait\s+/))G=!0;if(q===0&&U){if(!G)Z.push({filePath:J.filePath,line:Y+1,column:1,ruleId:"eslint/require-await",message:"Async function has no await expression",severity:"error"});break}W++}}return Z}};var EZ=/\.(?:ts|js|tsx|jsx|mts|mjs|cts|cjs)$/;function B($){return{meta:$.meta,check:(J,Z)=>{if(!EZ.test(Z.filePath))return[];return $.check(J,Z)},fix:$.fix?(J,Z)=>{if(!EZ.test(Z.filePath))return J;return $.fix(J,Z)}:void 0}}var DZ=/\.(?:sh|bash|zsh|ksh|dash)$/,RZ=/^#!\s*(?:\/usr\/bin\/env\s+)?(?:ba|z|k|da)?sh\b/;function A0($){return{meta:$.meta,check:(J,Z)=>{if(!DZ.test(Z.filePath)&&!RZ.test(J))return[];return $.check(J,Z)},fix:$.fix?(J,Z)=>{if(!DZ.test(Z.filePath)&&!RZ.test(J))return J;return $.fix(J,Z)}:void 0}}var OZ=/(?:^|[/\\])package\.json$/;function _0($){return{meta:$.meta,check:(J,Z)=>{if(!OZ.test(Z.filePath))return[];return $.check(J,Z)},fix:$.fix?(J,Z)=>{if(!OZ.test(Z.filePath))return J;return $.fix(J,Z)}:void 0}}var LZ={name:"eslint",rules:{"array-callback-return":B(B$),"constructor-super":B(M$),"for-direction":B(j$),"getter-return":B(N$),"no-async-promise-executor":B(T$),"no-compare-neg-zero":B(E$),"no-cond-assign":B(D$),"no-constant-condition":B(O$),"no-const-assign":B(R$),"no-dupe-class-members":B(L$),"no-dupe-keys":B(v1),"no-duplicate-case":B(P$),"no-empty-pattern":B(C$),"no-fallthrough":B(I$),"no-loss-of-precision":B(S$),"no-promise-executor-return":B(v$),"no-redeclare":B(y$),"no-self-assign":B(y1),"no-self-compare":B(b$),"no-sparse-arrays":B(k$),"no-undef":B(f$),"no-unsafe-negation":B(p$),"no-unreachable":B(g$),"no-useless-catch":B(x$),"use-isnan":B(h$),"valid-typeof":B(u$),"default-case":B(d$),eqeqeq:B(o$),"no-alert":B(l$),"no-await-in-loop":B(a$),"no-caller":B(s$),"no-case-declarations":B(n$),"no-else-return":B(i$),"no-empty":B(t$),"no-empty-function":B(e$),"no-eval":B($8),"no-extend-native":B(Z8),"no-global-assign":B(X8),"no-implied-eval":B(Y8),"no-iterator":B(z8),"no-new":B(Q8),"no-new-func":B(G8),"no-new-wrappers":B(q8),"no-octal":B(U8),"no-param-reassign":B(W8),"no-proto":B(K8),"no-return-assign":B(H8),"no-shadow":B(A8),"no-throw-literal":B(_8),"no-use-before-define":B(F8),"no-useless-call":B(w8),"no-with":B(T8),"require-await":B(D8),complexity:B(m$),"max-depth":B(c$),"max-lines-per-function":B(r$),"no-extra-boolean-cast":B(J8),"no-lonely-if":B(b1),"no-sequences":B(V8),"no-useless-concat":B(B8),"no-useless-escape":B(M8),"no-useless-rename":B(j8),"no-useless-return":B(k1),"no-var":B(N8),"prefer-arrow-callback":B(E8)}};var PZ={meta:{docs:"Disallow return statements in constructors - constructors automatically return the instance"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.indexOf("//");if(!(Q>=0?z.slice(0,Q):z).match(/\bconstructor\s*\(/))continue;let U=0,W=!1,K=-1;for(let H=Y;H<X.length;H++){let V=X[H],A=null,_=!1;for(let w=0;w<V.length;w++){let F=V[w];if(_){_=!1;continue}if(F==="\\"&&A){_=!0;continue}if(!A){if(F==="'")A="single";else if(F==='"')A="double";else if(F==="`")A="template";else if(F==="{")U++,W=!0;else if(F==="}"){if(U--,W&&U===0){K=H;break}}}else if(A==="single"&&F==="'"||A==="double"&&F==='"'||A==="template"&&F==="`")A=null}if(K!==-1)break}if(K===-1)continue;for(let H=Y;H<=K;H++){let V=X[H];if(H===Y)continue;if(/^\s*\/\//.test(V))continue;let A=V.indexOf("//"),_=A>=0?V.slice(0,A):V;if(_=_.replace(/(['"`])(?:(?!\1)[^\\]|\\.)*?\1/g,'""'),_.match(/\breturn\b/)){let F=_.indexOf("return"),M=F>0?_[F-1]:" ",T=F+6<_.length?_[F+6]:" ";if(/\w/.test(M)||/\w/.test(T))continue;let E=_.slice(F+6).trim();if(E.startsWith("this;")||E==="this")continue;if(E===";"||E==="")continue;let j=V.indexOf("return");Z.push({filePath:J.filePath,line:H+1,column:j+1||1,ruleId:"no-constructor-return",message:"Unexpected return statement in constructor. Constructors should not return values.",severity:"error",help:"Remove the return statement or move the logic outside of the constructor"})}}}return Z}};var CZ={meta:{docs:"Disallow irregular whitespace characters that may cause issues in code"},check:($,J)=>{let Z=[],X=/[\u00A0\u1680\u180E\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]/g,Y=$.split(/\r?\n/);for(let z=0;z<Y.length;z++){let Q=Y[z],G;X.lastIndex=0;while((G=X.exec(Q))!==null){let U=G[0].charCodeAt(0),W="irregular whitespace",K={160:"NO-BREAK SPACE",5760:"OGHAM SPACE MARK",6158:"MONGOLIAN VOWEL SEPARATOR",8192:"EN QUAD",8193:"EM QUAD",8194:"EN SPACE",8195:"EM SPACE",8196:"THREE-PER-EM SPACE",8197:"FOUR-PER-EM SPACE",8198:"SIX-PER-EM SPACE",8199:"FIGURE SPACE",8200:"PUNCTUATION SPACE",8201:"THIN SPACE",8202:"HAIR SPACE",8232:"LINE SEPARATOR",8233:"PARAGRAPH SEPARATOR",8239:"NARROW NO-BREAK SPACE",8287:"MEDIUM MATHEMATICAL SPACE",12288:"IDEOGRAPHIC SPACE",65279:"ZERO WIDTH NO-BREAK SPACE"};if(K[U])W=K[U];Z.push({filePath:J.filePath,line:z+1,column:G.index+1,ruleId:"no-irregular-whitespace",message:`Irregular whitespace detected: ${W} (U+${U.toString(16).toUpperCase().padStart(4,"0")})`,severity:"error",help:"Replace irregular whitespace with regular spaces or tabs"})}}return Z},fix:($)=>{return $.replace(/[\u00A0\u1680\u180E\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]/g," ")}};var IZ={meta:{docs:"Disallow new operators outside of assignments or comparisons",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(Q.startsWith("//")||Q.startsWith("/*")||Q.startsWith("*"))continue;if(/^\s*new\s+\w+/.test(z)){let q=/^\s*(?:const|let|var|this\.\w+)\s*=\s*new\s+/,U=/^\s*return\s+new\s+/,W=new RegExp("^\\s*new\\s+\\w[^;]*,"),K=/[=:,(]\s*new\s+/;if(!q.test(z)&&!U.test(z)&&!W.test(z)&&!K.test(Q)){let H=z.search(/new\s+/)+1;Z.push({filePath:J.filePath,line:Y+1,column:H,ruleId:"no-new",message:"Do not use 'new' for side effects",severity:"error",help:"Either assign the result to a variable or remove the 'new' operator if the side effect is intentional."})}}}return Z}};var SZ={meta:{docs:"Disallow multiple spaces in regular expressions",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y];if(/^\s*\/\//.test(z))continue;let Q=/\/(?![*/])((?:\\.|[^/\\])+)\/[gimsuvy]*/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){let U=G[1];if(/ {2,}/.test(U)){let W=G.index+1;Z.push({filePath:J.filePath,line:Y+1,column:W,ruleId:"no-regex-spaces",message:"Multiple spaces in regular expression",severity:"error",help:"Use quantifiers like {2} instead of multiple spaces for clarity."})}}let q=/new\s+RegExp\s*\(\s*['"`]([^'"`]+)['"`]/g;for(G=q.exec(z);G!==null;G=q.exec(z)){let U=G[1];if(/ {2,}/.test(U)){let W=G.index+1;Z.push({filePath:J.filePath,line:Y+1,column:W,ruleId:"no-regex-spaces",message:"Multiple spaces in regular expression",severity:"error",help:"Use quantifiers like {2} instead of multiple spaces for clarity."})}}}return Z}};var vZ=new Set(["|","&",":",",","<"]);function lQ($){let J=$.split(""),Z=0,X=null,Y=!1,z=(Q,G)=>{for(let q=Q;q<G&&q<J.length;q+=1)if(J[q]!==`
58
+ `&&J[q]!=="\r")J[q]=" "};while(Z<$.length){let Q=$[Z];if(X){if(Y)Y=!1;else if(Q==="\\")Y=!0;else if(Q===X)X=null;else if(Q===`
59
+ `&&X!=="`")X=null;Z+=1;continue}if(Q==="'"||Q==='"'||Q==="`"){X=Q,Z+=1;continue}if(Q==="/"&&$[Z+1]==="/"){let G=$.indexOf(`
60
+ `,Z);z(Z+2,G<0?$.length:G),Z=G<0?$.length:G;continue}if(Q==="/"&&$[Z+1]==="*"){let G=$.indexOf("*/",Z+2);z(Z+2,G<0?$.length:G),Z=G<0?$.length:G+2;continue}Z+=1}return J.join("")}var t0={meta:{docs:"Report variables and parameters that are declared/assigned but never used"},check:($,J)=>{if(J.filePath.endsWith("/no-unused-vars.ts"))return[];if(J.filePath.endsWith(".d.ts"))return[];let Z=[],X=J.options||{},Y=typeof X.varsIgnorePattern==="string"?X.varsIgnorePattern:"^_",z=typeof X.argsIgnorePattern==="string"?X.argsIgnorePattern:"^_",Q=new RegExp(Y,"u"),G=new RegExp(z,"u"),q=lQ($),U=q.split(/\r?\n/),W=q,K=Array(U.length).fill(!1);(()=>{let j=[],O=!1,v=!1,k=!1,L=!1,h=!1,b="",P=()=>{if(b==="")return!0;if("=([{,;!&|?:+-*/%^~<>".includes(b))return!0;return!1};for(let I=0;I<U.length;I++){K[I]=j.length>0&&j[j.length-1]===-1;let S=U[I];for(let C=0;C<S.length;C++){let N=S[C];if(L){if(N==="*"&&C+1<S.length&&S[C+1]==="/")L=!1,C++;continue}if(h){h=!1;continue}let R=j.length>0&&j[j.length-1]===-1,D=j.length>0&&j[j.length-1]>=0;if(N==="\\"&&(O||v||k||R)){h=!0;continue}if(O){if(N==="'")O=!1;continue}if(v){if(N==='"')v=!1;continue}if(k){if(N==="["){let f=1,p=C+1;while(p<S.length){let d=S[p];if(d==="\\"){p+=2;continue}if(d==="]"){if(f--,f===0)break}p++}C=p;continue}if(N==="/"){k=!1;while(C+1<S.length&&/[gimsuvy]/.test(S[C+1]))C++}continue}if(R){if(N==="`")j.pop();else if(N==="$"&&C+1<S.length&&S[C+1]==="{")j.push(0),C++;continue}if(N==="/"&&C+1<S.length&&S[C+1]==="/")break;if(N==="/"&&C+1<S.length&&S[C+1]==="*"){L=!0,C++;continue}if(D){if(N==="`")j.push(-1),b="";else if(N==="'")O=!0,b="'";else if(N==='"')v=!0,b='"';else if(N==="{")j[j.length-1]++,b="{";else if(N==="}"){let f=j[j.length-1];if(f>0)j[j.length-1]=f-1;else j.pop();b="}"}else if(N==="/"&&P())k=!0;else if(!/\s/.test(N))b=N;continue}if(N==="`")j.push(-1),b="";else if(N==="'")O=!0,b="'";else if(N==='"')v=!0,b='"';else if(N==="/"&&P())k=!0;else if(!/\s/.test(N))b=N}}})();let V=new RegExp("^\\s*(?:const|let|var)\\s+(.+?);?\\s*$");for(let j=0;j<U.length;j++){if(K[j])continue;let O=U[j],v=O.match(V);if(!v)continue;let k=v[1],L=[],h="",b=0,P=0,I=null,S=!1;for(let C=0;C<k.length;C++){let N=k[C];if(S){S=!1,h+=N;continue}if(N==="\\"&&I){S=!0,h+=N;continue}if(!I){if(N==="/"&&k[C+1]==="/")break;if(N==="/"&&k[C+1]==="*"){C+=2;while(C<k.length&&!(k[C]==="*"&&k[C+1]==="/"))C++;C++;continue}if(N==="'")I="single";else if(N==='"')I="double";else if(N==="`")I="template";else if(N==="<")P++;else if(N===">")P--;else if(N==="("||N==="["||N==="{")b++;else if(N===")"||N==="]"||N==="}")b--;else if(N===","&&b===0&&P===0){L.push(h),h="";continue}}else if(I==="single"&&N==="'"||I==="double"&&N==='"'||I==="template"&&N==="`")I=null;h+=N}if(h)L.push(h);for(let C of L){let N=C.trim();if(!N)continue;let R=N.match(/^([$A-Z_][\w$]*)/i),D=[];if(R)D.push(R[1]);else if(N.startsWith("{")||N.startsWith("[")){let f=N[0],p=f==="{"?"}":"]",d=0,u=-1,x=null,y=!1;for(let g=0;g<N.length;g++){let m=N[g];if(y){y=!1;continue}if(m==="\\"&&x){y=!0;continue}if(!x){if(m==="'"||m==='"'||m==="`")x=m==="'"?"single":m==='"'?"double":"template";else if(m===f)d++;else if(m===p){if(d--,d===0){u=g;break}}}else if(x==="single"&&m==="'"||x==="double"&&m==='"'||x==="template"&&m==="`")x=null}if(u>0){let g=N.slice(1,u),m=[],$0="",K0=0,c=null,s=!1;for(let l=0;l<g.length;l++){let r=g[l];if(s){s=!1,$0+=r;continue}if(r==="\\"&&c){s=!0,$0+=r;continue}if(!c){if(r==="'"||r==='"'||r==="`"){c=r==="'"?"single":r==='"'?"double":"template",$0+=r;continue}if(r==="("||r==="{"||r==="[")K0++;if(r===")"||r==="}"||r==="]")K0--;if(r===","&&K0===0){m.push($0.trim()),$0="";continue}}else if(c==="single"&&r==="'"||c==="double"&&r==='"'||c==="template"&&r==="`")c=null;$0+=r}if($0.trim())m.push($0.trim());for(let l of m){if(l.startsWith("...")){let H0=l.slice(3).match(/^([$A-Z_][\w$]*)/i);if(H0)D.push(H0[1]);continue}let r=l.indexOf(":");if(r!==-1){let H0=l.slice(r+1).trim(),F0=0;for(let b0=0;b0<H0.length;b0++){let R0=H0[b0];if(R0==="("||R0==="{"||R0==="[")F0++;else if(R0===")"||R0==="}"||R0==="]")F0--;else if(R0==="="&&F0===0){H0=H0.slice(0,b0).trim();break}}let m0=H0.match(/^([$A-Z_][\w$]*)/i);if(m0)D.push(m0[1])}else{let H0=l,F0=0;for(let b0=0;b0<H0.length;b0++){let R0=H0[b0];if(R0==="("||R0==="{"||R0==="[")F0++;else if(R0===")"||R0==="}"||R0==="]")F0--;else if(R0==="="&&F0===0){H0=H0.slice(0,b0).trim();break}}let m0=H0.match(/^([$A-Z_][\w$]*)/i);if(m0)D.push(m0[1])}}}}for(let f of D){if(Q.test(f))continue;let p=W.indexOf(O),d=W.slice(p+O.length);if(!new RegExp(`\\b${f}\\b`,"g").test(d))Z.push({filePath:J.filePath,line:j+1,column:Math.max(1,O.indexOf(f)+1),ruleId:"pickier/no-unused-vars",message:`'${f}' is assigned a value but never used. Allowed unused vars must match pattern: ${Y}`,severity:"error",help:`Either use this variable in your code, remove it, or prefix it with an underscore (_${f}) to mark it as intentionally unused`})}}}let A=(j)=>{let v=((h)=>{let b="",P=null,I=!1,S=0;for(let C=0;C<h.length;C++){let N=h[C];if(I){I=!1;continue}if(N==="\\"&&P){I=!0;continue}if(!P){if(N==="'")P="single";else if(N==='"')P="double";else if(N==="`")P="template";else if(N==="("||N==="{"||N==="[")S++;else if(N===")"||N==="}"||N==="]")S--;else if(N==="="&&S===0)return b}else if(P==="single"&&N==="'"||P==="double"&&N==='"'||P==="template"&&N==="`")P=null;b+=N}return b})(j);return((h)=>{let b="",P=0;while(P<h.length){let I=h[P];if(I===":"){P++;while(P<h.length&&/\s/.test(h[P]))P++;let S=0,C=0,N=null,R=!1;while(P<h.length){let D=h[P];if(R){R=!1,P++;continue}if(D==="\\"&&N){R=!0,P++;continue}if(!N){if(D==="'")N="single";else if(D==='"')N="double";else if(D==="`")N="template";else if(D==="<")C++;else if(D===">")C--;else if(D==="("||D==="{"||D==="[")S++;else if(D===")"||D==="}"||D==="]")if(S>0)S--;else break;else if(D===","&&S===0&&C===0)break}else if(N==="single"&&D==="'"||N==="double"&&D==='"'||N==="template"&&D==="`")N=null;P++}continue}b+=I,P++}return b})(v).split(/[^$\w]+/).filter((h)=>h&&h!=="undefined")},_=(j,O)=>{let v=!1,k=0,L=0,h=!1,b=0,P=null,I=!1,S=!0,C="",N=!1,R=!1,D=[],f=!1;for(let p=j;p<U.length;p++){let d=U[p],u=d,x=D.length>0&&D[D.length-1]===-1,y=-1,g=null,m=!1;if(!x)for(let c=0;c<d.length-1;c++){let s=d[c],l=d[c+1];if(m){m=!1;continue}if(s==="\\"&&g){m=!0;continue}if(!g){if(s==="'")g="single";else if(s==='"')g="double";else if(s==="`")g="template";else if(s==="/"&&l==="/"){y=c;break}}else if(g==="single"&&s==="'"||g==="double"&&s==='"'||g==="template"&&s==="`")g=null}if(y>=0)u=d.slice(0,y);let $0=(c)=>{let s="",l=0,r=null,H0=!1;while(l<c.length){let F0=c[l];if(H0){H0=!1,s+=F0,l++;continue}if(F0==="\\"&&r){H0=!0,s+=F0,l++;continue}if(!r){if(F0==="'")r="single";else if(F0==='"')r="double";else if(F0==="`")r="template";else if(F0==="/"){let m0=l>0?c.slice(0,l).trimEnd():"",b0=new RegExp("[=([{,:;!&|?]$");if(!m0||b0.test(m0)||m0.endsWith("return")){l++;while(l<c.length){if(c[l]==="\\"){l+=2;continue}if(c[l]==="/"){l++;while(l<c.length&&/[gimsuvy]/.test(c[l]))l++;break}l++}continue}}}else if(r==="single"&&F0==="'"||r==="double"&&F0==='"'||r==="template"&&F0==="`")r=null;s+=F0,l++}return s};if(!x)u=$0(u);let K0=0;if(!v){let c=-1,s=S?typeof O==="number"?O:0:0;if(S=!1,s>=u.length){let l=u.indexOf("=>");s=l>=0?l+2:0}for(let l=s;l<u.length;l++){let r=u[l];if(I){I=!1;continue}if(r==="\\"&&P){I=!0;continue}if(!P){if(r!==" "&&r!=="\t"&&r!==`
61
+ `&&r!=="\r"&&r!=="{"&&r!=="}"&&L===0)C=r;if(r==="'")P="single";else if(r==='"')P="double";else if(r==="`")P="template";else if(r==="<")b++;else if(r===">")b=Math.max(0,b-1);else if(r==="{"){if(L===0){if(h&&b===0&&!vZ.has(C)){c=l;break}}L++}else if(r==="}"){if(L>0){if(L--,L===0)h=!0,C="}"}}}else if(P==="single"&&r==="'"||P==="double"&&r==='"'||P==="template"&&r==="`")P=null}if(c===-1){if(L>0&&vZ.has(C))continue;for(let l=s;l<u.length;l++)if(u[l]==="{"&&!P){c=l;break}}if(c===-1)continue;v=!0,k=1,K0=c+1,j=p}for(let c=K0;c<u.length;c++){let s=u[c];if(f){f=!1;continue}let l=D.length>0&&D[D.length-1]===-1,r=D.length>0&&D[D.length-1]>=0;if(s==="\\"&&(N||R||l)){f=!0;continue}if(N){if(s==="'")N=!1;continue}if(R){if(s==='"')R=!1;continue}if(l){if(s==="`")D.pop();else if(s==="$"&&c+1<u.length&&u[c+1]==="{")D[D.length-1]=0,c++;continue}if(r){if(s==="/"){let H0=u.slice(0,c).trimEnd();if(!H0||/[=([{,:;!&|?]$/.test(H0)||H0.endsWith("return")){c++;while(c<u.length){if(u[c]==="\\"){c+=2;continue}if(u[c]==="/"){while(c+1<u.length&&/[gimsuvy]/.test(u[c+1]))c++;break}c++}continue}}if(s==="`"){D.push(-1);continue}if(s==="'"){N=!0;continue}if(s==='"'){R=!0;continue}if(s==="{"){D[D.length-1]++;continue}if(s==="}")if(D[D.length-1]>0)D[D.length-1]--;else D[D.length-1]=-1;continue}if(s==="'")N=!0;else if(s==='"')R=!0;else if(s==="`")D.push(-1);else if(s==="{")k++;else if(s==="}"){if(k--,k===0)return{from:j,to:p}}}}return null},w=(j,O)=>{let v={parenDepth:0,braceDepth:0,bracketDepth:0,inTemplate:!1},k=(S)=>{for(let C=0;C<S.length;C++){let N=S[C];if(N==="`")v.inTemplate=!v.inTemplate;else if(N==="(")v.parenDepth++;else if(N===")")v.parenDepth--;else if(N==="{")v.braceDepth++;else if(N==="}")v.braceDepth--;else if(N==="[")v.bracketDepth++;else if(N==="]")v.bracketDepth--}},L=()=>v.parenDepth>0||v.braceDepth>0||v.bracketDepth>0||v.inTemplate,h=(S)=>/(?:\?|:|\.|,|&&|\|\||\?\?|\+|-|\*|\/|%|\*\*)$/.test(S.trimEnd()),b=(S)=>/^(?:\?|:|\.|,|&&|\|\||\?\?|\+|-|\*|\/|%|\*\*)/.test(S.trimStart()),P=U[j].slice(O+2);k(P);let I=j+1;while(I<U.length){let S=I===j+1?P:U[I-1];if(!(!P.trim()||L()||h(S)||b(U[I])))break;P+=`
62
+ ${U[I]}`,k(U[I]),I++}return P},F=[],M=!1,T=!1,E=!1;for(let j=0;j<U.length;j++){let O=U[j];if(/^\s*\/\//.test(O))continue;if(K[j])continue;let v=O,k=null,L=!1,h=!1;for(let N=0;N<O.length-1;N++){let R=O[N],D=O[N+1];if(h){h=!1;continue}if(R==="\\"&&(k||L)){h=!0;continue}if(!k&&!L){if(R==="'")k="single";else if(R==='"')k="double";else if(R==="`")k="template";else if(R==="/"){let f=O[N-1]||"",p=N>=2?O.slice(N-2,N):"";if(new RegExp("[=([{,:;!?]").test(f)||p==="&&"||p==="||"||/^\s*$/.test(O.slice(0,N)))L=!0;else if(D==="/"){v=O.slice(0,N);break}}}else if(k){if(k==="single"&&R==="'"||k==="double"&&R==='"'||k==="template"&&R==="`")k=null}else if(L&&R==="/")L=!1}let I=((N)=>{let R="",D=0;while(D<N.length){if(N[D]==="/"){let f=D>0?N.slice(0,D).trimEnd():"",p=new RegExp("[=([{,:;!&|?]$");if(!f||p.test(f)||f.endsWith("return")){D++;while(D<N.length){if(N[D]==="\\"){D+=2;continue}if(N[D]==="/"){D++;while(D<N.length&&/[gimsuvy]/.test(N[D]))D++;break}D++}continue}}R+=N[D],D++}return R})(v).replace(/'(?:[^'\\]|\\.)*'/g,"''").replace(/"(?:[^"\\]|\\.)*"/g,'""');{let N="";for(let R=0;R<I.length;R++){let D=I[R];if(E){E=!1;let d=F.length>0&&F[F.length-1]===-1;N+=d?" ":D;continue}let f=F.length>0&&F[F.length-1]===-1,p=F.length>0&&F[F.length-1]>=0;if(D==="\\"&&(M||T||f)){E=!0,N+=f?" ":D;continue}if(M){if(D==="'")M=!1;N+=D;continue}if(T){if(D==='"')T=!1;N+=D;continue}if(f){if(D==="`")F.pop();else if(D==="$"&&R+1<I.length&&I[R+1]==="{")F[F.length-1]=0,N+=" ",R++;else N+=" ";continue}if(p){if(D==="`")F.push(-1),N+=" ";else if(D==="'")M=!0,N+=D;else if(D==='"')T=!0,N+=D;else if(D==="{")F[F.length-1]++,N+=D;else if(D==="}")if(F[F.length-1]>0)F[F.length-1]--,N+=D;else F[F.length-1]=-1,N+=" ";else N+=D;continue}if(D==="`")F.push(-1),N+=" ";else if(D==="'")M=!0,N+=D;else if(D==='"')T=!0,N+=D;else N+=D}I=N}let S=I.match(/\bfunction\b/);if(S){if(O.includes("function scanContent")||O.includes("function findMatching"))continue;if(I.slice(S.index+8).trimStart().startsWith(":"))continue;let R=I.slice(0,S.index).trimEnd();if(R.endsWith(".")||R.endsWith("?."))continue;let D=S.index,f=O.indexOf("(",D);if(f===-1)continue;let p=0,d=-1,u=j,x="";for(let $0=j;$0<U.length;$0++){let K0=$0===j?U[$0]:U[$0],c=$0===j?f:0;for(let s=c;s<K0.length;s++)if(K0[s]==="(")p++;else if(K0[s]===")"){if(p--,p===0){if(d=s,u=$0,j===$0)x=O.slice(f+1,d);else{x=O.slice(f+1);for(let l=j+1;l<$0;l++)x+=` ${U[l]}`;x+=` ${K0.slice(0,d)}`}break}}if(d!==-1)break}if(d===-1)continue;let y=A(x),g=_(u,d),m="";if(g)if(g.from===u){let $0=U[g.from],K0=$0.lastIndexOf("{"),c=K0>=0?$0.slice(K0+1):"";if(g.to>g.from)m=`${c}
63
+ ${U.slice(g.from+1,g.to+1).join(`
64
+ `)}`;else m=c}else m=U.slice(g.from,g.to+1).join(`
65
+ `);for(let $0 of y){if(!$0||G.test($0)||$0==="undefined")continue;if(!new RegExp(`\\b${$0}\\b`,"g").test(m))Z.push({filePath:J.filePath,line:j+1,column:Math.max(1,O.indexOf($0)+1),ruleId:"pickier/no-unused-vars",message:`'${$0}' is defined but never used (function parameter). Allowed unused args must match pattern: ${z}`,severity:"error"})}continue}let C=O.indexOf("=>");if(C!==-1&&I.includes("=>")){let N=-1;for(let R=C-1;R>=0;R--){let D=O[R];if(D===")"){N=R;break}if(D!==" "&&D!=="\t"&&D!==`
66
+ `&&D!==":"&&D!==">"&&!/\w/.test(D))break}if(N!==-1){let R=-1,D=1;for(let f=N-1;f>=0;f--){let p=O[f];if(p===")")D++;else if(p==="("){if(D--,D===0){R=f;break}}}if(R!==-1){let f=!1,p=0,d=0;for(let x=R-1;x>=0;x--){let y=O[x];if(y===">"){p++;continue}if(y==="<"){if(p>0){p--;continue}if(d===0){f=!0;break}continue}if(y===":"&&p===0&&d===0){f=!0;break}if(p>0)continue;if(y===",")continue;if(y===")"){d++;continue}if(y==="("){d--;continue}if(y==="|"||y==="&"){f=!0;break}if(y==="="||y==="{"||y==="["){if(d>=0)break;continue}if(y!==" "&&y!=="\t"&&!/[\w.]/.test(y)){if(d>=0)break}}if(!f){let x=O.slice(0,R);if(/^\s*(?:export\s+)?(?:declare\s+)?type\s+\w[\w$]*\s*(?:<[^>]*>)?\s*=\s*$/.test(x))f=!0;else if(/\bas\s+$/.test(x))f=!0}if(f)continue;let u=O.slice(R+1,N);if(!(u.trim()===""&&O.slice(Math.max(0,R-10),R).includes("async"))){let x=A(u);if(x.length>0){let y="";if(O.slice(C+2).trimStart().startsWith("{")){let m=_(j,C);if(m)if(m.from===j){let $0=U[m.from],K0=$0.indexOf("{",C),c=K0>=0?$0.slice(K0+1):"";if(m.to>m.from)y=`${c}
67
+ ${U.slice(m.from+1,m.to+1).join(`
68
+ `)}`;else y=c}else y=U.slice(m.from,m.to+1).join(`
69
+ `)}else y=w(j,C);for(let m of x){if(!m||G.test(m)||m==="undefined")continue;if(!new RegExp(`\\b${m}\\b`,"g").test(y))Z.push({filePath:J.filePath,line:j+1,column:Math.max(1,O.indexOf(m)+1),ruleId:"pickier/no-unused-vars",message:`'${m}' is defined but never used (function parameter). Allowed unused args must match pattern: ${z}`,severity:"error"})}continue}}}}}{let N=/(?:^|[=,:({\s])\s*([$A-Z_][\w$]*)\s*=>/gi,R;while((R=N.exec(I))!==null){let D=R[1];if(!D||G.test(D)||D==="undefined")continue;let f=I.slice(0,R.index+R[0].indexOf(D)).trimEnd();if(/\)\s*:$/.test(f)||/\)\s*:\s*$/.test(f))continue;if(/^(?:string|number|boolean|void|never|any|unknown|object|bigint|symbol|undefined|null)$/.test(D))continue;let p=new RegExp(`\\b${D}\\s*=>`),d=O.match(p);if(!d)continue;let u=O.indexOf(d[0])+d[0].lastIndexOf("=>"),x="";if(O.slice(u+2).trimStart().startsWith("{")){let m=_(j,u);if(m)if(m.from===j){let $0=U[m.from],K0=$0.indexOf("{",u),c=K0>=0?$0.slice(K0+1):"";if(m.to>m.from)x=`${c}
70
+ ${U.slice(m.from+1,m.to+1).join(`
71
+ `)}`;else x=c}else x=U.slice(m.from,m.to+1).join(`
72
+ `)}else x=w(j,u);if(!new RegExp(`\\b${D}\\b`,"g").test(x))Z.push({filePath:J.filePath,line:j+1,column:Math.max(1,O.indexOf(D)+1),ruleId:"pickier/no-unused-vars",message:`'${D}' is defined but never used (function parameter). Allowed unused args must match pattern: ${z}`,severity:"error"})}}}return Z},fix:($,J)=>{let Z=t0.check($,J);if(Z.length===0)return $;let X=Z.filter((K)=>K.message.includes("(function parameter)"));if(X.length===0)return $;let Y=$.split(/\r?\n/),z=new Set,Q=/(?:eslint|pickier)-disable-next-line\b([^*\n]*)/;for(let K=0;K<Y.length;K++){let H=Y[K].match(Q);if(!H)continue;let V=H[1].trim();if(V===""||/\bno-unused-vars\b/.test(V)||/\bpickier\/no-unused-vars\b/.test(V))z.add(K+2)}let G=new Map;for(let K of X){if(z.has(K.line))continue;let H=K.message.match(/^'([^']+)'/);if(!H)continue;let V=H[1];if(V.startsWith("_"))continue;let A=G.get(K.line);if(!A)A=new Set,G.set(K.line,A);A.add(V)}if(G.size===0)return $;let q=$.split(/\r?\n/);function U(K){let H=[],V=!1,A=!1,_=!1,w=-1;for(let F=0;F<K.length;F++){let M=K[F];if(_){_=!1;continue}if(M==="\\"&&(V||A||w>=0)){_=!0;continue}if(w>=0){if(M==="`")H.push([w,F]),w=-1;continue}if(V){if(M==="'")V=!1;continue}if(A){if(M==='"')A=!1;continue}if(M==="`")w=F;else if(M==="'")V=!0;else if(M==='"')A=!0}if(w>=0)H.push([w,K.length]);return H}let W=!1;for(let[K,H]of G){let V=K-1,A=q[V];if(A===void 0)continue;let _=U(A),w=(T)=>_.some(([E,j])=>T>E&&T<j),F=[];for(let T of H){let E=T.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),j=new RegExp(`(?<=[(,]\\s*)\\b${E}\\b(?=\\s*[,):=])`,"g"),O;while((O=j.exec(A))!==null){if(w(O.index))continue;F.push({start:O.index,end:O.index+T.length,name:T})}}if(F.length===0)continue;F.sort((T,E)=>E.start-T.start);let M=A;for(let T of F)M=`${M.slice(0,T.start)}_${T.name}${M.slice(T.end)}`;if(M!==A)q[V]=M,W=!0}return W?q.join(`
73
+ `):$}};function e0($){let J=$.split(/\r?\n/),Z=Array(J.length).fill(!1),X=[],Y=!1,z=!1,Q=!1,G=!1,q=!1,U="",W=()=>{if(U==="")return!0;return"=([{,;!&|?:+-*/%^~<>".includes(U)};for(let K=0;K<J.length;K++){Z[K]=X.length>0&&X[X.length-1]===-1;let H=J[K];for(let V=0;V<H.length;V++){let A=H[V];if(G){if(A==="*"&&V+1<H.length&&H[V+1]==="/")G=!1,V++;continue}if(q){q=!1;continue}let _=X.length>0&&X[X.length-1]===-1,w=X.length>0&&X[X.length-1]>=0;if(A==="\\"&&(Y||z||Q||_)){q=!0;continue}if(Y){if(A==="'")Y=!1;continue}if(z){if(A==='"')z=!1;continue}if(Q){if(A==="["){let F=1,M=V+1;while(M<H.length){let T=H[M];if(T==="\\"){M+=2;continue}if(T==="]"){if(F--,F===0)break}M++}V=M;continue}if(A==="/"){Q=!1;while(V+1<H.length&&/[gimsuvy]/.test(H[V+1]))V++}continue}if(_){if(A==="`")X.pop();else if(A==="$"&&V+1<H.length&&H[V+1]==="{")X.push(0),V++;continue}if(A==="/"&&V+1<H.length&&H[V+1]==="/")break;if(A==="/"&&V+1<H.length&&H[V+1]==="*"){G=!0,V++;continue}if(w){if(A==="`")X.push(-1),U="";else if(A==="'")Y=!0,U="'";else if(A==='"')z=!0,U='"';else if(A==="{")X[X.length-1]++,U="{";else if(A==="}"){let F=X[X.length-1];if(F>0)X[X.length-1]=F-1;else X.pop();U="}"}else if(A==="/"&&W())Q=!0;else if(!/\s/.test(A))U=A;continue}if(A==="`")X.push(-1),U="";else if(A==="'")Y=!0,U="'";else if(A==='"')z=!0,U='"';else if(A==="/"&&W())Q=!0;else if(!/\s/.test(A))U=A}}return Z}function aQ($,J){let Z=[],X=0,Y=0,z=null,Q=!1;for(let G=0;G<$.length;G++){let q=$[G];if(Q){Q=!1;continue}if(q==="\\"&&z){Q=!0;continue}if(!z){if(q==="'")z="single";else if(q==='"')z="double";else if(q==="`")z="template";else if(q==="("||q==="{"||q==="[")X++;else if(q===")"||q==="}"||q==="]")X--;else if(q===J&&X===0)Z.push($.slice(Y,G)),Y=G+1}else if(z==="single"&&q==="'"||z==="double"&&q==='"'||z==="template"&&q==="`")z=null}return Z.push($.slice(Y)),Z}function sQ($){let J=0;for(let Z=0;Z<$.length;Z++){let X=$[Z];if(X==="{"||X==="("||X==="["||X==="<")J++;else if(X==="}"||X===")"||X==="]"||X===">")J--;else if(X==="="&&J===0&&$[Z+1]!=="="&&$[Z-1]!=="!"&&$[Z-1]!=="<"&&$[Z-1]!==">")return Z}return-1}function nQ($,J){let Z=new RegExp(`\\b${J}\\b`),X=0,Y=null,z=!1;while(X<$.length){let Q=$[X];if(z){z=!1,X++;continue}if(Q==="\\"&&Y){z=!0,X++;continue}if(Y){if(Y==="single"&&Q==="'"||Y==="double"&&Q==='"'||Y==="template"&&Q==="`")Y=null;X++;continue}if(Q==="'"){Y="single",X++;continue}if(Q==='"'){Y="double",X++;continue}if(Q==="`"){Y="template",X++;continue}if(Q==="["||Q==="{"){let G=Q,q=Q==="["?"]":"}",U=1,W=X+1;while(W<$.length&&U>0){let K=$[W];if(K==="\\"){W+=2;continue}if(K===G)U++;else if(K===q)U--;if(U===0)break;W++}if(U===0&&W<$.length){let K=W+1;while(K<$.length&&($[K]===" "||$[K]==="\t"||$[K]==="\r"||$[K]===`
74
+ `))K++;if($[K]==="="&&$[K+1]!=="="&&$[K+1]!==">"){let H=$.slice(X+1,W);if(Z.test(H)){let V=new RegExp(`\\b${J}\\b\\s*:`),A=new RegExp(`:\\s*\\b${J}\\b`);if(G==="{"){if(!(V.test(H)&&!A.test(H)&&!new RegExp(`(?:^|[\\s,{])\\s*${J}\\s*(?:,|\\s*=|\\s*})`).test(H)))return!0}else return!0}}}X=W+1;continue}X++}return!1}function yZ($,J){let Z=new RegExp("^\\s*(?:let|var)\\s+(.+?);?\\s*$"),X=$.match(Z);if(!X)return null;let Y=X[1],z=sQ(Y);if(z>=0){let q=Y.indexOf(":");if(q>=0&&q<z)Y=Y.slice(0,q)+Y.slice(z)}let Q=aQ(Y,","),G=[];for(let q of Q){let U=q.trim();if(!U)continue;if(U.match(/^[{[]/))return null;let K=U.match(/^([$A-Z_][\w$]*)/i);if(!K)return null;let H=K[1];if(!/=/.test(U))return null;let A=J.indexOf($),_=J.slice(A+$.length),F=`\\b${H}\\s*(?:${["=","+=","-=","*=","/=","%=","**=","<<=",">>=",">>>=","&=","^=","|="].map((k)=>k.replace(/[|\\^$*+?.(){}[\]]/g,(L)=>`\\${L}`)).join("|")})`,M=new RegExp(F).test(_),T=new RegExp(`(?:^|[^$w])(?:\\+\\+|--)\\s*${H}\\b|\\b${H}\\s*(?:\\+\\+|--)`).test(_),E=nQ(_,H),j=U.indexOf("="),O=j>=0?U.slice(j+1):"",v=new RegExp(F).test(O);G.push({name:H,fixable:!M&&!T&&!E&&!v})}return G}var R8={meta:{docs:"Suggest 'const' for variables that are never reassigned (heuristic)"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=e0($);for(let z=0;z<X.length;z++){if(Y[z])continue;let Q=X[z],G=yZ(Q,$);if(!G)continue;for(let{name:q,fixable:U}of G){if(!U)continue;let W=Q.search(new RegExp(`\\b${q.replace(/\$/g,"\\$")}\\b`)),K=W!==-1?W:Q.indexOf(q);Z.push({filePath:J.filePath,line:z+1,column:Math.max(1,K+1),ruleId:"prefer-const",message:`'${q}' is never reassigned. Use 'const' instead`,severity:"error",help:`Change 'let ${q}' to 'const ${q}' since the variable is never reassigned. This makes your code more predictable and prevents accidental mutations`})}}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=e0($),X=new Set,Y=/(?:eslint|pickier)-disable-next-line\b([^*\n]*)/;for(let Q=0;Q<J.length;Q++){let G=J[Q].match(Y);if(!G)continue;let q=G[1].trim();if(q===""||/\bprefer-const\b/.test(q))X.add(Q+2)}let z=!1;for(let Q=0;Q<J.length;Q++){if(X.has(Q+1))continue;if(Z[Q])continue;let G=J[Q];if(!/^\s*let\b/.test(G))continue;let q=yZ(G,$);if(!q||q.length===0)continue;if(!q.every((W)=>W.fixable))continue;let U=G.replace(/^(\s*)let(\s+)/,"$1const$2");if(U!==G)J[Q]=U,z=!0}return z?J.join(`
75
+ `):$}};var bZ={meta:{docs:"Prefer object spread ({...obj}) over Object.assign() for object composition"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y];if(/^\s*\/\//.test(z))continue;let Q=z.indexOf("//"),G=Q>=0?z.slice(0,Q):z,q=G.matchAll(/\bObject\.assign\s*\(/g);for(let U of q){let W=U.index,K=G.slice(0,W),H=(K.match(/'/g)||[]).length,V=(K.match(/"/g)||[]).length,A=(K.match(/`/g)||[]).length;if(H%2!==0||V%2!==0||A%2!==0)continue;let _=W+13,w=G.slice(_),F=-1,M=1,T=0,E=0,j=null,O=!1;for(let k=1;k<w.length;k++){let L=w[k];if(O){O=!1;continue}if(L==="\\"&&j){O=!0;continue}if(!j){if(L==="'")j="single";else if(L==='"')j="double";else if(L==="`")j="template";else if(L==="(")M++;else if(L===")"){if(M--,M===0)break}else if(L==="{")T++;else if(L==="}")T--;else if(L==="[")E++;else if(L==="]")E--;else if(L===","&&M===1&&T===0&&E===0){F=k;break}}else if(j==="single"&&L==="'"||j==="double"&&L==='"'||j==="template"&&L==="`")j=null}if(F===-1)continue;let v=w.slice(1,F).trim();if(v==="{}")Z.push({filePath:J.filePath,line:Y+1,column:W+1,ruleId:"prefer-object-spread",message:"Prefer object spread over Object.assign",severity:"error",help:"Use object spread syntax: {...obj} instead of Object.assign({}, obj)"});else if(v==="{}"||/^\{.*\}$/.test(v))Z.push({filePath:J.filePath,line:Y+1,column:W+1,ruleId:"prefer-object-spread",message:"Prefer object spread over Object.assign for object literals",severity:"error",help:"Use object spread syntax: {...obj1, ...obj2}"})}}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=[];for(let X=0;X<J.length;X++){let Y=J[X];Y=Y.replace(/\bObject\.assign\s*\(\s*\{\}\s*,\s*([^)]+)\)/g,(z,Q)=>{return`{${Q.split(",").map((q)=>q.trim()).map((q)=>`...${q}`).join(", ")}}`}),Z.push(Y)}return Z.join(`
76
+ `)}};function iQ($,J){let Z=!1,X=!1,Y=!1;for(let z=0;z<J;z++){let Q=$[z];if(Q==="\\"){z++;continue}if(Q==="'"&&!X&&!Y)Z=!Z;else if(Q==='"'&&!Z&&!Y)X=!X;else if(Q==="`"&&!Z&&!X)Y=!Y}return Z||X||Y}var O8={meta:{docs:"Prefer template literals over string concatenation",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(Q.startsWith("//")||Q.startsWith("/*")||Q.startsWith("*")||Q.startsWith("import"))continue;let G=/(['"`][^'"`]*['"`])\s*\+\s*([a-z_$][\w$]*)/i,q=/([a-z_$][\w$]*)\s*\+\s*(['"`][^'"`]*['"`])/i,U=Q.match(G)||Q.match(q);if(U){let W=z.indexOf("//"),K=z.indexOf(U[0]);if(W>=0&&K>W)continue;if(iQ(z,K))continue;let H=!!Q.match(q),V=!!Q.match(G);if(H&&!V){if(Q.slice(Q.indexOf(U[0])+U[0].length).startsWith("."))continue}Z.push({filePath:J.filePath,line:Y+1,column:K+1,ruleId:"general/prefer-template",message:"Unexpected string concatenation. Use template literals instead",severity:"warning",help:"Use template literals (backticks) instead of string concatenation. Example: `hello ${name}!` instead of 'hello ' + name + '!'"})}}return Z}};var kZ={name:"general",rules:{"array-callback-return":B(B$),"constructor-super":B(M$),"for-direction":B(j$),"getter-return":B(N$),"no-async-promise-executor":B(T$),"no-compare-neg-zero":B(E$),"no-cond-assign":B(D$),"no-const-assign":B(R$),"no-constant-condition":B(O$),"no-constructor-return":B(PZ),"no-dupe-class-members":B(L$),"no-dupe-keys":B(v1),"no-duplicate-case":B(P$),"no-empty-pattern":B(C$),"no-fallthrough":B(I$),"no-irregular-whitespace":B(CZ),"no-loss-of-precision":B(S$),"no-new":B(IZ),"no-regex-spaces":B(SZ),"no-promise-executor-return":B(v$),"no-redeclare":B(y$),"no-self-assign":B(y1),"no-self-compare":B(b$),"no-sparse-arrays":B(k$),"no-undef":B(f$),"no-unsafe-negation":B(p$),"no-unreachable":B(g$),"no-unused-vars":B(t0),"no-useless-catch":B(x$),"prefer-const":B(R8),"prefer-object-spread":B(bZ),"prefer-template":B(O8),"use-isnan":B(h$),"valid-typeof":B(u$)}};var f1={npm:"registry.npmjs.org",yarn:"registry.yarnpkg.com",verdaccio:"registry.verdaccio.org"};function fZ($){let J=$.split("/").pop()||"";if(J==="package-lock.json")return"npm";if(J==="yarn.lock")return"yarn";if(J==="bun.lockb"||J==="bun.lock")return"bun";return null}function x0($,J){let Z=fZ(J);if(!Z)return!1;if(Z==="npm")try{let X=JSON.parse($);return"lockfileVersion"in X||"dependencies"in X||"packages"in X}catch{return!1}if(Z==="yarn")return $.startsWith("#")||$.includes("__metadata:")||$.includes('resolved "');if(Z==="bun")try{let X=JSON.parse($);return"lockfileVersion"in X||"packages"in X}catch{return!1}return!1}function tQ($){let J=new Map,Z=JSON.parse($);if((Z.lockfileVersion||1)>=2&&Z.packages)for(let[Y,z]of Object.entries(Z.packages)){if(!Y||Y==="")continue;let Q=Y.replace(/^node_modules\//,"").replace(/\/node_modules\//g,"/"),G=Q.split("/node_modules/").pop()||Q;J.set(Y,{name:G,version:z.version||"",resolved:z.resolved,integrity:z.integrity})}else if(Z.dependencies)gZ(Z.dependencies,J,"");return{type:"npm",packages:J}}function gZ($,J,Z){for(let[X,Y]of Object.entries($)){let z=Z?`${Z}/${X}`:X;if(J.set(z,{name:X,version:Y.version||"",resolved:Y.resolved,integrity:Y.integrity}),Y.dependencies)gZ(Y.dependencies,J,z)}}function eQ($){let J=new Map,Z=$.includes("__metadata:"),X=Z?"yarn-berry":"yarn",Y=$.split(`
77
+ `),z="",Q={};for(let G of Y){if(G.startsWith("#")||G.trim()==="")continue;if(!G.startsWith(" ")&&G.includes("@")&&G.endsWith(":")){if(z&&(Q.resolved||Q.integrity))J.set(z,Q);if(z=G.slice(0,-1).trim(),z.startsWith('"')&&z.endsWith('"'))z=z.slice(1,-1);let q=z.match(/^(@?[^@]+)@/);Q={name:q?q[1]:z.split("@")[0],version:""}}else if(G.startsWith(" ")||G.startsWith("\t")){let q=G.trim();if(q.startsWith("version")){let U=q.match(/version[:\s]+"?([^"]+)"?/);if(U)Q.version=U[1]}else if(q.startsWith("resolved")){let U=q.match(/resolved[:\s]+"?([^"]+)"?/);if(U)Q.resolved=U[1]}else if(q.startsWith("resolution:")&&Z){let U=q.match(/resolution[:\s]+"?([^"]+)"?/);if(U)Q.resolved=U[1]}else if(q.startsWith("integrity")||q.startsWith("checksum")){let U=q.match(/(integrity|checksum)[:\s]+"?([^"]+)"?/);if(U)Q.integrity=U[2]}}}if(z&&(Q.resolved||Q.integrity))J.set(z,Q);return{type:X,packages:J}}function $G($){let J=new Map,Z=JSON.parse($);if(Z.packages)for(let[X,Y]of Object.entries(Z.packages)){if(!X||X==="")continue;if(Array.isArray(Y)){let[z,Q,G,q]=Y,U=X,W="";if(typeof z==="string"&&z.includes("@")){let K=z.lastIndexOf("@");if(K>0)U=z.substring(0,K),W=z.substring(K+1)}J.set(X,{name:U,version:W,resolved:Q||void 0,integrity:q||void 0})}else if(typeof Y==="object")J.set(X,{name:Y.name||X.split("@")[0],version:Y.version||"",resolved:Y.resolved,integrity:Y.integrity||Y.hash})}return{type:"bun",packages:J}}function h0($,J){let Z=fZ(J);if(!Z)return null;try{switch(Z){case"npm":return tQ($);case"yarn":return eQ($);case"bun":return $G($);default:return null}}catch{return null}}function pZ($){try{return new URL($).hostname}catch{return null}}function L8($){try{return new URL($).protocol}catch{return null}}function xZ($){try{let Z=new URL($).pathname,X=Z.indexOf("/-/");if(X===-1)return null;let Y=Z.substring(1,X);if(Y.startsWith("@"))return Y;return Y}catch{return null}}function hZ($){if(!$)return null;let J=$.match(/^(sha\d+)-/);return J?J[1]:null}function uZ($){return $.map((J)=>{let Z=J.toLowerCase();return f1[Z]||J})}var dZ={meta:{docs:"Ensure all packages are from allowed registry hosts",recommended:!0},check($,J){let Z=[];if(!x0($,J.filePath))return Z;let X=h0($,J.filePath);if(!X)return Z;let Y=J.options||{},z=Y.allowedHosts||["npm","yarn"],Q=Y.emptyHostname!==!1,G=uZ(z),q=$.split(`
78
+ `);for(let[U,W]of X.packages){if(!W.resolved){if(!Q){let H=mZ(q,U);Z.push({filePath:J.filePath,line:H,column:1,ruleId:"lockfile/validate-host",message:`Package "${W.name}" has no resolved URL`,severity:"error",help:"All packages should have a resolved URL from an allowed registry."})}continue}let K=pZ(W.resolved);if(!K)continue;if(!G.includes(K)){let H=mZ(q,U),V=z.map((A)=>f1[A.toLowerCase()]||A).join(", ");Z.push({filePath:J.filePath,line:H,column:1,ruleId:"lockfile/validate-host",message:`Invalid host for package "${W.name}": expected one of [${V}], got "${K}"`,severity:"error",help:`Package is resolving from an unauthorized registry. This could indicate a supply chain attack. Allowed hosts: ${V}`})}}return Z}};function mZ($,J){for(let Z=0;Z<$.length;Z++)if($[Z].includes(J)||$[Z].includes(`"${J}"`))return Z+1;return 1}var oZ={meta:{docs:"Ensure all packages use HTTPS protocol",recommended:!0},check($,J){let Z=[];if(!x0($,J.filePath))return Z;let X=h0($,J.filePath);if(!X)return Z;let Y=$.split(`
79
+ `);for(let[z,Q]of X.packages){if(!Q.resolved)continue;let G=L8(Q.resolved);if(!G)continue;if(G!=="https:"){let q=ZG(Y,z);Z.push({filePath:J.filePath,line:q,column:1,ruleId:"lockfile/validate-https",message:`Package "${Q.name}" uses insecure protocol: "${G}" instead of "https:"`,severity:"error",help:"All packages should be downloaded over HTTPS to prevent man-in-the-middle attacks."})}}return Z}};function ZG($,J){for(let Z=0;Z<$.length;Z++)if($[Z].includes(J)||$[Z].includes(`"${J}"`))return Z+1;return 1}var cZ={meta:{docs:"Ensure all packages use strong integrity hashes (SHA512)",recommended:!0},check($,J){let Z=[];if(!x0($,J.filePath))return Z;let X=h0($,J.filePath);if(!X)return Z;let Y=J.options||{},z=Y.requiredAlgorithm||"sha512",Q=new Set(Y.exclude||[]),G={sha1:1,sha256:2,sha384:3,sha512:4},q=G[z]||4,U=$.split(`
80
+ `);for(let[W,K]of X.packages){if(Q.has(K.name))continue;if(!K.integrity)continue;let H=hZ(K.integrity);if(!H)continue;if((G[H.toLowerCase()]||0)<q){let A=JG(U,W);Z.push({filePath:J.filePath,line:A,column:1,ruleId:"lockfile/validate-integrity",message:`Package "${K.name}" uses weak hash algorithm: "${H}" (required: ${z})`,severity:"error",help:`Weak hash algorithms are susceptible to collision attacks. Upgrade to ${z} by regenerating your lockfile with a recent package manager.`})}}return Z}};function JG($,J){for(let Z=0;Z<$.length;Z++)if($[Z].includes(J)||$[Z].includes(`"${J}"`))return Z+1;return 1}var rZ={meta:{docs:"Ensure package names match their resolved URLs",recommended:!0},check($,J){let Z=[];if(!x0($,J.filePath))return Z;let X=h0($,J.filePath);if(!X)return Z;let z=(J.options||{}).aliases||{},Q=Object.values(f1),G=$.split(`
81
+ `);for(let[q,U]of X.packages){if(!U.resolved)continue;let W=!1;try{let A=new URL(U.resolved);W=Q.includes(A.hostname)}catch{continue}if(!W)continue;let K=xZ(U.resolved);if(!K)continue;let H=U.name,V=z[H]||H;if(K!==V){let A=XG(G,q);Z.push({filePath:J.filePath,line:A,column:1,ruleId:"lockfile/validate-package-names",message:`Package name mismatch: "${H}" resolves to "${K}"`,severity:"error",help:`This could indicate a package substitution attack. The lockfile entry is for "${H}" but the resolved URL points to "${K}".`})}}return Z}};function XG($,J){for(let Z=0;Z<$.length;Z++)if($[Z].includes(J)||$[Z].includes(`"${J}"`))return Z+1;return 1}var lZ={meta:{docs:"Ensure all packages use allowed URL schemes",recommended:!0},check($,J){let Z=[];if(!x0($,J.filePath))return Z;let X=h0($,J.filePath);if(!X)return Z;let Q=((J.options||{}).allowedSchemes||["https:","git+https:","git+ssh:"]).map((q)=>q.endsWith(":")?q:`${q}:`),G=$.split(`
82
+ `);for(let[q,U]of X.packages){if(!U.resolved)continue;let W=L8(U.resolved);if(!W)continue;if(!Q.includes(W)){let K=YG(G,q);Z.push({filePath:J.filePath,line:K,column:1,ruleId:"lockfile/validate-scheme",message:`Package "${U.name}" uses disallowed URL scheme: "${W}"`,severity:"error",help:`Only the following URL schemes are allowed: ${Q.join(", ")}. Using "${W}" could be a security risk.`})}}return Z}};function YG($,J){for(let Z=0;Z<$.length;Z++)if($[Z].includes(J)||$[Z].includes(`"${J}"`))return Z+1;return 1}var aZ={name:"lockfile",rules:{"validate-host":dZ,"validate-https":oZ,"validate-integrity":cZ,"validate-package-names":rZ,"validate-scheme":lZ}};var sZ={meta:{docs:"Fenced code blocks should be surrounded by blank lines"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1;for(let z=0;z<X.length;z++){let Q=X[z];if(/^(?:`{3,}|~{3,})/.test(Q.trim()))if(!Y){let q=z>0?X[z-1]:"";if(z>0&&q.trim().length>0){if(!/^:::/.test(q.trim()))Z.push({filePath:J.filePath,line:z+1,column:1,ruleId:"markdown/blanks-around-fences",message:"Fenced code blocks should be surrounded by blank lines",severity:"error"})}Y=!0}else{let q=z+1<X.length?X[z+1]:"";if(z+1<X.length&&q.trim().length>0){if(!/^:::/.test(q.trim()))Z.push({filePath:J.filePath,line:z+1,column:1,ruleId:"markdown/blanks-around-fences",message:"Fenced code blocks should be surrounded by blank lines",severity:"error"})}Y=!1}}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=[],X=!1;for(let Y=0;Y<J.length;Y++){let z=J[Y],Q=Y>0?J[Y-1]:"",G=/^(?:`{3,}|~{3,})/.test(z.trim());if(G)if(!X){if(Y>0&&Q.trim().length>0&&!/^:::/.test(Q.trim())&&Z.length>0)Z.push("");X=!0}else X=!1;if(Z.push(z),G&&!X&&Y+1<J.length){let q=J[Y+1];if(q.trim().length>0&&!/^:::/.test(q.trim()))Z.push("")}}return Z.join(`
83
+ `)}};var nZ={meta:{docs:"Headings should be surrounded by blank lines"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1;for(let z=0;z<X.length;z++){let Q=X[z],G=z>0?X[z-1]:"",q=z+1<X.length?X[z+1]:"";if(/^(?:`{3,}|~{3,})/.test(Q.trim())){Y=!Y;continue}if(Y)continue;let U=/^#{1,6}\s/.test(Q),W=z+1<X.length&&/^(?:=+|-+)\s*$/.test(q)&&Q.trim().length>0;if(U){if(z>0&&G.trim().length>0)Z.push({filePath:J.filePath,line:z+1,column:1,ruleId:"markdown/blanks-around-headings",message:"Headings should be surrounded by blank lines",severity:"error"});if(z+1<X.length&&q.trim().length>0&&!/^#{1,6}\s/.test(q))Z.push({filePath:J.filePath,line:z+1,column:1,ruleId:"markdown/blanks-around-headings",message:"Headings should be surrounded by blank lines",severity:"error"})}if(W){if(z>0&&G.trim().length>0)Z.push({filePath:J.filePath,line:z+1,column:1,ruleId:"markdown/blanks-around-headings",message:"Headings should be surrounded by blank lines",severity:"error"});let K=z+2<X.length?X[z+2]:"";if(z+2<X.length&&K.trim().length>0)Z.push({filePath:J.filePath,line:z+1,column:1,ruleId:"markdown/blanks-around-headings",message:"Headings should be surrounded by blank lines",severity:"error"})}}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=[],X=!1;for(let Y=0;Y<J.length;Y++){let z=J[Y],Q=Y>0?J[Y-1]:"",G=Y+1<J.length?J[Y+1]:"";if(/^(?:`{3,}|~{3,})/.test(z.trim())){X=!X,Z.push(z);continue}if(X){Z.push(z);continue}let q=/^#{1,6}\s/.test(z),U=Y+1<J.length&&/^(?:=+|-+)\s*$/.test(G)&&z.trim().length>0;if(q||U){if(Y>0&&Q.trim().length>0&&Z.length>0)Z.push("")}if(Z.push(z),q){if(Y+1<J.length&&G.trim().length>0&&!/^#{1,6}\s/.test(G))Z.push("")}if(Y>0&&/^(?:=+|-+)\s*$/.test(z)&&J[Y-1].trim().length>0){if((Y+1<J.length?J[Y+1]:"").trim().length>0)Z.push("")}}return Z.join(`
84
+ `)}};var iZ={meta:{docs:"Lists should be surrounded by blank lines"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1,z=!1;for(let Q=0;Q<X.length;Q++){let G=X[Q],q=Q>0?X[Q-1]:"";if(/^(?:`{3,}|~{3,})/.test(G.trim())){if(z=!z,Y)Y=!1;continue}if(z)continue;let U=/^(?:\s*)(?:[*\-+]|\d+\.)\s+/.test(G),W=Y&&!U&&G.trim().length>0&&/^\s+/.test(G);if(U&&!Y){if(Y=!0,Q>0&&q.trim().length>0)Z.push({filePath:J.filePath,line:Q+1,column:1,ruleId:"markdown/blanks-around-lists",message:"Lists should be surrounded by blank lines",severity:"error"})}else if(!U&&!W&&Y&&G.trim().length>0){if(Y=!1,/^(?:\s*)(?:[*\-+]|\d+\.)\s+/.test(q))Z.push({filePath:J.filePath,line:Q,column:1,ruleId:"markdown/blanks-around-lists",message:"Lists should be surrounded by blank lines",severity:"error"})}}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=[],X=!1,Y=!1,z=(Q)=>/^(?:\s*)(?:[*\-+]|\d+\.)\s+/.test(Q);for(let Q=0;Q<J.length;Q++){let G=J[Q],q=Q>0?J[Q-1]:"";if(/^(?:`{3,}|~{3,})/.test(G.trim())){Y=!Y,X=!1,Z.push(G);continue}if(Y){Z.push(G);continue}let U=z(G),W=G.trim().length===0,K=X&&!U&&!W&&/^\s/.test(G);if(U&&!X){if(Q>0&&q.trim().length>0&&Z.length>0)Z.push("");X=!0}else if(!U&&!K&&!W&&X){if(X=!1,Z.length>0)Z.push("")}else if(W){let H=Q+1<J.length?J[Q+1]:"",V=z(H),A=/^\s+\S/.test(H);if(!V&&!A&&X)X=!1}Z.push(G)}return Z.join(`
85
+ `)}};function o($){let J=new Set,Z=null,X=0,Y=!1,z=!1;for(let Q=0;Q<$.length;Q++){let G=$[Q],q=G.trim();if(Z===null){let H=q.match(/^(`{3,}|~{3,})(.*)$/);if(H){let V=H[1],A=H[2],_=V[0];if(_==="`"&&A.includes("`"));else{Z=_,X=V.length,J.add(Q),Y=!1,z=!1;continue}}}else{J.add(Q);let H=q.match(/^(`{3,}|~{3,})\s*$/);if(H&&H[1][0]===Z&&H[1].length>=X)Z=null,X=0;continue}let U=G.length-G.trimStart().length,W=/^\t/.test(G);if((U>=4||W)&&q.length>0){if(z||Y||Q===0)J.add(Q),z=!0;Y=z;continue}if(q.length===0){if(z)J.add(Q),Y=!0;else Y=!0;continue}z=!1,Y=!1}return J}function tZ($,J,Z){let X=0,Y=0;while(X<$.length){if($[X]!=="`"){X++;continue}let z=0;while($[X+z]==="`")z++;let Q=X+z,G=-1;while(Q<$.length)if($[Q]==="`"){let q=0;while($[Q+q]==="`")q++;if(q===z){G=Q;break}Q+=q}else Q++;if(G===-1){X+=z;continue}if(Y<X)J($.slice(Y,X));Z($.slice(X,G+z)),X=G+z,Y=X}if(Y<$.length)J($.slice(Y))}function P8($,J){let Z="";return tZ($,(X)=>{Z+=J(X)},(X)=>{Z+=X}),Z}function O7($){let J="";return tZ($,(Z)=>{J+=Z},(Z)=>{J+=" ".repeat(Z.length)}),J}function X1($){let J=new Set,Z=o($);for(let X=0;X<$.length;X++){if(Z.has(X))continue;let Y=$[X];if(!zG(Y))continue;if(X>0&&!Z.has(X-1)&&/\|/.test($[X-1])&&$[X-1].trim().length>0)J.add(X-1);J.add(X);for(let z=X+1;z<$.length;z++){if(Z.has(z))break;let Q=$[z];if(Q.trim().length===0||!/\|/.test(Q))break;J.add(z)}}return J}function zG($){let J=$.trim();if(!J.includes("|"))return!1;if(!/^[|\s:-]+$/.test(J))return!1;if(!/-{3,}/.test(J))return!1;return!0}var eZ={meta:{docs:"Tables should be surrounded by blank lines"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1,z=!1,Q=X1(X);for(let G=0;G<X.length;G++){let q=X[G],U=G>0?X[G-1]:"";if(/^(?:`{3,}|~{3,})/.test(q.trim())){if(z=!z,Y)Y=!1;continue}if(z)continue;let W=Q.has(G)&&/\|/.test(q)&&q.trim().length>0;if(W&&!Y){if(Y=!0,G>0&&U.trim().length>0)Z.push({filePath:J.filePath,line:G+1,column:1,ruleId:"markdown/blanks-around-tables",message:"Tables should be surrounded by blank lines",severity:"error"})}else if(!W&&Y){if(Y=!1,q.trim().length>0)Z.push({filePath:J.filePath,line:G+1,column:1,ruleId:"markdown/blanks-around-tables",message:"Tables should be surrounded by blank lines",severity:"error"})}}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=o(J),X=X1(J),Y=[],z=!1;for(let G=0;G<J.length;G++){let q=J[G];if(Z.has(G)){Y.push(q);continue}let U=X.has(G)&&/\|/.test(q)&&q.trim().length>0;if(U&&!z){let W=Y.length-1;if(W>=0&&Y[W].trim().length>0)Y.push("");z=!0,Y.push(q);continue}if(!U&&z){if(z=!1,q.trim().length>0)Y.push("")}Y.push(q)}let Q=Y.join(`
86
+ `);return Q!==$?Q:$}};var $J={meta:{docs:"Code block style should be consistent"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),z=(J.options||{}).style||"consistent",Q=null,G=!1;for(let q=0;q<X.length;q++){let U=X[q];if(/^(?:`{3,}|~{3,})/.test(U)){if(G=!G,z==="indented")Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"markdown/code-block-style",message:"Expected indented code block style",severity:"error"});else if(z==="consistent"){if(Q===null)Q="fenced";else if(Q==="indented")Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"markdown/code-block-style",message:"Code block style should be consistent throughout document",severity:"error"})}continue}if(G)continue;if(/^(?: {4}|\t)/.test(U)&&U.trim().length>0){let V=(q>0?X[q-1]:"").trim().length===0||q===0;if(V&&z==="fenced")Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"markdown/code-block-style",message:"Expected fenced code block style",severity:"error"});else if(V&&z==="consistent"){if(Q===null)Q="indented";else if(Q==="fenced")Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"markdown/code-block-style",message:"Code block style should be consistent throughout document",severity:"error"})}}}return Z}};function ZJ($){let J=new Set,Z=null,X=0;for(let Y=0;Y<$.length;Y++){let z=$[Y].trim();if(Z===null){let Q=z.match(/^(`{3,}|~{3,})(.*)$/);if(Q){let G=Q[1][0];if(G==="`"&&Q[2].includes("`"))continue;Z=G,X=Q[1].length,J.add(Y)}}else{let Q=z.match(/^(`{3,}|~{3,})\s*$/);if(Q&&Q[1][0]===Z&&Q[1].length>=X)J.add(Y),Z=null,X=0}}return J}var JJ={meta:{docs:"Code fence style should be consistent (backtick or tilde)"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=ZJ(X),Q=(J.options||{}).style||"consistent",G=null;for(let q of Y){let U=X[q],K=/^`{3,}/.test(U.trim())?"backtick":"tilde";if(Q==="backtick"||Q==="tilde"){if(K!==Q)Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"markdown/code-fence-style",message:Q==="tilde"?"Expected tilde (~~~) code fence":"Expected backtick (```) code fence",severity:"error"})}else if(Q==="consistent"){if(G===null)G=K;else if(G!==K)Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"markdown/code-fence-style",message:"Code fence style should be consistent throughout document",severity:"error"})}}return Z},fix:($,J)=>{let X=(J.options||{}).style||"consistent",Y=$.split(/\r?\n/),z=ZJ(Y),Q="backtick";if(X==="backtick"||X==="tilde")Q=X;else for(let W of z){Q=/^`{3,}/.test(Y[W].trim())?"backtick":"tilde";break}let G=Q==="backtick"?"`":"~",q=Q==="backtick"?/^(\s*)(~{3,})(.*)$/:/^(\s*)(`{3,})(.*)$/;return Y.map((W,K)=>{if(!z.has(K))return W;return W.replace(q,(H,V,A,_)=>`${V}${G.repeat(A.length)}${_}`)}).join(`
87
+ `)}};var XJ={meta:{docs:"Commands in code blocks should not be prefixed with $ unless showing output"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1,z=-1;for(let Q=0;Q<X.length;Q++){let G=X[Q];if(/^(?:`{3,}|~{3,})/.test(G)){if(!Y)Y=!0,z=Q;else Y=!1;continue}if(Y&&/^\$\s+/.test(G.trim())){let q=!0,U=!1;for(let W=z+1;W<Q;W++){let K=X[W].trim();if(K.length>0){if(U=!0,!K.startsWith("$")){q=!1;break}}}if(q&&U)Z.push({filePath:J.filePath,line:Q+1,column:G.indexOf("$")+1,ruleId:"markdown/commands-show-output",message:"Dollar signs used before commands without showing output",severity:"warning"})}}return Z}};var YJ={meta:{docs:"Link text should be meaningful and descriptive"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=["click here","here","link","read more","more","this"],z=!1;for(let Q=0;Q<X.length;Q++){let G=X[Q];if(/^(?:`{3,}|~{3,})/.test(G.trim())){z=!z;continue}if(z)continue;let U=G.replace(/``[^`]+``/g,(W)=>" ".repeat(W.length)).replace(/`[^`]+`/g,(W)=>" ".repeat(W.length)).matchAll(/\[([^\]]+)\]\([^)]+\)/g);for(let W of U){let K=W[1].toLowerCase().trim();if(Y.includes(K)){let H=W.index+1;Z.push({filePath:J.filePath,line:Q+1,column:H,ruleId:"markdown/descriptive-link-text",message:`Link text '${W[1]}' is not descriptive`,severity:"warning"})}}}return Z}};var QG=/(?<!\*)\*(?!\*)([^*]+)\*(?!\*)/,GG=/(?<!_)_(?!_)([^_]+)_(?!_)/,zJ={meta:{docs:"Emphasis style should be consistent (asterisk or underscore)"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),z=(J.options||{}).style||"consistent",Q=null,G=o(X);for(let q=0;q<X.length;q++){let U=X[q];if(G.has(q))continue;let W=O7(U),K=W.matchAll(/(?<!\*)\*(?!\*)([^*]+)\*(?!\*)/g);for(let V of K)if(z==="underscore")Z.push({filePath:J.filePath,line:q+1,column:V.index+1,ruleId:"markdown/emphasis-style",message:"Expected underscore (_) for emphasis",severity:"error"});else if(z==="consistent"){if(Q===null)Q="asterisk";else if(Q==="underscore")Z.push({filePath:J.filePath,line:q+1,column:V.index+1,ruleId:"markdown/emphasis-style",message:"Emphasis style should be consistent throughout document",severity:"error"})}let H=W.matchAll(/(?<!_)_(?!_)([^_]+)_(?!_)/g);for(let V of H)if(z==="asterisk")Z.push({filePath:J.filePath,line:q+1,column:V.index+1,ruleId:"markdown/emphasis-style",message:"Expected asterisk (*) for emphasis",severity:"error"});else if(z==="consistent"){if(Q===null)Q="underscore";else if(Q==="asterisk")Z.push({filePath:J.filePath,line:q+1,column:V.index+1,ruleId:"markdown/emphasis-style",message:"Emphasis style should be consistent throughout document",severity:"error"})}}return Z},fix:($,J)=>{let X=(J.options||{}).style||"consistent",Y=$.split(/\r?\n/),z=o(Y),Q="asterisk";if(X==="asterisk")Q="asterisk";else if(X==="underscore")Q="underscore";else if(X==="consistent"){let q=null,U=null;for(let K=0;K<Y.length;K++){if(z.has(K))continue;let H=O7(Y[K]);if(q===null){let V=H.match(QG);if(V)q={line:K,col:V.index}}if(U===null){let V=H.match(GG);if(V)U={line:K,col:V.index}}if(q&&U)break}if(q&&(!U||((K,H)=>K.line!==H.line?K.line-H.line:K.col-H.col)(q,U)<0))Q="asterisk";else if(U)Q="underscore"}let G=!1;for(let q=0;q<Y.length;q++){if(z.has(q))continue;let U=P8(Y[q],(W)=>Q==="asterisk"?W.replace(/(?<!_)_(?!_)([^_]+)_(?!_)/g,"*$1*"):W.replace(/(?<!\*)\*(?!\*)([^*]+)\*(?!\*)/g,"_$1_"));if(U!==Y[q])Y[q]=U,G=!0}return G?Y.join(`
88
+ `):$}};var QJ={meta:{docs:"Fenced code blocks should have a language specified"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++)if(X[Y].match(/^(?:`{3,}|~{3,})\s*$/)){let G=!0;for(let q=Y-1;q>=0;q--)if(/^(?:`{3,}|~{3,})/.test(X[q])){G=!1;break}if(G)Z.push({filePath:J.filePath,line:Y+1,column:1,ruleId:"markdown/fenced-code-language",message:"Fenced code blocks should have a language specified",severity:"error"})}return Z}};var GJ={meta:{docs:"First line in a file should be a top-level heading"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=-1;for(let q=0;q<X.length;q++)if(X[q].trim().length>0){Y=q;break}if(Y===-1)return Z;let z=X[Y],Q=/^#\s/.test(z),G=Y+1<X.length&&/^=+\s*$/.test(X[Y+1]);if(!Q&&!G)Z.push({filePath:J.filePath,line:Y+1,column:1,ruleId:"markdown/first-line-heading",message:"First line in a file should be a top-level heading",severity:"warning"});return Z}};var qJ={meta:{docs:"Heading levels should only increment by one level at a time"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=o(X),z=0;for(let Q=0;Q<X.length;Q++){if(Y.has(Q))continue;let q=X[Q].match(/^(#{1,6})\s/);if(q){let U=q[1].length;if(z>0&&U>z+1)Z.push({filePath:J.filePath,line:Q+1,column:1,ruleId:"markdown/heading-increment",message:`Heading level should not skip from h${z} to h${U}`,severity:"error"});z=U}}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=o(J),X=0,Y=!1;for(let z=0;z<J.length;z++){if(Z.has(z))continue;let G=J[z].match(/^(#{1,6})(\s.*)$/);if(!G)continue;let q=G[1].length,U=X===0?q:Math.min(q,X+1);if(U!==q)J[z]="#".repeat(U)+G[2],Y=!0;X=U}return Y?J.join(`
89
+ `):$}};var UJ={meta:{docs:"Headings must start at the beginning of the line"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1;for(let z=0;z<X.length;z++){let Q=X[z];if(/^(?:`{3,}|~{3,})/.test(Q.trim())){Y=!Y;continue}if(Y)continue;if(Q.match(/^(\s+)(#{1,6}\s)/))Z.push({filePath:J.filePath,line:z+1,column:1,ruleId:"markdown/heading-start-left",message:"Headings must start at the beginning of the line",severity:"error"})}return Z},fix:($)=>{return $.split(/\r?\n/).map((X)=>{return X.replace(/^(\s+)(#{1,6}\s)/,"$2")}).join(`
90
+ `)}};var WJ={meta:{docs:"Heading style should be consistent (atx, setext, or consistent)"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),z=(J.options||{}).style||"consistent",Q=null,G=o(X);for(let q=0;q<X.length;q++){if(G.has(q))continue;let U=X[q],W=q+1<X.length?X[q+1]:"",K=U.match(/^#{1,6}\s/),H=W.match(/^(?:=+|-+)\s*$/)&&U.trim().length>0&&!G.has(q+1);if(K){if(z==="setext")Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"markdown/heading-style",message:"Expected setext style heading",severity:"error"});else if(z==="consistent"){if(Q===null)Q="atx";else if(Q==="setext")Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"markdown/heading-style",message:"Heading style should be consistent throughout document",severity:"error"})}}else if(H){if(z==="atx")Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"markdown/heading-style",message:"Expected atx style heading",severity:"error"});else if(z==="consistent"){if(Q===null)Q="setext";else if(Q==="atx")Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"markdown/heading-style",message:"Heading style should be consistent throughout document",severity:"error"})}}}return Z},fix:($,J)=>{let X=(J.options||{}).style||"consistent",Y=$.split(/\r?\n/),z=o(Y),Q=X==="consistent"?null:X;if(Q===null)for(let U=0;U<Y.length;U++){if(z.has(U))continue;let W=Y[U],K=U+1<Y.length?Y[U+1]:"";if(/^#{1,6}\s/.test(W)){Q="atx";break}if(/^(?:=+|-+)\s*$/.test(K)&&W.trim().length>0&&!z.has(U+1)){Q="setext";break}}if(Q===null)return $;let G=[],q=!1;for(let U=0;U<Y.length;U++){let W=Y[U];if(z.has(U)){G.push(W);continue}let K=U+1<Y.length?Y[U+1]:"";if(Q==="atx"){let H=/^=+\s*$/.test(K),V=/^-+\s*$/.test(K),A=z.has(U+1);if((H||V)&&!A&&W.trim().length>0&&!/^#{1,6}\s/.test(W)){let _=H?"#":"##";G.push(`${_} ${W.trim()}`),U++,q=!0;continue}}if(Q==="setext"){let H=W.match(/^(#{1,2})\s+(.+?)\s*#*\s*$/);if(H){let V=H[1].length,A=H[2],_=(V===1?"=":"-").repeat(Math.max(3,A.length));G.push(A),G.push(_),q=!0;continue}}G.push(W)}return q?G.join(`
91
+ `):$}};var KJ={meta:{docs:"Horizontal rule style should be consistent"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),z=(J.options||{}).style||"consistent",Q=null;for(let G=0;G<X.length;G++){let q=X[G].trim();if(q.match(/^([-*_])\1{2,}$/)){let W=q;if(z!=="consistent"&&q!==z)Z.push({filePath:J.filePath,line:G+1,column:1,ruleId:"markdown/hr-style",message:`Expected horizontal rule style '${z}'`,severity:"error"});else if(z==="consistent"){if(Q===null)Q=W;else if(Q!==W)Z.push({filePath:J.filePath,line:G+1,column:1,ruleId:"markdown/hr-style",message:"Horizontal rule style should be consistent throughout document",severity:"error"})}}}return Z}};var HJ={meta:{docs:"Lines should not exceed a specified length"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=J.options||{},z=Y.line_length||80,Q=Y.code_blocks!==!1,G=Y.tables!==!1,q=Y.headings!==!1,U=!1;for(let W=0;W<X.length;W++){let K=X[W];if(/^(?:`{3,}|~{3,})/.test(K)){U=!U;continue}if(U&&!Q)continue;if(!G&&/\|/.test(K))continue;if(!q&&/^#{1,6}\s/.test(K))continue;if(K.length>z)Z.push({filePath:J.filePath,line:W+1,column:z+1,ruleId:"markdown/line-length",message:`Line length exceeds ${z} characters (${K.length} characters)`,severity:"warning"})}return Z}};var VJ={meta:{docs:"Link fragments should reference valid headings"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=o(X),z=new Set;for(let Q=0;Q<X.length;Q++){if(Y.has(Q))continue;let q=X[Q].match(/^#{1,6}\s+(.+?)(?:\s*#+\s*)?$/);if(q){let W=q[1].trim().toLowerCase().replace(/[^\w\s-]/g,"").replace(/\s+/g,"-");z.add(W)}}for(let Q=0;Q<X.length;Q++){if(Y.has(Q))continue;let q=X[Q].matchAll(/\[[^\]]+\]\(#([^)]+)\)/g);for(let U of q){let W=U[1];if(!z.has(W)){let K=U.index+1;Z.push({filePath:J.filePath,line:Q+1,column:K,ruleId:"markdown/link-fragments",message:`Link fragment '#${W}' does not match any heading`,severity:"error"})}}}return Z}};var AJ={meta:{docs:"Link and image reference definitions should be used"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=o(X),z=new Map;for(let G=0;G<X.length;G++){if(Y.has(G))continue;let U=X[G].match(/^\[([^\]]+)\]:\s*\S+/);if(U)z.set(U[1].toLowerCase(),G+1)}let Q=new Set;for(let G=0;G<X.length;G++){if(Y.has(G))continue;let q=X[G];if(q.match(/^\[(?:[^\]]+)\]:\s*\S+/))continue;let U=q.matchAll(/\[([^\]]+)\](?:\[([^\]]+)\])?(?!\()/g);for(let W of U){let K=(W[2]||W[1]).toLowerCase();Q.add(K)}}for(let[G,q]of z)if(!Q.has(G))Z.push({filePath:J.filePath,line:q,column:1,ruleId:"markdown/link-image-reference-definitions",message:`Unused reference definition '[${G}]'`,severity:"warning"});return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=o(J),X=new Map;for(let Q=0;Q<J.length;Q++){if(Z.has(Q))continue;let G=J[Q].match(/^\s*\[([^\]]+)\]:\s*\S+/);if(G)X.set(Q,G[1].toLowerCase())}if(X.size===0)return $;let Y=new Set;for(let Q=0;Q<J.length;Q++){if(Z.has(Q))continue;if(X.has(Q))continue;let q=J[Q].matchAll(/\[([^\]]+)\](?:\[([^\]]*)\])?(?!\()/g);for(let U of q){let W=(U[2]&&U[2].length>0?U[2]:U[1]).toLowerCase();Y.add(W)}}let z=new Set;for(let[Q,G]of X)if(!Y.has(G))z.add(Q);if(z.size===0)return $;return J.filter((Q,G)=>!z.has(G)).join(`
92
+ `)}};var _J={meta:{docs:"Link and image style should be consistent"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=o(X),Q=(J.options||{}).style||"consistent",G=Q==="consistent"?null:Q;if(G===null){let U=0,W=0,K=!1;for(let H=0;H<X.length;H++){if(Y.has(H))continue;let V=X[H];if(V.includes("<!--"))K=!0;if(V.includes("-->")){K=!1;continue}if(K)continue;if(/^\s*\[(?:[^\]]+)\]:\s*\S+/.test(V))continue;let A=L7(V);U+=(A.match(/\[[^\]]+\]\([^)]+\)/g)||[]).length,W+=(A.match(/\[[^\]]+\]\[(?:[^\]]*)\]/g)||[]).length}G=W>U?"reference":"inline"}let q=!1;for(let U=0;U<X.length;U++){if(Y.has(U))continue;let W=X[U];if(W.includes("<!--"))q=!0;if(W.includes("-->")){q=!1;continue}if(q)continue;if(W.match(/^\[(?:[^\]]+)\]:\s*\S+/))continue;let K=L7(W),H=K.matchAll(/\[[^\]]+\]\([^)]+\)/g);for(let A of H)if(G==="reference")Z.push({filePath:J.filePath,line:U+1,column:A.index+1,ruleId:"markdown/link-image-style",message:Q==="consistent"?"Link style should be consistent throughout document":"Expected reference style link",severity:Q==="consistent"?"warning":"error"});let V=K.matchAll(/\[[^\]]+\]\[(?:[^\]]+)\]/g);for(let A of V)if(G==="inline")Z.push({filePath:J.filePath,line:U+1,column:A.index+1,ruleId:"markdown/link-image-style",message:Q==="consistent"?"Link style should be consistent throughout document":"Expected inline style link",severity:Q==="consistent"?"warning":"error"})}return Z},fix:($,J)=>{let X=(J.options||{}).style||"consistent",Y=$.split(/\r?\n/),z=o(Y),Q=new Map;for(let U=0;U<Y.length;U++){if(z.has(U))continue;let W=Y[U].match(/^\s*\[([^\]]+)\]:\s*(\S+)(?:\s+(?:"([^"]*)"|'([^']*)'|\(([^)]*)\)))?\s*$/);if(W){let K=W[1].toLowerCase(),H=W[2],V=W[3]??W[4]??W[5];if(!Q.has(K))Q.set(K,{url:H,title:V})}}if(Q.size===0)return $;let G=X==="reference"?"reference":"inline";if(X==="consistent"){let U=0,W=0;for(let K=0;K<Y.length;K++){if(z.has(K))continue;let H=Y[K];if(/^\s*\[(?:[^\]]+)\]:\s*\S+/.test(H))continue;let V=L7(H);U+=(V.match(/\[[^\]]+\]\([^)]+\)/g)||[]).length,W+=(V.match(/\[[^\]]+\]\[(?:[^\]]*)\]/g)||[]).length}G=W>U?"reference":"inline"}if(G!=="inline")return $;let q=!1;for(let U=0;U<Y.length;U++){if(z.has(U))continue;let W=Y[U];if(/^\s*\[(?:[^\]]+)\]:\s*\S+/.test(W))continue;let K=W;for(let H=0;H<8;H++){let V=K.replace(/(!?)\[((?:[^[\]]|\[[^\]]*\]\([^)]*\))+)\]\[([^\]]*)\]/g,(A,_,w,F)=>{let M=(F.trim()===""?w:F).toLowerCase(),T=Q.get(M);if(!T)return A;let E=T.title?` "${T.title}"`:"";return`${_}[${w}](${T.url}${E})`});if(V===K)break;K=V}if(K!==W)Y[U]=K,q=!0}return q?Y.join(`
93
+ `):$}};function L7($){return $.replace(/(`+)([^`]+?)\1/g,(J)=>" ".repeat(J.length))}var FJ={meta:{docs:"List items at the same level should have consistent indentation"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=new Map,z=!1;for(let Q=0;Q<X.length;Q++){let G=X[Q],q=G.match(/^(\s*)(?:[*\-+]|\d+\.)\s+/);if(q){z=!0;let U=q[1].length,W=Math.floor(U/2);if(Y.has(W)){let K=Y.get(W);if(U!==K)Z.push({filePath:J.filePath,line:Q+1,column:1,ruleId:"markdown/list-indent",message:`Inconsistent indentation for list items at the same level. Expected ${K} spaces, found ${U}`,severity:"error"})}else Y.set(W,U)}else if(G.trim().length===0){if(z){let U=X.slice(Q+1).find((W)=>W.trim().length>0);if(U&&!/^(?:\s*)(?:[*\-+]|\d+\.)\s+/.test(U))z=!1,Y.clear()}}}return Z}};var wJ={meta:{docs:"Spaces after list markers should be consistent"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=J.options||{},z=Y.ul_single||1,Q=Y.ol_single||1;for(let G=0;G<X.length;G++){let q=X[G],U=q.match(/^(\s*)([*\-+])(\s+)/);if(U){let K=U[3].length;if(K!==z)Z.push({filePath:J.filePath,line:G+1,column:U[1].length+2,ruleId:"markdown/list-marker-space",message:`Expected ${z} space${z!==1?"s":""} after list marker, found ${K}`,severity:"error"})}let W=q.match(/^(\s*)(\d+\.)(\s+)/);if(W){let K=W[3].length;if(K!==Q)Z.push({filePath:J.filePath,line:G+1,column:W[1].length+W[2].length+1,ruleId:"markdown/list-marker-space",message:`Expected ${Q} space${Q!==1?"s":""} after list marker, found ${K}`,severity:"error"})}}return Z},fix:($,J)=>{let Z=J.options||{},X=Z.ul_single||1,Y=Z.ol_single||1;return $.split(/\r?\n/).map((G)=>{return G=G.replace(/^(\s*)([*\-+])\s+/,(q,U,W)=>{return`${U}${W}${" ".repeat(X)}`}),G=G.replace(/^(\s*)(\d+\.)\s+/,(q,U,W)=>{return`${U}${W}${" ".repeat(Y)}`}),G}).join(`
94
+ `)}};var BJ={meta:{docs:"Images should have alternate text"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1;for(let z=0;z<X.length;z++){let Q=X[z];if(/^(?:`{3,}|~{3,})/.test(Q.trim())){Y=!Y;continue}if(Y)continue;let q=Q.replace(/``[^`]+``/g,(U)=>" ".repeat(U.length)).replace(/`[^`]+`/g,(U)=>" ".repeat(U.length)).matchAll(/!\[\s*\]\([^)]+\)/g);for(let U of q){let W=U.index+1;Z.push({filePath:J.filePath,line:z+1,column:W,ruleId:"markdown/no-alt-text",message:"Images should have alternate text (alt text)",severity:"error"})}}return Z}};var MJ={meta:{docs:"Bare URLs should be wrapped in angle brackets"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=o(X),z=!1;for(let Q=0;Q<X.length;Q++){let G=X[Q];if(Y.has(Q))continue;if(G.includes("<!--"))z=!0;if(G.includes("-->")){z=!1;continue}if(z)continue;if(/^\[(?:[^\]]+)\]:\s*\S+/.test(G))continue;let q=G.replace(/`[^`]+`/g,(K)=>" ".repeat(K.length)),U=/(?<![<(="'])https?:\/\/[^\s<>`)\]"']+(?![>\])"'])/g,W=q.matchAll(U);for(let K of W)Z.push({filePath:J.filePath,line:Q+1,column:K.index+1,ruleId:"markdown/no-bare-urls",message:"Bare URL used. Wrap in angle brackets: <url>",severity:"error"})}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=o(J),X=!1;return J.map((z,Q)=>{if(Z.has(Q))return z;if(z.includes("<!--"))X=!0;if(z.includes("-->"))return X=!1,z;if(X)return z;if(/^\[(?:[^\]]+)\]:\s*\S+/.test(z))return z;return z.replace(/(?<![<(="'])https?:\/\/[^\s<>`)\]"']+(?![>\])"'])/g,"<$&>")}).join(`
95
+ `)}};var jJ={meta:{docs:"Blank lines inside blockquotes should use the blockquote symbol"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1,z=!1;for(let Q=0;Q<X.length;Q++){let G=X[Q],q=Q+1<X.length?X[Q+1]:"";if(/^(?:`{3,}|~{3,})/.test(G.trim())){z=!z,Y=!1;continue}if(z)continue;let U=/^\s*>/.test(G),W=G.trim().length===0,K=/^\s*>/.test(q);if(U)Y=!0;else if(W&&Y&&K)Z.push({filePath:J.filePath,line:Q+1,column:1,ruleId:"markdown/no-blanks-blockquote",message:"Blank line inside blockquote should use blockquote symbol (>)",severity:"error"});else if(!U&&!W)Y=!1}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=!1,X=!1,Y=!1;for(let z=0;z<J.length;z++){let Q=J[z],G=z+1<J.length?J[z+1]:"";if(/^(?:`{3,}|~{3,})/.test(Q.trim())){X=!X,Z=!1;continue}if(X)continue;let q=/^\s*>/.test(Q),U=Q.trim().length===0,W=/^\s*>/.test(G);if(q)Z=!0;else if(U&&Z&&W){let K=G.match(/^(\s*)>/),H=K?`${K[1]}>`:">";J[z]=H,Y=!0}else if(!q&&!U)Z=!1}return Y?J.join(`
96
+ `):$}};var NJ={meta:{docs:"Multiple headings should not have the same content"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1,z=Array.from({length:7},()=>new Map);for(let Q=0;Q<X.length;Q++){let G=X[Q];if(/^(?:`{3,}|~{3,})/.test(G.trim())){Y=!Y;continue}if(Y)continue;if(/^\s*\[Compare changes\]\(/.test(G)){for(let H=3;H<=6;H++)z[H].clear();continue}let q=null,U=0,W=G.match(/^(#{1,6})\s+(.+?)(?:\s*#+\s*)?$/);if(W)U=W[1].length,q=W[2].trim();if(!q){let H=Q+1<X.length?X[Q+1]:"";if(/^(?:=+)\s*$/.test(H)&&G.trim().length>0)U=1,q=G.trim();else if(/^(?:-+)\s*$/.test(H)&&G.trim().length>0)U=2,q=G.trim()}if(!q||U===0)continue;for(let H=U+1;H<=6;H++)z[H].clear();let K=z[U];if(K.has(q))Z.push({filePath:J.filePath,line:Q+1,column:1,ruleId:"markdown/no-duplicate-heading",message:`Duplicate heading "${q}" (first occurrence on line ${K.get(q)})`,severity:"error"});else K.set(q,Q+1)}return Z}};var qG=/[.!?:;,]\s*$/;function TJ($,J,Z){let X=$.match(/^\*\*([^*]+)\*\*\s*$/)||$.match(/^__([^_]+)__\s*$/),Y=$.match(/^\*([^*]+)\*\s*$/)||$.match(/^_([^_]+)_\s*$/),z=X||Y;if(!z)return null;if(J.trim().length!==0||Z.trim().length!==0)return null;let Q=z[1];if(qG.test(Q))return null;if(Q.trim().split(/\s+/).length>=7)return null;return Q}var EJ={meta:{docs:"Emphasis should not be used for headings"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=o(X);for(let z=0;z<X.length;z++){if(Y.has(z))continue;let Q=X[z],G=z>0?X[z-1]:"",q=z+1<X.length?X[z+1]:"";if(TJ(Q,G,q)===null)continue;Z.push({filePath:J.filePath,line:z+1,column:1,ruleId:"markdown/no-emphasis-as-heading",message:"Emphasis used instead of a heading",severity:"warning"})}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=o(J),X=2,Y=!1;for(let z=0;z<J.length;z++){if(Z.has(z))continue;let Q=J[z],G=Q.match(/^(#{1,6})\s/);if(G){X=G[1].length;continue}let q=z>0?J[z-1]:"",U=z+1<J.length?J[z+1]:"",W=TJ(Q,q,U);if(W===null)continue;let K=Math.min(6,Math.max(2,X+1));J[z]=`${"#".repeat(K)} ${W.trim()}`,Y=!0}return Y?J.join(`
97
+ `):$}};var DJ={meta:{docs:"Links should not be empty"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1;for(let z=0;z<X.length;z++){let Q=X[z];if(/^(?:`{3,}|~{3,})/.test(Q.trim())){Y=!Y;continue}if(Y)continue;let G=Q.replace(/`[^`]+`/g,(W)=>"x".repeat(W.length)),q=G.matchAll(/\[[^\]]+\]\(\s*\)/g);for(let W of q){let K=W.index+1;Z.push({filePath:J.filePath,line:z+1,column:K,ruleId:"markdown/no-empty-links",message:"Empty link URL",severity:"error"})}let U=G.matchAll(/\[\s*\]\([^)]+\)/g);for(let W of U){let K=W.index+1;Z.push({filePath:J.filePath,line:z+1,column:K,ruleId:"markdown/no-empty-links",message:"Empty link text",severity:"error"})}}return Z}};var RJ={meta:{docs:"Spaces should be used instead of hard tabs"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1;for(let z=0;z<X.length;z++){let Q=X[z];if(/^(?:`{3,}|~{3,})/.test(Q.trim())){Y=!Y;continue}if(Y)continue;let G=Q.indexOf("\t");if(G!==-1)Z.push({filePath:J.filePath,line:z+1,column:G+1,ruleId:"markdown/no-hard-tabs",message:"Hard tabs should not be used",severity:"error"})}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=!1;return J.map((Y)=>{if(/^(?:`{3,}|~{3,})/.test(Y.trim()))return Z=!Z,Y;if(Z)return Y;return Y.replace(/\t/g," ")}).join(`
98
+ `)}};var OJ={meta:{docs:"Inline HTML should not be used"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),z=(J.options||{}).allowed_elements||[],Q=!1;for(let G=0;G<X.length;G++){let q=X[G];if(/^(?:`{3,}|~{3,})/.test(q.trim())){Q=!Q;continue}if(Q)continue;let U=q;U=U.replace(/``[^`]+``/g,(K)=>" ".repeat(K.length)),U=U.replace(/`[^`]+`/g,(K)=>" ".repeat(K.length));let W=U.matchAll(/<\/?([a-z][a-z0-9]*)\b[^>]*>/gi);for(let K of W){let H=K[1].toLowerCase(),V=U.slice(K.index+1+H.length);if(V.startsWith("://")||H==="mailto"&&V.startsWith(":"))continue;if(!z.includes(H)){let A=K.index+1;Z.push({filePath:J.filePath,line:G+1,column:A,ruleId:"markdown/no-inline-html",message:`Inline HTML element '<${H}>' should not be used`,severity:"warning"})}}}return Z}};var LJ={meta:{docs:"ATX style headings must have a space after the hash"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=o(X);for(let z=0;z<X.length;z++){if(Y.has(z))continue;let G=X[z].match(/^(#{1,6})([^\s#])/);if(G)Z.push({filePath:J.filePath,line:z+1,column:G[1].length+1,ruleId:"markdown/no-missing-space-atx",message:"No space after hash on atx style heading",severity:"error"})}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=o(J);return J.map((Y,z)=>{if(Z.has(z))return Y;return Y.replace(/^(#{1,6})([^\s#])/,"$1 $2")}).join(`
99
+ `)}};var PJ={meta:{docs:"Closed ATX style headings must have spaces inside the hashes"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=o(X);for(let z=0;z<X.length;z++){if(Y.has(z))continue;let Q=X[z],G=Q.match(/^(#{1,6})\s+(.+?)(#{1,6})\s*$/);if(G){let U=G[1],W=G[2],K=G[3];if(!W.endsWith(" ")){let H=U.length+1+W.length;Z.push({filePath:J.filePath,line:z+1,column:H,ruleId:"markdown/no-missing-space-closed-atx",message:"No space inside hashes on closed atx style heading",severity:"error"})}}let q=Q.match(/^(#{1,6})(\S.+?#{1,6})\s*$/);if(q)Z.push({filePath:J.filePath,line:z+1,column:q[1].length+1,ruleId:"markdown/no-missing-space-closed-atx",message:"No space inside hashes on closed atx style heading",severity:"error"})}return Z}};var CJ={meta:{docs:"Multiple consecutive blank lines should not be used"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=J.options||{},z=Y.maximum!==void 0?Y.maximum:1,Q=0;for(let G=0;G<X.length;G++)if(X[G].trim().length===0){if(Q++,Q>z)Z.push({filePath:J.filePath,line:G+1,column:1,ruleId:"markdown/no-multiple-blanks",message:`Multiple consecutive blank lines (max ${z})`,severity:"error"})}else Q=0;return Z},fix:($,J)=>{let Z=J.options||{},X=Z.maximum!==void 0?Z.maximum:1,Y=$.split(/\r?\n/),z=[],Q=0;for(let G of Y)if(G.trim().length===0){if(Q++,Q<=X)z.push(G)}else Q=0,z.push(G);return z.join(`
100
+ `)}};var IJ={meta:{docs:"ATX style headings should have only one space after the hash"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=o(X);for(let z=0;z<X.length;z++){if(Y.has(z))continue;let G=X[z].match(/^(#{1,6})\s{2,}/);if(G)Z.push({filePath:J.filePath,line:z+1,column:G[1].length+1,ruleId:"markdown/no-multiple-space-atx",message:"Multiple spaces after hash on atx style heading",severity:"error"})}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=o(J);return J.map((Y,z)=>{if(Z.has(z))return Y;return Y.replace(/^(#{1,6})\s{2,}/,"$1 ")}).join(`
101
+ `)}};var SJ={meta:{docs:"Blockquote symbols should be followed by a single space"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=o(X);for(let z=0;z<X.length;z++){if(Y.has(z))continue;let G=X[z].match(/^(\s*)(>+)\s{2,}/);if(G){let q=G[1].length+G[2].length+1;Z.push({filePath:J.filePath,line:z+1,column:q,ruleId:"markdown/no-multiple-space-blockquote",message:"Multiple spaces after blockquote symbol",severity:"error"})}}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=o(J);return J.map((Y,z)=>{if(Z.has(z))return Y;return Y.replace(/^(\s*>+)\s{2,}/,"$1 ")}).join(`
102
+ `)}};var vJ={meta:{docs:"Closed ATX style headings should have only one space inside the hashes"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=o(X);for(let z=0;z<X.length;z++){if(Y.has(z))continue;let Q=X[z],G=Q.match(/^(#{1,6})\s{2,}(?:\S.*?|[\t\v\f \xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF])#{1,6}\s*$/);if(G)Z.push({filePath:J.filePath,line:z+1,column:G[1].length+1,ruleId:"markdown/no-multiple-space-closed-atx",message:"Multiple spaces inside hashes on closed atx style heading",severity:"error"});let q=Q.match(/^#{1,6}\s+(?:\S.*?|[\t\v\f \xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF])\s{2,}(#{1,6})\s*$/);if(q){let U=Q.lastIndexOf(q[1])-1;Z.push({filePath:J.filePath,line:z+1,column:Math.max(1,U),ruleId:"markdown/no-multiple-space-closed-atx",message:"Multiple spaces inside hashes on closed atx style heading",severity:"error"})}}return Z}};var yJ={meta:{docs:"Link syntax should not be reversed"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=o(X);for(let z=0;z<X.length;z++){if(Y.has(z))continue;let G=X[z].matchAll(/\(([^)]+)\)\[(?:[^\]]+)\]/g);for(let q of G){let U=q.index+1;Z.push({filePath:J.filePath,line:z+1,column:U,ruleId:"markdown/no-reversed-links",message:"Reversed link syntax: should be [text](url) not (text)[url]",severity:"error"})}}return Z}};var bJ={meta:{docs:"Code span elements should not have spaces inside the backticks"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=o(X);for(let z=0;z<X.length;z++){let Q=X[z];if(Y.has(z))continue;let G=/(`+)([\s\S]*?)\1/g;for(let q of Q.matchAll(G)){let U=q[2];if(U.startsWith(" ")&&U.endsWith(" ")&&U.trim().length>0)Z.push({filePath:J.filePath,line:z+1,column:q.index+1,ruleId:"markdown/no-space-in-code",message:"Spaces inside code span elements",severity:"error"})}}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=o(J),X=[];for(let Y=0;Y<J.length;Y++){let z=J[Y];if(Z.has(Y)){X.push(z);continue}X.push(z.replace(/(`+)([\s\S]*?)\1/g,(Q,G,q)=>{if(q.startsWith(" ")&&q.endsWith(" ")&&q.trim().length>0)return`${G}${q.trim()}${G}`;return Q}))}return X.join(`
103
+ `)}};var UG=[/(?<![A-Za-z0-9])\*\*\s+[^*]+?\*\*(?![A-Za-z0-9])/g,/(?<![A-Za-z0-9])\*\*[^*]+?\s+\*\*(?![A-Za-z0-9])/g,/(?<![A-Za-z0-9])__\s+[^_]+?__(?![A-Za-z0-9])/g,/(?<![A-Za-z0-9])__[^_]+?\s+__(?![A-Za-z0-9])/g],kJ={meta:{docs:"Emphasis markers should not have spaces inside them"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=o(X);for(let z=0;z<X.length;z++){let Q=X[z];if(Y.has(z))continue;let G=Q.replace(/`[^`]+`/g,(q)=>"\x01".repeat(q.length));for(let q of UG)for(let U of G.matchAll(q))Z.push({filePath:J.filePath,line:z+1,column:U.index+1,ruleId:"markdown/no-space-in-emphasis",message:"Spaces inside emphasis markers",severity:"error"})}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=o(J),X=[];for(let Y=0;Y<J.length;Y++){let z=J[Y];if(Z.has(Y)){X.push(z);continue}let Q=P8(z,(G)=>{let q=G;return q=q.replace(/(?<![A-Za-z0-9])(\*\*)\s+([^*]+?)\*\*(?![A-Za-z0-9])/g,"$1$2**"),q=q.replace(/(?<![A-Za-z0-9])(\*\*)([^*]+?)\s+\*\*(?![A-Za-z0-9])/g,"$1$2**"),q=q.replace(/(?<![A-Za-z0-9])(__)\s+([^_]+?)__(?![A-Za-z0-9])/g,"$1$2__"),q=q.replace(/(?<![A-Za-z0-9])(__)([^_]+?)\s+__(?![A-Za-z0-9])/g,"$1$2__"),q});X.push(Q)}return X.join(`
104
+ `)}};var fJ={meta:{docs:"Link text should not have leading or trailing spaces"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=o(X);for(let z=0;z<X.length;z++){if(Y.has(z))continue;let G=X[z].matchAll(/\[(\s+(?:\S.*?|[\t\v\f \xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF])|\s*(?:\S.*?|[\t\v\f \xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF])\s+)\]\([^)]+\)/g);for(let q of G){let U=q[1];if(U.startsWith(" ")||U.endsWith(" ")){let W=q.index+1;Z.push({filePath:J.filePath,line:z+1,column:W,ruleId:"markdown/no-space-in-links",message:"Spaces inside link text",severity:"error"})}}}return Z}};var gJ={meta:{docs:"Headings should not end with punctuation"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),z=(J.options||{}).punctuation||".,;:!?",Q=!1;for(let G=0;G<X.length;G++){let q=X[G];if(/^(?:`{3,}|~{3,})/.test(q.trim())){Q=!Q;continue}if(Q)continue;let U=q.match(/^#{1,6}\s+(.+?)(?:\s*#+\s*)?$/);if(U){let K=U[1].trim(),H=K[K.length-1];if(H&&z.includes(H))Z.push({filePath:J.filePath,line:G+1,column:q.indexOf(K)+K.length,ruleId:"markdown/no-trailing-punctuation",message:`Trailing punctuation in heading: '${H}'`,severity:"error"})}let W=G+1<X.length?X[G+1]:"";if(/^(?:=+|-+)\s*$/.test(W)&&q.trim().length>0){let K=q.trim(),H=K[K.length-1];if(H&&z.includes(H))Z.push({filePath:J.filePath,line:G+1,column:q.indexOf(K)+K.length,ruleId:"markdown/no-trailing-punctuation",message:`Trailing punctuation in heading: '${H}'`,severity:"error"})}}return Z},fix:($,J)=>{let X=(J.options||{}).punctuation||".,;:!?",Y=new RegExp(`[${X.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}]+$`),z=$.split(/\r?\n/),Q=!1;return z.map((q,U)=>{if(/^(?:`{3,}|~{3,})/.test(q.trim()))return Q=!Q,q;if(Q)return q;let W=q.match(/^(#{1,6}\s+)(.+?)(\s*#+\s*)?$/);if(W){let H=W[1],V=W[2],A=W[3]||"",_=V.replace(Y,"");return`${H}${_}${A}`}let K=U+1<z.length?z[U+1]:"";if(/^(?:=+|-+)\s*$/.test(K)&&q.trim().length>0)return q.replace(Y,"");return q}).join(`
105
+ `)}};var pJ={meta:{docs:"Lines should not end with trailing spaces"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.match(/\s+$/);if(Q){let G=J.options||{},q=G.br_spaces!==void 0?G.br_spaces:2;if(q===0||Q[0].length!==q)Z.push({filePath:J.filePath,line:Y+1,column:z.length-Q[0].length+1,ruleId:"markdown/no-trailing-spaces",message:`Trailing spaces found (${Q[0].length} space${Q[0].length!==1?"s":""})`,severity:"error"})}}return Z},fix:($,J)=>{let Z=$.split(/\r?\n/),X=J.options||{},Y=X.br_spaces!==void 0?X.br_spaces:2;return Z.map((Q)=>{let G=Q.match(/\s+$/);if(G){if(Y>0&&G[0].length===Y)return Q;return Q.replace(/\s+$/,"")}return Q}).join(`
106
+ `)}};var xJ={meta:{docs:"Ordered list item prefix should follow specified style"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),z=(J.options||{}).style||"one_or_ordered",Q=1;for(let G=0;G<X.length;G++){let q=X[G],U=q.match(/^(\s*)(\d+)\.\s+/);if(U){let W=Number.parseInt(U[2],10);if(z==="one"&&W!==1)Z.push({filePath:J.filePath,line:G+1,column:U[1].length+1,ruleId:"markdown/ol-prefix",message:`Ordered list item prefix should be '1.', found '${W}.'`,severity:"error"});else if(z==="ordered"&&W!==Q)Z.push({filePath:J.filePath,line:G+1,column:U[1].length+1,ruleId:"markdown/ol-prefix",message:`Ordered list item prefix should be '${Q}.', found '${W}.'`,severity:"error"});Q++}else if(q.trim().length===0)Q=1}return Z},fix:($,J)=>{let X=(J.options||{}).style||"one_or_ordered",Y=$.split(/\r?\n/),z=[],Q=1;for(let G of Y){let q=G.match(/^(\s*)(\d+)(\.\s+)/);if(q){let U=q[1],W=q[3];if(X==="one")z.push(G.replace(/^(\s*)\d+(\.\s+)/,`${U}1${W}`));else if(X==="ordered")z.push(G.replace(/^(\s*)\d+(\.\s+)/,`${U}${Q}${W}`)),Q++;else z.push(G),Q++}else if(z.push(G),G.trim().length===0)Q=1}return z.join(`
107
+ `)}};var hJ={meta:{docs:"Proper names should have correct capitalization"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=J.options||{},z=Y.names||[],Q=Y.code_blocks!==!1;if(z.length===0)return Z;let G=o(X);for(let q=0;q<X.length;q++){if(G.has(q)&&!Q)continue;let U=X[q];for(let W of z){let K=new RegExp(`\\b${W}\\b`,"gi"),H=U.matchAll(K);for(let V of H)if(V[0]!==W){let A=V.index+1;Z.push({filePath:J.filePath,line:q+1,column:A,ruleId:"markdown/proper-names",message:`Incorrect capitalization of '${V[0]}', should be '${W}'`,severity:"error"})}}}return Z}};var uJ={meta:{docs:"Reference links and images should use defined labels"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=new Set;for(let G of X){let q=G.match(/^\s*\[([^\]]+)\]:\s*\S+/);if(q)Y.add(q[1].toLowerCase())}let z=!1,Q=!1;for(let G=0;G<X.length;G++){let q=X[G];if(/^(?:`{3,}|~{3,})/.test(q.trim())){z=!z;continue}if(z)continue;if(q.includes("<!--"))Q=!0;if(q.includes("-->")){Q=!1;continue}if(Q)continue;if(/^\s*\[(?:[^\]]+)\]:\s*\S+/.test(q))continue;let U=q.replace(/`[^`]+`/g,(K)=>" ".repeat(K.length));U=U.replace(/!?\[[^\]]*\]\([^)]*\)/g,(K)=>" ".repeat(K.length));let W=U.matchAll(/!?\[([^\]]+)\]\[([^\]]*)\]/g);for(let K of W){let H=(K[2].trim()||K[1]).toLowerCase();if(!Y.has(H))Z.push({filePath:J.filePath,line:G+1,column:K.index+1,ruleId:"markdown/reference-links-images",message:`Reference link '[${H}]' is not defined`,severity:"error"})}}return Z}};var mJ={meta:{docs:"Document should have required heading structure"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),z=(J.options||{}).headings||[];if(z.length===0)return Z;let Q=[];for(let q of X){let U=q.match(/^#{1,6}\s+(.+?)(?:\s*#+\s*)?$/);if(U)Q.push(U[1].trim())}let G=0;for(let q=0;q<Q.length&&G<z.length;q++)if(Q[q]===z[G])G++;if(G<z.length)Z.push({filePath:J.filePath,line:1,column:1,ruleId:"markdown/required-headings",message:`Missing required heading: '${z[G]}'`,severity:"error"});return Z}};var dJ={meta:{docs:"Document should have only one top-level heading (h1)"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=o(X),z=-1;for(let Q=0;Q<X.length;Q++){if(Y.has(Q))continue;let G=X[Q],q=Q+1<X.length?X[Q+1]:"",U=!1;if(/^#\s/.test(G))U=!0;if(/^=+\s*$/.test(q)&&G.trim().length>0&&!Y.has(Q+1))U=!0;if(U)if(z===-1)z=Q+1;else Z.push({filePath:J.filePath,line:Q+1,column:1,ruleId:"markdown/single-title",message:`Multiple top-level headings in the same document (first h1 on line ${z})`,severity:"error"})}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=o(J),X=[],Y=!1,z=!1;for(let Q=0;Q<J.length;Q++){if(Z.has(Q)){X.push(J[Q]);continue}let G=J[Q],q=Q+1<J.length?J[Q+1]:"",U=/^#\s/.test(G),W=/^=+\s*$/.test(q)&&G.trim().length>0&&!Z.has(Q+1);if(U){if(!Y)Y=!0,X.push(G);else X.push(`#${G}`),z=!0;continue}if(W){if(!Y){Y=!0,X.push(G);continue}X.push(`## ${G.trim()}`),Q++,z=!0;continue}X.push(G)}return z?X.join(`
108
+ `):$}};var oJ={meta:{docs:"Files should end with a single newline character"},check:($,J)=>{let Z=[];if(!$.endsWith(`
106
109
  `)&&!$.endsWith(`\r
107
110
  `)){let X=$.split(/\r?\n/);Z.push({filePath:J.filePath,line:X.length,column:X[X.length-1].length+1,ruleId:"markdown/single-trailing-newline",message:"File should end with a single newline character",severity:"error"})}if($.endsWith(`
108
111
 
109
112
  `)||$.endsWith(`\r
110
113
  \r
111
114
  `)){let X=$.split(/\r?\n/);Z.push({filePath:J.filePath,line:X.length,column:1,ruleId:"markdown/single-trailing-newline",message:"File should end with a single newline character (not multiple)",severity:"error"})}return Z},fix:($)=>{return`${$.replace(/[\r\n]+$/,"")}
112
- `}};var dJ={meta:{docs:"Strong style should be consistent (asterisk or underscore)"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=m(X),Q=(J.options||{}).style||"consistent",G=null;for(let q=0;q<X.length;q++){if(Y.has(q))continue;let U=X[q],W=U.matchAll(/\*\*([^*]+)\*\*/g);for(let H of W)if(Q==="underscore")Z.push({filePath:J.filePath,line:q+1,column:H.index+1,ruleId:"markdown/strong-style",message:"Expected underscore (__) for strong",severity:"error"});else if(Q==="consistent"){if(G===null)G="asterisk";else if(G==="underscore")Z.push({filePath:J.filePath,line:q+1,column:H.index+1,ruleId:"markdown/strong-style",message:"Strong style should be consistent throughout document",severity:"error"})}let K=U.matchAll(/__([^_]+)__/g);for(let H of K)if(Q==="asterisk")Z.push({filePath:J.filePath,line:q+1,column:H.index+1,ruleId:"markdown/strong-style",message:"Expected asterisk (**) for strong",severity:"error"});else if(Q==="consistent"){if(G===null)G="underscore";else if(G==="asterisk")Z.push({filePath:J.filePath,line:q+1,column:H.index+1,ruleId:"markdown/strong-style",message:"Strong style should be consistent throughout document",severity:"error"})}}return Z},fix:($,J)=>{let X=(J.options||{}).style||"consistent",Y=$.split(/\r?\n/),z=m(Y),Q="asterisk";if(X==="asterisk")Q="asterisk";else if(X==="underscore")Q="underscore";else if(X==="consistent"){let q=null,U=null;for(let K=0;K<Y.length;K++){if(z.has(K))continue;if(q===null){let H=Y[K].match(/\*\*([^*]+)\*\*/);if(H)q={line:K,col:H.index}}if(U===null){let H=Y[K].match(/__([^_]+)__/);if(H)U={line:K,col:H.index}}if(q&&U)break}if(q&&(!U||((K,H)=>K.line!==H.line?K.line-H.line:K.col-H.col)(q,U)<0))Q="asterisk";else if(U)Q="underscore"}let G=!1;for(let q=0;q<Y.length;q++){if(z.has(q))continue;let U=Y[q],W=Q==="asterisk"?U.replace(/__([^_]+)__/g,"**$1**"):U.replace(/\*\*([^*]+)\*\*/g,"__$1__");if(W!==U)Y[q]=W,G=!0}return G?Y.join(`
113
- `):$}};var oJ={meta:{docs:"Table rows should have consistent column counts"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1,z=-1,Q=!1,G=J1(X);for(let q=0;q<X.length;q++){let U=X[q];if(/^(?:`{3,}|~{3,})/.test(U.trim())){if(Q=!Q,Y)Y=!1,z=-1;continue}if(Q)continue;let W=G.has(q)&&/\|/.test(U)&&U.trim().length>0;if(W){let K=qG(U);if(!Y)Y=!0,z=K;else if(K!==z)Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"markdown/table-column-count",message:`Table row has ${K} column(s), expected ${z}`,severity:"error"})}else if(U.trim().length===0||!W){if(Y)Y=!1,z=-1}}return Z}};function qG($){let J=$.trim();if(J.startsWith("|"))J=J.slice(1);if(J.endsWith("|")&&!J.endsWith("\\|"))J=J.slice(0,-1);if(J==="")return 0;let Z=1,X=!1,Y=0,z=0;while(z<J.length){let Q=J[z];if(Q==="\\"&&J[z+1]==="|"){z+=2;continue}if(Q==="`"){let G=0;while(J[z+G]==="`")G++;if(!X)X=!0,Y=G;else if(G===Y)X=!1,Y=0;z+=G;continue}if(!X&&Q==="|")Z++;z++}return Z}var cJ={meta:{docs:"Table columns should have consistent alignment"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y];if(/[-:]/.test(z)&&/\|/.test(z)){if(z.match(/^[|\s:.-]+$/)){let G=z.split("|").filter((q)=>q.trim().length>0);for(let q of G){let U=q.trim();if(!/^:?-+:?$/.test(U))Z.push({filePath:J.filePath,line:Y+1,column:z.indexOf(q)+1,ruleId:"markdown/table-column-style",message:"Invalid table column separator",severity:"error"})}}}}return Z}};var rJ={meta:{docs:"Table pipe style should be consistent"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),z=(J.options||{}).style||"leading_and_trailing",Q=!1,G=J1(X);for(let q=0;q<X.length;q++){let U=X[q];if(/^(?:`{3,}|~{3,})/.test(U.trim())){Q=!Q;continue}if(Q)continue;if(G.has(q)&&/\|/.test(U)&&U.trim().length>0){let W=U.trim().startsWith("|"),K=U.trim().endsWith("|");if(z==="leading_and_trailing"){if(!W||!K)Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"markdown/table-pipe-style",message:"Table rows should have leading and trailing pipes",severity:"error"})}else if(z==="leading_only"){if(!W||K)Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"markdown/table-pipe-style",message:"Table rows should have leading pipe only",severity:"error"})}else if(z==="trailing_only"){if(W||!K)Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"markdown/table-pipe-style",message:"Table rows should have trailing pipe only",severity:"error"})}else if(z==="no_leading_or_trailing"){if(W||K)Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"markdown/table-pipe-style",message:"Table rows should not have leading or trailing pipes",severity:"error"})}}}return Z}};var lJ={meta:{docs:"Unordered list indentation should be consistent"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),z=(J.options||{}).indent||2,Q=!1,G=[];for(let q=0;q<X.length;q++){let U=X[q];if(/^(?:`{3,}|~{3,})/.test(U.trim())){Q=!Q;continue}if(Q)continue;if(U.trim()==="")continue;let W=U.match(/^(\s*)([*\-+])(\s+)/),K=U.match(/^(\s*)(\d+[.)])(\s+)/);if(!W&&!K){let j=U.match(/^(\s*)/)?.[1].length||0;while(G.length>0&&G[G.length-1].contentCol>j)G.pop();continue}let H=W||K,V=H[1].length,A=H[2],_=H[3],F=V+A.length+_.length,w=W?"ul":"ol";while(G.length>0&&V<G[G.length-1].contentCol)G.pop();if(w==="ul"){let j=G.length>0?G[G.length-1]:null;if(!j){if(V!==0&&V%z!==0)Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"markdown/ul-indent",message:`Unordered list indentation should be ${z} spaces per level. Found ${V} spaces`,severity:"error"})}else if(j.type==="ul"){let D=j.contentCol,M=j.indent+z;if(V!==D&&V!==M)Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"markdown/ul-indent",message:`Unordered list indentation should be ${z} spaces per level. Found ${V} spaces`,severity:"error"})}}G.push({indent:V,contentCol:F,type:w})}return Z}};var aJ={meta:{docs:"Unordered list style should be consistent"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=m(X),Q=(J.options||{}).style||"consistent",G=null;for(let q=0;q<X.length;q++){let U=X[q];if(Y.has(q))continue;let W=U.match(/^(\s*)([*\-+])\s+/);if(W){let K=W[2];if(Q==="asterisk"&&K!=="*")Z.push({filePath:J.filePath,line:q+1,column:W[1].length+1,ruleId:"markdown/ul-style",message:`Expected asterisk (*) for unordered list, found '${K}'`,severity:"error"});else if(Q==="dash"&&K!=="-")Z.push({filePath:J.filePath,line:q+1,column:W[1].length+1,ruleId:"markdown/ul-style",message:`Expected dash (-) for unordered list, found '${K}'`,severity:"error"});else if(Q==="plus"&&K!=="+")Z.push({filePath:J.filePath,line:q+1,column:W[1].length+1,ruleId:"markdown/ul-style",message:`Expected plus (+) for unordered list, found '${K}'`,severity:"error"});else if(Q==="consistent"){if(G===null)G=K;else if(G!==K)Z.push({filePath:J.filePath,line:q+1,column:W[1].length+1,ruleId:"markdown/ul-style",message:`Unordered list style should be consistent throughout document. Expected '${G}', found '${K}'`,severity:"error"})}}}return Z},fix:($,J)=>{let X=(J.options||{}).style||"consistent",Y=$.split(/\r?\n/),z=m(Y),Q="*";if(X==="asterisk")Q="*";else if(X==="dash")Q="-";else if(X==="plus")Q="+";else if(X==="consistent")for(let q=0;q<Y.length;q++){if(z.has(q))continue;let U=Y[q].match(/^(\s*)([*\-+])\s+/);if(U){Q=U[2];break}}return Y.map((q,U)=>{if(z.has(U))return q;return q.replace(/^(\s*)([*\-+])(\s+)/,`$1${Q}$3`)}).join(`
114
- `)}};function UG($){let J=$.split(/\r?\n/);if(J[0]?.trim()!=="---")return{text:$,frontmatter:null,frontmatterEndLine:0};for(let Z=1;Z<J.length;Z++)if(J[Z].trim()==="---"){let X=J.slice(0,Z+1);return{text:[...X.map(()=>""),...J.slice(Z+1)].join(`
115
- `),frontmatter:X,frontmatterEndLine:Z+1}}return{text:$,frontmatter:null,frontmatterEndLine:0}}function WG($){let J=$.split(/\r?\n/);if(J[0]?.trim()!=="---")return{header:null,body:$};for(let Z=1;Z<J.length;Z++)if(J[Z].trim()==="---")return{header:J.slice(0,Z+1).join(`
115
+ `}};var cJ={meta:{docs:"Strong style should be consistent (asterisk or underscore)"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=o(X),Q=(J.options||{}).style||"consistent",G=null;for(let q=0;q<X.length;q++){if(Y.has(q))continue;let U=X[q],W=U.matchAll(/\*\*([^*]+)\*\*/g);for(let H of W)if(Q==="underscore")Z.push({filePath:J.filePath,line:q+1,column:H.index+1,ruleId:"markdown/strong-style",message:"Expected underscore (__) for strong",severity:"error"});else if(Q==="consistent"){if(G===null)G="asterisk";else if(G==="underscore")Z.push({filePath:J.filePath,line:q+1,column:H.index+1,ruleId:"markdown/strong-style",message:"Strong style should be consistent throughout document",severity:"error"})}let K=U.matchAll(/__([^_]+)__/g);for(let H of K)if(Q==="asterisk")Z.push({filePath:J.filePath,line:q+1,column:H.index+1,ruleId:"markdown/strong-style",message:"Expected asterisk (**) for strong",severity:"error"});else if(Q==="consistent"){if(G===null)G="underscore";else if(G==="asterisk")Z.push({filePath:J.filePath,line:q+1,column:H.index+1,ruleId:"markdown/strong-style",message:"Strong style should be consistent throughout document",severity:"error"})}}return Z},fix:($,J)=>{let X=(J.options||{}).style||"consistent",Y=$.split(/\r?\n/),z=o(Y),Q="asterisk";if(X==="asterisk")Q="asterisk";else if(X==="underscore")Q="underscore";else if(X==="consistent"){let q=null,U=null;for(let K=0;K<Y.length;K++){if(z.has(K))continue;if(q===null){let H=Y[K].match(/\*\*([^*]+)\*\*/);if(H)q={line:K,col:H.index}}if(U===null){let H=Y[K].match(/__([^_]+)__/);if(H)U={line:K,col:H.index}}if(q&&U)break}if(q&&(!U||((K,H)=>K.line!==H.line?K.line-H.line:K.col-H.col)(q,U)<0))Q="asterisk";else if(U)Q="underscore"}let G=!1;for(let q=0;q<Y.length;q++){if(z.has(q))continue;let U=Y[q],W=Q==="asterisk"?U.replace(/__([^_]+)__/g,"**$1**"):U.replace(/\*\*([^*]+)\*\*/g,"__$1__");if(W!==U)Y[q]=W,G=!0}return G?Y.join(`
116
+ `):$}};var rJ={meta:{docs:"Table rows should have consistent column counts"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1,z=-1,Q=!1,G=X1(X);for(let q=0;q<X.length;q++){let U=X[q];if(/^(?:`{3,}|~{3,})/.test(U.trim())){if(Q=!Q,Y)Y=!1,z=-1;continue}if(Q)continue;let W=G.has(q)&&/\|/.test(U)&&U.trim().length>0;if(W){let K=WG(U);if(!Y)Y=!0,z=K;else if(K!==z)Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"markdown/table-column-count",message:`Table row has ${K} column(s), expected ${z}`,severity:"error"})}else if(U.trim().length===0||!W){if(Y)Y=!1,z=-1}}return Z}};function WG($){let J=$.trim();if(J.startsWith("|"))J=J.slice(1);if(J.endsWith("|")&&!J.endsWith("\\|"))J=J.slice(0,-1);if(J==="")return 0;let Z=1,X=!1,Y=0,z=0;while(z<J.length){let Q=J[z];if(Q==="\\"&&J[z+1]==="|"){z+=2;continue}if(Q==="`"){let G=0;while(J[z+G]==="`")G++;if(!X)X=!0,Y=G;else if(G===Y)X=!1,Y=0;z+=G;continue}if(!X&&Q==="|")Z++;z++}return Z}var lJ={meta:{docs:"Table columns should have consistent alignment"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y];if(/[-:]/.test(z)&&/\|/.test(z)){if(z.match(/^[|\s:.-]+$/)){let G=z.split("|").filter((q)=>q.trim().length>0);for(let q of G){let U=q.trim();if(!/^:?-+:?$/.test(U))Z.push({filePath:J.filePath,line:Y+1,column:z.indexOf(q)+1,ruleId:"markdown/table-column-style",message:"Invalid table column separator",severity:"error"})}}}}return Z}};var aJ={meta:{docs:"Table pipe style should be consistent"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),z=(J.options||{}).style||"leading_and_trailing",Q=!1,G=X1(X);for(let q=0;q<X.length;q++){let U=X[q];if(/^(?:`{3,}|~{3,})/.test(U.trim())){Q=!Q;continue}if(Q)continue;if(G.has(q)&&/\|/.test(U)&&U.trim().length>0){let W=U.trim().startsWith("|"),K=U.trim().endsWith("|");if(z==="leading_and_trailing"){if(!W||!K)Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"markdown/table-pipe-style",message:"Table rows should have leading and trailing pipes",severity:"error"})}else if(z==="leading_only"){if(!W||K)Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"markdown/table-pipe-style",message:"Table rows should have leading pipe only",severity:"error"})}else if(z==="trailing_only"){if(W||!K)Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"markdown/table-pipe-style",message:"Table rows should have trailing pipe only",severity:"error"})}else if(z==="no_leading_or_trailing"){if(W||K)Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"markdown/table-pipe-style",message:"Table rows should not have leading or trailing pipes",severity:"error"})}}}return Z}};var sJ={meta:{docs:"Unordered list indentation should be consistent"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),z=(J.options||{}).indent||2,Q=!1,G=[];for(let q=0;q<X.length;q++){let U=X[q];if(/^(?:`{3,}|~{3,})/.test(U.trim())){Q=!Q;continue}if(Q)continue;if(U.trim()==="")continue;let W=U.match(/^(\s*)([*\-+])(\s+)/),K=U.match(/^(\s*)(\d+[.)])(\s+)/);if(!W&&!K){let M=U.match(/^(\s*)/)?.[1].length||0;while(G.length>0&&G[G.length-1].contentCol>M)G.pop();continue}let H=W||K,V=H[1].length,A=H[2],_=H[3],w=V+A.length+_.length,F=W?"ul":"ol";while(G.length>0&&V<G[G.length-1].contentCol)G.pop();if(F==="ul"){let M=G.length>0?G[G.length-1]:null;if(!M){if(V!==0&&V%z!==0)Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"markdown/ul-indent",message:`Unordered list indentation should be ${z} spaces per level. Found ${V} spaces`,severity:"error"})}else if(M.type==="ul"){let T=M.contentCol,E=M.indent+z;if(V!==T&&V!==E)Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"markdown/ul-indent",message:`Unordered list indentation should be ${z} spaces per level. Found ${V} spaces`,severity:"error"})}}G.push({indent:V,contentCol:w,type:F})}return Z}};var nJ={meta:{docs:"Unordered list style should be consistent"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=o(X),Q=(J.options||{}).style||"consistent",G=null;for(let q=0;q<X.length;q++){let U=X[q];if(Y.has(q))continue;let W=U.match(/^(\s*)([*\-+])\s+/);if(W){let K=W[2];if(Q==="asterisk"&&K!=="*")Z.push({filePath:J.filePath,line:q+1,column:W[1].length+1,ruleId:"markdown/ul-style",message:`Expected asterisk (*) for unordered list, found '${K}'`,severity:"error"});else if(Q==="dash"&&K!=="-")Z.push({filePath:J.filePath,line:q+1,column:W[1].length+1,ruleId:"markdown/ul-style",message:`Expected dash (-) for unordered list, found '${K}'`,severity:"error"});else if(Q==="plus"&&K!=="+")Z.push({filePath:J.filePath,line:q+1,column:W[1].length+1,ruleId:"markdown/ul-style",message:`Expected plus (+) for unordered list, found '${K}'`,severity:"error"});else if(Q==="consistent"){if(G===null)G=K;else if(G!==K)Z.push({filePath:J.filePath,line:q+1,column:W[1].length+1,ruleId:"markdown/ul-style",message:`Unordered list style should be consistent throughout document. Expected '${G}', found '${K}'`,severity:"error"})}}}return Z},fix:($,J)=>{let X=(J.options||{}).style||"consistent",Y=$.split(/\r?\n/),z=o(Y),Q="*";if(X==="asterisk")Q="*";else if(X==="dash")Q="-";else if(X==="plus")Q="+";else if(X==="consistent")for(let q=0;q<Y.length;q++){if(z.has(q))continue;let U=Y[q].match(/^(\s*)([*\-+])\s+/);if(U){Q=U[2];break}}return Y.map((q,U)=>{if(z.has(U))return q;return q.replace(/^(\s*)([*\-+])(\s+)/,`$1${Q}$3`)}).join(`
117
+ `)}};function KG($){let J=$.split(/\r?\n/);if(J[0]?.trim()!=="---")return{text:$,frontmatter:null,frontmatterEndLine:0};for(let Z=1;Z<J.length;Z++)if(J[Z].trim()==="---"){let X=J.slice(0,Z+1);return{text:[...X.map(()=>""),...J.slice(Z+1)].join(`
118
+ `),frontmatter:X,frontmatterEndLine:Z+1}}return{text:$,frontmatter:null,frontmatterEndLine:0}}function HG($){let J=$.split(/\r?\n/);if(J[0]?.trim()!=="---")return{header:null,body:$};for(let Z=1;Z<J.length;Z++)if(J[Z].trim()==="---")return{header:J.slice(0,Z+1).join(`
116
119
  `),body:J.slice(Z+1).join(`
117
- `)};return{header:null,body:$}}function KG($){return{meta:$.meta,check:(J,Z)=>Z.filePath.endsWith(".md")?$.check(J,Z):[],fix:$.fix?(J,Z)=>Z.filePath.endsWith(".md")?$.fix(J,Z):J:void 0}}function l($){return{meta:$.meta,check:(J,Z)=>{if(!Z.filePath.endsWith(".md"))return[];let{text:X,frontmatterEndLine:Y}=UG(J),z=$.check(X,Z);if(Y>0)return z.filter((Q)=>Q.line>Y+1);return z},fix:$.fix?(J,Z)=>{if(!Z.filePath.endsWith(".md"))return J;let{header:X,body:Y}=WG(J);if(X===null)return $.fix(J,Z);let z=$.fix(Y,Z);if(z===Y)return J;return`${X}
118
- ${z}`}:void 0}}var sJ={name:"markdown",rules:{"heading-increment":l(QJ),"heading-style":l(qJ),"no-missing-space-atx":l(RJ),"no-multiple-space-atx":l(PJ),"no-missing-space-closed-atx":l(OJ),"no-multiple-space-closed-atx":l(IJ),"blanks-around-headings":l(aZ),"heading-start-left":l(GJ),"no-duplicate-heading":l(MJ),"single-title":l(uJ),"no-trailing-punctuation":l(kJ),"ul-style":l(aJ),"list-indent":l(AJ),"ul-indent":l(lJ),"ol-prefix":l(gJ),"list-marker-space":l(_J),"blanks-around-lists":l(sZ),"no-trailing-spaces":l(fJ),"no-hard-tabs":l(EJ),"no-multiple-blanks":l(LJ),"no-multiple-space-blockquote":l(CJ),"no-blanks-blockquote":l(BJ),"blanks-around-fences":l(lZ),"single-trailing-newline":KG(mJ),"blanks-around-tables":l(iZ),"no-reversed-links":l(SJ),"no-bare-urls":l(wJ),"no-space-in-links":l(bJ),"no-empty-links":l(TJ),"link-fragments":l(KJ),"reference-links-images":l(pJ),"link-image-reference-definitions":l(HJ),"link-image-style":l(VJ),"descriptive-link-text":l(JJ),"line-length":l(WJ),"commands-show-output":l(ZJ),"fenced-code-language":l(YJ),"code-block-style":l(tZ),"code-fence-style":l($J),"no-emphasis-as-heading":l(NJ),"no-space-in-emphasis":l(yJ),"no-space-in-code":l(vJ),"emphasis-style":l(XJ),"strong-style":l(dJ),"no-inline-html":l(DJ),"hr-style":l(UJ),"first-line-heading":l(zJ),"required-headings":l(hJ),"proper-names":l(xJ),"no-alt-text":l(FJ),"table-pipe-style":l(rJ),"table-column-count":l(oJ),"table-column-style":l(cJ)}};var nJ={meta:{docs:"Prefer using global Buffer instead of requiring it",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=/(?:import\b[^;\n]*\bfrom\s*|require\s*\(\s*)['"](?:node:)?buffer['"]/;for(let z=0;z<X.length;z++){let Q=X[z],G=Q.trim();if(G.startsWith("//")||G.startsWith("/*")||G.startsWith("*"))continue;let q=Q.match(Y);if(!q||q.index===void 0)continue;if(!/\bBuffer\b/.test(Q))continue;Z.push({filePath:J.filePath,line:z+1,column:q.index+1,ruleId:"node/prefer-global/buffer",message:"Unexpected import of 'Buffer'. Use the global 'Buffer' instead",severity:"error",help:"`Buffer` is a global in Node.js \u2014 remove the import and use it directly."})}return Z}};var iJ={meta:{docs:"Prefer using global process instead of requiring it",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=/(?:import\b[^;\n]*\bfrom\s*|require\s*\(\s*)['"](?:node:)?process['"]/;for(let z=0;z<X.length;z++){let Q=X[z],G=Q.trim();if(G.startsWith("//")||G.startsWith("/*")||G.startsWith("*"))continue;let q=Q.match(Y);if(!q||q.index===void 0)continue;Z.push({filePath:J.filePath,line:z+1,column:q.index+1,ruleId:"node/prefer-global/process",message:"Unexpected import of 'process'. Use the global 'process' instead",severity:"error",help:"`process` is a global in Node.js \u2014 remove the import and use it directly."})}return Z}};var tJ={name:"node",rules:{"prefer-global/buffer":B(nJ),"prefer-global/process":B(iJ)}};var P8={meta:{docs:"Enforce sorted imports (delegates to formatter check only)"},check:($,J)=>{let Z=$.split(/\r?\n/),X=0;while(X<Z.length&&(/^\s*$/.test(Z[X])||/^\s*\/.\/.*/.test(Z[X])||/^\s*\/.\*/.test(Z[X])))X++;let Y=X,z=[];while(X<Z.length&&/^\s*import\b/.test(Z[X]))z.push(Z[X].trim()),X++;if(z.length===0)return[];let Q=z.join(`
120
+ `)};return{header:null,body:$}}function VG($){return{meta:$.meta,check:(J,Z)=>Z.filePath.endsWith(".md")?$.check(J,Z):[],fix:$.fix?(J,Z)=>Z.filePath.endsWith(".md")?$.fix(J,Z):J:void 0}}function a($){return{meta:$.meta,check:(J,Z)=>{if(!Z.filePath.endsWith(".md"))return[];let{text:X,frontmatterEndLine:Y}=KG(J),z=$.check(X,Z);if(Y>0)return z.filter((Q)=>Q.line>Y+1);return z},fix:$.fix?(J,Z)=>{if(!Z.filePath.endsWith(".md"))return J;let{header:X,body:Y}=HG(J);if(X===null)return $.fix(J,Z);let z=$.fix(Y,Z);if(z===Y)return J;return`${X}
121
+ ${z}`}:void 0}}var iJ={name:"markdown",rules:{"heading-increment":a(qJ),"heading-style":a(WJ),"no-missing-space-atx":a(LJ),"no-multiple-space-atx":a(IJ),"no-missing-space-closed-atx":a(PJ),"no-multiple-space-closed-atx":a(vJ),"blanks-around-headings":a(nZ),"heading-start-left":a(UJ),"no-duplicate-heading":a(NJ),"single-title":a(dJ),"no-trailing-punctuation":a(gJ),"ul-style":a(nJ),"list-indent":a(FJ),"ul-indent":a(sJ),"ol-prefix":a(xJ),"list-marker-space":a(wJ),"blanks-around-lists":a(iZ),"no-trailing-spaces":a(pJ),"no-hard-tabs":a(RJ),"no-multiple-blanks":a(CJ),"no-multiple-space-blockquote":a(SJ),"no-blanks-blockquote":a(jJ),"blanks-around-fences":a(sZ),"single-trailing-newline":VG(oJ),"blanks-around-tables":a(eZ),"no-reversed-links":a(yJ),"no-bare-urls":a(MJ),"no-space-in-links":a(fJ),"no-empty-links":a(DJ),"link-fragments":a(VJ),"reference-links-images":a(uJ),"link-image-reference-definitions":a(AJ),"link-image-style":a(_J),"descriptive-link-text":a(YJ),"line-length":a(HJ),"commands-show-output":a(XJ),"fenced-code-language":a(QJ),"code-block-style":a($J),"code-fence-style":a(JJ),"no-emphasis-as-heading":a(EJ),"no-space-in-emphasis":a(kJ),"no-space-in-code":a(bJ),"emphasis-style":a(zJ),"strong-style":a(cJ),"no-inline-html":a(OJ),"hr-style":a(KJ),"first-line-heading":a(GJ),"required-headings":a(mJ),"proper-names":a(hJ),"no-alt-text":a(BJ),"table-pipe-style":a(aJ),"table-column-count":a(rJ),"table-column-style":a(lJ)}};var tJ={meta:{docs:"Prefer using global Buffer instead of requiring it",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=/(?:import\b[^;\n]*\bfrom\s*|require\s*\(\s*)['"](?:node:)?buffer['"]/;for(let z=0;z<X.length;z++){let Q=X[z],G=Q.trim();if(G.startsWith("//")||G.startsWith("/*")||G.startsWith("*"))continue;let q=Q.match(Y);if(!q||q.index===void 0)continue;if(!/\bBuffer\b/.test(Q))continue;Z.push({filePath:J.filePath,line:z+1,column:q.index+1,ruleId:"node/prefer-global/buffer",message:"Unexpected import of 'Buffer'. Use the global 'Buffer' instead",severity:"error",help:"`Buffer` is a global in Node.js \u2014 remove the import and use it directly."})}return Z}};var eJ={meta:{docs:"Prefer using global process instead of requiring it",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=/(?:import\b[^;\n]*\bfrom\s*|require\s*\(\s*)['"](?:node:)?process['"]/;for(let z=0;z<X.length;z++){let Q=X[z],G=Q.trim();if(G.startsWith("//")||G.startsWith("/*")||G.startsWith("*"))continue;let q=Q.match(Y);if(!q||q.index===void 0)continue;Z.push({filePath:J.filePath,line:z+1,column:q.index+1,ruleId:"node/prefer-global/process",message:"Unexpected import of 'process'. Use the global 'process' instead",severity:"error",help:"`process` is a global in Node.js \u2014 remove the import and use it directly."})}return Z}};var $X={name:"node",rules:{"prefer-global/buffer":B(tJ),"prefer-global/process":B(eJ)}};var C8={meta:{docs:"Enforce sorted imports (delegates to formatter check only)"},check:($,J)=>{let Z=$.split(/\r?\n/),X=0;while(X<Z.length&&(/^\s*$/.test(Z[X])||/^\s*\/.\/.*/.test(Z[X])||/^\s*\/.\*/.test(Z[X])))X++;let Y=X,z=[];while(X<Z.length&&/^\s*import\b/.test(Z[X]))z.push(Z[X].trim()),X++;if(z.length===0)return[];let Q=z.join(`
119
122
  `),G=Z.slice(X).join(`
120
123
  `),q=`${Q}
121
- ${G}`;if(L7(q)!==q)return[{filePath:J.filePath,line:Y+1,column:1,ruleId:"sort-imports",message:"Imports are not sorted/grouped consistently",severity:"warning"}];return[]},fix:($)=>L7($)};var eJ={name:"perfectionist",rules:{"sort-imports":B(P8)}};import{dirname as HG,resolve as VG}from"path";function t($){try{let J=JSON.parse($);if(typeof J!=="object"||J===null||Array.isArray(J))return null;return J}catch{return null}}function AG($,J){let Z=$.split(`
122
- `),X=1,Y=0;for(let z of J){let Q=new RegExp(`"${BG(z)}"\\s*:`);for(let G=Y;G<Z.length;G++)if(Q.test(Z[G])){X=G+1,Y=G+1;break}}return X}function h0($){return HG($)}function I0($,J){return VG($,J)}function $0($){let J="pkg";for(let Z of $)if(/^\d+$/.test(Z))J+=`[${Z}]`;else if(!/^[a-z_$][a-z0-9_$]*$/i.test(Z))J+=`["${Z}"]`;else J+=`.${Z}`;return J}function i($,J){if($.publishConfig?.[J]!==void 0)return[$.publishConfig[J],["publishConfig",J]];return[$[J],[J]]}var _G=new RegExp(`(?:[\\s;]|^)(?:import[\\w,{}\\s*]*from|import\\s*['"*{]|export\\b\\s*(?:[*{]|default|type|function|const|var|let|async function)|import\\.meta\\b)`,"m"),FG=new RegExp("(?:[\\s;]|^)(?:module.exports\\b|exports\\.\\w|require\\s*\\(|global\\.\\w|Object\\.(?:defineProperty|defineProperties|assign)\\s*\\(\\s*exports\\b)","m");function X1($){let J=wG($),Z=_G.test(J),X=FG.test(J);if(Z&&X)return"mixed";if(Z)return"ESM";if(X)return"CJS";return"unknown"}function $X($,J){if($.endsWith(".mjs"))return"ESM";if($.endsWith(".cjs"))return"CJS";return J==="module"?"ESM":"CJS"}function ZX($){if($==="ESM")return".mjs";if($==="CJS")return".cjs";return".js"}function JX($){return $===".mjs"||$===".cjs"}function a0($){return $.endsWith(".js")||$.endsWith(".mjs")||$.endsWith(".cjs")}function XX($){return/^#!\s*\//.test($)}function wG($){return $.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\/\/.*/g,"")}function U0($,J,Z,X){P7($,J,Z,X)}function P7($,J,Z,X){if(typeof $==="string"){X($,{path:J,isImports:Z});return}if(Array.isArray($)){X($,{path:J,isImports:Z});for(let Y=0;Y<$.length;Y++)P7($[Y],J.concat(String(Y)),Z,X);return}if($!==null&&typeof $==="object"){let Y=Object.keys($);X($,{path:J,isImports:Z},Y);for(let z of Y)P7($[z],J.concat(z),Z,X)}}function n($,J,Z,X,Y,z,Q){return{filePath:$,line:AG(J,Z),column:1,ruleId:X,message:Y,severity:z,...Q&&{help:Q}}}function BG($){return $.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}var C7={meta:{docs:"Disallow deprecated jsnext:main and jsnext fields",recommended:!0},check($,J){let Z=t($);if(!Z)return[];let X=[];if(Z["jsnext:main"]!=null)X.push(n(J.filePath,$,["jsnext:main"],"publint/deprecated-field-jsnext",'pkg["jsnext:main"] is deprecated. pkg.module should be used instead.',"warning",'The jsnext:main field is no longer recognized by modern bundlers. Use "module" instead.'));if(Z.jsnext!=null)X.push(n(J.filePath,$,["jsnext"],"publint/deprecated-field-jsnext","pkg.jsnext is deprecated. pkg.module should be used instead.","warning",'The jsnext field is no longer recognized by modern bundlers. Use "module" instead.'));return X}};var I7={meta:{docs:'Ensure "default" condition is last in exports objects',recommended:!0},check($,J){let Z=t($);if(!Z)return[];let X=[],[Y,z]=i(Z,"exports");if(Y==null)return[];return U0(Y,z,!1,(Q,G,q)=>{if(!q||typeof Q!=="object"||Array.isArray(Q))return;if(!("default"in Q))return;if(q[q.length-1]!=="default")X.push(n(J.filePath,$,G.path.concat("default"),"publint/exports-default-should-be-last",`${$0(G.path.concat("default"))} should be the last condition in the object so it doesn't take precedence over the keys following it.`,"error",'Conditions are resolved in order. "default" acts as a fallback and should come last.'))}),X}};var S7={meta:{docs:"Warn against using fallback arrays in exports",recommended:!0},check($,J){let Z=t($);if(!Z)return[];let X=[],[Y,z]=i(Z,"exports");if(Y==null)return[];return U0(Y,z,!1,(Q,G)=>{if(!Array.isArray(Q))return;X.push(n(J.filePath,$,G.path,"publint/exports-fallback-array-use",`${$0(G.path)} uses fallback arrays which is not recommended. It works differently in some tools and may face inconsistent behaviors.`,"warning","Fallback arrays pick the first parseable value and have no practical use case in Node.js currently."))}),X}};var v7={meta:{docs:"Ensure exports has a root entrypoint when main/module exist",recommended:!0},check($,J){let Z=t($);if(!Z)return[];let[X]=i(Z,"main"),[Y]=i(Z,"module"),[z,Q]=i(Z,"exports");if(X==null&&Y==null||z==null)return[];if(typeof z!=="object"||Array.isArray(z))return[];let G=Object.keys(z);if(G.length===0)return[];if(!G[0]?.startsWith("."))return[];if(G.includes("."))return[];let U=[];if(X)U.push("main");if(Y)U.push("module");return[n(J.filePath,$,Q,"publint/exports-missing-root-entrypoint",`${$0(Q)} is missing the root entrypoint export, which is defined in pkg.${U[0]}. Environments that support "exports" will ignore pkg.${U[0]} as "exports" takes the highest priority.`,"warning",`Add ${$0(Q.concat("."))} to ensure the root entrypoint is accessible.`)]}};var y7={meta:{docs:'Ensure "module" condition precedes "require" in exports',recommended:!0},check($,J){let Z=t($);if(!Z)return[];let X=[],[Y,z]=i(Z,"exports");if(Y==null)return[];return U0(Y,z,!1,(Q,G,q)=>{if(!q||typeof Q!=="object"||Array.isArray(Q))return;if(!("module"in Q)||!("require"in Q))return;if(q.indexOf("module")>q.indexOf("require"))X.push(n(J.filePath,$,G.path.concat("module"),"publint/exports-module-should-precede-require",`${$0(G.path.concat("module"))} should come before the "require" condition so it can take precedence when used by a bundler.`,"error",'Bundlers prioritize conditions by order. "module" should precede "require" to ensure ESM is preferred.'))}),X}};var b7={meta:{docs:'Ensure "types" condition is first in exports objects',recommended:!0},check($,J){let Z=t($);if(!Z)return[];let X=[],[Y,z]=i(Z,"exports");if(Y==null)return[];return U0(Y,z,!1,(Q,G,q)=>{if(!q||typeof Q!=="object"||Array.isArray(Q))return;if(!("types"in Q))return;let U=q.indexOf("types");if(U===0)return;if(q.slice(0,U).filter((K)=>{if(K.startsWith("types"))return!1;if(typeof Q[K]==="object"&&Q[K]!==null&&YX(Q[K],"types"))return!1;return!0}).length>0)X.push(n(J.filePath,$,G.path.concat("types"),"publint/exports-types-should-be-first",`${$0(G.path.concat("types"))} should be the first condition in the object so it can be resolved by TypeScript.`,"error",'TypeScript resolves conditions in order. The "types" condition must come first to ensure correct type resolution.'))}),X}};function YX($,J){for(let Z in $){if(Z===J)return!0;if(typeof $[Z]==="object"&&$[Z]!==null&&YX($[Z],J))return!0}return!1}var k7={meta:{docs:'Ensure exports values start with "./"',recommended:!0},check($,J){let Z=t($);if(!Z)return[];let X=[],[Y,z]=i(Z,"exports");if(Y==null)return[];return U0(Y,z,!1,(Q,G)=>{if(typeof Q!=="string")return;if(Q.startsWith("./"))return;let q=`./${Q.replace(/^[/]+/,"")}`;X.push(n(J.filePath,$,G.path,"publint/exports-value-invalid",`${$0(G.path)} is "${Q}" which is invalid as it does not start with "./". Use "${q}" instead.`,"error",'All exports values must be relative paths starting with "./".'))}),X}};var MG=[{field:"main",expectTypes:["string"]},{field:"module",expectTypes:["string"]},{field:"types",expectTypes:["string"]},{field:"typings",expectTypes:["string"]},{field:"browser",expectTypes:["string","object"]},{field:"bin",expectTypes:["string","object"]},{field:"exports",expectTypes:["string","object"]},{field:"imports",expectTypes:["object"]},{field:"name",expectTypes:["string"]},{field:"version",expectTypes:["string"]},{field:"description",expectTypes:["string"]},{field:"license",expectTypes:["string"]}],f7={meta:{docs:"Ensure package.json fields have correct value types",recommended:!0},check($,J){let Z=t($);if(!Z)return[];let X=[];for(let{field:Y,expectTypes:z}of MG){let[Q,G]=i(Z,Y);if(Q==null)continue;let q=typeof Q;if(!z.includes(q)){let U=z.length===1?z[0]:`${z.slice(0,-1).join(", ")} or ${z[z.length-1]}`;X.push(n(J.filePath,$,G,"publint/field-invalid-value-type",`${$0(G)} has an invalid ${q} type. Expected a ${U} type instead.`,"error",`The "${Y}" field must be of type ${U}.`))}}return X}};var g7={meta:{docs:"Suggest adding exports when module field is present",recommended:!0},check($,J){let Z=t($);if(!Z)return[];let[X,Y]=i(Z,"module"),[z]=i(Z,"exports");if(X!=null&&z==null)return[n(J.filePath,$,Y,"publint/has-module-but-no-exports","pkg.module is used to output ESM, but pkg.exports is not defined. As Node.js doesn't read pkg.module, the ESM output may be skipped. Consider adding pkg.exports to export the ESM output.","warning",'Node.js only reads "exports" for module resolution. Without it, the ESM entry point in "module" is ignored by Node.js.')];return[]}};var x7={meta:{docs:'Ensure "default" condition is last in imports objects',recommended:!0},check($,J){let Z=t($);if(!Z)return[];let X=[],[Y,z]=i(Z,"imports");if(Y==null||typeof Y!=="object")return[];return U0(Y,z,!0,(Q,G,q)=>{if(!q||typeof Q!=="object"||Array.isArray(Q))return;if(!("default"in Q))return;if(q[q.length-1]!=="default")X.push(n(J.filePath,$,G.path.concat("default"),"publint/imports-default-should-be-last",`${$0(G.path.concat("default"))} should be the last condition in the object so it doesn't take precedence over the keys following it.`,"error",'Conditions are resolved in order. "default" acts as a fallback and should come last.'))}),X}};var p7={meta:{docs:'Ensure imports keys start with "#"',recommended:!0},check($,J){let Z=t($);if(!Z)return[];let X=[],[Y,z]=i(Z,"imports");if(Y==null||typeof Y!=="object"||Array.isArray(Y))return[];for(let Q of Object.keys(Y))if(!Q.startsWith("#")){let G=`#${Q.replace(/^[/]+/,"")}`,q=z.concat(Q);X.push(n(J.filePath,$,q,"publint/imports-key-invalid",`${$0(q)} is invalid as the imports key does not start with "#". Use "${G}" instead.`,"error",'All imports keys must start with "#" to distinguish them from package specifiers.'))}return X}};var h7={meta:{docs:'Ensure "module" condition precedes "require" in imports',recommended:!0},check($,J){let Z=t($);if(!Z)return[];let X=[],[Y,z]=i(Z,"imports");if(Y==null||typeof Y!=="object")return[];return U0(Y,z,!0,(Q,G,q)=>{if(!q||typeof Q!=="object"||Array.isArray(Q))return;if(!("module"in Q)||!("require"in Q))return;if(q.indexOf("module")>q.indexOf("require"))X.push(n(J.filePath,$,G.path.concat("module"),"publint/imports-module-should-precede-require",`${$0(G.path.concat("module"))} should come before the "require" condition so it can take precedence when used by a bundler.`,"error",'Bundlers prioritize conditions by order. "module" should precede "require" to ensure ESM is preferred.'))}),X}};var u7={meta:{docs:'Ensure imports values start with "./"',recommended:!0},check($,J){let Z=t($);if(!Z)return[];let X=[],[Y,z]=i(Z,"imports");if(Y==null||typeof Y!=="object")return[];return U0(Y,z,!0,(Q,G)=>{if(typeof Q!=="string")return;if(!Q.startsWith("."))return;if(Q.startsWith("./"))return;let q=`./${Q.replace(/^[/]+/,"")}`;X.push(n(J.filePath,$,G.path,"publint/imports-value-invalid",`${$0(G.path)} is "${Q}" which is invalid as it does not start with "./". Use "${q}" instead.`,"error",'Relative imports values must start with "./".'))}),X}};var m7={meta:{docs:"Disallow local file references in dependencies",recommended:!0},check($,J){let Z=t($);if(!Z)return[];let X=[],Y=["dependencies","optionalDependencies","peerDependencies"];for(let z of Y){let Q=Z[z];if(!Q||typeof Q!=="object")continue;for(let G of Object.keys(Q)){let q=Q[G];if(typeof q==="string"&&(q.startsWith("file:")||q.startsWith("link:")))X.push(n(J.filePath,$,[z,G],"publint/local-dependency",`The "${G}" dependency references "${q}" that will likely not work when installed by end-users.`,"error","Local file references (file: or link:) are not portable and will fail for consumers of the package."))}}return X}};var d7={meta:{docs:'Suggest specifying the "type" field in package.json',recommended:!0},check($,J){let Z=t($);if(!Z)return[];if(Z.type==null)return[n(J.filePath,$,["name"],"publint/use-type",'The package does not specify the "type" field. Node.js may attempt to detect the package type causing a small performance hit. Consider adding "type": "commonjs" or "type": "module".',"warning",'Adding "type" helps Node.js resolve module format without detection overhead.')];return[]}};import{existsSync as jG,readFileSync as NG}from"fs";var o7={meta:{docs:"Ensure bin files have a shebang for executability",recommended:!0},check($,J){let Z=t($);if(!Z)return[];let X=[],Y=h0(J.filePath),[z,Q]=i(Z,"bin");if(z==null)return[];if(typeof z==="string")zX(z,Q,Y,X,J.filePath,$);else if(typeof z==="object"){for(let G of Object.keys(z))if(typeof z[G]==="string")zX(z[G],Q.concat(G),Y,X,J.filePath,$)}return X}};function zX($,J,Z,X,Y,z){let Q=I0(Z,$);if(!jG(Q))return;if(!a0($))return;let G;try{G=NG(Q,"utf8")}catch{return}if(!XX(G))X.push(n(Y,z,J,"publint/bin-file-not-executable",`${$0(J)} is "${$}" but the file is not executable. It should start with a shebang, e.g. #!/usr/bin/env node.`,"error","Bin files must start with a shebang (e.g. #!/usr/bin/env node) to be executable."))}import{existsSync as QX,readFileSync as GX}from"fs";var c7={meta:{docs:'Ensure files under "module" condition in exports are ESM',recommended:!0},check($,J){let Z=t($);if(!Z)return[];let X=[],Y=h0(J.filePath),[z,Q]=i(Z,"exports");if(z==null)return[];U0(z,Q,!1,(U,W)=>{if(typeof U!=="string")return;if(!W.path.includes("module"))return;if(!U.startsWith("./")&&!U.startsWith("../"))return;if(U.includes("*"))return;let K=I0(Y,U);if(!QX(K))return;if(!a0(U))return;let H;try{H=GX(K,"utf8")}catch{return}if(X1(H)==="CJS")X.push(n(J.filePath,$,W.path,"publint/exports-module-should-be-esm",`${$0(W.path)} should be ESM, but the code is written in CJS.`,"error",'The "module" condition is only used by bundlers and must contain ESM code.'))});let[G,q]=i(Z,"imports");if(G!=null&&typeof G==="object")U0(G,q,!0,(U,W)=>{if(typeof U!=="string")return;if(!W.path.includes("module"))return;if(!U.startsWith("./"))return;if(U.includes("*"))return;let K=I0(Y,U);if(!QX(K))return;if(!a0(U))return;let H;try{H=GX(K,"utf8")}catch{return}if(X1(H)==="CJS")X.push(n(J.filePath,$,W.path,"publint/exports-module-should-be-esm",`${$0(W.path)} should be ESM, but the code is written in CJS.`,"error",'The "module" condition is only used by bundlers and must contain ESM code.'))});return X}};import{existsSync as f1}from"fs";import{dirname as TG,isAbsolute as EG,resolve as DG}from"path";function r7($,J){let Z=J;while(Z.startsWith("./"))Z=Z.slice(2);let X=Z.split("/")[0];if(!X||X===".."||X.startsWith("."))return!1;let Y=EG(J)?TG(J).split("/")[0]||"/":DG($,X);return!f1(Y)}var l7={meta:{docs:"Ensure files referenced in package.json exist",recommended:!0},check($,J){let Z=t($);if(!Z)return[];let X=[],Y=h0(J.filePath),z=["main","module","types","typings","unpkg","jsdelivr"];for(let W of z){let[K,H]=i(Z,W);if(K==null||typeof K!=="string")continue;if(r7(Y,K))continue;let V=I0(Y,K);if(!UX(V))X.push(n(J.filePath,$,H,"publint/file-does-not-exist",`${$0(H)} is "${K}" but the file does not exist.`,"error","The referenced file path cannot be found. Check the path for typos."))}let[Q,G]=i(Z,"bin");if(Q!=null){if(typeof Q==="string")qX(Q,G,X,J.filePath,$,Y);else if(typeof Q==="object"){for(let W of Object.keys(Q))if(typeof Q[W]==="string")qX(Q[W],G.concat(W),X,J.filePath,$,Y)}}let[q,U]=i(Z,"exports");if(q!=null)U0(q,U,!1,(W,K)=>{if(typeof W!=="string")return;if(!W.startsWith("./")&&!W.startsWith("../"))return;if(W.includes("*"))return;if(r7(Y,W))return;let H=I0(Y,W);if(!f1(H))X.push(n(J.filePath,$,K.path,"publint/file-does-not-exist",`${$0(K.path)} is "${W}" but the file does not exist.`,"error","The referenced file path cannot be found. Check the path for typos."))});return X}};function qX($,J,Z,X,Y,z){if(r7(z,$))return;let Q=I0(z,$);if(!UX(Q))Z.push(n(X,Y,J,"publint/file-does-not-exist",`${$0(J)} is "${$}" but the file does not exist.`,"error","The referenced file path cannot be found. Check the path for typos."))}function UX($){if(f1($))return!0;if(f1(`${$}.js`))return!0;if(f1(`${$}/index.js`))return!0;return!1}import{existsSync as RG,readFileSync as OG}from"fs";import{extname as LG}from"path";var a7={meta:{docs:"Ensure file code format matches its extension and package type",recommended:!0},check($,J){let Z=t($);if(!Z)return[];let X=[],Y=h0(J.filePath),z=Z.type,[Q,G]=i(Z,"main");if(Q!=null&&typeof Q==="string")WX(Q,G,Y,z,X,J.filePath,$);let[q,U]=i(Z,"exports");if(q!=null)U0(q,U,!1,(W,K)=>{if(typeof W!=="string")return;if(!W.startsWith("./")&&!W.startsWith("../"))return;if(W.includes("*"))return;if(K.path.includes("browser"))return;WX(W,K.path,Y,z,X,J.filePath,$)});return X}};function WX($,J,Z,X,Y,z,Q){let G=I0(Z,$);if(!RG(G))return;if(!a0($))return;let q;try{q=OG(G,"utf8")}catch{return}let U=X1(q);if(U==="unknown"||U==="mixed")return;let W=$X(G,X);if(U===W)return;let K=LG(G),H=ZX(U),A=(JX(K)?"FILE_INVALID_EXPLICIT_FORMAT":"FILE_INVALID_FORMAT")==="FILE_INVALID_EXPLICIT_FORMAT"?`${$0(J)} is "${$}" and ends with the ${K} extension, but the code is written in ${U}. Consider using the ${H} extension.`:`${$0(J)} is "${$}" and is written in ${U}, but is interpreted as ${W}. Consider using the ${H} extension.`;Y.push(n(z,Q,J,"publint/file-invalid-format",A,"warning",`The file's code format (${U}) doesn't match the expected format (${W}) based on its extension and package type.`))}import{existsSync as PG,readFileSync as CG}from"fs";var s7={meta:{docs:'Ensure the "module" field points to an ESM file',recommended:!0},check($,J){let Z=t($);if(!Z)return[];let[X,Y]=i(Z,"module");if(X==null||typeof X!=="string")return[];let z=h0(J.filePath),Q=I0(z,X);if(!PG(Q))return[];if(!a0(X))return[];let G;try{G=CG(Q,"utf8")}catch{return[]}if(X1(G)==="CJS")return[n(J.filePath,$,Y,"publint/module-should-be-esm",`${$0(Y)} should be ESM, but the code is written in CJS.`,"error",'The "module" field is intended for ESM output used by bundlers. It should point to an ESM file.')];return[]}};var KX={name:"publint",rules:{"use-type":A0(d7),"local-dependency":A0(m7),"deprecated-field-jsnext":A0(C7),"has-module-but-no-exports":A0(g7),"field-invalid-value-type":A0(f7),"exports-types-should-be-first":A0(b7),"exports-default-should-be-last":A0(I7),"exports-module-should-precede-require":A0(y7),"exports-value-invalid":A0(k7),"exports-missing-root-entrypoint":A0(v7),"exports-fallback-array-use":A0(S7),"imports-key-invalid":A0(p7),"imports-value-invalid":A0(u7),"imports-default-should-be-last":A0(x7),"imports-module-should-precede-require":A0(h7),"file-does-not-exist":A0(l7),"file-invalid-format":A0(a7),"module-should-be-esm":A0(s7),"bin-file-not-executable":A0(o7),"exports-module-should-be-esm":A0(c7)}};var HX={meta:{docs:"Ensure all imports appear before other statements",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1,z=0;for(let Q=0;Q<X.length;Q++){let G=X[Q].trim();if(!G||G.startsWith("//")||G.startsWith("/*")||G.startsWith("*"))continue;let q=G.match(/^\s*import\s+/);if(!q&&G.length>0){if(Y=!0,z===0)z=Q+1}if(Y&&q)Z.push({filePath:J.filePath,line:Q+1,column:1,ruleId:"import/first",message:"Import statement must appear before other statements",severity:"error"})}return Z}};var VX={meta:{docs:"Disallow duplicate specifier names in a single import declaration"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.match(/^\s*import\s*\{([^}]*)\}\s*from\s*['"][^'"]+['"]/);if(!Q)continue;let q=Q[1].split(",").map((W)=>W.trim()).filter(Boolean).map((W)=>W.split(/\s+as\s+/i)[0].trim()),U=new Set;for(let W of q){if(U.has(W)){Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,z.indexOf(W)+1),ruleId:"pickier/import-dedupe",message:"Expect no duplication in imports",severity:"warning"});break}U.add(W)}}return Z}};import{existsSync as IG,readFileSync as SG}from"fs";import{dirname as vG,resolve as yG}from"path";var AX={meta:{docs:"Ensure named imports correspond to a named export in the remote file",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=vG(J.filePath);for(let z=0;z<X.length;z++){let G=X[z].match(/\bimport\s+\{([^}]+)\}\s+from\s+['"]([^'"]+)['"]/);if(G){let q=G[1].split(",").map((H)=>H.trim().split(/\s+as\s+/)[0].trim()),U=G[2];if(!U.startsWith(".")&&!U.startsWith("/"))continue;let W=[".ts",".tsx",".js",".jsx",""],K="";for(let H of W){let V=yG(Y,U+H);if(IG(V)){K=SG(V,"utf8");break}}if(K)for(let H of q){let V=new RegExp(`\\bexport\\s+(?:const|let|var|function|class)\\s+${H}\\b`),A=new RegExp(`\\bexport\\s+\\{[^}]*\\b${H}\\b[^}]*\\}`);if(![V,A].some((w)=>w.test(K)))Z.push({filePath:J.filePath,line:z+1,column:1,ruleId:"import/named",message:`'${H}' not found in '${U}'`,severity:"error"})}}}return Z}};import{existsSync as _X,readFileSync as bG}from"fs";import{dirname as FX,resolve as wX}from"path";var BX={meta:{docs:"Ensure imports don't create circular dependencies",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=J.filePath,z=new Set,Q=new Set;function G(U,W){if(Q.has(U))return!0;if(z.has(U))return!1;z.add(U),Q.add(U);try{let K=bG(U,"utf8"),H=q(K,FX(U));for(let V of H)if(G(V,[...W,V]))return!0}catch{}return Q.delete(U),!1}function q(U,W){let K=[],H=/\bimport(?:\s{2,}|\s+\S.*?(?:[\n\r\u2028\u2029]\s*|[\t\v\f \xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF]))from\s+['"]([^'"]+)['"]/g,V;for(V=H.exec(U);V!==null;V=H.exec(U)){let A=V[1];if(A.startsWith(".")||A.startsWith("/")){let _=[".ts",".tsx",".js",".jsx",""];for(let F of _){let w=wX(W,A+F);if(_X(w)){K.push(w);break}}}}return K}for(let U=0;U<X.length;U++){let K=X[U].match(/\bimport(?:\s{2,}|\s+\S.*?(?:[\n\r\u2028\u2029]\s*|[\t\v\f \xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF]))from\s+['"]([^'"]+)['"]/);if(K){let H=K[1];if(H.startsWith(".")||H.startsWith("/")){let V=[".ts",".tsx",".js",".jsx",""],A="";for(let _ of V){let F=wX(FX(Y),H+_);if(_X(F)){A=F;break}}if(A){if(z.clear(),Q.clear(),Q.add(Y),G(A,[Y,A]))Z.push({filePath:J.filePath,line:U+1,column:1,ruleId:"import/no-cycle",message:"Dependency cycle detected",severity:"error"})}}}}return Z}};var MX={meta:{docs:"Disallow duplicate module imports - all imports from the same module should be combined"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=new Map,z=!1;for(let Q=0;Q<X.length;Q++){let G=X[Q];if(z){let V=G.indexOf("*/");if(V>=0)G=G.slice(V+2),z=!1;else continue}let q=G.indexOf("/*"),U=G.indexOf("//");if(q>=0&&(U===-1||q<U)){let V=G.indexOf("*/",q+2);if(V>=0)G=G.slice(0,q)+G.slice(V+2);else z=!0,G=G.slice(0,q)}if(U>=0)G=G.slice(0,U);let W=G.trim();if(!W)continue;let K=W.match(/^import\s+(?:type\s+)?(?:\{[^}]*\}|[\w$]+(?:\s*,\s*\{[^}]*\})?|\*\s+as\s+[\w$]+)\s+from\s+(['"`])(.+?)\1/);if(K){let V=K[2];if(Y.has(V)){let A=Y.get(V);Z.push({filePath:J.filePath,line:Q+1,column:1,ruleId:"no-duplicate-imports",message:`'${V}' imported multiple times (also imported on line${A.length>1?"s":""} ${A.join(", ")})`,severity:"error",help:`Combine all imports from '${V}' into a single import statement`}),A.push(Q+1)}else Y.set(V,[Q+1])}let H=W.match(/^export\s+(?:type\s+)?(?:\{[^}]*\}|\*(?:\s+as\s+[\w$]+)?)\s+from\s+(['"`])(.+?)\1/);if(H){let V=H[2],A=`export:${V}`;if(Y.has(A)){let _=Y.get(A);Z.push({filePath:J.filePath,line:Q+1,column:1,ruleId:"no-duplicate-imports",message:`'${V}' re-exported multiple times (also exported on line${_.length>1?"s":""} ${_.join(", ")})`,severity:"error",help:`Combine all re-exports from '${V}' into a single export statement`}),_.push(Q+1)}else Y.set(A,[Q+1])}}return Z}};var jX={meta:{docs:"Disallow importing from dist directories"},check:($,J)=>{let Z=[],X=new RegExp(`^\\s*import\\s[^;]*?from\\s*['"]([^'"]+)['"]`,"m"),Y=$.split(/\r?\n/);for(let z=0;z<Y.length;z++){let Q=Y[z],G=Q.match(X);if(!G)continue;let q=G[1];if(q==="dist"||(q.startsWith(".")||q.startsWith("/"))&&/(?:^|\/)dist(?:\/.|$)/.test(q))Z.push({filePath:J.filePath,line:z+1,column:Math.max(1,Q.indexOf(q)+1),ruleId:"pickier/no-import-dist",message:`Do not import modules in \`dist\` folder, got ${q}`,severity:"error"})}return Z}};var NX={meta:{docs:"Disallow importing from node_modules by explicit path"},check:($,J)=>{let Z=[],X=new RegExp(`^\\s*import\\s[^;]*?from\\s*['"]([^'"]+)['"]`,"m"),Y=/require\(\s*['"]([^'"]+)['"]\s*\)/,z=$.split(/\r?\n/);for(let Q=0;Q<z.length;Q++){let G=z[Q],q=G.match(X),U=G.match(Y),W=q?.[1]||U?.[1];if(!W)continue;if(W.includes("/node_modules/")){let K=Math.max(1,G.indexOf(W)+1);Z.push({filePath:J.filePath,line:Q+1,column:K,ruleId:"pickier/no-import-node-modules-by-path",message:"Do not import modules in `node_modules` folder by path",severity:"error"})}}return Z}};import{existsSync as kG}from"fs";import{dirname as fG,join as gG,resolve as xG}from"path";var TX={meta:{docs:"Ensure imports point to a file/module that can be resolved",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=fG(J.filePath);for(let z=0;z<X.length;z++){let Q=X[z],G=[...Q.matchAll(/\bimport(?:\s{2,}|\s+\S.*?(?:[\n\r\u2028\u2029]\s*|[\t\v\f \xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF]))from\s+['"]([^'"]+)['"]/g),...Q.matchAll(/\bimport\s*\(\s*['"]([^'"]+)['"]\s*\)/g),...Q.matchAll(/\brequire\s*\(\s*['"]([^'"]+)['"]\s*\)/g)];for(let q of G){let U=q[1];if(!U.startsWith(".")&&!U.startsWith("/"))continue;let W=[],K=[".ts",".tsx",".js",".jsx",".mjs",".cjs",""];for(let V of K){let A=xG(Y,U+V);W.push(A),W.push(gG(A,`index${V}`))}if(!W.some((V)=>kG(V)))Z.push({filePath:J.filePath,line:z+1,column:1,ruleId:"import/no-unresolved",message:`Unable to resolve path to module '${U}'`,severity:"error"})}}return Z}};function EX($,J,Z){let X=Z.order==="desc"?-1:1,Y=Z.type||"alphabetical",z=Z.ignoreCase?$.toLowerCase():$,Q=Z.ignoreCase?J.toLowerCase():J;if(Y==="line-length")return(z.length-Q.length)*X;if(Y==="natural")return z.localeCompare(Q,void 0,{numeric:!0,sensitivity:"base"})*X;if(Y==="unsorted")return 0;return z.localeCompare(Q)*X}var pG=new RegExp(`^export\\s+\\{[^}]*\\}\\s+from\\s+['"][^'"]+['"];?\\s*$`);function C8($){return pG.test($)}var DX={meta:{docs:"Ensure contiguous export statements are sorted consistently."},check:($,J)=>{let Z=[],X=J.config.pluginRules?.["pickier/sort-exports"]?.[1]||{},Y=$.split(/\r?\n/),z=0;while(z<Y.length){while(z<Y.length&&!C8(Y[z]))z++;if(z>=Y.length)break;let Q=[],G=z;while(G<Y.length){let q=Y[G];if(C8(q)){Q.push({idx:G,line:q}),G++;continue}if(X.partitionByNewLine&&q.trim()==="")break;else break}if(Q.length>1){let q=Q.map((K)=>K.line),U=[...q].sort((K,H)=>EX(K,H,X));if(!q.every((K,H)=>K===U[H])){let K=q.findIndex((V,A)=>V!==U[A]),H=Q[K]?.idx??Q[0].idx;Z.push({filePath:J.filePath,line:H+1,column:1,ruleId:"pickier/sort-exports",message:"Export statements are not sorted.",severity:"warning"})}}z=G+1}return Z},fix:($,J)=>{let Z=J.config.pluginRules?.["pickier/sort-exports"]?.[1]||{},Y=[...$.split(/\r?\n/)],z=0;while(z<Y.length){while(z<Y.length&&!C8(Y[z]))z++;if(z>=Y.length)break;let Q=[],G=z;while(G<Y.length){let q=Y[G];if(C8(q)){Q.push(G),G++;continue}if(Z.partitionByNewLine&&q.trim()==="")break;else break}if(Q.length>1){let q=Q.map((K)=>Y[K]),U=[...q].sort((K,H)=>EX(K,H,Z));if(!q.every((K,H)=>K===U[H]))Q.forEach((K,H)=>{Y[K]=U[H]})}z=G+1}return Y.join(`
123
- `)}};var RX={meta:{docs:"Enforce sorted TypeScript heritage clauses (extends/implements lists)"},check:($,J)=>{let Z=J.options||{},X=Z.type||"alphabetical",Y=Z.order||"asc",z=Z.ignoreCase!==!1,Q=Array.isArray(Z.groups)?Z.groups:[],G=Z.customGroups||{},q=$.split(/\r?\n/),U=[],W=(M)=>Y==="asc"?M:-M,K=(M,E)=>(z?M.toLowerCase():M).localeCompare(z?E.toLowerCase():E),H=(M,E)=>(z?M.toLowerCase():M).localeCompare(z?E.toLowerCase():E,void 0,{numeric:!0}),V=(M,E)=>{if(X==="line-length")return W(M.length-E.length);if(X==="natural")return W(H(M,E));if(X==="unsorted")return 0;return W(K(M,E))},A=Object.fromEntries(Object.entries(G).map(([M,E])=>{let S=(Array.isArray(E)?E:[E]).map((f)=>new RegExp(f));return[M,S]})),_=[];for(let M of Q)if(Array.isArray(M))_.push(...M);else _.push(M);if(!_.includes("unknown"))_.push("unknown");let F=(M)=>{for(let[E,R]of Object.entries(A))if(R.some((S)=>S.test(M)))return E;return"unknown"},w=(M)=>{let E=[],R=0,S="";for(let f=0;f<M.length;f++){let O=M[f];if(O==="<")R++;else if(O===">")R=Math.max(0,R-1);if(O===","&&R===0){E.push(S.trim()),S="";continue}S+=O}if(S.trim())E.push(S.trim());return E},j=(M)=>{let E=M.trim(),R=E.match(/^([A-Z_$][\w$.]*)/i);return R?R[1]:E},D=(M,E)=>{let R=w(E);if(R.length<=1)return;let S=R.map(j),f=S.map(F),O=S.map((P,C)=>({n:P,g:f[C],i:C})).sort((P,C)=>{let I=_.indexOf(P.g),L=_.indexOf(C.g);if(I!==L)return I-L;return V(P.n,C.n)}).map((P)=>P.n);if(!S.every((P,C)=>P===O[C]))U.push({filePath:J.filePath,line:M,column:1,ruleId:"sort-heritage-clauses",message:"Heritage clauses are not sorted",severity:"warning"})};for(let M=0;M<q.length;M++){let E=q[M],R=E.match(/^\s*interface\s+[A-Za-z_$][^{]*\bextends\s+(.+?)\s*\{/);if(R)D(M+1,R[1]);let S=E.match(/^\s*class\s+[A-Za-z_$][^{]*\bimplements\s+(.+?)\s*\{/);if(S)D(M+1,S[1])}return U}};var OX={meta:{docs:"Require object keys to be sorted (ESLint-compatible core rule subset)"},check:()=>{return[]}};var LX={meta:{docs:"Enforce sorted named imports within each import statement"},check:($,J)=>{let Z=J.options||{},X=Z.type||"alphabetical",Y=Z.order||"asc",z=Z.ignoreCase!==!1,Q=Boolean(Z.ignoreAlias),G=$.split(/\r?\n/),q=[],U=(W,K)=>{let H=0;if(X==="line-length")H=W.length-K.length;else{let V=z?W.toLowerCase():W,A=z?K.toLowerCase():K;H=V.localeCompare(A)}return Y==="asc"?H:-H};for(let W=0;W<G.length;W++){let H=G[W].match(/^\s*import\s+\{([^}]*)\}\s+from\s+['"][^'"]+['"]/);if(!H)continue;let A=H[1].split(",").map((j)=>j.trim()).filter(Boolean);if(A.length<=1)continue;let _=A.map((j)=>{let D=j.replace(/^type\s+/,""),M=D.match(/^([\w$]+)\s+as\s+([\w$]+)$/);if(M)return Q?M[2]:M[1];let E=D.match(/^([\w$]+)$/);return E?E[1]:D}),F=[..._].sort(U);if(!_.every((j,D)=>j===F[D]))q.push({filePath:J.filePath,line:W+1,column:1,ruleId:"sort-named-imports",message:"Named imports are not sorted",severity:"warning"})}return q}};var PX={meta:{docs:"Enforce sorted object keys"},check:($,J)=>{let Z=J.options||{},X=Z.type||"alphabetical",Y=Z.order||"asc",z=Z.ignoreCase!==!1,Q=Boolean(Z.partitionByNewLine),G=$.split(/\r?\n/),q=[],U=(K,H)=>{let V=0;if(X==="line-length")V=K.length-H.length;else{let A=z?K.toLowerCase():K,_=z?H.toLowerCase():H;V=A.localeCompare(_)}return Y==="asc"?V:-V},W=0;while(W<G.length){let K=G[W],H=K.indexOf("{");if(H!==-1){let V=K.slice(0,H);if(/=\s*$|\(\s*$|\breturn\s*$/.test(V)){let A=0,_=W,F=W;for(;F<G.length;F++){for(let w of G[F])if(w==="{")A++;else if(w==="}")A--;if(A===0)break}if(F>_){let w=G.slice(_+1,F),j=[],D={startLine:_+2,props:[]},M=()=>{if(D.props.length)j.push(D);D={startLine:0,props:[]}};for(let E=0;E<w.length;E++){let R=w[E];if(Q&&/^\s*$/.test(R)){M();continue}if(/^\s*\.\.\./.test(R))continue;if(/\{|\}/.test(R))continue;let S=R.match(/^\s*['"]?([\w$-]+)['"]?\s*:/);if(S){if(D.startLine===0)D.startLine=_+2+E;D.props.push({key:S[1],line:_+2+E})}}M();for(let E of j){let R=E.props.map((O)=>O.key),S=[...R].sort(U);if(!(R.length<=1||R.every((O,h)=>O===S[h]))&&E.props.length>0){let O=E.props[0];q.push({filePath:J.filePath,line:O.line,column:1,ruleId:"sort-objects",message:"Object keys are not sorted",severity:"warning"})}}W=F+1;continue}}}W++}return q}};var CX={meta:{docs:"Enforce top-level functions to use function declarations"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y];if(/^\s+/.test(z))continue;if(/^\s*(?:\/\/|\/\*)/.test(z))continue;let Q=z.match(/^const\s+([A-Za-z_$][\w$]*)\s*=(.*)$/);if(!Q)continue;let G=Q[2].trim();if(/^\(?[A-Z_$,]*(?:\)\s*)?=>/i.test(G)||/^function\b/.test(G)){let q=z.indexOf("const")+1;Z.push({filePath:J.filePath,line:Y+1,column:q,ruleId:"pickier/top-level-function",message:"Top-level functions should be declared with function keyword",severity:"warning"});continue}if(G.trim().length===0||/[,({]$/.test(G.trim())){let q=X[Y+1]||"";if(/^\s*(?:\(?[A-Za-z_$,]*(?:\)\s*)?=>|function\b)/.test(q)){let U=z.indexOf("const")+1;Z.push({filePath:J.filePath,line:Y+1,column:U,ruleId:"pickier/top-level-function",message:"Top-level functions should be declared with function keyword",severity:"warning"})}}}return Z}};var hG=[[/^(block|inline|inline-block|flex|inline-flex|grid|inline-grid|flow-root|contents|hidden|table|table-caption|table-cell|table-column|table-column-group|table-footer-group|table-header-group|table-row-group|table-row|list-item|subgrid)$/,0],[/^(container|columns|break-after|break-before|break-inside|box-decoration|box-border|box-content|float|clear|isolation|object|overflow|overscroll|position|inset|top|right|bottom|left|start|end|z-|aspect|order)/,1],[/^(static|fixed|absolute|relative|sticky)$/,1],[/^(visible|invisible|collapse)$/,1],[/^(basis|flex-|grow|shrink|order|grid-|col-|row-|auto-cols|auto-rows|gap|justify|items|content|self|place)/,2],[/^(p|px|py|ps|pe|pt|pr|pb|pl|m|mx|my|ms|me|mt|mr|mb|ml|space|indent)-/,3],[/^(-?(p|px|py|ps|pe|pt|pr|pb|pl|m|mx|my|ms|me|mt|mr|mb|ml|space|indent)-)/,3],[/^(w-|h-|min-w|max-w|min-h|max-h|size-)/,4],[/^(font|text|tracking|leading|list|placeholder|vertical|whitespace|break|hyphens|content|truncate|overflow-ellipsis|overflow-clip|line-clamp|underline|overline|line-through|no-underline|uppercase|lowercase|capitalize|normal-case|italic|not-italic|ordinal|slashed-zero|lining-nums|oldstyle-nums|proportional-nums|tabular-nums|diagonal-fractions|stacked-fractions|normal-nums|antialiased|subpixel-antialiased)/,5],[/^(bg-|from-|via-|to-|gradient-)/,6],[/^(border|rounded|outline|ring|divide|accent)/,7],[/^(shadow|opacity|mix-blend|bg-blend)/,8],[/^(blur|brightness|contrast|drop-shadow|grayscale|hue-rotate|invert|saturate|sepia|backdrop)/,9],[/^(border-collapse|border-separate|border-spacing|table-auto|table-fixed|caption)/,10],[/^(transition|duration|ease|delay|animate)/,11],[/^(scale|rotate|translate|skew|origin|transform|perspective)/,12],[/^(appearance|cursor|caret|pointer-events|resize|scroll|snap|touch|select|will-change)/,13],[/^(fill|stroke)/,14],[/^(sr-only|not-sr-only)$/,15]],uG=/^([a-z0-9][-a-z0-9]{0,50}:)+(?!\[)/;function mG($){let J=0;while(J<$.length){if($[J]==="[")break;let Z=$.indexOf(":",J);if(Z===-1)break;if($[Z+1]==="[")break;J=Z+1}return $.slice(J)}function dG($){let J=mG($);if(J.startsWith("!"))J=J.slice(1);for(let[Z,X]of hG)if(Z.test(J))return X;return 99}function oG($){let J=$.match(uG);if(!J)return 0;let Z=J[0].slice(0,-1).split(":"),X={sm:1,md:2,lg:3,xl:4,"2xl":5},Y=10;for(let z of Z)if(X[z]!==void 0)Y+=X[z];else Y+=20;return Y}var IX=new Map;function SX($){let J=IX.get($);if(J)return J;let Z={group:dG($),variant:oG($)};return IX.set($,Z),Z}function n7($){return[...$].sort((J,Z)=>{let X=SX(J),Y=SX(Z),z=X.group,Q=Y.group;if(z!==Q)return z-Q;let G=X.variant,q=Y.variant;if(G!==q)return G-q;return J.localeCompare(Z)})}var cG=/\b(?:class|className|:class)\s*=\s*(?:"([^"]*?)"|'([^']*?)')/g,rG=/\b(?:class|className|:class)\s*=\s*\{`([^`]*?)`\}/g,lG=/\b(?:clsx|cn|tw|cva|tv)\s*\(\s*(?:"([^"]*?)"|'([^']*?)')/g;function aG($){let J=$.replace(/\[[^\]]*\]/g,"");if(/['"`]/.test(J))return!0;if(/[{}()=]/.test(J))return!0;if(/ \? | && | \|\| /.test(J))return!0;if(/\b(?:true|false|null|undefined|function|return|typeof|instanceof)\b/.test(J))return!0;return!1}function vX($){let J=[];if(!$.includes("class")&&!$.includes("clsx")&&!$.includes("cn(")&&!$.includes("tw(")&&!$.includes("cva(")&&!$.includes("tv("))return J;for(let Z of[cG,rG,lG]){Z.lastIndex=0;let X;while((X=Z.exec($))!==null){let Y=X[1]??X[2]??"";if(!Y.trim())continue;if(aG(Y))continue;let z=$.indexOf(Y,X.index);if(z===-1)continue;J.push({value:Y,start:z,end:z+Y.length})}}return J.sort((Z,X)=>Z.start-X.start),J}function yX($){let J=[],Z="",X=0;for(let Y of $)if(Y==="[")X++,Z+=Y;else if(Y==="]")X=Math.max(0,X-1),Z+=Y;else if(/\s/.test(Y)&&X===0){if(Z)J.push(Z),Z=""}else Z+=Y;if(Z)J.push(Z);return J}function bX($){let J=n7($);return $.every((Z,X)=>Z===J[X])}var kX={meta:{docs:"Enforce consistent Tailwind CSS class ordering (layout \u2192 spacing \u2192 typography \u2192 etc.).",recommended:!0,editsStringContent:!0},check:($,J)=>{let Z=[],X=vX($);for(let{value:Y,start:z}of X){let Q=yX(Y);if(Q.length<2)continue;if(!bX(Q)){let G=$.slice(0,z),q=(G.match(/\n/g)??[]).length+1,U=G.lastIndexOf(`
124
- `),W=U===-1?z+1:z-U;Z.push({filePath:J.filePath,line:q,column:W,ruleId:"pickier/sort-tailwind-classes",message:`Tailwind classes are not in the recommended order. Expected: "${n7(Q).join(" ")}"`,severity:"warning",help:"Run with --fix to automatically sort Tailwind classes, or reorder them manually."})}}return Z},fix:($)=>{let J=vX($);if(J.length===0)return $;let Z=[...J].reverse(),X=$;for(let{value:Y,start:z,end:Q}of Z){let G=yX(Y);if(G.length<2||bX(G))continue;let q=n7(G).join(" ");X=X.slice(0,z)+q+X.slice(Q)}return X}};var fX={name:"pickier",rules:{"sort-exports":B(DX),"sort-objects":B(PX),"sort-imports":B(P8),"sort-named-imports":B(LX),"sort-heritage-clauses":B(RX),"sort-keys":B(OX),"import-dedupe":B(VX),"import-first":B(HX),"import-named":B(AX),"import-no-cycle":B(BX),"import-no-unresolved":B(TX),"no-import-dist":B(jX),"no-import-node-modules-by-path":B(NX),"no-duplicate-imports":B(MX),"top-level-function":B(CX),"sort-tailwind-classes":kX,"prefer-const":B(D8),"prefer-template":B(R8),"no-unused-vars":B(i0)}};var gX={name:"quality",rules:{"default-case":B(m$),eqeqeq:B(d$),"no-alert":B(r$),"no-await-in-loop":B(l$),"no-caller":B(a$),"no-case-declarations":B(s$),"no-else-return":B(n$),"no-empty":B(i$),"no-empty-function":B(t$),"no-eval":B(e$),"no-extend-native":B($8),"no-global-assign":B(J8),"no-implied-eval":B(X8),"no-iterator":B(Y8),"no-new":B(z8),"no-new-func":B(Q8),"no-new-wrappers":B(G8),"no-octal":B(q8),"no-param-reassign":B(U8),"no-proto":B(W8),"no-return-assign":B(K8),"no-shadow":B(V8),"no-throw-literal":B(A8),"no-use-before-define":B(_8),"no-useless-call":B(F8),"no-with":B(N8),"require-await":B(E8),complexity:B(u$),"max-depth":B(o$),"max-lines-per-function":B(c$),"no-extra-boolean-cast":B(Z8),"no-lonely-if":B(y1),"no-sequences":B(H8),"no-useless-concat":B(w8),"no-useless-escape":B(B8),"no-useless-rename":B(M8),"no-useless-return":B(b1),"no-var":B(j8),"prefer-arrow-callback":B(T8)}};var xX={meta:{docs:"Detects potentially super-linear backtracking patterns in regex literals (heuristic)"},check:($,J)=>{let Z=[],X=/\/[^/\\\n]*(?:\\.[^/\\\n]*)*\//g,Y=(K,H,V)=>{let A=$.slice(0,K),_=(A.match(/\n/g)||[]).length+1,F=K-A.lastIndexOf(`
125
- `);Z.push({filePath:J.filePath,line:_,column:F,ruleId:"no-super-linear-backtracking",message:V,severity:"error"})},z=[],Q=/\/\*[\s\S]*?\*\//g,G;while(G=Q.exec($))z.push({start:G.index,end:G.index+G[0].length});let q=/\/\/[^\n]*/g,U;while(U=q.exec($))z.push({start:U.index,end:U.index+U[0].length});let W;while(W=X.exec($)){let K=W[0],H=W.index;if(z.some((w)=>H>=w.start&&H<w.end))continue;if(H>0){let w=$[H-1];if(w===")"||w==="]"||w==="."||/[\w$]/.test(w))continue;let j=K.slice(1,K.lastIndexOf("/"));if(/^\s+\w/.test(j)&&/\w\s*\)/.test(j))continue}let A=K.slice(1,K.lastIndexOf("/")).replace(/\[.*?\]/g,"");if(A.includes(".+?\\s*")||A.includes("\\s*.+?")||A.includes(".*\\s*")||A.includes("\\s*.*")){Y(H,K.length,"The combination of ' .*' or ' .+?' with '\\s*' can cause super-linear backtracking due to exchangeable characters");continue}let F=A.replace(/\s+/g,"");if(/(?:\.\*\??){2,}/.test(F)||/(?:\.\+\??){2,}/.test(F)||/\.\*\??\.\+\?|\.\+\??\.\*\?/.test(F)){Y(H,K.length,"Multiple adjacent unlimited wildcard quantifiers can cause super-linear backtracking");continue}if(/\((?:\?:)?[^)]*?[+*][^)]*\)\s*[+*]/.test(A.replace(/\\[()]/g,"_"))){Y(H,K.length,"Nested unlimited quantifiers detected (e.g., (.+)+) which can cause catastrophic backtracking");continue}}return Z}};function sG($,J){let Z=J-1;while(Z>=0&&($[Z]===" "||$[Z]==="\t"))Z--;let X=Z>=0?$[Z]:"",Y="=(<>!&|?:;,{[+(~^%*/";if(!(Z<0||Y.includes(X)||/\b(?:return|typeof|void|delete|throw|new|in|of|case)\s*$/.test($.slice(Math.max(0,Z-5),Z+1))))return null;let Q=J+1,G=!1,q=!1,U=-1;while(Q<$.length){let _=$[Q];if(q)q=!1;else if(_==="\\")q=!0;else if(_==="["){if(!G)G=!0}else if(_==="]"){if(G)G=!1}else if(_==="/"&&!G){U=Q;break}else if(_===`
126
- `)break;Q++}if(U<=J)return null;let W=$.slice(J+1,U),K=U+1;while(K<$.length&&/[gimsuvy]/.test($[K]))K++;if(/\\[1-9]/.test(W))return null;let H=0,V=-1,A=!1;for(let _=0;_<W.length;_++){if(W[_]==="\\"){_++;continue}if(W[_]==="["&&!A){A=!0;continue}if(W[_]==="]"&&A){A=!1;continue}if(A)continue;if(W[_]==="("&&W.slice(_+1,_+3)!=="?:"&&W.slice(_+1,_+3)!=="?="&&W.slice(_+1,_+3)!=="?!"&&W.slice(_+1,_+4)!=="?<="&&W.slice(_+1,_+4)!=="?<!"){if(V<0)V=_;H++}}if(H===0)return null;return{patternStart:J,patternEnd:K,pattern:W,capCount:H,firstCapOffset:V}}function nG($,J,Z){let X=Z;while(X<$.length&&($[X]===" "||$[X]==="\t"))X++;if($[X]==="."){let q=$.slice(X+1,X+20);if(/^test\s*\(/.test(q))return!1;if(/^exec\s*\(/.test(q))return!0}let Y=J-1;while(Y>=0&&($[Y]===" "||$[Y]==="\t"))Y--;if($[Y]==="("){let U=Y-1;while(U>=0&&($[U]===" "||$[U]==="\t"))U--;let W=$.slice(Math.max(0,U-20),U+1);if(/\.match\s*$/.test(W))return!0;if(/\.matchAll\s*$/.test(W))return!0;if(/\.exec\s*$/.test(W))return!0;if(/\.replace\s*$/.test(W))return!0;if(/\.replaceAll\s*$/.test(W))return!0;if(/\.split\s*$/.test(W))return!0;if(/\.search\s*$/.test(W))return!1;if(/\.test\s*$/.test(W))return!1}let z=$.lastIndexOf(`
127
- `,J)+1,G=$.slice(z,J).trim().match(/(?:const|let|var)\s+(\w+)\s*=\s*$/);if(G){let q=G[1],U=$.slice(Z),W=new RegExp(`\\b${q}\\.exec\\s*\\(`),K=new RegExp(`\\b${q}\\.test\\s*\\(`),H=new RegExp(`\\.match(?:All)?\\s*\\(\\s*${q}\\s*\\)`),V=new RegExp(`\\.replace(?:All)?\\s*\\(\\s*${q}`),A=W.test(U),_=H.test(U),F=V.test(U),w=K.test(U);if(A||_||F)return!0;if(w)return!1;return!0}return!0}function iG($,J){let Z=J-1;while(Z>=0&&($[Z]===" "||$[Z]==="\t"))Z--;let X=Z>=0?$[Z]:"",Y="=(<>!&|?:;,{[+(~^%*/";if(!(Z<0||Y.includes(X)||/\b(?:return|typeof|void|delete|throw|new|in|of|case)\s*$/.test($.slice(Math.max(0,Z-5),Z+1))))return J+1;let Q=J+1,G=!1,q=!1;while(Q<$.length){let U=$[Q];if(q)q=!1;else if(U==="\\")q=!0;else if(U==="["){if(!G)G=!0}else if(U==="]"){if(G)G=!1}else if(U==="/"&&!G){Q++;while(Q<$.length&&/[gimsuvy]/.test($[Q]))Q++;return Q}else if(U===`
128
- `)break;Q++}return J+1}function tG($,J){let Z=[],X=J.filePath,Y=0;while(Y<$.length){let z=$[Y];if(z==="/"&&$[Y+1]==="/"){while(Y<$.length&&$[Y]!==`
129
- `)Y++;continue}if(z==="/"&&$[Y+1]==="*"){Y+=2;while(Y<$.length-1&&!($[Y]==="*"&&$[Y+1]==="/"))Y++;Y+=2;continue}if(z==="'"||z==='"'||z==="`"){let Q=z;Y++;while(Y<$.length){if($[Y]==="\\"){Y+=2;continue}if($[Y]===Q){Y++;break}Y++}continue}if(z==="/"){let Q=sG($,Y);if(!Q){let G=iG($,Y);if(G>Y+1)Y=G;else Y++;continue}if(!nG($,Q.patternStart,Q.patternEnd)){let G=Q.patternStart+1+(Q.firstCapOffset>=0?Q.firstCapOffset:0),q=$.slice(0,G),U=(q.match(/\r?\n/g)||[]).length+1,W=G-(q.lastIndexOf(`
130
- `)+1)+1;Z.push({filePath:X,line:U,column:W,ruleId:"regexp/no-unused-capturing-group",message:"Unused capturing group in regular expression; use non-capturing group (?:...) instead",severity:"error"})}Y=Q.patternEnd;continue}Y++}return Z}var pX={meta:{docs:"Flags regex literals with unused capturing groups (context-aware)",recommended:!1},check($,J){return tG($,J)}};var hX={meta:{docs:"Disallow lazy quantifiers that don't affect the matching behavior",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y];if(z.trim().startsWith("//")||z.trim().startsWith("/*")||z.trim().startsWith("*"))continue;let Q=/\/(?![/*])([^/\n\r\\]|\\.)+\/[gimsuvy]*/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){let q=G[0],U=q.slice(1,q.lastIndexOf("/"));if(/[+*?]\?\$$/.test(U))Z.push({filePath:J.filePath,line:Y+1,column:G.index+U.search(/[+*?]\?\$$/)+2,ruleId:"regexp/no-useless-lazy",message:"Lazy quantifier is useless before end-of-string anchor",severity:"error"});if(/[+*?]\?$/.test(U))Z.push({filePath:J.filePath,line:Y+1,column:G.index+U.length-1,ruleId:"regexp/no-useless-lazy",message:"Lazy quantifier is useless at the end of the pattern",severity:"error"})}}return Z}};var uX={name:"regexp",rules:{"no-super-linear-backtracking":B(xX),"no-unused-capturing-group":B(pX),"no-useless-lazy":B(hX)}};var mX={meta:{docs:"Use $() instead of backticks for command substitution",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z="",Q=!1;for(let G=0;G<X.length;G++){let q=X[G];if(Y){if(q.trim()===z)Y=!1;continue}let U=q.match(/<<-?\s*['"]?(\w+)['"]?/);if(U)Y=!0,z=U[1];if(q.replace(/^\s+/,"").startsWith("#"))continue;Q=!1;for(let K=0;K<q.length;K++){let H=q[K];if(H==="#"&&!Q)break;if(H==="\\"){K++;continue}if(H==="'"){Q=!Q;continue}if(Q)continue;if(H==="`"){Z.push({filePath:J.filePath,line:G+1,column:K+1,ruleId:"shell/command-substitution",message:"Use $(...) instead of backticks for command substitution",severity:"error",help:"Replace `cmd` with $(cmd) for better readability and nesting support"});for(K++;K<q.length&&q[K]!=="`";K++)if(q[K]==="\\")K++}}}return Z},fix($,J){let Z=$.split(/\r?\n/),X=[],Y=!1,z="";for(let Q of Z){if(Y){if(X.push(Q),Q.trim()===z)Y=!1;continue}let G=Q.match(/<<-?\s*['"]?(\w+)['"]?/);if(G)Y=!0,z=G[1];let q="",U=!1,W=0;while(W<Q.length){let K=Q[W];if(K==="#"&&!U){q+=Q.slice(W);break}if(K==="\\"){q+=Q.slice(W,W+2),W+=2;continue}if(K==="'"){U=!U,q+=K,W++;continue}if(U){q+=K,W++;continue}if(K==="`"){let H="";W++;while(W<Q.length&&Q[W]!=="`")if(Q[W]==="\\")H+=Q[W+1]||"",W+=2;else H+=Q[W],W++;W++,q+=`$(${H})`}else q+=K,W++}X.push(q)}return X.join(`
131
- `)}};var dX={meta:{docs:"Require error handling after cd commands",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z="";for(let Q=0;Q<X.length;Q++){let G=X[Q];if(Y){if(G.trim()===z)Y=!1;continue}let q=G.match(/<<-?\s*['"]?(\w+)['"]?/);if(q)Y=!0,z=q[1];let U=G.replace(/^\s+/,"");if(U.startsWith("#"))continue;let W=U.match(/^cd\s+/);if(!W)continue;let K=/\|\||&&/.test(G),H=/^\s*(?:if|elif|while|until)\s/.test(U)||/\bif\s+cd\b/.test(G),V=/\(.*\bcd\b.*\)/.test(G);if(!K&&!H&&!V)Z.push({filePath:J.filePath,line:Q+1,column:W.index+1,ruleId:"shell/no-cd-without-check",message:"cd without error handling \u2014 if it fails, subsequent commands run in the wrong directory",severity:"warning",help:"Use: cd dir || exit 1 (or || return 1 inside functions)"})}return Z}};var oX={meta:{docs:"Disallow use of eval in shell scripts",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z="";for(let Q=0;Q<X.length;Q++){let G=X[Q];if(Y){if(G.trim()===z)Y=!1;continue}let q=G.match(/<<-?\s*['"]?(\w+)['"]?/);if(q)Y=!0,z=q[1];if(G.replace(/^\s+/,"").startsWith("#"))continue;if(G.match(/(?:^|[;&|]\s*|^\s+)eval\s/)){let K=G.indexOf("eval");Z.push({filePath:J.filePath,line:Q+1,column:K+1,ruleId:"shell/no-eval",message:"Avoid using eval \u2014 it re-parses arguments and can lead to code injection",severity:"error",help:"Refactor to avoid eval. Consider using arrays for dynamic commands or indirect variable references with ${!var}"})}}return Z}};var cX={meta:{docs:"Flag exit inside subshells where it only exits the subshell",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z="",Q=0;for(let G=0;G<X.length;G++){let q=X[G];if(Y){if(q.trim()===z)Y=!1;continue}let U=q.match(/<<-?\s*['"]?(\w+)['"]?/);if(U)Y=!0,z=U[1];if(q.replace(/^\s+/,"").startsWith("#"))continue;let K=!1,H=!1;for(let V=0;V<q.length;V++){let A=q[V];if(A==="#"&&!K&&!H)break;if(A==="\\"&&!K){V++;continue}if(A==="'"&&!H){K=!K;continue}if(A==='"'&&!K){H=!H;continue}if(!K&&!H){if(A==="("&&V>0&&q[V-1]!=="$"&&q[V+1]!=="(")Q++;else if(A==="("&&V===0&&q[V+1]!=="(")Q++;else if(A===")"&&Q>0&&(V+1>=q.length||q[V+1]!==")"))Q--}}if(Q>0){let V=q.match(/\bexit\b/);if(V)Z.push({filePath:J.filePath,line:G+1,column:V.index+1,ruleId:"shell/no-exit-in-subshell",message:"exit inside a subshell only exits the subshell, not the script",severity:"warning",help:"Restructure to avoid subshells, or use return if inside a function"})}if(Q===0){let V=q.match(/(?<!\$)\((?!\()([^)]*\bexit\b[^)]*)\)(?!\))/);if(V){let A=q.indexOf("exit",V.index);Z.push({filePath:J.filePath,line:G+1,column:A+1,ruleId:"shell/no-exit-in-subshell",message:"exit inside a subshell only exits the subshell, not the script",severity:"warning",help:"Restructure to avoid subshells, or use return if inside a function"})}}}return Z}};var rX={meta:{docs:"Disallow parsing ls output \u2014 use globs or find instead",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z="";for(let Q=0;Q<X.length;Q++){let G=X[Q];if(Y){if(G.trim()===z)Y=!1;continue}let q=G.match(/<<-?\s*['"]?(\w+)['"]?/);if(q)Y=!0,z=q[1];if(G.replace(/^\s+/,"").startsWith("#"))continue;if(G.match(/\bls\b[^|]*\|/)){let V=G.indexOf("ls");Z.push({filePath:J.filePath,line:Q+1,column:V+1,ruleId:"shell/no-ls-parsing",message:"Don't parse ls output \u2014 filenames can contain special characters",severity:"warning",help:'Use globs (for f in *.txt), find (find . -name "*.txt"), or stat instead'});continue}let K=G.match(/\$\(\s*ls\b/);if(K){let V=K.index+1;Z.push({filePath:J.filePath,line:Q+1,column:V,ruleId:"shell/no-ls-parsing",message:"Don't use ls in command substitution \u2014 use globs instead",severity:"warning",help:"Replace $(ls *.txt) with glob patterns: for f in *.txt; do ...; done"});continue}let H=G.match(/`\s*ls\b/);if(H){let V=H.index+1;Z.push({filePath:J.filePath,line:Q+1,column:V,ruleId:"shell/no-ls-parsing",message:"Don't use ls in command substitution \u2014 use globs instead",severity:"warning",help:"Replace `ls` with glob patterns"})}}return Z}};var lX={meta:{docs:"Detect useless use of cat (UUOC)",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z="";for(let Q=0;Q<X.length;Q++){let G=X[Q];if(Y){if(G.trim()===z)Y=!1;continue}let q=G.match(/<<-?\s*['"]?(\w+)['"]?/);if(q)Y=!0,z=q[1];if(G.replace(/^\s+/,"").startsWith("#"))continue;let W=G.match(/\bcat\s+(["']?[\w.\/~${}*?-]+["']?)\s*\|/);if(W){let K=G.indexOf("cat");Z.push({filePath:J.filePath,line:Q+1,column:K+1,ruleId:"shell/no-useless-cat",message:`Useless use of cat \u2014 pipe the file directly instead of \`cat ${W[1]} | ...\``,severity:"warning",help:`Use \`cmd < ${W[1]}\` or pass the file as an argument to the command`})}}return Z}};var aX={meta:{docs:"Flag variables inside single quotes where they won't expand",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z="";for(let Q=0;Q<X.length;Q++){let G=X[Q];if(Y){if(G.trim()===z)Y=!1;continue}let q=G.match(/<<-?\s*['"]?(\w+)['"]?/);if(q)Y=!0,z=q[1];if(G.replace(/^\s+/,"").startsWith("#"))continue;let W=!1,K=!1,H=-1;for(let V=0;V<G.length;V++){let A=G[V];if(A==="#"&&!W&&!K)break;if(A==="\\"&&!W){V++;continue}if(A==='"'&&!W){K=!K;continue}if(A==="'"&&!K)if(!W)W=!0,H=V;else{let F=G.slice(H+1,V).match(/\$(?:[A-Za-z_]\w*|\{[^}]+\}|\([^)]*\))/);if(F)Z.push({filePath:J.filePath,line:Q+1,column:H+1+F.index+1,ruleId:"shell/no-variable-in-single-quotes",message:`Variable ${F[0]} is inside single quotes and won't be expanded`,severity:"warning",help:`Use double quotes if you want variable expansion: "..." instead of '...'`});W=!1}}}return Z}};var eG=[/^\s*(?:local|export|declare|typeset|readonly)\s+/,/\[\[.*\]\]/,/\(\(.*\)\)/],i7=/^\$(?:\{[A-Za-z_]\w*(?:[:#%\/][^}]*)?\}|[A-Za-z_]\w*)/,sX={meta:{docs:"Quote variable expansions to prevent word splitting and globbing",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z="";for(let Q=0;Q<X.length;Q++){let G=X[Q];if(Y){if(G.trim()===z)Y=!1;continue}let q=L0(G);if(q){if(Y=!0,z=q,new RegExp(`<<-?\\s*['"]${q}['"]`).test(G))continue}if(G.replace(/^\s+/,"").startsWith("#"))continue;if(eG.some((H)=>H.test(G)))continue;let W=[],K=0;while(K<G.length){let H=W[W.length-1];if(H==="squote"){if(G[K]==="'")W.pop();K++;continue}if(G[K]==="\\"&&K+1<G.length){K+=2;continue}if(H==="dquote"){let A=G[K];if(A==='"'){W.pop(),K++;continue}if(A==="$"&&G[K+1]==="("&&G[K+2]==="("){W.push("arith"),K+=3;continue}if(A==="$"&&G[K+1]==="("){W.push("subshell"),K+=2;continue}if(A==="$"){let _=G.slice(K).match(i7);if(_){K+=_[0].length;continue}}K++;continue}if(H==="arith"){let A=G[K];if(A===")"&&G[K+1]===")"){W.pop(),K+=2;continue}if(A==="$"){let _=G.slice(K).match(i7);if(_){K+=_[0].length;continue}}K++;continue}let V=G[K];if(V==="#"&&(K===0||/\s/.test(G[K-1])))break;if(V==="'"){W.push("squote"),K++;continue}if(V==='"'){W.push("dquote"),K++;continue}if(V==="$"&&G[K+1]==="("&&G[K+2]==="("){W.push("arith"),K+=3;continue}if(V==="$"&&G[K+1]==="("){W.push("subshell"),K+=2;continue}if(V===")"&&H==="subshell"){W.pop(),K++;continue}if(V==="$"){let A=G.slice(K).match(i7);if(A){let _=A[0];if(!/^\$[?!#@*0-9-]/.test(_))Z.push({filePath:J.filePath,line:Q+1,column:K+1,ruleId:"shell/quote-variables",message:`Unquoted variable ${_} \u2014 use "${_}" to prevent word splitting`,severity:"warning",help:`Wrap in double quotes: "${_}"`});K+=_.length;continue}}K++}}return Z}};var nX={meta:{docs:"Enforce consistent function declaration style",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z="";for(let Q=0;Q<X.length;Q++){let G=X[Q];if(Y){if(G.trim()===z)Y=!1;continue}let q=G.match(/<<-?\s*['"]?(\w+)['"]?/);if(q)Y=!0,z=q[1];let U=G.replace(/^\s+/,"");if(U.startsWith("#"))continue;let W=U.match(/^function\s+(\w+)\s*(?:\(\s*\))?\s*\{?\s*$/);if(W){let K=W[1],H=G.indexOf("function");Z.push({filePath:J.filePath,line:Q+1,column:H+1,ruleId:"shell/function-style",message:`Use \`${K}() {\` instead of \`function ${K}\` \u2014 POSIX-compatible style`,severity:"warning",help:`Replace with: ${K}() {`})}}return Z},fix($){let J=$.split(/\r?\n/),Z=[];for(let X of J){let Y=X.match(/^(\s*)function\s+(\w+)\s*(?:\(\s*\))?\s*(\{?\s*)$/);if(Y){let[,z,Q,G]=Y;Z.push(`${z}${Q}() ${G||"{"}`)}else Z.push(X)}return Z.join(`
132
- `)}};function iX($,J){if(/^then\b/.test($)||/^do\b/.test($)||/^else\b/.test($))return!0;if(/^if\b/.test($)&&/\bthen\s*$/.test($))return!0;if(/^elif\b/.test($)&&/\bthen\s*$/.test($))return!0;if(/^(?:while|for|until)\b/.test($)&&/\bdo\s*$/.test($))return!0;if(/^case\b/.test($)&&/\bin\s*$/.test($))return!0;if(J&&/\)\s*$/.test($)&&!/\$\(/.test($)&&!/^\s*\(/.test($)&&!$.startsWith("#"))return!0;if(/\{\s*$/.test($)&&!$.startsWith("#"))return!0;return!1}function tX($){return/^(?:fi|done|esac|elif|else)\b/.test($)||/^\}/.test($)||/^;[;&]\s*$/.test($)}var eX={meta:{docs:"Enforce consistent indentation in shell scripts",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=J.config.format.indent||2,z=0,Q=!1,G="",q=!1,U=0;for(let W=0;W<X.length;W++){let K=X[W];if(/^\s*$/.test(K))continue;if(Q){if(K.trim()===G)Q=!1;continue}let H=K.match(/<<-?\s*['"]?(\w+)['"]?/);if(H)Q=!0,G=H[1];let V=K.replace(/^\s+/,"");if(W===0&&V.startsWith("#!"))continue;if(/^case\b/.test(V)&&/\bin\s*$/.test(V))U++,q=!0;if(/^esac\b/.test(V)){if(U=Math.max(0,U-1),U===0)q=!1}if(tX(V))z=Math.max(0,z-1);let A=0;for(let F=0;F<K.length;F++)if(K[F]===" ")A++;else if(K[F]==="\t")A+=Y;else break;let _=z*Y;if(A!==_&&!V.startsWith("#"))Z.push({filePath:J.filePath,line:W+1,column:1,ruleId:"shell/indent",message:`Expected ${_} spaces of indentation, found ${A}`,severity:"warning"});if(iX(V,q))z++}return Z},fix($,J){let Z=$.split(/\r?\n/),X=J.config.format.indent||2,Y=J.config.format.indentStyle==="tabs",z=[],Q=0,G=!1,q="",U=!1,W=0;for(let K=0;K<Z.length;K++){let H=Z[K];if(/^\s*$/.test(H)){z.push("");continue}if(G){if(z.push(H),H.trim()===q)G=!1;continue}let V=H.match(/<<-?\s*['"]?(\w+)['"]?/);if(V)G=!0,q=V[1];let A=H.replace(/^\s+/,"").trimEnd();if(K===0&&A.startsWith("#!")){z.push(A);continue}if(/^case\b/.test(A)&&/\bin\s*$/.test(A))W++,U=!0;if(/^esac\b/.test(A)){if(W=Math.max(0,W-1),W===0)U=!1}if(tX(A))Q=Math.max(0,Q-1);let _=Y?"\t".repeat(Q):" ".repeat(Q*X);if(z.push(_+A),iX(A,U))Q++}return z.join(`
133
- `)}};var $5={meta:{docs:"Enforce spacing around shell keywords (if, then, do, else, fi, etc.)",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z="";for(let Q=0;Q<X.length;Q++){let G=X[Q];if(Y){if(G.trim()===z)Y=!1;continue}let q=L0(G);if(q)Y=!0,z=q;if(G.replace(/^\s+/,"").startsWith("#"))continue;let W=k0(G),K=W.match(/;(?![;\s$])\S/);if(K)Z.push({filePath:J.filePath,line:Q+1,column:(K.index||0)+1,ruleId:"shell/keyword-spacing",message:"Missing space after semicolon",severity:"warning"});let H=W.match(/\w(then|do|else|elif|fi|done|esac)\b/);if(H&&!/[a-z]/.test(W[H.index])){let V=H[1],A=W[H.index];if(A!==" "&&A!=="\t"&&A!==";")Z.push({filePath:J.filePath,line:Q+1,column:(H.index||0)+2,ruleId:"shell/keyword-spacing",message:`Missing space before keyword '${V}'`,severity:"warning"})}}return Z}};var Z5={meta:{docs:"Disallow unnecessary trailing semicolons",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z="";for(let Q=0;Q<X.length;Q++){let G=X[Q];if(Y){if(G.trim()===z)Y=!1;continue}let q=G.match(/<<-?\s*['"]?(\w+)['"]?/);if(q)Y=!0,z=q[1];let U=G.replace(/^\s+/,"").trimEnd();if(U.startsWith("#"))continue;if(/;;\s*$/.test(U))continue;if(/\bfor\b/.test(U)||/\bwhile\b/.test(U)||/\buntil\b/.test(U))continue;if(/;\s*(?:then|do|else|elif|fi|done|esac)\s*$/.test(U))continue;if(/;\s*$/.test(U)){let W=G.lastIndexOf(";");Z.push({filePath:J.filePath,line:Q+1,column:W+1,ruleId:"shell/no-trailing-semicolons",message:"Unnecessary trailing semicolon",severity:"warning"})}}return Z},fix($){let J=$.split(/\r?\n/),Z=[],X=!1,Y="";for(let z of J){if(X){if(Z.push(z),z.trim()===Y)X=!1;continue}let Q=z.match(/<<-?\s*['"]?(\w+)['"]?/);if(Q)X=!0,Y=Q[1];let G=z.replace(/^\s+/,"").trimEnd();if(G.startsWith("#")||/;;\s*$/.test(G)||/\bfor\b/.test(G)||/\bwhile\b/.test(G)||/\buntil\b/.test(G)||/;\s*(?:then|do|else|elif|fi|done|esac)\s*$/.test(G)){Z.push(z);continue}Z.push(z.replace(/;\s*$/,""))}return Z.join(`
134
- `)}};var J5={meta:{docs:"Disallow trailing whitespace",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z="";for(let Q=0;Q<X.length;Q++){let G=X[Q];if(Y){if(G.trim()===z)Y=!1;continue}let q=L0(G);if(q)Y=!0,z=q;if(/[ \t]+$/.test(G)){let U=G.match(/[ \t]+$/);Z.push({filePath:J.filePath,line:Q+1,column:U.index+1,ruleId:"shell/no-trailing-whitespace",message:"Trailing whitespace",severity:"error"})}}return Z},fix($){let J=$.split(/\r?\n/),Z=!1,X="";return J.map((z)=>{if(Z){if(z.trim()===X)Z=!1;return z}let Q=L0(z);if(Q)Z=!0,X=Q;return z.replace(/[ \t]+$/,"")}).join(`
135
- `)}};var X5={meta:{docs:"Enforce spaces inside [ ] and [[ ]] test expressions",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z="";for(let Q=0;Q<X.length;Q++){let G=X[Q];if(Y){if(G.trim()===z)Y=!1;continue}let q=L0(G);if(q)Y=!0,z=q;if(G.replace(/^\s+/,"").startsWith("#"))continue;let W=k0(G);for(let K of $2(W,Q+1,J.filePath))Z.push(K)}return Z},fix($){let J=$.split(/\r?\n/),Z=[],X=!1,Y="";for(let z of J){if(X){if(z.trim()===Y)X=!1;Z.push(z);continue}let Q=L0(z);if(Q){X=!0,Y=Q,Z.push(z);continue}if(z.replace(/^\s+/,"").startsWith("#")){Z.push(z);continue}Z.push(Z2(z))}return Z.join(`
136
- `)}};function $2($,J,Z){let X=[],Y=/\[\[(?!\s|\]|$)/g;for(let Q of $.matchAll(Y))X.push({filePath:Z,line:J,column:(Q.index??0)+1,ruleId:"shell/operator-spacing",message:"Missing space after [[",severity:"warning"});let z=/(?<!\s|\[)\]\]/g;for(let Q of $.matchAll(z))X.push({filePath:Z,line:J,column:(Q.index??0)+1,ruleId:"shell/operator-spacing",message:"Missing space before ]]",severity:"warning"});for(let Q=0;Q<$.length;Q++){if($[Q]!=="[")continue;if($[Q+1]==="[")continue;if(Q>0&&$[Q-1]==="[")continue;if(!Y5($,Q))continue;let G=$[Q+1];if(G!==void 0&&G!==" "&&G!=="\t")X.push({filePath:Z,line:J,column:Q+1,ruleId:"shell/operator-spacing",message:"Missing space after [",severity:"warning"})}for(let Q=0;Q<$.length;Q++){if($[Q]!=="]")continue;if($[Q+1]==="]")continue;if(Q>0&&$[Q-1]==="]")continue;if(!z5($,Q))continue;let G=$[Q-1];if(G!==void 0&&G!==" "&&G!=="\t")X.push({filePath:Z,line:J,column:Q+1,ruleId:"shell/operator-spacing",message:"Missing space before ]",severity:"warning"})}return X}function Z2($){let J=k0($),Z=[];for(let Y of J.matchAll(/\[\[(?!\s|\]|$)/g)){let z=(Y.index??0)+2;Z.push({pos:z,text:" "})}for(let Y of J.matchAll(/(?<!\s|\[)\]\]/g)){let z=Y.index??0;Z.push({pos:z,text:" "})}for(let Y=0;Y<J.length;Y++){if(J[Y]!=="[")continue;if(J[Y+1]==="[")continue;if(Y>0&&J[Y-1]==="[")continue;if(!Y5(J,Y))continue;let z=J[Y+1];if(z!==void 0&&z!==" "&&z!=="\t")Z.push({pos:Y+1,text:" "})}for(let Y=0;Y<J.length;Y++){if(J[Y]!=="]")continue;if(J[Y+1]==="]")continue;if(Y>0&&J[Y-1]==="]")continue;if(!z5(J,Y))continue;let z=J[Y-1];if(z!==void 0&&z!==" "&&z!=="\t")Z.push({pos:Y,text:" "})}if(Z.length===0)return $;Z.sort((Y,z)=>z.pos-Y.pos);let X=$;for(let{pos:Y,text:z}of Z)X=`${X.slice(0,Y)}${z}${X.slice(Y)}`;return X}function Y5($,J){let Z=J-1;while(Z>=0&&($[Z]===" "||$[Z]==="\t"))Z--;if(Z<0)return!0;let X=$[Z];if(X===";"||X==="|"||X==="&"||X==="!"||X==="(")return!0;let Y=$.slice(0,Z+1);if(/(?:^|\s)(?:if|while|until|elif|then|else|do)\s*$/.test(Y))return!0;return!1}function z5($,J){let Z=$[J+1];if(Z===void 0)return!0;return Z===" "||Z==="\t"||Z===";"||Z==="|"||Z==="&"||Z===")"}var J2=/^#!\s*(?:\/usr\/bin\/env\s+(?:ba|z|k|da)?sh|\/bin\/(?:ba|z|k|da)?sh|\/usr\/bin\/(?:ba|z|k|da)?sh)\b/,Q5={meta:{docs:"Ensure shell scripts have a proper shebang line",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);if(X.length===0)return Z;let Y=X[0];if(X.every((z)=>z.trim()===""))return Z;if(!Y.startsWith("#!"))return Z.push({filePath:J.filePath,line:1,column:1,ruleId:"shell/shebang",message:"Missing shebang line \u2014 shell scripts should start with #!/usr/bin/env bash (or similar)",severity:"warning",help:"Add #!/usr/bin/env bash as the first line"}),Z;if(!J2.test(Y))Z.push({filePath:J.filePath,line:1,column:1,ruleId:"shell/shebang",message:`Invalid shebang: ${Y} \u2014 use #!/usr/bin/env bash or #!/bin/sh`,severity:"warning",help:"Use #!/usr/bin/env bash for portability or #!/bin/sh for POSIX scripts"});return Z}};var G5={meta:{docs:"Enforce consistent case statement terminator placement",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z="",Q=[];for(let G of X){if(Y){if(G.trim()===z)Y=!1;Q.push("");continue}let q=L0(G);if(q)Y=!0,z=q;if(G.replace(/^\s+/,"").startsWith("#")){Q.push("");continue}Q.push(k0(G))}for(let G=0;G<Q.length;G++){if(!/\bcase\b[\s\S]*\bin\s*$/.test(Q[G].trimEnd()))continue;let q=1,U=-1;for(let V=G+1;V<Q.length;V++){let A=Q[V].trimEnd();if(/^\s*esac\b/.test(A)){if(q--,q===0){U=V;break}continue}if(/\bcase\b[\s\S]*\bin\s*$/.test(A))q++}if(U===-1)continue;let W=0,K=!1,H=!1;for(let V=G+1;V<U;V++){let A=Q[V],_=A.trim();if(_==="")continue;if(W===0){let F=X2(A);if(F!==-1){if(K&&H)Z.push({filePath:J.filePath,line:V+1,column:1,ruleId:"shell/consistent-case-terminators",message:"Missing ;; terminator for previous case branch",severity:"warning",help:"Add ;; at the end of the case branch before the next pattern"});K=!0,H=!0;let w=A.slice(F+1).trimEnd();if(/;;\s*$/.test(w))K=!1;continue}}if(W+=Y2(A),W<0)W=0;if(K&&W===0&&/;;\s*$/.test(_))K=!1}}return Z}};function X2($){let J=$.replace(/^\s+/,"");if(J==="")return-1;if(/^(?:for|while|until|if|case|do|then|else|elif|fi|done|esac)\b/.test(J))return-1;let Z=$.length-J.length,X=0;if(J[X]==="(")X++;let Y=0;while(X<J.length){let z=J[X];if(z==="(")Y++;else if(z===")"){if(Y===0)return Z+X;Y--}else if(z===";"||z==="&"||z==="<"||z===">"||z==="=")return-1;X++}return-1}function Y2($){let J=$.trim();if(J==="")return 0;let Z=J.split(/[\s;]+/),X=0;for(let Y of Z)if(Y==="if"||Y==="for"||Y==="while"||Y==="until")X++;else if(Y==="fi"||Y==="done")X--;return X}var q5={meta:{docs:"Recommend <<- for heredocs inside indented blocks"},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y];if(z.replace(/^\s+/,"").startsWith("#"))continue;if(!z.match(/^\s+/))continue;let U=k0(z).match(/(?<!<)<<(?![<-])/);if(!U||U.index===void 0)continue;let K=z.slice(U.index+2).match(/^\s*(['"]?)(\w+)\1\s*$/);if(K){let H=K[2];Z.push({filePath:J.filePath,line:Y+1,column:U.index+1,ruleId:"shell/heredoc-indent",message:`Use <<- instead of << for indented heredoc (delimiter '${H}' must be at column 0 otherwise)`,severity:"warning",help:"Use <<- to strip leading tabs from heredoc content, allowing proper indentation"})}}return Z}};var U5={meta:{docs:"Detect incorrect redirect ordering (2>&1 before > file)",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z="";for(let Q=0;Q<X.length;Q++){let G=X[Q];if(Y){if(G.trim()===z)Y=!1;continue}let q=L0(G);if(q)Y=!0,z=q;if(G.replace(/^\s+/,"").startsWith("#"))continue;let W=k0(G);if(W.match(/2>&1\s+>(?!&)\s*\S/)){let H=W.indexOf("2>&1");Z.push({filePath:J.filePath,line:Q+1,column:H+1,ruleId:"shell/no-broken-redirect",message:"Broken redirect: 2>&1 before > file \u2014 stderr goes to terminal, not the file",severity:"error",help:"Swap the order: cmd > file 2>&1 (or use &> file in bash)"})}}return Z}};var W5={meta:{docs:"Prefer [[ ]] over [ ] for test expressions in bash/zsh",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/)[0]||"",Y=/bash|zsh/.test(X);if(/^#!.*\bsh\b/.test(X)&&!Y||!Y)return Z;let Q=$.split(/\r?\n/),G=!1,q="";for(let U=0;U<Q.length;U++){let W=Q[U];if(G){if(W.trim()===q)G=!1;continue}let K=W.match(/<<-?\s*['"]?(\w+)['"]?/);if(K)G=!0,q=K[1];if(W.replace(/^\s+/,"").startsWith("#"))continue;if(W.match(/(?:^|\s|;)\[\s(?!\[)/)){if(/(?<!\])\](?!\])/.test(W)){let A=W.indexOf("[");Z.push({filePath:J.filePath,line:U+1,column:A+1,ruleId:"shell/prefer-double-brackets",message:"Use [[ ]] instead of [ ] for test expressions in bash/zsh",severity:"warning",help:"[[ ]] prevents word splitting and supports && || regex; [ ] is only needed for POSIX sh"})}}}return Z},fix($){let J=$.split(/\r?\n/)[0]||"";if(!/bash|zsh/.test(J))return $;let X=$.split(/\r?\n/),Y=[];for(let z of X){let Q=z;Q=Q.replace(/(?:^|(?<=\s|;))\[(\s(?!\[).*?(?<!\]))\](?!\])/g,"[[$1]]"),Y.push(Q)}return Y.join(`
137
- `)}};var K5={meta:{docs:"Prefer printf over echo -e and echo -n",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z="";for(let Q=0;Q<X.length;Q++){let G=X[Q];if(Y){if(G.trim()===z)Y=!1;continue}let q=G.match(/<<-?\s*['"]?(\w+)['"]?/);if(q)Y=!0,z=q[1];if(G.replace(/^\s+/,"").startsWith("#"))continue;let W=G.match(/\becho\s+-[en]+\b/);if(W){let K=G.indexOf("echo"),H=W[0].replace("echo ","");Z.push({filePath:J.filePath,line:Q+1,column:K+1,ruleId:"shell/prefer-printf",message:`Use printf instead of echo ${H} \u2014 echo behavior varies across platforms`,severity:"warning",help:'printf is portable: printf "format\\n" args... (use \\n for newline)'})}}return Z}};var H5={meta:{docs:"Recommend set -euo pipefail for safer script execution"},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z=!1,Q=!1,G=-1,q=!1;for(let W=0;W<X.length;W++){let K=X[W].replace(/^\s+/,"");if(W===0&&K.startsWith("#!")){G=W;continue}if(K.startsWith("#"))continue;if(K==="")continue;if(q=!0,/\bset\s+-\w*e/.test(K))Y=!0;if(/\bset\s+-\w*u/.test(K))z=!0;if(/\bset\s+.*-o\s+pipefail/.test(K))Q=!0;if(/\bset\s+-euo\s+pipefail/.test(K))Y=!0,z=!0,Q=!0}if(!q)return Z;let U=[];if(!Y)U.push("-e");if(!z)U.push("-u");if(!Q)U.push("-o pipefail");if(U.length>0)Z.push({filePath:J.filePath,line:G>=0?G+2:1,column:1,ruleId:"shell/set-options",message:`Missing shell safety options: set ${U.join(" ")}`,severity:"warning",help:"Add `set -euo pipefail` near the top of the script for safer execution"});return Z}};var V5={name:"shell",rules:{"command-substitution":V0(mX),"quote-variables":V0(sX),"no-cd-without-check":V0(dX),"no-eval":V0(oX),"no-useless-cat":V0(lX),"no-ls-parsing":V0(rX),"no-variable-in-single-quotes":V0(aX),"no-exit-in-subshell":V0(cX),shebang:V0(Q5),indent:V0(eX),"function-style":V0(nX),"operator-spacing":V0(X5),"keyword-spacing":V0($5),"no-trailing-semicolons":V0(Z5),"no-trailing-whitespace":V0(J5),"prefer-double-brackets":V0(W5),"set-options":V0(H5),"prefer-printf":V0(K5),"consistent-case-terminators":V0(G5),"no-broken-redirect":V0(U5),"heredoc-indent":V0(q5)}};var S8=null,I8=null,t7=!1,e7=!0;function z2(){if(t7)return e7;try{return S8=(()=>{throw new Error("Cannot require module "+"@stacksjs/ts-spell-check");})(),S8.SpellChecker.create({minWordLength:3,maxSuggestions:3}).then(($)=>{I8=$}).catch(()=>{e7=!1}),t7=!0,!0}catch{return t7=!0,e7=!1,!1}}function $9($,J){return{meta:{docs:$==="spell/check"?"Check spelling in text content":$==="spell/check-comments"?"Check spelling in code comments only":"Check spelling in markdown files"},check(Z,X){if(!z2()||!S8)return[];let{extractWords:Y,parseDirectives:z,isSuppressed:Q,getProgrammingWords:G}=S8,q=X.options,U=new Set((q?.words||[]).map((_)=>_.toLowerCase())),W=q?.minWordLength||3,K=G(),H=z(Z);for(let _ of H)if(_.type==="word")_.words.forEach((F)=>U.add(F.toLowerCase()));let V=Z.split(/\r?\n/),A=[];for(let _=0;_<V.length;_++){let F=V[_],w=_+1;if(J&&!J(F))continue;let j=Y(F);for(let{word:D,offset:M}of j){if(D.length<W)continue;if(D===D.toUpperCase()&&D.length<=5)continue;if(U.has(D.toLowerCase()))continue;if(K.has(D.toLowerCase()))continue;if(Q(D,w,H,U))continue;if(I8){if(I8.isCorrect(D))continue;let E=I8.suggest(D);A.push({filePath:X.filePath,line:w,column:M+1,ruleId:$,message:`Unknown word: "${D}"`,severity:"warning",help:E.length?`Did you mean: ${E.slice(0,3).join(", ")}? Or add to config words.`:`Add "${D}" to your config words array, or use: // spell-check:ignore ${D}`})}}}return A}}}function Q2($){let J=$.trimStart();return J.startsWith("//")||J.startsWith("/*")||J.startsWith("*")||J.startsWith("#")}var A5={name:"spell",rules:{check:$9("spell/check"),"check-comments":$9("spell/check-comments",Q2),"check-markdown":{meta:{docs:"Check spelling in markdown files"},check($,J){if(!J.filePath.endsWith(".md"))return[];return $9("spell/check-markdown").check($,J)}}}};function _5($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var F5={meta:{docs:"Disallow spaces inside array brackets",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;for(let G=0;G<z.length;G++){if(z[G]==="["&&!_5(z,G)){let q=z[G+1];if(q==="]"||q===void 0||q===`
138
- `)continue;if(q===" "||q==="\t"){if(z.indexOf("]",G+1)!==-1)Z.push({filePath:J.filePath,line:Y+1,column:G+2,ruleId:"style/array-bracket-spacing",message:"Unexpected space after '['",severity:"warning"})}}if(z[G]==="]"&&!_5(z,G)){let q=G>0?z[G-1]:void 0;if(q==="["||q===void 0)continue;if(q===" "||q==="\t"){if(z.lastIndexOf("[",G-1)!==-1)Z.push({filePath:J.filePath,line:Y+1,column:G,ruleId:"style/array-bracket-spacing",message:"Unexpected space before ']'",severity:"warning"})}}}}return Z},fix($){let J=$.split(/\r?\n/),Z=[];for(let X of J){let Y=X;Y=Y.replace(/\[\s+(\S)/g,(z,Q)=>{if(Q==="]")return z;return`[${Q}`}),Y=Y.replace(/(\S)\s+\]/g,"$1]"),Z.push(Y)}return Z.join(`
139
- `)}};var w5=/(?<![(\[{,=:?&|+\-*/])\b([a-zA-Z_$][a-zA-Z0-9_$]*)\s*=>/g;function G2($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var B5={meta:{docs:"Require parentheses around arrow function parameters",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G;w5.lastIndex=0;while((G=w5.exec(z))!==null){let q=G.index;if(G2(z,q))continue;let U=G[1];if(z.slice(0,q).trimEnd().endsWith("("))continue;if(U==="async")continue;Z.push({filePath:J.filePath,line:Y+1,column:q+1,ruleId:"style/arrow-parens",message:`Arrow function parameter '${U}' should be wrapped in parentheses`,severity:"warning"})}}return Z},fix($){return $.replace(/(?<![(\[{,=:?&|+\-*/])\b([a-zA-Z_$][a-zA-Z0-9_$]*)\s*=>/g,(J,Z)=>{if(Z==="async")return J;return J.replace(Z,`(${Z})`)})}};var v8=/=>/g;function M5($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var j5={meta:{docs:"Require space before and after => in arrow functions",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G;v8.lastIndex=0;while((G=v8.exec(z))!==null){let q=G.index;if(M5(z,q))continue;if(q>0&&z[q-1]!==" "&&z[q-1]!=="\t")Z.push({filePath:J.filePath,line:Y+1,column:q+1,ruleId:"style/arrow-spacing",message:"Missing space before =>",severity:"warning"});let U=q+2;if(U<z.length&&z[U]!==" "&&z[U]!=="\t"&&z[U]!==`
124
+ ${G}`;if(P7(q)!==q)return[{filePath:J.filePath,line:Y+1,column:1,ruleId:"sort-imports",message:"Imports are not sorted/grouped consistently",severity:"warning"}];return[]},fix:($)=>P7($)};var ZX={name:"perfectionist",rules:{"sort-imports":B(C8)}};import{dirname as AG,resolve as _G}from"path";function t($){try{let J=JSON.parse($);if(typeof J!=="object"||J===null||Array.isArray(J))return null;return J}catch{return null}}function FG($,J){let Z=$.split(`
125
+ `),X=1,Y=0;for(let z of J){let Q=new RegExp(`"${jG(z)}"\\s*:`);for(let G=Y;G<Z.length;G++)if(Q.test(Z[G])){X=G+1,Y=G+1;break}}return X}function u0($){return AG($)}function S0($,J){return _G($,J)}function Z0($){let J="pkg";for(let Z of $)if(/^\d+$/.test(Z))J+=`[${Z}]`;else if(!/^[a-z_$][a-z0-9_$]*$/i.test(Z))J+=`["${Z}"]`;else J+=`.${Z}`;return J}function i($,J){if($.publishConfig?.[J]!==void 0)return[$.publishConfig[J],["publishConfig",J]];return[$[J],[J]]}var wG=new RegExp(`(?:[\\s;]|^)(?:import[\\w,{}\\s*]*from|import\\s*['"*{]|export\\b\\s*(?:[*{]|default|type|function|const|var|let|async function)|import\\.meta\\b)`,"m"),BG=new RegExp("(?:[\\s;]|^)(?:module.exports\\b|exports\\.\\w|require\\s*\\(|global\\.\\w|Object\\.(?:defineProperty|defineProperties|assign)\\s*\\(\\s*exports\\b)","m");function Y1($){let J=MG($),Z=wG.test(J),X=BG.test(J);if(Z&&X)return"mixed";if(Z)return"ESM";if(X)return"CJS";return"unknown"}function JX($,J){if($.endsWith(".mjs"))return"ESM";if($.endsWith(".cjs"))return"CJS";return J==="module"?"ESM":"CJS"}function XX($){if($==="ESM")return".mjs";if($==="CJS")return".cjs";return".js"}function YX($){return $===".mjs"||$===".cjs"}function s0($){return $.endsWith(".js")||$.endsWith(".mjs")||$.endsWith(".cjs")}function zX($){return/^#!\s*\//.test($)}function MG($){return $.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\/\/.*/g,"")}function W0($,J,Z,X){C7($,J,Z,X)}function C7($,J,Z,X){if(typeof $==="string"){X($,{path:J,isImports:Z});return}if(Array.isArray($)){X($,{path:J,isImports:Z});for(let Y=0;Y<$.length;Y++)C7($[Y],J.concat(String(Y)),Z,X);return}if($!==null&&typeof $==="object"){let Y=Object.keys($);X($,{path:J,isImports:Z},Y);for(let z of Y)C7($[z],J.concat(z),Z,X)}}function n($,J,Z,X,Y,z,Q){return{filePath:$,line:FG(J,Z),column:1,ruleId:X,message:Y,severity:z,...Q&&{help:Q}}}function jG($){return $.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}var I7={meta:{docs:"Disallow deprecated jsnext:main and jsnext fields",recommended:!0},check($,J){let Z=t($);if(!Z)return[];let X=[];if(Z["jsnext:main"]!=null)X.push(n(J.filePath,$,["jsnext:main"],"publint/deprecated-field-jsnext",'pkg["jsnext:main"] is deprecated. pkg.module should be used instead.',"warning",'The jsnext:main field is no longer recognized by modern bundlers. Use "module" instead.'));if(Z.jsnext!=null)X.push(n(J.filePath,$,["jsnext"],"publint/deprecated-field-jsnext","pkg.jsnext is deprecated. pkg.module should be used instead.","warning",'The jsnext field is no longer recognized by modern bundlers. Use "module" instead.'));return X}};var S7={meta:{docs:'Ensure "default" condition is last in exports objects',recommended:!0},check($,J){let Z=t($);if(!Z)return[];let X=[],[Y,z]=i(Z,"exports");if(Y==null)return[];return W0(Y,z,!1,(Q,G,q)=>{if(!q||typeof Q!=="object"||Array.isArray(Q))return;if(!("default"in Q))return;if(q[q.length-1]!=="default")X.push(n(J.filePath,$,G.path.concat("default"),"publint/exports-default-should-be-last",`${Z0(G.path.concat("default"))} should be the last condition in the object so it doesn't take precedence over the keys following it.`,"error",'Conditions are resolved in order. "default" acts as a fallback and should come last.'))}),X}};var v7={meta:{docs:"Warn against using fallback arrays in exports",recommended:!0},check($,J){let Z=t($);if(!Z)return[];let X=[],[Y,z]=i(Z,"exports");if(Y==null)return[];return W0(Y,z,!1,(Q,G)=>{if(!Array.isArray(Q))return;X.push(n(J.filePath,$,G.path,"publint/exports-fallback-array-use",`${Z0(G.path)} uses fallback arrays which is not recommended. It works differently in some tools and may face inconsistent behaviors.`,"warning","Fallback arrays pick the first parseable value and have no practical use case in Node.js currently."))}),X}};var y7={meta:{docs:"Ensure exports has a root entrypoint when main/module exist",recommended:!0},check($,J){let Z=t($);if(!Z)return[];let[X]=i(Z,"main"),[Y]=i(Z,"module"),[z,Q]=i(Z,"exports");if(X==null&&Y==null||z==null)return[];if(typeof z!=="object"||Array.isArray(z))return[];let G=Object.keys(z);if(G.length===0)return[];if(!G[0]?.startsWith("."))return[];if(G.includes("."))return[];let U=[];if(X)U.push("main");if(Y)U.push("module");return[n(J.filePath,$,Q,"publint/exports-missing-root-entrypoint",`${Z0(Q)} is missing the root entrypoint export, which is defined in pkg.${U[0]}. Environments that support "exports" will ignore pkg.${U[0]} as "exports" takes the highest priority.`,"warning",`Add ${Z0(Q.concat("."))} to ensure the root entrypoint is accessible.`)]}};var b7={meta:{docs:'Ensure "module" condition precedes "require" in exports',recommended:!0},check($,J){let Z=t($);if(!Z)return[];let X=[],[Y,z]=i(Z,"exports");if(Y==null)return[];return W0(Y,z,!1,(Q,G,q)=>{if(!q||typeof Q!=="object"||Array.isArray(Q))return;if(!("module"in Q)||!("require"in Q))return;if(q.indexOf("module")>q.indexOf("require"))X.push(n(J.filePath,$,G.path.concat("module"),"publint/exports-module-should-precede-require",`${Z0(G.path.concat("module"))} should come before the "require" condition so it can take precedence when used by a bundler.`,"error",'Bundlers prioritize conditions by order. "module" should precede "require" to ensure ESM is preferred.'))}),X}};var k7={meta:{docs:'Ensure "types" condition is first in exports objects',recommended:!0},check($,J){let Z=t($);if(!Z)return[];let X=[],[Y,z]=i(Z,"exports");if(Y==null)return[];return W0(Y,z,!1,(Q,G,q)=>{if(!q||typeof Q!=="object"||Array.isArray(Q))return;if(!("types"in Q))return;let U=q.indexOf("types");if(U===0)return;if(q.slice(0,U).filter((K)=>{if(K.startsWith("types"))return!1;if(typeof Q[K]==="object"&&Q[K]!==null&&QX(Q[K],"types"))return!1;return!0}).length>0)X.push(n(J.filePath,$,G.path.concat("types"),"publint/exports-types-should-be-first",`${Z0(G.path.concat("types"))} should be the first condition in the object so it can be resolved by TypeScript.`,"error",'TypeScript resolves conditions in order. The "types" condition must come first to ensure correct type resolution.'))}),X}};function QX($,J){for(let Z in $){if(Z===J)return!0;if(typeof $[Z]==="object"&&$[Z]!==null&&QX($[Z],J))return!0}return!1}var f7={meta:{docs:'Ensure exports values start with "./"',recommended:!0},check($,J){let Z=t($);if(!Z)return[];let X=[],[Y,z]=i(Z,"exports");if(Y==null)return[];return W0(Y,z,!1,(Q,G)=>{if(typeof Q!=="string")return;if(Q.startsWith("./"))return;let q=`./${Q.replace(/^[/]+/,"")}`;X.push(n(J.filePath,$,G.path,"publint/exports-value-invalid",`${Z0(G.path)} is "${Q}" which is invalid as it does not start with "./". Use "${q}" instead.`,"error",'All exports values must be relative paths starting with "./".'))}),X}};var NG=[{field:"main",expectTypes:["string"]},{field:"module",expectTypes:["string"]},{field:"types",expectTypes:["string"]},{field:"typings",expectTypes:["string"]},{field:"browser",expectTypes:["string","object"]},{field:"bin",expectTypes:["string","object"]},{field:"exports",expectTypes:["string","object"]},{field:"imports",expectTypes:["object"]},{field:"name",expectTypes:["string"]},{field:"version",expectTypes:["string"]},{field:"description",expectTypes:["string"]},{field:"license",expectTypes:["string"]}],g7={meta:{docs:"Ensure package.json fields have correct value types",recommended:!0},check($,J){let Z=t($);if(!Z)return[];let X=[];for(let{field:Y,expectTypes:z}of NG){let[Q,G]=i(Z,Y);if(Q==null)continue;let q=typeof Q;if(!z.includes(q)){let U=z.length===1?z[0]:`${z.slice(0,-1).join(", ")} or ${z[z.length-1]}`;X.push(n(J.filePath,$,G,"publint/field-invalid-value-type",`${Z0(G)} has an invalid ${q} type. Expected a ${U} type instead.`,"error",`The "${Y}" field must be of type ${U}.`))}}return X}};var p7={meta:{docs:"Suggest adding exports when module field is present",recommended:!0},check($,J){let Z=t($);if(!Z)return[];let[X,Y]=i(Z,"module"),[z]=i(Z,"exports");if(X!=null&&z==null)return[n(J.filePath,$,Y,"publint/has-module-but-no-exports","pkg.module is used to output ESM, but pkg.exports is not defined. As Node.js doesn't read pkg.module, the ESM output may be skipped. Consider adding pkg.exports to export the ESM output.","warning",'Node.js only reads "exports" for module resolution. Without it, the ESM entry point in "module" is ignored by Node.js.')];return[]}};var x7={meta:{docs:'Ensure "default" condition is last in imports objects',recommended:!0},check($,J){let Z=t($);if(!Z)return[];let X=[],[Y,z]=i(Z,"imports");if(Y==null||typeof Y!=="object")return[];return W0(Y,z,!0,(Q,G,q)=>{if(!q||typeof Q!=="object"||Array.isArray(Q))return;if(!("default"in Q))return;if(q[q.length-1]!=="default")X.push(n(J.filePath,$,G.path.concat("default"),"publint/imports-default-should-be-last",`${Z0(G.path.concat("default"))} should be the last condition in the object so it doesn't take precedence over the keys following it.`,"error",'Conditions are resolved in order. "default" acts as a fallback and should come last.'))}),X}};var h7={meta:{docs:'Ensure imports keys start with "#"',recommended:!0},check($,J){let Z=t($);if(!Z)return[];let X=[],[Y,z]=i(Z,"imports");if(Y==null||typeof Y!=="object"||Array.isArray(Y))return[];for(let Q of Object.keys(Y))if(!Q.startsWith("#")){let G=`#${Q.replace(/^[/]+/,"")}`,q=z.concat(Q);X.push(n(J.filePath,$,q,"publint/imports-key-invalid",`${Z0(q)} is invalid as the imports key does not start with "#". Use "${G}" instead.`,"error",'All imports keys must start with "#" to distinguish them from package specifiers.'))}return X}};var u7={meta:{docs:'Ensure "module" condition precedes "require" in imports',recommended:!0},check($,J){let Z=t($);if(!Z)return[];let X=[],[Y,z]=i(Z,"imports");if(Y==null||typeof Y!=="object")return[];return W0(Y,z,!0,(Q,G,q)=>{if(!q||typeof Q!=="object"||Array.isArray(Q))return;if(!("module"in Q)||!("require"in Q))return;if(q.indexOf("module")>q.indexOf("require"))X.push(n(J.filePath,$,G.path.concat("module"),"publint/imports-module-should-precede-require",`${Z0(G.path.concat("module"))} should come before the "require" condition so it can take precedence when used by a bundler.`,"error",'Bundlers prioritize conditions by order. "module" should precede "require" to ensure ESM is preferred.'))}),X}};var m7={meta:{docs:'Ensure imports values start with "./"',recommended:!0},check($,J){let Z=t($);if(!Z)return[];let X=[],[Y,z]=i(Z,"imports");if(Y==null||typeof Y!=="object")return[];return W0(Y,z,!0,(Q,G)=>{if(typeof Q!=="string")return;if(!Q.startsWith("."))return;if(Q.startsWith("./"))return;let q=`./${Q.replace(/^[/]+/,"")}`;X.push(n(J.filePath,$,G.path,"publint/imports-value-invalid",`${Z0(G.path)} is "${Q}" which is invalid as it does not start with "./". Use "${q}" instead.`,"error",'Relative imports values must start with "./".'))}),X}};var d7={meta:{docs:"Disallow local file references in dependencies",recommended:!0},check($,J){let Z=t($);if(!Z)return[];let X=[],Y=["dependencies","optionalDependencies","peerDependencies"];for(let z of Y){let Q=Z[z];if(!Q||typeof Q!=="object")continue;for(let G of Object.keys(Q)){let q=Q[G];if(typeof q==="string"&&(q.startsWith("file:")||q.startsWith("link:")))X.push(n(J.filePath,$,[z,G],"publint/local-dependency",`The "${G}" dependency references "${q}" that will likely not work when installed by end-users.`,"error","Local file references (file: or link:) are not portable and will fail for consumers of the package."))}}return X}};var o7={meta:{docs:'Suggest specifying the "type" field in package.json',recommended:!0},check($,J){let Z=t($);if(!Z)return[];if(Z.type==null)return[n(J.filePath,$,["name"],"publint/use-type",'The package does not specify the "type" field. Node.js may attempt to detect the package type causing a small performance hit. Consider adding "type": "commonjs" or "type": "module".',"warning",'Adding "type" helps Node.js resolve module format without detection overhead.')];return[]}};import{existsSync as TG,readFileSync as EG}from"fs";var c7={meta:{docs:"Ensure bin files have a shebang for executability",recommended:!0},check($,J){let Z=t($);if(!Z)return[];let X=[],Y=u0(J.filePath),[z,Q]=i(Z,"bin");if(z==null)return[];if(typeof z==="string")GX(z,Q,Y,X,J.filePath,$);else if(typeof z==="object"){for(let G of Object.keys(z))if(typeof z[G]==="string")GX(z[G],Q.concat(G),Y,X,J.filePath,$)}return X}};function GX($,J,Z,X,Y,z){let Q=S0(Z,$);if(!TG(Q))return;if(!s0($))return;let G;try{G=EG(Q,"utf8")}catch{return}if(!zX(G))X.push(n(Y,z,J,"publint/bin-file-not-executable",`${Z0(J)} is "${$}" but the file is not executable. It should start with a shebang, e.g. #!/usr/bin/env node.`,"error","Bin files must start with a shebang (e.g. #!/usr/bin/env node) to be executable."))}import{existsSync as qX,readFileSync as UX}from"fs";var r7={meta:{docs:'Ensure files under "module" condition in exports are ESM',recommended:!0},check($,J){let Z=t($);if(!Z)return[];let X=[],Y=u0(J.filePath),[z,Q]=i(Z,"exports");if(z==null)return[];W0(z,Q,!1,(U,W)=>{if(typeof U!=="string")return;if(!W.path.includes("module"))return;if(!U.startsWith("./")&&!U.startsWith("../"))return;if(U.includes("*"))return;let K=S0(Y,U);if(!qX(K))return;if(!s0(U))return;let H;try{H=UX(K,"utf8")}catch{return}if(Y1(H)==="CJS")X.push(n(J.filePath,$,W.path,"publint/exports-module-should-be-esm",`${Z0(W.path)} should be ESM, but the code is written in CJS.`,"error",'The "module" condition is only used by bundlers and must contain ESM code.'))});let[G,q]=i(Z,"imports");if(G!=null&&typeof G==="object")W0(G,q,!0,(U,W)=>{if(typeof U!=="string")return;if(!W.path.includes("module"))return;if(!U.startsWith("./"))return;if(U.includes("*"))return;let K=S0(Y,U);if(!qX(K))return;if(!s0(U))return;let H;try{H=UX(K,"utf8")}catch{return}if(Y1(H)==="CJS")X.push(n(J.filePath,$,W.path,"publint/exports-module-should-be-esm",`${Z0(W.path)} should be ESM, but the code is written in CJS.`,"error",'The "module" condition is only used by bundlers and must contain ESM code.'))});return X}};import{existsSync as g1}from"fs";import{dirname as DG,isAbsolute as RG,resolve as OG}from"path";function l7($,J){let Z=J;while(Z.startsWith("./"))Z=Z.slice(2);let X=Z.split("/")[0];if(!X||X===".."||X.startsWith("."))return!1;let Y=RG(J)?DG(J).split("/")[0]||"/":OG($,X);return!g1(Y)}var a7={meta:{docs:"Ensure files referenced in package.json exist",recommended:!0},check($,J){let Z=t($);if(!Z)return[];let X=[],Y=u0(J.filePath),z=["main","module","types","typings","unpkg","jsdelivr"];for(let W of z){let[K,H]=i(Z,W);if(K==null||typeof K!=="string")continue;if(l7(Y,K))continue;let V=S0(Y,K);if(!KX(V))X.push(n(J.filePath,$,H,"publint/file-does-not-exist",`${Z0(H)} is "${K}" but the file does not exist.`,"error","The referenced file path cannot be found. Check the path for typos."))}let[Q,G]=i(Z,"bin");if(Q!=null){if(typeof Q==="string")WX(Q,G,X,J.filePath,$,Y);else if(typeof Q==="object"){for(let W of Object.keys(Q))if(typeof Q[W]==="string")WX(Q[W],G.concat(W),X,J.filePath,$,Y)}}let[q,U]=i(Z,"exports");if(q!=null)W0(q,U,!1,(W,K)=>{if(typeof W!=="string")return;if(!W.startsWith("./")&&!W.startsWith("../"))return;if(W.includes("*"))return;if(l7(Y,W))return;let H=S0(Y,W);if(!g1(H))X.push(n(J.filePath,$,K.path,"publint/file-does-not-exist",`${Z0(K.path)} is "${W}" but the file does not exist.`,"error","The referenced file path cannot be found. Check the path for typos."))});return X}};function WX($,J,Z,X,Y,z){if(l7(z,$))return;let Q=S0(z,$);if(!KX(Q))Z.push(n(X,Y,J,"publint/file-does-not-exist",`${Z0(J)} is "${$}" but the file does not exist.`,"error","The referenced file path cannot be found. Check the path for typos."))}function KX($){if(g1($))return!0;if(g1(`${$}.js`))return!0;if(g1(`${$}/index.js`))return!0;return!1}import{existsSync as LG,readFileSync as PG}from"fs";import{extname as CG}from"path";var s7={meta:{docs:"Ensure file code format matches its extension and package type",recommended:!0},check($,J){let Z=t($);if(!Z)return[];let X=[],Y=u0(J.filePath),z=Z.type,[Q,G]=i(Z,"main");if(Q!=null&&typeof Q==="string")HX(Q,G,Y,z,X,J.filePath,$);let[q,U]=i(Z,"exports");if(q!=null)W0(q,U,!1,(W,K)=>{if(typeof W!=="string")return;if(!W.startsWith("./")&&!W.startsWith("../"))return;if(W.includes("*"))return;if(K.path.includes("browser"))return;HX(W,K.path,Y,z,X,J.filePath,$)});return X}};function HX($,J,Z,X,Y,z,Q){let G=S0(Z,$);if(!LG(G))return;if(!s0($))return;let q;try{q=PG(G,"utf8")}catch{return}let U=Y1(q);if(U==="unknown"||U==="mixed")return;let W=JX(G,X);if(U===W)return;let K=CG(G),H=XX(U),A=(YX(K)?"FILE_INVALID_EXPLICIT_FORMAT":"FILE_INVALID_FORMAT")==="FILE_INVALID_EXPLICIT_FORMAT"?`${Z0(J)} is "${$}" and ends with the ${K} extension, but the code is written in ${U}. Consider using the ${H} extension.`:`${Z0(J)} is "${$}" and is written in ${U}, but is interpreted as ${W}. Consider using the ${H} extension.`;Y.push(n(z,Q,J,"publint/file-invalid-format",A,"warning",`The file's code format (${U}) doesn't match the expected format (${W}) based on its extension and package type.`))}import{existsSync as IG,readFileSync as SG}from"fs";var n7={meta:{docs:'Ensure the "module" field points to an ESM file',recommended:!0},check($,J){let Z=t($);if(!Z)return[];let[X,Y]=i(Z,"module");if(X==null||typeof X!=="string")return[];let z=u0(J.filePath),Q=S0(z,X);if(!IG(Q))return[];if(!s0(X))return[];let G;try{G=SG(Q,"utf8")}catch{return[]}if(Y1(G)==="CJS")return[n(J.filePath,$,Y,"publint/module-should-be-esm",`${Z0(Y)} should be ESM, but the code is written in CJS.`,"error",'The "module" field is intended for ESM output used by bundlers. It should point to an ESM file.')];return[]}};var VX={name:"publint",rules:{"use-type":_0(o7),"local-dependency":_0(d7),"deprecated-field-jsnext":_0(I7),"has-module-but-no-exports":_0(p7),"field-invalid-value-type":_0(g7),"exports-types-should-be-first":_0(k7),"exports-default-should-be-last":_0(S7),"exports-module-should-precede-require":_0(b7),"exports-value-invalid":_0(f7),"exports-missing-root-entrypoint":_0(y7),"exports-fallback-array-use":_0(v7),"imports-key-invalid":_0(h7),"imports-value-invalid":_0(m7),"imports-default-should-be-last":_0(x7),"imports-module-should-precede-require":_0(u7),"file-does-not-exist":_0(a7),"file-invalid-format":_0(s7),"module-should-be-esm":_0(n7),"bin-file-not-executable":_0(c7),"exports-module-should-be-esm":_0(r7)}};var AX={meta:{docs:"Ensure all imports appear before other statements",recommended:!1},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=!1,z=0;for(let Q=0;Q<X.length;Q++){let G=X[Q].trim();if(!G||G.startsWith("//")||G.startsWith("/*")||G.startsWith("*"))continue;let q=G.match(/^\s*import\s+/);if(!q&&G.length>0){if(Y=!0,z===0)z=Q+1}if(Y&&q)Z.push({filePath:J.filePath,line:Q+1,column:1,ruleId:"import/first",message:"Import statement must appear before other statements",severity:"error"})}return Z}};var _X={meta:{docs:"Disallow duplicate specifier names in a single import declaration"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.match(/^\s*import\s*\{([^}]*)\}\s*from\s*['"][^'"]+['"]/);if(!Q)continue;let q=Q[1].split(",").map((W)=>W.trim()).filter(Boolean).map((W)=>W.split(/\s+as\s+/i)[0].trim()),U=new Set;for(let W of q){if(U.has(W)){Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,z.indexOf(W)+1),ruleId:"pickier/import-dedupe",message:"Expect no duplication in imports",severity:"warning"});break}U.add(W)}}return Z}};import{existsSync as vG,readFileSync as yG}from"fs";import{dirname as bG,resolve as kG}from"path";var FX={meta:{docs:"Ensure named imports correspond to a named export in the remote file",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=bG(J.filePath);for(let z=0;z<X.length;z++){let G=X[z].match(/\bimport\s+\{([^}]+)\}\s+from\s+['"]([^'"]+)['"]/);if(G){let q=G[1].split(",").map((H)=>H.trim().split(/\s+as\s+/)[0].trim()),U=G[2];if(!U.startsWith(".")&&!U.startsWith("/"))continue;let W=[".ts",".tsx",".js",".jsx",""],K="";for(let H of W){let V=kG(Y,U+H);if(vG(V)){K=yG(V,"utf8");break}}if(K)for(let H of q){let V=new RegExp(`\\bexport\\s+(?:const|let|var|function|class)\\s+${H}\\b`),A=new RegExp(`\\bexport\\s+\\{[^}]*\\b${H}\\b[^}]*\\}`);if(![V,A].some((F)=>F.test(K)))Z.push({filePath:J.filePath,line:z+1,column:1,ruleId:"import/named",message:`'${H}' not found in '${U}'`,severity:"error"})}}}return Z}};import{existsSync as wX,readFileSync as fG}from"fs";import{dirname as BX,resolve as MX}from"path";var jX={meta:{docs:"Ensure imports don't create circular dependencies",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=J.filePath,z=new Set,Q=new Set;function G(U,W){if(Q.has(U))return!0;if(z.has(U))return!1;z.add(U),Q.add(U);try{let K=fG(U,"utf8"),H=q(K,BX(U));for(let V of H)if(G(V,[...W,V]))return!0}catch{}return Q.delete(U),!1}function q(U,W){let K=[],H=/\bimport(?:\s{2,}|\s+\S.*?(?:[\n\r\u2028\u2029]\s*|[\t\v\f \xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF]))from\s+['"]([^'"]+)['"]/g,V;for(V=H.exec(U);V!==null;V=H.exec(U)){let A=V[1];if(A.startsWith(".")||A.startsWith("/")){let _=[".ts",".tsx",".js",".jsx",""];for(let w of _){let F=MX(W,A+w);if(wX(F)){K.push(F);break}}}}return K}for(let U=0;U<X.length;U++){let K=X[U].match(/\bimport(?:\s{2,}|\s+\S.*?(?:[\n\r\u2028\u2029]\s*|[\t\v\f \xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF]))from\s+['"]([^'"]+)['"]/);if(K){let H=K[1];if(H.startsWith(".")||H.startsWith("/")){let V=[".ts",".tsx",".js",".jsx",""],A="";for(let _ of V){let w=MX(BX(Y),H+_);if(wX(w)){A=w;break}}if(A){if(z.clear(),Q.clear(),Q.add(Y),G(A,[Y,A]))Z.push({filePath:J.filePath,line:U+1,column:1,ruleId:"import/no-cycle",message:"Dependency cycle detected",severity:"error"})}}}}return Z}};var NX={meta:{docs:"Disallow duplicate module imports - all imports from the same module should be combined"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=new Map,z=!1;for(let Q=0;Q<X.length;Q++){let G=X[Q];if(z){let V=G.indexOf("*/");if(V>=0)G=G.slice(V+2),z=!1;else continue}let q=G.indexOf("/*"),U=G.indexOf("//");if(q>=0&&(U===-1||q<U)){let V=G.indexOf("*/",q+2);if(V>=0)G=G.slice(0,q)+G.slice(V+2);else z=!0,G=G.slice(0,q)}if(U>=0)G=G.slice(0,U);let W=G.trim();if(!W)continue;let K=W.match(/^import\s+(?:type\s+)?(?:\{[^}]*\}|[\w$]+(?:\s*,\s*\{[^}]*\})?|\*\s+as\s+[\w$]+)\s+from\s+(['"`])(.+?)\1/);if(K){let V=K[2];if(Y.has(V)){let A=Y.get(V);Z.push({filePath:J.filePath,line:Q+1,column:1,ruleId:"no-duplicate-imports",message:`'${V}' imported multiple times (also imported on line${A.length>1?"s":""} ${A.join(", ")})`,severity:"error",help:`Combine all imports from '${V}' into a single import statement`}),A.push(Q+1)}else Y.set(V,[Q+1])}let H=W.match(/^export\s+(?:type\s+)?(?:\{[^}]*\}|\*(?:\s+as\s+[\w$]+)?)\s+from\s+(['"`])(.+?)\1/);if(H){let V=H[2],A=`export:${V}`;if(Y.has(A)){let _=Y.get(A);Z.push({filePath:J.filePath,line:Q+1,column:1,ruleId:"no-duplicate-imports",message:`'${V}' re-exported multiple times (also exported on line${_.length>1?"s":""} ${_.join(", ")})`,severity:"error",help:`Combine all re-exports from '${V}' into a single export statement`}),_.push(Q+1)}else Y.set(A,[Q+1])}}return Z}};var TX={meta:{docs:"Disallow importing from dist directories"},check:($,J)=>{let Z=[],X=new RegExp(`^\\s*import\\s[^;]*?from\\s*['"]([^'"]+)['"]`,"m"),Y=$.split(/\r?\n/);for(let z=0;z<Y.length;z++){let Q=Y[z],G=Q.match(X);if(!G)continue;let q=G[1];if(q==="dist"||(q.startsWith(".")||q.startsWith("/"))&&/(?:^|\/)dist(?:\/.|$)/.test(q))Z.push({filePath:J.filePath,line:z+1,column:Math.max(1,Q.indexOf(q)+1),ruleId:"pickier/no-import-dist",message:`Do not import modules in \`dist\` folder, got ${q}`,severity:"error"})}return Z}};var EX={meta:{docs:"Disallow importing from node_modules by explicit path"},check:($,J)=>{let Z=[],X=new RegExp(`^\\s*import\\s[^;]*?from\\s*['"]([^'"]+)['"]`,"m"),Y=/require\(\s*['"]([^'"]+)['"]\s*\)/,z=$.split(/\r?\n/);for(let Q=0;Q<z.length;Q++){let G=z[Q],q=G.match(X),U=G.match(Y),W=q?.[1]||U?.[1];if(!W)continue;if(W.includes("/node_modules/")){let K=Math.max(1,G.indexOf(W)+1);Z.push({filePath:J.filePath,line:Q+1,column:K,ruleId:"pickier/no-import-node-modules-by-path",message:"Do not import modules in `node_modules` folder by path",severity:"error"})}}return Z}};import{existsSync as gG}from"fs";import{dirname as pG,join as xG,resolve as hG}from"path";var DX={meta:{docs:"Ensure imports point to a file/module that can be resolved",recommended:!0},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=pG(J.filePath);for(let z=0;z<X.length;z++){let Q=X[z],G=[...Q.matchAll(/\bimport(?:\s{2,}|\s+\S.*?(?:[\n\r\u2028\u2029]\s*|[\t\v\f \xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF]))from\s+['"]([^'"]+)['"]/g),...Q.matchAll(/\bimport\s*\(\s*['"]([^'"]+)['"]\s*\)/g),...Q.matchAll(/\brequire\s*\(\s*['"]([^'"]+)['"]\s*\)/g)];for(let q of G){let U=q[1];if(!U.startsWith(".")&&!U.startsWith("/"))continue;let W=[],K=[".ts",".tsx",".js",".jsx",".mjs",".cjs",""];for(let V of K){let A=hG(Y,U+V);W.push(A),W.push(xG(A,`index${V}`))}if(!W.some((V)=>gG(V)))Z.push({filePath:J.filePath,line:z+1,column:1,ruleId:"import/no-unresolved",message:`Unable to resolve path to module '${U}'`,severity:"error"})}}return Z}};function RX($,J,Z){let X=Z.order==="desc"?-1:1,Y=Z.type||"alphabetical",z=Z.ignoreCase?$.toLowerCase():$,Q=Z.ignoreCase?J.toLowerCase():J;if(Y==="line-length")return(z.length-Q.length)*X;if(Y==="natural")return z.localeCompare(Q,void 0,{numeric:!0,sensitivity:"base"})*X;if(Y==="unsorted")return 0;return z.localeCompare(Q)*X}var uG=new RegExp(`^export\\s+\\{[^}]*\\}\\s+from\\s+['"][^'"]+['"];?\\s*$`);function I8($){return uG.test($)}var OX={meta:{docs:"Ensure contiguous export statements are sorted consistently."},check:($,J)=>{let Z=[],X=J.config.pluginRules?.["pickier/sort-exports"]?.[1]||{},Y=$.split(/\r?\n/),z=0;while(z<Y.length){while(z<Y.length&&!I8(Y[z]))z++;if(z>=Y.length)break;let Q=[],G=z;while(G<Y.length){let q=Y[G];if(I8(q)){Q.push({idx:G,line:q}),G++;continue}if(X.partitionByNewLine&&q.trim()==="")break;else break}if(Q.length>1){let q=Q.map((K)=>K.line),U=[...q].sort((K,H)=>RX(K,H,X));if(!q.every((K,H)=>K===U[H])){let K=q.findIndex((V,A)=>V!==U[A]),H=Q[K]?.idx??Q[0].idx;Z.push({filePath:J.filePath,line:H+1,column:1,ruleId:"pickier/sort-exports",message:"Export statements are not sorted.",severity:"warning"})}}z=G+1}return Z},fix:($,J)=>{let Z=J.config.pluginRules?.["pickier/sort-exports"]?.[1]||{},Y=[...$.split(/\r?\n/)],z=0;while(z<Y.length){while(z<Y.length&&!I8(Y[z]))z++;if(z>=Y.length)break;let Q=[],G=z;while(G<Y.length){let q=Y[G];if(I8(q)){Q.push(G),G++;continue}if(Z.partitionByNewLine&&q.trim()==="")break;else break}if(Q.length>1){let q=Q.map((K)=>Y[K]),U=[...q].sort((K,H)=>RX(K,H,Z));if(!q.every((K,H)=>K===U[H]))Q.forEach((K,H)=>{Y[K]=U[H]})}z=G+1}return Y.join(`
126
+ `)}};var LX={meta:{docs:"Enforce sorted TypeScript heritage clauses (extends/implements lists)"},check:($,J)=>{let Z=J.options||{},X=Z.type||"alphabetical",Y=Z.order||"asc",z=Z.ignoreCase!==!1,Q=Array.isArray(Z.groups)?Z.groups:[],G=Z.customGroups||{},q=$.split(/\r?\n/),U=[],W=(E)=>Y==="asc"?E:-E,K=(E,j)=>(z?E.toLowerCase():E).localeCompare(z?j.toLowerCase():j),H=(E,j)=>(z?E.toLowerCase():E).localeCompare(z?j.toLowerCase():j,void 0,{numeric:!0}),V=(E,j)=>{if(X==="line-length")return W(E.length-j.length);if(X==="natural")return W(H(E,j));if(X==="unsorted")return 0;return W(K(E,j))},A=Object.fromEntries(Object.entries(G).map(([E,j])=>{let v=(Array.isArray(j)?j:[j]).map((k)=>new RegExp(k));return[E,v]})),_=[];for(let E of Q)if(Array.isArray(E))_.push(...E);else _.push(E);if(!_.includes("unknown"))_.push("unknown");let w=(E)=>{for(let[j,O]of Object.entries(A))if(O.some((v)=>v.test(E)))return j;return"unknown"},F=(E)=>{let j=[],O=0,v="";for(let k=0;k<E.length;k++){let L=E[k];if(L==="<")O++;else if(L===">")O=Math.max(0,O-1);if(L===","&&O===0){j.push(v.trim()),v="";continue}v+=L}if(v.trim())j.push(v.trim());return j},M=(E)=>{let j=E.trim(),O=j.match(/^([A-Z_$][\w$.]*)/i);return O?O[1]:j},T=(E,j)=>{let O=F(j);if(O.length<=1)return;let v=O.map(M),k=v.map(w),L=v.map((b,P)=>({n:b,g:k[P],i:P})).sort((b,P)=>{let I=_.indexOf(b.g),S=_.indexOf(P.g);if(I!==S)return I-S;return V(b.n,P.n)}).map((b)=>b.n);if(!v.every((b,P)=>b===L[P]))U.push({filePath:J.filePath,line:E,column:1,ruleId:"sort-heritage-clauses",message:"Heritage clauses are not sorted",severity:"warning"})};for(let E=0;E<q.length;E++){let j=q[E],O=j.match(/^\s*interface\s+[A-Za-z_$][^{]*\bextends\s+(.+?)\s*\{/);if(O)T(E+1,O[1]);let v=j.match(/^\s*class\s+[A-Za-z_$][^{]*\bimplements\s+(.+?)\s*\{/);if(v)T(E+1,v[1])}return U}};var PX={meta:{docs:"Require object keys to be sorted (ESLint-compatible core rule subset)"},check:()=>{return[]}};var CX={meta:{docs:"Enforce sorted named imports within each import statement"},check:($,J)=>{let Z=J.options||{},X=Z.type||"alphabetical",Y=Z.order||"asc",z=Z.ignoreCase!==!1,Q=Boolean(Z.ignoreAlias),G=$.split(/\r?\n/),q=[],U=(W,K)=>{let H=0;if(X==="line-length")H=W.length-K.length;else{let V=z?W.toLowerCase():W,A=z?K.toLowerCase():K;H=V.localeCompare(A)}return Y==="asc"?H:-H};for(let W=0;W<G.length;W++){let H=G[W].match(/^\s*import\s+\{([^}]*)\}\s+from\s+['"][^'"]+['"]/);if(!H)continue;let A=H[1].split(",").map((M)=>M.trim()).filter(Boolean);if(A.length<=1)continue;let _=A.map((M)=>{let T=M.replace(/^type\s+/,""),E=T.match(/^([\w$]+)\s+as\s+([\w$]+)$/);if(E)return Q?E[2]:E[1];let j=T.match(/^([\w$]+)$/);return j?j[1]:T}),w=[..._].sort(U);if(!_.every((M,T)=>M===w[T]))q.push({filePath:J.filePath,line:W+1,column:1,ruleId:"sort-named-imports",message:"Named imports are not sorted",severity:"warning"})}return q}};var IX={meta:{docs:"Enforce sorted object keys"},check:($,J)=>{let Z=J.options||{},X=Z.type||"alphabetical",Y=Z.order||"asc",z=Z.ignoreCase!==!1,Q=Boolean(Z.partitionByNewLine),G=$.split(/\r?\n/),q=[],U=(K,H)=>{let V=0;if(X==="line-length")V=K.length-H.length;else{let A=z?K.toLowerCase():K,_=z?H.toLowerCase():H;V=A.localeCompare(_)}return Y==="asc"?V:-V},W=0;while(W<G.length){let K=G[W],H=K.indexOf("{");if(H!==-1){let V=K.slice(0,H);if(/=\s*$|\(\s*$|\breturn\s*$/.test(V)){let A=0,_=W,w=W;for(;w<G.length;w++){for(let F of G[w])if(F==="{")A++;else if(F==="}")A--;if(A===0)break}if(w>_){let F=G.slice(_+1,w),M=[],T={startLine:_+2,props:[]},E=()=>{if(T.props.length)M.push(T);T={startLine:0,props:[]}};for(let j=0;j<F.length;j++){let O=F[j];if(Q&&/^\s*$/.test(O)){E();continue}if(/^\s*\.\.\./.test(O))continue;if(/\{|\}/.test(O))continue;let v=O.match(/^\s*['"]?([\w$-]+)['"]?\s*:/);if(v){if(T.startLine===0)T.startLine=_+2+j;T.props.push({key:v[1],line:_+2+j})}}E();for(let j of M){let O=j.props.map((L)=>L.key),v=[...O].sort(U);if(!(O.length<=1||O.every((L,h)=>L===v[h]))&&j.props.length>0){let L=j.props[0];q.push({filePath:J.filePath,line:L.line,column:1,ruleId:"sort-objects",message:"Object keys are not sorted",severity:"warning"})}}W=w+1;continue}}}W++}return q}};var SX={meta:{docs:"Enforce top-level functions to use function declarations"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y];if(/^\s+/.test(z))continue;if(/^\s*(?:\/\/|\/\*)/.test(z))continue;let Q=z.match(/^const\s+([A-Za-z_$][\w$]*)\s*=(.*)$/);if(!Q)continue;let G=Q[2].trim();if(/^\(?[A-Z_$,]*(?:\)\s*)?=>/i.test(G)||/^function\b/.test(G)){let q=z.indexOf("const")+1;Z.push({filePath:J.filePath,line:Y+1,column:q,ruleId:"pickier/top-level-function",message:"Top-level functions should be declared with function keyword",severity:"warning"});continue}if(G.trim().length===0||/[,({]$/.test(G.trim())){let q=X[Y+1]||"";if(/^\s*(?:\(?[A-Za-z_$,]*(?:\)\s*)?=>|function\b)/.test(q)){let U=z.indexOf("const")+1;Z.push({filePath:J.filePath,line:Y+1,column:U,ruleId:"pickier/top-level-function",message:"Top-level functions should be declared with function keyword",severity:"warning"})}}}return Z}};var mG=[[/^(block|inline|inline-block|flex|inline-flex|grid|inline-grid|flow-root|contents|hidden|table|table-caption|table-cell|table-column|table-column-group|table-footer-group|table-header-group|table-row-group|table-row|list-item|subgrid)$/,0],[/^(container|columns|break-after|break-before|break-inside|box-decoration|box-border|box-content|float|clear|isolation|object|overflow|overscroll|position|inset|top|right|bottom|left|start|end|z-|aspect|order)/,1],[/^(static|fixed|absolute|relative|sticky)$/,1],[/^(visible|invisible|collapse)$/,1],[/^(basis|flex-|grow|shrink|order|grid-|col-|row-|auto-cols|auto-rows|gap|justify|items|content|self|place)/,2],[/^(p|px|py|ps|pe|pt|pr|pb|pl|m|mx|my|ms|me|mt|mr|mb|ml|space|indent)-/,3],[/^(-?(p|px|py|ps|pe|pt|pr|pb|pl|m|mx|my|ms|me|mt|mr|mb|ml|space|indent)-)/,3],[/^(w-|h-|min-w|max-w|min-h|max-h|size-)/,4],[/^(font|text|tracking|leading|list|placeholder|vertical|whitespace|break|hyphens|content|truncate|overflow-ellipsis|overflow-clip|line-clamp|underline|overline|line-through|no-underline|uppercase|lowercase|capitalize|normal-case|italic|not-italic|ordinal|slashed-zero|lining-nums|oldstyle-nums|proportional-nums|tabular-nums|diagonal-fractions|stacked-fractions|normal-nums|antialiased|subpixel-antialiased)/,5],[/^(bg-|from-|via-|to-|gradient-)/,6],[/^(border|rounded|outline|ring|divide|accent)/,7],[/^(shadow|opacity|mix-blend|bg-blend)/,8],[/^(blur|brightness|contrast|drop-shadow|grayscale|hue-rotate|invert|saturate|sepia|backdrop)/,9],[/^(border-collapse|border-separate|border-spacing|table-auto|table-fixed|caption)/,10],[/^(transition|duration|ease|delay|animate)/,11],[/^(scale|rotate|translate|skew|origin|transform|perspective)/,12],[/^(appearance|cursor|caret|pointer-events|resize|scroll|snap|touch|select|will-change)/,13],[/^(fill|stroke)/,14],[/^(sr-only|not-sr-only)$/,15]],dG=/^([a-z0-9][-a-z0-9]{0,50}:)+(?!\[)/;function oG($){let J=0;while(J<$.length){if($[J]==="[")break;let Z=$.indexOf(":",J);if(Z===-1)break;if($[Z+1]==="[")break;J=Z+1}return $.slice(J)}function cG($){let J=oG($);if(J.startsWith("!"))J=J.slice(1);for(let[Z,X]of mG)if(Z.test(J))return X;return 99}function rG($){let J=$.match(dG);if(!J)return 0;let Z=J[0].slice(0,-1).split(":"),X={sm:1,md:2,lg:3,xl:4,"2xl":5},Y=10;for(let z of Z)if(X[z]!==void 0)Y+=X[z];else Y+=20;return Y}var vX=new Map;function yX($){let J=vX.get($);if(J)return J;let Z={group:cG($),variant:rG($)};return vX.set($,Z),Z}function i7($){return[...$].sort((J,Z)=>{let X=yX(J),Y=yX(Z),z=X.group,Q=Y.group;if(z!==Q)return z-Q;let G=X.variant,q=Y.variant;if(G!==q)return G-q;return J.localeCompare(Z)})}var lG=/\b(?:class|className|:class)\s*=\s*(?:"([^"]*?)"|'([^']*?)')/g,aG=/\b(?:class|className|:class)\s*=\s*\{`([^`]*?)`\}/g,sG=/\b(?:clsx|cn|tw|cva|tv)\s*\(\s*(?:"([^"]*?)"|'([^']*?)')/g;function nG($){let J=$.replace(/\[[^\]]*\]/g,"");if(/['"`]/.test(J))return!0;if(/[{}()=]/.test(J))return!0;if(/ \? | && | \|\| /.test(J))return!0;if(/\b(?:true|false|null|undefined|function|return|typeof|instanceof)\b/.test(J))return!0;return!1}function bX($){let J=[];if(!$.includes("class")&&!$.includes("clsx")&&!$.includes("cn(")&&!$.includes("tw(")&&!$.includes("cva(")&&!$.includes("tv("))return J;for(let Z of[lG,aG,sG]){Z.lastIndex=0;let X;while((X=Z.exec($))!==null){let Y=X[1]??X[2]??"";if(!Y.trim())continue;if(nG(Y))continue;let z=$.indexOf(Y,X.index);if(z===-1)continue;J.push({value:Y,start:z,end:z+Y.length})}}return J.sort((Z,X)=>Z.start-X.start),J}function kX($){let J=[],Z="",X=0;for(let Y of $)if(Y==="[")X++,Z+=Y;else if(Y==="]")X=Math.max(0,X-1),Z+=Y;else if(/\s/.test(Y)&&X===0){if(Z)J.push(Z),Z=""}else Z+=Y;if(Z)J.push(Z);return J}function fX($){let J=i7($);return $.every((Z,X)=>Z===J[X])}var gX={meta:{docs:"Enforce consistent Tailwind CSS class ordering (layout \u2192 spacing \u2192 typography \u2192 etc.).",recommended:!0,editsStringContent:!0},check:($,J)=>{let Z=[],X=bX($);for(let{value:Y,start:z}of X){let Q=kX(Y);if(Q.length<2)continue;if(!fX(Q)){let G=$.slice(0,z),q=(G.match(/\n/g)??[]).length+1,U=G.lastIndexOf(`
127
+ `),W=U===-1?z+1:z-U;Z.push({filePath:J.filePath,line:q,column:W,ruleId:"pickier/sort-tailwind-classes",message:`Tailwind classes are not in the recommended order. Expected: "${i7(Q).join(" ")}"`,severity:"warning",help:"Run with --fix to automatically sort Tailwind classes, or reorder them manually."})}}return Z},fix:($)=>{let J=bX($);if(J.length===0)return $;let Z=[...J].reverse(),X=$;for(let{value:Y,start:z,end:Q}of Z){let G=kX(Y);if(G.length<2||fX(G))continue;let q=i7(G).join(" ");X=X.slice(0,z)+q+X.slice(Q)}return X}};var pX={name:"pickier",rules:{"sort-exports":B(OX),"sort-objects":B(IX),"sort-imports":B(C8),"sort-named-imports":B(CX),"sort-heritage-clauses":B(LX),"sort-keys":B(PX),"import-dedupe":B(_X),"import-first":B(AX),"import-named":B(FX),"import-no-cycle":B(jX),"import-no-unresolved":B(DX),"no-import-dist":B(TX),"no-import-node-modules-by-path":B(EX),"no-duplicate-imports":B(NX),"top-level-function":B(SX),"sort-tailwind-classes":gX,"prefer-const":B(R8),"prefer-template":B(O8),"no-unused-vars":B(t0)}};var xX={name:"quality",rules:{"default-case":B(d$),eqeqeq:B(o$),"no-alert":B(l$),"no-await-in-loop":B(a$),"no-caller":B(s$),"no-case-declarations":B(n$),"no-else-return":B(i$),"no-empty":B(t$),"no-empty-function":B(e$),"no-eval":B($8),"no-extend-native":B(Z8),"no-global-assign":B(X8),"no-implied-eval":B(Y8),"no-iterator":B(z8),"no-new":B(Q8),"no-new-func":B(G8),"no-new-wrappers":B(q8),"no-octal":B(U8),"no-param-reassign":B(W8),"no-proto":B(K8),"no-return-assign":B(H8),"no-shadow":B(A8),"no-throw-literal":B(_8),"no-use-before-define":B(F8),"no-useless-call":B(w8),"no-with":B(T8),"require-await":B(D8),complexity:B(m$),"max-depth":B(c$),"max-lines-per-function":B(r$),"no-extra-boolean-cast":B(J8),"no-lonely-if":B(b1),"no-sequences":B(V8),"no-useless-concat":B(B8),"no-useless-escape":B(M8),"no-useless-rename":B(j8),"no-useless-return":B(k1),"no-var":B(N8),"prefer-arrow-callback":B(E8)}};var hX={meta:{docs:"Detects potentially super-linear backtracking patterns in regex literals (heuristic)"},check:($,J)=>{let Z=[],X=/\/[^/\\\n]*(?:\\.[^/\\\n]*)*\//g,Y=(K,H,V)=>{let A=$.slice(0,K),_=(A.match(/\n/g)||[]).length+1,w=K-A.lastIndexOf(`
128
+ `);Z.push({filePath:J.filePath,line:_,column:w,ruleId:"no-super-linear-backtracking",message:V,severity:"error"})},z=[],Q=/\/\*[\s\S]*?\*\//g,G;while(G=Q.exec($))z.push({start:G.index,end:G.index+G[0].length});let q=/\/\/[^\n]*/g,U;while(U=q.exec($))z.push({start:U.index,end:U.index+U[0].length});let W;while(W=X.exec($)){let K=W[0],H=W.index;if(z.some((F)=>H>=F.start&&H<F.end))continue;if(H>0){let F=$[H-1];if(F===")"||F==="]"||F==="."||/[\w$]/.test(F))continue;let M=K.slice(1,K.lastIndexOf("/"));if(/^\s+\w/.test(M)&&/\w\s*\)/.test(M))continue}let A=K.slice(1,K.lastIndexOf("/")).replace(/\[.*?\]/g,"");if(A.includes(".+?\\s*")||A.includes("\\s*.+?")||A.includes(".*\\s*")||A.includes("\\s*.*")){Y(H,K.length,"The combination of ' .*' or ' .+?' with '\\s*' can cause super-linear backtracking due to exchangeable characters");continue}let w=A.replace(/\s+/g,"");if(/(?:\.\*\??){2,}/.test(w)||/(?:\.\+\??){2,}/.test(w)||/\.\*\??\.\+\?|\.\+\??\.\*\?/.test(w)){Y(H,K.length,"Multiple adjacent unlimited wildcard quantifiers can cause super-linear backtracking");continue}if(/\((?:\?:)?[^)]*?[+*][^)]*\)\s*[+*]/.test(A.replace(/\\[()]/g,"_"))){Y(H,K.length,"Nested unlimited quantifiers detected (e.g., (.+)+) which can cause catastrophic backtracking");continue}}return Z}};function iG($,J){let Z=J-1;while(Z>=0&&($[Z]===" "||$[Z]==="\t"))Z--;let X=Z>=0?$[Z]:"",Y="=(<>!&|?:;,{[+(~^%*/";if(!(Z<0||Y.includes(X)||/\b(?:return|typeof|void|delete|throw|new|in|of|case)\s*$/.test($.slice(Math.max(0,Z-5),Z+1))))return null;let Q=J+1,G=!1,q=!1,U=-1;while(Q<$.length){let _=$[Q];if(q)q=!1;else if(_==="\\")q=!0;else if(_==="["){if(!G)G=!0}else if(_==="]"){if(G)G=!1}else if(_==="/"&&!G){U=Q;break}else if(_===`
129
+ `)break;Q++}if(U<=J)return null;let W=$.slice(J+1,U),K=U+1;while(K<$.length&&/[gimsuvy]/.test($[K]))K++;if(/\\[1-9]/.test(W))return null;let H=0,V=-1,A=!1;for(let _=0;_<W.length;_++){if(W[_]==="\\"){_++;continue}if(W[_]==="["&&!A){A=!0;continue}if(W[_]==="]"&&A){A=!1;continue}if(A)continue;if(W[_]==="("&&W.slice(_+1,_+3)!=="?:"&&W.slice(_+1,_+3)!=="?="&&W.slice(_+1,_+3)!=="?!"&&W.slice(_+1,_+4)!=="?<="&&W.slice(_+1,_+4)!=="?<!"){if(V<0)V=_;H++}}if(H===0)return null;return{patternStart:J,patternEnd:K,pattern:W,capCount:H,firstCapOffset:V}}function tG($,J,Z){let X=Z;while(X<$.length&&($[X]===" "||$[X]==="\t"))X++;if($[X]==="."){let q=$.slice(X+1,X+20);if(/^test\s*\(/.test(q))return!1;if(/^exec\s*\(/.test(q))return!0}let Y=J-1;while(Y>=0&&($[Y]===" "||$[Y]==="\t"))Y--;if($[Y]==="("){let U=Y-1;while(U>=0&&($[U]===" "||$[U]==="\t"))U--;let W=$.slice(Math.max(0,U-20),U+1);if(/\.match\s*$/.test(W))return!0;if(/\.matchAll\s*$/.test(W))return!0;if(/\.exec\s*$/.test(W))return!0;if(/\.replace\s*$/.test(W))return!0;if(/\.replaceAll\s*$/.test(W))return!0;if(/\.split\s*$/.test(W))return!0;if(/\.search\s*$/.test(W))return!1;if(/\.test\s*$/.test(W))return!1}let z=$.lastIndexOf(`
130
+ `,J)+1,G=$.slice(z,J).trim().match(/(?:const|let|var)\s+(\w+)\s*=\s*$/);if(G){let q=G[1],U=$.slice(Z),W=new RegExp(`\\b${q}\\.exec\\s*\\(`),K=new RegExp(`\\b${q}\\.test\\s*\\(`),H=new RegExp(`\\.match(?:All)?\\s*\\(\\s*${q}\\s*\\)`),V=new RegExp(`\\.replace(?:All)?\\s*\\(\\s*${q}`),A=W.test(U),_=H.test(U),w=V.test(U),F=K.test(U);if(A||_||w)return!0;if(F)return!1;return!0}return!0}function eG($,J){let Z=J-1;while(Z>=0&&($[Z]===" "||$[Z]==="\t"))Z--;let X=Z>=0?$[Z]:"",Y="=(<>!&|?:;,{[+(~^%*/";if(!(Z<0||Y.includes(X)||/\b(?:return|typeof|void|delete|throw|new|in|of|case)\s*$/.test($.slice(Math.max(0,Z-5),Z+1))))return J+1;let Q=J+1,G=!1,q=!1;while(Q<$.length){let U=$[Q];if(q)q=!1;else if(U==="\\")q=!0;else if(U==="["){if(!G)G=!0}else if(U==="]"){if(G)G=!1}else if(U==="/"&&!G){Q++;while(Q<$.length&&/[gimsuvy]/.test($[Q]))Q++;return Q}else if(U===`
131
+ `)break;Q++}return J+1}function $2($,J){let Z=[],X=J.filePath,Y=0;while(Y<$.length){let z=$[Y];if(z==="/"&&$[Y+1]==="/"){while(Y<$.length&&$[Y]!==`
132
+ `)Y++;continue}if(z==="/"&&$[Y+1]==="*"){Y+=2;while(Y<$.length-1&&!($[Y]==="*"&&$[Y+1]==="/"))Y++;Y+=2;continue}if(z==="'"||z==='"'||z==="`"){let Q=z;Y++;while(Y<$.length){if($[Y]==="\\"){Y+=2;continue}if($[Y]===Q){Y++;break}Y++}continue}if(z==="/"){let Q=iG($,Y);if(!Q){let G=eG($,Y);if(G>Y+1)Y=G;else Y++;continue}if(!tG($,Q.patternStart,Q.patternEnd)){let G=Q.patternStart+1+(Q.firstCapOffset>=0?Q.firstCapOffset:0),q=$.slice(0,G),U=(q.match(/\r?\n/g)||[]).length+1,W=G-(q.lastIndexOf(`
133
+ `)+1)+1;Z.push({filePath:X,line:U,column:W,ruleId:"regexp/no-unused-capturing-group",message:"Unused capturing group in regular expression; use non-capturing group (?:...) instead",severity:"error"})}Y=Q.patternEnd;continue}Y++}return Z}var uX={meta:{docs:"Flags regex literals with unused capturing groups (context-aware)",recommended:!1},check($,J){return $2($,J)}};var mX={meta:{docs:"Disallow lazy quantifiers that don't affect the matching behavior",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y];if(z.trim().startsWith("//")||z.trim().startsWith("/*")||z.trim().startsWith("*"))continue;let Q=/\/(?![/*])([^/\n\r\\]|\\.)+\/[gimsuvy]*/g,G;for(G=Q.exec(z);G!==null;G=Q.exec(z)){let q=G[0],U=q.slice(1,q.lastIndexOf("/"));if(/[+*?]\?\$$/.test(U))Z.push({filePath:J.filePath,line:Y+1,column:G.index+U.search(/[+*?]\?\$$/)+2,ruleId:"regexp/no-useless-lazy",message:"Lazy quantifier is useless before end-of-string anchor",severity:"error"});if(/[+*?]\?$/.test(U))Z.push({filePath:J.filePath,line:Y+1,column:G.index+U.length-1,ruleId:"regexp/no-useless-lazy",message:"Lazy quantifier is useless at the end of the pattern",severity:"error"})}}return Z}};var dX={name:"regexp",rules:{"no-super-linear-backtracking":B(hX),"no-unused-capturing-group":B(uX),"no-useless-lazy":B(mX)}};var oX={meta:{docs:"Use $() instead of backticks for command substitution",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z="",Q=!1;for(let G=0;G<X.length;G++){let q=X[G];if(Y){if(q.trim()===z)Y=!1;continue}let U=q.match(/<<-?\s*['"]?(\w+)['"]?/);if(U)Y=!0,z=U[1];if(q.replace(/^\s+/,"").startsWith("#"))continue;Q=!1;for(let K=0;K<q.length;K++){let H=q[K];if(H==="#"&&!Q)break;if(H==="\\"){K++;continue}if(H==="'"){Q=!Q;continue}if(Q)continue;if(H==="`"){Z.push({filePath:J.filePath,line:G+1,column:K+1,ruleId:"shell/command-substitution",message:"Use $(...) instead of backticks for command substitution",severity:"error",help:"Replace `cmd` with $(cmd) for better readability and nesting support"});for(K++;K<q.length&&q[K]!=="`";K++)if(q[K]==="\\")K++}}}return Z},fix($,J){let Z=$.split(/\r?\n/),X=[],Y=!1,z="";for(let Q of Z){if(Y){if(X.push(Q),Q.trim()===z)Y=!1;continue}let G=Q.match(/<<-?\s*['"]?(\w+)['"]?/);if(G)Y=!0,z=G[1];let q="",U=!1,W=0;while(W<Q.length){let K=Q[W];if(K==="#"&&!U){q+=Q.slice(W);break}if(K==="\\"){q+=Q.slice(W,W+2),W+=2;continue}if(K==="'"){U=!U,q+=K,W++;continue}if(U){q+=K,W++;continue}if(K==="`"){let H="";W++;while(W<Q.length&&Q[W]!=="`")if(Q[W]==="\\")H+=Q[W+1]||"",W+=2;else H+=Q[W],W++;W++,q+=`$(${H})`}else q+=K,W++}X.push(q)}return X.join(`
134
+ `)}};var cX={meta:{docs:"Require error handling after cd commands",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z="";for(let Q=0;Q<X.length;Q++){let G=X[Q];if(Y){if(G.trim()===z)Y=!1;continue}let q=G.match(/<<-?\s*['"]?(\w+)['"]?/);if(q)Y=!0,z=q[1];let U=G.replace(/^\s+/,"");if(U.startsWith("#"))continue;let W=U.match(/^cd\s+/);if(!W)continue;let K=/\|\||&&/.test(G),H=/^\s*(?:if|elif|while|until)\s/.test(U)||/\bif\s+cd\b/.test(G),V=/\(.*\bcd\b.*\)/.test(G);if(!K&&!H&&!V)Z.push({filePath:J.filePath,line:Q+1,column:W.index+1,ruleId:"shell/no-cd-without-check",message:"cd without error handling \u2014 if it fails, subsequent commands run in the wrong directory",severity:"warning",help:"Use: cd dir || exit 1 (or || return 1 inside functions)"})}return Z}};var rX={meta:{docs:"Disallow use of eval in shell scripts",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z="";for(let Q=0;Q<X.length;Q++){let G=X[Q];if(Y){if(G.trim()===z)Y=!1;continue}let q=G.match(/<<-?\s*['"]?(\w+)['"]?/);if(q)Y=!0,z=q[1];if(G.replace(/^\s+/,"").startsWith("#"))continue;if(G.match(/(?:^|[;&|]\s*|^\s+)eval\s/)){let K=G.indexOf("eval");Z.push({filePath:J.filePath,line:Q+1,column:K+1,ruleId:"shell/no-eval",message:"Avoid using eval \u2014 it re-parses arguments and can lead to code injection",severity:"error",help:"Refactor to avoid eval. Consider using arrays for dynamic commands or indirect variable references with ${!var}"})}}return Z}};var lX={meta:{docs:"Flag exit inside subshells where it only exits the subshell",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z="",Q=0;for(let G=0;G<X.length;G++){let q=X[G];if(Y){if(q.trim()===z)Y=!1;continue}let U=q.match(/<<-?\s*['"]?(\w+)['"]?/);if(U)Y=!0,z=U[1];if(q.replace(/^\s+/,"").startsWith("#"))continue;let K=!1,H=!1;for(let V=0;V<q.length;V++){let A=q[V];if(A==="#"&&!K&&!H)break;if(A==="\\"&&!K){V++;continue}if(A==="'"&&!H){K=!K;continue}if(A==='"'&&!K){H=!H;continue}if(!K&&!H){if(A==="("&&V>0&&q[V-1]!=="$"&&q[V+1]!=="(")Q++;else if(A==="("&&V===0&&q[V+1]!=="(")Q++;else if(A===")"&&Q>0&&(V+1>=q.length||q[V+1]!==")"))Q--}}if(Q>0){let V=q.match(/\bexit\b/);if(V)Z.push({filePath:J.filePath,line:G+1,column:V.index+1,ruleId:"shell/no-exit-in-subshell",message:"exit inside a subshell only exits the subshell, not the script",severity:"warning",help:"Restructure to avoid subshells, or use return if inside a function"})}if(Q===0){let V=q.match(/(?<!\$)\((?!\()([^)]*\bexit\b[^)]*)\)(?!\))/);if(V){let A=q.indexOf("exit",V.index);Z.push({filePath:J.filePath,line:G+1,column:A+1,ruleId:"shell/no-exit-in-subshell",message:"exit inside a subshell only exits the subshell, not the script",severity:"warning",help:"Restructure to avoid subshells, or use return if inside a function"})}}}return Z}};var aX={meta:{docs:"Disallow parsing ls output \u2014 use globs or find instead",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z="";for(let Q=0;Q<X.length;Q++){let G=X[Q];if(Y){if(G.trim()===z)Y=!1;continue}let q=G.match(/<<-?\s*['"]?(\w+)['"]?/);if(q)Y=!0,z=q[1];if(G.replace(/^\s+/,"").startsWith("#"))continue;if(G.match(/\bls\b[^|]*\|/)){let V=G.indexOf("ls");Z.push({filePath:J.filePath,line:Q+1,column:V+1,ruleId:"shell/no-ls-parsing",message:"Don't parse ls output \u2014 filenames can contain special characters",severity:"warning",help:'Use globs (for f in *.txt), find (find . -name "*.txt"), or stat instead'});continue}let K=G.match(/\$\(\s*ls\b/);if(K){let V=K.index+1;Z.push({filePath:J.filePath,line:Q+1,column:V,ruleId:"shell/no-ls-parsing",message:"Don't use ls in command substitution \u2014 use globs instead",severity:"warning",help:"Replace $(ls *.txt) with glob patterns: for f in *.txt; do ...; done"});continue}let H=G.match(/`\s*ls\b/);if(H){let V=H.index+1;Z.push({filePath:J.filePath,line:Q+1,column:V,ruleId:"shell/no-ls-parsing",message:"Don't use ls in command substitution \u2014 use globs instead",severity:"warning",help:"Replace `ls` with glob patterns"})}}return Z}};var sX={meta:{docs:"Detect useless use of cat (UUOC)",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z="";for(let Q=0;Q<X.length;Q++){let G=X[Q];if(Y){if(G.trim()===z)Y=!1;continue}let q=G.match(/<<-?\s*['"]?(\w+)['"]?/);if(q)Y=!0,z=q[1];if(G.replace(/^\s+/,"").startsWith("#"))continue;let W=G.match(/\bcat\s+(["']?[\w.\/~${}*?-]+["']?)\s*\|/);if(W){let K=G.indexOf("cat");Z.push({filePath:J.filePath,line:Q+1,column:K+1,ruleId:"shell/no-useless-cat",message:`Useless use of cat \u2014 pipe the file directly instead of \`cat ${W[1]} | ...\``,severity:"warning",help:`Use \`cmd < ${W[1]}\` or pass the file as an argument to the command`})}}return Z}};var nX={meta:{docs:"Flag variables inside single quotes where they won't expand",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z="";for(let Q=0;Q<X.length;Q++){let G=X[Q];if(Y){if(G.trim()===z)Y=!1;continue}let q=G.match(/<<-?\s*['"]?(\w+)['"]?/);if(q)Y=!0,z=q[1];if(G.replace(/^\s+/,"").startsWith("#"))continue;let W=!1,K=!1,H=-1;for(let V=0;V<G.length;V++){let A=G[V];if(A==="#"&&!W&&!K)break;if(A==="\\"&&!W){V++;continue}if(A==='"'&&!W){K=!K;continue}if(A==="'"&&!K)if(!W)W=!0,H=V;else{let w=G.slice(H+1,V).match(/\$(?:[A-Za-z_]\w*|\{[^}]+\}|\([^)]*\))/);if(w)Z.push({filePath:J.filePath,line:Q+1,column:H+1+w.index+1,ruleId:"shell/no-variable-in-single-quotes",message:`Variable ${w[0]} is inside single quotes and won't be expanded`,severity:"warning",help:`Use double quotes if you want variable expansion: "..." instead of '...'`});W=!1}}}return Z}};var Z2=[/^\s*(?:local|export|declare|typeset|readonly)\s+/,/\[\[.*\]\]/,/\(\(.*\)\)/],t7=/^\$(?:\{[A-Za-z_]\w*(?:[:#%\/][^}]*)?\}|[A-Za-z_]\w*)/,iX={meta:{docs:"Quote variable expansions to prevent word splitting and globbing",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z="";for(let Q=0;Q<X.length;Q++){let G=X[Q];if(Y){if(G.trim()===z)Y=!1;continue}let q=P0(G);if(q){if(Y=!0,z=q,new RegExp(`<<-?\\s*['"]${q}['"]`).test(G))continue}if(G.replace(/^\s+/,"").startsWith("#"))continue;if(Z2.some((H)=>H.test(G)))continue;let W=[],K=0;while(K<G.length){let H=W[W.length-1];if(H==="squote"){if(G[K]==="'")W.pop();K++;continue}if(G[K]==="\\"&&K+1<G.length){K+=2;continue}if(H==="dquote"){let A=G[K];if(A==='"'){W.pop(),K++;continue}if(A==="$"&&G[K+1]==="("&&G[K+2]==="("){W.push("arith"),K+=3;continue}if(A==="$"&&G[K+1]==="("){W.push("subshell"),K+=2;continue}if(A==="$"){let _=G.slice(K).match(t7);if(_){K+=_[0].length;continue}}K++;continue}if(H==="arith"){let A=G[K];if(A===")"&&G[K+1]===")"){W.pop(),K+=2;continue}if(A==="$"){let _=G.slice(K).match(t7);if(_){K+=_[0].length;continue}}K++;continue}let V=G[K];if(V==="#"&&(K===0||/\s/.test(G[K-1])))break;if(V==="'"){W.push("squote"),K++;continue}if(V==='"'){W.push("dquote"),K++;continue}if(V==="$"&&G[K+1]==="("&&G[K+2]==="("){W.push("arith"),K+=3;continue}if(V==="$"&&G[K+1]==="("){W.push("subshell"),K+=2;continue}if(V===")"&&H==="subshell"){W.pop(),K++;continue}if(V==="$"){let A=G.slice(K).match(t7);if(A){let _=A[0];if(!/^\$[?!#@*0-9-]/.test(_))Z.push({filePath:J.filePath,line:Q+1,column:K+1,ruleId:"shell/quote-variables",message:`Unquoted variable ${_} \u2014 use "${_}" to prevent word splitting`,severity:"warning",help:`Wrap in double quotes: "${_}"`});K+=_.length;continue}}K++}}return Z}};var tX={meta:{docs:"Enforce consistent function declaration style",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z="";for(let Q=0;Q<X.length;Q++){let G=X[Q];if(Y){if(G.trim()===z)Y=!1;continue}let q=G.match(/<<-?\s*['"]?(\w+)['"]?/);if(q)Y=!0,z=q[1];let U=G.replace(/^\s+/,"");if(U.startsWith("#"))continue;let W=U.match(/^function\s+(\w+)\s*(?:\(\s*\))?\s*\{?\s*$/);if(W){let K=W[1],H=G.indexOf("function");Z.push({filePath:J.filePath,line:Q+1,column:H+1,ruleId:"shell/function-style",message:`Use \`${K}() {\` instead of \`function ${K}\` \u2014 POSIX-compatible style`,severity:"warning",help:`Replace with: ${K}() {`})}}return Z},fix($){let J=$.split(/\r?\n/),Z=[];for(let X of J){let Y=X.match(/^(\s*)function\s+(\w+)\s*(?:\(\s*\))?\s*(\{?\s*)$/);if(Y){let[,z,Q,G]=Y;Z.push(`${z}${Q}() ${G||"{"}`)}else Z.push(X)}return Z.join(`
135
+ `)}};function eX($,J){if(/^then\b/.test($)||/^do\b/.test($)||/^else\b/.test($))return!0;if(/^if\b/.test($)&&/\bthen\s*$/.test($))return!0;if(/^elif\b/.test($)&&/\bthen\s*$/.test($))return!0;if(/^(?:while|for|until)\b/.test($)&&/\bdo\s*$/.test($))return!0;if(/^case\b/.test($)&&/\bin\s*$/.test($))return!0;if(J&&/\)\s*$/.test($)&&!/\$\(/.test($)&&!/^\s*\(/.test($)&&!$.startsWith("#"))return!0;if(/\{\s*$/.test($)&&!$.startsWith("#"))return!0;return!1}function $5($){return/^(?:fi|done|esac|elif|else)\b/.test($)||/^\}/.test($)||/^;[;&]\s*$/.test($)}var Z5={meta:{docs:"Enforce consistent indentation in shell scripts",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=J.config.format.indent||2,z=0,Q=!1,G="",q=!1,U=0;for(let W=0;W<X.length;W++){let K=X[W];if(/^\s*$/.test(K))continue;if(Q){if(K.trim()===G)Q=!1;continue}let H=K.match(/<<-?\s*['"]?(\w+)['"]?/);if(H)Q=!0,G=H[1];let V=K.replace(/^\s+/,"");if(W===0&&V.startsWith("#!"))continue;if(/^case\b/.test(V)&&/\bin\s*$/.test(V))U++,q=!0;if(/^esac\b/.test(V)){if(U=Math.max(0,U-1),U===0)q=!1}if($5(V))z=Math.max(0,z-1);let A=0;for(let w=0;w<K.length;w++)if(K[w]===" ")A++;else if(K[w]==="\t")A+=Y;else break;let _=z*Y;if(A!==_&&!V.startsWith("#"))Z.push({filePath:J.filePath,line:W+1,column:1,ruleId:"shell/indent",message:`Expected ${_} spaces of indentation, found ${A}`,severity:"warning"});if(eX(V,q))z++}return Z},fix($,J){let Z=$.split(/\r?\n/),X=J.config.format.indent||2,Y=J.config.format.indentStyle==="tabs",z=[],Q=0,G=!1,q="",U=!1,W=0;for(let K=0;K<Z.length;K++){let H=Z[K];if(/^\s*$/.test(H)){z.push("");continue}if(G){if(z.push(H),H.trim()===q)G=!1;continue}let V=H.match(/<<-?\s*['"]?(\w+)['"]?/);if(V)G=!0,q=V[1];let A=H.replace(/^\s+/,"").trimEnd();if(K===0&&A.startsWith("#!")){z.push(A);continue}if(/^case\b/.test(A)&&/\bin\s*$/.test(A))W++,U=!0;if(/^esac\b/.test(A)){if(W=Math.max(0,W-1),W===0)U=!1}if($5(A))Q=Math.max(0,Q-1);let _=Y?"\t".repeat(Q):" ".repeat(Q*X);if(z.push(_+A),eX(A,U))Q++}return z.join(`
136
+ `)}};var J5={meta:{docs:"Enforce spacing around shell keywords (if, then, do, else, fi, etc.)",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z="";for(let Q=0;Q<X.length;Q++){let G=X[Q];if(Y){if(G.trim()===z)Y=!1;continue}let q=P0(G);if(q)Y=!0,z=q;if(G.replace(/^\s+/,"").startsWith("#"))continue;let W=f0(G),K=W.match(/;(?![;\s$])\S/);if(K)Z.push({filePath:J.filePath,line:Q+1,column:(K.index||0)+1,ruleId:"shell/keyword-spacing",message:"Missing space after semicolon",severity:"warning"});let H=W.match(/\w(then|do|else|elif|fi|done|esac)\b/);if(H&&!/[a-z]/.test(W[H.index])){let V=H[1],A=W[H.index];if(A!==" "&&A!=="\t"&&A!==";")Z.push({filePath:J.filePath,line:Q+1,column:(H.index||0)+2,ruleId:"shell/keyword-spacing",message:`Missing space before keyword '${V}'`,severity:"warning"})}}return Z}};var X5={meta:{docs:"Disallow unnecessary trailing semicolons",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z="";for(let Q=0;Q<X.length;Q++){let G=X[Q];if(Y){if(G.trim()===z)Y=!1;continue}let q=G.match(/<<-?\s*['"]?(\w+)['"]?/);if(q)Y=!0,z=q[1];let U=G.replace(/^\s+/,"").trimEnd();if(U.startsWith("#"))continue;if(/;;\s*$/.test(U))continue;if(/\bfor\b/.test(U)||/\bwhile\b/.test(U)||/\buntil\b/.test(U))continue;if(/;\s*(?:then|do|else|elif|fi|done|esac)\s*$/.test(U))continue;if(/;\s*$/.test(U)){let W=G.lastIndexOf(";");Z.push({filePath:J.filePath,line:Q+1,column:W+1,ruleId:"shell/no-trailing-semicolons",message:"Unnecessary trailing semicolon",severity:"warning"})}}return Z},fix($){let J=$.split(/\r?\n/),Z=[],X=!1,Y="";for(let z of J){if(X){if(Z.push(z),z.trim()===Y)X=!1;continue}let Q=z.match(/<<-?\s*['"]?(\w+)['"]?/);if(Q)X=!0,Y=Q[1];let G=z.replace(/^\s+/,"").trimEnd();if(G.startsWith("#")||/;;\s*$/.test(G)||/\bfor\b/.test(G)||/\bwhile\b/.test(G)||/\buntil\b/.test(G)||/;\s*(?:then|do|else|elif|fi|done|esac)\s*$/.test(G)){Z.push(z);continue}Z.push(z.replace(/;\s*$/,""))}return Z.join(`
137
+ `)}};var Y5={meta:{docs:"Disallow trailing whitespace",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z="";for(let Q=0;Q<X.length;Q++){let G=X[Q];if(Y){if(G.trim()===z)Y=!1;continue}let q=P0(G);if(q)Y=!0,z=q;if(/[ \t]+$/.test(G)){let U=G.match(/[ \t]+$/);Z.push({filePath:J.filePath,line:Q+1,column:U.index+1,ruleId:"shell/no-trailing-whitespace",message:"Trailing whitespace",severity:"error"})}}return Z},fix($){let J=$.split(/\r?\n/),Z=!1,X="";return J.map((z)=>{if(Z){if(z.trim()===X)Z=!1;return z}let Q=P0(z);if(Q)Z=!0,X=Q;return z.replace(/[ \t]+$/,"")}).join(`
138
+ `)}};var z5={meta:{docs:"Enforce spaces inside [ ] and [[ ]] test expressions",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z="";for(let Q=0;Q<X.length;Q++){let G=X[Q];if(Y){if(G.trim()===z)Y=!1;continue}let q=P0(G);if(q)Y=!0,z=q;if(G.replace(/^\s+/,"").startsWith("#"))continue;let W=f0(G);for(let K of J2(W,Q+1,J.filePath))Z.push(K)}return Z},fix($){let J=$.split(/\r?\n/),Z=[],X=!1,Y="";for(let z of J){if(X){if(z.trim()===Y)X=!1;Z.push(z);continue}let Q=P0(z);if(Q){X=!0,Y=Q,Z.push(z);continue}if(z.replace(/^\s+/,"").startsWith("#")){Z.push(z);continue}Z.push(X2(z))}return Z.join(`
139
+ `)}};function J2($,J,Z){let X=[],Y=/\[\[(?!\s|\]|$)/g;for(let Q of $.matchAll(Y))X.push({filePath:Z,line:J,column:(Q.index??0)+1,ruleId:"shell/operator-spacing",message:"Missing space after [[",severity:"warning"});let z=/(?<!\s|\[)\]\]/g;for(let Q of $.matchAll(z))X.push({filePath:Z,line:J,column:(Q.index??0)+1,ruleId:"shell/operator-spacing",message:"Missing space before ]]",severity:"warning"});for(let Q=0;Q<$.length;Q++){if($[Q]!=="[")continue;if($[Q+1]==="[")continue;if(Q>0&&$[Q-1]==="[")continue;if(!Q5($,Q))continue;let G=$[Q+1];if(G!==void 0&&G!==" "&&G!=="\t")X.push({filePath:Z,line:J,column:Q+1,ruleId:"shell/operator-spacing",message:"Missing space after [",severity:"warning"})}for(let Q=0;Q<$.length;Q++){if($[Q]!=="]")continue;if($[Q+1]==="]")continue;if(Q>0&&$[Q-1]==="]")continue;if(!G5($,Q))continue;let G=$[Q-1];if(G!==void 0&&G!==" "&&G!=="\t")X.push({filePath:Z,line:J,column:Q+1,ruleId:"shell/operator-spacing",message:"Missing space before ]",severity:"warning"})}return X}function X2($){let J=f0($),Z=[];for(let Y of J.matchAll(/\[\[(?!\s|\]|$)/g)){let z=(Y.index??0)+2;Z.push({pos:z,text:" "})}for(let Y of J.matchAll(/(?<!\s|\[)\]\]/g)){let z=Y.index??0;Z.push({pos:z,text:" "})}for(let Y=0;Y<J.length;Y++){if(J[Y]!=="[")continue;if(J[Y+1]==="[")continue;if(Y>0&&J[Y-1]==="[")continue;if(!Q5(J,Y))continue;let z=J[Y+1];if(z!==void 0&&z!==" "&&z!=="\t")Z.push({pos:Y+1,text:" "})}for(let Y=0;Y<J.length;Y++){if(J[Y]!=="]")continue;if(J[Y+1]==="]")continue;if(Y>0&&J[Y-1]==="]")continue;if(!G5(J,Y))continue;let z=J[Y-1];if(z!==void 0&&z!==" "&&z!=="\t")Z.push({pos:Y,text:" "})}if(Z.length===0)return $;Z.sort((Y,z)=>z.pos-Y.pos);let X=$;for(let{pos:Y,text:z}of Z)X=`${X.slice(0,Y)}${z}${X.slice(Y)}`;return X}function Q5($,J){let Z=J-1;while(Z>=0&&($[Z]===" "||$[Z]==="\t"))Z--;if(Z<0)return!0;let X=$[Z];if(X===";"||X==="|"||X==="&"||X==="!"||X==="(")return!0;let Y=$.slice(0,Z+1);if(/(?:^|\s)(?:if|while|until|elif|then|else|do)\s*$/.test(Y))return!0;return!1}function G5($,J){let Z=$[J+1];if(Z===void 0)return!0;return Z===" "||Z==="\t"||Z===";"||Z==="|"||Z==="&"||Z===")"}var Y2=/^#!\s*(?:\/usr\/bin\/env\s+(?:ba|z|k|da)?sh|\/bin\/(?:ba|z|k|da)?sh|\/usr\/bin\/(?:ba|z|k|da)?sh)\b/,q5={meta:{docs:"Ensure shell scripts have a proper shebang line",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);if(X.length===0)return Z;let Y=X[0];if(X.every((z)=>z.trim()===""))return Z;if(!Y.startsWith("#!"))return Z.push({filePath:J.filePath,line:1,column:1,ruleId:"shell/shebang",message:"Missing shebang line \u2014 shell scripts should start with #!/usr/bin/env bash (or similar)",severity:"warning",help:"Add #!/usr/bin/env bash as the first line"}),Z;if(!Y2.test(Y))Z.push({filePath:J.filePath,line:1,column:1,ruleId:"shell/shebang",message:`Invalid shebang: ${Y} \u2014 use #!/usr/bin/env bash or #!/bin/sh`,severity:"warning",help:"Use #!/usr/bin/env bash for portability or #!/bin/sh for POSIX scripts"});return Z}};var U5={meta:{docs:"Enforce consistent case statement terminator placement",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z="",Q=[];for(let G of X){if(Y){if(G.trim()===z)Y=!1;Q.push("");continue}let q=P0(G);if(q)Y=!0,z=q;if(G.replace(/^\s+/,"").startsWith("#")){Q.push("");continue}Q.push(f0(G))}for(let G=0;G<Q.length;G++){if(!/\bcase\b[\s\S]*\bin\s*$/.test(Q[G].trimEnd()))continue;let q=1,U=-1;for(let V=G+1;V<Q.length;V++){let A=Q[V].trimEnd();if(/^\s*esac\b/.test(A)){if(q--,q===0){U=V;break}continue}if(/\bcase\b[\s\S]*\bin\s*$/.test(A))q++}if(U===-1)continue;let W=0,K=!1,H=!1;for(let V=G+1;V<U;V++){let A=Q[V],_=A.trim();if(_==="")continue;if(W===0){let w=z2(A);if(w!==-1){if(K&&H)Z.push({filePath:J.filePath,line:V+1,column:1,ruleId:"shell/consistent-case-terminators",message:"Missing ;; terminator for previous case branch",severity:"warning",help:"Add ;; at the end of the case branch before the next pattern"});K=!0,H=!0;let F=A.slice(w+1).trimEnd();if(/;;\s*$/.test(F))K=!1;continue}}if(W+=Q2(A),W<0)W=0;if(K&&W===0&&/;;\s*$/.test(_))K=!1}}return Z}};function z2($){let J=$.replace(/^\s+/,"");if(J==="")return-1;if(/^(?:for|while|until|if|case|do|then|else|elif|fi|done|esac)\b/.test(J))return-1;let Z=$.length-J.length,X=0;if(J[X]==="(")X++;let Y=0;while(X<J.length){let z=J[X];if(z==="(")Y++;else if(z===")"){if(Y===0)return Z+X;Y--}else if(z===";"||z==="&"||z==="<"||z===">"||z==="=")return-1;X++}return-1}function Q2($){let J=$.trim();if(J==="")return 0;let Z=J.split(/[\s;]+/),X=0;for(let Y of Z)if(Y==="if"||Y==="for"||Y==="while"||Y==="until")X++;else if(Y==="fi"||Y==="done")X--;return X}var W5={meta:{docs:"Recommend <<- for heredocs inside indented blocks"},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y];if(z.replace(/^\s+/,"").startsWith("#"))continue;if(!z.match(/^\s+/))continue;let U=f0(z).match(/(?<!<)<<(?![<-])/);if(!U||U.index===void 0)continue;let K=z.slice(U.index+2).match(/^\s*(['"]?)(\w+)\1\s*$/);if(K){let H=K[2];Z.push({filePath:J.filePath,line:Y+1,column:U.index+1,ruleId:"shell/heredoc-indent",message:`Use <<- instead of << for indented heredoc (delimiter '${H}' must be at column 0 otherwise)`,severity:"warning",help:"Use <<- to strip leading tabs from heredoc content, allowing proper indentation"})}}return Z}};var K5={meta:{docs:"Detect incorrect redirect ordering (2>&1 before > file)",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z="";for(let Q=0;Q<X.length;Q++){let G=X[Q];if(Y){if(G.trim()===z)Y=!1;continue}let q=P0(G);if(q)Y=!0,z=q;if(G.replace(/^\s+/,"").startsWith("#"))continue;let W=f0(G);if(W.match(/2>&1\s+>(?!&)\s*\S/)){let H=W.indexOf("2>&1");Z.push({filePath:J.filePath,line:Q+1,column:H+1,ruleId:"shell/no-broken-redirect",message:"Broken redirect: 2>&1 before > file \u2014 stderr goes to terminal, not the file",severity:"error",help:"Swap the order: cmd > file 2>&1 (or use &> file in bash)"})}}return Z}};var H5={meta:{docs:"Prefer [[ ]] over [ ] for test expressions in bash/zsh",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/)[0]||"",Y=/bash|zsh/.test(X);if(/^#!.*\bsh\b/.test(X)&&!Y||!Y)return Z;let Q=$.split(/\r?\n/),G=!1,q="";for(let U=0;U<Q.length;U++){let W=Q[U];if(G){if(W.trim()===q)G=!1;continue}let K=W.match(/<<-?\s*['"]?(\w+)['"]?/);if(K)G=!0,q=K[1];if(W.replace(/^\s+/,"").startsWith("#"))continue;if(W.match(/(?:^|\s|;)\[\s(?!\[)/)){if(/(?<!\])\](?!\])/.test(W)){let A=W.indexOf("[");Z.push({filePath:J.filePath,line:U+1,column:A+1,ruleId:"shell/prefer-double-brackets",message:"Use [[ ]] instead of [ ] for test expressions in bash/zsh",severity:"warning",help:"[[ ]] prevents word splitting and supports && || regex; [ ] is only needed for POSIX sh"})}}}return Z},fix($){let J=$.split(/\r?\n/)[0]||"";if(!/bash|zsh/.test(J))return $;let X=$.split(/\r?\n/),Y=[];for(let z of X){let Q=z;Q=Q.replace(/(?:^|(?<=\s|;))\[(\s(?!\[).*?(?<!\]))\](?!\])/g,"[[$1]]"),Y.push(Q)}return Y.join(`
140
+ `)}};var V5={meta:{docs:"Prefer printf over echo -e and echo -n",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z="";for(let Q=0;Q<X.length;Q++){let G=X[Q];if(Y){if(G.trim()===z)Y=!1;continue}let q=G.match(/<<-?\s*['"]?(\w+)['"]?/);if(q)Y=!0,z=q[1];if(G.replace(/^\s+/,"").startsWith("#"))continue;let W=G.match(/\becho\s+-[en]+\b/);if(W){let K=G.indexOf("echo"),H=W[0].replace("echo ","");Z.push({filePath:J.filePath,line:Q+1,column:K+1,ruleId:"shell/prefer-printf",message:`Use printf instead of echo ${H} \u2014 echo behavior varies across platforms`,severity:"warning",help:'printf is portable: printf "format\\n" args... (use \\n for newline)'})}}return Z}};var A5={meta:{docs:"Recommend set -euo pipefail for safer script execution"},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z=!1,Q=!1,G=-1,q=!1;for(let W=0;W<X.length;W++){let K=X[W].replace(/^\s+/,"");if(W===0&&K.startsWith("#!")){G=W;continue}if(K.startsWith("#"))continue;if(K==="")continue;if(q=!0,/\bset\s+-\w*e/.test(K))Y=!0;if(/\bset\s+-\w*u/.test(K))z=!0;if(/\bset\s+.*-o\s+pipefail/.test(K))Q=!0;if(/\bset\s+-euo\s+pipefail/.test(K))Y=!0,z=!0,Q=!0}if(!q)return Z;let U=[];if(!Y)U.push("-e");if(!z)U.push("-u");if(!Q)U.push("-o pipefail");if(U.length>0)Z.push({filePath:J.filePath,line:G>=0?G+2:1,column:1,ruleId:"shell/set-options",message:`Missing shell safety options: set ${U.join(" ")}`,severity:"warning",help:"Add `set -euo pipefail` near the top of the script for safer execution"});return Z}};var _5={name:"shell",rules:{"command-substitution":A0(oX),"quote-variables":A0(iX),"no-cd-without-check":A0(cX),"no-eval":A0(rX),"no-useless-cat":A0(sX),"no-ls-parsing":A0(aX),"no-variable-in-single-quotes":A0(nX),"no-exit-in-subshell":A0(lX),shebang:A0(q5),indent:A0(Z5),"function-style":A0(tX),"operator-spacing":A0(z5),"keyword-spacing":A0(J5),"no-trailing-semicolons":A0(X5),"no-trailing-whitespace":A0(Y5),"prefer-double-brackets":A0(H5),"set-options":A0(A5),"prefer-printf":A0(V5),"consistent-case-terminators":A0(U5),"no-broken-redirect":A0(K5),"heredoc-indent":A0(W5)}};var v8=null,S8=null,e7=!1,$9=!0;function G2(){if(e7)return $9;try{return v8=(()=>{throw new Error("Cannot require module "+"@stacksjs/ts-spell-check");})(),v8.SpellChecker.create({minWordLength:3,maxSuggestions:3}).then(($)=>{S8=$}).catch(()=>{$9=!1}),e7=!0,!0}catch{return e7=!0,$9=!1,!1}}function Z9($,J){return{meta:{docs:$==="spell/check"?"Check spelling in text content":$==="spell/check-comments"?"Check spelling in code comments only":"Check spelling in markdown files"},check(Z,X){if(!G2()||!v8)return[];let{extractWords:Y,parseDirectives:z,isSuppressed:Q,getProgrammingWords:G}=v8,q=X.options,U=new Set((q?.words||[]).map((_)=>_.toLowerCase())),W=q?.minWordLength||3,K=G(),H=z(Z);for(let _ of H)if(_.type==="word")_.words.forEach((w)=>U.add(w.toLowerCase()));let V=Z.split(/\r?\n/),A=[];for(let _=0;_<V.length;_++){let w=V[_],F=_+1;if(J&&!J(w))continue;let M=Y(w);for(let{word:T,offset:E}of M){if(T.length<W)continue;if(T===T.toUpperCase()&&T.length<=5)continue;if(U.has(T.toLowerCase()))continue;if(K.has(T.toLowerCase()))continue;if(Q(T,F,H,U))continue;if(S8){if(S8.isCorrect(T))continue;let j=S8.suggest(T);A.push({filePath:X.filePath,line:F,column:E+1,ruleId:$,message:`Unknown word: "${T}"`,severity:"warning",help:j.length?`Did you mean: ${j.slice(0,3).join(", ")}? Or add to config words.`:`Add "${T}" to your config words array, or use: // spell-check:ignore ${T}`})}}}return A}}}function q2($){let J=$.trimStart();return J.startsWith("//")||J.startsWith("/*")||J.startsWith("*")||J.startsWith("#")}var F5={name:"spell",rules:{check:Z9("spell/check"),"check-comments":Z9("spell/check-comments",q2),"check-markdown":{meta:{docs:"Check spelling in markdown files"},check($,J){if(!J.filePath.endsWith(".md"))return[];return Z9("spell/check-markdown").check($,J)}}}};function w5($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var B5={meta:{docs:"Disallow spaces inside array brackets",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;for(let G=0;G<z.length;G++){if(z[G]==="["&&!w5(z,G)){let q=z[G+1];if(q==="]"||q===void 0||q===`
141
+ `)continue;if(q===" "||q==="\t"){if(z.indexOf("]",G+1)!==-1)Z.push({filePath:J.filePath,line:Y+1,column:G+2,ruleId:"style/array-bracket-spacing",message:"Unexpected space after '['",severity:"warning"})}}if(z[G]==="]"&&!w5(z,G)){let q=G>0?z[G-1]:void 0;if(q==="["||q===void 0)continue;if(q===" "||q==="\t"){if(z.lastIndexOf("[",G-1)!==-1)Z.push({filePath:J.filePath,line:Y+1,column:G,ruleId:"style/array-bracket-spacing",message:"Unexpected space before ']'",severity:"warning"})}}}}return Z},fix($){let J=$.split(/\r?\n/),Z=[];for(let X of J){let Y=X;Y=Y.replace(/\[\s+(\S)/g,(z,Q)=>{if(Q==="]")return z;return`[${Q}`}),Y=Y.replace(/(\S)\s+\]/g,"$1]"),Z.push(Y)}return Z.join(`
142
+ `)}};var M5=/(?<![(\[{,=:?&|+\-*/])\b([a-zA-Z_$][a-zA-Z0-9_$]*)\s*=>/g;function U2($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var j5={meta:{docs:"Require parentheses around arrow function parameters",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G;M5.lastIndex=0;while((G=M5.exec(z))!==null){let q=G.index;if(U2(z,q))continue;let U=G[1];if(z.slice(0,q).trimEnd().endsWith("("))continue;if(U==="async")continue;Z.push({filePath:J.filePath,line:Y+1,column:q+1,ruleId:"style/arrow-parens",message:`Arrow function parameter '${U}' should be wrapped in parentheses`,severity:"warning"})}}return Z},fix($){return $.replace(/(?<![(\[{,=:?&|+\-*/])\b([a-zA-Z_$][a-zA-Z0-9_$]*)\s*=>/g,(J,Z)=>{if(Z==="async")return J;return J.replace(Z,`(${Z})`)})}};var y8=/=>/g;function N5($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var T5={meta:{docs:"Require space before and after => in arrow functions",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G;y8.lastIndex=0;while((G=y8.exec(z))!==null){let q=G.index;if(N5(z,q))continue;if(q>0&&z[q-1]!==" "&&z[q-1]!=="\t")Z.push({filePath:J.filePath,line:Y+1,column:q+1,ruleId:"style/arrow-spacing",message:"Missing space before =>",severity:"warning"});let U=q+2;if(U<z.length&&z[U]!==" "&&z[U]!=="\t"&&z[U]!==`
140
143
  `)Z.push({filePath:J.filePath,line:Y+1,column:U+1,ruleId:"style/arrow-spacing",message:"Missing space after =>",severity:"warning"})}}return Z},fix($){let J=$.split(`
141
- `);for(let Z=0;Z<J.length;Z++){let X=J[Z],Y=X.trim();if(!Y||Y.startsWith("//")||Y.startsWith("*")||Y.startsWith("/*"))continue;let z="",Q=0;v8.lastIndex=0;let G;while((G=v8.exec(X))!==null){let q=G.index;if(M5(X,q))continue;let U=X[q-1],W=X[q+2],K=q>0&&U!==" "&&U!=="\t",H=W!==void 0&&W!==" "&&W!=="\t";if(!K&&!H)continue;z+=X.slice(Q,q),z+=`${K?" ":""}=>${H?" ":""}`,Q=q+2}if(Q>0)J[Z]=z+X.slice(Q)}return J.join(`
142
- `)}};function Z9($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var N5={meta:{docs:"Require spaces inside single-line blocks",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;for(let G=0;G<z.length;G++){if(z[G]!=="{")continue;if(Z9(z,G))continue;if(G>0&&z[G-1]==="$")continue;let q=1,U=-1;for(let K=G+1;K<z.length;K++){if(z[K]==="{"&&!Z9(z,K))q++;if(z[K]==="}"&&!Z9(z,K)){if(q--,q===0){U=K;break}}}if(U===-1)continue;let W=z.slice(G+1,U);if(!W.trim())continue;if(W[0]!==" "&&W[0]!=="\t")Z.push({filePath:J.filePath,line:Y+1,column:G+2,ruleId:"style/block-spacing",message:"Missing space after '{'",severity:"warning"});if(W[W.length-1]!==" "&&W[W.length-1]!=="\t")Z.push({filePath:J.filePath,line:Y+1,column:U+1,ruleId:"style/block-spacing",message:"Missing space before '}'",severity:"warning"});break}}return Z},fix($){let J=$.split(/\r?\n/),Z=[];for(let X of J){let Y=X.replace(/(?<!\$)\{(\S)([^}]*?)(\S)\}/g,(z,Q,G,q)=>{return`{ ${Q}${G}${q} }`});Y=Y.replace(/(?<!\$)\{(\S)([^}]*?)\s\}/g,(z,Q,G)=>{return`{ ${Q}${G} }`}),Y=Y.replace(/(?<!\$)\{\s([^}]*?)(\S)\}/g,(z,Q,G)=>{return`{ ${Q}${G} }`}),Z.push(Y)}return Z.join(`
143
- `)}};var T5={meta:{docs:"Enforce consistent brace style for blocks",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let Q=X[Y].trim();if(Q.startsWith("//")||Q.startsWith("/*"))continue;if(/\}\s+(?:else|catch|finally)\b/.test(Q))Z.push({filePath:J.filePath,line:Y+1,column:Q.indexOf("}")+1,ruleId:"style/brace-style",message:"Closing curly brace appears on the same line as the subsequent block",severity:"error"});if(Q==="{"&&Y>0){let q=X[Y-1].trim();if(!q||q.startsWith("//")||q.startsWith("/*")||q.endsWith("*/"))continue;if(q&&!q.endsWith("{")&&!q.endsWith(",")&&!q.endsWith("(")){if(!q.match(/[=:]\s*$/)&&!q.endsWith("["))Z.push({filePath:J.filePath,line:Y+1,column:1,ruleId:"style/brace-style",message:"Opening curly brace should be on the same line",severity:"error"})}}}return Z}};var E5=/,\s*$/,D5=new RegExp("^\\s*[}\\])](?:\\s*;?\\s*)?$"),R5={meta:{docs:"Require trailing commas in multiline constructs",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=1;Y<X.length;Y++){let Q=X[Y].trim();if(!D5.test(Q))continue;let G=X[Y-1],q=G.trim();if(!q||q==="{"||q==="["||q==="(")continue;if(q.startsWith("//")||q.startsWith("*")||q.startsWith("/*"))continue;if(E5.test(q))continue;if(q.endsWith("{")||q.endsWith("[")||q.endsWith("("))continue;if(q.endsWith("=>"))continue;Z.push({filePath:J.filePath,line:Y,column:G.length+1,ruleId:"style/comma-dangle",message:"Missing trailing comma",severity:"warning",help:"Add a trailing comma after the last element in multiline constructs."})}return Z},fix($){let J=$.split(/\r?\n/),Z=[];for(let X=0;X<J.length;X++){let Y=J[X];if(X+1<J.length){let z=J[X+1].trim(),Q=Y.trim();if(D5.test(z)&&Q&&Q!=="{"&&Q!=="["&&Q!=="("&&!Q.startsWith("//")&&!Q.startsWith("*")&&!Q.startsWith("/*")&&!E5.test(Q)&&!Q.endsWith("{")&&!Q.endsWith("[")&&!Q.endsWith("(")&&!Q.endsWith("=>")){Z.push(Y.replace(/(\s*)$/,",$1"));continue}}Z.push(Y)}return Z.join(`
144
- `)}};function q2($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var O5={meta:{docs:"Require space after commas, disallow space before commas",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;for(let G=0;G<z.length;G++){if(z[G]!==",")continue;if(q2(z,G))continue;if(G>0&&z[G-1]===" "){if(z.slice(0,G).trim().length>0)Z.push({filePath:J.filePath,line:Y+1,column:G+1,ruleId:"style/comma-spacing",message:"Unexpected space before comma",severity:"warning"})}if(G+1<z.length&&z[G+1]!==" "&&z[G+1]!=="\t"&&z[G+1]!==`
144
+ `);for(let Z=0;Z<J.length;Z++){let X=J[Z],Y=X.trim();if(!Y||Y.startsWith("//")||Y.startsWith("*")||Y.startsWith("/*"))continue;let z="",Q=0;y8.lastIndex=0;let G;while((G=y8.exec(X))!==null){let q=G.index;if(N5(X,q))continue;let U=X[q-1],W=X[q+2],K=q>0&&U!==" "&&U!=="\t",H=W!==void 0&&W!==" "&&W!=="\t";if(!K&&!H)continue;z+=X.slice(Q,q),z+=`${K?" ":""}=>${H?" ":""}`,Q=q+2}if(Q>0)J[Z]=z+X.slice(Q)}return J.join(`
145
+ `)}};function J9($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var E5={meta:{docs:"Require spaces inside single-line blocks",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;for(let G=0;G<z.length;G++){if(z[G]!=="{")continue;if(J9(z,G))continue;if(G>0&&z[G-1]==="$")continue;let q=1,U=-1;for(let K=G+1;K<z.length;K++){if(z[K]==="{"&&!J9(z,K))q++;if(z[K]==="}"&&!J9(z,K)){if(q--,q===0){U=K;break}}}if(U===-1)continue;let W=z.slice(G+1,U);if(!W.trim())continue;if(W[0]!==" "&&W[0]!=="\t")Z.push({filePath:J.filePath,line:Y+1,column:G+2,ruleId:"style/block-spacing",message:"Missing space after '{'",severity:"warning"});if(W[W.length-1]!==" "&&W[W.length-1]!=="\t")Z.push({filePath:J.filePath,line:Y+1,column:U+1,ruleId:"style/block-spacing",message:"Missing space before '}'",severity:"warning"});break}}return Z},fix($){let J=$.split(/\r?\n/),Z=[];for(let X of J){let Y=X.replace(/(?<!\$)\{(\S)([^}]*?)(\S)\}/g,(z,Q,G,q)=>{return`{ ${Q}${G}${q} }`});Y=Y.replace(/(?<!\$)\{(\S)([^}]*?)\s\}/g,(z,Q,G)=>{return`{ ${Q}${G} }`}),Y=Y.replace(/(?<!\$)\{\s([^}]*?)(\S)\}/g,(z,Q,G)=>{return`{ ${Q}${G} }`}),Z.push(Y)}return Z.join(`
146
+ `)}};var D5={meta:{docs:"Enforce consistent brace style for blocks",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let Q=X[Y].trim();if(Q.startsWith("//")||Q.startsWith("/*"))continue;if(/\}\s+(?:else|catch|finally)\b/.test(Q))Z.push({filePath:J.filePath,line:Y+1,column:Q.indexOf("}")+1,ruleId:"style/brace-style",message:"Closing curly brace appears on the same line as the subsequent block",severity:"error"});if(Q==="{"&&Y>0){let q=X[Y-1].trim();if(!q||q.startsWith("//")||q.startsWith("/*")||q.endsWith("*/"))continue;if(q&&!q.endsWith("{")&&!q.endsWith(",")&&!q.endsWith("(")){if(!q.match(/[=:]\s*$/)&&!q.endsWith("["))Z.push({filePath:J.filePath,line:Y+1,column:1,ruleId:"style/brace-style",message:"Opening curly brace should be on the same line",severity:"error"})}}}return Z}};var R5=/,\s*$/,O5=new RegExp("^\\s*[}\\])](?:\\s*;?\\s*)?$"),L5={meta:{docs:"Require trailing commas in multiline constructs",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=1;Y<X.length;Y++){let Q=X[Y].trim();if(!O5.test(Q))continue;let G=X[Y-1],q=G.trim();if(!q||q==="{"||q==="["||q==="(")continue;if(q.startsWith("//")||q.startsWith("*")||q.startsWith("/*"))continue;if(R5.test(q))continue;if(q.endsWith("{")||q.endsWith("[")||q.endsWith("("))continue;if(q.endsWith("=>"))continue;Z.push({filePath:J.filePath,line:Y,column:G.length+1,ruleId:"style/comma-dangle",message:"Missing trailing comma",severity:"warning",help:"Add a trailing comma after the last element in multiline constructs."})}return Z},fix($){let J=$.split(/\r?\n/),Z=[];for(let X=0;X<J.length;X++){let Y=J[X];if(X+1<J.length){let z=J[X+1].trim(),Q=Y.trim();if(O5.test(z)&&Q&&Q!=="{"&&Q!=="["&&Q!=="("&&!Q.startsWith("//")&&!Q.startsWith("*")&&!Q.startsWith("/*")&&!R5.test(Q)&&!Q.endsWith("{")&&!Q.endsWith("[")&&!Q.endsWith("(")&&!Q.endsWith("=>")){Z.push(Y.replace(/(\s*)$/,",$1"));continue}}Z.push(Y)}return Z.join(`
147
+ `)}};function W2($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var P5={meta:{docs:"Require space after commas, disallow space before commas",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;for(let G=0;G<z.length;G++){if(z[G]!==",")continue;if(W2(z,G))continue;if(G>0&&z[G-1]===" "){if(z.slice(0,G).trim().length>0)Z.push({filePath:J.filePath,line:Y+1,column:G+1,ruleId:"style/comma-spacing",message:"Unexpected space before comma",severity:"warning"})}if(G+1<z.length&&z[G+1]!==" "&&z[G+1]!=="\t"&&z[G+1]!==`
145
148
  `&&z[G+1]!=="\r")Z.push({filePath:J.filePath,line:Y+1,column:G+2,ruleId:"style/comma-spacing",message:"Missing space after comma",severity:"warning"})}}return Z},fix($){let J=$.split(/\r?\n/),Z=[];for(let X of J){let Y=X;Y=Y.replace(/ ,/g,","),Y=Y.replace(/,(\S)/g,", $1"),Z.push(Y)}return Z.join(`
146
- `)}};var L5={meta:{docs:"Enforce comma-last style (commas at the end of lines, not the beginning)",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;if(Q.startsWith(","))Z.push({filePath:J.filePath,line:Y+1,column:z.indexOf(",")+1,ruleId:"style/comma-style",message:"Comma should be placed at the end of the previous line",severity:"warning"})}return Z},fix($){let J=$.split(/\r?\n/),Z=[];for(let X=0;X<J.length;X++){let Y=J[X],z=Y.trim();if(z.startsWith(",")&&Z.length>0){let Q=Z.length-1;Z[Q]=Z[Q].replace(/\s*$/,",");let G=Y.match(/^(\s*)/)?.[1]||"";Z.push(G+z.slice(1).trim())}else Z.push(Y)}return Z.join(`
147
- `)}};function U2($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var P5={meta:{docs:"Disallow spaces inside computed property brackets [expr]",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;for(let G=0;G<z.length;G++){if(z[G]!=="[")continue;if(U2(z,G))continue;if(G===0)continue;let q=z[G-1];if(!/[a-zA-Z0-9_$)\]]/.test(q))continue;if(G+1<z.length&&(z[G+1]===" "||z[G+1]==="\t"))Z.push({filePath:J.filePath,line:Y+1,column:G+2,ruleId:"style/computed-property-spacing",message:"Unexpected space after '['",severity:"warning"});let U=1,W=G+1;while(W<z.length&&U>0){if(z[W]==="[")U++;if(z[W]==="]")U--;if(U>0)W++}if(U===0&&W>0){if(z[W-1]===" "||z[W-1]==="\t")Z.push({filePath:J.filePath,line:Y+1,column:W,ruleId:"style/computed-property-spacing",message:"Unexpected space before ']'",severity:"warning"})}}}return Z},fix($){return $.replace(/([a-zA-Z0-9_$)\]])\[\s+([\s\S]*?)\s+\]/g,"$1[$2]")}};function W2($){let J=[],Z=$.split(/\r?\n/),X=0;for(let Y=0;Y<Z.length;Y++){let z=Z[Y],Q=/\b[\w$)\]]+\s*\./.test(z),G=Y+1<Z.length&&/^\s*\./.test(Z[Y+1]);if(Q||G){let q=Y,U=Y;while(q+1<Z.length&&/^\s*\./.test(Z[q+1]))q++,U=q;if(U>Y){let W=X,K=X+Z[Y].length+1+Z.slice(Y+1,U+1).join(`
148
- `).length;J.push({start:W,end:K}),Y=U}}X+=z.length+1}return J}var C5={meta:{docs:"Enforce consistent line breaks in member-access/call chains"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=W2($);for(let{start:z,end:Q}of Y){let q=$.slice(z,Q).split(/\r?\n/),U=[];for(let V=0;V<q.length;V++){let A=q[V],_=[...A.matchAll(/\./g)].map((F)=>F.index||0);for(let F of _){if(F>0&&A[F-1]==="?")continue;if(/^\s*\./.test(A)&&F===A.indexOf(".")&&A.slice(0,F).trim()==="")U.push("newline");else U.push("inline")}}if(U.length<=1)continue;let W=U[0];if(U.every((V)=>V===W))continue;let K=U.findIndex((V)=>V!==W),H=0;for(let V=0;V<q.length;V++){let A=q[V],_=[...A.matchAll(/\./g)].map((F)=>F.index||0);for(let F of _){if(F>0&&A[F-1]==="?")continue;if(H===K){let j=$.slice(0,z).split(/\r?\n/),D=j.length,M=(j[j.length-1]||"").length;Z.push({filePath:J.filePath,line:D+V,column:(V===0?M:0)+F+1,ruleId:"style/consistent-chaining",message:`Inconsistent chaining style: mix of ${W} and ${W==="inline"?"newline":"inline"}.`,severity:"warning"}),V=q.length;break}H++}}}return Z}};function I5($){let J=[0];for(let X=0;X<$.length;X++)if($[X]===`
149
- `)J.push(X+1);function Z(X){let Y=0,z=J.length-1;while(Y<=z){let G=Y+z>>1,q=J[G],U=G+1<J.length?J[G+1]:1/0;if(X<q)z=G-1;else if(X>=U)Y=G+1;else return{line:G+1,column:X-q+1}}let Q=J[J.length-1];return{line:J.length,column:Math.max(1,X-Q+1)}}return{lineStarts:J,indexToLoc:Z}}function S5($){let J=[],Z=(z,Q,G)=>J.push({type:z,value:$.slice(Q,G),start:Q,end:G}),X=0,Y=$.length;while(X<Y){let z=$[X];if(z<=" "){X++;continue}if(z==="/"&&$[X+1]==="/"){let q=X;X+=2;while(X<Y&&$[X]!==`
149
+ `)}};var C5={meta:{docs:"Enforce comma-last style (commas at the end of lines, not the beginning)",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;if(Q.startsWith(","))Z.push({filePath:J.filePath,line:Y+1,column:z.indexOf(",")+1,ruleId:"style/comma-style",message:"Comma should be placed at the end of the previous line",severity:"warning"})}return Z},fix($){let J=$.split(/\r?\n/),Z=[];for(let X=0;X<J.length;X++){let Y=J[X],z=Y.trim();if(z.startsWith(",")&&Z.length>0){let Q=Z.length-1;Z[Q]=Z[Q].replace(/\s*$/,",");let G=Y.match(/^(\s*)/)?.[1]||"";Z.push(G+z.slice(1).trim())}else Z.push(Y)}return Z.join(`
150
+ `)}};function K2($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var I5={meta:{docs:"Disallow spaces inside computed property brackets [expr]",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;for(let G=0;G<z.length;G++){if(z[G]!=="[")continue;if(K2(z,G))continue;if(G===0)continue;let q=z[G-1];if(!/[a-zA-Z0-9_$)\]]/.test(q))continue;if(G+1<z.length&&(z[G+1]===" "||z[G+1]==="\t"))Z.push({filePath:J.filePath,line:Y+1,column:G+2,ruleId:"style/computed-property-spacing",message:"Unexpected space after '['",severity:"warning"});let U=1,W=G+1;while(W<z.length&&U>0){if(z[W]==="[")U++;if(z[W]==="]")U--;if(U>0)W++}if(U===0&&W>0){if(z[W-1]===" "||z[W-1]==="\t")Z.push({filePath:J.filePath,line:Y+1,column:W,ruleId:"style/computed-property-spacing",message:"Unexpected space before ']'",severity:"warning"})}}}return Z},fix($){return $.replace(/([a-zA-Z0-9_$)\]])\[\s+([\s\S]*?)\s+\]/g,"$1[$2]")}};function H2($){let J=[],Z=$.split(/\r?\n/),X=0;for(let Y=0;Y<Z.length;Y++){let z=Z[Y],Q=/\b[\w$)\]]+\s*\./.test(z),G=Y+1<Z.length&&/^\s*\./.test(Z[Y+1]);if(Q||G){let q=Y,U=Y;while(q+1<Z.length&&/^\s*\./.test(Z[q+1]))q++,U=q;if(U>Y){let W=X,K=X+Z[Y].length+1+Z.slice(Y+1,U+1).join(`
151
+ `).length;J.push({start:W,end:K}),Y=U}}X+=z.length+1}return J}var S5={meta:{docs:"Enforce consistent line breaks in member-access/call chains"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/),Y=H2($);for(let{start:z,end:Q}of Y){let q=$.slice(z,Q).split(/\r?\n/),U=[];for(let V=0;V<q.length;V++){let A=q[V],_=[...A.matchAll(/\./g)].map((w)=>w.index||0);for(let w of _){if(w>0&&A[w-1]==="?")continue;if(/^\s*\./.test(A)&&w===A.indexOf(".")&&A.slice(0,w).trim()==="")U.push("newline");else U.push("inline")}}if(U.length<=1)continue;let W=U[0];if(U.every((V)=>V===W))continue;let K=U.findIndex((V)=>V!==W),H=0;for(let V=0;V<q.length;V++){let A=q[V],_=[...A.matchAll(/\./g)].map((w)=>w.index||0);for(let w of _){if(w>0&&A[w-1]==="?")continue;if(H===K){let M=$.slice(0,z).split(/\r?\n/),T=M.length,E=(M[M.length-1]||"").length;Z.push({filePath:J.filePath,line:T+V,column:(V===0?E:0)+w+1,ruleId:"style/consistent-chaining",message:`Inconsistent chaining style: mix of ${W} and ${W==="inline"?"newline":"inline"}.`,severity:"warning"}),V=q.length;break}H++}}}return Z}};function v5($){let J=[0];for(let X=0;X<$.length;X++)if($[X]===`
152
+ `)J.push(X+1);function Z(X){let Y=0,z=J.length-1;while(Y<=z){let G=Y+z>>1,q=J[G],U=G+1<J.length?J[G+1]:1/0;if(X<q)z=G-1;else if(X>=U)Y=G+1;else return{line:G+1,column:X-q+1}}let Q=J[J.length-1];return{line:J.length,column:Math.max(1,X-Q+1)}}return{lineStarts:J,indexToLoc:Z}}function y5($){let J=[],Z=(z,Q,G)=>J.push({type:z,value:$.slice(Q,G),start:Q,end:G}),X=0,Y=$.length;while(X<Y){let z=$[X];if(z<=" "){X++;continue}if(z==="/"&&$[X+1]==="/"){let q=X;X+=2;while(X<Y&&$[X]!==`
150
153
  `)X++;Z("LineComment",q,X);continue}if(z==="/"&&$[X+1]==="*"){let q=X;X+=2;while(X<Y&&!($[X]==="*"&&$[X+1]==="/"))X++;X=Math.min(Y,X+2),Z("BlockComment",q,X);continue}if(z==='"'||z==="'"){let q=z,U=X;X++;while(X<Y){let W=$[X];if(W==="\\"){X+=2;continue}if(W===q){X++;break}X++}Z("String",U,X);continue}if(z==="`"){let q=X;X++;let U=0;while(X<Y){let W=$[X];if(W==="\\"){X+=2;continue}if(W==="`"&&U===0){X++;break}if(W==="$"&&$[X+1]==="{"){U++,X+=2;continue}if(W==="}"&&U>0){U--,X++;continue}X++}Z("Template",q,X);continue}if(z==="/"){if($[X+1]==="/"){let q=X;X+=2;while(X<Y&&$[X]!==`
151
- `)X++;Z("LineComment",q,X);continue}if($[X+1]==="*"){let q=X;X+=2;while(X<Y&&!($[X]==="*"&&$[X+1]==="/"))X++;X=Math.min(Y,X+2),Z("BlockComment",q,X);continue}if(K2(J)){let q=X;X++;while(X<Y){let U=$[X];if(U==="\\"){X+=2;continue}if(U==="/"){X++;break}X++}while(X<Y&&/[a-z]/i.test($[X]))X++;Z("Regex",q,X);continue}Z("Punct",X,X+1),X++;continue}if("(){}[];:,.<>+-*%&|^!?=~".includes(z)){Z("Punct",X,X+1),X++;continue}let Q=X,G=new RegExp("[^\\s(){}[\\];:,.<>+\\-*%&|^!?=~'\"`/]");while(X<Y&&G.test($[X]))X++;if(X>Q)Z("Word",Q,X);else Z("Word",X,X+1),X++}return J}function K2($){if($.length===0)return!0;let J=$[$.length-1],Z=new RegExp("[(!,{;:?=]");return J.type==="Punct"&&Z.test(J.value)||J.type==="Word"&&/^(?:return|throw|case|of|in|instanceof|typeof|void|new)$/.test(J.value)}function v5($,J,Z,X){let Y=0,z=(K)=>K<=" ",Q=(K)=>{while(K<$.length&&$[K]!==`
152
- `)K++;return K},G=(K)=>{K+=2;while(K<$.length&&!($[K]==="*"&&$[K+1]==="/"))K++;return Math.min($.length,K+2)},q=(K,H)=>{let V=$.length;if(H==="`"){K++;let A=0;while(K<V){let _=$[K];if(_==="\\"){K+=2;continue}if(_==="`"&&A===0){K++;break}if(_==="$"&&$[K+1]==="{"){A++,K+=2;continue}if(_==="}"&&A>0){A--,K++;continue}if(_==='"'||_==="'"){K=q(K,_);continue}if(_==="/"&&$[K+1]==="/"){K=Q(K+2);continue}if(_==="/"&&$[K+1]==="*"){K=G(K);continue}K++}return K}K++;while(K<V){let A=$[K];if(A==="\\"){K+=2;continue}if(A===H){K++;break}K++}return K},U=(K)=>{let H=K-1;while(H>=0&&z($[H]))H--;let V=H>=0?$[H]:"";if(new RegExp("[(:[{;?,=!&|^~+\\-*%<>]").test(V))return!0;if(V==="")return!0;return!1},W=(K)=>{K++;let H=$.length;while(K<H){let V=$[K];if(V==="\\"){K+=2;continue}if(V==="/"){K++;break}K++}while(K<H&&/[a-z]/i.test($[K]))K++;return K};for(let K=J;K<$.length;K++){let H=$[K];if(H===Z){Y++;continue}if(H===X){if(Y--,Y===0)return K;continue}if(H==='"'||H==="'"||H==="`"){K=q(K,H)-1;continue}if(H==="/"&&$[K+1]==="/"){K=Q(K+2)-1;continue}if(H==="/"&&$[K+1]==="*"){K=G(K)-1;continue}if(H==="/"&&U(K)){K=W(K)-1;continue}}return-1}function y8($,J,Z,X,Y,z,Q){let G=v5($,X,Y,z);if(G<=X)return;let q=$.slice(X+1,G),U=/\r?\n/.test(q),W=I5($),K=[],H=0,V=X+1,A=S5($.slice(X+1,G)),_=0;for(let w of A){let j=X+1+w.start,D=X+1+w.end;if(_=D,w.type==="Punct"){if(w.value===Y)H++;else if(w.value===z&&H>0)H--;else if(w.value===","&&H===0)K.push({start:V,end:j}),V=D}}if(K.push({start:V,end:G}),!U){for(let w of K){let j=$.slice(w.start,w.end);if(/\r?\n/.test(j)){let D=W.indexToLoc(w.start);Z.push({filePath:J,line:D.line,column:D.column,ruleId:Q,message:"Should not have line breaks between items",severity:"warning"});break}}return}let F=q.indexOf(`
153
- `);if(F>0){let w=q.slice(0,F),j=(w.match(/,/g)||[]).length,D=q.slice(F+1),M=D.includes(`
154
- `),E=D.includes(",");if(j>=1&&/\S,\s*\S/.test(w)&&!M&&!E){let R=W.indexToLoc(X+1+F+1);Z.push({filePath:J,line:R.line,column:R.column,ruleId:Q,message:"Should not have line breaks between items",severity:"warning"});return}else if(j>=1&&/\S,\s*\S/.test(w)){let R=W.indexToLoc(X+1+w.search(/,\s*\S/));Z.push({filePath:J,line:R.line,column:R.column,ruleId:Q,message:"Should have line breaks between items",severity:"warning"});return}}for(let w of K){let j=$.slice(X+1,w.start);if(!/\n[ \t]*$/.test(j)&&j.trim()!==""){let D=W.indexToLoc(w.start);Z.push({filePath:J,line:D.line,column:D.column,ruleId:Q,message:"Should have line breaks between items",severity:"warning"});break}}}var y5={meta:{docs:"Enforce consistent newlines for list-like constructs (objects, arrays, named imports/exports)"},check:($,J)=>{let Z=[],X="style/consistent-list-newline";for(let Y=0;Y<$.length;Y++){let z=$[Y];if(z==="{"){let Q=Y-1;while(Q>=0&&/[ \t]/.test($[Q]))Q--;if(Q>=0&&$[Q]===")")continue;let G=$.slice(Math.max(0,Y-60),Y);if(/\b(?:function|class|interface|type|enum|try|catch|finally|if|else|for|while|switch)\b[\s\S]*$/.test(G))continue;y8($,J.filePath,Z,Y,"{","}","style/consistent-list-newline")}else if(z==="[")y8($,J.filePath,Z,Y,"[","]","style/consistent-list-newline");else if(z==="i"&&$.startsWith("import",Y)){let Q=$.indexOf("{",Y);if(Q>-1)y8($,J.filePath,Z,Q,"{","}","style/consistent-list-newline")}else if(z==="e"&&$.startsWith("export",Y)){let Q=$.indexOf("{",Y);if(Q>-1)y8($,J.filePath,Z,Q,"{","}","style/consistent-list-newline")}}return Z}};function H2($){let J=$.trim();return J===""||J.startsWith("//")||J.startsWith("/*")}function J9($,J){for(let Z=J;Z<$.length;Z++)if(!H2($[Z]))return Z;return-1}function F1($,J,Z){if($[J].slice(Z).includes("{"))return!0;let Y=J9($,J+1);if(Y>=0){if($[Y].trim().startsWith("{"))return!0}return!1}function b8($,J,Z){let X=$[J].slice(Z);if(/\bif\b|\bfor\b|\bwhile\b|\bdo\b/.test(X))return!0;return!1}var b5={meta:{docs:"Enforce curly brackets similar to src-2: require braces when any branch/body requires them"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let z=0;z<X.length;z++){let Q=X[z],G=Q.match(/^(\s*)if\s*\(([^)]*)\)/);if(G){let U=G[0].length,W=F1(X,z,U),K=b8(X,z,U),H=z,V=W,A=K;while(!0){let _=J9(X,H+1);if(_<0)break;let F=X[_].trim();if(!F.startsWith("else"))break;let w=F.match(/^else\s+if\s*\(([^)]*)\)/);if(w){let j=X[_].indexOf(w[0])+w[0].length;V=V||F1(X,_,j),A=A||b8(X,_,j),H=_;continue}else{let j=X[_].indexOf("else")+4;V=V||F1(X,_,j),A=A||b8(X,_,j),H=_;break}}if(V||A){if(!W)Z.push({filePath:J.filePath,line:z+1,column:Math.max(1,Q.indexOf("if")+1),ruleId:"style/curly",message:"Expect curly brackets",severity:"warning"});let _=z;while(!0){let F=J9(X,_+1);if(F<0)break;let w=X[F],j=w.trim();if(!j.startsWith("else"))break;let D=j.match(/^else\s+if\s*\(([^)]*)\)/);if(D){let M=w.indexOf(D[0])+D[0].length;if(!F1(X,F,M))Z.push({filePath:J.filePath,line:F+1,column:Math.max(1,w.indexOf("else")+1),ruleId:"style/curly",message:"Expect curly brackets",severity:"warning"});_=F;continue}else{let M=w.indexOf("else")+4;if(!F1(X,F,M))Z.push({filePath:J.filePath,line:F+1,column:Math.max(1,w.indexOf("else")+1),ruleId:"style/curly",message:"Expect curly brackets",severity:"warning"});break}}}}let q=Q.match(/^(\s*)(while|do|for|for\s+await)\b/);if(q){let U=q[0].length,W=F1(X,z,U),K=b8(X,z,U);if((W||K)&&!W)Z.push({filePath:J.filePath,line:z+1,column:Math.max(1,Q.indexOf(q[2])+1),ruleId:"style/curly",message:"Expect curly brackets",severity:"warning"})}}let Y=V2($,J.filePath);for(let z of Y)Z.push({filePath:J.filePath,line:z.line,column:z.column,ruleId:"style/curly",message:z.message,severity:"warning"});return Z}};function V2($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim(),G=/^if\s*\(/.test(Q)?"if":/^else\s+if\s*\(/.test(Q)?"else-if":/^else\b/.test(Q)?"else":null;if(!G)continue;let q=0;if(G==="if"){let A=z.match(/if\s*\([^)]*\)/);q=A?z.indexOf(A[0])+A[0].length:z.indexOf("if")+2}else if(G==="else-if"){let A=z.match(/else\s+if\s*\([^)]*\)/);q=A?z.indexOf(A[0])+A[0].length:z.indexOf("else")+4}else q=z.indexOf("else")+4;let U=Y,W=z.indexOf("{",q);if(W<0){let A=function(F){for(let w=F;w<X.length;w++)if(X[w].trim()!=="")return w;return-1}(Y+1);if(A<0)continue;if(W=X[A].indexOf("{"),W<0)continue;U=A}let K=0,H=-1;for(let A=U;A<X.length;A++){let _=X[A],F=A===U?Math.max(0,W):0;for(let w=F;w<_.length;w++){let j=_[w];if(j==="{")K++;else if(j==="}"){if(K--,K===0){H=A;break}}}if(H>=0)break}if(H<0)continue;let V=[];for(let A=U+1;A<H;A++){let _=X[A].trim();if(_===""||/^\/\//.test(_))continue;if(V.push(_),V.length>1)break}if(V.length===1&&H===U+2){let A=V[0],_=/^(?:if|for|while|do|switch|try|catch|else)\b/.test(A),F=/[{}]/.test(A),w=(A.match(/\(/g)||[]).length,j=(A.match(/\)/g)||[]).length,D=w!==j,M=!1;for(let E=Y+1;E<X.length;E++){let R=X[E].trim();if(R===""||R==="}"||/^\/\//.test(R))continue;if(!/^else\b/.test(R))break;let S=X[E].indexOf("else")+4,f=R.match(/^else\s+if\s*\([^)]*\)/);if(f)S=X[E].indexOf(f[0])+f[0].length;let O=E,h=X[E].indexOf("{",S);if(h<0){let I=function(T){for(let k=T;k<X.length;k++)if(X[k].trim()!=="")return k;return-1}(E+1);if(I<0)break;if(h=X[I].indexOf("{"),h<0)continue;O=I}let P=0,C=-1;for(let I=O;I<X.length;I++){let L=X[I],T=I===O?Math.max(0,h):0;for(let k=T;k<L.length;k++){let N=L[k];if(N==="{")P++;else if(N==="}"){if(P--,P===0){C=I;break}}}if(C>=0)break}if(C>=0){let I=0;for(let L=O+1;L<C;L++){let T=X[L].trim();if(T===""||/^\/\//.test(T))continue;if(I++,I>1){M=!0;break}}}if(M)break}if(!M&&G==="if"){let E=function(S){for(let f=S;f<X.length;f++){let O=X[f].trim();if(O!==""&&O!=="}"&&!/^\/\//.test(O))return f}return-1}(H+1);if(E>=0&&/^else\b/.test(X[E].trim())){let R=X[E].indexOf("else")+4,S=X[E].trim().match(/^else\s+if\s*\([^)]*\)/);if(S)R=X[E].indexOf(S[0])+S[0].length;let f=E,O=X[E].indexOf("{",R);if(O<0){let h=function(C){for(let I=C;I<X.length;I++)if(X[I].trim()!=="")return I;return-1}(E+1);if(h>=0)O=X[h].indexOf("{"),f=O>=0?h:f}if(O>=0){let h=0,P=-1;for(let C=f;C<X.length;C++){let I=X[C],L=C===f?Math.max(0,O):0;for(let T=L;T<I.length;T++){let k=I[T];if(k==="{")h++;else if(k==="}"){if(h--,h===0){P=C;break}}}if(P>=0)break}if(P>=0){let C=0;for(let I=f+1;I<P;I++){let L=X[I].trim();if(L===""||/^\/\//.test(L))continue;if(++C>1){M=!0;break}}}}}}if(!_&&!F&&!D&&!M)Z.push({line:U+1,column:Math.max(1,X[U].indexOf("{")+1),message:"Unnecessary curly braces around single statement"})}}return Z}var k5={meta:{docs:"Enforce dot on the property line in chained method calls",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=t0($);for(let z=0;z<X.length;z++){let Q=X[z],G=Q.trim();if(!G||G.startsWith("//")||G.startsWith("*")||G.startsWith("/*"))continue;if(Y[z+1])continue;if(G.endsWith(".")&&z+1<X.length){let q=X[z+1].trim();if(q&&/^[a-zA-Z_$]/.test(q))Z.push({filePath:J.filePath,line:z+1,column:Q.length,ruleId:"style/dot-location",message:"Dot should be on the same line as the property",severity:"warning"})}}return Z},fix($){let J=$.split(/\r?\n/),Z=[],X=t0($);for(let Y=0;Y<J.length;Y++){let z=J[Y];if(z.trim().endsWith(".")&&!X[Y+1]&&Y+1<J.length){let G=J[Y+1],q=G.trim();if(q&&/^[a-zA-Z_$]/.test(q)){Z.push(z.replace(/\.\s*$/,""));let U=G.match(/^(\s*)/)?.[1]||"";J[Y+1]=`${U}.${q}`;continue}}Z.push(z)}return Z.join(`
155
- `)}};function f5($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var g5=["===","!==",">>>","==","!=",">=","<=","&&","||","??","**","<<",">>","+","-","*","/","%","|","&","^",">","<","instanceof","in"],nw=new RegExp(`^(${g5.map(($)=>$.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|")})\\s`),A2=new Set(["in","instanceof"]),_2=/^(?:instanceof|in)\s/;function k8($){if(_2.test($))return!0;for(let J of g5){if(A2.has(J))continue;if($.startsWith(J)){let Z=$[J.length];if(Z===void 0||Z===" "||Z==="\t")return!0}}return!1}function X9($){let J=$.match(/^(\s*)/);return J?J[1].length:0}var x5={meta:{docs:"Enforce consistent indentation of continuation lines in multiline binary expressions",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;if(!k8(Q))continue;if(f5(z,0))continue;let G=Y-1;while(G>=0){let W=X[G].trim();if(!W||W.startsWith("//")||W.startsWith("*")||W.startsWith("/*")){G--;continue}if(k8(W)){G--;continue}break}if(G<0)continue;let q=X9(X[G])+2,U=X9(z);if(U!==q)Z.push({filePath:J.filePath,line:Y+1,column:U+1,ruleId:"style/indent-binary-ops",message:`Expected indentation of ${q} spaces for binary operator continuation, but found ${U}`,severity:"warning"})}return Z},fix($,J){let Z=$.split(/\r?\n/),X=[];for(let Y=0;Y<Z.length;Y++){let z=Z[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*")){X.push(z);continue}if(!k8(Q)||f5(z,0)){X.push(z);continue}let G=-1;for(let W=X.length-1;W>=0;W--){let K=X[W].trim();if(!K||K.startsWith("//")||K.startsWith("*")||K.startsWith("/*"))continue;if(k8(K))continue;G=W;break}if(G<0){X.push(z);continue}let q=X9(X[G])+2,U=" ".repeat(q)+Q;X.push(U);continue}return X.join(`
156
- `)}};var p5=new Set(["if","for","while","switch","catch","function","return","typeof","void","delete","throw","new","await","class","import","export","from","of","in","case","default","yield","else","do","try","finally","with","async","super","this","extends","implements","instanceof"]),f8=/([a-zA-Z_$][a-zA-Z0-9_$]*)\s+\(/g;function h5($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var u5={meta:{docs:"Disallow spaces between function name and opening parenthesis in calls",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G;f8.lastIndex=0;while((G=f8.exec(z))!==null){let q=G[1],U=G.index;if(h5(z,U))continue;if(p5.has(q))continue;let W=z.slice(0,U).trimEnd();if(W.endsWith("function")||W.endsWith("function*"))continue;if(/\b(?:get|set)\s*$/.test(W))continue;let K=U+q.length;Z.push({filePath:J.filePath,line:Y+1,column:K+1,ruleId:"style/function-call-spacing",message:"Unexpected space between function name and parenthesis",severity:"warning"})}}return Z},fix($,J){let Z=$.split(/\r?\n/),X=[];for(let Y=0;Y<Z.length;Y++){let z=Z[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*")){X.push(z);continue}let G=z,q=[],U;f8.lastIndex=0;while((U=f8.exec(z))!==null){let W=U[1],K=U.index;if(h5(z,K))continue;if(p5.has(W))continue;let H=z.slice(0,K).trimEnd();if(H.endsWith("function")||H.endsWith("function*"))continue;if(/\b(?:get|set)\s*$/.test(H))continue;q.push({index:K,fullMatch:U[0],identifier:W})}for(let W=q.length-1;W>=0;W--){let K=q[W],H=K.index,V=H+K.fullMatch.length;G=`${G.slice(0,H)}${K.identifier}(${G.slice(V)}`}X.push(G)}return X.join(`
157
- `)}};var m5=/\bfunction\s*\*/g;function d5($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var o5={meta:{docs:"Enforce spacing around * in generator functions (space after, no space before)",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G;m5.lastIndex=0;while((G=m5.exec(z))!==null){let U=G.index;if(d5(z,U))continue;let W=G[0],K=U+W.indexOf("*"),H=K+1;if(W!=="function*")Z.push({filePath:J.filePath,line:Y+1,column:K+1,ruleId:"style/generator-star-spacing",message:"Unexpected space before * in generator function",severity:"warning"});if(H<z.length&&z[H]!==" "&&z[H]!=="\t"&&z[H]!==`
158
- `&&z[H]!=="(")Z.push({filePath:J.filePath,line:Y+1,column:H+1,ruleId:"style/generator-star-spacing",message:"Missing space after * in generator function",severity:"warning"})}if(Q.match(/^(?:async\s+)?\*\s*([a-zA-Z_$][a-zA-Z0-9_$]*)\s*\(/)){let U=z.indexOf("*",z.indexOf(Q.charAt(0)));if(!d5(z,U)){let W=U+1;if(W<z.length&&z[W]!==" "&&z[W]!=="\t")Z.push({filePath:J.filePath,line:Y+1,column:W+1,ruleId:"style/generator-star-spacing",message:"Missing space after * in generator method",severity:"warning"})}}}return Z},fix($,J){let Z=$;return Z=Z.replace(/\bfunction\s+\*/g,"function*"),Z=Z.replace(/\bfunction\*([a-zA-Z_$])/g,"function* $1"),Z=Z.replace(/(^\s*(?:async\s+)?)\*([a-zA-Z_$])/gm,"$1* $2"),Z}};var c5={meta:{docs:"Enforce newline after if when without braces"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y];if(!z.match(/^\s*if\s*\([^)]*\)\s*([^\s{/].*)$/))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,z.indexOf("if")+1),ruleId:"style/if-newline",message:"Expect newline after if",severity:"warning"})}return Z}};var F2=["$","unindent","unIndent"],r5={meta:{docs:"Enforce consistent indentation inside unindent-style tagged templates"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.match(/^\s*/)?.[0]??"",G=/([$A-Z_][\w$]*)\s*`/gi,q;while(q=G.exec(z)){let U=q[1];if(!F2.includes(U))continue;if(z.slice(q.index+q[0].length).includes("`"))continue;let K=-1;for(let V=Y+1;V<X.length;V++)if(X[V].includes("`")){K=V;break}if(K<0)continue;let H=`${Q} `;for(let V=Y+1;V<K;V++){let A=X[V];if(A.trim()==="")continue;let _=A.match(/^\s*/)?.[0]??"";if(!_.startsWith(H)){Z.push({filePath:J.filePath,line:V+1,column:(_.length||0)+1,ruleId:"style/indent-unindent",message:"Consistent indentation in unindent tag",severity:"warning"});break}}}}return Z}};var w2=/^(\s*)(["']?[a-zA-Z_$][a-zA-Z0-9_$]*["']?\s*(?:\?)?):(\S)/;function l5($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var a5={meta:{docs:"Require space after colon in object properties",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G=z.match(w2);if(G){let U=z.indexOf(":",G[1].length);if(U!==-1&&!l5(z,U)){let W=z[U+1];if(W&&W!==" "&&W!=="\t"&&W!==`
159
- `)Z.push({filePath:J.filePath,line:Y+1,column:U+2,ruleId:"style/key-spacing",message:"Missing space after colon in property",severity:"warning"})}}let q=Q.match(/^(["']?[a-zA-Z_$][a-zA-Z0-9_$]*["']?)\s+:/);if(q&&!Q.match(/^\s*(case|default)\b/)){let U=z.indexOf(":",z.indexOf(q[1])+q[1].length);if(U!==-1&&!l5(z,U))Z.push({filePath:J.filePath,line:Y+1,column:U+1,ruleId:"style/key-spacing",message:"Unexpected space before colon in property",severity:"warning"})}}return Z},fix($){let J=$.split(/\r?\n/),Z=[];for(let X of J){let Y=X;Y=Y.replace(/^(\s*)(["']?[a-zA-Z_$][a-zA-Z0-9_$]*["']?\s*(?:\?)?):(\S)/,"$1$2: $3"),Z.push(Y)}return Z.join(`
160
- `)}};var B2=["if","else","for","while","do","switch","case","return","throw","try","catch","finally","const","let","var","typeof","instanceof","in","of","new","delete","void","yield","await","async","from","import","export","default","class","extends","as","break","continue"],s5=new RegExp(`(?:^|[^\\w$.])(${B2.join("|")})(?=[^\\w$]|$)`,"g");function M2($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var n5={meta:{docs:"Require space before and after keywords",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G;s5.lastIndex=0;while((G=s5.exec(z))!==null){let q=G[0].charAt(0)===G[1].charAt(0)?"":G[0].charAt(0),U=G.index+q.length,W=U+G[1].length;if(M2(z,U))continue;if(U>0){let K=z[U-1];if(K===")"||K==="}")Z.push({filePath:J.filePath,line:Y+1,column:U+1,ruleId:"style/keyword-spacing",message:`Missing space before keyword '${G[1]}'`,severity:"warning"})}if(W<z.length){let K=z[W];if(K!==" "&&K!=="\t"&&K!==";"&&K!==","&&K!==":"&&K!=="."){if(K==="("&&(G[1]==="if"||G[1]==="for"||G[1]==="while"||G[1]==="switch"||G[1]==="catch"))Z.push({filePath:J.filePath,line:Y+1,column:W+1,ruleId:"style/keyword-spacing",message:`Missing space after keyword '${G[1]}'`,severity:"warning"})}}}}return Z},fix($){let J=$.split(/\r?\n/),Z=[];for(let X of J){let Y=X;for(let z of["if","for","while","switch","catch"]){let Q=new RegExp(`(\\b${z})\\(`,"g");Y=Y.replace(Q,"$1 (")}for(let z of["else","catch","finally"])Y=Y.replace(new RegExp(`\\)${z}\\b`,"g"),`) ${z}`),Y=Y.replace(new RegExp(`\\}${z}\\b`,"g"),`} ${z}`);Z.push(Y)}return Z.join(`
161
- `)}};var i5=/^\s*(?:public|private|protected|static|readonly|abstract|override|async|get|set|\*|#|[a-zA-Z_$])/,t5={meta:{docs:"Require blank line between class members",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z=0,Q=0,G=-1;for(let q=0;q<X.length;q++){let W=X[q].trim();if(W.match(/\bclass\b/)&&(W.includes("{")||q+1<X.length&&X[q+1].trim()==="{"))Y=!0,Q=z+1;let K=z;for(let H of W){if(H==="{")z++;if(H==="}")z--}if(Y&&z<Q){Y=!1,G=-1;continue}if(!Y)continue;if(K>Q&&z===Q&&W.endsWith("}")){G=q;continue}if(K===Q){if(!W||W.startsWith("//")||W.startsWith("*")||W.startsWith("/*")||W==="}")continue;if(i5.test(W)){if(G!==-1&&q===G+1)Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"style/lines-between-class-members",message:"Missing blank line between class members",severity:"warning"});if(!W.endsWith("{"))G=q}}}return Z},fix($,J){let Z=$.split(/\r?\n/),X=[],Y=!1,z=0,Q=0,G=-1;for(let q=0;q<Z.length;q++){let U=Z[q],W=U.trim();if(W.match(/\bclass\b/)&&(W.includes("{")||q+1<Z.length&&Z[q+1].trim()==="{"))Y=!0,Q=z+1;let K=z;for(let H of W){if(H==="{")z++;if(H==="}")z--}if(Y&&z<Q){Y=!1,G=-1,X.push(U);continue}if(Y&&K>Q&&z===Q&&W.endsWith("}")){G=q,X.push(U);continue}if(Y&&K===Q&&W&&!W.startsWith("//")&&!W.startsWith("*")&&!W.startsWith("/*")&&W!=="}"&&i5.test(W)){if(G!==-1&&q===G+1)X.push("");if(!W.endsWith("{"))G=q}X.push(U)}return X.join(`
162
- `)}};var e5={meta:{docs:"Limit the number of statements allowed on a single line"},check:($,J)=>{let Z=J.options&&typeof J.options.max==="number"?J.options.max:1,X=[],Y=$.split(/\r?\n/),z=(Q)=>{let G=j2(Q),q=G>=0?Q.slice(0,G):Q,U=0,W=!1,K=!1,H=!1,V=!1,A=!1,_=!1,F=!1,w=0,j="",D=(R)=>{if(R===" "||R==="\t")return;j=R};for(let R=0;R<q.length;R++){let S=q[R];if(_){_=!1;continue}if(S==="\\"){_=!0;continue}if(V){if(A){if(S==="]")A=!1;continue}if(S==="["){A=!0;continue}if(S==="/"){V=!1;while(R+1<q.length&&/[a-z]/i.test(q[R+1]))R++;j="/"}continue}if(!K&&!H&&S==="'"){W=!W,D(W?"'":"x");continue}if(!W&&!H&&S==='"'){K=!K,D(K?'"':"x");continue}if(!W&&!K&&S==="`"){H=!H,D(H?"`":"x");continue}if(W||K||H)continue;if(S==="/"&&$6(j,q,R)){V=!0;continue}if(!F){if(S==="f"&&q.slice(R,R+4).match(/^for\b/)){let f=q.slice(R+3).trimStart(),O=q.length-f.length;if(q[O]==="("){F=!0,w=1,R=O,j="(";continue}}}else if(S==="(")w++;else if(S===")"){if(w--,w<=0)F=!1}else if(S===";"){D(S);continue}if(S===";")U++;D(S)}if(U===0)return 1;return q.trimEnd().endsWith(";")?U:U+1};for(let Q=0;Q<Y.length;Q++){let G=Y[Q];if(/^\s*$/.test(G))continue;let q=z(G);if(q>Z)X.push({filePath:J.filePath,line:Q+1,column:1,ruleId:"max-statements-per-line",message:`This line has ${q} statements. Maximum allowed is ${Z}`,severity:"warning"})}return X}};function j2($){let J=!1,Z=!1,X=!1,Y=!1,z=!1,Q=!1,G="";for(let q=0;q<$.length;q++){let U=$[q];if(Q){Q=!1;continue}if(U==="\\"){Q=!0;continue}if(Y){if(z){if(U==="]")z=!1;continue}if(U==="["){z=!0;continue}if(U==="/"){Y=!1;while(q+1<$.length&&/[a-z]/i.test($[q+1]))q++;G="/"}continue}if(!Z&&!X&&U==="'"){J=!J,G=U;continue}if(!J&&!X&&U==='"'){Z=!Z,G=U;continue}if(!J&&!Z&&U==="`"){X=!X,G=U;continue}if(J||Z||X)continue;if(U==="/"&&$[q+1]==="/")return q;if(U==="/"&&$6(G,$,q)){Y=!0;continue}if(U!==" "&&U!=="\t")G=U}return-1}function $6($,J,Z){if($==="")return!0;if("([{,:;!?&|=<>~^+*%-".includes($))return!0;if(/[A-Za-z_$]/.test($)){if(J.slice(0,Z).trimEnd().match(/(?:^|[^A-Za-z0-9_$])(return|typeof|instanceof|new|delete|void|in|of|yield|await|throw|case)$/))return!0}return!1}function Z6($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var J6={meta:{docs:"Enforce consistent multiline ternary expressions",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G=z.indexOf("?");if(G===-1)continue;if(z[G+1]==="."||z[G+1]==="?")continue;if(Z6(z,G))continue;if(z.indexOf(":",G+1)!==-1)continue;for(let U=Y+1;U<Math.min(Y+10,X.length);U++){let W=X[U].trim();if(W.startsWith(":"))break;let K=W.indexOf(":");if(K>0&&!Z6(X[U],K)){if(W.match(/^\w+\s*:/)||W.match(/^case\b/))continue;Z.push({filePath:J.filePath,line:U+1,column:X[U].indexOf(":")+1,ruleId:"style/multiline-ternary",message:"In multiline ternary, ':' should be at the start of the line",severity:"warning"});break}}}return Z}};var X6=new RegExp("\\bnew\\s+([A-Z][a-zA-Z0-9_$.]+)(?![a-zA-Z0-9_$])(?:\\s*<[^>]*>)?\\s*(?=[^(;\\n]|$)","g");function N2($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var Y6={meta:{docs:"Require parentheses when invoking a constructor with no arguments",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G;X6.lastIndex=0;while((G=X6.exec(z))!==null){if(N2(z,G.index))continue;if(z.slice(G.index+G[0].length).startsWith("("))continue;if(G[0].includes("new."))continue;Z.push({filePath:J.filePath,line:Y+1,column:G.index+1,ruleId:"style/new-parens",message:`Missing parentheses invoking constructor '${G[1]}'`,severity:"warning",help:"Add () after the constructor name."})}}return Z},fix($){return $.replace(/\bnew\s+([A-Z][a-zA-Z0-9_$.]+)(?![a-zA-Z0-9_$])(\s*<[^>]*>)?\s*(?=[^(]|$)/g,(J,Z,X)=>{if(J.slice(J.indexOf(Z)+Z.length+(X?.length||0)).trim().startsWith("("))return J;return`new ${Z}${X||""}()`})}};var qB=new RegExp("\\breturn\\s+\\(([^()]*)\\)\\s*[;\\n]","g"),z6=/^[a-zA-Z_$][a-zA-Z0-9_$.[\]'"`]*$/;var Q6={meta:{docs:"Remove redundant parentheses in return statements",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G=new RegExp("^return\\s+\\(([^()]*)\\)\\s*;?\\s*$"),q=Q.match(G);if(q){let U=q[1].trim();if(z6.test(U)||/^['"`]/.test(U)||/^\d/.test(U)||U==="true"||U==="false"||U==="null"||U==="undefined")Z.push({filePath:J.filePath,line:Y+1,column:z.indexOf("(")+1,ruleId:"style/no-extra-parens",message:"Unnecessary parentheses around return value",severity:"warning",help:"Remove the outer parentheses."})}}return Z},fix($){let J=$.split(/\r?\n/),Z=[];for(let X of J){let Y=X.trim(),z=new RegExp("^return\\s+\\(([^()]*)\\)\\s*(;?)\\s*$"),Q=Y.match(z);if(Q){let G=Q[1].trim(),q=Q[2];if(z6.test(G)||/^['"`]/.test(G)||/^\d/.test(G)||G==="true"||G==="false"||G==="null"||G==="undefined"){let U=X.match(/^(\s*)/)?.[1]||"";Z.push(`${U}return ${G}${q}`);continue}}Z.push(X)}return Z.join(`
163
- `)}};var G6=/(\S)\s+(\.)[a-zA-Z_$]/g,q6=/(\S)\s+(\?\.)[a-zA-Z_$]/g;function g8($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var U6={meta:{docs:"Disallow whitespace before . or ?. in property access",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G;G6.lastIndex=0;while((G=G6.exec(z))!==null){let q=G[1],U=G.index+G[0].indexOf(".");if(g8(z,G.index))continue;if(U+1<z.length&&z[U+1]===".")continue;if(U>0&&z[U-1]===".")continue;Z.push({filePath:J.filePath,line:Y+1,column:U+1,ruleId:"style/no-whitespace-before-property",message:"Unexpected whitespace before property access dot",severity:"warning"})}q6.lastIndex=0;while((G=q6.exec(z))!==null){let q=G.index+G[0].indexOf("?.");if(g8(z,G.index))continue;Z.push({filePath:J.filePath,line:Y+1,column:q+1,ruleId:"style/no-whitespace-before-property",message:"Unexpected whitespace before optional chaining operator",severity:"warning"})}}return Z},fix($,J){let Z=$.split(/\r?\n/),X=[];for(let Y=0;Y<Z.length;Y++){let z=Z[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*")){X.push(z);continue}let G=z;G=G.replace(/(\S)\s+(\?\.[a-zA-Z_$])/g,(q,U,W,K)=>{if(g8(z,K))return q;return U+W}),G=G.replace(/(\S)\s+(\.[a-zA-Z_$])/g,(q,U,W,K)=>{if(g8(z,K))return q;let H=K+q.indexOf(".");if(H+1<G.length&&G[H+1]===".")return q;return U+W}),X.push(G)}return X.join(`
164
- `)}};function w1($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var W6=/&&/g,K6=/\|\|/g,H6=/\?\?/g,V6=/(?<![&])&(?![&=])/g,A6=/(?<![|])\|(?![|=])/g,_6=/\^(?!=)/g;function T2($){let J=[];W6.lastIndex=0;let Z;while((Z=W6.exec($))!==null)if(!w1($,Z.index))J.push({op:"&&",group:0,index:Z.index});K6.lastIndex=0;while((Z=K6.exec($))!==null)if(!w1($,Z.index))J.push({op:"||",group:1,index:Z.index});H6.lastIndex=0;while((Z=H6.exec($))!==null)if(!w1($,Z.index))J.push({op:"??",group:2,index:Z.index});V6.lastIndex=0;while((Z=V6.exec($))!==null)if(!w1($,Z.index))J.push({op:"&",group:3,index:Z.index});A6.lastIndex=0;while((Z=A6.exec($))!==null)if(!w1($,Z.index))J.push({op:"|",group:4,index:Z.index});_6.lastIndex=0;while((Z=_6.exec($))!==null)if(!w1($,Z.index))J.push({op:"^",group:5,index:Z.index});return J.sort((X,Y)=>X.index-Y.index)}function E2($,J){if(J.length<2)return!0;let Z=[];for(let z of J){let Q=0;for(let G=0;G<z.index;G++)if($[G]==="(")Q++;else if($[G]===")")Q--;Z.push(Q)}let X=new Map;for(let z=0;z<J.length;z++){let Q=J[z].group;if(!X.has(Q))X.set(Q,[]);X.get(Q).push(Z[z])}let Y=[...X.entries()];if(Y.length===2){let[,z]=Y[0],[,Q]=Y[1],G=Math.min(...z),q=Math.max(...z),U=Math.min(...Q),W=Math.max(...Q);if(G>W||U>q)return!0}return!1}var D2=[{groups:[0,1],label:"&& and ||"},{groups:[0,2],label:"&& and ??"},{groups:[1,2],label:"|| and ??"},{groups:[3,4],label:"& and |"},{groups:[3,5],label:"& and ^"},{groups:[4,5],label:"| and ^"}],F6={meta:{docs:"Disallow mixed logical/bitwise operators without parentheses",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G=T2(z);if(G.length<2)continue;let q=new Set(G.map((U)=>U.group));for(let U of D2)if(q.has(U.groups[0])&&q.has(U.groups[1])){let W=G.filter((K)=>K.group===U.groups[0]||K.group===U.groups[1]);if(!E2(z,W)){let K=W.find((H)=>H.group===U.groups[1]);if(K)Z.push({filePath:J.filePath,line:Y+1,column:K.index+1,ruleId:"style/no-mixed-operators",message:`Unexpected mix of ${U.label} without parentheses`,severity:"warning"})}}}return Z}};var w6=/(?<![0-9.])\.\d/g,B6=/\d\.(?!\d|\.|\w)/g;function M6($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var j6={meta:{docs:"Disallow floating decimals like .5 or 2.",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G;w6.lastIndex=0;while((G=w6.exec(z))!==null){if(M6(z,G.index))continue;if(G.index>0){let q=z[G.index-1];if(/[a-zA-Z_$)\]]/.test(q))continue}Z.push({filePath:J.filePath,line:Y+1,column:G.index+1,ruleId:"style/no-floating-decimal",message:"Unexpected leading decimal point",severity:"warning",help:"Add a leading 0 before the decimal point: 0.5 instead of .5"})}B6.lastIndex=0;while((G=B6.exec(z))!==null){if(M6(z,G.index))continue;Z.push({filePath:J.filePath,line:Y+1,column:G.index+1,ruleId:"style/no-floating-decimal",message:"Unexpected trailing decimal point",severity:"warning",help:"Add a trailing 0 after the decimal point: 2.0 instead of 2."})}}return Z},fix($){let J=$;return J=J.replace(/(?<![a-zA-Z_$0-9.)\]])\.\d/g,(Z)=>`0${Z}`),J=J.replace(/(\d)\.(?!\d|\.|\w)/g,(Z,X)=>`${X}.0`),J}};var N6={meta:{docs:"Disallow mixed spaces and tabs for indentation",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let Q=X[Y].match(/^(\s*)/)?.[1]||"";if(!Q)continue;let G=Q.includes("\t"),q=Q.includes(" ");if(G&&q)Z.push({filePath:J.filePath,line:Y+1,column:1,ruleId:"style/no-mixed-spaces-and-tabs",message:"Mixed spaces and tabs in indentation",severity:"warning",help:"Use either spaces or tabs for indentation, not both."})}return Z}};var T6={meta:{docs:"Disallow multiple consecutive spaces",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y];if(!z.trim())continue;let Q=z.match(/^(\s*)/)?.[1]||"",G=z.slice(Q.length),q=/ {2,}/g,U;for(U=q.exec(G);U!==null;U=q.exec(G)){let W=Q.length+U.index+1,K=G.slice(0,U.index),H=(K.match(/'/g)||[]).length,V=(K.match(/"/g)||[]).length,A=(K.match(/`/g)||[]).length;if(H%2===1||V%2===1||A%2===1)continue;if(K.includes("//"))continue;if(z.trim().startsWith("*")||z.trim().startsWith("/*"))continue;Z.push({filePath:J.filePath,line:Y+1,column:W,ruleId:"style/no-multi-spaces",message:"Multiple spaces found",severity:"warning",help:"Remove extra spaces. Use single spaces between tokens."})}}return Z}};var E6={meta:{docs:"Disallow multiple consecutive blank lines",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=0,z=-1;for(let Q=0;Q<X.length;Q++)if(X[Q].trim()===""){if(Y++,z===-1)z=Q;if(Y>1&&Q===z+Y-1)Z.push({filePath:J.filePath,line:Q+1,column:1,ruleId:"style/no-multiple-empty-lines",message:"More than 1 blank line not allowed",severity:"error",help:"Remove extra blank lines. Maximum 1 consecutive blank line allowed."})}else Y=0,z=-1;return Z}};var D6={meta:{docs:"Disallow tab characters (when using spaces for indentation)",recommended:!1},check($,J){let Z=[];if(J.config.format?.indentStyle==="tabs")return Z;let X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let Q=X[Y].indexOf("\t");if(Q!==-1)Z.push({filePath:J.filePath,line:Y+1,column:Q+1,ruleId:"style/no-tabs",message:"Unexpected tab character",severity:"warning",help:"Use spaces for indentation instead of tabs."})}return Z},fix($,J){let Z=J.config.format?.indent??2;return $.replace(/\t/g," ".repeat(Z))}};var R6={meta:{docs:"Disallow trailing whitespace at the end of lines",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.match(/(\s+)$/);if(Q){let G=z.length-Q[1].length+1;Z.push({filePath:J.filePath,line:Y+1,column:G,ruleId:"style/no-trailing-spaces",message:"Trailing spaces not allowed",severity:"error",help:"Remove trailing whitespace from the end of this line."})}}return Z}};function O6($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var L6={meta:{docs:"Require spaces inside curly braces in objects and destructuring",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;for(let G=0;G<z.length;G++){if(z[G]==="{"&&!O6(z,G)){let q=z[G+1];if(q==="}"||q===void 0||q===`
165
- `)continue;if(G>0&&z[G-1]==="$")continue;if(q!==" "&&q!=="\t")Z.push({filePath:J.filePath,line:Y+1,column:G+2,ruleId:"style/object-curly-spacing",message:"Missing space after '{'",severity:"warning"})}if(z[G]==="}"&&!O6(z,G)){let q=G>0?z[G-1]:void 0;if(q==="{"||q===void 0||q===`
154
+ `)X++;Z("LineComment",q,X);continue}if($[X+1]==="*"){let q=X;X+=2;while(X<Y&&!($[X]==="*"&&$[X+1]==="/"))X++;X=Math.min(Y,X+2),Z("BlockComment",q,X);continue}if(V2(J)){let q=X;X++;while(X<Y){let U=$[X];if(U==="\\"){X+=2;continue}if(U==="/"){X++;break}X++}while(X<Y&&/[a-z]/i.test($[X]))X++;Z("Regex",q,X);continue}Z("Punct",X,X+1),X++;continue}if("(){}[];:,.<>+-*%&|^!?=~".includes(z)){Z("Punct",X,X+1),X++;continue}let Q=X,G=new RegExp("[^\\s(){}[\\];:,.<>+\\-*%&|^!?=~'\"`/]");while(X<Y&&G.test($[X]))X++;if(X>Q)Z("Word",Q,X);else Z("Word",X,X+1),X++}return J}function V2($){if($.length===0)return!0;let J=$[$.length-1],Z=new RegExp("[(!,{;:?=]");return J.type==="Punct"&&Z.test(J.value)||J.type==="Word"&&/^(?:return|throw|case|of|in|instanceof|typeof|void|new)$/.test(J.value)}function b5($,J,Z,X){let Y=0,z=(K)=>K<=" ",Q=(K)=>{while(K<$.length&&$[K]!==`
155
+ `)K++;return K},G=(K)=>{K+=2;while(K<$.length&&!($[K]==="*"&&$[K+1]==="/"))K++;return Math.min($.length,K+2)},q=(K,H)=>{let V=$.length;if(H==="`"){K++;let A=0;while(K<V){let _=$[K];if(_==="\\"){K+=2;continue}if(_==="`"&&A===0){K++;break}if(_==="$"&&$[K+1]==="{"){A++,K+=2;continue}if(_==="}"&&A>0){A--,K++;continue}if(_==='"'||_==="'"){K=q(K,_);continue}if(_==="/"&&$[K+1]==="/"){K=Q(K+2);continue}if(_==="/"&&$[K+1]==="*"){K=G(K);continue}K++}return K}K++;while(K<V){let A=$[K];if(A==="\\"){K+=2;continue}if(A===H){K++;break}K++}return K},U=(K)=>{let H=K-1;while(H>=0&&z($[H]))H--;let V=H>=0?$[H]:"";if(new RegExp("[(:[{;?,=!&|^~+\\-*%<>]").test(V))return!0;if(V==="")return!0;return!1},W=(K)=>{K++;let H=$.length;while(K<H){let V=$[K];if(V==="\\"){K+=2;continue}if(V==="/"){K++;break}K++}while(K<H&&/[a-z]/i.test($[K]))K++;return K};for(let K=J;K<$.length;K++){let H=$[K];if(H===Z){Y++;continue}if(H===X){if(Y--,Y===0)return K;continue}if(H==='"'||H==="'"||H==="`"){K=q(K,H)-1;continue}if(H==="/"&&$[K+1]==="/"){K=Q(K+2)-1;continue}if(H==="/"&&$[K+1]==="*"){K=G(K)-1;continue}if(H==="/"&&U(K)){K=W(K)-1;continue}}return-1}function b8($,J,Z,X,Y,z,Q){let G=b5($,X,Y,z);if(G<=X)return;let q=$.slice(X+1,G),U=/\r?\n/.test(q),W=v5($),K=[],H=0,V=X+1,A=y5($.slice(X+1,G)),_=0;for(let F of A){let M=X+1+F.start,T=X+1+F.end;if(_=T,F.type==="Punct"){if(F.value===Y)H++;else if(F.value===z&&H>0)H--;else if(F.value===","&&H===0)K.push({start:V,end:M}),V=T}}if(K.push({start:V,end:G}),!U){for(let F of K){let M=$.slice(F.start,F.end);if(/\r?\n/.test(M)){let T=W.indexToLoc(F.start);Z.push({filePath:J,line:T.line,column:T.column,ruleId:Q,message:"Should not have line breaks between items",severity:"warning"});break}}return}let w=q.indexOf(`
156
+ `);if(w>0){let F=q.slice(0,w),M=(F.match(/,/g)||[]).length,T=q.slice(w+1),E=T.includes(`
157
+ `),j=T.includes(",");if(M>=1&&/\S,\s*\S/.test(F)&&!E&&!j){let O=W.indexToLoc(X+1+w+1);Z.push({filePath:J,line:O.line,column:O.column,ruleId:Q,message:"Should not have line breaks between items",severity:"warning"});return}else if(M>=1&&/\S,\s*\S/.test(F)){let O=W.indexToLoc(X+1+F.search(/,\s*\S/));Z.push({filePath:J,line:O.line,column:O.column,ruleId:Q,message:"Should have line breaks between items",severity:"warning"});return}}for(let F of K){let M=$.slice(X+1,F.start);if(!/\n[ \t]*$/.test(M)&&M.trim()!==""){let T=W.indexToLoc(F.start);Z.push({filePath:J,line:T.line,column:T.column,ruleId:Q,message:"Should have line breaks between items",severity:"warning"});break}}}var k5={meta:{docs:"Enforce consistent newlines for list-like constructs (objects, arrays, named imports/exports)"},check:($,J)=>{let Z=[],X="style/consistent-list-newline";for(let Y=0;Y<$.length;Y++){let z=$[Y];if(z==="{"){let Q=Y-1;while(Q>=0&&/[ \t]/.test($[Q]))Q--;if(Q>=0&&$[Q]===")")continue;let G=$.slice(Math.max(0,Y-60),Y);if(/\b(?:function|class|interface|type|enum|try|catch|finally|if|else|for|while|switch)\b[\s\S]*$/.test(G))continue;b8($,J.filePath,Z,Y,"{","}","style/consistent-list-newline")}else if(z==="[")b8($,J.filePath,Z,Y,"[","]","style/consistent-list-newline");else if(z==="i"&&$.startsWith("import",Y)){let Q=$.indexOf("{",Y);if(Q>-1)b8($,J.filePath,Z,Q,"{","}","style/consistent-list-newline")}else if(z==="e"&&$.startsWith("export",Y)){let Q=$.indexOf("{",Y);if(Q>-1)b8($,J.filePath,Z,Q,"{","}","style/consistent-list-newline")}}return Z}};function A2($){let J=$.trim();return J===""||J.startsWith("//")||J.startsWith("/*")}function X9($,J){for(let Z=J;Z<$.length;Z++)if(!A2($[Z]))return Z;return-1}function w1($,J,Z){if($[J].slice(Z).includes("{"))return!0;let Y=X9($,J+1);if(Y>=0){if($[Y].trim().startsWith("{"))return!0}return!1}function k8($,J,Z){let X=$[J].slice(Z);if(/\bif\b|\bfor\b|\bwhile\b|\bdo\b/.test(X))return!0;return!1}var f5={meta:{docs:"Enforce curly brackets similar to src-2: require braces when any branch/body requires them"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let z=0;z<X.length;z++){let Q=X[z],G=Q.match(/^(\s*)if\s*\(([^)]*)\)/);if(G){let U=G[0].length,W=w1(X,z,U),K=k8(X,z,U),H=z,V=W,A=K;while(!0){let _=X9(X,H+1);if(_<0)break;let w=X[_].trim();if(!w.startsWith("else"))break;let F=w.match(/^else\s+if\s*\(([^)]*)\)/);if(F){let M=X[_].indexOf(F[0])+F[0].length;V=V||w1(X,_,M),A=A||k8(X,_,M),H=_;continue}else{let M=X[_].indexOf("else")+4;V=V||w1(X,_,M),A=A||k8(X,_,M),H=_;break}}if(V||A){if(!W)Z.push({filePath:J.filePath,line:z+1,column:Math.max(1,Q.indexOf("if")+1),ruleId:"style/curly",message:"Expect curly brackets",severity:"warning"});let _=z;while(!0){let w=X9(X,_+1);if(w<0)break;let F=X[w],M=F.trim();if(!M.startsWith("else"))break;let T=M.match(/^else\s+if\s*\(([^)]*)\)/);if(T){let E=F.indexOf(T[0])+T[0].length;if(!w1(X,w,E))Z.push({filePath:J.filePath,line:w+1,column:Math.max(1,F.indexOf("else")+1),ruleId:"style/curly",message:"Expect curly brackets",severity:"warning"});_=w;continue}else{let E=F.indexOf("else")+4;if(!w1(X,w,E))Z.push({filePath:J.filePath,line:w+1,column:Math.max(1,F.indexOf("else")+1),ruleId:"style/curly",message:"Expect curly brackets",severity:"warning"});break}}}}let q=Q.match(/^(\s*)(while|do|for|for\s+await)\b/);if(q){let U=q[0].length,W=w1(X,z,U),K=k8(X,z,U);if((W||K)&&!W)Z.push({filePath:J.filePath,line:z+1,column:Math.max(1,Q.indexOf(q[2])+1),ruleId:"style/curly",message:"Expect curly brackets",severity:"warning"})}}let Y=_2($,J.filePath);for(let z of Y)Z.push({filePath:J.filePath,line:z.line,column:z.column,ruleId:"style/curly",message:z.message,severity:"warning"});return Z}};function _2($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim(),G=/^if\s*\(/.test(Q)?"if":/^else\s+if\s*\(/.test(Q)?"else-if":/^else\b/.test(Q)?"else":null;if(!G)continue;let q=0;if(G==="if"){let A=z.match(/if\s*\([^)]*\)/);q=A?z.indexOf(A[0])+A[0].length:z.indexOf("if")+2}else if(G==="else-if"){let A=z.match(/else\s+if\s*\([^)]*\)/);q=A?z.indexOf(A[0])+A[0].length:z.indexOf("else")+4}else q=z.indexOf("else")+4;let U=Y,W=z.indexOf("{",q);if(W<0){let A=function(w){for(let F=w;F<X.length;F++)if(X[F].trim()!=="")return F;return-1}(Y+1);if(A<0)continue;if(W=X[A].indexOf("{"),W<0)continue;U=A}let K=0,H=-1;for(let A=U;A<X.length;A++){let _=X[A],w=A===U?Math.max(0,W):0;for(let F=w;F<_.length;F++){let M=_[F];if(M==="{")K++;else if(M==="}"){if(K--,K===0){H=A;break}}}if(H>=0)break}if(H<0)continue;let V=[];for(let A=U+1;A<H;A++){let _=X[A].trim();if(_===""||/^\/\//.test(_))continue;if(V.push(_),V.length>1)break}if(V.length===1&&H===U+2){let A=V[0],_=/^(?:if|for|while|do|switch|try|catch|else)\b/.test(A),w=/[{}]/.test(A),F=(A.match(/\(/g)||[]).length,M=(A.match(/\)/g)||[]).length,T=F!==M,E=!1;for(let j=Y+1;j<X.length;j++){let O=X[j].trim();if(O===""||O==="}"||/^\/\//.test(O))continue;if(!/^else\b/.test(O))break;let v=X[j].indexOf("else")+4,k=O.match(/^else\s+if\s*\([^)]*\)/);if(k)v=X[j].indexOf(k[0])+k[0].length;let L=j,h=X[j].indexOf("{",v);if(h<0){let I=function(C){for(let N=C;N<X.length;N++)if(X[N].trim()!=="")return N;return-1}(j+1);if(I<0)break;if(h=X[I].indexOf("{"),h<0)continue;L=I}let b=0,P=-1;for(let I=L;I<X.length;I++){let S=X[I],C=I===L?Math.max(0,h):0;for(let N=C;N<S.length;N++){let R=S[N];if(R==="{")b++;else if(R==="}"){if(b--,b===0){P=I;break}}}if(P>=0)break}if(P>=0){let I=0;for(let S=L+1;S<P;S++){let C=X[S].trim();if(C===""||/^\/\//.test(C))continue;if(I++,I>1){E=!0;break}}}if(E)break}if(!E&&G==="if"){let j=function(v){for(let k=v;k<X.length;k++){let L=X[k].trim();if(L!==""&&L!=="}"&&!/^\/\//.test(L))return k}return-1}(H+1);if(j>=0&&/^else\b/.test(X[j].trim())){let O=X[j].indexOf("else")+4,v=X[j].trim().match(/^else\s+if\s*\([^)]*\)/);if(v)O=X[j].indexOf(v[0])+v[0].length;let k=j,L=X[j].indexOf("{",O);if(L<0){let h=function(P){for(let I=P;I<X.length;I++)if(X[I].trim()!=="")return I;return-1}(j+1);if(h>=0)L=X[h].indexOf("{"),k=L>=0?h:k}if(L>=0){let h=0,b=-1;for(let P=k;P<X.length;P++){let I=X[P],S=P===k?Math.max(0,L):0;for(let C=S;C<I.length;C++){let N=I[C];if(N==="{")h++;else if(N==="}"){if(h--,h===0){b=P;break}}}if(b>=0)break}if(b>=0){let P=0;for(let I=k+1;I<b;I++){let S=X[I].trim();if(S===""||/^\/\//.test(S))continue;if(++P>1){E=!0;break}}}}}}if(!_&&!w&&!T&&!E)Z.push({line:U+1,column:Math.max(1,X[U].indexOf("{")+1),message:"Unnecessary curly braces around single statement"})}}return Z}var g5={meta:{docs:"Enforce dot on the property line in chained method calls",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=e0($);for(let z=0;z<X.length;z++){let Q=X[z],G=Q.trim();if(!G||G.startsWith("//")||G.startsWith("*")||G.startsWith("/*"))continue;if(Y[z+1])continue;if(G.endsWith(".")&&z+1<X.length){let q=X[z+1].trim();if(q&&/^[a-zA-Z_$]/.test(q))Z.push({filePath:J.filePath,line:z+1,column:Q.length,ruleId:"style/dot-location",message:"Dot should be on the same line as the property",severity:"warning"})}}return Z},fix($){let J=$.split(/\r?\n/),Z=[],X=e0($);for(let Y=0;Y<J.length;Y++){let z=J[Y];if(z.trim().endsWith(".")&&!X[Y+1]&&Y+1<J.length){let G=J[Y+1],q=G.trim();if(q&&/^[a-zA-Z_$]/.test(q)){Z.push(z.replace(/\.\s*$/,""));let U=G.match(/^(\s*)/)?.[1]||"";J[Y+1]=`${U}.${q}`;continue}}Z.push(z)}return Z.join(`
158
+ `)}};function p5($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var x5=["===","!==",">>>","==","!=",">=","<=","&&","||","??","**","<<",">>","+","-","*","/","%","|","&","^",">","<","instanceof","in"],tw=new RegExp(`^(${x5.map(($)=>$.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|")})\\s`),F2=new Set(["in","instanceof"]),w2=/^(?:instanceof|in)\s/;function f8($){if(w2.test($))return!0;for(let J of x5){if(F2.has(J))continue;if($.startsWith(J)){let Z=$[J.length];if(Z===void 0||Z===" "||Z==="\t")return!0}}return!1}function Y9($){let J=$.match(/^(\s*)/);return J?J[1].length:0}var h5={meta:{docs:"Enforce consistent indentation of continuation lines in multiline binary expressions",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;if(!f8(Q))continue;if(p5(z,0))continue;let G=Y-1;while(G>=0){let W=X[G].trim();if(!W||W.startsWith("//")||W.startsWith("*")||W.startsWith("/*")){G--;continue}if(f8(W)){G--;continue}break}if(G<0)continue;let q=Y9(X[G])+2,U=Y9(z);if(U!==q)Z.push({filePath:J.filePath,line:Y+1,column:U+1,ruleId:"style/indent-binary-ops",message:`Expected indentation of ${q} spaces for binary operator continuation, but found ${U}`,severity:"warning"})}return Z},fix($,J){let Z=$.split(/\r?\n/),X=[];for(let Y=0;Y<Z.length;Y++){let z=Z[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*")){X.push(z);continue}if(!f8(Q)||p5(z,0)){X.push(z);continue}let G=-1;for(let W=X.length-1;W>=0;W--){let K=X[W].trim();if(!K||K.startsWith("//")||K.startsWith("*")||K.startsWith("/*"))continue;if(f8(K))continue;G=W;break}if(G<0){X.push(z);continue}let q=Y9(X[G])+2,U=" ".repeat(q)+Q;X.push(U);continue}return X.join(`
159
+ `)}};var u5=new Set(["if","for","while","switch","catch","function","return","typeof","void","delete","throw","new","await","class","import","export","from","of","in","case","default","yield","else","do","try","finally","with","async","super","this","extends","implements","instanceof"]),g8=/([a-zA-Z_$][a-zA-Z0-9_$]*)\s+\(/g;function m5($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var d5={meta:{docs:"Disallow spaces between function name and opening parenthesis in calls",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G;g8.lastIndex=0;while((G=g8.exec(z))!==null){let q=G[1],U=G.index;if(m5(z,U))continue;if(u5.has(q))continue;let W=z.slice(0,U).trimEnd();if(W.endsWith("function")||W.endsWith("function*"))continue;if(/\b(?:get|set)\s*$/.test(W))continue;let K=U+q.length;Z.push({filePath:J.filePath,line:Y+1,column:K+1,ruleId:"style/function-call-spacing",message:"Unexpected space between function name and parenthesis",severity:"warning"})}}return Z},fix($,J){let Z=$.split(/\r?\n/),X=[];for(let Y=0;Y<Z.length;Y++){let z=Z[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*")){X.push(z);continue}let G=z,q=[],U;g8.lastIndex=0;while((U=g8.exec(z))!==null){let W=U[1],K=U.index;if(m5(z,K))continue;if(u5.has(W))continue;let H=z.slice(0,K).trimEnd();if(H.endsWith("function")||H.endsWith("function*"))continue;if(/\b(?:get|set)\s*$/.test(H))continue;q.push({index:K,fullMatch:U[0],identifier:W})}for(let W=q.length-1;W>=0;W--){let K=q[W],H=K.index,V=H+K.fullMatch.length;G=`${G.slice(0,H)}${K.identifier}(${G.slice(V)}`}X.push(G)}return X.join(`
160
+ `)}};var o5=/\bfunction\s*\*/g;function c5($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var r5={meta:{docs:"Enforce spacing around * in generator functions (space after, no space before)",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G;o5.lastIndex=0;while((G=o5.exec(z))!==null){let U=G.index;if(c5(z,U))continue;let W=G[0],K=U+W.indexOf("*"),H=K+1;if(W!=="function*")Z.push({filePath:J.filePath,line:Y+1,column:K+1,ruleId:"style/generator-star-spacing",message:"Unexpected space before * in generator function",severity:"warning"});if(H<z.length&&z[H]!==" "&&z[H]!=="\t"&&z[H]!==`
161
+ `&&z[H]!=="(")Z.push({filePath:J.filePath,line:Y+1,column:H+1,ruleId:"style/generator-star-spacing",message:"Missing space after * in generator function",severity:"warning"})}if(Q.match(/^(?:async\s+)?\*\s*([a-zA-Z_$][a-zA-Z0-9_$]*)\s*\(/)){let U=z.indexOf("*",z.indexOf(Q.charAt(0)));if(!c5(z,U)){let W=U+1;if(W<z.length&&z[W]!==" "&&z[W]!=="\t")Z.push({filePath:J.filePath,line:Y+1,column:W+1,ruleId:"style/generator-star-spacing",message:"Missing space after * in generator method",severity:"warning"})}}}return Z},fix($,J){let Z=$;return Z=Z.replace(/\bfunction\s+\*/g,"function*"),Z=Z.replace(/\bfunction\*([a-zA-Z_$])/g,"function* $1"),Z=Z.replace(/(^\s*(?:async\s+)?)\*([a-zA-Z_$])/gm,"$1* $2"),Z}};var l5={meta:{docs:"Enforce newline after if when without braces"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y];if(!z.match(/^\s*if\s*\([^)]*\)\s*([^\s{/].*)$/))continue;Z.push({filePath:J.filePath,line:Y+1,column:Math.max(1,z.indexOf("if")+1),ruleId:"style/if-newline",message:"Expect newline after if",severity:"warning"})}return Z}};var B2=["$","unindent","unIndent"],a5={meta:{docs:"Enforce consistent indentation inside unindent-style tagged templates"},check:($,J)=>{let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.match(/^\s*/)?.[0]??"",G=/([$A-Z_][\w$]*)\s*`/gi,q;while(q=G.exec(z)){let U=q[1];if(!B2.includes(U))continue;if(z.slice(q.index+q[0].length).includes("`"))continue;let K=-1;for(let V=Y+1;V<X.length;V++)if(X[V].includes("`")){K=V;break}if(K<0)continue;let H=`${Q} `;for(let V=Y+1;V<K;V++){let A=X[V];if(A.trim()==="")continue;let _=A.match(/^\s*/)?.[0]??"";if(!_.startsWith(H)){Z.push({filePath:J.filePath,line:V+1,column:(_.length||0)+1,ruleId:"style/indent-unindent",message:"Consistent indentation in unindent tag",severity:"warning"});break}}}}return Z}};var M2=/^(\s*)(["']?[a-zA-Z_$][a-zA-Z0-9_$]*["']?\s*(?:\?)?):(\S)/;function s5($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var n5={meta:{docs:"Require space after colon in object properties",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G=z.match(M2);if(G){let U=z.indexOf(":",G[1].length);if(U!==-1&&!s5(z,U)){let W=z[U+1];if(W&&W!==" "&&W!=="\t"&&W!==`
162
+ `)Z.push({filePath:J.filePath,line:Y+1,column:U+2,ruleId:"style/key-spacing",message:"Missing space after colon in property",severity:"warning"})}}let q=Q.match(/^(["']?[a-zA-Z_$][a-zA-Z0-9_$]*["']?)\s+:/);if(q&&!Q.match(/^\s*(case|default)\b/)){let U=z.indexOf(":",z.indexOf(q[1])+q[1].length);if(U!==-1&&!s5(z,U))Z.push({filePath:J.filePath,line:Y+1,column:U+1,ruleId:"style/key-spacing",message:"Unexpected space before colon in property",severity:"warning"})}}return Z},fix($){let J=$.split(/\r?\n/),Z=[];for(let X of J){let Y=X;Y=Y.replace(/^(\s*)(["']?[a-zA-Z_$][a-zA-Z0-9_$]*["']?\s*(?:\?)?):(\S)/,"$1$2: $3"),Z.push(Y)}return Z.join(`
163
+ `)}};var j2=["if","else","for","while","do","switch","case","return","throw","try","catch","finally","const","let","var","typeof","instanceof","in","of","new","delete","void","yield","await","async","from","import","export","default","class","extends","as","break","continue"],i5=new RegExp(`(?:^|[^\\w$.])(${j2.join("|")})(?=[^\\w$]|$)`,"g");function N2($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var t5={meta:{docs:"Require space before and after keywords",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G;i5.lastIndex=0;while((G=i5.exec(z))!==null){let q=G[0].charAt(0)===G[1].charAt(0)?"":G[0].charAt(0),U=G.index+q.length,W=U+G[1].length;if(N2(z,U))continue;if(U>0){let K=z[U-1];if(K===")"||K==="}")Z.push({filePath:J.filePath,line:Y+1,column:U+1,ruleId:"style/keyword-spacing",message:`Missing space before keyword '${G[1]}'`,severity:"warning"})}if(W<z.length){let K=z[W];if(K!==" "&&K!=="\t"&&K!==";"&&K!==","&&K!==":"&&K!=="."){if(K==="("&&(G[1]==="if"||G[1]==="for"||G[1]==="while"||G[1]==="switch"||G[1]==="catch"))Z.push({filePath:J.filePath,line:Y+1,column:W+1,ruleId:"style/keyword-spacing",message:`Missing space after keyword '${G[1]}'`,severity:"warning"})}}}}return Z},fix($){let J=$.split(/\r?\n/),Z=[];for(let X of J){let Y=X;for(let z of["if","for","while","switch","catch"]){let Q=new RegExp(`(\\b${z})\\(`,"g");Y=Y.replace(Q,"$1 (")}for(let z of["else","catch","finally"])Y=Y.replace(new RegExp(`\\)${z}\\b`,"g"),`) ${z}`),Y=Y.replace(new RegExp(`\\}${z}\\b`,"g"),`} ${z}`);Z.push(Y)}return Z.join(`
164
+ `)}};var e5=/^\s*(?:public|private|protected|static|readonly|abstract|override|async|get|set|\*|#|[a-zA-Z_$])/,$6={meta:{docs:"Require blank line between class members",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z=0,Q=0,G=-1;for(let q=0;q<X.length;q++){let W=X[q].trim();if(W.match(/\bclass\b/)&&(W.includes("{")||q+1<X.length&&X[q+1].trim()==="{"))Y=!0,Q=z+1;let K=z;for(let H of W){if(H==="{")z++;if(H==="}")z--}if(Y&&z<Q){Y=!1,G=-1;continue}if(!Y)continue;if(K>Q&&z===Q&&W.endsWith("}")){G=q;continue}if(K===Q){if(!W||W.startsWith("//")||W.startsWith("*")||W.startsWith("/*")||W==="}")continue;if(e5.test(W)){if(G!==-1&&q===G+1)Z.push({filePath:J.filePath,line:q+1,column:1,ruleId:"style/lines-between-class-members",message:"Missing blank line between class members",severity:"warning"});if(!W.endsWith("{"))G=q}}}return Z},fix($,J){let Z=$.split(/\r?\n/),X=[],Y=!1,z=0,Q=0,G=-1;for(let q=0;q<Z.length;q++){let U=Z[q],W=U.trim();if(W.match(/\bclass\b/)&&(W.includes("{")||q+1<Z.length&&Z[q+1].trim()==="{"))Y=!0,Q=z+1;let K=z;for(let H of W){if(H==="{")z++;if(H==="}")z--}if(Y&&z<Q){Y=!1,G=-1,X.push(U);continue}if(Y&&K>Q&&z===Q&&W.endsWith("}")){G=q,X.push(U);continue}if(Y&&K===Q&&W&&!W.startsWith("//")&&!W.startsWith("*")&&!W.startsWith("/*")&&W!=="}"&&e5.test(W)){if(G!==-1&&q===G+1)X.push("");if(!W.endsWith("{"))G=q}X.push(U)}return X.join(`
165
+ `)}};var Z6={meta:{docs:"Limit the number of statements allowed on a single line"},check:($,J)=>{let Z=J.options&&typeof J.options.max==="number"?J.options.max:1,X=[],Y=$.split(/\r?\n/),z=(Q)=>{let G=T2(Q),q=G>=0?Q.slice(0,G):Q,U=0,W=!1,K=!1,H=!1,V=!1,A=!1,_=!1,w=!1,F=0,M="",T=(O)=>{if(O===" "||O==="\t")return;M=O};for(let O=0;O<q.length;O++){let v=q[O];if(_){_=!1;continue}if(v==="\\"){_=!0;continue}if(V){if(A){if(v==="]")A=!1;continue}if(v==="["){A=!0;continue}if(v==="/"){V=!1;while(O+1<q.length&&/[a-z]/i.test(q[O+1]))O++;M="/"}continue}if(!K&&!H&&v==="'"){W=!W,T(W?"'":"x");continue}if(!W&&!H&&v==='"'){K=!K,T(K?'"':"x");continue}if(!W&&!K&&v==="`"){H=!H,T(H?"`":"x");continue}if(W||K||H)continue;if(v==="/"&&J6(M,q,O)){V=!0;continue}if(!w){if(v==="f"&&q.slice(O,O+4).match(/^for\b/)){let k=q.slice(O+3).trimStart(),L=q.length-k.length;if(q[L]==="("){w=!0,F=1,O=L,M="(";continue}}}else if(v==="(")F++;else if(v===")"){if(F--,F<=0)w=!1}else if(v===";"){T(v);continue}if(v===";")U++;T(v)}if(U===0)return 1;return q.trimEnd().endsWith(";")?U:U+1};for(let Q=0;Q<Y.length;Q++){let G=Y[Q];if(/^\s*$/.test(G))continue;let q=z(G);if(q>Z)X.push({filePath:J.filePath,line:Q+1,column:1,ruleId:"max-statements-per-line",message:`This line has ${q} statements. Maximum allowed is ${Z}`,severity:"warning"})}return X}};function T2($){let J=!1,Z=!1,X=!1,Y=!1,z=!1,Q=!1,G="";for(let q=0;q<$.length;q++){let U=$[q];if(Q){Q=!1;continue}if(U==="\\"){Q=!0;continue}if(Y){if(z){if(U==="]")z=!1;continue}if(U==="["){z=!0;continue}if(U==="/"){Y=!1;while(q+1<$.length&&/[a-z]/i.test($[q+1]))q++;G="/"}continue}if(!Z&&!X&&U==="'"){J=!J,G=U;continue}if(!J&&!X&&U==='"'){Z=!Z,G=U;continue}if(!J&&!Z&&U==="`"){X=!X,G=U;continue}if(J||Z||X)continue;if(U==="/"&&$[q+1]==="/")return q;if(U==="/"&&J6(G,$,q)){Y=!0;continue}if(U!==" "&&U!=="\t")G=U}return-1}function J6($,J,Z){if($==="")return!0;if("([{,:;!?&|=<>~^+*%-".includes($))return!0;if(/[A-Za-z_$]/.test($)){if(J.slice(0,Z).trimEnd().match(/(?:^|[^A-Za-z0-9_$])(return|typeof|instanceof|new|delete|void|in|of|yield|await|throw|case)$/))return!0}return!1}function X6($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var Y6={meta:{docs:"Enforce consistent multiline ternary expressions",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G=z.indexOf("?");if(G===-1)continue;if(z[G+1]==="."||z[G+1]==="?")continue;if(X6(z,G))continue;if(z.indexOf(":",G+1)!==-1)continue;for(let U=Y+1;U<Math.min(Y+10,X.length);U++){let W=X[U].trim();if(W.startsWith(":"))break;let K=W.indexOf(":");if(K>0&&!X6(X[U],K)){if(W.match(/^\w+\s*:/)||W.match(/^case\b/))continue;Z.push({filePath:J.filePath,line:U+1,column:X[U].indexOf(":")+1,ruleId:"style/multiline-ternary",message:"In multiline ternary, ':' should be at the start of the line",severity:"warning"});break}}}return Z}};var z6=new RegExp("\\bnew\\s+([A-Z][a-zA-Z0-9_$.]+)(?![a-zA-Z0-9_$])(?:\\s*<[^>]*>)?\\s*(?=[^(;\\n]|$)","g");function E2($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var Q6={meta:{docs:"Require parentheses when invoking a constructor with no arguments",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G;z6.lastIndex=0;while((G=z6.exec(z))!==null){if(E2(z,G.index))continue;if(z.slice(G.index+G[0].length).startsWith("("))continue;if(G[0].includes("new."))continue;Z.push({filePath:J.filePath,line:Y+1,column:G.index+1,ruleId:"style/new-parens",message:`Missing parentheses invoking constructor '${G[1]}'`,severity:"warning",help:"Add () after the constructor name."})}}return Z},fix($){return $.replace(/\bnew\s+([A-Z][a-zA-Z0-9_$.]+)(?![a-zA-Z0-9_$])(\s*<[^>]*>)?\s*(?=[^(]|$)/g,(J,Z,X)=>{if(J.slice(J.indexOf(Z)+Z.length+(X?.length||0)).trim().startsWith("("))return J;return`new ${Z}${X||""}()`})}};var WB=new RegExp("\\breturn\\s+\\(([^()]*)\\)\\s*[;\\n]","g"),G6=/^[a-zA-Z_$][a-zA-Z0-9_$.[\]'"`]*$/;var q6={meta:{docs:"Remove redundant parentheses in return statements",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G=new RegExp("^return\\s+\\(([^()]*)\\)\\s*;?\\s*$"),q=Q.match(G);if(q){let U=q[1].trim();if(G6.test(U)||/^['"`]/.test(U)||/^\d/.test(U)||U==="true"||U==="false"||U==="null"||U==="undefined")Z.push({filePath:J.filePath,line:Y+1,column:z.indexOf("(")+1,ruleId:"style/no-extra-parens",message:"Unnecessary parentheses around return value",severity:"warning",help:"Remove the outer parentheses."})}}return Z},fix($){let J=$.split(/\r?\n/),Z=[];for(let X of J){let Y=X.trim(),z=new RegExp("^return\\s+\\(([^()]*)\\)\\s*(;?)\\s*$"),Q=Y.match(z);if(Q){let G=Q[1].trim(),q=Q[2];if(G6.test(G)||/^['"`]/.test(G)||/^\d/.test(G)||G==="true"||G==="false"||G==="null"||G==="undefined"){let U=X.match(/^(\s*)/)?.[1]||"";Z.push(`${U}return ${G}${q}`);continue}}Z.push(X)}return Z.join(`
166
+ `)}};var U6=/(\S)\s+(\.)[a-zA-Z_$]/g,W6=/(\S)\s+(\?\.)[a-zA-Z_$]/g;function p8($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var K6={meta:{docs:"Disallow whitespace before . or ?. in property access",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G;U6.lastIndex=0;while((G=U6.exec(z))!==null){let q=G[1],U=G.index+G[0].indexOf(".");if(p8(z,G.index))continue;if(U+1<z.length&&z[U+1]===".")continue;if(U>0&&z[U-1]===".")continue;Z.push({filePath:J.filePath,line:Y+1,column:U+1,ruleId:"style/no-whitespace-before-property",message:"Unexpected whitespace before property access dot",severity:"warning"})}W6.lastIndex=0;while((G=W6.exec(z))!==null){let q=G.index+G[0].indexOf("?.");if(p8(z,G.index))continue;Z.push({filePath:J.filePath,line:Y+1,column:q+1,ruleId:"style/no-whitespace-before-property",message:"Unexpected whitespace before optional chaining operator",severity:"warning"})}}return Z},fix($,J){let Z=$.split(/\r?\n/),X=[];for(let Y=0;Y<Z.length;Y++){let z=Z[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*")){X.push(z);continue}let G=z;G=G.replace(/(\S)\s+(\?\.[a-zA-Z_$])/g,(q,U,W,K)=>{if(p8(z,K))return q;return U+W}),G=G.replace(/(\S)\s+(\.[a-zA-Z_$])/g,(q,U,W,K)=>{if(p8(z,K))return q;let H=K+q.indexOf(".");if(H+1<G.length&&G[H+1]===".")return q;return U+W}),X.push(G)}return X.join(`
167
+ `)}};function B1($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var H6=/&&/g,V6=/\|\|/g,A6=/\?\?/g,_6=/(?<![&])&(?![&=])/g,F6=/(?<![|])\|(?![|=])/g,w6=/\^(?!=)/g;function D2($){let J=[];H6.lastIndex=0;let Z;while((Z=H6.exec($))!==null)if(!B1($,Z.index))J.push({op:"&&",group:0,index:Z.index});V6.lastIndex=0;while((Z=V6.exec($))!==null)if(!B1($,Z.index))J.push({op:"||",group:1,index:Z.index});A6.lastIndex=0;while((Z=A6.exec($))!==null)if(!B1($,Z.index))J.push({op:"??",group:2,index:Z.index});_6.lastIndex=0;while((Z=_6.exec($))!==null)if(!B1($,Z.index))J.push({op:"&",group:3,index:Z.index});F6.lastIndex=0;while((Z=F6.exec($))!==null)if(!B1($,Z.index))J.push({op:"|",group:4,index:Z.index});w6.lastIndex=0;while((Z=w6.exec($))!==null)if(!B1($,Z.index))J.push({op:"^",group:5,index:Z.index});return J.sort((X,Y)=>X.index-Y.index)}function R2($,J){if(J.length<2)return!0;let Z=[];for(let z of J){let Q=0;for(let G=0;G<z.index;G++)if($[G]==="(")Q++;else if($[G]===")")Q--;Z.push(Q)}let X=new Map;for(let z=0;z<J.length;z++){let Q=J[z].group;if(!X.has(Q))X.set(Q,[]);X.get(Q).push(Z[z])}let Y=[...X.entries()];if(Y.length===2){let[,z]=Y[0],[,Q]=Y[1],G=Math.min(...z),q=Math.max(...z),U=Math.min(...Q),W=Math.max(...Q);if(G>W||U>q)return!0}return!1}var O2=[{groups:[0,1],label:"&& and ||"},{groups:[0,2],label:"&& and ??"},{groups:[1,2],label:"|| and ??"},{groups:[3,4],label:"& and |"},{groups:[3,5],label:"& and ^"},{groups:[4,5],label:"| and ^"}],B6={meta:{docs:"Disallow mixed logical/bitwise operators without parentheses",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G=D2(z);if(G.length<2)continue;let q=new Set(G.map((U)=>U.group));for(let U of O2)if(q.has(U.groups[0])&&q.has(U.groups[1])){let W=G.filter((K)=>K.group===U.groups[0]||K.group===U.groups[1]);if(!R2(z,W)){let K=W.find((H)=>H.group===U.groups[1]);if(K)Z.push({filePath:J.filePath,line:Y+1,column:K.index+1,ruleId:"style/no-mixed-operators",message:`Unexpected mix of ${U.label} without parentheses`,severity:"warning"})}}}return Z}};var M6=/(?<![0-9.])\.\d/g,j6=/\d\.(?!\d|\.|\w)/g;function N6($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var T6={meta:{docs:"Disallow floating decimals like .5 or 2.",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G;M6.lastIndex=0;while((G=M6.exec(z))!==null){if(N6(z,G.index))continue;if(G.index>0){let q=z[G.index-1];if(/[a-zA-Z_$)\]]/.test(q))continue}Z.push({filePath:J.filePath,line:Y+1,column:G.index+1,ruleId:"style/no-floating-decimal",message:"Unexpected leading decimal point",severity:"warning",help:"Add a leading 0 before the decimal point: 0.5 instead of .5"})}j6.lastIndex=0;while((G=j6.exec(z))!==null){if(N6(z,G.index))continue;Z.push({filePath:J.filePath,line:Y+1,column:G.index+1,ruleId:"style/no-floating-decimal",message:"Unexpected trailing decimal point",severity:"warning",help:"Add a trailing 0 after the decimal point: 2.0 instead of 2."})}}return Z},fix($){let J=$;return J=J.replace(/(?<![a-zA-Z_$0-9.)\]])\.\d/g,(Z)=>`0${Z}`),J=J.replace(/(\d)\.(?!\d|\.|\w)/g,(Z,X)=>`${X}.0`),J}};var E6={meta:{docs:"Disallow mixed spaces and tabs for indentation",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let Q=X[Y].match(/^(\s*)/)?.[1]||"";if(!Q)continue;let G=Q.includes("\t"),q=Q.includes(" ");if(G&&q)Z.push({filePath:J.filePath,line:Y+1,column:1,ruleId:"style/no-mixed-spaces-and-tabs",message:"Mixed spaces and tabs in indentation",severity:"warning",help:"Use either spaces or tabs for indentation, not both."})}return Z}};var D6={meta:{docs:"Disallow multiple consecutive spaces",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y];if(!z.trim())continue;let Q=z.match(/^(\s*)/)?.[1]||"",G=z.slice(Q.length),q=/ {2,}/g,U;for(U=q.exec(G);U!==null;U=q.exec(G)){let W=Q.length+U.index+1,K=G.slice(0,U.index),H=(K.match(/'/g)||[]).length,V=(K.match(/"/g)||[]).length,A=(K.match(/`/g)||[]).length;if(H%2===1||V%2===1||A%2===1)continue;if(K.includes("//"))continue;if(z.trim().startsWith("*")||z.trim().startsWith("/*"))continue;Z.push({filePath:J.filePath,line:Y+1,column:W,ruleId:"style/no-multi-spaces",message:"Multiple spaces found",severity:"warning",help:"Remove extra spaces. Use single spaces between tokens."})}}return Z}};var R6={meta:{docs:"Disallow multiple consecutive blank lines",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=0,z=-1;for(let Q=0;Q<X.length;Q++)if(X[Q].trim()===""){if(Y++,z===-1)z=Q;if(Y>1&&Q===z+Y-1)Z.push({filePath:J.filePath,line:Q+1,column:1,ruleId:"style/no-multiple-empty-lines",message:"More than 1 blank line not allowed",severity:"error",help:"Remove extra blank lines. Maximum 1 consecutive blank line allowed."})}else Y=0,z=-1;return Z}};var O6={meta:{docs:"Disallow tab characters (when using spaces for indentation)",recommended:!1},check($,J){let Z=[];if(J.config.format?.indentStyle==="tabs")return Z;let X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let Q=X[Y].indexOf("\t");if(Q!==-1)Z.push({filePath:J.filePath,line:Y+1,column:Q+1,ruleId:"style/no-tabs",message:"Unexpected tab character",severity:"warning",help:"Use spaces for indentation instead of tabs."})}return Z},fix($,J){let Z=J.config.format?.indent??2;return $.replace(/\t/g," ".repeat(Z))}};var L6={meta:{docs:"Disallow trailing whitespace at the end of lines",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.match(/(\s+)$/);if(Q){let G=z.length-Q[1].length+1;Z.push({filePath:J.filePath,line:Y+1,column:G,ruleId:"style/no-trailing-spaces",message:"Trailing spaces not allowed",severity:"error",help:"Remove trailing whitespace from the end of this line."})}}return Z}};function P6($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var C6={meta:{docs:"Require spaces inside curly braces in objects and destructuring",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;for(let G=0;G<z.length;G++){if(z[G]==="{"&&!P6(z,G)){let q=z[G+1];if(q==="}"||q===void 0||q===`
168
+ `)continue;if(G>0&&z[G-1]==="$")continue;if(q!==" "&&q!=="\t")Z.push({filePath:J.filePath,line:Y+1,column:G+2,ruleId:"style/object-curly-spacing",message:"Missing space after '{'",severity:"warning"})}if(z[G]==="}"&&!P6(z,G)){let q=G>0?z[G-1]:void 0;if(q==="{"||q===void 0||q===`
166
169
  `)continue;if(G+1<z.length&&z.slice(G+1).match(/^[^}]*\$\{/))continue;if(q!==" "&&q!=="\t")Z.push({filePath:J.filePath,line:Y+1,column:G+1,ruleId:"style/object-curly-spacing",message:"Missing space before '}'",severity:"warning"})}}}return Z},fix($){let J=$.split(/\r?\n/),Z=[];for(let X of J){let Y=X;Y=Y.replace(/(?<!\$)\{(\S)/g,(z,Q)=>{if(Q==="}")return z;return`{ ${Q}`}),Y=Y.replace(/(\S)\}/g,(z,Q)=>{if(Q==="{"||Q==="$")return z;return`${Q} }`}),Z.push(Y)}return Z.join(`
167
- `)}};var P6=/(\&\&|\|\||\?\?|\?|\+|(?<!=)-(?!=)|\*|\/|%|\*\*|\|(?!\|)|&(?!&)|\^|<<|>>>?)\s*$/;function C6($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var I6={meta:{docs:"Enforce operators at the beginning of continued lines",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G=Q.match(P6);if(G&&Y+1<X.length){let q=X[Y+1].trim();if(q&&!q.startsWith("//")&&!q.startsWith("*")){let U=z.lastIndexOf(G[1]);if(!C6(z,U)){if(G[1]==="?"||G[1]===":")continue;Z.push({filePath:J.filePath,line:Y+1,column:U+1,ruleId:"style/operator-linebreak",message:`Operator '${G[1]}' should be at the beginning of the next line`,severity:"warning"})}}}}return Z},fix($){let J=$.split(/\r?\n/),Z=[];for(let X=0;X<J.length;X++){let Y=J[X],z=Y.trim();if(!z||z.startsWith("//")||z.startsWith("*")||z.startsWith("/*")||z.endsWith("*/")){Z.push(Y);continue}let Q=z.match(P6);if(Q&&X+1<J.length&&Q[1]!=="?"&&Q[1]!==":"){let G=J[X+1],q=G.trim();if(q&&!q.startsWith("//")&&!q.startsWith("*")){let U=Q[1],W=Y.lastIndexOf(Q[1]);if(C6(Y,W)){Z.push(Y);continue}Z.push(Y.replace(new RegExp(`\\s*${U.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\\s*$`),""));let K=G.match(/^(\s*)/)?.[1]||"";J[X+1]=`${K}${U} ${q}`;continue}}Z.push(Y)}return Z.join(`
168
- `)}};var S6={meta:{docs:"Disallow empty lines at the beginning and end of blocks",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let Q=X[Y].trim();if(Q.endsWith("{")&&Y+1<X.length){if(X[Y+1].trim()==="")Z.push({filePath:J.filePath,line:Y+2,column:1,ruleId:"style/padded-blocks",message:"Unexpected empty line after opening brace",severity:"warning"})}if(Q==="}"&&Y>0){if(X[Y-1].trim()==="")Z.push({filePath:J.filePath,line:Y,column:1,ruleId:"style/padded-blocks",message:"Unexpected empty line before closing brace",severity:"warning"})}}return Z},fix($){let J=$.split(/\r?\n/),Z=new Set;for(let X=0;X<J.length;X++){let Y=J[X].trim();if(Y.endsWith("{")&&X+1<J.length&&J[X+1].trim()==="")Z.add(X+1);if(Y==="}"&&X>0&&J[X-1].trim()==="")Z.add(X-1)}return J.filter((X,Y)=>!Z.has(Y)).join(`
169
- `)}};var Y9=/^(\s*)(["'])([a-zA-Z_$][a-zA-Z0-9_$]*)\2\s*:/;var v6={meta:{docs:"Remove unnecessary quotes from object property keys",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G=z.match(Y9);if(G){let q=G[3];if(["class","return","function","var","let","const","delete","typeof","void","in","instanceof","new","this","throw","try","catch","finally","switch","case","default","break","continue","do","while","for","if","else","with","import","export","extends","super","yield","await","enum","implements","interface","package","private","protected","public","static"].includes(q))continue;Z.push({filePath:J.filePath,line:Y+1,column:z.indexOf(G[2])+1,ruleId:"style/quote-props",message:`Unnecessarily quoted property '${q}'`,severity:"warning",help:"Remove quotes from this property key."})}}return Z},fix($){let J=$.split(/\r?\n/),Z=[],X=new Set(["class","return","function","var","let","const","delete","typeof","void","in","instanceof","new","this","throw","try","catch","finally","switch","case","default","break","continue","do","while","for","if","else","with","import","export","extends","super","yield","await","enum","implements","interface","package","private","protected","public","static"]);for(let Y of J){let z=Y,Q=Y.match(Y9);if(Q&&!X.has(Q[3]))z=Y.replace(Y9,"$1$3:");Z.push(z)}return Z.join(`
170
- `)}};function R2($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var y6=/\.\.\.\s+([a-zA-Z_$])/g,b6={meta:{docs:"Disallow space after spread/rest operator (...)",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G;y6.lastIndex=0;while((G=y6.exec(z))!==null){if(R2(z,G.index))continue;Z.push({filePath:J.filePath,line:Y+1,column:G.index+4,ruleId:"style/rest-spread-spacing",message:"Unexpected space after spread operator",severity:"warning"})}}return Z},fix($){return $.replace(/\.\.\.\s+([a-zA-Z_$\[{])/g,"...$1")}};function O2($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var k6={meta:{docs:"Disallow space before semicolons, require space after",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;for(let G=0;G<z.length;G++){if(z[G]!==";")continue;if(O2(z,G))continue;if(G>0&&z[G-1]===" "){if(z.slice(0,G).trim().length>0)Z.push({filePath:J.filePath,line:Y+1,column:G+1,ruleId:"style/semi-spacing",message:"Unexpected space before semicolon",severity:"warning"})}if(G+1<z.length&&z[G+1]!==" "&&z[G+1]!=="\t"&&z[G+1]!==`
170
+ `)}};var I6=/(\&\&|\|\||\?\?|\?|\+|(?<!=)-(?!=)|\*|\/|%|\*\*|\|(?!\|)|&(?!&)|\^|<<|>>>?)\s*$/;function S6($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var v6={meta:{docs:"Enforce operators at the beginning of continued lines",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G=Q.match(I6);if(G&&Y+1<X.length){let q=X[Y+1].trim();if(q&&!q.startsWith("//")&&!q.startsWith("*")){let U=z.lastIndexOf(G[1]);if(!S6(z,U)){if(G[1]==="?"||G[1]===":")continue;Z.push({filePath:J.filePath,line:Y+1,column:U+1,ruleId:"style/operator-linebreak",message:`Operator '${G[1]}' should be at the beginning of the next line`,severity:"warning"})}}}}return Z},fix($){let J=$.split(/\r?\n/),Z=[];for(let X=0;X<J.length;X++){let Y=J[X],z=Y.trim();if(!z||z.startsWith("//")||z.startsWith("*")||z.startsWith("/*")||z.endsWith("*/")){Z.push(Y);continue}let Q=z.match(I6);if(Q&&X+1<J.length&&Q[1]!=="?"&&Q[1]!==":"){let G=J[X+1],q=G.trim();if(q&&!q.startsWith("//")&&!q.startsWith("*")){let U=Q[1],W=Y.lastIndexOf(Q[1]);if(S6(Y,W)){Z.push(Y);continue}Z.push(Y.replace(new RegExp(`\\s*${U.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\\s*$`),""));let K=G.match(/^(\s*)/)?.[1]||"";J[X+1]=`${K}${U} ${q}`;continue}}Z.push(Y)}return Z.join(`
171
+ `)}};var y6={meta:{docs:"Disallow empty lines at the beginning and end of blocks",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let Q=X[Y].trim();if(Q.endsWith("{")&&Y+1<X.length){if(X[Y+1].trim()==="")Z.push({filePath:J.filePath,line:Y+2,column:1,ruleId:"style/padded-blocks",message:"Unexpected empty line after opening brace",severity:"warning"})}if(Q==="}"&&Y>0){if(X[Y-1].trim()==="")Z.push({filePath:J.filePath,line:Y,column:1,ruleId:"style/padded-blocks",message:"Unexpected empty line before closing brace",severity:"warning"})}}return Z},fix($){let J=$.split(/\r?\n/),Z=new Set;for(let X=0;X<J.length;X++){let Y=J[X].trim();if(Y.endsWith("{")&&X+1<J.length&&J[X+1].trim()==="")Z.add(X+1);if(Y==="}"&&X>0&&J[X-1].trim()==="")Z.add(X-1)}return J.filter((X,Y)=>!Z.has(Y)).join(`
172
+ `)}};var z9=/^(\s*)(["'])([a-zA-Z_$][a-zA-Z0-9_$]*)\2\s*:/;var b6={meta:{docs:"Remove unnecessary quotes from object property keys",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G=z.match(z9);if(G){let q=G[3];if(["class","return","function","var","let","const","delete","typeof","void","in","instanceof","new","this","throw","try","catch","finally","switch","case","default","break","continue","do","while","for","if","else","with","import","export","extends","super","yield","await","enum","implements","interface","package","private","protected","public","static"].includes(q))continue;Z.push({filePath:J.filePath,line:Y+1,column:z.indexOf(G[2])+1,ruleId:"style/quote-props",message:`Unnecessarily quoted property '${q}'`,severity:"warning",help:"Remove quotes from this property key."})}}return Z},fix($){let J=$.split(/\r?\n/),Z=[],X=new Set(["class","return","function","var","let","const","delete","typeof","void","in","instanceof","new","this","throw","try","catch","finally","switch","case","default","break","continue","do","while","for","if","else","with","import","export","extends","super","yield","await","enum","implements","interface","package","private","protected","public","static"]);for(let Y of J){let z=Y,Q=Y.match(z9);if(Q&&!X.has(Q[3]))z=Y.replace(z9,"$1$3:");Z.push(z)}return Z.join(`
173
+ `)}};function L2($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var k6=/\.\.\.\s+([a-zA-Z_$])/g,f6={meta:{docs:"Disallow space after spread/rest operator (...)",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G;k6.lastIndex=0;while((G=k6.exec(z))!==null){if(L2(z,G.index))continue;Z.push({filePath:J.filePath,line:Y+1,column:G.index+4,ruleId:"style/rest-spread-spacing",message:"Unexpected space after spread operator",severity:"warning"})}}return Z},fix($){return $.replace(/\.\.\.\s+([a-zA-Z_$\[{])/g,"...$1")}};function P2($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var g6={meta:{docs:"Disallow space before semicolons, require space after",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;for(let G=0;G<z.length;G++){if(z[G]!==";")continue;if(P2(z,G))continue;if(G>0&&z[G-1]===" "){if(z.slice(0,G).trim().length>0)Z.push({filePath:J.filePath,line:Y+1,column:G+1,ruleId:"style/semi-spacing",message:"Unexpected space before semicolon",severity:"warning"})}if(G+1<z.length&&z[G+1]!==" "&&z[G+1]!=="\t"&&z[G+1]!==`
171
174
  `&&z[G+1]!=="\r"&&z[G+1]!==")"){let q=z.slice(G+1);if(z.slice(0,G).includes(";")||q.includes(";"))Z.push({filePath:J.filePath,line:Y+1,column:G+2,ruleId:"style/semi-spacing",message:"Missing space after semicolon",severity:"warning"})}}}return Z},fix($){let J=$.split(/\r?\n/),Z=[];for(let X of J){let Y=X,z=new RegExp(" ;","g");Y=Y.replace(z,String.fromCharCode(59));let Q=new RegExp(";(\\S)","g");Y=Y.replace(Q,(G,q)=>{if(q===";"||q===")")return G;return`; ${q}`}),Z.push(Y)}return Z.join(`
172
- `)}};var f6=/(\S)\{/g;function L2($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var g6={meta:{docs:"Require space before opening brace of blocks",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G;f6.lastIndex=0;while((G=f6.exec(z))!==null){let q=G.index,U=G[1];if(L2(z,q))continue;if(U==="$")continue;if(U==="="||U===":"||U==="("||U===","||U==="[")continue;if(U==="{")continue;if(U===")"||/[a-zA-Z0-9_]/.test(U))Z.push({filePath:J.filePath,line:Y+1,column:G.index+2,ruleId:"style/space-before-blocks",message:"Missing space before '{'",severity:"warning"})}}return Z},fix($){let J=$.split(/\r?\n/),Z=[];for(let X of J){let Y=X.replace(/([)a-zA-Z0-9_])\{/g,"$1 {");Z.push(Y)}return Z.join(`
173
- `)}};var x6=/\bfunction\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s+\(/g,p6=/\bfunction\(/g;function h6($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var u6={meta:{docs:"Control spacing before ( in function declarations",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G;x6.lastIndex=0;while((G=x6.exec(z))!==null){if(h6(z,G.index))continue;Z.push({filePath:J.filePath,line:Y+1,column:G.index+G[0].length,ruleId:"style/space-before-function-paren",message:"Unexpected space before function parentheses",severity:"warning"})}p6.lastIndex=0;while((G=p6.exec(z))!==null){if(h6(z,G.index))continue;if(z.slice(0,G.index+8).match(/function\s+[a-zA-Z_$]/))continue;Z.push({filePath:J.filePath,line:Y+1,column:G.index+9,ruleId:"style/space-before-function-paren",message:"Missing space before function parentheses",severity:"warning"})}}return Z},fix($){let J=$;return J=J.replace(/\bfunction\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s+\(/g,"function $1("),J=J.replace(/\bfunction\(/g,"function ("),J}};function m6($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var d6={meta:{docs:"Disallow spaces inside parentheses",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;for(let G=0;G<z.length;G++){if(z[G]==="("&&!m6(z,G)){let q=z[G+1];if(q===")"||q===void 0||q===`
174
- `)continue;if(q===" ")Z.push({filePath:J.filePath,line:Y+1,column:G+2,ruleId:"style/space-in-parens",message:"Unexpected space after '('",severity:"warning"})}if(z[G]===")"&&!m6(z,G)){if(G===0)continue;let q=z[G-1];if(q==="(")continue;if(q===" "){if(z.slice(0,G).includes("("))Z.push({filePath:J.filePath,line:Y+1,column:G,ruleId:"style/space-in-parens",message:"Unexpected space before ')'",severity:"warning"})}}}}return Z},fix($){let J=$.split(/\r?\n/),Z=[];for(let X of J){let Y=X;Y=Y.replace(/\(\s+(\S)/g,"($1"),Y=Y.replace(/(\S)\s+\)/g,"$1)"),Z.push(Y)}return Z.join(`
175
- `)}};var o6=["&&","||","??","+=","-=","*=","/=","%=","**=","<<=",">>=",">>>=","&=","|=","^=","??=","||=","&&="];function P2($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var c6={meta:{docs:"Require spacing around infix operators (&&, ||, ??, assignment operators)",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;for(let G of o6){let q=0,U;while((U=z.indexOf(G,q))!==-1){if(q=U+G.length,P2(z,U))continue;if(G==="&&"&&z[U+2]==="=")continue;if(G==="||"&&z[U+2]==="=")continue;if(G==="??"&&z[U+2]==="=")continue;let W=U>0?z[U-1]:" ",K=U+G.length<z.length?z[U+G.length]:" ";if(W!==" "&&W!=="\t")Z.push({filePath:J.filePath,line:Y+1,column:U+1,ruleId:"style/space-infix-ops",message:`Missing space before '${G}'`,severity:"warning"});if(K!==" "&&K!=="\t"&&K!==`
176
- `&&K!=="\r")Z.push({filePath:J.filePath,line:Y+1,column:U+G.length+1,ruleId:"style/space-infix-ops",message:`Missing space after '${G}'`,severity:"warning"})}}}return Z},fix($){let J=$,Z=[...o6].sort((X,Y)=>Y.length-X.length);for(let X of Z){let Y=X.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");J=J.replace(new RegExp(`(\\S)${Y}`,"g"),`$1 ${X}`),J=J.replace(new RegExp(`${Y}(\\S)`,"g"),`${X} $1`)}return J}};var r6=["typeof","void","delete","new","throw","yield","await"];function z9($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var l6={meta:{docs:"Require space after word unary operators, disallow space after symbol unary operators",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;for(let W of r6){let K=new RegExp(`\\b${W}([^\\s;,)])`,"g"),H;while((H=K.exec(z))!==null){if(z9(z,H.index))continue;Z.push({filePath:J.filePath,line:Y+1,column:H.index+W.length+1,ruleId:"style/space-unary-ops",message:`Missing space after '${W}'`,severity:"warning"})}}let G=/!\s+([a-zA-Z_$({[])/g,q;while((q=G.exec(z))!==null){if(z9(z,q.index))continue;let W=z.slice(0,q.index),K=W.trimEnd().slice(-1),H=new RegExp("[=(<[{,;|&?:+\\-*/!~^%]");if(!K||H.test(K)||W.trimEnd().endsWith("return")||W.trimEnd().endsWith("case"))Z.push({filePath:J.filePath,line:Y+1,column:q.index+2,ruleId:"style/space-unary-ops",message:"Unexpected space after '!'",severity:"warning"})}let U=/~\s+([a-zA-Z_$({[])/g;while((q=U.exec(z))!==null){if(z9(z,q.index))continue;Z.push({filePath:J.filePath,line:Y+1,column:q.index+2,ruleId:"style/space-unary-ops",message:"Unexpected space after '~'",severity:"warning"})}}return Z},fix($){let J=$;for(let Z of r6)J=J.replace(new RegExp(`\\b${Z}([^\\s;,)])`,"g"),`${Z} $1`);return J=J.replace(/!\s+([a-zA-Z_$({[])/g,"!$1"),J=J.replace(/~\s+([a-zA-Z_$({[])/g,"~$1"),J}};var a6={meta:{docs:"Require space after // and /* in comments",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim(),G=z.indexOf("//");if(G!==-1){let U=z.slice(0,G),W=(U.match(/'/g)||[]).length,K=(U.match(/"/g)||[]).length,H=(U.match(/`/g)||[]).length;if(W%2===0&&K%2===0&&H%2===0){if(!U.match(/https?:$/)){let V=z.slice(G+2);if(V.length>0&&V[0]!==" "&&V[0]!=="\t"&&V[0]!=="/"&&V[0]!=="!")Z.push({filePath:J.filePath,line:Y+1,column:G+3,ruleId:"style/spaced-comment",message:"Missing space after '//'",severity:"warning",help:"Add a space after // in comments."})}}}let q=z.indexOf("/*");if(q!==-1&&z[q+2]!=="*"&&z[q+2]!=="!"){let U=z.slice(0,q),W=(U.match(/'/g)||[]).length,K=(U.match(/"/g)||[]).length,H=(U.match(/`/g)||[]).length;if(W%2===0&&K%2===0&&H%2===0){let V=z.slice(q+2);if(V.length>0&&V[0]!==" "&&V[0]!=="\t"&&V[0]!==`
175
+ `)}};var p6=/(\S)\{/g;function C2($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var x6={meta:{docs:"Require space before opening brace of blocks",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G;p6.lastIndex=0;while((G=p6.exec(z))!==null){let q=G.index,U=G[1];if(C2(z,q))continue;if(U==="$")continue;if(U==="="||U===":"||U==="("||U===","||U==="[")continue;if(U==="{")continue;if(U===")"||/[a-zA-Z0-9_]/.test(U))Z.push({filePath:J.filePath,line:Y+1,column:G.index+2,ruleId:"style/space-before-blocks",message:"Missing space before '{'",severity:"warning"})}}return Z},fix($){let J=$.split(/\r?\n/),Z=[];for(let X of J){let Y=X.replace(/([)a-zA-Z0-9_])\{/g,"$1 {");Z.push(Y)}return Z.join(`
176
+ `)}};var h6=/\bfunction\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s+\(/g,u6=/\bfunction\(/g;function m6($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var d6={meta:{docs:"Control spacing before ( in function declarations",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G;h6.lastIndex=0;while((G=h6.exec(z))!==null){if(m6(z,G.index))continue;Z.push({filePath:J.filePath,line:Y+1,column:G.index+G[0].length,ruleId:"style/space-before-function-paren",message:"Unexpected space before function parentheses",severity:"warning"})}u6.lastIndex=0;while((G=u6.exec(z))!==null){if(m6(z,G.index))continue;if(z.slice(0,G.index+8).match(/function\s+[a-zA-Z_$]/))continue;Z.push({filePath:J.filePath,line:Y+1,column:G.index+9,ruleId:"style/space-before-function-paren",message:"Missing space before function parentheses",severity:"warning"})}}return Z},fix($){let J=$;return J=J.replace(/\bfunction\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s+\(/g,"function $1("),J=J.replace(/\bfunction\(/g,"function ("),J}};function o6($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var c6={meta:{docs:"Disallow spaces inside parentheses",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;for(let G=0;G<z.length;G++){if(z[G]==="("&&!o6(z,G)){let q=z[G+1];if(q===")"||q===void 0||q===`
177
+ `)continue;if(q===" ")Z.push({filePath:J.filePath,line:Y+1,column:G+2,ruleId:"style/space-in-parens",message:"Unexpected space after '('",severity:"warning"})}if(z[G]===")"&&!o6(z,G)){if(G===0)continue;let q=z[G-1];if(q==="(")continue;if(q===" "){if(z.slice(0,G).includes("("))Z.push({filePath:J.filePath,line:Y+1,column:G,ruleId:"style/space-in-parens",message:"Unexpected space before ')'",severity:"warning"})}}}}return Z},fix($){let J=$.split(/\r?\n/),Z=[];for(let X of J){let Y=X;Y=Y.replace(/\(\s+(\S)/g,"($1"),Y=Y.replace(/(\S)\s+\)/g,"$1)"),Z.push(Y)}return Z.join(`
178
+ `)}};var r6=["&&","||","??","+=","-=","*=","/=","%=","**=","<<=",">>=",">>>=","&=","|=","^=","??=","||=","&&="];function I2($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var l6={meta:{docs:"Require spacing around infix operators (&&, ||, ??, assignment operators)",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;for(let G of r6){let q=0,U;while((U=z.indexOf(G,q))!==-1){if(q=U+G.length,I2(z,U))continue;if(G==="&&"&&z[U+2]==="=")continue;if(G==="||"&&z[U+2]==="=")continue;if(G==="??"&&z[U+2]==="=")continue;let W=U>0?z[U-1]:" ",K=U+G.length<z.length?z[U+G.length]:" ";if(W!==" "&&W!=="\t")Z.push({filePath:J.filePath,line:Y+1,column:U+1,ruleId:"style/space-infix-ops",message:`Missing space before '${G}'`,severity:"warning"});if(K!==" "&&K!=="\t"&&K!==`
179
+ `&&K!=="\r")Z.push({filePath:J.filePath,line:Y+1,column:U+G.length+1,ruleId:"style/space-infix-ops",message:`Missing space after '${G}'`,severity:"warning"})}}}return Z},fix($){let J=$,Z=[...r6].sort((X,Y)=>Y.length-X.length);for(let X of Z){let Y=X.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");J=J.replace(new RegExp(`(\\S)${Y}`,"g"),`$1 ${X}`),J=J.replace(new RegExp(`${Y}(\\S)`,"g"),`${X} $1`)}return J}};var a6=["typeof","void","delete","new","throw","yield","await"];function Q9($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var s6={meta:{docs:"Require space after word unary operators, disallow space after symbol unary operators",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;for(let W of a6){let K=new RegExp(`\\b${W}([^\\s;,)])`,"g"),H;while((H=K.exec(z))!==null){if(Q9(z,H.index))continue;Z.push({filePath:J.filePath,line:Y+1,column:H.index+W.length+1,ruleId:"style/space-unary-ops",message:`Missing space after '${W}'`,severity:"warning"})}}let G=/!\s+([a-zA-Z_$({[])/g,q;while((q=G.exec(z))!==null){if(Q9(z,q.index))continue;let W=z.slice(0,q.index),K=W.trimEnd().slice(-1),H=new RegExp("[=(<[{,;|&?:+\\-*/!~^%]");if(!K||H.test(K)||W.trimEnd().endsWith("return")||W.trimEnd().endsWith("case"))Z.push({filePath:J.filePath,line:Y+1,column:q.index+2,ruleId:"style/space-unary-ops",message:"Unexpected space after '!'",severity:"warning"})}let U=/~\s+([a-zA-Z_$({[])/g;while((q=U.exec(z))!==null){if(Q9(z,q.index))continue;Z.push({filePath:J.filePath,line:Y+1,column:q.index+2,ruleId:"style/space-unary-ops",message:"Unexpected space after '~'",severity:"warning"})}}return Z},fix($){let J=$;for(let Z of a6)J=J.replace(new RegExp(`\\b${Z}([^\\s;,)])`,"g"),`${Z} $1`);return J=J.replace(/!\s+([a-zA-Z_$({[])/g,"!$1"),J=J.replace(/~\s+([a-zA-Z_$({[])/g,"~$1"),J}};var n6={meta:{docs:"Require space after // and /* in comments",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim(),G=z.indexOf("//");if(G!==-1){let U=z.slice(0,G),W=(U.match(/'/g)||[]).length,K=(U.match(/"/g)||[]).length,H=(U.match(/`/g)||[]).length;if(W%2===0&&K%2===0&&H%2===0){if(!U.match(/https?:$/)){let V=z.slice(G+2);if(V.length>0&&V[0]!==" "&&V[0]!=="\t"&&V[0]!=="/"&&V[0]!=="!")Z.push({filePath:J.filePath,line:Y+1,column:G+3,ruleId:"style/spaced-comment",message:"Missing space after '//'",severity:"warning",help:"Add a space after // in comments."})}}}let q=z.indexOf("/*");if(q!==-1&&z[q+2]!=="*"&&z[q+2]!=="!"){let U=z.slice(0,q),W=(U.match(/'/g)||[]).length,K=(U.match(/"/g)||[]).length,H=(U.match(/`/g)||[]).length;if(W%2===0&&K%2===0&&H%2===0){let V=z.slice(q+2);if(V.length>0&&V[0]!==" "&&V[0]!=="\t"&&V[0]!==`
177
180
  `)Z.push({filePath:J.filePath,line:Y+1,column:q+3,ruleId:"style/spaced-comment",message:"Missing space after '/*'",severity:"warning",help:"Add a space after /* in comments."})}}}return Z},fix($){let J=$.split(/\r?\n/),Z=[];for(let X of J){let Y=X;Y=Y.replace(/(\/\/)([^\s/!])/,"$1 $2"),Y=Y.replace(/(\/\*)([^\s*!])/,"$1 $2"),Z.push(Y)}return Z.join(`
178
- `)}};var s6=/^\s*(case\b.+?|default)\s*:/,n6={meta:{docs:"Enforce spacing around colon in switch case/default clauses",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q)continue;let G=Q.match(s6);if(!G)continue;let q=G[1],U=z.indexOf(":",z.indexOf(q)+q.length);if(U===-1)continue;if(U>0&&z[U-1]===" ")Z.push({filePath:J.filePath,line:Y+1,column:U+1,ruleId:"style/switch-colon-spacing",message:"Unexpected space before colon in switch case",severity:"warning"});if(U+1<z.length&&z[U+1]!==" "&&z[U+1]!=="\t"&&z[U+1]!==`
179
- `)Z.push({filePath:J.filePath,line:Y+1,column:U+2,ruleId:"style/switch-colon-spacing",message:"Missing space after colon in switch case",severity:"warning"})}return Z},fix($){let J=$.split(/\r?\n/),Z=[];for(let X of J){let Y=X,z=X.trim();if(s6.test(z))Y=Y.replace(/(case\b.+?|default)\s+:/,"$1:"),Y=Y.replace(/(case\b.+?:|default:)(\S)/,"$1 $2");Z.push(Y)}return Z.join(`
180
- `)}};var i6="${",t6={meta:{docs:"Disallow spaces inside template literal interpolation curly braces",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y];for(let Q=z.indexOf(i6,0);Q!==-1;Q=z.indexOf(i6,Q)){let G=Q+2;if(G<z.length&&(z[G]===" "||z[G]==="\t")){if((z.slice(0,Q).match(/`/g)||[]).length%2===1)Z.push({filePath:J.filePath,line:Y+1,column:G+1,ruleId:"style/template-curly-spacing",message:"Unexpected space after '${'",severity:"warning"})}let q=1,U=G;while(U<z.length&&q>0){if(z[U]==="{")q++;if(z[U]==="}")q--;if(q>0)U++}if(q===0&&U>0){let W=z[U-1];if(W===" "||W==="\t"){if((z.slice(0,Q).match(/`/g)||[]).length%2===1)Z.push({filePath:J.filePath,line:Y+1,column:U,ruleId:"style/template-curly-spacing",message:"Unexpected space before '}'",severity:"warning"})}}Q=G}}return Z},fix($){return $.replace(/\$\{\s+([^}]*?)\s+\}/g,"${$1}")}};var B1=/([a-zA-Z_$][a-zA-Z0-9_$]*)\s+`/g;function e6($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var $Y=new Set(["return","case","typeof","void","delete","throw","new","in","of","await","yield","export","default","extends","else","instanceof"]),ZY={meta:{docs:"Disallow space between tag function and template literal",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G;B1.lastIndex=0;for(G=B1.exec(z);G!==null;G=B1.exec(z)){let q=G[1],U=G.index;if(e6(z,U))continue;if($Y.has(q))continue;let W=U+q.length;Z.push({filePath:J.filePath,line:Y+1,column:W+1,ruleId:"style/template-tag-spacing",message:"Unexpected space between tag function and template literal",severity:"warning"})}}return Z},fix($,J){let Z=$.split(/\r?\n/),X=[];for(let Y=0;Y<Z.length;Y++){let z=Z[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*")){X.push(z);continue}let G=z,q=[],U;B1.lastIndex=0;for(U=B1.exec(z);U!==null;U=B1.exec(z)){let W=U[1],K=U.index;if(e6(z,K))continue;if($Y.has(W))continue;q.push({index:K,fullMatch:U[0],identifier:W})}for(let W=q.length-1;W>=0;W--){let K=q[W],H=K.index,V=H+K.fullMatch.length;G=G.slice(0,H)+K.identifier+"`"+G.slice(V)}X.push(G)}return X.join(`
181
- `)}};var JY={meta:{docs:"Require parentheses around immediately invoked function expressions (IIFEs)",recommended:!0},check($,J){let Z=[],X=/[^a-zA-Z_$](function\s*\([^)]*\)\s*\{[^}]*\})\s*\(/g,Y;for(Y=X.exec($);Y!==null;Y=X.exec($)){if(Y.index>0&&$[Y.index]==="(")continue;let z=$.slice(0,Y.index).split(`
181
+ `)}};var i6=/^\s*(case\b.+?|default)\s*:/,t6={meta:{docs:"Enforce spacing around colon in switch case/default clauses",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q)continue;let G=Q.match(i6);if(!G)continue;let q=G[1],U=z.indexOf(":",z.indexOf(q)+q.length);if(U===-1)continue;if(U>0&&z[U-1]===" ")Z.push({filePath:J.filePath,line:Y+1,column:U+1,ruleId:"style/switch-colon-spacing",message:"Unexpected space before colon in switch case",severity:"warning"});if(U+1<z.length&&z[U+1]!==" "&&z[U+1]!=="\t"&&z[U+1]!==`
182
+ `)Z.push({filePath:J.filePath,line:Y+1,column:U+2,ruleId:"style/switch-colon-spacing",message:"Missing space after colon in switch case",severity:"warning"})}return Z},fix($){let J=$.split(/\r?\n/),Z=[];for(let X of J){let Y=X,z=X.trim();if(i6.test(z))Y=Y.replace(/(case\b.+?|default)\s+:/,"$1:"),Y=Y.replace(/(case\b.+?:|default:)(\S)/,"$1 $2");Z.push(Y)}return Z.join(`
183
+ `)}};var e6="${",$Y={meta:{docs:"Disallow spaces inside template literal interpolation curly braces",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y];for(let Q=z.indexOf(e6,0);Q!==-1;Q=z.indexOf(e6,Q)){let G=Q+2;if(G<z.length&&(z[G]===" "||z[G]==="\t")){if((z.slice(0,Q).match(/`/g)||[]).length%2===1)Z.push({filePath:J.filePath,line:Y+1,column:G+1,ruleId:"style/template-curly-spacing",message:"Unexpected space after '${'",severity:"warning"})}let q=1,U=G;while(U<z.length&&q>0){if(z[U]==="{")q++;if(z[U]==="}")q--;if(q>0)U++}if(q===0&&U>0){let W=z[U-1];if(W===" "||W==="\t"){if((z.slice(0,Q).match(/`/g)||[]).length%2===1)Z.push({filePath:J.filePath,line:Y+1,column:U,ruleId:"style/template-curly-spacing",message:"Unexpected space before '}'",severity:"warning"})}}Q=G}}return Z},fix($){return $.replace(/\$\{\s+([^}]*?)\s+\}/g,"${$1}")}};var M1=/([a-zA-Z_$][a-zA-Z0-9_$]*)\s+`/g;function ZY($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var JY=new Set(["return","case","typeof","void","delete","throw","new","in","of","await","yield","export","default","extends","else","instanceof"]),XY={meta:{docs:"Disallow space between tag function and template literal",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G;M1.lastIndex=0;for(G=M1.exec(z);G!==null;G=M1.exec(z)){let q=G[1],U=G.index;if(ZY(z,U))continue;if(JY.has(q))continue;let W=U+q.length;Z.push({filePath:J.filePath,line:Y+1,column:W+1,ruleId:"style/template-tag-spacing",message:"Unexpected space between tag function and template literal",severity:"warning"})}}return Z},fix($,J){let Z=$.split(/\r?\n/),X=[];for(let Y=0;Y<Z.length;Y++){let z=Z[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*")){X.push(z);continue}let G=z,q=[],U;M1.lastIndex=0;for(U=M1.exec(z);U!==null;U=M1.exec(z)){let W=U[1],K=U.index;if(ZY(z,K))continue;if(JY.has(W))continue;q.push({index:K,fullMatch:U[0],identifier:W})}for(let W=q.length-1;W>=0;W--){let K=q[W],H=K.index,V=H+K.fullMatch.length;G=G.slice(0,H)+K.identifier+"`"+G.slice(V)}X.push(G)}return X.join(`
184
+ `)}};var YY={meta:{docs:"Require parentheses around immediately invoked function expressions (IIFEs)",recommended:!0},check($,J){let Z=[],X=/[^a-zA-Z_$](function\s*\([^)]*\)\s*\{[^}]*\})\s*\(/g,Y;for(Y=X.exec($);Y!==null;Y=X.exec($)){if(Y.index>0&&$[Y.index]==="(")continue;let z=$.slice(0,Y.index).split(`
182
185
  `).length,Q=$.lastIndexOf(`
183
- `,Y.index),G=Y.index-Q;Z.push({filePath:J.filePath,line:z,column:G,ruleId:"style/wrap-iife",message:"Wrap immediately invoked function expressions in parentheses",severity:"warning"})}return Z},fix($){return $.replace(/([^a-zA-Z_$(\n])(function\s*\([^)]*\)\s*\{[^}]*\})\s*\(/g,"$1($2)(")}};var XY=/\byield\s*\*/g;function C2($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var YY={meta:{docs:"Enforce spacing around * in yield* expressions (no space before *, space after)",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G;XY.lastIndex=0;while((G=XY.exec(z))!==null){let q=G.index;if(C2(z,q))continue;let U=G[0],W=q+U.length-1,K=W+1;if(U!=="yield*")Z.push({filePath:J.filePath,line:Y+1,column:W+1,ruleId:"style/yield-star-spacing",message:"Unexpected space before * in yield expression",severity:"warning"});if(K<z.length&&z[K]!==" "&&z[K]!=="\t"&&z[K]!==`
184
- `)Z.push({filePath:J.filePath,line:Y+1,column:K+1,ruleId:"style/yield-star-spacing",message:"Missing space after * in yield expression",severity:"warning"})}}return Z},fix($,J){let Z=$;return Z=Z.replace(/\byield\s+\*/g,"yield*"),Z=Z.replace(/\byield\*(\S)/g,"yield* $1"),Z}};var zY={name:"style",rules:{"brace-style":B(T5),curly:B(b5),"max-statements-per-line":B(e5),"if-newline":B(c5),"consistent-chaining":B(C5),"consistent-list-newline":B(y5),"indent-unindent":B(r5),"no-multi-spaces":T6,"no-multiple-empty-lines":E6,"no-trailing-spaces":R6,"keyword-spacing":B(n5),"arrow-spacing":B(j5),"space-infix-ops":B(c6),"object-curly-spacing":B(L6),"spaced-comment":B(a6),"block-spacing":B(N5),"space-before-blocks":B(g6),"comma-spacing":B(O5),"semi-spacing":B(k6),"rest-spread-spacing":B(b6),"generator-star-spacing":B(o5),"yield-star-spacing":B(YY),"function-call-spacing":B(u5),"template-tag-spacing":B(ZY),"no-whitespace-before-property":B(U6),"key-spacing":B(a5),"computed-property-spacing":B(P5),"array-bracket-spacing":B(F5),"space-in-parens":B(d6),"template-curly-spacing":B(t6),"space-unary-ops":B(l6),"switch-colon-spacing":B(n6),"comma-dangle":B(R5),"arrow-parens":B(B5),"space-before-function-paren":B(u6),"quote-props":B(v6),"no-floating-decimal":B(j6),"new-parens":B(Y6),"no-extra-parens":B(Q6),"wrap-iife":B(JY),"comma-style":B(L5),"dot-location":B(k5),"operator-linebreak":B(I6),"multiline-ternary":B(J6),"padded-blocks":B(S6),"lines-between-class-members":B(t5),"no-mixed-operators":B(F6),"indent-binary-ops":B(x5),"no-tabs":B(D6),"no-mixed-spaces-and-tabs":B(N6)}};var QY={meta:{docs:"Enforce consistent member delimiter style in interfaces and type literals",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z=0,Q=0;for(let G=0;G<X.length;G++){let q=X[G],U=q.trim();if(!U||U.startsWith("//")||U.startsWith("*")||U.startsWith("/*"))continue;if(U.match(/\b(interface|type)\b.*\{/))Y=!0,Q=z+1;for(let W of U){if(W==="{")z++;if(W==="}")z--}if(Y&&z<Q){Y=!1;continue}if(!Y||z!==Q)continue;if(U==="}"||U==="};"||U==="},")continue;if(U.endsWith(",")){if(U.startsWith("|")||U.startsWith("&"))continue;Z.push({filePath:J.filePath,line:G+1,column:q.length,ruleId:"ts/member-delimiter-style",message:"Expected semicolon delimiter in interface, found comma",severity:"warning"})}if(!U.endsWith(";")&&!U.endsWith(",")&&!U.endsWith("{")&&!U.endsWith("(")){if(U.match(/^\w+[\s?]*:/)||U.match(/^\[/)||U.match(/^readonly\b/))Z.push({filePath:J.filePath,line:G+1,column:q.length+1,ruleId:"ts/member-delimiter-style",message:"Missing semicolon delimiter in interface member",severity:"warning"})}}return Z},fix($){let J=$.split(/\r?\n/),Z=[],X=!1,Y=0,z=0;for(let Q=0;Q<J.length;Q++){let G=J[Q],q=G.trim();if(q.match(/\b(interface|type)\b.*\{/))X=!0,z=Y+1;let U=Y;for(let W of q){if(W==="{")Y++;if(W==="}")Y--}if(X&&Y<z){X=!1,Z.push(G);continue}if(X&&U===z&&q!=="}"&&q!=="};"&&q!=="},"){let W=G;if(q.endsWith(","))W=G.replace(/,\s*$/,";");Z.push(W);continue}Z.push(G)}return Z.join(`
185
- `)}};var GY={meta:{docs:"Disallow the use of the `any` type - it defeats the purpose of TypeScript type safety"},check:($,J)=>{let Z=[];if(!/\.tsx?$/.test(J.filePath))return Z;let X=$.split(/\r?\n/),Y=!1;for(let z=0;z<X.length;z++){let Q=X[z],G=Q;if(Y){let V=Q.indexOf("*/");if(V>=0)Q=Q.slice(V+2),Y=!1;else continue}let q=Q.indexOf("/*"),U=Q.indexOf("//");if(q>=0&&(U===-1||q<U)){let V=Q.indexOf("*/",q+2);if(V>=0)Q=Q.slice(0,q)+Q.slice(V+2);else Y=!0,Q=Q.slice(0,q)}if(U>=0)Q=Q.slice(0,U);let W=Q.replace(/(['"`])(?:(?!\1)[^\\]|\\.)*?\1/g,'""'),K=/\b(any)\b/g,H;while((H=K.exec(W))!==null){let V=H.index,A=W[V-1]||" ",_=W[V+3]||" ",F=W.slice(Math.max(0,V-10),V),w=W.slice(V+3,Math.min(W.length,V+10));if(/\w/.test(A)||/\w/.test(_))continue;if(/:/.test(F)||/</.test(F)||/\bas\s*$/.test(F)||/,/.test(F)||/\|/.test(F)||/&/.test(F)||/\[/.test(w)||/>/.test(w)||/,/.test(w)||/\|/.test(w)||/extends\s+$/.test(F)||/=\s*$/.test(F)){let D=G.indexOf("any",Math.max(0,V-5));Z.push({filePath:J.filePath,line:z+1,column:D>=0?D+1:V+1,ruleId:"ts/no-explicit-any",message:"Unexpected `any` type. Specify a more precise type or use `unknown` if the type is truly unknown.",severity:"error",help:"Replace `any` with a specific type, `unknown`, or a generic type parameter"})}}}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=[];for(let X of J){let Y=X;Y=Y.replace(/:\s*any\b(?!\s*\))/g,(z)=>{return z.replace("any","unknown")}),Z.push(Y)}return Z.join(`
186
- `)}};var qY={meta:{docs:"Require promises to be handled - must be awaited, returned, or have .catch() called"},check:($,J)=>{let Z=[];if(!/\.tsx?$/.test(J.filePath))return Z;let X=$.split(/\r?\n/),Y=!1;for(let z=0;z<X.length;z++){let Q=X[z],G=Q;if(Y){let H=Q.indexOf("*/");if(H>=0)Q=Q.slice(H+2),Y=!1;else continue}let q=Q.indexOf("/*"),U=Q.indexOf("//");if(q>=0&&(U===-1||q<U)){let H=Q.indexOf("*/",q+2);if(H>=0)Q=Q.slice(0,q)+Q.slice(H+2);else Y=!0,Q=Q.slice(0,q)}if(U>=0)Q=Q.slice(0,U);let W=Q.replace(/(['"`])(?:(?!\1)[^\\]|\\.)*?\1/g,'""');if(/\b(?:await|return|void)\s/.test(W))continue;if(/\.(?:then|catch|finally)\s*\(/.test(W))continue;let K=[/\b(fetch|axios|request)\s*\(/,/\b[\w$]*(?:async|Async|load|Load|get|Get|post|Post|put|Put|delete|Delete|save|Save|update|Update|fetch|Fetch)[\w$]*\s*\(/,/\bnew\s+Promise\s*\(/,/\bPromise\s*\.\s*(?:resolve|reject|all|allSettled|race|any)\s*\(/];for(let H of K){let V=W.match(H);if(!V)continue;let A=W.indexOf(V[0]),_=W.slice(0,A).trim();if(/\b(?:const|let|var)\s+[\w$]+\s*=\s*$/.test(_))continue;if(/[\w$]+\s*=\s*$/.test(_))continue;if(/\breturn\s+$/.test(_))continue;if(/\(\s*$/.test(_)||/,\s*$/.test(_))continue;let F=W.slice(A+V[0].length),w=1,j=V[0].length;while(j<F.length&&w>0){if(F[j]==="(")w++;else if(F[j]===")")w--;j++}let D=F.slice(j).trim();if(/^\.(?:then|catch|finally)\s*\(/.test(D))continue;if(D===""||D.startsWith(";")){let M=G.indexOf(V[0]);Z.push({filePath:J.filePath,line:z+1,column:M>=0?M+1:A+1,ruleId:"ts/no-floating-promises",message:"Promise returned by this call is not handled. Add await, return, .catch(), or void.",severity:"error",help:"Either await the promise, return it, add .catch() to handle errors, or use void to explicitly mark as fire-and-forget"});break}}}return Z}};var UY={meta:{docs:"Disallow promises in places not designed to handle them (conditionals, logical expressions)"},check:($,J)=>{let Z=[];if(!/\.tsx?$/.test(J.filePath))return Z;let X=$.split(/\r?\n/),Y=!1;for(let z=0;z<X.length;z++){let Q=X[z],G=Q;if(Y){let F=Q.indexOf("*/");if(F>=0)Q=Q.slice(F+2),Y=!1;else continue}let q=Q.indexOf("/*"),U=Q.indexOf("//");if(q>=0&&(U===-1||q<U)){let F=Q.indexOf("*/",q+2);if(F>=0)Q=Q.slice(0,q)+Q.slice(F+2);else Y=!0,Q=Q.slice(0,q)}if(U>=0)Q=Q.slice(0,U);let W=Q.replace(/(['"`])(?:(?!\1)[^\\]|\\.)*?\1/g,'""'),K=W.match(/\bif\s*\(\s*(!?)\s*([\w$]+\s*\([^)]*\))/);if(K){let F=K[1],w=K[2];if(/async|Async|fetch|Fetch|load|Load|get|Get|save|Save/.test(w)){let j=W.slice(0,W.indexOf(K[0])),D=W.slice(W.indexOf("if (")+4);if(!/\bawait\s/.test(D)){let M=G.indexOf(w);Z.push({filePath:J.filePath,line:z+1,column:M>=0?M+1:1,ruleId:"ts/no-misused-promises",message:"Promise used in conditional expression without await. Promises are always truthy.",severity:"error",help:"Add await before the async call in the condition"})}}}let H=/(?:async|Async|fetch|Fetch|load|Load|get|Get|save|Save|Promise\.)[\w$]*\s*\([^)]*\)/g,V;while((V=H.exec(W))!==null){let F=V.index,w=V[0],j=W.slice(Math.max(0,F-10),F),D=W.slice(F+w.length,Math.min(W.length,F+w.length+10));if(/(?:&&|\|\|)\s*$/.test(j)||/^\s*(?:&&|\|\|)/.test(D)){if(!/\bawait\s*$/.test(j)){let E=G.indexOf(w,Math.max(0,F-5));Z.push({filePath:J.filePath,line:z+1,column:E>=0?E+1:F+1,ruleId:"ts/no-misused-promises",message:"Promise used in logical expression without await. This will not work as expected.",severity:"error",help:"Add await before the async call or restructure the logic"})}}let M=W.slice(Math.max(0,F-20),F);if(/\?\s*$/.test(j)||/\?[^:]*$/.test(M)){if(!/\bawait\s*$/.test(j)){let E=G.indexOf(w,Math.max(0,F-5));Z.push({filePath:J.filePath,line:z+1,column:E>=0?E+1:F+1,ruleId:"ts/no-misused-promises",message:"Promise used in ternary expression without await.",severity:"error",help:"Add await before the async call"})}}}let A=W.match(/\b(?:while|for)\s*\([^)]*(?:async|Async|fetch|Fetch|load|Load|get|Get)[\w$]*\s*\([^)]*\)/);if(A){if(!/\bawait\s/.test(A[0])){let F=G.indexOf(A[0]);Z.push({filePath:J.filePath,line:z+1,column:F>=0?F+1:1,ruleId:"ts/no-misused-promises",message:"Promise used in loop condition without await. This will cause unexpected behavior.",severity:"error",help:"Add await before the async call in the loop condition"})}}let _=W.match(/\.(forEach|map|filter|reduce|every|some|find|findIndex)\s*\(\s*async\s*(?:\(|[\w$]+\s*=>)/);if(_){if(_[1]==="forEach"){let w=G.indexOf(_[0]);Z.push({filePath:J.filePath,line:z+1,column:w>=0?w+1:1,ruleId:"ts/no-misused-promises",message:"async callback in forEach - forEach does not wait for promises to resolve.",severity:"error",help:"Use for...of loop with await, or Promise.all() with map()"})}}}return Z}};var WY={meta:{docs:"Disallow require() in TypeScript files; prefer ESM imports"},check:($,J)=>{let Z=[];if(!/\.ts$/.test(J.filePath))return Z;let X=$.split(/\r?\n/),Y=!1;for(let z=0;z<X.length;z++){let Q=X[z],G=Q;if(Y){let H=G.indexOf("*/");if(H>=0)G=G.slice(H+2),Y=!1;else continue}let q=G.indexOf("/*"),U=G.indexOf("//");if(q>=0&&(U===-1||q<U)){let H=G.indexOf("*/",q+2);if(H>=0)G=G.slice(0,q)+G.slice(H+2);else Y=!0,G=G.slice(0,q)}if(U>=0)G=G.slice(0,U);let W=G.trim();if(!W)continue;if(/\bimport\s*\(/.test(W))continue;let K=W.indexOf("require(");if(K>=0){Z.push({filePath:J.filePath,line:z+1,column:Q.indexOf("require(")+1||K+1,ruleId:"ts/no-require-imports",message:"Do not use require() in TypeScript files. Use ESM import syntax instead.",severity:"error"});continue}if(/^import\s+(?:\S.*|[\t\v\f \xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF])=\s*require\s*\(/.test(W)){let H=Q.indexOf("require(");Z.push({filePath:J.filePath,line:z+1,column:H>-1?H+1:1,ruleId:"ts/no-require-imports",message:"Do not use require() in TypeScript files. Use ESM import syntax instead.",severity:"error"})}}return Z}};var KY={meta:{docs:"Disallow top-level await in TypeScript/JavaScript files"},check:($,J)=>{let Z=[],X=J.filePath.split(".").pop()||"";if(!["ts","tsx","mts","cts","js","mjs","cjs"].includes(X))return Z;let Y=0,z=!1,Q=!1,G=!1,q=!1,U=!1,W=!1,K=0,H=1,V=(A)=>{Z.push({filePath:J.filePath,line:H,column:A,ruleId:"ts/no-top-level-await",message:"Do not use top-level await",severity:"error"})};for(let A=0;A<$.length;A++){let _=$[A];K++;let F=$[A+1];if(_===`
187
- `){Q=!1,H++,K=0;continue}if(Q)continue;if(z){if(_==="*"&&F==="/")z=!1,A++,K++;continue}if(G){if(!W&&_==="\\"){W=!0;continue}if(!W&&_==="'")G=!1;W=!1;continue}if(q){if(!W&&_==="\\"){W=!0;continue}if(!W&&_==='"')q=!1;W=!1;continue}if(U){if(!W&&_==="\\"){W=!0;continue}if(!W&&_==="`")U=!1;W=!1;continue}if(_==="/"&&F==="*"){z=!0,A++,K++;continue}if(_==="/"&&F==="/"){Q=!0,A++,K++;continue}if(_==="'"){G=!0;continue}if(_==='"'){q=!0;continue}if(_==="`"){U=!0;continue}if(_==="{"){Y++;continue}if(_==="}"){if(Y>0)Y--;continue}if(_==="a"&&$.slice(A,A+5)==="await"){let w=$.slice(Math.max(0,A-6),A),j=/for\s+$/.test(w),D=A===0||/[^$\w]/.test($[A-1]),M=/[^$\w]/.test($[A+5]||" ");if(!j&&D&&M&&Y===0)V(K);A+=4,K+=4;continue}}return Z}};var HY={meta:{docs:"Disallow `exports =` in TypeScript; prefer ESM export default"},check:($,J)=>{let Z=[],X=J.filePath.split(".").pop()||"";if(!["ts","tsx","mts","cts","d.ts"].includes(X))return Z;let Y=$.split(/\r?\n/);for(let z=0;z<Y.length;z++){let q=Y[z].replace(/\/\*.*?\*\//g,"").replace(/\/\/.*$/,"").match(/\bexports\s*=\s*/);if(q)Z.push({filePath:J.filePath,line:z+1,column:(q.index||0)+1,ruleId:"ts/no-ts-export-equal",message:"Use ESM `export default` instead of `exports =`",severity:"error"})}return Z}};var VY={meta:{docs:"Disallow assignment of `any` typed values to variables - unsafe assignments bypass type checking"},check:($,J)=>{let Z=[];if(!/\.tsx?$/.test(J.filePath))return Z;let X=$.split(/\r?\n/),Y=!1;for(let z=0;z<X.length;z++){let Q=X[z],G=Q;if(Y){let j=Q.indexOf("*/");if(j>=0)Q=Q.slice(j+2),Y=!1;else continue}let q=Q.indexOf("/*"),U=Q.indexOf("//");if(q>=0&&(U===-1||q<U)){let j=Q.indexOf("*/",q+2);if(j>=0)Q=Q.slice(0,q)+Q.slice(j+2);else Y=!0,Q=Q.slice(0,q)}if(U>=0)Q=Q.slice(0,U);let W=Q.replace(/(['"`])(?:(?!\1)[^\\]|\\.)*?\1/g,'""'),K=/(\w+)\s+as\s+any/g,H;while((H=K.exec(W))!==null){let j=H[1],D=H.index,M=W.slice(D+H[0].length).trim(),E=W.slice(0,D).trim();if(/=\s*$/.test(E)&&!/==|===|!=|!==/.test(E)){let R=G.indexOf(H[0]);Z.push({filePath:J.filePath,line:z+1,column:R>=0?R+1:D+1,ruleId:"ts/no-unsafe-assignment",message:"Unsafe assignment: value cast to `any` is being assigned. This bypasses type checking.",severity:"error",help:"Avoid casting to `any` or use a more specific type"})}}let V=["JSON.parse","eval","Function","require"];for(let j of V){let D=new RegExp(`\\b${j.replace(".","\\.")}\\s*\\(`,"g");D.lastIndex=0;while((H=D.exec(W))!==null){let M=H.index,E=W.slice(0,M).trim(),R=E.match(/(?:const|let|var)\s+([\w$]+)\s*=\s*$/);if(R){let O=R[1];if(!new RegExp(`\\b${O}\\s*:\\s*\\w+`).test(W)){let P=G.indexOf(H[0]);Z.push({filePath:J.filePath,line:z+1,column:P>=0?P+1:M+1,ruleId:"ts/no-unsafe-assignment",message:`Unsafe assignment from ${j}() without type annotation. This function returns 'any'.`,severity:"error",help:`Add a type annotation to ${O} or use a type assertion with a specific type`})}}let S=E.match(/([\w$.]+)\s*=\s*$/),f=/(?:const|let|var)\s+/.test(E);if(S&&!R&&!f){let O=G.indexOf(H[0]);Z.push({filePath:J.filePath,line:z+1,column:O>=0?O+1:M+1,ruleId:"ts/no-unsafe-assignment",message:`Unsafe assignment from ${j}() which returns 'any'.`,severity:"error",help:"Consider adding a type assertion with a specific type"})}}}let A=/(?:const|let|var)\s+([\w$]+)\s*:\s*any\s*=/,_=W.match(A);if(_){let j=_[1],D=G.indexOf(_[0]);Z.push({filePath:J.filePath,line:z+1,column:D>=0?D+1:1,ruleId:"ts/no-unsafe-assignment",message:`Variable '${j}' is explicitly typed as 'any'. This defeats TypeScript's type safety.`,severity:"error",help:"Use a more specific type or `unknown` instead of `any`"})}let F=/(?:const|let|var)\s+(?:\{[^}]+\}|\[[^\]]+\])\s*=\s*([\w$]+)/,w=W.match(F);if(w){let j=w[1];if(/^(?:params|query|body|req|res|response|data|result)$/.test(j));}}return Z}};var AY={meta:{docs:"Prefer nullish coalescing operator (??) over logical OR (||) when checking for null/undefined"},check:($,J)=>{let Z=[];if(!/\.tsx?$/.test(J.filePath))return Z;let X=$.split(/\r?\n/),Y=!1;for(let z=0;z<X.length;z++){let Q=X[z],G=Q.split(""),q=G.length,U=0;if(Y){let A=Q.indexOf("*/");if(A<0)continue;for(let _=0;_<=A+1;_++)G[_]=" ";Y=!1,U=A+2}let W=null;for(;U<q;U++){let A=G[U];if(W){if(A==="\\"){if(G[U]=" ",U+1<q)G[U+1]=" ",U++;continue}if(A===W){W=null;continue}G[U]=" ";continue}if(A==="/"&&G[U+1]==="/"){for(let _=U;_<q;_++)G[_]=" ";break}if(A==="/"&&G[U+1]==="*"){let _=Q.indexOf("*/",U+2);if(_<0){for(let F=U;F<q;F++)G[F]=" ";Y=!0;break}for(let F=U;F<=_+1;F++)G[F]=" ";U=_+1;continue}if(A==='"'||A==="'"||A==="`")W=A}let K=G.join(""),H=/\|\|/g,V;while((V=H.exec(K))!==null){let A=V.index,_=A-1,F=0,w=0,j=0;while(_>=0){let O=K[_];if(O===")")F++;else if(O==="("){if(F===0){_++;break}F--}else if(O==="}")w++;else if(O==="{"){if(w===0){_++;break}w--}else if(O==="]")j++;else if(O==="["){if(j===0){_++;break}j--}else if(F===0&&w===0&&j===0){if(new RegExp("[;,=:?]").test(O)){_++;break}if(O==="&"||O==="|"){_++;break}}_--}if(_<0)_=0;let D=K.slice(_,A).trim();if(/[<>!=]/.test(D))continue;if(/\b(?:true|false)\b/.test(D))continue;let M=A+2,E=M;F=0,w=0,j=0;while(E<K.length){let O=K[E];if(O==="(")F++;else if(O===")"){if(F===0)break;F--}else if(O==="{")w++;else if(O==="}"){if(w===0)break;w--}else if(O==="[")j++;else if(O==="]"){if(j===0)break;j--}else if(F===0&&w===0&&j===0){if(new RegExp("[;,?:]").test(O))break;if(O==="&"||O==="|"&&K[E+1]==="|")break}E++}let R=K.slice(M,E).trim(),S=/^["'`\d]/.test(R)||/^\{/.test(R)||/^[\w$]+\(/.test(R)||/^[\w$.[\]]+$/.test(R),f=/^[\w$]+$/.test(D)||/^[\w$.?[\]()]+$/.test(D);if(S&&f)Z.push({filePath:J.filePath,line:z+1,column:A+1,ruleId:"ts/prefer-nullish-coalescing",message:"Prefer nullish coalescing operator (??) over logical OR (||)",severity:"error",help:'Use `??` instead of `||` to only handle null/undefined, not falsy values like 0, "", or false'})}}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=[];for(let X of J){let Y=X,z=new RegExp("(\\b[\\w$.]+)\\s*\\|\\|\\s*([^|&]+?)(?=\\s*[;,)\\]}]|$)","g");Y=Y.replace(z,(Q,G,q)=>{if(/\b(?:true|false)\b/.test(q.trim()))return Q;return`${G} ?? ${q}`}),Z.push(Y)}return Z.join(`
188
- `)}};var _Y={meta:{docs:"Prefer optional chaining (?.) over chained logical AND (&&) for property access"},check:($,J)=>{let Z=[];if(!/\.tsx?$/.test(J.filePath))return Z;let X=$.split(/\r?\n/),Y=!1;for(let z=0;z<X.length;z++){let Q=X[z],G=Q;if(Y){let _=Q.indexOf("*/");if(_>=0)Q=Q.slice(_+2),Y=!1;else continue}let q=Q.indexOf("/*"),U=Q.indexOf("//");if(q>=0&&(U===-1||q<U)){let _=Q.indexOf("*/",q+2);if(_>=0)Q=Q.slice(0,q)+Q.slice(_+2);else Y=!0,Q=Q.slice(0,q)}if(U>=0)Q=Q.slice(0,U);let W=Q.replace(/(['"`])(?:(?!\1)[^\\]|\\.)*?\1/g,'""'),K=/(\b[\w$]+)\s*&&\s*\1\.([\w$]+)/g,H;while((H=K.exec(W))!==null){let _=H[1],F=H[2],w=H.index,j=G.indexOf(H[0],Math.max(0,w-5));Z.push({filePath:J.filePath,line:z+1,column:j>=0?j+1:w+1,ruleId:"ts/prefer-optional-chain",message:`Prefer optional chaining over && for property access: ${_}?.${F}`,severity:"error",help:`Use \`${_}?.${F}\` instead of \`${_} && ${_}.${F}\``})}let V=/([\w$]+\.[\w$.]+)\s*&&\s*\1\.([\w$]+)/g;V.lastIndex=0;while((H=V.exec(W))!==null){let _=H[1],F=H[2],w=H.index,j=G.indexOf(H[0],Math.max(0,w-5));Z.push({filePath:J.filePath,line:z+1,column:j>=0?j+1:w+1,ruleId:"ts/prefer-optional-chain",message:`Prefer optional chaining over && for nested property access: ${_}?.${F}`,severity:"error",help:`Use \`${_}?.${F}\` instead of \`${_} && ${_}.${F}\``})}let A=W.split(/\s*&&\s*/);if(A.length>=3)for(let _=0;_<A.length-2;_++){let F=A[_].trim(),w=A[_+1].trim(),j=A[_+2].trim();if(w.startsWith(`${F}.`)&&j.startsWith(`${w}.`)){let D=G.indexOf(F);Z.push({filePath:J.filePath,line:z+1,column:D>=0?D+1:1,ruleId:"ts/prefer-optional-chain",message:"Prefer optional chaining over multiple && checks for nested properties",severity:"error",help:`Use optional chaining like \`${F}?.${w.slice(F.length+1)}?.${j.slice(w.length+1)}\``});break}}}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=[];for(let X of J){let Y=X;Y=Y.replace(/(\b[\w$]+)\s*&&\s*\1\.([\w$]+)/g,"$1?.$2"),Y=Y.replace(/([\w$]+\.[\w$.]+)\s*&&\s*\1\.([\w$]+)/g,"$1?.$2"),Z.push(Y)}return Z.join(`
189
- `)}};function I2($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var FY=/([a-zA-Z_$][a-zA-Z0-9_$]*\??)\s*:\s*([A-Z][a-zA-Z0-9_$<>[\]|&]*|string|number|boolean|null|undefined|void|never|any|unknown|object|symbol|bigint)/g,wY={meta:{docs:"Require consistent spacing around type annotation colons",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G;FY.lastIndex=0;while((G=FY.exec(z))!==null){if(I2(z,G.index))continue;let q=G[0],U=q.indexOf(":"),W=G.index+U;if(U>0&&q[U-1]===" "&&!q.startsWith("?")){if(!G[1].endsWith("?")||q[U-1]===" "){if(z[W-1]===" "&&!/\?\s*$/.test(G[1]))Z.push({filePath:J.filePath,line:Y+1,column:W+1,ruleId:"ts/type-annotation-spacing",message:"Unexpected space before colon in type annotation",severity:"warning"})}}if(W+1<z.length&&z[W+1]!==" "&&z[W+1]!=="\t")Z.push({filePath:J.filePath,line:Y+1,column:W+2,ruleId:"ts/type-annotation-spacing",message:"Missing space after colon in type annotation",severity:"warning"})}}return Z},fix($){let J=$.split(/\r?\n/),Z=[];for(let X of J){let Y=X;Y=Y.replace(/([a-zA-Z_$][a-zA-Z0-9_$]*\??)\s*:\s*([A-Z][a-zA-Z0-9_$<>[\]|&]*|string|number|boolean|null|undefined|void|never|any|unknown|object|symbol|bigint)/g,"$1: $2"),Z.push(Y)}return Z.join(`
190
- `)}};function BY($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var MY=/([A-Za-z_$][A-Za-z0-9_$]*)\s*<(\s+)/g,jY=/(\s+)>(?!=)/g,S2=/([A-Za-z_$][A-Za-z0-9_$]*)\s*<\s+/g,v2=/\s+>(?!=)/g,NY={meta:{docs:"Disallow spaces inside TypeScript generic angle brackets",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;MY.lastIndex=0;let G;while((G=MY.exec(z))!==null){let q=G.index+G[1].length,U=z.indexOf("<",q);if(U===-1)continue;if(BY(z,U))continue;Z.push({filePath:J.filePath,line:Y+1,column:U+2,ruleId:"ts/type-generic-spacing",message:"Unexpected space after '<' in generic type",severity:"warning"})}jY.lastIndex=0;while((G=jY.exec(z))!==null){let q=G.index+G[1].length;if(BY(z,q))continue;let U=z.slice(0,q);if(!/[A-Za-z_$][A-Za-z0-9_$]*\s*</.test(U))continue;Z.push({filePath:J.filePath,line:Y+1,column:q+1,ruleId:"ts/type-generic-spacing",message:"Unexpected space before '>' in generic type",severity:"warning"})}}return Z},fix($,J){let Z=$.split(/\r?\n/),X=[];for(let Y of Z){let z=Y.trim();if(!z||z.startsWith("//")||z.startsWith("*")||z.startsWith("/*")){X.push(Y);continue}let Q=Y;if(Q=Q.replace(S2,(G,q)=>{return`${q}<`}),/[A-Za-z_$][A-Za-z0-9_$]*\s*</.test(Q))Q=Q.replace(v2,">");X.push(Q)}return X.join(`
191
- `)}};function y2($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var TY=/([a-zA-Z_$][a-zA-Z0-9_$?]*):(\S)/g,RY={meta:{docs:"Require space after colon in named tuple members",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G=EY(z);for(let q of G){TY.lastIndex=0;let U;while((U=TY.exec(q.text))!==null){let K=q.start+U.index+U[1].length;if(y2(z,K))continue;if(!DY(z))continue;Z.push({filePath:J.filePath,line:Y+1,column:K+2,ruleId:"ts/type-named-tuple-spacing",message:"Missing space after colon in named tuple member",severity:"warning"})}}}return Z},fix($,J){let Z=$.split(/\r?\n/),X=[];for(let Y of Z){let z=Y.trim();if(!z||z.startsWith("//")||z.startsWith("*")||z.startsWith("/*")){X.push(Y);continue}if(!DY(Y)){X.push(Y);continue}let Q=Y,G=EY(Y);for(let q=G.length-1;q>=0;q--){let U=G[q],W=U.text.replace(/([a-zA-Z_$][a-zA-Z0-9_$?]*):(\S)/g,"$1: $2");if(W!==U.text)Q=Q.slice(0,U.start)+W+Q.slice(U.start+U.text.length)}X.push(Q)}return X.join(`
192
- `)}};function EY($){let J=[],Z=0,X=-1;for(let Y=0;Y<$.length;Y++)if($[Y]==="["){if(Z===0)X=Y;Z++}else if($[Y]==="]"){if(Z--,Z===0&&X>=0)J.push({start:X,text:$.slice(X,Y+1)}),X=-1}return J}function DY($){let J=$.trim();return/\btype\s/.test(J)||/:\s*\[/.test(J)||/=\s*\[/.test(J)||/\bas\s/.test(J)||/<[^>]*\[/.test(J)||/\bextends\s/.test(J)||/\bimplements\s/.test(J)}var OY={name:"ts",rules:{"no-require-imports":B(WY),"no-top-level-await":B(KY),"no-ts-export-equal":B(HY),"no-explicit-any":B(GY),"prefer-nullish-coalescing":B(AY),"prefer-optional-chain":B(_Y),"no-floating-promises":B(qY),"no-misused-promises":B(UY),"no-unsafe-assignment":B(VY),"member-delimiter-style":B(QY),"type-annotation-spacing":B(wY),"type-generic-spacing":B(NY),"type-named-tuple-spacing":B(RY)}};var LY={name:"unused-imports",rules:{"no-unused-vars":B(i0),"no-unused-imports":B(i0)}};function Q9(){return[OZ,yZ,gX,fX,zY,uX,OY,sJ,V5,A5,tJ,rZ,KX,LY,eJ]}var G9=null;function SY(){if(!G9)G9=new Z1("pickier",{showTags:!1});return G9}function j1(...$){if(v0.TRACE)SY().debug("[pickier:trace]",$)}async function CY($,J,Z){let X,Y=new Promise((z,Q)=>{X=setTimeout(()=>Q(Error(`Timeout after ${J}ms at ${Z}`)),J)});try{let z=await Promise.race([$,Y]);return clearTimeout(X),z}catch(z){throw SY().error(`[pickier:error] ${Z} failed:`,z?.message||z),j1("withTimeout error:",Z,z),z}}function vY($){if($.length===0)return"";let J=new Map;for(let X of $){let Y=J.get(X.filePath)||[];Y.push(X),J.set(X.filePath,Y)}let Z="";for(let[X,Y]of J){Z+=`
193
- ${Z0.bold(`\x1B[4m${X}\x1B[24m`)}
194
- `;let z;try{z=IY(X,"utf8")}catch{for(let G of Y){let q=G.severity==="error"?Z0.red("error"):Z0.yellow("warn ");Z+=` ${G.line}:${G.column} ${q} ${G.message} ${Z0.blue(G.ruleId)}
195
- `}continue}let Q=z.split(/\r?\n/);for(let G of Y){let q=G.severity==="error"?Z0.red("!"):Z0.yellow("!"),U=Z0.blue(G.ruleId);Z+=`
186
+ `,Y.index),G=Y.index-Q;Z.push({filePath:J.filePath,line:z,column:G,ruleId:"style/wrap-iife",message:"Wrap immediately invoked function expressions in parentheses",severity:"warning"})}return Z},fix($){return $.replace(/([^a-zA-Z_$(\n])(function\s*\([^)]*\)\s*\{[^}]*\})\s*\(/g,"$1($2)(")}};var zY=/\byield\s*\*/g;function S2($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var QY={meta:{docs:"Enforce spacing around * in yield* expressions (no space before *, space after)",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G;zY.lastIndex=0;while((G=zY.exec(z))!==null){let q=G.index;if(S2(z,q))continue;let U=G[0],W=q+U.length-1,K=W+1;if(U!=="yield*")Z.push({filePath:J.filePath,line:Y+1,column:W+1,ruleId:"style/yield-star-spacing",message:"Unexpected space before * in yield expression",severity:"warning"});if(K<z.length&&z[K]!==" "&&z[K]!=="\t"&&z[K]!==`
187
+ `)Z.push({filePath:J.filePath,line:Y+1,column:K+1,ruleId:"style/yield-star-spacing",message:"Missing space after * in yield expression",severity:"warning"})}}return Z},fix($,J){let Z=$;return Z=Z.replace(/\byield\s+\*/g,"yield*"),Z=Z.replace(/\byield\*(\S)/g,"yield* $1"),Z}};var GY={name:"style",rules:{"brace-style":B(D5),curly:B(f5),"max-statements-per-line":B(Z6),"if-newline":B(l5),"consistent-chaining":B(S5),"consistent-list-newline":B(k5),"indent-unindent":B(a5),"no-multi-spaces":D6,"no-multiple-empty-lines":R6,"no-trailing-spaces":L6,"keyword-spacing":B(t5),"arrow-spacing":B(T5),"space-infix-ops":B(l6),"object-curly-spacing":B(C6),"spaced-comment":B(n6),"block-spacing":B(E5),"space-before-blocks":B(x6),"comma-spacing":B(P5),"semi-spacing":B(g6),"rest-spread-spacing":B(f6),"generator-star-spacing":B(r5),"yield-star-spacing":B(QY),"function-call-spacing":B(d5),"template-tag-spacing":B(XY),"no-whitespace-before-property":B(K6),"key-spacing":B(n5),"computed-property-spacing":B(I5),"array-bracket-spacing":B(B5),"space-in-parens":B(c6),"template-curly-spacing":B($Y),"space-unary-ops":B(s6),"switch-colon-spacing":B(t6),"comma-dangle":B(L5),"arrow-parens":B(j5),"space-before-function-paren":B(d6),"quote-props":B(b6),"no-floating-decimal":B(T6),"new-parens":B(Q6),"no-extra-parens":B(q6),"wrap-iife":B(YY),"comma-style":B(C5),"dot-location":B(g5),"operator-linebreak":B(v6),"multiline-ternary":B(Y6),"padded-blocks":B(y6),"lines-between-class-members":B($6),"no-mixed-operators":B(B6),"indent-binary-ops":B(h5),"no-tabs":B(O6),"no-mixed-spaces-and-tabs":B(E6)}};var qY={meta:{docs:"Enforce consistent member delimiter style in interfaces and type literals",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/),Y=!1,z=0,Q=0;for(let G=0;G<X.length;G++){let q=X[G],U=q.trim();if(!U||U.startsWith("//")||U.startsWith("*")||U.startsWith("/*"))continue;if(U.match(/\b(interface|type)\b.*\{/))Y=!0,Q=z+1;for(let W of U){if(W==="{")z++;if(W==="}")z--}if(Y&&z<Q){Y=!1;continue}if(!Y||z!==Q)continue;if(U==="}"||U==="};"||U==="},")continue;if(U.endsWith(",")){if(U.startsWith("|")||U.startsWith("&"))continue;Z.push({filePath:J.filePath,line:G+1,column:q.length,ruleId:"ts/member-delimiter-style",message:"Expected semicolon delimiter in interface, found comma",severity:"warning"})}if(!U.endsWith(";")&&!U.endsWith(",")&&!U.endsWith("{")&&!U.endsWith("(")){if(U.match(/^\w+[\s?]*:/)||U.match(/^\[/)||U.match(/^readonly\b/))Z.push({filePath:J.filePath,line:G+1,column:q.length+1,ruleId:"ts/member-delimiter-style",message:"Missing semicolon delimiter in interface member",severity:"warning"})}}return Z},fix($){let J=$.split(/\r?\n/),Z=[],X=!1,Y=0,z=0;for(let Q=0;Q<J.length;Q++){let G=J[Q],q=G.trim();if(q.match(/\b(interface|type)\b.*\{/))X=!0,z=Y+1;let U=Y;for(let W of q){if(W==="{")Y++;if(W==="}")Y--}if(X&&Y<z){X=!1,Z.push(G);continue}if(X&&U===z&&q!=="}"&&q!=="};"&&q!=="},"){let W=G;if(q.endsWith(","))W=G.replace(/,\s*$/,";");Z.push(W);continue}Z.push(G)}return Z.join(`
188
+ `)}};var UY={meta:{docs:"Disallow the use of the `any` type - it defeats the purpose of TypeScript type safety"},check:($,J)=>{let Z=[];if(!/\.tsx?$/.test(J.filePath))return Z;let X=$.split(/\r?\n/),Y=!1;for(let z=0;z<X.length;z++){let Q=X[z],G=Q;if(Y){let V=Q.indexOf("*/");if(V>=0)Q=Q.slice(V+2),Y=!1;else continue}let q=Q.indexOf("/*"),U=Q.indexOf("//");if(q>=0&&(U===-1||q<U)){let V=Q.indexOf("*/",q+2);if(V>=0)Q=Q.slice(0,q)+Q.slice(V+2);else Y=!0,Q=Q.slice(0,q)}if(U>=0)Q=Q.slice(0,U);let W=Q.replace(/(['"`])(?:(?!\1)[^\\]|\\.)*?\1/g,'""'),K=/\b(any)\b/g,H;while((H=K.exec(W))!==null){let V=H.index,A=W[V-1]||" ",_=W[V+3]||" ",w=W.slice(Math.max(0,V-10),V),F=W.slice(V+3,Math.min(W.length,V+10));if(/\w/.test(A)||/\w/.test(_))continue;if(/:/.test(w)||/</.test(w)||/\bas\s*$/.test(w)||/,/.test(w)||/\|/.test(w)||/&/.test(w)||/\[/.test(F)||/>/.test(F)||/,/.test(F)||/\|/.test(F)||/extends\s+$/.test(w)||/=\s*$/.test(w)){let T=G.indexOf("any",Math.max(0,V-5));Z.push({filePath:J.filePath,line:z+1,column:T>=0?T+1:V+1,ruleId:"ts/no-explicit-any",message:"Unexpected `any` type. Specify a more precise type or use `unknown` if the type is truly unknown.",severity:"error",help:"Replace `any` with a specific type, `unknown`, or a generic type parameter"})}}}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=[];for(let X of J){let Y=X;Y=Y.replace(/:\s*any\b(?!\s*\))/g,(z)=>{return z.replace("any","unknown")}),Z.push(Y)}return Z.join(`
189
+ `)}};var WY={meta:{docs:"Require promises to be handled - must be awaited, returned, or have .catch() called"},check:($,J)=>{let Z=[];if(!/\.tsx?$/.test(J.filePath))return Z;let X=$.split(/\r?\n/),Y=!1;for(let z=0;z<X.length;z++){let Q=X[z],G=Q;if(Y){let H=Q.indexOf("*/");if(H>=0)Q=Q.slice(H+2),Y=!1;else continue}let q=Q.indexOf("/*"),U=Q.indexOf("//");if(q>=0&&(U===-1||q<U)){let H=Q.indexOf("*/",q+2);if(H>=0)Q=Q.slice(0,q)+Q.slice(H+2);else Y=!0,Q=Q.slice(0,q)}if(U>=0)Q=Q.slice(0,U);let W=Q.replace(/(['"`])(?:(?!\1)[^\\]|\\.)*?\1/g,'""');if(/\b(?:await|return|void)\s/.test(W))continue;if(/\.(?:then|catch|finally)\s*\(/.test(W))continue;let K=[/\b(fetch|axios|request)\s*\(/,/\b[\w$]*(?:async|Async|load|Load|get|Get|post|Post|put|Put|delete|Delete|save|Save|update|Update|fetch|Fetch)[\w$]*\s*\(/,/\bnew\s+Promise\s*\(/,/\bPromise\s*\.\s*(?:resolve|reject|all|allSettled|race|any)\s*\(/];for(let H of K){let V=W.match(H);if(!V)continue;let A=W.indexOf(V[0]),_=W.slice(0,A).trim();if(/\b(?:const|let|var)\s+[\w$]+\s*=\s*$/.test(_))continue;if(/[\w$]+\s*=\s*$/.test(_))continue;if(/\breturn\s+$/.test(_))continue;if(/\(\s*$/.test(_)||/,\s*$/.test(_))continue;let w=W.slice(A+V[0].length),F=1,M=V[0].length;while(M<w.length&&F>0){if(w[M]==="(")F++;else if(w[M]===")")F--;M++}let T=w.slice(M).trim();if(/^\.(?:then|catch|finally)\s*\(/.test(T))continue;if(T===""||T.startsWith(";")){let E=G.indexOf(V[0]);Z.push({filePath:J.filePath,line:z+1,column:E>=0?E+1:A+1,ruleId:"ts/no-floating-promises",message:"Promise returned by this call is not handled. Add await, return, .catch(), or void.",severity:"error",help:"Either await the promise, return it, add .catch() to handle errors, or use void to explicitly mark as fire-and-forget"});break}}}return Z}};var KY={meta:{docs:"Disallow promises in places not designed to handle them (conditionals, logical expressions)"},check:($,J)=>{let Z=[];if(!/\.tsx?$/.test(J.filePath))return Z;let X=$.split(/\r?\n/),Y=!1;for(let z=0;z<X.length;z++){let Q=X[z],G=Q;if(Y){let w=Q.indexOf("*/");if(w>=0)Q=Q.slice(w+2),Y=!1;else continue}let q=Q.indexOf("/*"),U=Q.indexOf("//");if(q>=0&&(U===-1||q<U)){let w=Q.indexOf("*/",q+2);if(w>=0)Q=Q.slice(0,q)+Q.slice(w+2);else Y=!0,Q=Q.slice(0,q)}if(U>=0)Q=Q.slice(0,U);let W=Q.replace(/(['"`])(?:(?!\1)[^\\]|\\.)*?\1/g,'""'),K=W.match(/\bif\s*\(\s*(!?)\s*([\w$]+\s*\([^)]*\))/);if(K){let w=K[1],F=K[2];if(/async|Async|fetch|Fetch|load|Load|get|Get|save|Save/.test(F)){let M=W.slice(0,W.indexOf(K[0])),T=W.slice(W.indexOf("if (")+4);if(!/\bawait\s/.test(T)){let E=G.indexOf(F);Z.push({filePath:J.filePath,line:z+1,column:E>=0?E+1:1,ruleId:"ts/no-misused-promises",message:"Promise used in conditional expression without await. Promises are always truthy.",severity:"error",help:"Add await before the async call in the condition"})}}}let H=/(?:async|Async|fetch|Fetch|load|Load|get|Get|save|Save|Promise\.)[\w$]*\s*\([^)]*\)/g,V;while((V=H.exec(W))!==null){let w=V.index,F=V[0],M=W.slice(Math.max(0,w-10),w),T=W.slice(w+F.length,Math.min(W.length,w+F.length+10));if(/(?:&&|\|\|)\s*$/.test(M)||/^\s*(?:&&|\|\|)/.test(T)){if(!/\bawait\s*$/.test(M)){let j=G.indexOf(F,Math.max(0,w-5));Z.push({filePath:J.filePath,line:z+1,column:j>=0?j+1:w+1,ruleId:"ts/no-misused-promises",message:"Promise used in logical expression without await. This will not work as expected.",severity:"error",help:"Add await before the async call or restructure the logic"})}}let E=W.slice(Math.max(0,w-20),w);if(/\?\s*$/.test(M)||/\?[^:]*$/.test(E)){if(!/\bawait\s*$/.test(M)){let j=G.indexOf(F,Math.max(0,w-5));Z.push({filePath:J.filePath,line:z+1,column:j>=0?j+1:w+1,ruleId:"ts/no-misused-promises",message:"Promise used in ternary expression without await.",severity:"error",help:"Add await before the async call"})}}}let A=W.match(/\b(?:while|for)\s*\([^)]*(?:async|Async|fetch|Fetch|load|Load|get|Get)[\w$]*\s*\([^)]*\)/);if(A){if(!/\bawait\s/.test(A[0])){let w=G.indexOf(A[0]);Z.push({filePath:J.filePath,line:z+1,column:w>=0?w+1:1,ruleId:"ts/no-misused-promises",message:"Promise used in loop condition without await. This will cause unexpected behavior.",severity:"error",help:"Add await before the async call in the loop condition"})}}let _=W.match(/\.(forEach|map|filter|reduce|every|some|find|findIndex)\s*\(\s*async\s*(?:\(|[\w$]+\s*=>)/);if(_){if(_[1]==="forEach"){let F=G.indexOf(_[0]);Z.push({filePath:J.filePath,line:z+1,column:F>=0?F+1:1,ruleId:"ts/no-misused-promises",message:"async callback in forEach - forEach does not wait for promises to resolve.",severity:"error",help:"Use for...of loop with await, or Promise.all() with map()"})}}}return Z}};var HY={meta:{docs:"Disallow require() in TypeScript files; prefer ESM imports"},check:($,J)=>{let Z=[];if(!/\.ts$/.test(J.filePath))return Z;let X=$.split(/\r?\n/),Y=!1;for(let z=0;z<X.length;z++){let Q=X[z],G=Q;if(Y){let H=G.indexOf("*/");if(H>=0)G=G.slice(H+2),Y=!1;else continue}let q=G.indexOf("/*"),U=G.indexOf("//");if(q>=0&&(U===-1||q<U)){let H=G.indexOf("*/",q+2);if(H>=0)G=G.slice(0,q)+G.slice(H+2);else Y=!0,G=G.slice(0,q)}if(U>=0)G=G.slice(0,U);let W=G.trim();if(!W)continue;if(/\bimport\s*\(/.test(W))continue;let K=W.indexOf("require(");if(K>=0){Z.push({filePath:J.filePath,line:z+1,column:Q.indexOf("require(")+1||K+1,ruleId:"ts/no-require-imports",message:"Do not use require() in TypeScript files. Use ESM import syntax instead.",severity:"error"});continue}if(/^import\s+(?:\S.*|[\t\v\f \xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF])=\s*require\s*\(/.test(W)){let H=Q.indexOf("require(");Z.push({filePath:J.filePath,line:z+1,column:H>-1?H+1:1,ruleId:"ts/no-require-imports",message:"Do not use require() in TypeScript files. Use ESM import syntax instead.",severity:"error"})}}return Z}};var VY={meta:{docs:"Disallow top-level await in TypeScript/JavaScript files"},check:($,J)=>{let Z=[],X=J.filePath.split(".").pop()||"";if(!["ts","tsx","mts","cts","js","mjs","cjs"].includes(X))return Z;let Y=0,z=!1,Q=!1,G=!1,q=!1,U=!1,W=!1,K=0,H=1,V=(A)=>{Z.push({filePath:J.filePath,line:H,column:A,ruleId:"ts/no-top-level-await",message:"Do not use top-level await",severity:"error"})};for(let A=0;A<$.length;A++){let _=$[A];K++;let w=$[A+1];if(_===`
190
+ `){Q=!1,H++,K=0;continue}if(Q)continue;if(z){if(_==="*"&&w==="/")z=!1,A++,K++;continue}if(G){if(!W&&_==="\\"){W=!0;continue}if(!W&&_==="'")G=!1;W=!1;continue}if(q){if(!W&&_==="\\"){W=!0;continue}if(!W&&_==='"')q=!1;W=!1;continue}if(U){if(!W&&_==="\\"){W=!0;continue}if(!W&&_==="`")U=!1;W=!1;continue}if(_==="/"&&w==="*"){z=!0,A++,K++;continue}if(_==="/"&&w==="/"){Q=!0,A++,K++;continue}if(_==="'"){G=!0;continue}if(_==='"'){q=!0;continue}if(_==="`"){U=!0;continue}if(_==="{"){Y++;continue}if(_==="}"){if(Y>0)Y--;continue}if(_==="a"&&$.slice(A,A+5)==="await"){let F=$.slice(Math.max(0,A-6),A),M=/for\s+$/.test(F),T=A===0||/[^$\w]/.test($[A-1]),E=/[^$\w]/.test($[A+5]||" ");if(!M&&T&&E&&Y===0)V(K);A+=4,K+=4;continue}}return Z}};var AY={meta:{docs:"Disallow `exports =` in TypeScript; prefer ESM export default"},check:($,J)=>{let Z=[],X=J.filePath.split(".").pop()||"";if(!["ts","tsx","mts","cts","d.ts"].includes(X))return Z;let Y=$.split(/\r?\n/);for(let z=0;z<Y.length;z++){let q=Y[z].replace(/\/\*.*?\*\//g,"").replace(/\/\/.*$/,"").match(/\bexports\s*=\s*/);if(q)Z.push({filePath:J.filePath,line:z+1,column:(q.index||0)+1,ruleId:"ts/no-ts-export-equal",message:"Use ESM `export default` instead of `exports =`",severity:"error"})}return Z}};var _Y={meta:{docs:"Disallow assignment of `any` typed values to variables - unsafe assignments bypass type checking"},check:($,J)=>{let Z=[];if(!/\.tsx?$/.test(J.filePath))return Z;let X=$.split(/\r?\n/),Y=!1;for(let z=0;z<X.length;z++){let Q=X[z],G=Q;if(Y){let M=Q.indexOf("*/");if(M>=0)Q=Q.slice(M+2),Y=!1;else continue}let q=Q.indexOf("/*"),U=Q.indexOf("//");if(q>=0&&(U===-1||q<U)){let M=Q.indexOf("*/",q+2);if(M>=0)Q=Q.slice(0,q)+Q.slice(M+2);else Y=!0,Q=Q.slice(0,q)}if(U>=0)Q=Q.slice(0,U);let W=Q.replace(/(['"`])(?:(?!\1)[^\\]|\\.)*?\1/g,'""'),K=/(\w+)\s+as\s+any/g,H;while((H=K.exec(W))!==null){let M=H[1],T=H.index,E=W.slice(T+H[0].length).trim(),j=W.slice(0,T).trim();if(/=\s*$/.test(j)&&!/==|===|!=|!==/.test(j)){let O=G.indexOf(H[0]);Z.push({filePath:J.filePath,line:z+1,column:O>=0?O+1:T+1,ruleId:"ts/no-unsafe-assignment",message:"Unsafe assignment: value cast to `any` is being assigned. This bypasses type checking.",severity:"error",help:"Avoid casting to `any` or use a more specific type"})}}let V=["JSON.parse","eval","Function","require"];for(let M of V){let T=new RegExp(`\\b${M.replace(".","\\.")}\\s*\\(`,"g");T.lastIndex=0;while((H=T.exec(W))!==null){let E=H.index,j=W.slice(0,E).trim(),O=j.match(/(?:const|let|var)\s+([\w$]+)\s*=\s*$/);if(O){let L=O[1];if(!new RegExp(`\\b${L}\\s*:\\s*\\w+`).test(W)){let b=G.indexOf(H[0]);Z.push({filePath:J.filePath,line:z+1,column:b>=0?b+1:E+1,ruleId:"ts/no-unsafe-assignment",message:`Unsafe assignment from ${M}() without type annotation. This function returns 'any'.`,severity:"error",help:`Add a type annotation to ${L} or use a type assertion with a specific type`})}}let v=j.match(/([\w$.]+)\s*=\s*$/),k=/(?:const|let|var)\s+/.test(j);if(v&&!O&&!k){let L=G.indexOf(H[0]);Z.push({filePath:J.filePath,line:z+1,column:L>=0?L+1:E+1,ruleId:"ts/no-unsafe-assignment",message:`Unsafe assignment from ${M}() which returns 'any'.`,severity:"error",help:"Consider adding a type assertion with a specific type"})}}}let A=/(?:const|let|var)\s+([\w$]+)\s*:\s*any\s*=/,_=W.match(A);if(_){let M=_[1],T=G.indexOf(_[0]);Z.push({filePath:J.filePath,line:z+1,column:T>=0?T+1:1,ruleId:"ts/no-unsafe-assignment",message:`Variable '${M}' is explicitly typed as 'any'. This defeats TypeScript's type safety.`,severity:"error",help:"Use a more specific type or `unknown` instead of `any`"})}let w=/(?:const|let|var)\s+(?:\{[^}]+\}|\[[^\]]+\])\s*=\s*([\w$]+)/,F=W.match(w);if(F){let M=F[1];if(/^(?:params|query|body|req|res|response|data|result)$/.test(M));}}return Z}};var FY={meta:{docs:"Prefer nullish coalescing operator (??) over logical OR (||) when checking for null/undefined"},check:($,J)=>{let Z=[];if(!/\.tsx?$/.test(J.filePath))return Z;let X=$.split(/\r?\n/),Y=!1;for(let z=0;z<X.length;z++){let Q=X[z],G=Q.split(""),q=G.length,U=0;if(Y){let A=Q.indexOf("*/");if(A<0)continue;for(let _=0;_<=A+1;_++)G[_]=" ";Y=!1,U=A+2}let W=null;for(;U<q;U++){let A=G[U];if(W){if(A==="\\"){if(G[U]=" ",U+1<q)G[U+1]=" ",U++;continue}if(A===W){W=null;continue}G[U]=" ";continue}if(A==="/"&&G[U+1]==="/"){for(let _=U;_<q;_++)G[_]=" ";break}if(A==="/"&&G[U+1]==="*"){let _=Q.indexOf("*/",U+2);if(_<0){for(let w=U;w<q;w++)G[w]=" ";Y=!0;break}for(let w=U;w<=_+1;w++)G[w]=" ";U=_+1;continue}if(A==='"'||A==="'"||A==="`")W=A}let K=G.join(""),H=/\|\|/g,V;while((V=H.exec(K))!==null){let A=V.index,_=A-1,w=0,F=0,M=0;while(_>=0){let L=K[_];if(L===")")w++;else if(L==="("){if(w===0){_++;break}w--}else if(L==="}")F++;else if(L==="{"){if(F===0){_++;break}F--}else if(L==="]")M++;else if(L==="["){if(M===0){_++;break}M--}else if(w===0&&F===0&&M===0){if(new RegExp("[;,=:?]").test(L)){_++;break}if(L==="&"||L==="|"){_++;break}}_--}if(_<0)_=0;let T=K.slice(_,A).trim();if(/[<>!=]/.test(T))continue;if(/\b(?:true|false)\b/.test(T))continue;let E=A+2,j=E;w=0,F=0,M=0;while(j<K.length){let L=K[j];if(L==="(")w++;else if(L===")"){if(w===0)break;w--}else if(L==="{")F++;else if(L==="}"){if(F===0)break;F--}else if(L==="[")M++;else if(L==="]"){if(M===0)break;M--}else if(w===0&&F===0&&M===0){if(new RegExp("[;,?:]").test(L))break;if(L==="&"||L==="|"&&K[j+1]==="|")break}j++}let O=K.slice(E,j).trim(),v=/^["'`\d]/.test(O)||/^\{/.test(O)||/^[\w$]+\(/.test(O)||/^[\w$.[\]]+$/.test(O),k=/^[\w$]+$/.test(T)||/^[\w$.?[\]()]+$/.test(T);if(v&&k)Z.push({filePath:J.filePath,line:z+1,column:A+1,ruleId:"ts/prefer-nullish-coalescing",message:"Prefer nullish coalescing operator (??) over logical OR (||)",severity:"error",help:'Use `??` instead of `||` to only handle null/undefined, not falsy values like 0, "", or false'})}}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=[];for(let X of J){let Y=X,z=new RegExp("(\\b[\\w$.]+)\\s*\\|\\|\\s*([^|&]+?)(?=\\s*[;,)\\]}]|$)","g");Y=Y.replace(z,(Q,G,q)=>{if(/\b(?:true|false)\b/.test(q.trim()))return Q;return`${G} ?? ${q}`}),Z.push(Y)}return Z.join(`
191
+ `)}};var wY={meta:{docs:"Prefer optional chaining (?.) over chained logical AND (&&) for property access"},check:($,J)=>{let Z=[];if(!/\.tsx?$/.test(J.filePath))return Z;let X=$.split(/\r?\n/),Y=!1;for(let z=0;z<X.length;z++){let Q=X[z],G=Q;if(Y){let _=Q.indexOf("*/");if(_>=0)Q=Q.slice(_+2),Y=!1;else continue}let q=Q.indexOf("/*"),U=Q.indexOf("//");if(q>=0&&(U===-1||q<U)){let _=Q.indexOf("*/",q+2);if(_>=0)Q=Q.slice(0,q)+Q.slice(_+2);else Y=!0,Q=Q.slice(0,q)}if(U>=0)Q=Q.slice(0,U);let W=Q.replace(/(['"`])(?:(?!\1)[^\\]|\\.)*?\1/g,'""'),K=/(\b[\w$]+)\s*&&\s*\1\.([\w$]+)/g,H;while((H=K.exec(W))!==null){let _=H[1],w=H[2],F=H.index,M=G.indexOf(H[0],Math.max(0,F-5));Z.push({filePath:J.filePath,line:z+1,column:M>=0?M+1:F+1,ruleId:"ts/prefer-optional-chain",message:`Prefer optional chaining over && for property access: ${_}?.${w}`,severity:"error",help:`Use \`${_}?.${w}\` instead of \`${_} && ${_}.${w}\``})}let V=/([\w$]+\.[\w$.]+)\s*&&\s*\1\.([\w$]+)/g;V.lastIndex=0;while((H=V.exec(W))!==null){let _=H[1],w=H[2],F=H.index,M=G.indexOf(H[0],Math.max(0,F-5));Z.push({filePath:J.filePath,line:z+1,column:M>=0?M+1:F+1,ruleId:"ts/prefer-optional-chain",message:`Prefer optional chaining over && for nested property access: ${_}?.${w}`,severity:"error",help:`Use \`${_}?.${w}\` instead of \`${_} && ${_}.${w}\``})}let A=W.split(/\s*&&\s*/);if(A.length>=3)for(let _=0;_<A.length-2;_++){let w=A[_].trim(),F=A[_+1].trim(),M=A[_+2].trim();if(F.startsWith(`${w}.`)&&M.startsWith(`${F}.`)){let T=G.indexOf(w);Z.push({filePath:J.filePath,line:z+1,column:T>=0?T+1:1,ruleId:"ts/prefer-optional-chain",message:"Prefer optional chaining over multiple && checks for nested properties",severity:"error",help:`Use optional chaining like \`${w}?.${F.slice(w.length+1)}?.${M.slice(F.length+1)}\``});break}}}return Z},fix:($)=>{let J=$.split(/\r?\n/),Z=[];for(let X of J){let Y=X;Y=Y.replace(/(\b[\w$]+)\s*&&\s*\1\.([\w$]+)/g,"$1?.$2"),Y=Y.replace(/([\w$]+\.[\w$.]+)\s*&&\s*\1\.([\w$]+)/g,"$1?.$2"),Z.push(Y)}return Z.join(`
192
+ `)}};function v2($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var BY=/([a-zA-Z_$][a-zA-Z0-9_$]*\??)\s*:\s*([A-Z][a-zA-Z0-9_$<>[\]|&]*|string|number|boolean|null|undefined|void|never|any|unknown|object|symbol|bigint)/g,MY={meta:{docs:"Require consistent spacing around type annotation colons",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G;BY.lastIndex=0;while((G=BY.exec(z))!==null){if(v2(z,G.index))continue;let q=G[0],U=q.indexOf(":"),W=G.index+U;if(U>0&&q[U-1]===" "&&!q.startsWith("?")){if(!G[1].endsWith("?")||q[U-1]===" "){if(z[W-1]===" "&&!/\?\s*$/.test(G[1]))Z.push({filePath:J.filePath,line:Y+1,column:W+1,ruleId:"ts/type-annotation-spacing",message:"Unexpected space before colon in type annotation",severity:"warning"})}}if(W+1<z.length&&z[W+1]!==" "&&z[W+1]!=="\t")Z.push({filePath:J.filePath,line:Y+1,column:W+2,ruleId:"ts/type-annotation-spacing",message:"Missing space after colon in type annotation",severity:"warning"})}}return Z},fix($){let J=$.split(/\r?\n/),Z=[];for(let X of J){let Y=X;Y=Y.replace(/([a-zA-Z_$][a-zA-Z0-9_$]*\??)\s*:\s*([A-Z][a-zA-Z0-9_$<>[\]|&]*|string|number|boolean|null|undefined|void|never|any|unknown|object|symbol|bigint)/g,"$1: $2"),Z.push(Y)}return Z.join(`
193
+ `)}};function jY($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var NY=/([A-Za-z_$][A-Za-z0-9_$]*)\s*<(\s+)/g,TY=/(\s+)>(?!=)/g,y2=/([A-Za-z_$][A-Za-z0-9_$]*)\s*<\s+/g,b2=/\s+>(?!=)/g,EY={meta:{docs:"Disallow spaces inside TypeScript generic angle brackets",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;NY.lastIndex=0;let G;while((G=NY.exec(z))!==null){let q=G.index+G[1].length,U=z.indexOf("<",q);if(U===-1)continue;if(jY(z,U))continue;Z.push({filePath:J.filePath,line:Y+1,column:U+2,ruleId:"ts/type-generic-spacing",message:"Unexpected space after '<' in generic type",severity:"warning"})}TY.lastIndex=0;while((G=TY.exec(z))!==null){let q=G.index+G[1].length;if(jY(z,q))continue;let U=z.slice(0,q);if(!/[A-Za-z_$][A-Za-z0-9_$]*\s*</.test(U))continue;Z.push({filePath:J.filePath,line:Y+1,column:q+1,ruleId:"ts/type-generic-spacing",message:"Unexpected space before '>' in generic type",severity:"warning"})}}return Z},fix($,J){let Z=$.split(/\r?\n/),X=[];for(let Y of Z){let z=Y.trim();if(!z||z.startsWith("//")||z.startsWith("*")||z.startsWith("/*")){X.push(Y);continue}let Q=Y;if(Q=Q.replace(y2,(G,q)=>{return`${q}<`}),/[A-Za-z_$][A-Za-z0-9_$]*\s*</.test(Q))Q=Q.replace(b2,">");X.push(Q)}return X.join(`
194
+ `)}};function k2($,J){let Z=$.slice(0,J);if(Z.includes("//"))return!0;let X=(Z.match(/'/g)||[]).length,Y=(Z.match(/"/g)||[]).length,z=(Z.match(/`/g)||[]).length;return X%2===1||Y%2===1||z%2===1}var DY=/([a-zA-Z_$][a-zA-Z0-9_$?]*):(\S)/g,LY={meta:{docs:"Require space after colon in named tuple members",recommended:!0},check($,J){let Z=[],X=$.split(/\r?\n/);for(let Y=0;Y<X.length;Y++){let z=X[Y],Q=z.trim();if(!Q||Q.startsWith("//")||Q.startsWith("*")||Q.startsWith("/*"))continue;let G=RY(z);for(let q of G){DY.lastIndex=0;let U;while((U=DY.exec(q.text))!==null){let K=q.start+U.index+U[1].length;if(k2(z,K))continue;if(!OY(z))continue;Z.push({filePath:J.filePath,line:Y+1,column:K+2,ruleId:"ts/type-named-tuple-spacing",message:"Missing space after colon in named tuple member",severity:"warning"})}}}return Z},fix($,J){let Z=$.split(/\r?\n/),X=[];for(let Y of Z){let z=Y.trim();if(!z||z.startsWith("//")||z.startsWith("*")||z.startsWith("/*")){X.push(Y);continue}if(!OY(Y)){X.push(Y);continue}let Q=Y,G=RY(Y);for(let q=G.length-1;q>=0;q--){let U=G[q],W=U.text.replace(/([a-zA-Z_$][a-zA-Z0-9_$?]*):(\S)/g,"$1: $2");if(W!==U.text)Q=Q.slice(0,U.start)+W+Q.slice(U.start+U.text.length)}X.push(Q)}return X.join(`
195
+ `)}};function RY($){let J=[],Z=0,X=-1;for(let Y=0;Y<$.length;Y++)if($[Y]==="["){if(Z===0)X=Y;Z++}else if($[Y]==="]"){if(Z--,Z===0&&X>=0)J.push({start:X,text:$.slice(X,Y+1)}),X=-1}return J}function OY($){let J=$.trim();return/\btype\s/.test(J)||/:\s*\[/.test(J)||/=\s*\[/.test(J)||/\bas\s/.test(J)||/<[^>]*\[/.test(J)||/\bextends\s/.test(J)||/\bimplements\s/.test(J)}var PY={name:"ts",rules:{"no-require-imports":B(HY),"no-top-level-await":B(VY),"no-ts-export-equal":B(AY),"no-explicit-any":B(UY),"prefer-nullish-coalescing":B(FY),"prefer-optional-chain":B(wY),"no-floating-promises":B(WY),"no-misused-promises":B(KY),"no-unsafe-assignment":B(_Y),"member-delimiter-style":B(qY),"type-annotation-spacing":B(MY),"type-generic-spacing":B(EY),"type-named-tuple-spacing":B(LY)}};var CY={name:"unused-imports",rules:{"no-unused-vars":B(t0),"no-unused-imports":B(t0)}};function G9(){return[LZ,kZ,xX,pX,GY,dX,PY,iJ,_5,F5,$X,aZ,VX,CY,ZX]}var q9=null;function yY(){if(!q9)q9=new J1("pickier",{showTags:!1});return q9}function N1(...$){if(y0.TRACE)yY().debug("[pickier:trace]",$)}async function SY($,J,Z){let X,Y=new Promise((z,Q)=>{X=setTimeout(()=>Q(Error(`Timeout after ${J}ms at ${Z}`)),J)});try{let z=await Promise.race([$,Y]);return clearTimeout(X),z}catch(z){throw yY().error(`[pickier:error] ${Z} failed:`,z?.message||z),N1("withTimeout error:",Z,z),z}}function bY($){if($.length===0)return"";let J=new Map;for(let X of $){let Y=J.get(X.filePath)||[];Y.push(X),J.set(X.filePath,Y)}let Z="";for(let[X,Y]of J){Z+=`
196
+ ${J0.bold(`\x1B[4m${X}\x1B[24m`)}
197
+ `;let z;try{z=vY(X,"utf8")}catch{for(let G of Y){let q=G.severity==="error"?J0.red("error"):J0.yellow("warn ");Z+=` ${G.line}:${G.column} ${q} ${G.message} ${J0.blue(G.ruleId)}
198
+ `}continue}let Q=z.split(/\r?\n/);for(let G of Y){let q=G.severity==="error"?J0.red("!"):J0.yellow("!"),U=J0.blue(G.ruleId);Z+=`
196
199
  ${q} ${U}: ${G.message}
197
- `;let W=2,K=2,H=Math.max(1,G.line-W),V=Math.min(Q.length,G.line+K),_=String(V).length;Z+=` ${Z0.gray(" ,-")}${Z0.gray(`[:${G.line}:${G.column}]`)}
198
- `;for(let F=H;F<=V;F++){let w=String(F).padStart(_),j=Q[F-1]||"";if(F===G.line)Z+=` ${Z0.gray(w)} ${Z0.gray("|")} ${Z0.red(",-> ")}${j}
199
- `;else if(F===G.line+1&&K>0)Z+=` ${Z0.gray(w)} ${Z0.gray("|")} ${Z0.red("| ")}${j}
200
- `;else if(F===G.line+K&&K>1)Z+=` ${Z0.gray(w)} ${Z0.gray("|")} ${Z0.red("`-> ")}${j}
201
- `;else Z+=` ${Z0.gray(w)} ${Z0.gray("| ")}${j}
202
- `}if(Z+=` ${Z0.gray(" `----")}
203
- `,G.help)Z+=` ${Z0.blue("help")}: ${G.help}
204
- `}}return Z}function yY($){if($.length===0)return"";let J=new Map;for(let X of $){let Y=J.get(X.filePath)||[];Y.push(X),J.set(X.filePath,Y)}let Z="";for(let[X,Y]of J){Z+=`
205
- ${Z0.bold(`\x1B[4m${X}\x1B[24m`)}
206
- `;for(let z of Y){let Q=z.severity==="error"?Z0.red("error"):Z0.yellow("warn "),q=`${z.line}:${z.column}`.padStart(6),U=60,W=z.message.padEnd(60);Z+=`${q} ${Q} ${W} ${Z0.blue(z.ruleId)}
207
- `}}return Z}async function yj($,J){j1("runFormat:start",{globs:$,options:J});let Z=await g1(J.config),X=$.length?$:["."],Y=x1(X);j1("patterns",Y);let z=new Set((J.ext||Z.format.extensions.join(",")).split(",").map((F)=>{let w=F.trim();return w.startsWith(".")?w:`.${w}`})),Q=v0.TIMEOUT_MS,q=Y.some((F)=>{let w=F.replace(/\/?\*\*(?:\/\*+)?$/,"");return!(k2(w)?w:f2(M1.cwd(),w)).startsWith(M1.cwd())})?[...Y1]:Z.ignores,U=p1(q),W=[];if(Y.length===1&&/\*\*\/\*$/.test(Y[0])){let F=Y[0].replace(/\/?\*\*\/\*$/,"");try{let{readdirSync:w,statSync:j}=await import("fs"),{join:D}=await import("path"),M=[F];while(M.length){let E=M.pop(),R=w(E);for(let S of R){let f=D(E,S),O=j(f);if(U(f))continue;if(O.isDirectory())M.push(f);else W.push(f)}}}catch{W=await CY(e0(Y,{dot:!1,ignore:q,onlyFiles:!0,absolute:!0}),Q,"glob")}}else W=await CY(e0(Y,{dot:!1,ignore:q,onlyFiles:!0,absolute:!0}),Q,"glob");j1("globbed entries",W.length);let H=W.filter((F)=>{if(U(F))return!1;let w=F.lastIndexOf(".");if(w<0)return!0;let j=F.slice(w);return z.has(j)});j1("filtered files",H.length);let V=0,A=[];for(let F of H){j1("format start",PY(M1.cwd(),F));let w=IY(F,"utf8"),j=x8(w,Z,F),D=j!==w;if(J.write){if(D)b2(F,j,"utf8")}if(D)A.push(PY(M1.cwd(),F));V++}let _=A.length;if(_>0){for(let F of A)console.log(Z0.gray(` ${F}`));console.log(J.write?Z0.gray(`Formatted ${_} of ${V} file(s).`):Z0.yellow(`${_} of ${V} file(s) need formatting. Run with --write to fix.`))}else if(J.verbose!==void 0?J.verbose:Z.verbose)console.log(Z0.gray(`Checked ${V} files, all formatted.`));return J.check&&_>0?1:0}var U9=null;function e(){if(!U9)U9=new Z1("pickier:lint",{showTags:!1});return U9}function j0(...$){if(v0.TRACE)e().error("[pickier:trace]",$)}async function oj($,J,Z="untitled",X){if(X?.aborted)throw Error("AbortError");let Y=E1($),z=D1($),Q=R1(Z,$,J,Y,z);if(X?.aborted)throw Error("AbortError");try{let G=await A9(Z,$,J);for(let q of G){if(X?.aborted)throw Error("AbortError");if(f0(q.ruleId,q.line,Y))continue;if(z.has(q.line)&&u8(q.ruleId))continue;Q.push({filePath:q.filePath,line:q.line,column:q.column,ruleId:q.ruleId,message:q.message,severity:q.severity,...q.help&&{help:q.help}})}}catch{}return Q}async function cj($,J,Z){j0("runLintProgrammatic:start",{globs:$,options:J});let X=await g1(J.config);if(Z?.aborted)throw Error("AbortError");let Y=$.length?$:["."],z=x1(Y),Q=J.ext||X.lint.extensions.join(","),G=new Set(Q.split(",").map((P)=>{let C=P.trim();return C.startsWith(".")?C:`.${C}`})),q=v0.TIMEOUT_MS,W=z.some((P)=>{let C=P.replace(/\/?\*\*\/*\*\*$/,""),I=N1(C)?C:T1(P0.cwd(),C),L=P0.cwd();return I!==L&&!I.startsWith(L+mY)})?[...Y1]:X.ignores,K=p1(W),H=[];if(z.length===1&&!/[*?[\]{}()!]/.test(z[0]))try{if(h8(z[0]).isFile())H=[N1(z[0])?z[0]:T1(P0.cwd(),z[0])]}catch{}let A=z.length===1&&/\*\*\/*\*$/.test(z[0]);if(!H.length&&A){let P=z[0].replace(/\/?\*\*\/*\*\*$/,""),C=N1(P)?P:T1(P0.cwd(),P);try{let I=[C];while(I.length){if(Z?.aborted)throw Error("AbortError");let L=I.pop(),T=pY(L);for(let k of T){let N=uY(L,k),v=h8(N);if(K(N))continue;if(v.isDirectory())I.push(N);else H.push(N)}}}catch{H=await u1(e0(z,{dot:!1,ignore:W,onlyFiles:!0,absolute:!0}),q,"glob")}}else if(!H.length)H=await u1(e0(z,{dot:!1,ignore:W,onlyFiles:!0,absolute:!0}),q,"glob");if(Z?.aborted)throw Error("AbortError");let _=0,F=0,w=0,j=0,D=0,M=[];for(let P of H){if(_++,P.replace(/\\/g,"/").includes("/node_modules/")){w++;continue}if(K(P)){j++;continue}if(!H9(P,G)){D++;continue}M.push(P),F++}j0("filter:programmatic",{total:_,included:F,node_modules:w,ignored:j,wrongExt:D});let E=v0.CONCURRENCY,f=(await oY(M,E,async(P)=>{if(Z?.aborted)throw Error("AbortError");let C=hY(P,"utf8"),I=E1(C),L=D1(C),T=R1(P,C,X,I,L);try{let k=await A9(P,C,X);for(let N of k){if(Z?.aborted)throw Error("AbortError");if(f0(N.ruleId,N.line,I))continue;if(L.has(N.line)&&u8(N.ruleId))continue;T.push({filePath:N.filePath,line:N.line,column:N.column,ruleId:N.ruleId,message:N.message,severity:N.severity,...N.help&&{help:N.help}})}}catch{}{let k=new Set;T=T.filter((N)=>{let v=`${N.line}:${N.column}:${N.ruleId}`;if(k.has(v))return!1;return k.add(v),!0})}if(J.fix){let k=/^\s*debugger\b/,N=C;if(X.rules.noDebugger==="error"||X.rules.noDebugger==="warn"){let g=N.split(/\r?\n/),x=[];for(let u of g){if(k.test(u))continue;x.push(u)}N=x.join(`
208
- `)}if(N=cY(P,N,X),N!==C){let g=E1(N),x=D1(N);if(T=R1(P,N,X,g,x),!J.dryRun)W9(P,N,"utf8")}}return T})).flat(),O=f.filter((P)=>P.severity==="error").length,h=f.filter((P)=>P.severity==="warning").length;return{errors:O,warnings:h,issues:f}}function g2($){return $.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function x2($){return $.replace(/-([a-z])/g,(J,Z)=>Z.toUpperCase())}function E1($){let J=new Map,Z=new Set,X=new Map,Y=new Map,z=$.split(/\r?\n/),Q=new Set;for(let U=0;U<z.length;U++){let W=z[U].trim(),K=U+1,H=W.match(/^\/\/\s*(?:eslint|pickier)-disable-next-line(?:\s+(\S.*))?$/);if(H){let w=H[1]?.replace(/\s+--\s.*$/,""),j=w?w.split(",").map((D)=>D.trim()).filter(Boolean):["*"];if(j.length>0){let D=K+1,M=J.get(D)||new Set;for(let E of j)M.add(E);J.set(D,M)}continue}let V=W.match(/^\/\*\s*(?:eslint|pickier)-disable(?:\s+([^*]+))?\s*\*\//);if(V){let w=V[1]?.trim().replace(/\s+--\s.*$/,"");if(!w||w==="")X.set(K,new Set(["*"])),Q.add("*");else{let j=w.split(",").map((M)=>M.trim()).filter(Boolean),D=X.get(K)||new Set;for(let M of j)D.add(M),Q.add(M);X.set(K,D)}if(U===0)if(!w||w==="")Z.add("*");else{let j=w.split(",").map((D)=>D.trim()).filter(Boolean);for(let D of j)Z.add(D)}continue}let A=W.match(/^\/\*\s*(?:eslint|pickier)-enable(?:\s+([^*]+))?\s*\*\//);if(A){let w=A[1]?.trim();if(!w||w==="")Y.set(K,new Set(["*"])),Q.clear();else{let j=w.split(",").map((M)=>M.trim()).filter(Boolean),D=Y.get(K)||new Set;for(let M of j)D.add(M),Q.delete(M);Y.set(K,D)}continue}let _=W.match(/^\/\/\s*(?:eslint|pickier)-disable(?:\s+(\S.*))?$/);if(_){let w=_[1]?.trim().replace(/\s+--\s.*$/,"");if(!w||w==="")X.set(K,new Set(["*"])),Q.add("*");else{let j=w.split(",").map((M)=>M.trim()).filter(Boolean),D=X.get(K)||new Set;for(let M of j)D.add(M),Q.add(M);X.set(K,D)}continue}let F=W.match(/^\/\/\s*(?:eslint|pickier)-enable(?:\s+(\S.*))?$/);if(F){let w=F[1]?.trim();if(!w||w==="")Y.set(K,new Set(["*"])),Q.clear();else{let j=w.split(",").map((M)=>M.trim()).filter(Boolean),D=Y.get(K)||new Set;for(let M of j)D.add(M),Q.delete(M);Y.set(K,D)}}}let G=Array.from(X.keys()).sort((U,W)=>U-W),q=Array.from(Y.keys()).sort((U,W)=>U-W);return{nextLine:J,fileLevel:Z,rangeDisable:X,rangeEnable:Y,sortedDisableLines:G,sortedEnableLines:q}}function f0($,J,Z){if(Z instanceof Map){let G=Z.get(J);if(!G||G.size===0)return!1;return h1($,G)}if(Z.fileLevel.size>0){if(h1($,Z.fileLevel))return!0}let X=Z.nextLine.get(J);if(X&&h1($,X))return!0;let Y=!1,z=0,Q=0;while(!0){let G=z<Z.sortedDisableLines.length?Z.sortedDisableLines[z]:Number.POSITIVE_INFINITY,q=Q<Z.sortedEnableLines.length?Z.sortedEnableLines[Q]:Number.POSITIVE_INFINITY,U=Math.min(G,q);if(U>=J)break;if(G===U){let K=Z.rangeDisable.get(G);if(h1($,K))Y=!0;z++;continue}let W=Z.rangeEnable.get(q);if(W.has("*")||h1($,W))Y=!1;Q++}return Y}function h1($,J){if(J.size===0)return!1;if(J.has("*"))return!0;if(J.has($))return!0;let Z=g2($);if(J.has(Z)||J.has(x2($)))return!0;for(let X of J)if(!X.includes("/")){if($.endsWith(`/${X}`))return!0}return!1}function u8($){return $!=="spaced-comment"&&!$.endsWith("/spaced-comment")}function dY($,J){if($.help)return $;let Z=J.includes("/")?J.split("/")[1]:J,X;if(Z.startsWith("no-"))X=`Remove or refactor this ${Z.replace("no-","").replace(/-/g," ")}. Check the rule documentation for more details or disable with: // eslint-disable-next-line ${J}`;else if(Z.startsWith("prefer-"))X=`Consider using ${Z.replace("prefer-","").replace(/-/g," ")} instead. This is a best practice recommendation. Disable with: // eslint-disable-next-line ${J} if needed`;else if(Z.includes("sort")||Z.includes("order"))X=`Reorder these items according to the rule requirements, or use --fix to auto-sort. Disable with: // eslint-disable-next-line ${J}`;else if(Z.includes("indent")||Z.includes("spacing")||Z.includes("newline"))X=`Fix the formatting issue. Run with --fix to automatically format. Disable with: // eslint-disable-next-line ${J}`;else X=`Fix this issue or disable the rule with: // eslint-disable-next-line ${J}. Check the rule documentation for more details`;return{...$,help:X}}async function u1($,J,Z){let X,Y=new Promise((z,Q)=>{X=setTimeout(()=>Q(Error(`Timeout after ${J}ms at ${Z}`)),J)});try{let z=await Promise.race([$,Y]);return clearTimeout(X),z}catch(z){throw e().error(`[pickier:error] ${Z} failed:`,z?.message||z),j0("withTimeout error:",Z,z),z}}async function oY($,J,Z){let X=Array($.length);if($.length===0)return X;let Y=0,z=Math.max(1,Math.min(Math.max(1,J),$.length));async function Q(){while(Y<$.length){let G=Y++;X[G]=await Z($[G],G)}}return await Promise.all(Array.from({length:z},Q)),X}var bY=new WeakMap;function p2($){let J=Q9();if($.plugins&&$.plugins.length>0){let Z=new Set(["pickier","style","regexp","ts"]),X=$.plugins.filter((z)=>typeof z!=="string");J=X.some((z)=>Z.has(z.name))?J:[];for(let z of X)J.push(z)}return J}function h2($,J){let Z={...$.pluginRules||{}};if($.rules?.noUnusedCapturingGroup)Z["regexp/no-unused-capturing-group"]=$.rules.noUnusedCapturingGroup;let X={"antfu/curly":"style/curly","antfu/if-newline":"style/if-newline","antfu/no-top-level-await":"ts/no-top-level-await"};for(let[Y,z]of Object.entries(X))if(Z[Y])Z[z]=Z[Y];for(let Y of Object.keys($.pluginRules||{}))if(!Y.includes("/")){for(let z of J)if(z.rules&&Object.prototype.hasOwnProperty.call(z.rules,Y))Z[`${z.name}/${Y}`]=$.pluginRules[Y]}return Z}function m8($){let J=bY.get($);if(J)return J;let Z=p2($),X=h2($,Z),Y=[],z=[],Q=new Set(["no-debugger"]),G=new Set(["no-debugger"]),q=new Set;for(let W of Z)for(let K in W.rules){let H=`${W.name}/${K}`,V=xY(X,H);if(!V.enabled)continue;if(q.has(K))continue;q.add(K);let A=W.rules[K],_={pluginName:W.name,ruleName:K,fullRuleId:H,rule:A,severity:V.severity,options:V.options};if(typeof A?.check==="function")Y.push(_);else if(V.severity==="error")Y.push(_);if(typeof A?.fix==="function")z.push(_),Q.add(H),G.add(K)}let U={checkRules:Y,fixRules:z,fixableRuleIds:Q,fixableBareRuleNames:G};return bY.set($,U),U}function u2($,J){return/\.(?:sh|bash|zsh|ksh|dash)$/.test($)||/^#!\s*(?:\/usr\/bin\/env\s+)?(?:ba|z|k|da)?sh\b/.test(J)}function m2($){return/(?:^|[/\\])(?:bun\.lock|bun\.lockb|package-lock\.json|pnpm-lock\.yaml|yarn\.lock|npm-shrinkwrap\.json)$/.test($)}function V9($,J,Z){switch($.pluginName){case"markdown":return J.endsWith(".md");case"shell":return u2(J,Z);case"publint":return/(?:^|[/\\])package\.json$/.test(J);case"lockfile":return m2(J);case"node":case"ts":case"general":case"quality":case"eslint":case"regexp":case"unused-imports":case"perfectionist":return/\.(?:ts|js|tsx|jsx|mts|mjs|cts|cjs)$/.test(J);default:return!0}}async function A9($,J,Z){let X=[],Y=m8(Z),z={filePath:$,config:Z};for(let Q of Y.checkRules){if(!V9(Q,$,J))continue;let{fullRuleId:G,rule:q,severity:U}=Q;if(!q||typeof q.check!=="function"){if(U==="error")X.push({filePath:$,line:1,column:1,ruleId:`${G}-internal`,message:"Rule missing implementation (check function is undefined)",severity:"error"});continue}try{j0("rule:start",G);let W=v0.RULE_TIMEOUT_MS,K={...z,options:Q.options},H=performance.now(),V=await u1(Promise.resolve().then(()=>q.check(J,K)),W,`rule:${G}`),A=performance.now()-H;if(A>W)X.push({filePath:$,line:1,column:1,ruleId:`${G}-internal`,message:`Rule exceeded timeout budget: ${Math.round(A)}ms > ${W}ms`,severity:"error"});j0("rule:end",G,Array.isArray(V)?V.length:0);for(let _ of V){let F=dY(_,G);if(U)X.push({...F,severity:U});else X.push(F)}}catch(W){X.push({filePath:$,line:1,column:1,ruleId:`${G}-internal`,message:`Rule threw: ${W?.message||W}`,severity:"error"})}}return X}var d2=/\.(?:[cm]?[jt]sx?|vue|svelte|stx)$/i;function o2($,J,Z){if(!d2.test(Z)||!$.includes("`"))return J;let X=$.split(/\r?\n/),Y=J.split(/\r?\n/);if(X.length!==Y.length)return J;let z=t0($),Q=0;for(let G=0;G<Y.length;G++)if(z[G]&&Y[G]!==X[G])Y[G]=X[G],Q++;return Q>0?Y.join(`
209
- `):J}function cY($,J,Z){let X=m8(Z),Y={filePath:$,config:Z},z=J,Q=!0,G=0;while(Q&&G++<q9){Q=!1;for(let q of X.fixRules){if(!V9(q,$,z))continue;let U={...Y,options:q.options},W=q.rule.fix(z,U),K=q.rule.meta?.editsStringContent?W:o2(z,W,$);if(K!==z)z=K,Q=!0}}return z}function c2($,J){let Z=J.format.indent,X=J.format.indentStyle,Y=$.split(/\r?\n/),z=!1;for(let Q=0;Q<Y.length;Q++){let G=Y[Q],q=0;while(q<G.length&&(G.charCodeAt(q)===32||G.charCodeAt(q)===9))q++;if(q===0)continue;let U=G.slice(0,q);if(!K9(U,Z,X,G))continue;let W;if(X==="tabs"){let K=0,H=0;for(let A=0;A<U.length;A++)if(U.charCodeAt(A)===9)H++;else K++;let V=Math.floor(K/Z);W="\t".repeat(H+V)}else{let K=0;for(let V=0;V<U.length;V++)if(U.charCodeAt(V)===9)K+=Z;else K++;let H=Math.floor(K/Z)*Z;W=" ".repeat(H)}if(W!==U)Y[Q]=W+G.slice(q),z=!0}return z?Y.join(`
210
- `):$}function kY($){let J="",Z=0;while(Z<$.length){if($[Z]==="/"&&Z>0){let X=$.slice(0,Z).trimEnd();if(/[=([{,:!&|?]$/.test(X)||/;$/.test(X)||X.endsWith("return")){Z++;while(Z<$.length){if($[Z]==="\\"){Z+=2;continue}if($[Z]==="/"){Z++;while(Z<$.length&&/[gimsuvy]/.test($[Z]))Z++;break}Z++}continue}}J+=$[Z],Z++}return J}function r2($,J,Z){if($==="")return!0;if("([{,:;!?&|=<>~^+*%-".includes($))return!0;if(/[A-Za-z_$]/.test($)){let Y=J.slice(0,Z).trimEnd();if(/(?:^|[^A-Za-z0-9_$])(?:return|typeof|instanceof|new|delete|void|in|of|yield|await|throw|case)$/.test(Y))return!0}return!1}function fY($){let J="",Z=0,X=null,Y=!1;while(Z<$.length){let z=$[Z],Q=$[Z+1];if(Y){J+=z,Y=!1,Z++;continue}if(z==="\\"&&X){Y=!0,J+=z,Z++;continue}if(!X){if(z==='"'){X="double",J+=z,Z++;continue}if(z==="'"){X="single",J+=z,Z++;continue}if(z==="`"){X="template",J+=z,Z++;continue}if(z==="/"&&Q==="/")break;if(z==="/"&&Q==="*"){Z+=2;while(Z<$.length){if($[Z]==="*"&&$[Z+1]==="/"){Z+=2;break}Z++}J+=" ";continue}J+=z,Z++}else{if(X==="double"&&z==='"'||X==="single"&&z==="'"||X==="template"&&z==="`")X=null;J+=z,Z++}}return J}function D1($){let J=new Set,Z="code",X=1,Y=!1,z=!1,Q=!1,G=[];for(let q=0;q<$.length;q++){let U=$[q],W=$[q+1],K=q>0?$[q-1]:"";if(U===`
200
+ `;let W=2,K=2,H=Math.max(1,G.line-W),V=Math.min(Q.length,G.line+K),_=String(V).length;Z+=` ${J0.gray(" ,-")}${J0.gray(`[:${G.line}:${G.column}]`)}
201
+ `;for(let w=H;w<=V;w++){let F=String(w).padStart(_),M=Q[w-1]||"";if(w===G.line)Z+=` ${J0.gray(F)} ${J0.gray("|")} ${J0.red(",-> ")}${M}
202
+ `;else if(w===G.line+1&&K>0)Z+=` ${J0.gray(F)} ${J0.gray("|")} ${J0.red("| ")}${M}
203
+ `;else if(w===G.line+K&&K>1)Z+=` ${J0.gray(F)} ${J0.gray("|")} ${J0.red("`-> ")}${M}
204
+ `;else Z+=` ${J0.gray(F)} ${J0.gray("| ")}${M}
205
+ `}if(Z+=` ${J0.gray(" `----")}
206
+ `,G.help)Z+=` ${J0.blue("help")}: ${G.help}
207
+ `}}return Z}function kY($){if($.length===0)return"";let J=new Map;for(let X of $){let Y=J.get(X.filePath)||[];Y.push(X),J.set(X.filePath,Y)}let Z="";for(let[X,Y]of J){Z+=`
208
+ ${J0.bold(`\x1B[4m${X}\x1B[24m`)}
209
+ `;for(let z of Y){let Q=z.severity==="error"?J0.red("error"):J0.yellow("warn "),q=`${z.line}:${z.column}`.padStart(6),U=60,W=z.message.padEnd(60);Z+=`${q} ${Q} ${W} ${J0.blue(z.ruleId)}
210
+ `}}return Z}async function kj($,J){N1("runFormat:start",{globs:$,options:J});let Z=await p1(J.config),X=$.length?$:["."],Y=x1(X);N1("patterns",Y);let z=new Set((J.ext||Z.format.extensions.join(",")).split(",").map((w)=>{let F=w.trim();return F.startsWith(".")?F:`.${F}`})),Q=y0.TIMEOUT_MS,q=Y.some((w)=>{let F=w.replace(/\/?\*\*(?:\/\*+)?$/,"");return!(g2(F)?F:p2(j1.cwd(),F)).startsWith(j1.cwd())})?[...z1]:Z.ignores,U=h1(q),W=[];if(Y.length===1&&/\*\*\/\*$/.test(Y[0])){let w=Y[0].replace(/\/?\*\*\/\*$/,"");try{let{readdirSync:F,statSync:M}=await import("fs"),{join:T}=await import("path"),E=[w];while(E.length){let j=E.pop(),O=F(j);for(let v of O){let k=T(j,v),L=M(k);if(U(k))continue;if(L.isDirectory())E.push(k);else W.push(k)}}}catch{W=await SY($1(Y,{dot:!1,ignore:q,onlyFiles:!0,absolute:!0}),Q,"glob")}}else W=await SY($1(Y,{dot:!1,ignore:q,onlyFiles:!0,absolute:!0}),Q,"glob");N1("globbed entries",W.length);let H=W.filter((w)=>{if(U(w))return!1;let F=w.lastIndexOf(".");if(F<0)return!0;let M=w.slice(F);return z.has(M)});N1("filtered files",H.length);let V=0,A=[];for(let w of H){N1("format start",IY(j1.cwd(),w));let F=vY(w,"utf8"),M=x8(F,Z,w),T=M!==F;if(J.write){if(T)f2(w,M,"utf8")}if(T)A.push(IY(j1.cwd(),w));V++}let _=A.length;if(_>0){for(let w of A)console.log(J0.gray(` ${w}`));console.log(J.write?J0.gray(`Formatted ${_} of ${V} file(s).`):J0.yellow(`${_} of ${V} file(s) need formatting. Run with --write to fix.`))}else if(J.verbose!==void 0?J.verbose:Z.verbose)console.log(J0.gray(`Checked ${V} files, all formatted.`));return J.check&&_>0?1:0}var W9=null;function e(){if(!W9)W9=new J1("pickier:lint",{showTags:!1});return W9}function N0(...$){if(y0.TRACE)e().error("[pickier:trace]",$)}async function rj($,J,Z="untitled",X){if(X?.aborted)throw Error("AbortError");let Y=D1($),z=R1($),Q=O1(Z,$,J,Y,z);if(X?.aborted)throw Error("AbortError");try{let G=await _9(Z,$,J);for(let q of G){if(X?.aborted)throw Error("AbortError");if(g0(q.ruleId,q.line,Y))continue;if(z.has(q.line)&&m8(q.ruleId))continue;Q.push({filePath:q.filePath,line:q.line,column:q.column,ruleId:q.ruleId,message:q.message,severity:q.severity,...q.help&&{help:q.help}})}}catch{}return Q}async function lj($,J,Z){N0("runLintProgrammatic:start",{globs:$,options:J});let X=await p1(J.config);if(Z?.aborted)throw Error("AbortError");let Y=$.length?$:["."],z=x1(Y),Q=J.ext||X.lint.extensions.join(","),G=new Set(Q.split(",").map((b)=>{let P=b.trim();return P.startsWith(".")?P:`.${P}`})),q=y0.TIMEOUT_MS,W=z.some((b)=>{let P=b.replace(/\/?\*\*\/*\*\*$/,""),I=T1(P)?P:E1(C0.cwd(),P),S=C0.cwd();return I!==S&&!I.startsWith(S+oY)})?[...z1]:X.ignores,K=h1(W),H=[];if(z.length===1&&!/[*?[\]{}()!]/.test(z[0]))try{if(u8(z[0]).isFile())H=[T1(z[0])?z[0]:E1(C0.cwd(),z[0])]}catch{}let A=z.length===1&&/\*\*\/*\*$/.test(z[0]);if(!H.length&&A){let b=z[0].replace(/\/?\*\*\/*\*\*$/,""),P=T1(b)?b:E1(C0.cwd(),b);try{let I=[P];while(I.length){if(Z?.aborted)throw Error("AbortError");let S=I.pop(),C=uY(S);for(let N of C){let R=dY(S,N),D=u8(R);if(K(R))continue;if(D.isDirectory())I.push(R);else H.push(R)}}}catch{H=await m1($1(z,{dot:!1,ignore:W,onlyFiles:!0,absolute:!0}),q,"glob")}}else if(!H.length)H=await m1($1(z,{dot:!1,ignore:W,onlyFiles:!0,absolute:!0}),q,"glob");if(Z?.aborted)throw Error("AbortError");let _=0,w=0,F=0,M=0,T=0,E=[];for(let b of H){if(_++,b.replace(/\\/g,"/").includes("/node_modules/")){F++;continue}if(K(b)){M++;continue}if(!V9(b,G)){T++;continue}E.push(b),w++}N0("filter:programmatic",{total:_,included:w,node_modules:F,ignored:M,wrongExt:T});let j=y0.CONCURRENCY,k=(await rY(E,j,async(b)=>{if(Z?.aborted)throw Error("AbortError");let P=mY(b,"utf8"),I=D1(P),S=R1(P),C=O1(b,P,X,I,S);try{let N=await _9(b,P,X);for(let R of N){if(Z?.aborted)throw Error("AbortError");if(g0(R.ruleId,R.line,I))continue;if(S.has(R.line)&&m8(R.ruleId))continue;C.push({filePath:R.filePath,line:R.line,column:R.column,ruleId:R.ruleId,message:R.message,severity:R.severity,...R.help&&{help:R.help}})}}catch{}{let N=new Set;C=C.filter((R)=>{let D=`${R.line}:${R.column}:${R.ruleId}`;if(N.has(D))return!1;return N.add(D),!0})}if(J.fix){let N=/^\s*debugger\b/,R=P;if(X.rules.noDebugger==="error"||X.rules.noDebugger==="warn"){let f=R.split(/\r?\n/),p=[];for(let d of f){if(N.test(d))continue;p.push(d)}R=p.join(`
211
+ `)}if(R=lY(b,R,X),R!==P){let f=D1(R),p=R1(R);if(C=O1(b,R,X,f,p),!J.dryRun)K9(b,R,"utf8")}}return C})).flat(),L=k.filter((b)=>b.severity==="error").length,h=k.filter((b)=>b.severity==="warning").length;return{errors:L,warnings:h,issues:k}}function x2($){return $.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function h2($){return $.replace(/-([a-z])/g,(J,Z)=>Z.toUpperCase())}function D1($){let J=new Map,Z=new Set,X=new Map,Y=new Map,z=$.split(/\r?\n/),Q=new Set;for(let U=0;U<z.length;U++){let W=z[U].trim(),K=U+1,H=W.match(/^\/\/\s*(?:eslint|pickier)-disable-next-line(?:\s+(\S.*))?$/);if(H){let F=H[1]?.replace(/\s+--\s.*$/,""),M=F?F.split(",").map((T)=>T.trim()).filter(Boolean):["*"];if(M.length>0){let T=K+1,E=J.get(T)||new Set;for(let j of M)E.add(j);J.set(T,E)}continue}let V=W.match(/^\/\*\s*(?:eslint|pickier)-disable(?:\s+([^*]+))?\s*\*\//);if(V){let F=V[1]?.trim().replace(/\s+--\s.*$/,"");if(!F||F==="")X.set(K,new Set(["*"])),Q.add("*");else{let M=F.split(",").map((E)=>E.trim()).filter(Boolean),T=X.get(K)||new Set;for(let E of M)T.add(E),Q.add(E);X.set(K,T)}if(U===0)if(!F||F==="")Z.add("*");else{let M=F.split(",").map((T)=>T.trim()).filter(Boolean);for(let T of M)Z.add(T)}continue}let A=W.match(/^\/\*\s*(?:eslint|pickier)-enable(?:\s+([^*]+))?\s*\*\//);if(A){let F=A[1]?.trim();if(!F||F==="")Y.set(K,new Set(["*"])),Q.clear();else{let M=F.split(",").map((E)=>E.trim()).filter(Boolean),T=Y.get(K)||new Set;for(let E of M)T.add(E),Q.delete(E);Y.set(K,T)}continue}let _=W.match(/^\/\/\s*(?:eslint|pickier)-disable(?:\s+(\S.*))?$/);if(_){let F=_[1]?.trim().replace(/\s+--\s.*$/,"");if(!F||F==="")X.set(K,new Set(["*"])),Q.add("*");else{let M=F.split(",").map((E)=>E.trim()).filter(Boolean),T=X.get(K)||new Set;for(let E of M)T.add(E),Q.add(E);X.set(K,T)}continue}let w=W.match(/^\/\/\s*(?:eslint|pickier)-enable(?:\s+(\S.*))?$/);if(w){let F=w[1]?.trim();if(!F||F==="")Y.set(K,new Set(["*"])),Q.clear();else{let M=F.split(",").map((E)=>E.trim()).filter(Boolean),T=Y.get(K)||new Set;for(let E of M)T.add(E),Q.delete(E);Y.set(K,T)}}}let G=Array.from(X.keys()).sort((U,W)=>U-W),q=Array.from(Y.keys()).sort((U,W)=>U-W);return{nextLine:J,fileLevel:Z,rangeDisable:X,rangeEnable:Y,sortedDisableLines:G,sortedEnableLines:q}}function g0($,J,Z){if(Z instanceof Map){let G=Z.get(J);if(!G||G.size===0)return!1;return u1($,G)}if(Z.fileLevel.size>0){if(u1($,Z.fileLevel))return!0}let X=Z.nextLine.get(J);if(X&&u1($,X))return!0;let Y=!1,z=0,Q=0;while(!0){let G=z<Z.sortedDisableLines.length?Z.sortedDisableLines[z]:Number.POSITIVE_INFINITY,q=Q<Z.sortedEnableLines.length?Z.sortedEnableLines[Q]:Number.POSITIVE_INFINITY,U=Math.min(G,q);if(U>=J)break;if(G===U){let K=Z.rangeDisable.get(G);if(u1($,K))Y=!0;z++;continue}let W=Z.rangeEnable.get(q);if(W.has("*")||u1($,W))Y=!1;Q++}return Y}function u1($,J){if(J.size===0)return!1;if(J.has("*"))return!0;if(J.has($))return!0;let Z=x2($);if(J.has(Z)||J.has(h2($)))return!0;for(let X of J)if(!X.includes("/")){if($.endsWith(`/${X}`))return!0}return!1}function m8($){return $!=="spaced-comment"&&!$.endsWith("/spaced-comment")}function cY($,J){if($.help)return $;let Z=J.includes("/")?J.split("/")[1]:J,X;if(Z.startsWith("no-"))X=`Remove or refactor this ${Z.replace("no-","").replace(/-/g," ")}. Check the rule documentation for more details or disable with: // eslint-disable-next-line ${J}`;else if(Z.startsWith("prefer-"))X=`Consider using ${Z.replace("prefer-","").replace(/-/g," ")} instead. This is a best practice recommendation. Disable with: // eslint-disable-next-line ${J} if needed`;else if(Z.includes("sort")||Z.includes("order"))X=`Reorder these items according to the rule requirements, or use --fix to auto-sort. Disable with: // eslint-disable-next-line ${J}`;else if(Z.includes("indent")||Z.includes("spacing")||Z.includes("newline"))X=`Fix the formatting issue. Run with --fix to automatically format. Disable with: // eslint-disable-next-line ${J}`;else X=`Fix this issue or disable the rule with: // eslint-disable-next-line ${J}. Check the rule documentation for more details`;return{...$,help:X}}async function m1($,J,Z){let X,Y=new Promise((z,Q)=>{X=setTimeout(()=>Q(Error(`Timeout after ${J}ms at ${Z}`)),J)});try{let z=await Promise.race([$,Y]);return clearTimeout(X),z}catch(z){throw e().error(`[pickier:error] ${Z} failed:`,z?.message||z),N0("withTimeout error:",Z,z),z}}async function rY($,J,Z){let X=Array($.length);if($.length===0)return X;let Y=0,z=Math.max(1,Math.min(Math.max(1,J),$.length));async function Q(){while(Y<$.length){let G=Y++;X[G]=await Z($[G],G)}}return await Promise.all(Array.from({length:z},Q)),X}var fY=new WeakMap;function u2($){let J=G9();if($.plugins&&$.plugins.length>0){let Z=new Set(["pickier","style","regexp","ts"]),X=$.plugins.filter((z)=>typeof z!=="string");J=X.some((z)=>Z.has(z.name))?J:[];for(let z of X)J.push(z)}return J}function m2($,J){let Z={...$.pluginRules||{}};if($.rules?.noUnusedCapturingGroup)Z["regexp/no-unused-capturing-group"]=$.rules.noUnusedCapturingGroup;let X={"antfu/curly":"style/curly","antfu/if-newline":"style/if-newline","antfu/no-top-level-await":"ts/no-top-level-await"};for(let[Y,z]of Object.entries(X))if(Z[Y])Z[z]=Z[Y];for(let Y of Object.keys($.pluginRules||{}))if(!Y.includes("/")){for(let z of J)if(z.rules&&Object.prototype.hasOwnProperty.call(z.rules,Y))Z[`${z.name}/${Y}`]=$.pluginRules[Y]}return Z}function d8($){let J=fY.get($);if(J)return J;let Z=u2($),X=m2($,Z),Y=[],z=[],Q=new Set(["no-debugger"]),G=new Set(["no-debugger"]),q=new Set;for(let W of Z)for(let K in W.rules){let H=`${W.name}/${K}`,V=hY(X,H);if(!V.enabled)continue;if(q.has(K))continue;q.add(K);let A=W.rules[K],_={pluginName:W.name,ruleName:K,fullRuleId:H,rule:A,severity:V.severity,options:V.options};if(typeof A?.check==="function")Y.push(_);else if(V.severity==="error")Y.push(_);if(typeof A?.fix==="function")z.push(_),Q.add(H),G.add(K)}let U={checkRules:Y,fixRules:z,fixableRuleIds:Q,fixableBareRuleNames:G};return fY.set($,U),U}function d2($,J){return/\.(?:sh|bash|zsh|ksh|dash)$/.test($)||/^#!\s*(?:\/usr\/bin\/env\s+)?(?:ba|z|k|da)?sh\b/.test(J)}function o2($){return/(?:^|[/\\])(?:bun\.lock|bun\.lockb|package-lock\.json|pnpm-lock\.yaml|yarn\.lock|npm-shrinkwrap\.json)$/.test($)}function A9($,J,Z){switch($.pluginName){case"markdown":return J.endsWith(".md");case"shell":return d2(J,Z);case"publint":return/(?:^|[/\\])package\.json$/.test(J);case"lockfile":return o2(J);case"node":case"ts":case"general":case"quality":case"eslint":case"regexp":case"unused-imports":case"perfectionist":return/\.(?:ts|js|tsx|jsx|mts|mjs|cts|cjs)$/.test(J);default:return!0}}async function _9($,J,Z){let X=[],Y=d8(Z),z={filePath:$,config:Z};for(let Q of Y.checkRules){if(!A9(Q,$,J))continue;let{fullRuleId:G,rule:q,severity:U}=Q;if(!q||typeof q.check!=="function"){if(U==="error")X.push({filePath:$,line:1,column:1,ruleId:`${G}-internal`,message:"Rule missing implementation (check function is undefined)",severity:"error"});continue}try{N0("rule:start",G);let W=y0.RULE_TIMEOUT_MS,K={...z,options:Q.options},H=performance.now(),V=await m1(Promise.resolve().then(()=>q.check(J,K)),W,`rule:${G}`),A=performance.now()-H;if(A>W)X.push({filePath:$,line:1,column:1,ruleId:`${G}-internal`,message:`Rule exceeded timeout budget: ${Math.round(A)}ms > ${W}ms`,severity:"error"});N0("rule:end",G,Array.isArray(V)?V.length:0);for(let _ of V){let w=cY(_,G);if(U)X.push({...w,severity:U});else X.push(w)}}catch(W){X.push({filePath:$,line:1,column:1,ruleId:`${G}-internal`,message:`Rule threw: ${W?.message||W}`,severity:"error"})}}return X}var c2=/\.(?:[cm]?[jt]sx?|vue|svelte|stx)$/i;function r2($,J,Z){if(!c2.test(Z)||!$.includes("`"))return J;let X=$.split(/\r?\n/),Y=J.split(/\r?\n/);if(X.length!==Y.length)return J;let z=e0($),Q=0;for(let G=0;G<Y.length;G++)if(z[G]&&Y[G]!==X[G])Y[G]=X[G],Q++;return Q>0?Y.join(`
212
+ `):J}function lY($,J,Z){let X=d8(Z),Y={filePath:$,config:Z},z=J,Q=!0,G=0;while(Q&&G++<U9){Q=!1;for(let q of X.fixRules){if(!A9(q,$,z))continue;let U={...Y,options:q.options},W=q.rule.fix(z,U),K=q.rule.meta?.editsStringContent?W:r2(z,W,$);if(K!==z)z=K,Q=!0}}return z}function l2($,J){let Z=J.format.indent,X=J.format.indentStyle,Y=$.split(/\r?\n/),z=!1;for(let Q=0;Q<Y.length;Q++){let G=Y[Q],q=0;while(q<G.length&&(G.charCodeAt(q)===32||G.charCodeAt(q)===9))q++;if(q===0)continue;let U=G.slice(0,q);if(!H9(U,Z,X,G))continue;let W;if(X==="tabs"){let K=0,H=0;for(let A=0;A<U.length;A++)if(U.charCodeAt(A)===9)H++;else K++;let V=Math.floor(K/Z);W="\t".repeat(H+V)}else{let K=0;for(let V=0;V<U.length;V++)if(U.charCodeAt(V)===9)K+=Z;else K++;let H=Math.floor(K/Z)*Z;W=" ".repeat(H)}if(W!==U)Y[Q]=W+G.slice(q),z=!0}return z?Y.join(`
213
+ `):$}function gY($){let J="",Z=0;while(Z<$.length){if($[Z]==="/"&&Z>0){let X=$.slice(0,Z).trimEnd();if(/[=([{,:!&|?]$/.test(X)||/;$/.test(X)||X.endsWith("return")){Z++;while(Z<$.length){if($[Z]==="\\"){Z+=2;continue}if($[Z]==="/"){Z++;while(Z<$.length&&/[gimsuvy]/.test($[Z]))Z++;break}Z++}continue}}J+=$[Z],Z++}return J}function a2($,J,Z){if($==="")return!0;if("([{,:;!?&|=<>~^+*%-".includes($))return!0;if(/[A-Za-z_$]/.test($)){let Y=J.slice(0,Z).trimEnd();if(/(?:^|[^A-Za-z0-9_$])(?:return|typeof|instanceof|new|delete|void|in|of|yield|await|throw|case)$/.test(Y))return!0}return!1}function pY($){let J="",Z=0,X=null,Y=!1;while(Z<$.length){let z=$[Z],Q=$[Z+1];if(Y){J+=z,Y=!1,Z++;continue}if(z==="\\"&&X){Y=!0,J+=z,Z++;continue}if(!X){if(z==='"'){X="double",J+=z,Z++;continue}if(z==="'"){X="single",J+=z,Z++;continue}if(z==="`"){X="template",J+=z,Z++;continue}if(z==="/"&&Q==="/")break;if(z==="/"&&Q==="*"){Z+=2;while(Z<$.length){if($[Z]==="*"&&$[Z+1]==="/"){Z+=2;break}Z++}J+=" ";continue}J+=z,Z++}else{if(X==="double"&&z==='"'||X==="single"&&z==="'"||X==="template"&&z==="`")X=null;J+=z,Z++}}return J}function R1($){let J=new Set,Z="code",X=1,Y=!1,z=!1,Q=!1,G=[];for(let q=0;q<$.length;q++){let U=$[q],W=$[q+1],K=q>0?$[q-1]:"";if(U===`
211
214
  `){if(Q&&Z==="block-comment")J.add(X);else if(!Y&&z&&Z!=="block-comment")J.add(X);else if(!Y&&Z==="block-comment")J.add(X);if(X++,Y=!1,z=!1,Q=Z==="block-comment",Z==="line-comment")Z="code";continue}switch(Z){case"code":if(U==="/"&&W==="/")Z="line-comment",z=!0,q++;else if(U==="/"&&W==="*"){let H=!1;if(q>0){let V=q-1;while(V>0&&($[V]===" "||$[V]==="\t"))V--;let A=$[V];if("=([{,;!&|?:~^%+-".includes(A)&&A!==`
212
215
  `)H=!0;else if(/[a-z]/.test(A)){let _=$.slice(Math.max(0,V-6),V+1);if(/\b(?:return|case|typeof|void|in|of|new|throw|delete)$/.test(_))H=!0}}if(H){Y=!0,q++;while(q<$.length){if($[q]==="\\"){q+=2;continue}if($[q]==="/"){q++;break}if($[q]===`
213
216
  `)break;q++}while(q<$.length&&/[gimsuy]/.test($[q]))q++;q--}else z=!0,Z="block-comment",q++}else if(U==="/"&&W!==void 0){let H=!1;if(q>0){let V=q-1;while(V>0&&($[V]===" "||$[V]==="\t"))V--;let A=$[V];if("=([{,;!&|?:~^%+-".includes(A)||A===`
214
217
  `)H=!0;else if(/[a-z]/.test(A)){let _=$.slice(Math.max(0,V-6),V+1);if(/\b(?:return|case|typeof|void|in|of|new|throw|delete)$/.test(_))H=!0}}if(H){Y=!0,q++;while(q<$.length){if($[q]==="\\"){q+=2;continue}if($[q]==="/"){q++;break}if($[q]===`
215
- `)break;q++}while(q<$.length&&/[gimsuy]/.test($[q]))q++;q--}else Y=!0}else if(U==="'")Z="string-single",Y=!0;else if(U==='"')Z="string-double",Y=!0;else if(U==="`")Z="string-template",Y=!0;else if(U==="{"){if(G.length)G[G.length-1]++;Y=!0}else if(U==="}"){if(G.length)if(G[G.length-1]===0)G.pop(),Z="string-template";else G[G.length-1]--;Y=!0}else if(!/\s/.test(U))Y=!0;break;case"string-single":if(U==="\\"){q++;break}if(U==="'")Z="code";break;case"string-double":if(U==="\\"){q++;break}if(U==='"')Z="code";break;case"string-template":if(U==="\\"){q++;break}if(U==="$"&&W==="{"){G.push(0),Z="code",q++;break}if(U==="`")Z="code";break;case"line-comment":break;case"block-comment":if(U==="*"&&W==="/")Z="code",q++;break}}if(Q&&Z==="block-comment")J.add(X);else if(!Y&&z&&Z!=="block-comment")J.add(X);else if(!Y&&Z==="block-comment")J.add(X);return J}function R1($,J,Z,X,Y){let z=[],Q=J.split(/\r?\n/),G=Z.format.quotes,q=$.split(".").pop()?.toLowerCase()??"",U=q==="md",W=q==="sh"||q==="bash"||q==="zsh"||q==="ksh"||q==="dash"||/^#!\s*(?:\/usr\/bin\/env\s+)?(?:ba|z|k|da)?sh\b/.test(J),V=(Z.rules?.quotes??Z.pluginRules?.quotes??Z.pluginRules?.["style/quotes"])==="off"||q==="json"||q==="jsonc"||q==="lock"||U||q==="yaml"||q==="yml"||q==="stx"||q==="html"||q==="htm"||q==="vue"||W||$.endsWith("bun.lock"),A=U||q==="yaml"||q==="yml"||q==="json"||q==="jsonc"||W,j=(Z.rules?.indent??Z.pluginRules?.indent??Z.pluginRules?.["style/indent"])!=="off"&&!U&&!(q==="stx"||q==="html"||q==="htm"||q==="vue"),D=!1,M=(I)=>I==="warn"?"warning":I==="error"?"error":void 0,E=M(Z.rules.noDebugger),R=M(Z.rules.noConsole),S=M(Z.rules.noTemplateCurlyInString),f=M(Z.rules.noCondAssign),O=/\bconsole\.log\s*\(/,h=/^\s*debugger\b/,P=new Set;if(q==="md"){let I=!1;for(let L=0;L<Q.length;L++){if(/^(?:`{3,}|~{3,})/.test(Q[L].trim())){I=!I;continue}if(I)P.add(L+1)}}let C=new Set;if(J.includes("`")){let I=!1,L=!1,T=1;for(let k=0;k<J.length;k++){let N=J[k];if(L){if(L=!1,N===`
216
- `)T++;continue}if(N==="\\"){L=!0;continue}if(N===`
217
- `){T++;continue}if(N==="`"){I=!I;continue}if(I)C.add(T)}}for(let I=0;I<Q.length;I++){let L=Q[I],T=I+1;if(Y.has(T))continue;if(!V&&!C.has(T)){let v=fY(kY(L)),g=gY(v,G);if(g.length>0&&!D){if(!f0("quotes",T,X))z.push({filePath:$,line:T,column:(g[0]||0)+1,ruleId:"quotes",message:"Inconsistent quote style",severity:"warning",help:`Use ${G} quotes consistently throughout your code. You can change the preferred quote style in your config with format.quotes: '${G==="single"?"double":"single"}'`});D=!0}}let k=0;while(k<L.length&&(L.charCodeAt(k)===32||L.charCodeAt(k)===9))k++;let N=k>0?L.slice(0,k):"";if(j&&N.length>0&&!P.has(T)&&K9(N,Z.format.indent,Z.format.indentStyle,L)){if(!f0("indent",T,X))z.push({filePath:$,line:T,column:1,ruleId:"indent",message:"Incorrect indentation detected",severity:"warning",help:`Use ${Z.format.indentStyle==="spaces"?`${Z.format.indent} spaces`:"tabs"} for indentation. Configure with format.indent and format.indentStyle in your config`})}if(!A&&E&&h.test(L)){if(!f0("no-debugger",T,X))z.push({filePath:$,line:T,column:1,ruleId:"no-debugger",message:"Unexpected debugger statement",severity:E,help:"Remove debugger statements before committing code. Use breakpoints in your IDE instead, or run with --fix to auto-remove"})}if(!A&&R&&!C.has(T)&&O.test(L)){let v=L.indexOf("//"),g=L.indexOf("console.");if(v!==-1&&g>v);else{let x=null;for(let u=0;u<L.length;u++){let d=L[u];if(!x){if(d==='"')x="double";else if(d==="'")x="single";else if(d==="`")x="template";else if(L.slice(u).startsWith("console.")){let p=u+1;if(!f0("no-console",T,X))z.push({filePath:$,line:T,column:p,ruleId:"no-console",message:"Unexpected console call",severity:R,help:"Remove console statements before committing. Use a proper logging library or disable this rule if console output is intentional"});break}}else if(x==="double"&&d==='"'||x==="single"&&d==="'"||x==="template"&&d==="`"){let p=0;for(let y=u-1;y>=0&&L[y]==="\\";y--)p++;if(p%2===0)x=null}}}}if(S&&!C.has(T)){let v=L,g=null,x=!1,u=!1,d="",p="";for(let y=0;y<v.length;y++){let b=v[y];if(x){if(p==="\\"){p=b;continue}if(u){if(b==="]")u=!1}else if(b==="[")u=!0;else if(b==="/"){x=!1;while(y+1<v.length&&/[a-z]/i.test(v[y+1]))y++;d="/"}p=b;continue}if(!g){if(b==='"'){g="double",p=b;continue}if(b==="'"){g="single",p=b;continue}if(b==="`"){g="template",p=b;continue}if(b==="/"&&v[y+1]!=="/"&&v[y+1]!=="*"&&r2(d,v,y)){x=!0,u=!1,p=b;continue}if(b!==" "&&b!=="\t")d=b}else if(g==="double"&&b==='"'||g==="single"&&b==="'"||g==="template"&&b==="`"){if(p!=="\\")g=null}else if(b==="$"&&v[y+1]==="{"&&p!=="\\"&&g!=="template"){if(!f0("no-template-curly-in-string",T,X))z.push({filePath:$,line:T,column:y+1,ruleId:"no-template-curly-in-string",message:"Unexpected template string expression in normal string",severity:S,help:"Change the string quotes from ' or \" to backticks (`) to use template literal interpolation, or escape the $ if you meant to use it literally"});break}p=b}}if(!A&&f&&!C.has(T)){let g=fY(kY(L)).replace(/'[^']*'|"[^"]*"/g,'""'),x=(y)=>/[^=!<>]=(?![=>])/.test(y),u=(y)=>{let b=L.match(y);if(b&&b.index!==void 0)return b.index+b[0].length;return Math.max(1,L.indexOf("(")+1)},d=g.match(/\b(?:if|while)\s*\(([^)]*)\)/);if(d){let y=d[1];if(x(y)){if(!f0("no-cond-assign",T,X))z.push({filePath:$,line:T,column:u(/\b(?:if|while)\s*\(/),ruleId:"no-cond-assign",message:"Unexpected assignment within a conditional expression",severity:f,help:"Use === or == for comparison instead of = (assignment). Wrap intentional assignments in extra parentheses."})}}let p=g.match(/\bfor\s*\(([^)]*)\)/);if(p){let b=p[1].split(";");if(b.length>=2){let a=b[1];if(x(a)){if(!f0("no-cond-assign",T,X))z.push({filePath:$,line:T,column:u(/\bfor\s*\(/),ruleId:"no-cond-assign",message:"Unexpected assignment within a conditional expression",severity:f,help:"Use === or == for comparison instead of = (assignment). Wrap intentional assignments in extra parentheses."})}}}}}return z}function rj($,J,Z){let X=E1(J),Y=D1(J),z=R1($,J,Z,X,Y);try{let Q=m8(Z),G={filePath:$,config:Z};for(let q of Q.checkRules){if(!V9(q,$,J))continue;if(!q.rule||typeof q.rule.check!=="function")continue;let U=q.rule.check(J,{...G,options:q.options});for(let W of U){if(f0(W.ruleId,W.line,X))continue;if(Y.has(W.line)&&u8(W.ruleId))continue;let K=dY(W,q.fullRuleId);z.push(q.severity?{...K,severity:q.severity}:K)}}}catch{}return z}async function lj($,J){j0("runLint:start",{globs:$,options:J});let Z=v0.DIAGNOSTICS;if(Z)e().info("[pickier:diagnostics] Starting lint process...");try{if(Z)e().info("[pickier:diagnostics] Loading config...");let X=await g1(J.config);j0("config:loaded",{reporter:X.lint.reporter,ext:X.lint.extensions.join(",")});let Y=$.length?$:["."],z=x1(Y);if(j0("patterns",z),Z)e().info(`[pickier:diagnostics] Patterns to search: ${z.join(", ")}`);let Q=J.ext||X.lint.extensions.join(","),G=new Set(Q.split(",").map((N)=>{let v=N.trim();return v.startsWith(".")?v:`.${v}`}));if(Z)e().info(`[pickier:diagnostics] File extensions: ${Array.from(G).join(", ")}`);let q=v0.TIMEOUT_MS;if(Z)e().info(`[pickier:diagnostics] Glob timeout: ${q}ms`);let U=z.some((N)=>{let v=N.replace(/\/?\*\*\/*\*\*$/,""),g=N1(v)?v:T1(P0.cwd(),v),x=P0.cwd();return g!==x&&!g.startsWith(x+mY)}),W=U?[...Y1]:X.ignores,K=p1(W);if(Z){if(e().info(`[pickier:diagnostics] Globbing outside project: ${U}, ignore patterns: ${W.length}`),U)e().info(`[pickier:diagnostics] Using universal ignores: ${Y1.slice(0,5).join(", ")}... (${Y1.length} total)`)}let H=[],V=z.length===1&&!/[*?[\]{}()!]/.test(z[0]);if(Z)e().info(`[pickier:diagnostics] Starting file discovery... (nonGlobSingle: ${V})`);if(V)try{if(h8(z[0]).isFile())H=[N1(z[0])?z[0]:T1(P0.cwd(),z[0])]}catch{}let A=z.length===1&&/\*\*\/*\*$/.test(z[0]);if(!H.length&&A){let N=z[0].replace(/\/?\*\*\/*\*\*$/,"");if(Z)e().info(`[pickier:diagnostics] Using fast directory scan for: ${N}`);try{let g=[N1(N)?N:T1(P0.cwd(),N)],x=0;while(g.length){let u=g.pop();if(x++,Z&&x%100===0)e().info(`[pickier:diagnostics] Scanned ${x} directories, ${H.length} files found so far...`);let d=pY(u);for(let p of d){let y=uY(u,p),b=h8(y);if(K(y))continue;if(b.isDirectory())g.push(y);else H.push(y)}}if(Z)e().info(`[pickier:diagnostics] Fast scan complete: ${x} directories, ${H.length} total files`)}catch(v){if(Z)e().info(`[pickier:diagnostics] Fast scan failed: ${v?.message}, falling back to glob`);H=await u1(e0(z,{dot:!1,ignore:W,onlyFiles:!0,absolute:!0}),q,"glob")}}else if(!H.length){if(Z)e().info(`[pickier:diagnostics] Using glob with timeout ${q}ms...`);if(H=await u1(e0(z,{dot:!1,ignore:W,onlyFiles:!0,absolute:!0}),q,"glob"),Z)e().info(`[pickier:diagnostics] glob found ${H.length} files`)}if(j0("globbed entries",H.length),Z)e().info(`[pickier:diagnostics] File discovery complete: ${H.length} files found`);if(H.length>1e4){if(e().warn(`[pickier:warn] Found ${H.length} files. This seems unusually high and may cause memory issues.`),e().warn("[pickier:warn] Consider checking your ignore patterns or being more specific with your glob pattern."),e().warn("[pickier:warn] Common culprits: node_modules, build directories, cache folders, or vendor dependencies."),H.length>1e5)return e().error(`[pickier:error] File count exceeds 100,000 (${H.length}). This will likely cause out-of-memory errors.`),e().error("[pickier:error] Aborting to prevent crash. Please refine your glob pattern or ignore patterns."),1}if(Z)e().info(`[pickier:diagnostics] Filtering ${H.length} files by extension and ignore patterns...`);let _=0,F=0,w=0,j=0,D=0,M=[];for(let N of H){if(_++,Z&&_%1000===0)e().info(`[pickier:diagnostics] Filtering progress: ${_}/${H.length} files checked, ${F} included...`);if(N.replace(/\\/g,"/").includes("/node_modules/")){w++;continue}if(K(N)){j++;continue}if(!H9(N,G)){D++;continue}M.push(N),F++}if(j0("filter:cli",{total:_,included:F,node_modules:w,ignored:j,wrongExt:D}),j0("filtered files",M.length),Z)e().info("[pickier:diagnostics] Filtering complete:"),e().info(`[pickier:diagnostics] Total files found: ${_}`),e().info(`[pickier:diagnostics] Files to lint: ${F}`),e().info(`[pickier:diagnostics] Excluded (node_modules): ${w}`),e().info(`[pickier:diagnostics] Excluded (ignored): ${j}`),e().info(`[pickier:diagnostics] Excluded (wrong extension): ${D}`);if(M.length>5000){if(e().warn(`[pickier:warn] After filtering, ${M.length} files will be linted. This may take a while and use significant memory.`),M.length>50000)return e().error(`[pickier:error] ${M.length} files to lint exceeds safe limit (50,000). This will likely cause out-of-memory errors.`),e().error("[pickier:error] Aborting to prevent crash. Please be more specific with your glob pattern."),e().error("[pickier:error] Example: Instead of '../stx', try '../stx/src' or '../stx/packages/core'"),1}let E=v0.CONCURRENCY;if(Z)e().info(`[pickier:diagnostics] Starting to process ${M.length} files with concurrency ${E}...`);let R=0,S=!!J._formatOnly,h=(await oY(M,E,async(N)=>{if(Z){if(R++,R===1||R%10===0||R===M.length)e().info(`[pickier:diagnostics] Processing file ${R}/${M.length}: ${p8(P0.cwd(),N)}`)}let v=hY(N,"utf8");if(S){let p=x8(v,X,N);if(p!==v)if(!J.dryRun)W9(N,p,"utf8");else return[{filePath:N,line:1,column:1,ruleId:"format",message:"File is not formatted",severity:"error",help:"Run pickier format with --write to apply formatting."}];return[]}let g=E1(v),u=/\.(?:ts|js|tsx|jsx|mts|mjs|cts|cjs)$/.test(N)?D1(v):new Set,d=R1(N,v,X,g,u);try{let p=await A9(N,v,X);for(let y of p){if(f0(y.ruleId,y.line,g))continue;if(u.has(y.line)&&u8(y.ruleId))continue;d.push({filePath:y.filePath,line:y.line,column:y.column,ruleId:y.ruleId,message:y.message,severity:y.severity,...y.help&&{help:y.help}})}}catch{}{let p=new Set;d=d.filter((y)=>{let b=`${y.line}:${y.column}:${y.ruleId}`;if(p.has(b))return!1;return p.add(b),!0})}if(J.fix){let p=/^\s*debugger\b/,y=v;if(X.rules.noDebugger==="error"||X.rules.noDebugger==="warn"){let s=y.split(/\r?\n/),r=[];for(let o of s){if(p.test(o))continue;r.push(o)}y=r.join(`
218
- `)}y=cY(N,y,X);let a=N.split(".").pop()?.toLowerCase()??"";if(a!=="md"&&!(a==="sh"||a==="bash"||a==="zsh"||a==="ksh"||a==="dash")&&a!=="yaml"&&a!=="yml")y=c2(y,X);if(y!==v){let s=E1(y),r=D1(y);if(d=R1(N,y,X,s,r),!J.dryRun)W9(N,y,"utf8");if(J.dryRun&&(J.verbose!==void 0?J.verbose:X.verbose))e().debug(Z0.gray(`dry-run: would apply fixes in ${p8(P0.cwd(),N)}`))}}return j0("scan done",p8(P0.cwd(),N),d.length),d})).flat();if(Z)e().info(`[pickier:diagnostics] Processing complete! Found ${h.length} issues total`);let P=h.filter((N)=>N.severity==="error").length,C=h.filter((N)=>N.severity==="warning").length;if(j0("issues:summary",{errors:P,warnings:C}),Z)e().info(`[pickier:diagnostics] Errors: ${P}, Warnings: ${C}`);let I=J.reporter||X.lint.reporter,L=J.verbose!==void 0?J.verbose:X.verbose;if(I==="json")console.log(JSON.stringify({errors:P,warnings:C,issues:h},null,2));else if(I==="compact")for(let N of h)console.log(`${p8(P0.cwd(),N.filePath)}:${N.line}:${N.column} ${N.severity} ${N.ruleId} ${N.message}`);else if(h.length>0)console.log(L?vY(h):yY(h));if(h.length>0&&I!=="json"){let N=P+C,v=N===1?"problem":"problems",g=P===1?"error":"errors",x=C===1?"warning":"warnings",u=m8(X),d=0,p=0;for(let y of h){let b=y.ruleId;if(u.fixableRuleIds.has(b)||u.fixableBareRuleNames.has(b)){if(y.severity==="error")d++;else if(y.severity==="warning")p++}}if(console.log(),console.log(Z0.red(`\u2716 ${N} ${v} (${P} ${g}, ${C} ${x})`)),d>0||p>0){let y=d===1?"error":"errors",b=p===1?"warning":"warnings";console.log(Z0.gray(` ${d} ${y} and ${p} ${b} potentially fixable with the \`--fix\` option.`))}}if(L&&I!=="json")console.log(Z0.gray(`Scanned ${M.length} files, found ${P} errors and ${C} warnings.`));let T=J.maxWarnings??X.lint.maxWarnings,k=v0.FAIL_ON_WARNINGS;if(P>0)return j0("runLint:end",1),1;if(k&&C>0)return j0("runLint:end",1),1;if(T>=0&&C>T)return j0("runLint:end",1),1;return j0("runLint:end",0),0}catch(X){return e().error("[pickier:error] runLint failed:",X?.message||X),j0("runLint:exception",X),1}}
219
- export{yj as a,oj as b,cj as c,A9 as d,R1 as e,rj as f,lj as g};
218
+ `)break;q++}while(q<$.length&&/[gimsuy]/.test($[q]))q++;q--}else Y=!0}else if(U==="'")Z="string-single",Y=!0;else if(U==='"')Z="string-double",Y=!0;else if(U==="`")Z="string-template",Y=!0;else if(U==="{"){if(G.length)G[G.length-1]++;Y=!0}else if(U==="}"){if(G.length)if(G[G.length-1]===0)G.pop(),Z="string-template";else G[G.length-1]--;Y=!0}else if(!/\s/.test(U))Y=!0;break;case"string-single":if(U==="\\"){q++;break}if(U==="'")Z="code";break;case"string-double":if(U==="\\"){q++;break}if(U==='"')Z="code";break;case"string-template":if(U==="\\"){q++;break}if(U==="$"&&W==="{"){G.push(0),Z="code",q++;break}if(U==="`")Z="code";break;case"line-comment":break;case"block-comment":if(U==="*"&&W==="/")Z="code",q++;break}}if(Q&&Z==="block-comment")J.add(X);else if(!Y&&z&&Z!=="block-comment")J.add(X);else if(!Y&&Z==="block-comment")J.add(X);return J}function O1($,J,Z,X,Y){let z=[],Q=J.split(/\r?\n/),G=Z.format.quotes,q=$.split(".").pop()?.toLowerCase()??"",U=q==="md",W=q==="sh"||q==="bash"||q==="zsh"||q==="ksh"||q==="dash"||/^#!\s*(?:\/usr\/bin\/env\s+)?(?:ba|z|k|da)?sh\b/.test(J),V=(Z.rules?.quotes??Z.pluginRules?.quotes??Z.pluginRules?.["style/quotes"])==="off"||q==="json"||q==="jsonc"||q==="lock"||U||q==="yaml"||q==="yml"||q==="stx"||q==="html"||q==="htm"||q==="vue"||W||$.endsWith("bun.lock"),A=U||q==="yaml"||q==="yml"||q==="json"||q==="jsonc"||W,M=(Z.rules?.indent??Z.pluginRules?.indent??Z.pluginRules?.["style/indent"])!=="off"&&!U&&!(q==="stx"||q==="html"||q==="htm"||q==="vue"),T=!1,E=(I)=>I==="warn"?"warning":I==="error"?"error":void 0,j=E(Z.rules.noDebugger),O=E(Z.rules.noConsole),v=E(Z.rules.noTemplateCurlyInString),k=E(Z.rules.noCondAssign),L=/\bconsole\.log\s*\(/,h=/^\s*debugger\b/,b=new Set;if(q==="md"){let I=!1;for(let S=0;S<Q.length;S++){if(/^(?:`{3,}|~{3,})/.test(Q[S].trim())){I=!I;continue}if(I)b.add(S+1)}}let P=new Set;if(J.includes("`")){let I=!1,S=!1,C=1;for(let N=0;N<J.length;N++){let R=J[N];if(S){if(S=!1,R===`
219
+ `)C++;continue}if(R==="\\"){S=!0;continue}if(R===`
220
+ `){C++;continue}if(R==="`"){I=!I;continue}if(I)P.add(C)}}for(let I=0;I<Q.length;I++){let S=Q[I],C=I+1;if(Y.has(C))continue;if(!V&&!P.has(C)){let D=pY(gY(S)),f=xY(D,G);if(f.length>0&&!T){if(!g0("quotes",C,X))z.push({filePath:$,line:C,column:(f[0]||0)+1,ruleId:"quotes",message:"Inconsistent quote style",severity:"warning",help:`Use ${G} quotes consistently throughout your code. You can change the preferred quote style in your config with format.quotes: '${G==="single"?"double":"single"}'`});T=!0}}let N=0;while(N<S.length&&(S.charCodeAt(N)===32||S.charCodeAt(N)===9))N++;let R=N>0?S.slice(0,N):"";if(M&&R.length>0&&!b.has(C)&&H9(R,Z.format.indent,Z.format.indentStyle,S)){if(!g0("indent",C,X))z.push({filePath:$,line:C,column:1,ruleId:"indent",message:"Incorrect indentation detected",severity:"warning",help:`Use ${Z.format.indentStyle==="spaces"?`${Z.format.indent} spaces`:"tabs"} for indentation. Configure with format.indent and format.indentStyle in your config`})}if(!A&&j&&h.test(S)){if(!g0("no-debugger",C,X))z.push({filePath:$,line:C,column:1,ruleId:"no-debugger",message:"Unexpected debugger statement",severity:j,help:"Remove debugger statements before committing code. Use breakpoints in your IDE instead, or run with --fix to auto-remove"})}if(!A&&O&&!P.has(C)&&L.test(S)){let D=S.indexOf("//"),f=S.indexOf("console.");if(D!==-1&&f>D);else{let p=null;for(let d=0;d<S.length;d++){let u=S[d];if(!p){if(u==='"')p="double";else if(u==="'")p="single";else if(u==="`")p="template";else if(S.slice(d).startsWith("console.")){let x=d+1;if(!g0("no-console",C,X))z.push({filePath:$,line:C,column:x,ruleId:"no-console",message:"Unexpected console call",severity:O,help:"Remove console statements before committing. Use a proper logging library or disable this rule if console output is intentional"});break}}else if(p==="double"&&u==='"'||p==="single"&&u==="'"||p==="template"&&u==="`"){let x=0;for(let y=d-1;y>=0&&S[y]==="\\";y--)x++;if(x%2===0)p=null}}}}if(v&&!P.has(C)){let D=S,f=null,p=!1,d=!1,u="",x="";for(let y=0;y<D.length;y++){let g=D[y];if(p){if(x==="\\"){x=g;continue}if(d){if(g==="]")d=!1}else if(g==="[")d=!0;else if(g==="/"){p=!1;while(y+1<D.length&&/[a-z]/i.test(D[y+1]))y++;u="/"}x=g;continue}if(!f){if(g==='"'){f="double",x=g;continue}if(g==="'"){f="single",x=g;continue}if(g==="`"){f="template",x=g;continue}if(g==="/"&&D[y+1]!=="/"&&D[y+1]!=="*"&&a2(u,D,y)){p=!0,d=!1,x=g;continue}if(g!==" "&&g!=="\t")u=g}else if(f==="double"&&g==='"'||f==="single"&&g==="'"||f==="template"&&g==="`"){if(x!=="\\")f=null}else if(g==="$"&&D[y+1]==="{"&&x!=="\\"&&f!=="template"){if(!g0("no-template-curly-in-string",C,X))z.push({filePath:$,line:C,column:y+1,ruleId:"no-template-curly-in-string",message:"Unexpected template string expression in normal string",severity:v,help:"Change the string quotes from ' or \" to backticks (`) to use template literal interpolation, or escape the $ if you meant to use it literally"});break}x=g}}if(!A&&k&&!P.has(C)){let f=pY(gY(S)).replace(/'[^']*'|"[^"]*"/g,'""'),p=(y)=>/[^=!<>]=(?![=>])/.test(y),d=(y)=>{let g=S.match(y);if(g&&g.index!==void 0)return g.index+g[0].length;return Math.max(1,S.indexOf("(")+1)},u=f.match(/\b(?:if|while)\s*\(([^)]*)\)/);if(u){let y=u[1];if(p(y)){if(!g0("no-cond-assign",C,X))z.push({filePath:$,line:C,column:d(/\b(?:if|while)\s*\(/),ruleId:"no-cond-assign",message:"Unexpected assignment within a conditional expression",severity:k,help:"Use === or == for comparison instead of = (assignment). Wrap intentional assignments in extra parentheses."})}}let x=f.match(/\bfor\s*\(([^)]*)\)/);if(x){let g=x[1].split(";");if(g.length>=2){let m=g[1];if(p(m)){if(!g0("no-cond-assign",C,X))z.push({filePath:$,line:C,column:d(/\bfor\s*\(/),ruleId:"no-cond-assign",message:"Unexpected assignment within a conditional expression",severity:k,help:"Use === or == for comparison instead of = (assignment). Wrap intentional assignments in extra parentheses."})}}}}}return z}function aj($,J,Z){let X=D1(J),Y=R1(J),z=O1($,J,Z,X,Y);try{let Q=d8(Z),G={filePath:$,config:Z};for(let q of Q.checkRules){if(!A9(q,$,J))continue;if(!q.rule||typeof q.rule.check!=="function")continue;let U=q.rule.check(J,{...G,options:q.options});for(let W of U){if(g0(W.ruleId,W.line,X))continue;if(Y.has(W.line)&&m8(W.ruleId))continue;let K=cY(W,q.fullRuleId);z.push(q.severity?{...K,severity:q.severity}:K)}}}catch{}return z}async function sj($,J){N0("runLint:start",{globs:$,options:J});let Z=y0.DIAGNOSTICS;if(Z)e().info("[pickier:diagnostics] Starting lint process...");try{if(Z)e().info("[pickier:diagnostics] Loading config...");let X=await p1(J.config);N0("config:loaded",{reporter:X.lint.reporter,ext:X.lint.extensions.join(",")});let Y=$.length?$:["."],z=x1(Y);if(N0("patterns",z),Z)e().info(`[pickier:diagnostics] Patterns to search: ${z.join(", ")}`);let Q=J.ext||X.lint.extensions.join(","),G=new Set(Q.split(",").map((R)=>{let D=R.trim();return D.startsWith(".")?D:`.${D}`}));if(Z)e().info(`[pickier:diagnostics] File extensions: ${Array.from(G).join(", ")}`);let q=y0.TIMEOUT_MS;if(Z)e().info(`[pickier:diagnostics] Glob timeout: ${q}ms`);let U=z.some((R)=>{let D=R.replace(/\/?\*\*\/*\*\*$/,""),f=T1(D)?D:E1(C0.cwd(),D),p=C0.cwd();return f!==p&&!f.startsWith(p+oY)}),W=U?[...z1]:X.ignores,K=h1(W);if(Z){if(e().info(`[pickier:diagnostics] Globbing outside project: ${U}, ignore patterns: ${W.length}`),U)e().info(`[pickier:diagnostics] Using universal ignores: ${z1.slice(0,5).join(", ")}... (${z1.length} total)`)}let H=[],V=z.length===1&&!/[*?[\]{}()!]/.test(z[0]);if(Z)e().info(`[pickier:diagnostics] Starting file discovery... (nonGlobSingle: ${V})`);if(V)try{if(u8(z[0]).isFile())H=[T1(z[0])?z[0]:E1(C0.cwd(),z[0])]}catch{}let A=z.length===1&&/\*\*\/*\*$/.test(z[0]);if(!H.length&&A){let R=z[0].replace(/\/?\*\*\/*\*\*$/,"");if(Z)e().info(`[pickier:diagnostics] Using fast directory scan for: ${R}`);try{let f=[T1(R)?R:E1(C0.cwd(),R)],p=0;while(f.length){let d=f.pop();if(p++,Z&&p%100===0)e().info(`[pickier:diagnostics] Scanned ${p} directories, ${H.length} files found so far...`);let u=uY(d);for(let x of u){let y=dY(d,x),g=u8(y);if(K(y))continue;if(g.isDirectory())f.push(y);else H.push(y)}}if(Z)e().info(`[pickier:diagnostics] Fast scan complete: ${p} directories, ${H.length} total files`)}catch(D){if(Z)e().info(`[pickier:diagnostics] Fast scan failed: ${D?.message}, falling back to glob`);H=await m1($1(z,{dot:!1,ignore:W,onlyFiles:!0,absolute:!0}),q,"glob")}}else if(!H.length){if(Z)e().info(`[pickier:diagnostics] Using glob with timeout ${q}ms...`);if(H=await m1($1(z,{dot:!1,ignore:W,onlyFiles:!0,absolute:!0}),q,"glob"),Z)e().info(`[pickier:diagnostics] glob found ${H.length} files`)}if(N0("globbed entries",H.length),Z)e().info(`[pickier:diagnostics] File discovery complete: ${H.length} files found`);if(H.length>1e4){if(e().warn(`[pickier:warn] Found ${H.length} files. This seems unusually high and may cause memory issues.`),e().warn("[pickier:warn] Consider checking your ignore patterns or being more specific with your glob pattern."),e().warn("[pickier:warn] Common culprits: node_modules, build directories, cache folders, or vendor dependencies."),H.length>1e5)return e().error(`[pickier:error] File count exceeds 100,000 (${H.length}). This will likely cause out-of-memory errors.`),e().error("[pickier:error] Aborting to prevent crash. Please refine your glob pattern or ignore patterns."),1}if(Z)e().info(`[pickier:diagnostics] Filtering ${H.length} files by extension and ignore patterns...`);let _=0,w=0,F=0,M=0,T=0,E=[];for(let R of H){if(_++,Z&&_%1000===0)e().info(`[pickier:diagnostics] Filtering progress: ${_}/${H.length} files checked, ${w} included...`);if(R.replace(/\\/g,"/").includes("/node_modules/")){F++;continue}if(K(R)){M++;continue}if(!V9(R,G)){T++;continue}E.push(R),w++}if(N0("filter:cli",{total:_,included:w,node_modules:F,ignored:M,wrongExt:T}),N0("filtered files",E.length),Z)e().info("[pickier:diagnostics] Filtering complete:"),e().info(`[pickier:diagnostics] Total files found: ${_}`),e().info(`[pickier:diagnostics] Files to lint: ${w}`),e().info(`[pickier:diagnostics] Excluded (node_modules): ${F}`),e().info(`[pickier:diagnostics] Excluded (ignored): ${M}`),e().info(`[pickier:diagnostics] Excluded (wrong extension): ${T}`);if(E.length>5000){if(e().warn(`[pickier:warn] After filtering, ${E.length} files will be linted. This may take a while and use significant memory.`),E.length>50000)return e().error(`[pickier:error] ${E.length} files to lint exceeds safe limit (50,000). This will likely cause out-of-memory errors.`),e().error("[pickier:error] Aborting to prevent crash. Please be more specific with your glob pattern."),e().error("[pickier:error] Example: Instead of '../stx', try '../stx/src' or '../stx/packages/core'"),1}let j=y0.CONCURRENCY;if(Z)e().info(`[pickier:diagnostics] Starting to process ${E.length} files with concurrency ${j}...`);let O=0,v=!!J._formatOnly,h=(await rY(E,j,async(R)=>{if(Z){if(O++,O===1||O%10===0||O===E.length)e().info(`[pickier:diagnostics] Processing file ${O}/${E.length}: ${h8(C0.cwd(),R)}`)}let D=mY(R,"utf8");if(v){let x=x8(D,X,R);if(x!==D)if(!J.dryRun)K9(R,x,"utf8");else return[{filePath:R,line:1,column:1,ruleId:"format",message:"File is not formatted",severity:"error",help:"Run pickier format with --write to apply formatting."}];return[]}let f=D1(D),d=/\.(?:ts|js|tsx|jsx|mts|mjs|cts|cjs)$/.test(R)?R1(D):new Set,u=O1(R,D,X,f,d);try{let x=await _9(R,D,X);for(let y of x){if(g0(y.ruleId,y.line,f))continue;if(d.has(y.line)&&m8(y.ruleId))continue;u.push({filePath:y.filePath,line:y.line,column:y.column,ruleId:y.ruleId,message:y.message,severity:y.severity,...y.help&&{help:y.help}})}}catch{}{let x=new Set;u=u.filter((y)=>{let g=`${y.line}:${y.column}:${y.ruleId}`;if(x.has(g))return!1;return x.add(g),!0})}if(J.fix){let x=/^\s*debugger\b/,y=D;if(X.rules.noDebugger==="error"||X.rules.noDebugger==="warn"){let c=y.split(/\r?\n/),s=[];for(let l of c){if(x.test(l))continue;s.push(l)}y=s.join(`
221
+ `)}y=lY(R,y,X);let m=R.split(".").pop()?.toLowerCase()??"";if(m!=="md"&&!(m==="sh"||m==="bash"||m==="zsh"||m==="ksh"||m==="dash")&&m!=="yaml"&&m!=="yml")y=l2(y,X);if(y!==D){let c=D1(y),s=R1(y);if(u=O1(R,y,X,c,s),!J.dryRun)K9(R,y,"utf8");if(J.dryRun&&(J.verbose!==void 0?J.verbose:X.verbose))e().debug(J0.gray(`dry-run: would apply fixes in ${h8(C0.cwd(),R)}`))}}return N0("scan done",h8(C0.cwd(),R),u.length),u})).flat();if(Z)e().info(`[pickier:diagnostics] Processing complete! Found ${h.length} issues total`);let b=h.filter((R)=>R.severity==="error").length,P=h.filter((R)=>R.severity==="warning").length;if(N0("issues:summary",{errors:b,warnings:P}),Z)e().info(`[pickier:diagnostics] Errors: ${b}, Warnings: ${P}`);let I=J.reporter||X.lint.reporter,S=J.verbose!==void 0?J.verbose:X.verbose;if(I==="json")console.log(JSON.stringify({errors:b,warnings:P,issues:h},null,2));else if(I==="compact")for(let R of h)console.log(`${h8(C0.cwd(),R.filePath)}:${R.line}:${R.column} ${R.severity} ${R.ruleId} ${R.message}`);else if(h.length>0)console.log(S?bY(h):kY(h));if(h.length>0&&I!=="json"){let R=b+P,D=R===1?"problem":"problems",f=b===1?"error":"errors",p=P===1?"warning":"warnings",d=d8(X),u=0,x=0;for(let y of h){let g=y.ruleId;if(d.fixableRuleIds.has(g)||d.fixableBareRuleNames.has(g)){if(y.severity==="error")u++;else if(y.severity==="warning")x++}}if(console.log(),console.log(J0.red(`\u2716 ${R} ${D} (${b} ${f}, ${P} ${p})`)),u>0||x>0){let y=u===1?"error":"errors",g=x===1?"warning":"warnings";console.log(J0.gray(` ${u} ${y} and ${x} ${g} potentially fixable with the \`--fix\` option.`))}}if(S&&I!=="json")console.log(J0.gray(`Scanned ${E.length} files, found ${b} errors and ${P} warnings.`));let C=J.maxWarnings??X.lint.maxWarnings,N=y0.FAIL_ON_WARNINGS;if(b>0)return N0("runLint:end",1),1;if(N&&P>0)return N0("runLint:end",1),1;if(C>=0&&P>C)return N0("runLint:end",1),1;return N0("runLint:end",0),0}catch(X){return e().error("[pickier:error] runLint failed:",X?.message||X),N0("runLint:exception",X),1}}
222
+ export{kj as a,rj as b,lj as c,_9 as d,O1 as e,aj as f,sj as g};