lula2 0.5.0-nightly.3 → 0.5.0-nightly.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_app/immutable/chunks/{Bndgm7It.js → CuS0omsf.js} +1 -1
- package/dist/_app/immutable/chunks/{qH_RjTuQ.js → D-5clvZu.js} +1 -1
- package/dist/_app/immutable/chunks/{BMsYC0uK.js → DVoDE4TS.js} +2 -2
- package/dist/_app/immutable/chunks/_AYfKURK.js +2 -0
- package/dist/_app/immutable/entry/{app.z7qxA8m8.js → app.CRYrJG-e.js} +2 -2
- package/dist/_app/immutable/entry/start.CwULaM1a.js +1 -0
- package/dist/_app/immutable/nodes/{0.jiGrK4iR.js → 0.CkrBULAS.js} +1 -1
- package/dist/_app/immutable/nodes/{1.DZaKLIcc.js → 1.CWGuUkdE.js} +1 -1
- package/dist/_app/immutable/nodes/{2.D5smJCAS.js → 2.BmCsrzen.js} +1 -1
- package/dist/_app/immutable/nodes/{3.Bi3J5hq2.js → 3.BrLSOP0g.js} +1 -1
- package/dist/_app/immutable/nodes/{4.CSzCxQ4i.js → 4.mx2zYIGm.js} +1 -1
- package/dist/_app/version.json +1 -1
- package/dist/cli/commands/ui.js +356 -308
- package/dist/cli/server/index.js +356 -308
- package/dist/cli/server/server.js +356 -308
- package/dist/cli/server/spreadsheetRoutes.js +343 -295
- package/dist/cli/server/websocketServer.js +356 -308
- package/dist/index.html +6 -6
- package/dist/index.js +356 -308
- package/package.json +2 -2
- package/src/lib/websocket.ts +106 -76
- package/dist/_app/immutable/chunks/B3DV5AB9.js +0 -2
- package/dist/_app/immutable/entry/start.DBJttd3y.js +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lula2",
|
|
3
|
-
"version": "0.5.0-nightly.
|
|
3
|
+
"version": "0.5.0-nightly.4",
|
|
4
4
|
"description": "A tool for managing compliance as code in your GitHub repositories.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"lula2": "./dist/lula2"
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"@types/cors": "^2.8.19",
|
|
67
67
|
"@types/express": "^5.0.3",
|
|
68
68
|
"@types/js-yaml": "^4.0.9",
|
|
69
|
-
"@types/jsdom": "^
|
|
69
|
+
"@types/jsdom": "^27.0.0",
|
|
70
70
|
"@types/multer": "^2.0.0",
|
|
71
71
|
"@types/node": "^24.4.0",
|
|
72
72
|
"@typescript-eslint/eslint-plugin": "^8.42.0",
|
package/src/lib/websocket.ts
CHANGED
|
@@ -127,108 +127,138 @@ class WebSocketClient {
|
|
|
127
127
|
|
|
128
128
|
switch (message.type) {
|
|
129
129
|
case 'connected':
|
|
130
|
-
|
|
131
|
-
appState.update((state) => ({ ...state, isConnected: true }));
|
|
130
|
+
this.handleConnected();
|
|
132
131
|
break;
|
|
133
|
-
|
|
134
132
|
case 'state-update':
|
|
135
|
-
|
|
136
|
-
// Update the entire app state with the payload
|
|
137
|
-
if (message.payload) {
|
|
138
|
-
appState.set({
|
|
139
|
-
...message.payload,
|
|
140
|
-
isConnected: true,
|
|
141
|
-
isSwitchingControlSet: false // Clear switching flag after state update
|
|
142
|
-
});
|
|
143
|
-
}
|
|
133
|
+
this.handleStateUpdate(message.payload);
|
|
144
134
|
break;
|
|
145
|
-
|
|
146
135
|
case 'metadata-update':
|
|
147
|
-
|
|
148
|
-
// Update metadata and control set info
|
|
149
|
-
if (message.payload) {
|
|
150
|
-
appState.update((state) => ({
|
|
151
|
-
...state,
|
|
152
|
-
...message.payload,
|
|
153
|
-
isConnected: true,
|
|
154
|
-
isSwitchingControlSet: false // Clear switching flag
|
|
155
|
-
}));
|
|
156
|
-
}
|
|
136
|
+
this.handleMetadataUpdate(message.payload);
|
|
157
137
|
break;
|
|
158
|
-
|
|
159
138
|
case 'controls-update':
|
|
160
|
-
|
|
161
|
-
// Update just the controls array
|
|
162
|
-
if (message.payload) {
|
|
163
|
-
appState.update((state) => ({
|
|
164
|
-
...state,
|
|
165
|
-
controls: message.payload
|
|
166
|
-
}));
|
|
167
|
-
}
|
|
139
|
+
this.handleControlsUpdate(message.payload);
|
|
168
140
|
break;
|
|
169
|
-
|
|
170
141
|
case 'mappings-update':
|
|
171
|
-
|
|
172
|
-
// Update just the mappings array
|
|
173
|
-
if (message.payload) {
|
|
174
|
-
appState.update((state) => ({
|
|
175
|
-
...state,
|
|
176
|
-
mappings: message.payload
|
|
177
|
-
}));
|
|
178
|
-
}
|
|
142
|
+
this.handleMappingsUpdate(message.payload);
|
|
179
143
|
break;
|
|
180
|
-
|
|
181
144
|
case 'control-details':
|
|
182
|
-
|
|
183
|
-
// Emit a custom event for control details
|
|
184
|
-
if (message.payload) {
|
|
185
|
-
window.dispatchEvent(
|
|
186
|
-
new CustomEvent('control-details', {
|
|
187
|
-
detail: message.payload
|
|
188
|
-
})
|
|
189
|
-
);
|
|
190
|
-
}
|
|
145
|
+
this.handleControlDetails(message.payload);
|
|
191
146
|
break;
|
|
192
|
-
|
|
193
147
|
case 'control-sets-list':
|
|
194
|
-
|
|
195
|
-
// Emit a custom event for control sets list
|
|
196
|
-
if (message.payload) {
|
|
197
|
-
window.dispatchEvent(
|
|
198
|
-
new CustomEvent('control-sets-list', {
|
|
199
|
-
detail: message.payload
|
|
200
|
-
})
|
|
201
|
-
);
|
|
202
|
-
}
|
|
148
|
+
this.handleControlSetsList(message.payload);
|
|
203
149
|
break;
|
|
204
|
-
|
|
205
150
|
case 'control-updated':
|
|
206
|
-
|
|
207
|
-
// Don't trigger any state updates - the component already has the updated data
|
|
208
|
-
// This just confirms the save was successful
|
|
151
|
+
this.handleControlUpdated(message.payload);
|
|
209
152
|
break;
|
|
210
|
-
|
|
211
153
|
case 'mapping-created':
|
|
212
154
|
case 'mapping-updated':
|
|
213
155
|
case 'mapping-deleted':
|
|
214
|
-
|
|
215
|
-
// Emit an event so the control details panel can refresh its mappings
|
|
216
|
-
window.dispatchEvent(
|
|
217
|
-
new CustomEvent('mappings-changed', {
|
|
218
|
-
detail: message.payload
|
|
219
|
-
})
|
|
220
|
-
);
|
|
156
|
+
this.handleMappingOperation(message.type, message.payload);
|
|
221
157
|
break;
|
|
222
|
-
|
|
223
158
|
case 'error':
|
|
224
|
-
|
|
159
|
+
this.handleError(message.payload);
|
|
225
160
|
break;
|
|
226
|
-
|
|
227
161
|
default:
|
|
228
162
|
console.warn('Unknown WebSocket message type:', message.type);
|
|
229
163
|
}
|
|
230
164
|
}
|
|
231
165
|
|
|
166
|
+
handleConnected() {
|
|
167
|
+
console.log('WebSocket connection confirmed');
|
|
168
|
+
appState.update((state) => ({ ...state, isConnected: true }));
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
handleStateUpdate(payload: any) {
|
|
172
|
+
console.log('State update received');
|
|
173
|
+
// Update the entire app state with the payload
|
|
174
|
+
if (payload) {
|
|
175
|
+
appState.set({
|
|
176
|
+
...payload,
|
|
177
|
+
isConnected: true,
|
|
178
|
+
isSwitchingControlSet: false // Clear switching flag after state update
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
handleMetadataUpdate(payload: any) {
|
|
184
|
+
console.log('Metadata update received');
|
|
185
|
+
// Update metadata and control set info
|
|
186
|
+
if (payload) {
|
|
187
|
+
appState.update((state) => ({
|
|
188
|
+
...state,
|
|
189
|
+
...payload,
|
|
190
|
+
isConnected: true,
|
|
191
|
+
isSwitchingControlSet: false // Clear switching flag
|
|
192
|
+
}));
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
handleControlsUpdate(payload: any) {
|
|
197
|
+
console.log('Controls update received');
|
|
198
|
+
// Update just the controls array
|
|
199
|
+
if (payload) {
|
|
200
|
+
appState.update((state) => ({
|
|
201
|
+
...state,
|
|
202
|
+
controls: payload
|
|
203
|
+
}));
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
handleMappingsUpdate(payload: any) {
|
|
208
|
+
console.log('Mappings update received');
|
|
209
|
+
// Update just the mappings array
|
|
210
|
+
if (payload) {
|
|
211
|
+
appState.update((state) => ({
|
|
212
|
+
...state,
|
|
213
|
+
mappings: payload
|
|
214
|
+
}));
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
handleControlDetails(payload: any) {
|
|
219
|
+
console.log('Control details received:', payload);
|
|
220
|
+
// Emit a custom event for control details
|
|
221
|
+
if (payload) {
|
|
222
|
+
window.dispatchEvent(
|
|
223
|
+
new CustomEvent('control-details', {
|
|
224
|
+
detail: payload
|
|
225
|
+
})
|
|
226
|
+
);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
handleControlSetsList(payload: any) {
|
|
231
|
+
console.log('Control sets list received');
|
|
232
|
+
// Emit a custom event for control sets list
|
|
233
|
+
if (payload) {
|
|
234
|
+
window.dispatchEvent(
|
|
235
|
+
new CustomEvent('control-sets-list', {
|
|
236
|
+
detail: payload
|
|
237
|
+
})
|
|
238
|
+
);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
handleControlUpdated(payload: any) {
|
|
243
|
+
console.log('Control updated successfully:', payload);
|
|
244
|
+
// Don't trigger any state updates - the component already has the updated data
|
|
245
|
+
// This just confirms the save was successful
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
handleMappingOperation(type: string, payload: any) {
|
|
249
|
+
console.log(`Mapping operation successful: ${type}`, payload);
|
|
250
|
+
// Emit an event so the control details panel can refresh its mappings
|
|
251
|
+
window.dispatchEvent(
|
|
252
|
+
new CustomEvent('mappings-changed', {
|
|
253
|
+
detail: payload
|
|
254
|
+
})
|
|
255
|
+
);
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
handleError(payload: any) {
|
|
259
|
+
console.error('WebSocket error:', payload);
|
|
260
|
+
}
|
|
261
|
+
|
|
232
262
|
private scheduleReconnect() {
|
|
233
263
|
if (this.reconnectTimer) {
|
|
234
264
|
clearTimeout(this.reconnectTimer);
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{O as K,l as E,at as Ne,v as de,m as Me,t as re,h as te,a3 as Oe,L as Ie,M as We,N as ie,P as $,z as L,au as De,av as Le,w as U,y as Pe,x as W,aw as ve,ax as he,T as Re,ab as oe,ay as le,Q as pe,A as $e,az as B,aA as X,aB as q,aC as J,aD as He,aE as Ue,aF as qe,aG as Ve,aH as Fe,a1 as Ye,q as Be,aI as we,aJ as Je,i as ne,aK as se,aL as ze,aM as Ge,X as Ke,aN as Xe,aO as Qe,aP as Ze,aQ as je,aR as xe,aS as et,aT as tt,U as at,aU as rt,aV as nt,aW as st,aX as it,aY as ot,aZ as lt,a_ as ct,ai as ft,k as be,j as _e,a$ as ut,b0 as dt}from"./BIY1u1I9.js";function Tt(e,t){return t}function vt(e,t,a){for(var r=e.items,n=[],s=t.length,o=0;o<s;o++)qe(t[o].e,n,!0);var f=s>0&&n.length===0&&a!==null;if(f){var h=a.parentNode;Ve(h),h.append(a),r.clear(),M(e,t[0].prev,t[s-1].next)}Fe(n,()=>{for(var v=0;v<s;v++){var b=t[v];f||(r.delete(b.k),M(e,b.prev,b.next)),q(b.e,!f)}})}function Nt(e,t,a,r,n,s=null){var o=e,f={flags:t,items:new Map,first:null},h=(t&we)!==0;if(h){var v=e;o=E?K(Ne(v)):v.appendChild(de())}E&&Me();var b=null,_=!1,u=new Map,C=Oe(()=>{var g=a();return he(g)?g:g==null?[]:ve(g)}),c,p;function d(){ht(p,c,f,u,o,n,t,r,a),s!==null&&(c.length===0?b?pe(b):b=U(()=>s(o)):b!==null&&$e(b,()=>{b=null}))}re(()=>{p??=Ye,c=te(C);var g=c.length;if(_&&g===0)return;_=g===0;let A=!1;if(E){var m=Ie(o)===We;m!==(g===0)&&(o=ie(),K(o),$(!1),A=!0)}if(E){for(var S=null,k,i=0;i<g;i++){if(L.nodeType===De&&L.data===Le){o=L,A=!0,$(!1);break}var l=c[i],w=r(l,i);k=ae(L,f,S,null,l,w,i,n,t,a),f.items.set(w,k),S=k}g>0&&K(ie())}if(E)g===0&&s&&(b=U(()=>s(o)));else if(Pe()){var T=new Set,y=W;for(i=0;i<g;i+=1){l=c[i],w=r(l,i);var O=f.items.get(w)??u.get(w);O?(t&(J|B))!==0&&Se(O,l,i,t):(k=ae(null,f,null,null,l,w,i,n,t,a,!0),u.set(w,k)),T.add(w)}for(const[N,V]of f.items)T.has(N)||y.skipped_effects.add(V.e);y.add_callback(d)}else d();A&&$(!0),te(C)}),E&&(o=L)}function ht(e,t,a,r,n,s,o,f,h){var v=(o&Je)!==0,b=(o&(J|B))!==0,_=t.length,u=a.items,C=a.first,c=C,p,d=null,g,A=[],m=[],S,k,i,l;if(v)for(l=0;l<_;l+=1)S=t[l],k=f(S,l),i=u.get(k),i!==void 0&&(i.a?.measure(),(g??=new Set).add(i));for(l=0;l<_;l+=1){if(S=t[l],k=f(S,l),i=u.get(k),i===void 0){var w=r.get(k);if(w!==void 0){r.delete(k),u.set(k,w);var T=d?d.next:c;M(a,d,w),M(a,w,T),Q(w,T,n),d=w}else{var y=c?c.e.nodes_start:n;d=ae(y,a,d,d===null?a.first:d.next,S,k,l,s,o,h)}u.set(k,d),A=[],m=[],c=d.next;continue}if(b&&Se(i,S,l,o),(i.e.f&X)!==0&&(pe(i.e),v&&(i.a?.unfix(),(g??=new Set).delete(i))),i!==c){if(p!==void 0&&p.has(i)){if(A.length<m.length){var O=m[0],N;d=O.prev;var V=A[0],z=A[A.length-1];for(N=0;N<A.length;N+=1)Q(A[N],O,n);for(N=0;N<m.length;N+=1)p.delete(m[N]);M(a,V.prev,z.next),M(a,d,V),M(a,z,O),c=O,d=z,l-=1,A=[],m=[]}else p.delete(i),Q(i,c,n),M(a,i.prev,i.next),M(a,i,d===null?a.first:d.next),M(a,d,i),d=i;continue}for(A=[],m=[];c!==null&&c.k!==k;)(c.e.f&X)===0&&(p??=new Set).add(c),m.push(c),c=c.next;if(c===null)continue;i=c}A.push(i),d=i,c=i.next}if(c!==null||p!==void 0){for(var D=p===void 0?[]:ve(p);c!==null;)(c.e.f&X)===0&&D.push(c),c=c.next;var G=D.length;if(G>0){var me=(o&we)!==0&&_===0?n:null;if(v){for(l=0;l<G;l+=1)D[l].a?.measure();for(l=0;l<G;l+=1)D[l].a?.fix()}vt(a,D,me)}}v&&Be(()=>{if(g!==void 0)for(i of g)i.a?.apply()}),e.first=a.first&&a.first.e,e.last=d&&d.e;for(var Te of r.values())q(Te.e);r.clear()}function Se(e,t,a,r){(r&J)!==0&&le(e.v,t),(r&B)!==0?le(e.i,a):e.i=a}function ae(e,t,a,r,n,s,o,f,h,v,b){var _=(h&J)!==0,u=(h&He)===0,C=_?u?Re(n,!1,!1):oe(n):n,c=(h&B)===0?o:oe(o),p={i:c,v:C,k:s,a:null,e:null,prev:a,next:r};try{if(e===null){var d=document.createDocumentFragment();d.append(e=de())}return p.e=U(()=>f(e,C,c,v),E),p.e.prev=a&&a.e,p.e.next=r&&r.e,a===null?b||(t.first=p):(a.next=p,a.e.next=p.e),r!==null&&(r.prev=p,r.e.prev=p.e),p}finally{}}function Q(e,t,a){for(var r=e.next?e.next.e.nodes_start:a,n=t?t.e.nodes_start:a,s=e.e.nodes_start;s!==null&&s!==r;){var o=Ue(s);n.before(s),s=o}}function M(e,t,a){t===null?e.first=a:(t.next=a,t.e.next=a&&a.e),a!==null&&(a.prev=t,a.e.prev=t&&t.e)}function pt(e,t){var a=void 0,r;re(()=>{a!==(a=t())&&(r&&(q(r),r=null),a&&(r=U(()=>{ne(()=>a(e))})))})}function ge(e){var t,a,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var n=e.length;for(t=0;t<n;t++)e[t]&&(a=ge(e[t]))&&(r&&(r+=" "),r+=a)}else for(a in e)e[a]&&(r&&(r+=" "),r+=a);return r}function wt(){for(var e,t,a=0,r="",n=arguments.length;a<n;a++)(e=arguments[a])&&(t=ge(e))&&(r&&(r+=" "),r+=t);return r}function bt(e){return typeof e=="object"?wt(e):e??""}const ce=[...`
|
|
2
|
-
\r\f \v\uFEFF`];function _t(e,t,a){var r=e==null?"":""+e;if(t&&(r=r?r+" "+t:t),a){for(var n in a)if(a[n])r=r?r+" "+n:n;else if(r.length)for(var s=n.length,o=0;(o=r.indexOf(n,o))>=0;){var f=o+s;(o===0||ce.includes(r[o-1]))&&(f===r.length||ce.includes(r[f]))?r=(o===0?"":r.substring(0,o))+r.substring(f+1):o=f}}return r===""?null:r}function fe(e,t=!1){var a=t?" !important;":";",r="";for(var n in e){var s=e[n];s!=null&&s!==""&&(r+=" "+n+": "+s+a)}return r}function Z(e){return e[0]!=="-"||e[1]!=="-"?e.toLowerCase():e}function St(e,t){if(t){var a="",r,n;if(Array.isArray(t)?(r=t[0],n=t[1]):r=t,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,"").trim();var s=!1,o=0,f=!1,h=[];r&&h.push(...Object.keys(r).map(Z)),n&&h.push(...Object.keys(n).map(Z));var v=0,b=-1;const p=e.length;for(var _=0;_<p;_++){var u=e[_];if(f?u==="/"&&e[_-1]==="*"&&(f=!1):s?s===u&&(s=!1):u==="/"&&e[_+1]==="*"?f=!0:u==='"'||u==="'"?s=u:u==="("?o++:u===")"&&o--,!f&&s===!1&&o===0){if(u===":"&&b===-1)b=_;else if(u===";"||_===p-1){if(b!==-1){var C=Z(e.substring(v,b).trim());if(!h.includes(C)){u!==";"&&_++;var c=e.substring(v,_).trim();a+=" "+c+";"}}v=_+1,b=-1}}}}return r&&(a+=fe(r)),n&&(a+=fe(n,!0)),a=a.trim(),a===""?null:a}return e==null?null:String(e)}function gt(e,t,a,r,n,s){var o=e.__className;if(E||o!==a||o===void 0){var f=_t(a,r,s);(!E||f!==e.getAttribute("class"))&&(f==null?e.removeAttribute("class"):t?e.className=f:e.setAttribute("class",f)),e.__className=a}else if(s&&n!==s)for(var h in s){var v=!!s[h];(n==null||v!==!!n[h])&&e.classList.toggle(h,v)}return s}function j(e,t={},a,r){for(var n in a){var s=a[n];t[n]!==s&&(a[n]==null?e.style.removeProperty(n):e.style.setProperty(n,s,r))}}function yt(e,t,a,r){var n=e.__style;if(E||n!==t){var s=St(t,r);(!E||s!==e.getAttribute("style"))&&(s==null?e.removeAttribute("style"):e.style.cssText=s),e.__style=t}else r&&(Array.isArray(r)?(j(e,a?.[0],r[0]),j(e,a?.[1],r[1],"important")):j(e,a,r));return r}function F(e,t,a=!1){if(e.multiple){if(t==null)return;if(!he(t))return ze();for(var r of e.options)r.selected=t.includes(H(r));return}for(r of e.options){var n=H(r);if(Ge(n,t)){r.selected=!0;return}}(!a||t!==void 0)&&(e.selectedIndex=-1)}function ye(e){var t=new MutationObserver(()=>{F(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),Ke(()=>{t.disconnect()})}function Mt(e,t,a=t){var r=!0;se(e,"change",n=>{var s=n?"[selected]":":checked",o;if(e.multiple)o=[].map.call(e.querySelectorAll(s),H);else{var f=e.querySelector(s)??e.querySelector("option:not([disabled])");o=f&&H(f)}a(o)}),ne(()=>{var n=t();if(F(e,n,r),r&&n===void 0){var s=e.querySelector(":checked");s!==null&&(n=H(s),a(n))}e.__value=n,r=!1}),ye(e)}function H(e){return"__value"in e?e.__value:e.value}const P=Symbol("class"),R=Symbol("style"),Ce=Symbol("is custom element"),ke=Symbol("is html");function Ct(e){if(E){var t=!1,a=()=>{if(!t){if(t=!0,e.hasAttribute("value")){var r=e.value;Y(e,"value",null),e.value=r}if(e.hasAttribute("checked")){var n=e.checked;Y(e,"checked",null),e.checked=n}}};e.__on_r=a,rt(a),nt()}}function kt(e,t){t?e.hasAttribute("selected")||e.setAttribute("selected",""):e.removeAttribute("selected")}function Y(e,t,a,r){var n=Ae(e);E&&(n[t]=e.getAttribute(t),t==="src"||t==="srcset"||t==="href"&&e.nodeName==="LINK")||n[t]!==(n[t]=a)&&(t==="loading"&&(e[ot]=a),a==null?e.removeAttribute(t):typeof a!="string"&&Ee(e).includes(t)?e[t]=a:e.setAttribute(t,a))}function At(e,t,a,r,n=!1,s=!1){if(E&&n&&e.tagName==="INPUT"){var o=e,f=o.type==="checkbox"?"defaultChecked":"defaultValue";f in a||Ct(o)}var h=Ae(e),v=h[Ce],b=!h[ke];let _=E&&v;_&&$(!1);var u=t||{},C=e.tagName==="OPTION";for(var c in t)c in a||(a[c]=null);a.class?a.class=bt(a.class):a[P]&&(a.class=null),a[R]&&(a.style??=null);var p=Ee(e);for(const i in a){let l=a[i];if(C&&i==="value"&&l==null){e.value=e.__value="",u[i]=l;continue}if(i==="class"){var d=e.namespaceURI==="http://www.w3.org/1999/xhtml";gt(e,d,l,r,t?.[P],a[P]),u[i]=l,u[P]=a[P];continue}if(i==="style"){yt(e,l,t?.[R],a[R]),u[i]=l,u[R]=a[R];continue}var g=u[i];if(!(l===g&&!(l===void 0&&e.hasAttribute(i)))){u[i]=l;var A=i[0]+i[1];if(A!=="$$")if(A==="on"){const w={},T="$$"+i;let y=i.slice(2);var m=lt(y);if(Ze(y)&&(y=y.slice(0,-7),w.capture=!0),!m&&g){if(l!=null)continue;e.removeEventListener(y,u[T],w),u[T]=null}if(l!=null)if(m)e[`__${y}`]=l,xe([y]);else{let O=function(N){u[i].call(this,N)};u[T]=je(y,e,O,w)}else m&&(e[`__${y}`]=void 0)}else if(i==="style")Y(e,i,l);else if(i==="autofocus")et(e,!!l);else if(!v&&(i==="__value"||i==="value"&&l!=null))e.value=e.__value=l;else if(i==="selected"&&C)kt(e,l);else{var S=i;b||(S=tt(S));var k=S==="defaultValue"||S==="defaultChecked";if(l==null&&!v&&!k)if(h[i]=null,S==="value"||S==="checked"){let w=e;const T=t===void 0;if(S==="value"){let y=w.defaultValue;w.removeAttribute(S),w.defaultValue=y,w.value=w.__value=T?y:null}else{let y=w.defaultChecked;w.removeAttribute(S),w.defaultChecked=y,w.checked=T?y:!1}}else e.removeAttribute(i);else k||p.includes(S)&&(v||typeof l!="string")?(e[S]=l,S in h&&(h[S]=at)):typeof l!="function"&&Y(e,S,l)}}}return _&&$(!0),u}function Ot(e,t,a=[],r=[],n,s=!1,o=!1){Xe(a,r,f=>{var h=void 0,v={},b=e.nodeName==="SELECT",_=!1;if(re(()=>{var C=t(...f.map(te)),c=At(e,h,C,n,s,o);_&&b&&"value"in C&&F(e,C.value);for(let d of Object.getOwnPropertySymbols(v))C[d]||q(v[d]);for(let d of Object.getOwnPropertySymbols(C)){var p=C[d];d.description===Qe&&(!h||p!==h[d])&&(v[d]&&q(v[d]),v[d]=U(()=>pt(e,()=>p))),c[d]=p}h=c}),b){var u=e;ne(()=>{F(u,h.value,!0),ye(u)})}_=!0})}function Ae(e){return e.__attributes??={[Ce]:e.nodeName.includes("-"),[ke]:e.namespaceURI===st}}var ue=new Map;function Ee(e){var t=e.getAttribute("is")||e.nodeName,a=ue.get(t);if(a)return a;ue.set(t,a=[]);for(var r,n=e,s=Element.prototype;s!==n;){r=ct(n);for(var o in r)r[o].set&&a.push(o);n=it(n)}return a}function It(e,t,a=t){var r=new WeakSet;se(e,"input",async n=>{var s=n?e.defaultValue:e.value;if(s=x(e)?ee(s):s,a(s),W!==null&&r.add(W),await ft(),s!==(s=t())){var o=e.selectionStart,f=e.selectionEnd;e.value=s??"",f!==null&&(e.selectionStart=o,e.selectionEnd=Math.min(f,e.value.length))}}),(E&&e.defaultValue!==e.value||be(t)==null&&e.value)&&(a(x(e)?ee(e.value):e.value),W!==null&&r.add(W)),_e(()=>{var n=t();if(e===document.activeElement){var s=ut??W;if(r.has(s))return}x(e)&&n===ee(e.value)||e.type==="date"&&!n&&!e.value||n!==e.value&&(e.value=n??"")})}function Wt(e,t,a=t){se(e,"change",r=>{var n=r?e.defaultChecked:e.checked;a(n)}),(E&&e.defaultChecked!==e.checked||be(t)==null)&&a(e.checked),_e(()=>{var r=t();e.checked=!!r})}function x(e){var t=e.type;return t==="number"||t==="range"}function ee(e){return e===""?null:+e}const I=dt({id:"unknown",name:"Unknown Control Set",currentPath:"",controls:[],mappings:[],families:[],totalControls:0,totalMappings:0,isConnected:!1});class Et{ws=null;reconnectTimer=null;reconnectAttempts=0;maxReconnectAttempts=5;reconnectDelay=1e3;connect(){if(this.ws&&(this.ws.readyState===WebSocket.CONNECTING||this.ws.readyState===WebSocket.OPEN)){console.log("WebSocket already connected or connecting");return}const t=window.location.protocol==="https:"?"wss:":"ws:",a=window.location.hostname==="localhost"?"localhost:3000":window.location.host,r=`${t}//${a}/ws`;console.log("Connecting to WebSocket:",r);try{this.ws=new WebSocket(r),this.ws.onopen=()=>{console.log("WebSocket connected"),this.reconnectAttempts=0,this.reconnectDelay=1e3},this.ws.onmessage=n=>{try{const s=JSON.parse(n.data);this.handleMessage(s)}catch(s){console.error("Failed to parse WebSocket message:",s)}},this.ws.onerror=n=>{console.error("WebSocket error:",n)},this.ws.onclose=()=>{console.log("WebSocket disconnected"),I.update(n=>({...n,isConnected:!1})),this.ws=null,this.scheduleReconnect()}}catch(n){console.error("Failed to create WebSocket:",n),this.scheduleReconnect()}}handleMessage(t){switch(console.log("WebSocket message received:",t),t.type){case"connected":console.log("WebSocket connection confirmed"),I.update(a=>({...a,isConnected:!0}));break;case"state-update":console.log("State update received"),t.payload&&I.set({...t.payload,isConnected:!0,isSwitchingControlSet:!1});break;case"metadata-update":console.log("Metadata update received"),t.payload&&I.update(a=>({...a,...t.payload,isConnected:!0,isSwitchingControlSet:!1}));break;case"controls-update":console.log("Controls update received"),t.payload&&I.update(a=>({...a,controls:t.payload}));break;case"mappings-update":console.log("Mappings update received"),t.payload&&I.update(a=>({...a,mappings:t.payload}));break;case"control-details":console.log("Control details received:",t.payload),t.payload&&window.dispatchEvent(new CustomEvent("control-details",{detail:t.payload}));break;case"control-sets-list":console.log("Control sets list received"),t.payload&&window.dispatchEvent(new CustomEvent("control-sets-list",{detail:t.payload}));break;case"control-updated":console.log("Control updated successfully:",t.payload);break;case"mapping-created":case"mapping-updated":case"mapping-deleted":console.log(`Mapping operation successful: ${t.type}`,t.payload),window.dispatchEvent(new CustomEvent("mappings-changed",{detail:t.payload}));break;case"error":console.error("WebSocket error:",t.payload);break;default:console.warn("Unknown WebSocket message type:",t.type)}}scheduleReconnect(){if(this.reconnectTimer&&clearTimeout(this.reconnectTimer),this.reconnectAttempts>=this.maxReconnectAttempts){console.error("Max reconnection attempts reached");return}this.reconnectAttempts++,console.log(`Scheduling reconnect attempt ${this.reconnectAttempts} in ${this.reconnectDelay}ms`),this.reconnectTimer=window.setTimeout(()=>{this.connect()},this.reconnectDelay),this.reconnectDelay=Math.min(this.reconnectDelay*2,3e4)}disconnect(){this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.ws&&(this.ws.close(),this.ws=null),I.update(t=>({...t,isConnected:!1}))}isConnected(){return this.ws!==null&&this.ws.readyState===WebSocket.OPEN}async sendCommand(t,a){if(console.log(`Sending WebSocket command: ${t}`,a),!this.ws||this.ws.readyState!==WebSocket.OPEN){console.log("WebSocket not ready, waiting for connection...");try{await this.waitForConnection()}catch(r){throw console.error("Failed to connect:",r),r}}if(this.ws&&this.ws.readyState===WebSocket.OPEN){const r=JSON.stringify({type:t,payload:a});console.log("Sending message:",r),this.ws.send(r)}else{const r=new Error("WebSocket not connected after waiting");throw console.error(r),r}}waitForConnection(t=5e3){return new Promise((a,r)=>{const n=Date.now(),s=()=>{this.ws&&this.ws.readyState===WebSocket.OPEN?a():Date.now()-n>t?r(new Error("WebSocket connection timeout")):setTimeout(s,100)};s()})}async updateControl(t){return this.sendCommand("update-control",t)}async createMapping(t){return this.sendCommand("create-mapping",t)}async updateMapping(t){return this.sendCommand("update-mapping",t)}async deleteMapping(t){return this.sendCommand("delete-mapping",{uuid:t})}async switchControlSet(t){return I.update(a=>({...a,isSwitchingControlSet:!0})),this.sendCommand("switch-control-set",{path:t})}async getControlDetails(t){return this.sendCommand("get-control",{id:t})}async scanControlSets(){return this.sendCommand("scan-control-sets")}send(t){this.ws&&this.ws.readyState===WebSocket.OPEN?this.ws.send(JSON.stringify(t)):console.warn("WebSocket not connected, cannot send message")}}const Dt=new Et;export{Ot as a,Y as b,It as c,Mt as d,Nt as e,I as f,bt as g,yt as h,Tt as i,Wt as j,Ct as r,gt as s,Dt as w};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{l as o,a as r}from"../chunks/BMsYC0uK.js";export{o as load_css,r as start};
|