PageSourceSearch

https://www.ingan.ai/_next/static/chunks/97641-d91204b9c21f3d31.js?dpl=dpl_ACX1xsfBKk2CtymoSfpmDvrNEp9V

js ingan.ai collected 2026-10-05 13:37:03 UTC 10,939 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[97641],{1705:(t,e,s)=>{s.d(e,{ConnectionIndicator:()=>a,SubscriptionMonitor:()=>r});var i=s(95155);s(12115);var n=s(20350);function r(){let{connectionStatus:t,metrics:e,activeSubscriptions:s}=(0,n.useSubscriptionContext)();return null}function a(){let{connectionStatus:t}=(0,n.useSubscriptionContext)();return(0,i.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,i.jsx)("div",{className:"w-2 h-2 rounded-full transition-colors ".concat("connected"===t?"bg-green-500":"connecting"===t?"bg-yellow-500 animate-pulse":"bg-red-500")}),(0,i.jsx)("span",{className:"text-xs text-gray-500 capitalize",children:t})]})}},20350:(t,e,s)=>{s.d(e,{SubscriptionProvider:()=>u,useSubscriptionContext:()=>o});var i=s(95155),n=s(12115),r=s(39628),a=s(7037);let c=(0,n.createContext)(void 0);function u(t){let{children:e}=t,[s,u]=(0,n.useState)("disconnected"),[o,l]=(0,n.useState)(()=>r.D.getSubscriptionMetrics()),[h,b]=(0,n.useState)([]);return(0,n.useEffect)(()=>{a.supabaseClient&&r.D.initialize(a.supabaseClient);let t=r.D.onStatusChange(t=>{u(t)});u(r.D.getConnectionStatus());let e=setInterval(()=>{l(r.D.getSubscriptionMetrics()),b(r.D.getActiveSubscriptions())},2e3);return()=>{t(),clearInterval(e)}},[]),(0,i.jsx)(c.Provider,{value:{connectionStatus:s,metrics:o,activeSubscriptions:h},children:e})}function o(){let t=(0,n.useContext)(c);if(!t)throw Error("useSubscriptionContext must be used within SubscriptionProvider");return t}},21281:(t,e,s)=>{s.d(e,{useAllReportUpdates:()=>b,useCompatibilityReportUpdates:()=>h,useConnectionStatus:()=>c,useMultiTableSubscription:()=>o,useRealtimeSubscription:()=>a,useReportUpdates:()=>l,useSubscriptionMetrics:()=>u});var i=s(12115),n=s(39628),r=s(7037);function a(t,e,s){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],c=(0,i.useRef)(null),u=(0,i.useRef)(s);(0,i.useEffect)(()=>{u.current=s},[s]),(0,i.useEffect)(()=>{let s=!0;r.supabaseClient&&n.D.initialize(r.supabaseClient);let i=(Array.isArray(e)?e:[e]).filter(t=>!1!==t.enabled);if(0===i.length)return;let a=i.map(t=>({event:t.event,schema:t.schema||"public",table:t.table,filter:t.filter,callback:t=>u.current(t)}));return n.D.subscribe(t,a).then(t=>{s?c.current=t:t()}).catch(t=>{}),()=>{s=!1;let t=c.current;t&&(c.current=null,t())}},[t,...a])}function c(){let[t,e]=(0,i.useState)(()=>n.D.getConnectionStatus());return(0,i.useEffect)(()=>n.D.onStatusChange(e),[]),t}function u(){let[t,e]=(0,i.useState)(()=>n.D.getSubscriptionMetrics());return(0,i.useEffect)(()=>{let t=setInterval(()=>{e(n.D.getSubscriptionMetrics())},1e3);return()=>clearInterval(t)},[]),t}function o(t,e){let s=!(arguments.length>2)||void 0===arguments[2]||arguments[2],a=(0,i.useRef)(null);(0,i.useEffect)(()=>{let i=!0;if(!s||!r.supabaseClient)return;n.D.initialize(r.supabaseClient);let c=e.map(t=>({event:t.event,schema:"public",table:t.table,filter:t.filter,callback:e=>{t.callback(e)}}));return n.D.subscribe(t,c).then(t=>{i?a.current=t:t()}).catch(t=>{}),()=>{i=!1;let t=a.current;t&&(a.current=null,t())}},[t,s])}function l(t,e){let s=!(arguments.length>2)||void 0===arguments[2]||arguments[2];a("user-reports-".concat(t),{event:"*",table:"ingan_ai_reports",filter:"request_user_id=eq.".concat(t),enabled:s},e,[t,s])}function h(t,e){let s=!(arguments.length>2)||void 0===arguments[2]||arguments[2];a("user-compatibility-reports-".concat(t),{event:"*",table:"ingan_ai_compatibility_reports",filter:"request_user_id=eq.".concat(t),enabled:s},e,[t,s])}function b(t,e,s){let i=!(arguments.length>3)||void 0===arguments[3]||arguments[3];o("user-all-reports-".concat(t),[{table:"ingan_ai_reports",event:"*",filter:"request_user_id=eq.".concat(t),callback:e},{table:"ingan_ai_compatibility_reports",event:"*",filter:"request_user_id=eq.".concat(t),callback:s},{table:"ingan_ai_ipc_reports",event:"*",filter:"user_id=eq.".concat(t),callback:e},{table:"ingan_ai_ecr_reports",event:"*",filter:"user_id=eq.".concat(t),callback:e},{table:"ingan_ai_counsel_reports",event:"*",filter:"user_id=eq.".concat(t),callback:e},{table:"ingan_ai_m_report_results",event:"*",filter:"request_user_id=eq.".concat(t),callback:e},{table:"ingan_ai_w_report_results",event:"*",filter:"request_user_id=eq.".concat(t),callback:e},{table:"ingan_ai_hd_reports",event:"*",filter:"user_id=eq.".concat(t),callback:e},{table:"ingan_ai_hsp_reports",event:"*",filter:"user_id=eq.".concat(t),callback:e}],i)}},39628:(t,e,s)=>{s.d(e,{D:()=>n});
1class i{static getInstance(){return i.instance||(i.instance=new i),i.instance}initialize(t){this.isInitialized&&this.supabaseClient===t||(this.supabaseClient=t,this.isInitialized=!0,this.monitorInterval&&clearInterval(this.monitorInterval),this.monitorConnectionStatus(),this.updateConnectionStatus())}monitorConnectionStatus(){this.supabaseClient&&(this.monitorInterval=setInterval(()=>{this.updateConnectionStatus(),this.checkAndRetryFailedChannels(),this.checkWebSocketConnection()},5e3))}checkWebSocketConnection(){let t=this.subscriptions.size>0,e=Array.from(this.subscriptions.values()).some(t=>"error"===t.status);t&&e&&this.handleWebSocketReconnection()}handleWebSocketReconnection(){this.subscriptions.forEach((t,e)=>{if("error"===t.status){try{var s;null==(s=this.supabaseClient)||s.removeChannel(t.channel)}catch(t){}if(this.supabaseClient){let s=this.supabaseClient.channel(e);t.configs.forEach(t=>{s.on("postgres_changes",{event:t.event,schema:t.schema,table:t.table,filter:t.filter},t.callback)}),t.channel=s,t.status="unsubscribed",t.retryCount=0,this.clearRetryTimeout(e),this.subscribeChannel(e,t)}}})}checkAndRetryFailedChannels(){this.subscriptions.forEach((t,e)=>{if("error"===t.status&&!this.retryTimeouts.has(e)){let t=setTimeout(()=>{let t=this.subscriptions.get(e);t&&"error"===t.status&&(t.status="unsubscribed",this.subscribeChannel(e,t))},1e3);this.retryTimeouts.set(e,t)}})}updateConnectionStatus(){let t,e=Array.from(this.subscriptions.values()).some(t=>"subscribed"===t.status),s=Array.from(this.subscriptions.values()).some(t=>"subscribing"===t.status);(t=e?"connected":s||this.subscriptions.size>0?"connecting":"disconnected")!==this.connectionStatus&&(this.connectionStatus=t,this.notifyStatusListeners(t))}notifyStatusListeners(t){this.statusListeners.forEach(e=>e(t))}onStatusChange(t){return this.statusListeners.add(t),()=>{this.statusListeners.delete(t)}}generateSubscriptionKey(t,e){return"".concat(t,":").concat(e.table,":").concat(e.event,":").concat(e.filter||"no-filter")}async subscribe(t,e){if(!this.supabaseClient)throw Error("SupabaseClient not initialized");let s=this.subscriptions.get(t),i=!1;s||(s={channel:this.supabaseClient.channel(t),refCount:0,configs:new Map,status:"unsubscribed",retryCount:0},this.subscriptions.set(t,s),i=!0);let n=!1;return e.forEach(e=>{let i=this.generateSubscriptionKey(t,e);s.configs.has(i)||(s.channel.on("postgres_changes",{event:e.event,schema:e.schema,table:e.table,filter:e.filter},e.callback),s.configs.set(i,e),n=!0)}),s.refCount++,"unsubscribed"===s.status&&(i||n)?await this.subscribeChannel(t,s):"subscribed"===s.status||"subscribing"===s.status||"error"===s.status&&(s.status="unsubscribed",await this.subscribeChannel(t,s)),()=>{this.unsubscribe(t,e)}}async subscribeChannel(t,e){try{e.status="subscribing",this.updateConnectionStatus();let s=new Promise((s,i)=>{let n=!1,r=setTimeout(()=>{n||"subscribed"===e.status||(e.status="error",this.updateConnectionStatus(),n=!0,i(Error("Subscription timeout after 15 seconds")))},15e3);e.channel.subscribe(a=>{if("SUBSCRIBED"===a)clearTimeout(r),e.status="subscribed",e.retryCount=0,e.lastError=void 0,this.clearRetryTimeout(t),this.updateConnectionStatus(),n||(n=!0,s());else if("CLOSED"===a)clearTimeout(r),e.status="unsubscribed",this.updateConnectionStatus(),n||(n=!0,s());else if("CHANNEL_ERROR"===a||"TIMED_OUT"===a){clearTimeout(r),e.status="error",this.updateConnectionStatus();let s="Channel ".concat(t," subscription failed with status: ").concat(a);n||(n=!0,i(Error(s)))}})});await s}catch(n){if(e.lastError=n,e.retryCount++,e.retryCount>10)return;let s=Math.min(this.MIN_RETRY_DELAY_MS*Math.pow(this.RETRY_BACKOFF_FACTOR,e.retryCount-1),this.MAX_RETRY_DELAY_MS);this.clearRetryTimeout(t);let i=setTimeout(()=>{let e=this.subscriptions.get(t);e&&"subscribed"!==e.status&&this.subscribeChannel(t,e)},s);this.retryTimeouts.set(t,i)}}clearRetryTimeout(t){let e=this.retryTimeouts.get(t);e&&(clearTimeout(e),this.retryTimeouts.delete(t))}unsubscribe(t,e){let s=this.subscriptions.get(t);if(s)if(s.refCount--,s.refCount<=0){this.clearRetryTimeout(t),s.status="unsubscribed";try{var i;null==(i=this.supabaseClient)||i.removeChannel(s.channel)}catch(t){}this.subscriptions.delete(t),this.updateConnectionStatus()}
1else e.forEach(e=>{let i=this.generateSubscriptionKey(t,e);s.configs.delete(i)})}unsubscribeAll(){this.retryTimeouts.forEach(t=>clearTimeout(t)),this.retryTimeouts.clear(),this.subscriptions.forEach((t,e)=>{var s;null==(s=this.supabaseClient)||s.removeChannel(t.channel)}),this.subscriptions.clear(),this.updateConnectionStatus()}getConnectionStatus(){return this.connectionStatus}getSubscriptionStatus(t){var e;return null==(e=this.subscriptions.get(t))?void 0:e.status}getActiveSubscriptions(){return Array.from(this.subscriptions.keys())}getSubscriptionMetrics(){let t={totalChannels:this.subscriptions.size,subscribedChannels:0,errorChannels:0,totalConfigs:0,retryingChannels:this.retryTimeouts.size};return this.subscriptions.forEach(e=>{"subscribed"===e.status&&t.subscribedChannels++,"error"===e.status&&t.errorChannels++,t.totalConfigs+=e.configs.size}),t}forceReconnectAll(){this.subscriptions.forEach((t,e)=>{"subscribed"!==t.status&&(this.clearRetryTimeout(e),t.retryCount=0,t.status="unsubscribed",this.subscribeChannel(e,t))})}reconnectFailedChannels(){let t=Array.from(this.subscriptions.entries()).filter(t=>{let[e,s]=t;return"error"===s.status});if(0!==t.length)return t.forEach(t=>{let[e,s]=t;try{var i;null==(i=this.supabaseClient)||i.removeChannel(s.channel)}catch(t){}if(this.supabaseClient){let t=this.supabaseClient.channel(e);s.configs.forEach(e=>{t.on("postgres_changes",{event:e.event,schema:e.schema,table:e.table,filter:e.filter},e.callback)}),s.channel=t,s.status="unsubscribed",s.retryCount=0,s.lastError=void 0,this.clearRetryTimeout(e),this.subscribeChannel(e,s)}}),t.length}destroy(){this.monitorInterval&&(clearInterval(this.monitorInterval),this.monitorInterval=null),this.retryTimeouts.forEach(t=>clearTimeout(t)),this.retryTimeouts.clear(),this.unsubscribeAll(),this.statusListeners.clear(),this.isInitialized=!1,this.supabaseClient=null}constructor(){this.subscriptions=new Map,this.supabaseClient=null,this.connectionStatus="disconnected",this.statusListeners=new Set,this.MIN_RETRY_DELAY_MS=1e3,this.MAX_RETRY_DELAY_MS=3e4,this.RETRY_BACKOFF_FACTOR=1.5,this.monitorInterval=null,this.retryTimeouts=new Map,this.isInitialized=!1}}i.instance=null;let n=i.getInstance()}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.