codetraxis 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,9 @@
1
+ var Pt=Object.defineProperty;var Mt=(e,t,r)=>t in e?Pt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var pe=(e,t,r)=>Mt(e,typeof t!="symbol"?t+"":t,r);import{r as Tt,a as M}from"./react-vendor-BhKDh-5n.js";import{g as kt,a as At}from"./axios-vendor-B_3Om2-t.js";var he={exports:{}},ye={};/**
2
+ * @license React
3
+ * use-sync-external-store-with-selector.production.js
4
+ *
5
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */var ze;function xt(){if(ze)return ye;ze=1;var e=Tt();function t(c,l){return c===l&&(c!==0||1/c===1/l)||c!==c&&l!==l}var r=typeof Object.is=="function"?Object.is:t,n=e.useSyncExternalStore,i=e.useRef,o=e.useEffect,s=e.useMemo,u=e.useDebugValue;return ye.useSyncExternalStoreWithSelector=function(c,l,a,f,d){var p=i(null);if(p.current===null){var y={hasValue:!1,value:null};p.current=y}else y=p.current;p=s(function(){function _(h){if(!w){if(w=!0,v=h,h=f(h),d!==void 0&&y.hasValue){var S=y.value;if(d(S,h))return E=S}return E=h}if(S=E,r(v,h))return S;var C=f(h);return d!==void 0&&d(S,C)?(v=h,S):(v=h,E=C)}var w=!1,v,E,m=a===void 0?null:a;return[function(){return _(l())},m===null?void 0:function(){return _(m())}]},[l,a,f,d]);var b=n(c,p[0],p[1]);return o(function(){y.hasValue=!0,y.value=b},[b]),u(b),b},ye}var je;function Ot(){return je||(je=1,he.exports=xt()),he.exports}var It=Ot();function Dt(e){e()}function Ft(){let e=null,t=null;return{clear(){e=null,t=null},notify(){Dt(()=>{let r=e;for(;r;)r.callback(),r=r.next})},get(){const r=[];let n=e;for(;n;)r.push(n),n=n.next;return r},subscribe(r){let n=!0;const i=t={callback:r,next:null,prev:t};return i.prev?i.prev.next=i:e=i,function(){!n||e===null||(n=!1,i.next?i.next.prev=i.prev:t=i.prev,i.prev?i.prev.next=i.next:e=i.next)}}}}var We={notify(){},get:()=>[]};function Nt(e,t){let r,n=We,i=0,o=!1;function s(b){a();const _=n.subscribe(b);let w=!1;return()=>{w||(w=!0,_(),f())}}function u(){n.notify()}function c(){y.onStateChange&&y.onStateChange()}function l(){return o}function a(){i++,r||(r=e.subscribe(c),n=Ft())}function f(){i--,r&&i===0&&(r(),r=void 0,n.clear(),n=We)}function d(){o||(o=!0,a())}function p(){o&&(o=!1,f())}const y={addNestedSub:s,notifyNestedSubs:u,handleChangeWrapper:c,isSubscribed:l,trySubscribe:d,tryUnsubscribe:p,getListeners:()=>n};return y}var zt=()=>typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",jt=zt(),Wt=()=>typeof navigator<"u"&&navigator.product==="ReactNative",Lt=Wt(),Ut=()=>jt||Lt?M.useLayoutEffect:M.useEffect,Vt=Ut(),_e=Symbol.for("react-redux-context"),me=typeof globalThis<"u"?globalThis:{};function $t(){if(!M.createContext)return{};const e=me[_e]??(me[_e]=new Map);let t=e.get(M.createContext);return t||(t=M.createContext(null),e.set(M.createContext,t)),t}var N=$t();function Bt(e){const{children:t,context:r,serverState:n,store:i}=e,o=M.useMemo(()=>{const c=Nt(i);return{store:i,subscription:c,getServerState:n?()=>n:void 0}},[i,n]),s=M.useMemo(()=>i.getState(),[i]);Vt(()=>{const{subscription:c}=o;return c.onStateChange=c.notifyNestedSubs,c.trySubscribe(),s!==i.getState()&&c.notifyNestedSubs(),()=>{c.tryUnsubscribe(),c.onStateChange=void 0}},[o,s]);const u=r||N;return M.createElement(u.Provider,{value:o},t)}var _n=Bt;function xe(e=N){return function(){return M.useContext(e)}}var nt=xe();function it(e=N){const t=e===N?nt:xe(e),r=()=>{const{store:n}=t();return n};return Object.assign(r,{withTypes:()=>r}),r}var qt=it();function Kt(e=N){const t=e===N?qt:it(e),r=()=>t().dispatch;return Object.assign(r,{withTypes:()=>r}),r}var mn=Kt(),Ht=(e,t)=>e===t;function Gt(e=N){const t=e===N?nt:xe(e),r=(n,i={})=>{const{equalityFn:o=Ht}=typeof i=="function"?{equalityFn:i}:i,s=t(),{store:u,subscription:c,getServerState:l}=s;M.useRef(!0);const a=M.useCallback({[n.name](d){return n(d)}}[n.name],[n]),f=It.useSyncExternalStoreWithSelector(c.addNestedSub,u.getState,l||u.getState,a,o);return M.useDebugValue(f),f};return Object.assign(r,{withTypes:()=>r}),r}var Xt=Gt();const bn=Xt;function R(e){return`Minified Redux error #${e}; visit https://redux.js.org/Errors?code=${e} for the full message or use the non-minified dev environment for full errors. `}var Qt=typeof Symbol=="function"&&Symbol.observable||"@@observable",Le=Qt,be=()=>Math.random().toString(36).substring(7).split("").join("."),Yt={INIT:`@@redux/INIT${be()}`,REPLACE:`@@redux/REPLACE${be()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${be()}`},J=Yt;function Oe(e){if(typeof e!="object"||e===null)return!1;let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t||Object.getPrototypeOf(e)===null}function ot(e,t,r){if(typeof e!="function")throw new Error(R(2));if(typeof t=="function"&&typeof r=="function"||typeof r=="function"&&typeof arguments[3]=="function")throw new Error(R(0));if(typeof t=="function"&&typeof r>"u"&&(r=t,t=void 0),typeof r<"u"){if(typeof r!="function")throw new Error(R(1));return r(ot)(e,t)}let n=e,i=t,o=new Map,s=o,u=0,c=!1;function l(){s===o&&(s=new Map,o.forEach((_,w)=>{s.set(w,_)}))}function a(){if(c)throw new Error(R(3));return i}function f(_){if(typeof _!="function")throw new Error(R(4));if(c)throw new Error(R(5));let w=!0;l();const v=u++;return s.set(v,_),function(){if(w){if(c)throw new Error(R(6));w=!1,l(),s.delete(v),o=null}}}function d(_){if(!Oe(_))throw new Error(R(7));if(typeof _.type>"u")throw new Error(R(8));if(typeof _.type!="string")throw new Error(R(17));if(c)throw new Error(R(9));try{c=!0,i=n(i,_)}finally{c=!1}return(o=s).forEach(v=>{v()}),_}function p(_){if(typeof _!="function")throw new Error(R(10));n=_,d({type:J.REPLACE})}function y(){const _=f;return{subscribe(w){if(typeof w!="object"||w===null)throw new Error(R(11));function v(){const m=w;m.next&&m.next(a())}return v(),{unsubscribe:_(v)}},[Le](){return this}}}return d({type:J.INIT}),{dispatch:d,subscribe:f,getState:a,replaceReducer:p,[Le]:y}}function Jt(e){Object.keys(e).forEach(t=>{const r=e[t];if(typeof r(void 0,{type:J.INIT})>"u")throw new Error(R(12));if(typeof r(void 0,{type:J.PROBE_UNKNOWN_ACTION()})>"u")throw new Error(R(13))})}function Zt(e){const t=Object.keys(e),r={};for(let o=0;o<t.length;o++){const s=t[o];typeof e[s]=="function"&&(r[s]=e[s])}const n=Object.keys(r);let i;try{Jt(r)}catch(o){i=o}return function(s={},u){if(i)throw i;let c=!1;const l={};for(let a=0;a<n.length;a++){const f=n[a],d=r[f],p=s[f],y=d(p,u);if(typeof y>"u")throw u&&u.type,new Error(R(14));l[f]=y,c=c||y!==p}return c=c||n.length!==Object.keys(s).length,c?l:s}}function Z(...e){return e.length===0?t=>t:e.length===1?e[0]:e.reduce((t,r)=>(...n)=>t(r(...n)))}function er(...e){return t=>(r,n)=>{const i=t(r,n);let o=()=>{throw new Error(R(15))};const s={getState:i.getState,dispatch:(c,...l)=>o(c,...l)},u=e.map(c=>c(s));return o=Z(...u)(i.dispatch),{...i,dispatch:o}}}function tr(e){return Oe(e)&&"type"in e&&typeof e.type=="string"}var st=Symbol.for("immer-nothing"),Ue=Symbol.for("immer-draftable"),P=Symbol.for("immer-state");function A(e,...t){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var T=Object,W=T.getPrototypeOf,ee="constructor",se="prototype",Ce="configurable",te="enumerable",Q="writable",V="value",D=e=>!!e&&!!e[P];function x(e){var t;return e?ct(e)||ue(e)||!!e[Ue]||!!((t=e[ee])!=null&&t[Ue])||ae(e)||le(e):!1}var rr=T[se][ee].toString(),Ve=new WeakMap;function ct(e){if(!e||!Ie(e))return!1;const t=W(e);if(t===null||t===T[se])return!0;const r=T.hasOwnProperty.call(t,ee)&&t[ee];if(r===Object)return!0;if(!j(r))return!1;let n=Ve.get(r);return n===void 0&&(n=Function.toString.call(r),Ve.set(r,n)),n===rr}function ce(e,t,r=!0){q(e)===0?(r?Reflect.ownKeys(e):T.keys(e)).forEach(i=>{t(i,e[i],e)}):e.forEach((n,i)=>t(i,n,e))}function q(e){const t=e[P];return t?t.type_:ue(e)?1:ae(e)?2:le(e)?3:0}var $e=(e,t,r=q(e))=>r===2?e.has(t):T[se].hasOwnProperty.call(e,t),Ee=(e,t,r=q(e))=>r===2?e.get(t):e[t],re=(e,t,r,n=q(e))=>{n===2?e.set(t,r):n===3?e.add(r):e[t]=r};function nr(e,t){return e===t?e!==0||1/e===1/t:e!==e&&t!==t}var ue=Array.isArray,ae=e=>e instanceof Map,le=e=>e instanceof Set,Ie=e=>typeof e=="object",j=e=>typeof e=="function",we=e=>typeof e=="boolean";function ir(e){const t=+e;return Number.isInteger(t)&&String(t)===e}var O=e=>e.copy_||e.base_,De=e=>e.modified_?e.copy_:e.base_;function Re(e,t){if(ae(e))return new Map(e);if(le(e))return new Set(e);if(ue(e))return Array[se].slice.call(e);const r=ct(e);if(t===!0||t==="class_only"&&!r){const n=T.getOwnPropertyDescriptors(e);delete n[P];let i=Reflect.ownKeys(n);for(let o=0;o<i.length;o++){const s=i[o],u=n[s];u[Q]===!1&&(u[Q]=!0,u[Ce]=!0),(u.get||u.set)&&(n[s]={[Ce]:!0,[Q]:!0,[te]:u[te],[V]:e[s]})}return T.create(W(e),n)}else{const n=W(e);if(n!==null&&r)return{...e};const i=T.create(n);return T.assign(i,e)}}function Fe(e,t=!1){return fe(e)||D(e)||!x(e)||(q(e)>1&&T.defineProperties(e,{set:K,add:K,clear:K,delete:K}),T.freeze(e),t&&ce(e,(r,n)=>{Fe(n,!0)},!1)),e}function or(){A(2)}var K={[V]:or};function fe(e){return e===null||!Ie(e)?!0:T.isFrozen(e)}var ne="MapSet",Pe="Patches",Be="ArrayMethods",ut={};function z(e){const t=ut[e];return t||A(0,e),t}var qe=e=>!!ut[e],$,at=()=>$,sr=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:qe(ne)?z(ne):void 0,arrayMethodsPlugin_:qe(Be)?z(Be):void 0});function Ke(e,t){t&&(e.patchPlugin_=z(Pe),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function Me(e){Te(e),e.drafts_.forEach(cr),e.drafts_=null}function Te(e){e===$&&($=e.parent_)}var He=e=>$=sr($,e);function cr(e){const t=e[P];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function Ge(e,t){t.unfinalizedDrafts_=t.drafts_.length;const r=t.drafts_[0];if(e!==void 0&&e!==r){r[P].modified_&&(Me(t),A(4)),x(e)&&(e=Xe(t,e));const{patchPlugin_:i}=t;i&&i.generateReplacementPatches_(r[P].base_,e,t)}else e=Xe(t,r);return ur(t,e,!0),Me(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==st?e:void 0}function Xe(e,t){if(fe(t))return t;const r=t[P];if(!r)return ie(t,e.handledSet_,e);if(!de(r,e))return t;if(!r.modified_)return r.base_;if(!r.finalized_){const{callbacks_:n}=r;if(n)for(;n.length>0;)n.pop()(e);dt(r,e)}return r.copy_}function ur(e,t,r=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&Fe(t,r)}function lt(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var de=(e,t)=>e.scope_===t,ar=[];function ft(e,t,r,n){const i=O(e),o=e.type_;if(n!==void 0&&Ee(i,n,o)===t){re(i,n,r,o);return}if(!e.draftLocations_){const u=e.draftLocations_=new Map;ce(i,(c,l)=>{if(D(l)){const a=u.get(l)||[];a.push(c),u.set(l,a)}})}const s=e.draftLocations_.get(t)??ar;for(const u of s)re(i,u,r,o)}function lr(e,t,r){e.callbacks_.push(function(i){var u;const o=t;if(!o||!de(o,i))return;(u=i.mapSetPlugin_)==null||u.fixSetContents(o);const s=De(o);ft(e,o.draft_??o,s,r),dt(o,i)})}function dt(e,t){var n;if(e.modified_&&!e.finalized_&&(e.type_===3||e.type_===1&&e.allIndicesReassigned_||(((n=e.assigned_)==null?void 0:n.size)??0)>0)){const{patchPlugin_:i}=t;if(i){const o=i.getPath(e);o&&i.generatePatches_(e,o,t)}lt(e)}}function fr(e,t,r){const{scope_:n}=e;if(D(r)){const i=r[P];de(i,n)&&i.callbacks_.push(function(){Y(e);const s=De(i);ft(e,r,s,t)})}else x(r)&&e.callbacks_.push(function(){const o=O(e);e.type_===3?o.has(r)&&ie(r,n.handledSet_,n):Ee(o,t,e.type_)===r&&n.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&ie(Ee(e.copy_,t,e.type_),n.handledSet_,n)})}function ie(e,t,r){return!r.immer_.autoFreeze_&&r.unfinalizedDrafts_<1||D(e)||t.has(e)||!x(e)||fe(e)||(t.add(e),ce(e,(n,i)=>{if(D(i)){const o=i[P];if(de(o,r)){const s=De(o);re(e,n,s,e.type_),lt(o)}}else x(i)&&ie(i,t,r)})),e}function dr(e,t){const r=ue(e),n={type_:r?1:0,scope_:t?t.scope_:at(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0};let i=n,o=oe;r&&(i=[n],o=B);const{revoke:s,proxy:u}=Proxy.revocable(i,o);return n.draft_=u,n.revoke_=s,[u,n]}var oe={get(e,t){if(t===P)return e;let r=e.scope_.arrayMethodsPlugin_;const n=e.type_===1&&typeof t=="string";if(n&&r!=null&&r.isArrayOperationMethod(t))return r.createMethodInterceptor(e,t);const i=O(e);if(!$e(i,t,e.type_))return pr(e,i,t);const o=i[t];if(e.finalized_||!x(o)||n&&e.operationMethod&&(r!=null&&r.isMutatingArrayMethod(e.operationMethod))&&ir(t))return o;if(o===ge(e.base_,t)){Y(e);const s=e.type_===1?+t:t,u=Ae(e.scope_,o,e,s);return e.copy_[s]=u}return o},has(e,t){return t in O(e)},ownKeys(e){return Reflect.ownKeys(O(e))},set(e,t,r){const n=pt(O(e),t);if(n!=null&&n.set)return n.set.call(e.draft_,r),!0;if(!e.modified_){const i=ge(O(e),t),o=i==null?void 0:i[P];if(o&&o.base_===r)return e.copy_[t]=r,e.assigned_.set(t,!1),!0;if(nr(r,i)&&(r!==void 0||$e(e.base_,t,e.type_)))return!0;Y(e),ke(e)}return e.copy_[t]===r&&(r!==void 0||t in e.copy_)||Number.isNaN(r)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=r,e.assigned_.set(t,!0),fr(e,t,r)),!0},deleteProperty(e,t){return Y(e),ge(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),ke(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){const r=O(e),n=Reflect.getOwnPropertyDescriptor(r,t);return n&&{[Q]:!0,[Ce]:e.type_!==1||t!=="length",[te]:n[te],[V]:r[t]}},defineProperty(){A(11)},getPrototypeOf(e){return W(e.base_)},setPrototypeOf(){A(12)}},B={};for(let e in oe){let t=oe[e];B[e]=function(){const r=arguments;return r[0]=r[0][0],t.apply(this,r)}}B.deleteProperty=function(e,t){return B.set.call(this,e,t,void 0)};B.set=function(e,t,r){return oe.set.call(this,e[0],t,r,e[0])};function ge(e,t){const r=e[P];return(r?O(r):e)[t]}function pr(e,t,r){var i;const n=pt(t,r);return n?V in n?n[V]:(i=n.get)==null?void 0:i.call(e.draft_):void 0}function pt(e,t){if(!(t in e))return;let r=W(e);for(;r;){const n=Object.getOwnPropertyDescriptor(r,t);if(n)return n;r=W(r)}}function ke(e){e.modified_||(e.modified_=!0,e.parent_&&ke(e.parent_))}function Y(e){e.copy_||(e.assigned_=new Map,e.copy_=Re(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var hr=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(t,r,n)=>{if(j(t)&&!j(r)){const o=r;r=t;const s=this;return function(c=o,...l){return s.produce(c,a=>r.call(this,a,...l))}}j(r)||A(6),n!==void 0&&!j(n)&&A(7);let i;if(x(t)){const o=He(this),s=Ae(o,t,void 0);let u=!0;try{i=r(s),u=!1}finally{u?Me(o):Te(o)}return Ke(o,n),Ge(i,o)}else if(!t||!Ie(t)){if(i=r(t),i===void 0&&(i=t),i===st&&(i=void 0),this.autoFreeze_&&Fe(i,!0),n){const o=[],s=[];z(Pe).generateReplacementPatches_(t,i,{patches_:o,inversePatches_:s}),n(o,s)}return i}else A(1,t)},this.produceWithPatches=(t,r)=>{if(j(t))return(s,...u)=>this.produceWithPatches(s,c=>t(c,...u));let n,i;return[this.produce(t,r,(s,u)=>{n=s,i=u}),n,i]},we(e==null?void 0:e.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),we(e==null?void 0:e.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),we(e==null?void 0:e.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){x(e)||A(8),D(e)&&(e=yr(e));const t=He(this),r=Ae(t,e,void 0);return r[P].isManual_=!0,Te(t),r}finishDraft(e,t){const r=e&&e[P];(!r||!r.isManual_)&&A(9);const{scope_:n}=r;return Ke(n,t),Ge(void 0,n)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let r;for(r=t.length-1;r>=0;r--){const i=t[r];if(i.path.length===0&&i.op==="replace"){e=i.value;break}}r>-1&&(t=t.slice(r+1));const n=z(Pe).applyPatches_;return D(e)?n(e,t):this.produce(e,i=>n(i,t))}};function Ae(e,t,r,n){const[i,o]=ae(t)?z(ne).proxyMap_(t,r):le(t)?z(ne).proxySet_(t,r):dr(t,r);return((r==null?void 0:r.scope_)??at()).drafts_.push(i),o.callbacks_=(r==null?void 0:r.callbacks_)??[],o.key_=n,r&&n!==void 0?lr(r,o,n):o.callbacks_.push(function(c){var a;(a=c.mapSetPlugin_)==null||a.fixSetContents(o);const{patchPlugin_:l}=c;o.modified_&&l&&l.generatePatches_(o,[],c)}),i}function yr(e){return D(e)||A(10,e),ht(e)}function ht(e){if(!x(e)||fe(e))return e;const t=e[P];let r,n=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=Re(e,t.scope_.immer_.useStrictShallowCopy_),n=t.scope_.immer_.shouldUseStrictIteration()}else r=Re(e,!0);return ce(r,(i,o)=>{re(r,i,ht(o))},n),t&&(t.finalized_=!1),r}var _r=new hr,yt=_r.produce;function mr(e,t=`expected a function, instead received ${typeof e}`){if(typeof e!="function")throw new TypeError(t)}function br(e,t=`expected an object, instead received ${typeof e}`){if(typeof e!="object")throw new TypeError(t)}function wr(e,t="expected all items to be functions, instead received the following types: "){if(!e.every(r=>typeof r=="function")){const r=e.map(n=>typeof n=="function"?`function ${n.name||"unnamed"}()`:typeof n).join(", ");throw new TypeError(`${t}[${r}]`)}}var Qe=e=>Array.isArray(e)?e:[e];function gr(e){const t=Array.isArray(e[0])?e[0]:e;return wr(t,"createSelector expects all input-selectors to be functions, but received the following types: "),t}function Sr(e,t){const r=[],{length:n}=e;for(let i=0;i<n;i++)r.push(e[i].apply(null,t));return r}var vr=class{constructor(e){this.value=e}deref(){return this.value}},Cr=typeof WeakRef<"u"?WeakRef:vr,Er=0,Ye=1;function H(){return{s:Er,v:void 0,o:null,p:null}}function _t(e,t={}){let r=H();const{resultEqualityCheck:n}=t;let i,o=0;function s(){var f;let u=r;const{length:c}=arguments;for(let d=0,p=c;d<p;d++){const y=arguments[d];if(typeof y=="function"||typeof y=="object"&&y!==null){let b=u.o;b===null&&(u.o=b=new WeakMap);const _=b.get(y);_===void 0?(u=H(),b.set(y,u)):u=_}else{let b=u.p;b===null&&(u.p=b=new Map);const _=b.get(y);_===void 0?(u=H(),b.set(y,u)):u=_}}const l=u;let a;if(u.s===Ye)a=u.v;else if(a=e.apply(null,arguments),o++,n){const d=((f=i==null?void 0:i.deref)==null?void 0:f.call(i))??i;d!=null&&n(d,a)&&(a=d,o!==0&&o--),i=typeof a=="object"&&a!==null||typeof a=="function"?new Cr(a):a}return l.s=Ye,l.v=a,a}return s.clearCache=()=>{r=H(),s.resetResultsCount()},s.resultsCount=()=>o,s.resetResultsCount=()=>{o=0},s}function Rr(e,...t){const r=typeof e=="function"?{memoize:e,memoizeOptions:t}:e,n=(...i)=>{let o=0,s=0,u,c={},l=i.pop();typeof l=="object"&&(c=l,l=i.pop()),mr(l,`createSelector expects an output function after the inputs, but received: [${typeof l}]`);const a={...r,...c},{memoize:f,memoizeOptions:d=[],argsMemoize:p=_t,argsMemoizeOptions:y=[]}=a,b=Qe(d),_=Qe(y),w=gr(i),v=f(function(){return o++,l.apply(null,arguments)},...b),E=p(function(){s++;const h=Sr(w,arguments);return u=v.apply(null,h),u},..._);return Object.assign(E,{resultFunc:l,memoizedResultFunc:v,dependencies:w,dependencyRecomputations:()=>s,resetDependencyRecomputations:()=>{s=0},lastResult:()=>u,recomputations:()=>o,resetRecomputations:()=>{o=0},memoize:f,argsMemoize:p})};return Object.assign(n,{withTypes:()=>n}),n}var mt=Rr(_t),Pr=Object.assign((e,t=mt)=>{br(e,`createStructuredSelector expects first argument to be an object where each property is a selector, instead received a ${typeof e}`);const r=Object.keys(e),n=r.map(o=>e[o]);return t(n,(...o)=>o.reduce((s,u,c)=>(s[r[c]]=u,s),{}))},{withTypes:()=>Pr});function bt(e){return({dispatch:r,getState:n})=>i=>o=>typeof o=="function"?o(r,n,e):i(o)}var Mr=bt(),Tr=bt,kr=typeof window<"u"&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(arguments.length!==0)return typeof arguments[0]=="object"?Z:Z.apply(null,arguments)},Ar=e=>e&&typeof e.match=="function";function U(e,t){function r(...n){if(t){let i=t(...n);if(!i)throw new Error(I(0));return{type:e,payload:i.payload,..."meta"in i&&{meta:i.meta},..."error"in i&&{error:i.error}}}return{type:e,payload:n[0]}}return r.toString=()=>`${e}`,r.type=e,r.match=n=>tr(n)&&n.type===e,r}var wt=class L extends Array{constructor(...t){super(...t),Object.setPrototypeOf(this,L.prototype)}static get[Symbol.species](){return L}concat(...t){return super.concat.apply(this,t)}prepend(...t){return t.length===1&&Array.isArray(t[0])?new L(...t[0].concat(this)):new L(...t.concat(this))}};function Je(e){return x(e)?yt(e,()=>{}):e}function G(e,t,r){return e.has(t)?e.get(t):e.set(t,r(t)).get(t)}function xr(e){return typeof e=="boolean"}var Or=()=>function(t){const{thunk:r=!0,immutableCheck:n=!0,serializableCheck:i=!0,actionCreatorCheck:o=!0}=t??{};let s=new wt;return r&&(xr(r)?s.push(Mr):s.push(Tr(r.extraArgument))),s},Ir="RTK_autoBatch",Ze=e=>t=>{setTimeout(t,e)},Dr=(e={type:"raf"})=>t=>(...r)=>{const n=t(...r);let i=!0,o=!1,s=!1;const u=new Set,c=e.type==="tick"?queueMicrotask:e.type==="raf"?typeof window<"u"&&window.requestAnimationFrame?window.requestAnimationFrame:Ze(10):e.type==="callback"?e.queueNotification:Ze(e.timeout),l=()=>{s=!1,o&&(o=!1,u.forEach(a=>a()))};return Object.assign({},n,{subscribe(a){const f=()=>i&&a(),d=n.subscribe(f);return u.add(a),()=>{d(),u.delete(a)}},dispatch(a){var f;try{return i=!((f=a==null?void 0:a.meta)!=null&&f[Ir]),o=!i,o&&(s||(s=!0,c(l))),n.dispatch(a)}finally{i=!0}}})},Fr=e=>function(r){const{autoBatch:n=!0}=r??{};let i=new wt(e);return n&&i.push(Dr(typeof n=="object"?n:void 0)),i};function Nr(e){const t=Or(),{reducer:r=void 0,middleware:n,devTools:i=!0,preloadedState:o=void 0,enhancers:s=void 0}=e||{};let u;if(typeof r=="function")u=r;else if(Oe(r))u=Zt(r);else throw new Error(I(1));let c;typeof n=="function"?c=n(t):c=t();let l=Z;i&&(l=kr({trace:!1,...typeof i=="object"&&i}));const a=er(...c),f=Fr(a);let d=typeof s=="function"?s(f):f();const p=l(...d);return ot(u,o,p)}function gt(e){const t={},r=[];let n;const i={addCase(o,s){const u=typeof o=="string"?o:o.type;if(!u)throw new Error(I(28));if(u in t)throw new Error(I(29));return t[u]=s,i},addAsyncThunk(o,s){return s.pending&&(t[o.pending.type]=s.pending),s.rejected&&(t[o.rejected.type]=s.rejected),s.fulfilled&&(t[o.fulfilled.type]=s.fulfilled),s.settled&&r.push({matcher:o.settled,reducer:s.settled}),i},addMatcher(o,s){return r.push({matcher:o,reducer:s}),i},addDefaultCase(o){return n=o,i}};return e(i),[t,r,n]}function zr(e){return typeof e=="function"}function jr(e,t){let[r,n,i]=gt(t),o;if(zr(e))o=()=>Je(e());else{const u=Je(e);o=()=>u}function s(u=o(),c){let l=[r[c.type],...n.filter(({matcher:a})=>a(c)).map(({reducer:a})=>a)];return l.filter(a=>!!a).length===0&&(l=[i]),l.reduce((a,f)=>{if(f)if(D(a)){const p=f(a,c);return p===void 0?a:p}else{if(x(a))return yt(a,d=>f(d,c));{const d=f(a,c);if(d===void 0){if(a===null)return a;throw Error("A case reducer on a non-draftable value must not return undefined")}return d}}return a},u)}return s.getInitialState=o,s}var Wr=(e,t)=>Ar(e)?e.match(t):e(t);function Lr(...e){return t=>e.some(r=>Wr(r,t))}var Ur="ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW",Vr=(e=21)=>{let t="",r=e;for(;r--;)t+=Ur[Math.random()*64|0];return t},$r=["name","message","stack","code"],Se=class{constructor(e,t){pe(this,"_type");this.payload=e,this.meta=t}},et=class{constructor(e,t){pe(this,"_type");this.payload=e,this.meta=t}},Br=e=>{if(typeof e=="object"&&e!==null){const t={};for(const r of $r)typeof e[r]=="string"&&(t[r]=e[r]);return t}return{message:String(e)}},tt="External signal was aborted",St=(()=>{function e(t,r,n){const i=U(t+"/fulfilled",(c,l,a,f)=>({payload:c,meta:{...f||{},arg:a,requestId:l,requestStatus:"fulfilled"}})),o=U(t+"/pending",(c,l,a)=>({payload:void 0,meta:{...a||{},arg:l,requestId:c,requestStatus:"pending"}})),s=U(t+"/rejected",(c,l,a,f,d)=>({payload:f,error:(n&&n.serializeError||Br)(c||"Rejected"),meta:{...d||{},arg:a,requestId:l,rejectedWithValue:!!f,requestStatus:"rejected",aborted:(c==null?void 0:c.name)==="AbortError",condition:(c==null?void 0:c.name)==="ConditionError"}}));function u(c,{signal:l}={}){return(a,f,d)=>{const p=n!=null&&n.idGenerator?n.idGenerator(c):Vr(),y=new AbortController;let b,_;function w(E){_=E,y.abort()}l&&(l.aborted?w(tt):l.addEventListener("abort",()=>w(tt),{once:!0}));const v=(async function(){var h,S;let E;try{let C=(h=n==null?void 0:n.condition)==null?void 0:h.call(n,c,{getState:f,extra:d});if(Kr(C)&&(C=await C),C===!1||y.signal.aborted)throw{name:"ConditionError",message:"Aborted due to condition callback returning false."};const k=new Promise((g,F)=>{b=()=>{F({name:"AbortError",message:_||"Aborted"})},y.signal.addEventListener("abort",b,{once:!0})});a(o(p,c,(S=n==null?void 0:n.getPendingMeta)==null?void 0:S.call(n,{requestId:p,arg:c},{getState:f,extra:d}))),E=await Promise.race([k,Promise.resolve(r(c,{dispatch:a,getState:f,extra:d,requestId:p,signal:y.signal,abort:w,rejectWithValue:(g,F)=>new Se(g,F),fulfillWithValue:(g,F)=>new et(g,F)})).then(g=>{if(g instanceof Se)throw g;return g instanceof et?i(g.payload,p,c,g.meta):i(g,p,c)})])}catch(C){E=C instanceof Se?s(null,p,c,C.payload,C.meta):s(C,p,c)}finally{b&&y.signal.removeEventListener("abort",b)}return n&&!n.dispatchConditionRejection&&s.match(E)&&E.meta.condition||a(E),E})();return Object.assign(v,{abort:w,requestId:p,arg:c,unwrap(){return v.then(qr)}})}}return Object.assign(u,{pending:o,rejected:s,fulfilled:i,settled:Lr(s,i),typePrefix:t})}return e.withTypes=()=>e,e})();function qr(e){if(e.meta&&e.meta.rejectedWithValue)throw e.payload;if(e.error)throw e.error;return e.payload}function Kr(e){return e!==null&&typeof e=="object"&&typeof e.then=="function"}var Hr=Symbol.for("rtk-slice-createasyncthunk");function Gr(e,t){return`${e}/${t}`}function Xr({creators:e}={}){var r;const t=(r=e==null?void 0:e.asyncThunk)==null?void 0:r[Hr];return function(i){const{name:o,reducerPath:s=o}=i;if(!o)throw new Error(I(11));const u=(typeof i.reducers=="function"?i.reducers(Yr()):i.reducers)||{},c=Object.keys(u),l={sliceCaseReducersByName:{},sliceCaseReducersByType:{},actionCreators:{},sliceMatchers:[]},a={addCase(m,h){const S=typeof m=="string"?m:m.type;if(!S)throw new Error(I(12));if(S in l.sliceCaseReducersByType)throw new Error(I(13));return l.sliceCaseReducersByType[S]=h,a},addMatcher(m,h){return l.sliceMatchers.push({matcher:m,reducer:h}),a},exposeAction(m,h){return l.actionCreators[m]=h,a},exposeCaseReducer(m,h){return l.sliceCaseReducersByName[m]=h,a}};c.forEach(m=>{const h=u[m],S={reducerName:m,type:Gr(o,m),createNotation:typeof i.reducers=="function"};Zr(h)?tn(S,h,a,t):Jr(S,h,a)});function f(){const[m={},h=[],S=void 0]=typeof i.extraReducers=="function"?gt(i.extraReducers):[i.extraReducers],C={...m,...l.sliceCaseReducersByType};return jr(i.initialState,k=>{for(let g in C)k.addCase(g,C[g]);for(let g of l.sliceMatchers)k.addMatcher(g.matcher,g.reducer);for(let g of h)k.addMatcher(g.matcher,g.reducer);S&&k.addDefaultCase(S)})}const d=m=>m,p=new Map,y=new WeakMap;let b;function _(m,h){return b||(b=f()),b(m,h)}function w(){return b||(b=f()),b.getInitialState()}function v(m,h=!1){function S(k){let g=k[m];return typeof g>"u"&&h&&(g=G(y,S,w)),g}function C(k=d){const g=G(p,h,()=>new WeakMap);return G(g,k,()=>{const F={};for(const[Et,Rt]of Object.entries(i.selectors??{}))F[Et]=Qr(Rt,k,()=>G(y,k,w),h);return F})}return{reducerPath:m,getSelectors:C,get selectors(){return C(S)},selectSlice:S}}const E={name:o,reducer:_,actions:l.actionCreators,caseReducers:l.sliceCaseReducersByName,getInitialState:w,...v(s),injectInto(m,{reducerPath:h,...S}={}){const C=h??s;return m.inject({reducerPath:C,reducer:_},S),{...E,...v(C,!0)}}};return E}}function Qr(e,t,r,n){function i(o,...s){let u=t(o);return typeof u>"u"&&n&&(u=r()),e(u,...s)}return i.unwrapped=e,i}var Ne=Xr();function Yr(){function e(t,r){return{_reducerDefinitionType:"asyncThunk",payloadCreator:t,...r}}return e.withTypes=()=>e,{reducer(t){return Object.assign({[t.name](...r){return t(...r)}}[t.name],{_reducerDefinitionType:"reducer"})},preparedReducer(t,r){return{_reducerDefinitionType:"reducerWithPrepare",prepare:t,reducer:r}},asyncThunk:e}}function Jr({type:e,reducerName:t,createNotation:r},n,i){let o,s;if("reducer"in n){if(r&&!en(n))throw new Error(I(17));o=n.reducer,s=n.prepare}else o=n;i.addCase(e,o).exposeCaseReducer(t,o).exposeAction(t,s?U(e,s):U(e))}function Zr(e){return e._reducerDefinitionType==="asyncThunk"}function en(e){return e._reducerDefinitionType==="reducerWithPrepare"}function tn({type:e,reducerName:t},r,n,i){if(!i)throw new Error(I(18));const{payloadCreator:o,fulfilled:s,pending:u,rejected:c,settled:l,options:a}=r,f=i(e,o,a);n.exposeAction(t,f),s&&n.addCase(f.fulfilled,s),u&&n.addCase(f.pending,u),c&&n.addCase(f.rejected,c),l&&n.addMatcher(f.settled,l),n.exposeCaseReducer(t,{fulfilled:s||X,pending:u||X,rejected:c||X,settled:l||X})}function X(){}function I(e){return`Minified Redux Toolkit error #${e}; visit https://redux-toolkit.js.org/Errors?code=${e} for the full message or use the non-minified dev environment for full errors. `}const rn=St("auth/getAppTree",async(e,{rejectWithValue:t})=>{try{return(await kt()).data}catch{return t("Failed to fetch tree data")}}),nn={appTree:null},on=Ne({name:"treeSlice",initialState:nn,reducers:{},extraReducers:e=>{e.addCase(rn.fulfilled,(t,r)=>{t.appTree=r.payload})}}),wn=e=>e.treeReducer.appTree,sn=on.reducer,rt=500,cn={agentStatus:"not-installed",agentError:null,events:[],filter:"all",installedInFile:null},vt=Ne({name:"debug",initialState:cn,reducers:{setAgentStatus(e,t){e.agentStatus=t.payload,t.payload!=="error"&&(e.agentError=null)},setAgentError(e,t){e.agentStatus="error",e.agentError=t.payload},setInstalledInFile(e,t){e.installedInFile=t.payload,e.agentStatus="installed"},addEvent(e,t){const r=t.payload,n=e.events.findIndex(i=>i.id===r.id);n!==-1?e.events[n]=r:(e.events.unshift(r),e.events.length>rt&&(e.events.length=rt))},clearEvents(e){e.events=[]},setFilter(e,t){e.filter=t.payload}}}),{setAgentStatus:gn,setAgentError:Sn,setInstalledInFile:vn,addEvent:Cn,clearEvents:En,setFilter:Rn}=vt.actions,Pn=e=>e.debugReducer.agentStatus,un=e=>e.debugReducer.events,an=e=>e.debugReducer.filter;mt(un,an,(e,t)=>t==="all"?e:t==="console"?e.filter(r=>r.type==="console"):t==="network"?e.filter(r=>r.type==="network"):e);const ln=vt.reducer,ve=St("file/getContent",async(e,{rejectWithValue:t})=>{try{return(await At(e)).data}catch{return t("Failed to fetch file content")}}),fn={selectedFile:null,loading:!1},Ct=Ne({name:"fileSlice",initialState:fn,reducers:{clearFile:e=>{e.selectedFile=null}},extraReducers:e=>{e.addCase(ve.pending,t=>{t.loading=!0}).addCase(ve.fulfilled,(t,r)=>{t.selectedFile=r.payload,t.loading=!1}).addCase(ve.rejected,t=>{t.loading=!1})}}),{clearFile:Mn}=Ct.actions,Tn=e=>e.fileReducer.selectedFile,kn=e=>e.fileReducer.loading,dn=Ct.reducer,An=Nr({reducer:{treeReducer:sn,fileReducer:dn,debugReducer:ln}});export{_n as P,Pn as a,mn as b,Tn as c,rn as d,kn as e,Mn as f,ve as g,an as h,un as i,Rn as j,En as k,gn as l,Sn as m,vn as n,Cn as o,An as p,wn as s,bn as u};
@@ -0,0 +1,18 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <title>codetraxis</title>
8
+ <script type="module" crossorigin src="/assets/index-BMv7qJps.js"></script>
9
+ <link rel="modulepreload" crossorigin href="/assets/react-vendor-BhKDh-5n.js">
10
+ <link rel="modulepreload" crossorigin href="/assets/axios-vendor-B_3Om2-t.js">
11
+ <link rel="modulepreload" crossorigin href="/assets/redux-vendor-D-3X9xqH.js">
12
+ <link rel="modulepreload" crossorigin href="/assets/babel-vendor-B4E1Dfn4.js">
13
+ <link rel="stylesheet" crossorigin href="/assets/index-BHUsNYUv.css">
14
+ </head>
15
+ <body>
16
+ <div id="root"></div>
17
+ </body>
18
+ </html>
package/package.json ADDED
@@ -0,0 +1,68 @@
1
+ {
2
+ "name": "codetraxis",
3
+ "version": "1.0.0",
4
+ "description": "React & React Native debug tool with network inspector, console timeline and live file explorer",
5
+ "keywords": [
6
+ "react debug tool",
7
+ "network inspector",
8
+ "console logger",
9
+ "devtools alternative",
10
+ "axios interceptor",
11
+ "fetch interceptor",
12
+ "debug panel",
13
+ "developer tool",
14
+ "react native debug",
15
+ "expo debug tool",
16
+ "file explorer",
17
+ "console timeline",
18
+ "debug console",
19
+ "local devtools",
20
+ "xhr inspector"
21
+ ],
22
+ "license": "MIT",
23
+ "engines": {
24
+ "node": ">=18.0.0"
25
+ },
26
+ "bin": {
27
+ "codetraxis": "bin/cli.js"
28
+ },
29
+ "main": "server/dist/index.js",
30
+ "files": [
31
+ "bin",
32
+ "server/dist",
33
+ "client/dist"
34
+ ],
35
+ "scripts": {
36
+ "dev": "concurrently \"npm run dev --prefix client\" \"npm run dev --prefix server\"",
37
+ "build:server": "tsc -p server/tsconfig.json",
38
+ "build:client": "vite build --config client/vite.config.ts",
39
+ "build": "npm run build:server && npm run build:client",
40
+ "start": "node server/dist/index.js",
41
+ "codetraxis": "node bin/cli.js ."
42
+ },
43
+ "devDependencies": {
44
+ "concurrently": "^9.0.0",
45
+ "vite": "^6.0.0"
46
+ },
47
+ "dependencies": {
48
+ "get-port": "^7.2.0",
49
+ "open": "^11.0.0",
50
+ "express": "^5.2.1",
51
+ "cors": "^2.8.6",
52
+ "dotenv": "^17.3.1",
53
+ "chokidar": "^5.0.0",
54
+ "ws": "^8.20.0",
55
+ "ignore": "^7.0.5",
56
+ "@babel/parser": "^7.29.2",
57
+ "@babel/types": "^7.29.0"
58
+ },
59
+ "repository": {
60
+ "type": "git",
61
+ "url": "git+https://github.com/Gagik666/codetraxis.git"
62
+ },
63
+ "author": "Gagik Vardanyan",
64
+ "bugs": {
65
+ "url": "https://github.com/Gagik666/codetraxis/issues"
66
+ },
67
+ "homepage": "https://github.com/Gagik666/codetraxis#readme"
68
+ }
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const express_1 = __importDefault(require("express"));
7
+ const cors_1 = __importDefault(require("cors"));
8
+ const dotenv_1 = __importDefault(require("dotenv"));
9
+ const node_http_1 = __importDefault(require("node:http"));
10
+ const node_path_1 = __importDefault(require("node:path"));
11
+ const node_fs_1 = __importDefault(require("node:fs"));
12
+ const tree_route_1 = __importDefault(require("./routes/tree.route"));
13
+ const file_route_1 = __importDefault(require("./routes/file.route"));
14
+ const agent_route_1 = __importDefault(require("./routes/agent.route"));
15
+ const watcherService_1 = require("./utils/watcher/watcherService");
16
+ const debugHub_1 = require("./utils/agent/debugHub");
17
+ dotenv_1.default.config({ quiet: true });
18
+ const app = (0, express_1.default)();
19
+ const PORT = parseInt(process.env.PORT ?? '3333', 10);
20
+ app.use((0, cors_1.default)({
21
+ origin: (origin, cb) => {
22
+ // Allow requests with no origin (curl, Postman, same-origin)
23
+ // and only localhost / 127.0.0.1 browser origins
24
+ if (!origin || /^https?:\/\/(localhost|127\.0\.0\.1)(:\d+)?$/.test(origin)) {
25
+ cb(null, true);
26
+ }
27
+ else {
28
+ cb(new Error('CORS: external origin blocked'));
29
+ }
30
+ },
31
+ }));
32
+ app.use(express_1.default.json());
33
+ app.use("/api/tree", tree_route_1.default);
34
+ app.use("/api/file", file_route_1.default);
35
+ app.use("/api/agent", agent_route_1.default);
36
+ // ── Serve built client (production mode) ──────────────────────────────────────
37
+ // __dirname в CommonJS = server/dist, поэтому ../../client/dist
38
+ const clientDist = node_path_1.default.resolve(__dirname, '../../client/dist');
39
+ const clientIndex = node_path_1.default.join(clientDist, 'index.html');
40
+ if (node_fs_1.default.existsSync(clientDist)) {
41
+ app.use(express_1.default.static(clientDist));
42
+ }
43
+ // SPA fallback — всё остальное (не /api/*) отдаём index.html
44
+ app.get('/{*path}', (_req, res) => {
45
+ if (!node_fs_1.default.existsSync(clientIndex)) {
46
+ res.status(503).send('Client not built. Run: npm run build:client');
47
+ return;
48
+ }
49
+ // Используем { root } — это единственный надёжный способ в Express 4/5
50
+ res.sendFile('index.html', { root: clientDist });
51
+ });
52
+ // Создаём HTTP-сервер вручную чтобы подцепить WebSocket на тот же порт
53
+ const httpServer = node_http_1.default.createServer(app);
54
+ // Debug WebSocket hub (агент → /agent, viewer → /debug)
55
+ (0, debugHub_1.setupDebugHub)(httpServer);
56
+ // Bind to localhost only — never expose to the network
57
+ const HOST = '127.0.0.1';
58
+ httpServer.listen(PORT, HOST, () => {
59
+ const targetDir = process.env.WORKING_DIR || process.cwd();
60
+ process.stdout.write(`ready on http://localhost:${PORT}\nWatching: ${targetDir}\n`);
61
+ (0, watcherService_1.startWatcher)(targetDir, httpServer);
62
+ });
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const express_1 = require("express");
37
+ const agentInstaller_1 = require("../utils/agent/agentInstaller");
38
+ const router = (0, express_1.Router)();
39
+ /**
40
+ * POST /api/agent/install
41
+ * Устанавливает агент в target-проект.
42
+ */
43
+ router.post("/install", async (req, res) => {
44
+ const targetDir = process.env.WORKING_DIR || process.cwd();
45
+ const result = await (0, agentInstaller_1.installAgent)(targetDir);
46
+ // Всегда возвращаем 200 — клиент проверяет result.success сам.
47
+ // 400 приводит к тому, что axios бросает исключение и result.error теряется.
48
+ res.json(result);
49
+ });
50
+ /**
51
+ * GET /api/agent/config
52
+ * Возвращает targetDir который сервер использует для поиска entry-файла.
53
+ * Полезно для отладки.
54
+ */
55
+ router.get("/config", (_req, res) => {
56
+ res.json({
57
+ targetDir: process.env.WORKING_DIR || process.cwd(),
58
+ workingDir: process.env.WORKING_DIR ?? null,
59
+ cwd: process.cwd(),
60
+ });
61
+ });
62
+ /**
63
+ * GET /api/agent/status
64
+ * Проверяет, установлен ли агент.
65
+ */
66
+ router.get("/status", async (req, res) => {
67
+ const { findEntryFile } = await Promise.resolve().then(() => __importStar(require("../utils/agent/agentInstaller")));
68
+ const fs = await Promise.resolve().then(() => __importStar(require("node:fs/promises")));
69
+ const path = await Promise.resolve().then(() => __importStar(require("node:path")));
70
+ const targetDir = process.env.WORKING_DIR || process.cwd();
71
+ const entryFile = await findEntryFile(targetDir);
72
+ if (!entryFile) {
73
+ res.json({ installed: false });
74
+ return;
75
+ }
76
+ try {
77
+ const source = await fs.readFile(entryFile, "utf-8");
78
+ const installed = source.includes("./codetraxisAgent");
79
+ res.json({ installed, entryFile: installed ? entryFile : undefined });
80
+ }
81
+ catch {
82
+ res.json({ installed: false });
83
+ }
84
+ });
85
+ /**
86
+ * DELETE /api/agent/uninstall
87
+ * Удаляет агент из target-проекта: убирает строку импорта и удаляет codetraxisAgent.ts.
88
+ */
89
+ router.delete("/uninstall", async (_req, res) => {
90
+ const targetDir = process.env.WORKING_DIR || process.cwd();
91
+ const result = await (0, agentInstaller_1.removeAgent)(targetDir);
92
+ res.json(result);
93
+ });
94
+ exports.default = router;
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const express_1 = require("express");
7
+ const node_fs_1 = __importDefault(require("node:fs"));
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ const router = (0, express_1.Router)();
10
+ // ─── Helpers ─────────────────────────────────────────────────────────────────
11
+ const resolveAndGuard = (targetDir, filePath) => {
12
+ if (!filePath)
13
+ return { error: "path query param is required", status: 400 };
14
+ const absolute = node_path_1.default.resolve(targetDir, filePath);
15
+ const root = node_path_1.default.resolve(targetDir);
16
+ // path traversal guard
17
+ if (!absolute.startsWith(root + node_path_1.default.sep) && absolute !== root) {
18
+ return { error: "Access denied", status: 403 };
19
+ }
20
+ if (!node_fs_1.default.existsSync(absolute)) {
21
+ return { error: "File not found", status: 404 };
22
+ }
23
+ return { absolute };
24
+ };
25
+ // ─── GET /api/file — JSON {path, content} ────────────────────────────────────
26
+ router.get("/", (req, res) => {
27
+ const targetDir = process.env.WORKING_DIR || process.cwd();
28
+ const filePath = req.query.path;
29
+ const result = resolveAndGuard(targetDir, filePath);
30
+ if ("error" in result) {
31
+ res.status(result.status).json({ error: result.error });
32
+ return;
33
+ }
34
+ try {
35
+ const content = node_fs_1.default.readFileSync(result.absolute, "utf-8");
36
+ res.json({ path: filePath, content });
37
+ }
38
+ catch {
39
+ res.status(500).json({ error: "Failed to read file" });
40
+ }
41
+ });
42
+ // ─── GET /api/file/raw — raw bytes with correct Content-Type ─────────────────
43
+ router.get("/raw", (req, res) => {
44
+ const targetDir = process.env.WORKING_DIR || process.cwd();
45
+ const filePath = req.query.path;
46
+ const result = resolveAndGuard(targetDir, filePath);
47
+ if ("error" in result) {
48
+ res.status(result.status).json({ error: result.error });
49
+ return;
50
+ }
51
+ // sendFile requires an absolute path and handles Content-Type automatically
52
+ res.sendFile(result.absolute, (err) => {
53
+ if (err) {
54
+ res.status(500).json({ error: "Failed to send file" });
55
+ }
56
+ });
57
+ });
58
+ exports.default = router;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ // server/src/routes/tree.route.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const express_1 = require("express");
5
+ const buildTree_1 = require("../utils/file/buildTree");
6
+ const router = (0, express_1.Router)();
7
+ router.get("/", (_req, res) => {
8
+ // WORKING_DIR передаётся из bin/cli.js через env при запуске сервера
9
+ const targetDir = process.env.WORKING_DIR || process.cwd();
10
+ const tree = (0, buildTree_1.buildTree)(targetDir);
11
+ res.json(tree);
12
+ });
13
+ exports.default = router;