jat-feedback 1.6.8 → 1.6.9
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/jat-feedback.js
CHANGED
|
@@ -72,7 +72,7 @@ var jv=Object.defineProperty;var Pl=pe=>{throw TypeError(pe)};var Iv=(pe,he,Te)=
|
|
|
72
72
|
animation: svelte-nv4d5v-spin 0.6s linear infinite;}
|
|
73
73
|
@keyframes svelte-nv4d5v-spin {
|
|
74
74
|
to { transform: rotate(360deg); }
|
|
75
|
-
}.requests-wrapper.svelte-nv4d5v {flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;}.panel-version.svelte-nv4d5v {font-size:10px;color:#4b5563;margin-right:auto;align-self:flex-end;padding-bottom:6px;}`};function Tl(e,t){gn(t,!0),Ln(e,$v);const n="1.6.
|
|
75
|
+
}.requests-wrapper.svelte-nv4d5v {flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;}.panel-version.svelte-nv4d5v {font-size:10px;color:#4b5563;margin-right:auto;align-self:flex-end;padding-bottom:6px;}`};function Tl(e,t){gn(t,!0),Ln(e,$v);const n="1.6.9";let r=W(t,"endpoint",7),s=W(t,"project",7),o=W(t,"isOpen",7,!1),i=W(t,"userId",7,""),a=W(t,"userEmail",7,""),c=W(t,"userName",7,""),u=W(t,"userRole",7,""),f=W(t,"orgId",7,""),d=W(t,"orgName",7,""),v=W(t,"onclose",7),p=W(t,"ongrip",7),_=D("new"),b=D(Ue([])),h=D(!1),g=D(""),T=Yt(()=>l(b).filter(C=>C.status==="completed").length);async function k(){y(h,!0),y(g,"");const C=await Of(r());y(b,C.reports,!0),C.error&&y(g,C.error,!0),y(h,!1)}Os(()=>{r()&&k()});let M=D(""),L=D(""),z=D("bug"),Q=D("medium"),q=D(Ue([])),se=D(Ue([])),le=D(Ue([])),ye=D(!1),Ne=D(!1),Ve=D(!1),Re=D(null),we=D(""),mt=D(void 0),Bt=!1;Os(()=>{o()&&!Bt&&(requestAnimationFrame(()=>{requestAnimationFrame(()=>{var C;(C=l(mt))==null||C.focus()})}),l(_)==="new"&&l(q).length===0&&setTimeout(()=>{nd().then(C=>{y(q,[...l(q),C],!0)}).catch(()=>{})},300)),Bt=o()});let it=D(""),Pe=D("success"),j=D(!1);function ce(C,ee){y(it,C,!0),y(Pe,ee,!0),y(j,!0),setTimeout(()=>{y(j,!1)},3e3)}async function bt(){y(Ne,!0);try{const C=await kl();y(we,C,!0),y(Re,l(q).length,!0)}catch(C){console.error("[jat-feedback] Screenshot failed:",C),ce("Screenshot failed: "+(C instanceof Error?C.message:"unknown error"),"error")}finally{y(Ne,!1)}}function Ut(C){y(q,l(q).filter((ee,je)=>je!==C),!0)}function We(C){y(we,l(q)[C],!0),y(Re,C,!0)}function Tt(C){l(Re)!==null&&(l(Re)>=l(q).length?(y(q,[...l(q),C],!0),ce(`Screenshot captured (${l(q).length})`,"success")):(y(q,l(q).map((ee,je)=>je===l(Re)?C:ee),!0),ce("Screenshot updated","success"))),y(Re,null),y(we,"")}function rn(){l(Re)!==null&&l(Re)>=l(q).length&&(y(q,[...l(q),l(we)],!0),ce(`Screenshot captured (${l(q).length})`,"success")),y(Re,null),y(we,"")}function sn(){y(Ve,!0),qa(C=>{y(se,[...l(se),C],!0),y(Ve,!1),ce(`Element captured: <${C.tagName.toLowerCase()}>`,"success")})}function Ye(){y(le,Sf(),!0)}async function on(C){if(C.preventDefault(),!l(M).trim())return;y(ye,!0),Ye();const ee={};(i()||a()||c()||u())&&(ee.reporter={},i()&&(ee.reporter.userId=i()),a()&&(ee.reporter.email=a()),c()&&(ee.reporter.name=c()),u()&&(ee.reporter.role=u())),(f()||d())&&(ee.organization={},f()&&(ee.organization.id=f()),d()&&(ee.organization.name=d()));const je={title:l(M).trim(),description:l(L).trim(),type:l(z),priority:l(Q),project:s()||"",page_url:window.location.href,user_agent:navigator.userAgent,console_logs:l(le).length>0?l(le):null,selected_elements:l(se).length>0?l(se):null,screenshots:l(q).length>0?l(q):null,metadata:Object.keys(ee).length>0?ee:null};try{const De=await Wa(r(),je);De.ok?(ce(`Report submitted (${De.id})`,"success"),qn(),setTimeout(()=>{k(),y(_,"requests")},1200)):(Ga(r(),je),ce("Queued for retry (endpoint unreachable)","error"))}catch{Ga(r(),je),ce("Queued for retry (endpoint unreachable)","error")}finally{y(ye,!1)}}function qn(){y(M,""),y(L,""),y(z,"bug"),y(Q,"medium"),y(q,[],!0),y(se,[],!0),y(le,[],!0)}Os(()=>{Ye()});function an(C){C.stopPropagation()}const ln=[{value:"bug",label:"Bug"},{value:"enhancement",label:"Enhancement"},{value:"other",label:"Other"}],ws=[{value:"low",label:"Low"},{value:"medium",label:"Medium"},{value:"high",label:"High"},{value:"critical",label:"Critical"}];function E(){return l(q).length+l(se).length}var ae={get endpoint(){return r()},set endpoint(C){r(C),U()},get project(){return s()},set project(C){s(C),U()},get isOpen(){return o()},set isOpen(C=!1){o(C),U()},get userId(){return i()},set userId(C=""){i(C),U()},get userEmail(){return a()},set userEmail(C=""){a(C),U()},get userName(){return c()},set userName(C=""){c(C),U()},get userRole(){return u()},set userRole(C=""){u(C),U()},get orgId(){return f()},set orgId(C=""){f(C),U()},get orgName(){return d()},set orgName(C=""){d(C),U()},get onclose(){return v()},set onclose(C){v(C),U()},get ongrip(){return p()},set ongrip(C){p(C),U()}},xe=Sv(),at=ut(xe),_t=x(at),Qe=x(_t);{var A=C=>{var ee=fv();H("mousedown",ee,function(...je){var De;(De=p())==null||De.apply(this,je)}),$(C,ee)};B(Qe,C=>{p()&&C(A)})}var I=S(Qe,2),P=x(I);let G;var ge=S(P,2);let R;var Ht=S(x(ge),2);{var Sn=C=>{var ee=uv(),je=x(ee,!0);w(ee),F(()=>Z(je,l(T))),$(C,ee)};B(Ht,C=>{l(T)>0&&C(Sn)})}w(ge),w(I);var Vt=S(I,2);w(_t);var yt=S(_t,2);{var $n=C=>{var ee=kv(),je=x(ee),De=S(x(je),2);Aa(De),Mr(De,O=>y(mt,O),()=>l(mt)),w(je);var cn=S(je,2),Fn=S(x(cn),2);Xi(Fn),w(cn);var br=S(cn,2),zn=x(br),Xr=S(x(zn),2);Je(Xr,21,()=>ln,pt,(O,te)=>{var ve=dv(),Ee=x(ve,!0);w(ve);var be={};F(()=>{Z(Ee,l(te).label),be!==(be=l(te).value)&&(ve.value=(ve.__value=l(te).value)??"")}),$(O,ve)}),w(Xr),w(zn);var xs=S(zn,2),Kr=S(x(xs),2);Je(Kr,21,()=>ws,pt,(O,te)=>{var ve=vv(),Ee=x(ve,!0);w(ve);var be={};F(()=>{Z(Ee,l(te).label),be!==(be=l(te).value)&&(ve.value=(ve.__value=l(te).value)??"")}),$(O,ve)}),w(Kr),w(xs),w(br);var ks=S(br,2),Gr=x(ks),_r=x(Gr),lo=x(_r);{var ti=O=>{var te=pv();js(),$(O,te)},co=O=>{var te=gv(),ve=S(ut(te),2);{var Ee=be=>{var Se=hv(),Rt=x(Se,!0);w(Se),F(()=>Z(Rt,l(q).length)),$(be,Se)};B(ve,be=>{l(q).length>0&&be(Ee)})}$(O,te)};B(lo,O=>{l(Ne)?O(ti):O(co,!1)})}w(_r);var Bn=S(_r,2),ni=S(x(Bn),2);{var ri=O=>{var te=ga("Click an element...");$(O,te)},si=O=>{var te=bv(),ve=S(ut(te));{var Ee=be=>{var Se=mv(),Rt=x(Se,!0);w(Se),F(()=>Z(Rt,l(se).length)),$(be,Se)};B(ve,be=>{l(se).length>0&&be(Ee)})}$(O,te)};B(ni,O=>{l(Ve)?O(ri):O(si,!1)})}w(Bn),w(Gr);var oi=S(Gr,2);El(oi,{get screenshots(){return l(q)},get capturing(){return l(Ne)},oncapture:bt,onremove:Ut,onedit:We}),w(ks);var fo=S(ks,2);{var re=O=>{var te=yv();Je(te,21,()=>l(se),pt,(ve,Ee,be)=>{var Se=_v(),Rt=x(Se),Es=x(Rt);w(Rt);var Un=S(Rt,2),Ss=x(Un,!0);w(Un);var $e=S(Un,2);w(Se),F((Me,jt)=>{Z(Es,`<${Me??""}>`),Z(Ss,jt)},[()=>l(Ee).tagName.toLowerCase(),()=>{var Me;return((Me=l(Ee).textContent)==null?void 0:Me.substring(0,40))||l(Ee).selector}]),H("click",$e,()=>{y(se,l(se).filter((Me,jt)=>jt!==be),!0)}),$(ve,Se)}),w(te),$(O,te)};B(fo,O=>{l(se).length>0&&O(re)})}var oe=S(fo,2);$l(oe,{get logs(){return l(le)}});var me=S(oe,2);{var lt=O=>{var te=wv(),ve=x(te);w(te),F((Ee,be)=>Z(ve,`${Ee??""} attachment${be??""} will be included`),[E,()=>E()>1?"s":""]),$(O,te)},fn=Yt(()=>E()>0);B(me,O=>{l(fn)&&O(lt)})}var ct=S(me,2),Ie=x(ct),ke=x(Ie);w(Ie);var Xe=S(Ie,2),fe=S(Xe,2),Nt=x(fe);{var yr=O=>{var te=xv();js(),$(O,te)},de=O=>{var te=ga("Submit");$(O,te)};B(Nt,O=>{l(ye)?O(yr):O(de,!1)})}w(fe),w(ct),w(ee),F(O=>{De.disabled=l(ye),Fn.disabled=l(ye),Xr.disabled=l(ye),Kr.disabled=l(ye),_r.disabled=l(Ne),Bn.disabled=l(Ve),Z(ke,`v${n}`),Xe.disabled=l(ye),fe.disabled=O},[()=>l(ye)||!l(M).trim()]),Vs("submit",ee,on),Ks(De,()=>l(M),O=>y(M,O)),Ks(Fn,()=>l(L),O=>y(L,O)),Ca(Xr,()=>l(z),O=>y(z,O)),Ca(Kr,()=>l(Q),O=>y(Q,O)),H("click",_r,bt),H("click",Bn,sn),H("click",Xe,function(...O){var te;(te=v())==null||te.apply(this,O)}),Xs(3,ee,()=>oo,()=>({duration:200})),$(C,ee)};B(yt,C=>{l(_)==="new"&&C($n)})}var On=S(yt,2);{var Zo=C=>{var ee=Ev(),je=x(ee);Al(je,{get endpoint(){return r()},get loading(){return l(h)},get error(){return l(g)},onreload:k,get reports(){return l(b)},set reports(De){y(b,De,!0)}}),w(ee),Xs(3,ee,()=>oo,()=>({duration:200})),$(C,ee)};B(On,C=>{l(_)==="requests"&&C(Zo)})}var Yr=S(On,2);Cl(Yr,{get message(){return l(it)},get type(){return l(Pe)},get visible(){return l(j)}}),w(at);var Qo=S(at,2);{var ei=C=>{Sl(C,{get imageDataUrl(){return l(we)},onsave:Tt,oncancel:rn})};B(Qo,C=>{l(Re)!==null&&C(ei)})}return F(()=>{G=Ze(P,1,"tab svelte-nv4d5v",null,G,{active:l(_)==="new"}),R=Ze(ge,1,"tab svelte-nv4d5v",null,R,{active:l(_)==="requests"})}),H("keydown",at,an),H("keyup",at,an),Vs("keypress",at,an),H("click",P,()=>y(_,"new")),H("click",ge,()=>y(_,"requests")),H("click",Vt,function(...C){var ee;(ee=v())==null||ee.apply(this,C)}),$(e,xe),mn(ae)}os(["keydown","keyup","mousedown","click"]),Pn(Tl,{endpoint:{},project:{},isOpen:{},userId:{},userEmail:{},userName:{},userRole:{},orgId:{},orgName:{},onclose:{},ongrip:{}},[],[],{mode:"open"});var Cv=N("<div><!></div>"),Av=N('<div class="jat-feedback-panel svelte-qpyrvv"><div class="no-endpoint svelte-qpyrvv"><p class="svelte-qpyrvv">No endpoint configured.</p> <p class="svelte-qpyrvv">Add the <code class="svelte-qpyrvv">endpoint</code> attribute:</p> <code class="example svelte-qpyrvv"><jat-feedback endpoint="http://localhost:3333"></code></div></div>'),Tv=N('<div class="jat-feedback-root svelte-qpyrvv"><!> <!></div>');const Nv={hash:"svelte-qpyrvv",code:`.jat-feedback-root.svelte-qpyrvv {position:fixed;z-index:2147483647;font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;}.jat-feedback-panel.svelte-qpyrvv {position:absolute;
|
|
76
76
|
animation: svelte-qpyrvv-panel-in 0.2s ease;}.jat-feedback-panel.hidden.svelte-qpyrvv {display:none;}.jat-feedback-panel.dragging.svelte-qpyrvv {pointer-events:none;opacity:0.9;}.no-endpoint.svelte-qpyrvv {width:320px;background:#111827;border:1px solid #374151;border-radius:12px;padding:20px;color:#d1d5db;font-size:13px;box-shadow:0 20px 60px rgba(0,0,0,0.4);}.no-endpoint.svelte-qpyrvv p:where(.svelte-qpyrvv) {margin:0 0 8px;}.no-endpoint.svelte-qpyrvv code:where(.svelte-qpyrvv) {font-family:'SF Mono', 'Fira Code', monospace;font-size:11px;color:#93c5fd;}.no-endpoint.svelte-qpyrvv code.example:where(.svelte-qpyrvv) {display:block;background:#1f2937;padding:8px 10px;border-radius:4px;margin-top:4px;}
|
|
77
77
|
@keyframes svelte-qpyrvv-panel-in {
|
|
78
78
|
from { opacity: 0; transform: translateY(8px) scale(0.96); }
|
package/dist/jat-feedback.mjs
CHANGED
|
@@ -5909,7 +5909,7 @@ const Cv = {
|
|
|
5909
5909
|
};
|
|
5910
5910
|
function Pl(e, t) {
|
|
5911
5911
|
Sn(t, !0), Bn(e, Cv);
|
|
5912
|
-
const n = "1.6.
|
|
5912
|
+
const n = "1.6.9";
|
|
5913
5913
|
let r = W(t, "endpoint", 7), s = W(t, "project", 7), o = W(t, "isOpen", 7, !1), i = W(t, "userId", 7, ""), a = W(t, "userEmail", 7, ""), c = W(t, "userName", 7, ""), u = W(t, "userRole", 7, ""), f = W(t, "orgId", 7, ""), d = W(t, "orgName", 7, ""), v = W(t, "onclose", 7), p = W(t, "ongrip", 7), _ = /* @__PURE__ */ D("new"), b = /* @__PURE__ */ D(Ue([])), h = /* @__PURE__ */ D(!1), g = /* @__PURE__ */ D(""), T = /* @__PURE__ */ nn(() => l(b).filter((C) => C.status === "completed").length);
|
|
5914
5914
|
async function k() {
|
|
5915
5915
|
y(h, !0), y(g, "");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jat-feedback",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.9",
|
|
4
4
|
"description": "Embeddable feedback widget for bug reports and feature requests. Captures screenshots, console logs, and user context as a web component.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/jat-feedback.js",
|
|
@@ -130,10 +130,11 @@ Deno.serve(async (req) => {
|
|
|
130
130
|
}
|
|
131
131
|
|
|
132
132
|
const supabase = createClient(supabaseUrl, supabaseServiceKey)
|
|
133
|
-
const { error } = await supabase
|
|
133
|
+
const { data, error } = await supabase
|
|
134
134
|
.from(reference_table)
|
|
135
135
|
.update(update)
|
|
136
136
|
.eq("id", reference_id)
|
|
137
|
+
.select("id")
|
|
137
138
|
|
|
138
139
|
if (error) {
|
|
139
140
|
console.error(`JAT webhook failed: ${error.message}`, {
|
|
@@ -147,10 +148,29 @@ Deno.serve(async (req) => {
|
|
|
147
148
|
)
|
|
148
149
|
}
|
|
149
150
|
|
|
150
|
-
|
|
151
|
+
if (!data || data.length === 0) {
|
|
152
|
+
console.warn(`JAT webhook: no rows matched ${reference_table}[${reference_id}]`, update)
|
|
153
|
+
return new Response(
|
|
154
|
+
JSON.stringify({
|
|
155
|
+
error: `No rows matched: ${reference_table} id=${reference_id}`,
|
|
156
|
+
table: reference_table,
|
|
157
|
+
id: reference_id,
|
|
158
|
+
rowsAffected: 0,
|
|
159
|
+
}),
|
|
160
|
+
{ status: 404, headers: { "Content-Type": "application/json" } },
|
|
161
|
+
)
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
console.log(`JAT webhook: ${event} → ${reference_table}[${reference_id}] (${data.length} row(s))`, update)
|
|
151
165
|
|
|
152
166
|
return new Response(
|
|
153
|
-
JSON.stringify({
|
|
167
|
+
JSON.stringify({
|
|
168
|
+
success: true,
|
|
169
|
+
table: reference_table,
|
|
170
|
+
id: reference_id,
|
|
171
|
+
updated: update,
|
|
172
|
+
rowsAffected: data.length,
|
|
173
|
+
}),
|
|
154
174
|
{ status: 200, headers: { "Content-Type": "application/json" } },
|
|
155
175
|
)
|
|
156
176
|
})
|