@mailto.foo/sdk 1.4.1 → 1.4.3

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/cdn.js CHANGED
@@ -1,5 +1,25 @@
1
1
  import { Mailto } from "./index.js";
2
- const FORM_ACTION_PATTERN = /\/(pk_[A-Za-z0-9_-]+)\/subscribe\/?(?:[?#].*)?$/;
2
+ const FORM_ACTION_PATTERN = /\/((?:pk_|ph_public_)[A-Za-z0-9_-]+)\/subscribe\/?(?:[?#].*)?$/;
3
+ // Broader than FORM_ACTION_PATTERN: catches forms pointed at a mailto.foo subscribe
4
+ // endpoint whose key prefix we don't (yet) recognize, so we can stop the native
5
+ // submission instead of letting the browser navigate the whole page to a 404.
6
+ const SUBSCRIBE_PATH_PATTERN = /\/[A-Za-z0-9_-]+\/subscribe\/?(?:[?#].*)?$/;
7
+ const MAILTO_FOO_HOST_PATTERN = /(?:^|\.)mailto-foo\.|(?:^|\.)mailto\.foo$/;
8
+ const looksLikeMailtoFooSubscribeForm = (action) => {
9
+ try {
10
+ const url = new URL(action, window.location.href);
11
+ return MAILTO_FOO_HOST_PATTERN.test(url.hostname) && SUBSCRIBE_PATH_PATTERN.test(url.pathname);
12
+ }
13
+ catch {
14
+ return false;
15
+ }
16
+ };
17
+ const guardForm = (form) => {
18
+ form.addEventListener("submit", (event) => {
19
+ event.preventDefault();
20
+ console.warn(`mailto.foo: unrecognized publish key in form action "${form.action}" — submission blocked to avoid a full-page redirect. Update the SDK or check the form action URL.`);
21
+ });
22
+ };
3
23
  const collectFormData = (form) => {
4
24
  const data = {};
5
25
  for (const [key, value] of new FormData(form).entries()) {
@@ -71,6 +91,8 @@ const enhanceForms = () => {
71
91
  const match = form.action.match(FORM_ACTION_PATTERN);
72
92
  if (match?.[1])
73
93
  enhanceForm(form, match[1]);
94
+ else if (looksLikeMailtoFooSubscribeForm(form.action))
95
+ guardForm(form);
74
96
  }
75
97
  };
76
98
  if (document.readyState === "loading") {
package/dist/cdn.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cdn.js","sourceRoot":"","sources":["../src/cdn.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cdn.js","sourceRoot":"","sources":["../src/cdn.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -5,8 +5,15 @@ const fetchPublisherConfig = async (publishKey) => {
5
5
  try {
6
6
  const res = await fetch(`${API_BASE}/config/${publishKey}/config`, { signal: controller.signal });
7
7
  clearTimeout(timeout);
8
- if (!res.ok)
9
- throw new Error(`Config fetch failed: ${res.status}`);
8
+ if (!res.ok) {
9
+ if (res.status === 404)
10
+ throw new Error(`Invalid publish key: ${publishKey}`);
11
+ const contentType = res.headers.get("content-type") ?? "";
12
+ const message = contentType.includes("application/json")
13
+ ? (await res.json()).error ?? `Config fetch failed: ${res.status}`
14
+ : await res.text();
15
+ throw new Error(message);
16
+ }
10
17
  return res.json();
11
18
  }
12
19
  catch (err) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAmBA,MAAM,QAAQ,GAAG,4CAA4C,CAAC;AAE9D,MAAM,oBAAoB,GAAG,KAAK,EAAE,UAAkB,EAA4B,EAAE;IAClF,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;IAC3D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,WAAW,UAAU,SAAS,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAClG,YAAY,CAAC,OAAO,CAAC,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,UAAU,EAAE,CAAC,CAAC;YAC9E,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;YAC1D,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC;gBACtD,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,EAAyB,CAAA,CAAC,KAAK,IAAI,wBAAwB,GAAG,CAAC,MAAM,EAAE;gBACxF,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,EAA8B,CAAC;IAChD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,YAAY,CAAC,OAAO,CAAC,CAAC;QACtB,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC,CAAC;AAEF,IAAI,sBAAsB,GAAyB,IAAI,CAAC;AAExD,MAAM,mBAAmB,GAAG,GAAkB,EAAE;IAC9C,IAAK,MAAc,CAAC,SAAS;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IACxD,IAAI,sBAAsB;QAAE,OAAO,sBAAsB,CAAC;IAE1D,sBAAsB,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACvD,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,CAAC,GAAG,GAAG,uEAAuE,CAAC;QACrF,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;QAChC,MAAM,CAAC,OAAO,GAAG,CAAC,GAAG,EAAE,EAAE;YACvB,sBAAsB,GAAG,IAAI,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC;QACF,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,OAAO,sBAAsB,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAC,OAAe,EAAmB,EAAE;IACjE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG;YACtB,gBAAgB;YAChB,SAAS;YACT,oBAAoB;YACpB,cAAc;YACd,oBAAoB;YACpB,wBAAwB;YACxB,4BAA4B;SAC7B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEZ,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC7C,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC5B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAEnC,IAAI,QAAgB,CAAC;QACrB,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,IAAI,CAAC;gBAAE,MAAc,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YAC1E,IAAI,CAAC;gBAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,CAAC;QAC7E,CAAC,CAAC;QAEF,QAAQ,GAAI,MAAc,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE;YAClD,OAAO,EAAE,OAAO;YAChB,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC1B,OAAO,EAAE,CAAC;gBACV,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC;YACD,gBAAgB,EAAE,GAAG,EAAE;gBACrB,OAAO,EAAE,CAAC;gBACV,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC;YACrD,CAAC;YACD,kBAAkB,EAAE,GAAG,EAAE;gBACvB,OAAO,EAAE,CAAC;gBACV,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;YAC/C,CAAC;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,KAAK,EAAE,OAAe,EAAmB,EAAE;IACnE,MAAM,mBAAmB,EAAE,CAAC;IAE5B,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAChD,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,iEAAiE,CAAC;IAC5F,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAErC,IAAI,QAAgB,CAAC;IACrB,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,IAAI,CAAC;YAAE,MAAc,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAC1E,IAAI,CAAC;YAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,CAAC;IAC/E,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,MAAM,IAAI,OAAO,CAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACjE,QAAQ,GAAI,MAAc,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE;YACrD,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,kBAAkB;YAC9B,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnD,gBAAgB,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrD,kBAAkB,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC;SACvF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAAC;AACjD,CAAC,CAAC;AAEF,MAAM,OAAO,MAAM;IACT,UAAU,CAAS;IAE3B,YAAY,MAAuB;QACjC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAmB;QACjC,MAAM,eAAe,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEpE,MAAM,KAAK,GAAG,eAAe,CAAC,gBAAgB;YAC5C,CAAC,CAAC,MAAM,iBAAiB,CAAC,eAAe,CAAC,gBAAgB,CAAC;YAC3D,CAAC,CAAC,SAAS,CAAC;QAEd,MAAM,IAAI,GAAkB;YAC1B,IAAI;YACJ,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE;SAC/C,CAAC;QAEF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,YAAY,EAAE;YAC/C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;YAC1D,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC;gBACtD,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,EAAyB,CAAA,CAAC,KAAK,IAAI,qBAAqB;gBACzE,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;CACF"}
package/dist/sdk.min.js CHANGED
@@ -1 +1 @@
1
- "use strict";(()=>{var u="https://api-mailto-foo.dan-7bc.workers.dev",g=async n=>{let e=new AbortController,t=setTimeout(()=>e.abort(),5e3);try{let o=await fetch(`${u}/config/${n}/config`,{signal:e.signal});if(clearTimeout(t),!o.ok)throw new Error(`Config fetch failed: ${o.status}`);return o.json()}catch(o){throw clearTimeout(t),o}},a=null,p=()=>window.turnstile?Promise.resolve():a||(a=new Promise((n,e)=>{let t=document.createElement("script");t.src="https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit",t.async=!0,t.defer=!0,t.onload=()=>n(),t.onerror=o=>{a=null,e(o)},document.head.appendChild(t)}),a),y=n=>new Promise((e,t)=>{let o=document.createElement("div");o.style.cssText=["position:fixed","inset:0","z-index:2147483647","display:flex","align-items:center","justify-content:center","background:rgba(0,0,0,0.5)"].join(";");let s=document.createElement("div");o.appendChild(s),document.body.appendChild(o);let i,c=()=>{try{window.turnstile.remove(i)}catch{}try{document.body.removeChild(o)}catch{}};i=window.turnstile.render(s,{sitekey:n,callback:r=>{c(),e(r)},"error-callback":()=>{c(),t(new Error("Turnstile verification failed"))},"expired-callback":()=>{c(),t(new Error("Turnstile token expired"))}})}),f=async n=>{await p();let e=document.createElement("div");e.style.cssText="position:fixed;bottom:0;right:0;z-index:9999;visibility:hidden;",document.body.appendChild(e);let t,o=()=>{try{window.turnstile.remove(t)}catch{}try{document.body.removeChild(e)}catch{}};return await new Promise((i,c)=>{t=window.turnstile.render(e,{sitekey:n,appearance:"interaction-only",callback:r=>{o(),i(r)},"error-callback":()=>{o(),i(null)},"expired-callback":()=>{o(),c(new Error("Turnstile token expired"))}})})??y(n)},l=class{publishKey;constructor(e){this.publishKey=e.publishKey}async subscribe(e){let t=await g(this.publishKey),o=t.turnstileSiteKey?await f(t.turnstileSiteKey):void 0,s={data:e,config:{publishKey:this.publishKey,token:o}},i=await fetch(`${u}/subscribe`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)});if(!i.ok){let r=(i.headers.get("content-type")??"").includes("application/json")?(await i.json()).error??"Subscription failed":await i.text();throw new Error(r)}}};var h=/\/(pk_[A-Za-z0-9_-]+)\/subscribe\/?(?:[?#].*)?$/,E=n=>{let e={};for(let[t,o]of new FormData(n).entries())typeof o=="string"&&(e[t]=o);return e},w="mailto-foo-error",T="mailto-foo-success",S="mailto-foo-button",C="mailto:submitting",v="mailto:success",k="mailto:error",d=(n,e)=>{let t=n.querySelector(`.${e}`);if(t)return t;let o=document.createElement("div");return o.className=e,n.appendChild(o),o},x=n=>{let e=new Set;for(let t of n.querySelectorAll(`.${S}, button[type="submit"], input[type="submit"]`))(t instanceof HTMLButtonElement||t instanceof HTMLInputElement)&&e.add(t);return[...e]},m=(n,e)=>{for(let t of n)t.disabled=e,e?t.setAttribute("data-loading","true"):t.removeAttribute("data-loading")},L=(n,e)=>{let t=new l({publishKey:e}),o=d(n,w),s=d(n,T),i=x(n);n.addEventListener("submit",async c=>{c.preventDefault(),m(i,!0),n.dispatchEvent(new CustomEvent(C,{bubbles:!0}));try{await t.subscribe(E(n)),o.textContent="",s.textContent="Thanks for subscribing!",n.reset(),n.dispatchEvent(new CustomEvent(v,{bubbles:!0}))}catch(r){s.textContent="",o.textContent=r instanceof Error?r.message:String(r),n.dispatchEvent(new CustomEvent(k,{bubbles:!0,detail:{error:r}}))}finally{m(i,!1)}})},b=()=>{for(let n of document.querySelectorAll("form[action]")){let e=n.action.match(h);e?.[1]&&L(n,e[1])}};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",b):b();window.Mailto=l;})();
1
+ "use strict";(()=>{var u="https://api-mailto-foo.dan-7bc.workers.dev",p=async t=>{let e=new AbortController,n=setTimeout(()=>e.abort(),5e3);try{let o=await fetch(`${u}/config/${t}/config`,{signal:e.signal});if(clearTimeout(n),!o.ok){if(o.status===404)throw new Error(`Invalid publish key: ${t}`);let i=(o.headers.get("content-type")??"").includes("application/json")?(await o.json()).error??`Config fetch failed: ${o.status}`:await o.text();throw new Error(i)}return o.json()}catch(o){throw clearTimeout(n),o}},a=null,g=()=>window.turnstile?Promise.resolve():a||(a=new Promise((t,e)=>{let n=document.createElement("script");n.src="https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit",n.async=!0,n.defer=!0,n.onload=()=>t(),n.onerror=o=>{a=null,e(o)},document.head.appendChild(n)}),a),f=t=>new Promise((e,n)=>{let o=document.createElement("div");o.style.cssText=["position:fixed","inset:0","z-index:2147483647","display:flex","align-items:center","justify-content:center","background:rgba(0,0,0,0.5)"].join(";");let s=document.createElement("div");o.appendChild(s),document.body.appendChild(o);let i,c=()=>{try{window.turnstile.remove(i)}catch{}try{document.body.removeChild(o)}catch{}};i=window.turnstile.render(s,{sitekey:t,callback:r=>{c(),e(r)},"error-callback":()=>{c(),n(new Error("Turnstile verification failed"))},"expired-callback":()=>{c(),n(new Error("Turnstile token expired"))}})}),y=async t=>{await g();let e=document.createElement("div");e.style.cssText="position:fixed;bottom:0;right:0;z-index:9999;visibility:hidden;",document.body.appendChild(e);let n,o=()=>{try{window.turnstile.remove(n)}catch{}try{document.body.removeChild(e)}catch{}};return await new Promise((i,c)=>{n=window.turnstile.render(e,{sitekey:t,appearance:"interaction-only",callback:r=>{o(),i(r)},"error-callback":()=>{o(),i(null)},"expired-callback":()=>{o(),c(new Error("Turnstile token expired"))}})})??f(t)},l=class{publishKey;constructor(e){this.publishKey=e.publishKey}async subscribe(e){let n=await p(this.publishKey),o=n.turnstileSiteKey?await y(n.turnstileSiteKey):void 0,s={data:e,config:{publishKey:this.publishKey,token:o}},i=await fetch(`${u}/subscribe`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)});if(!i.ok){let r=(i.headers.get("content-type")??"").includes("application/json")?(await i.json()).error??"Subscription failed":await i.text();throw new Error(r)}}};var h=/\/((?:pk_|ph_public_)[A-Za-z0-9_-]+)\/subscribe\/?(?:[?#].*)?$/,w=/\/[A-Za-z0-9_-]+\/subscribe\/?(?:[?#].*)?$/,E=/(?:^|\.)mailto-foo\.|(?:^|\.)mailto\.foo$/,T=t=>{try{let e=new URL(t,window.location.href);return E.test(e.hostname)&&w.test(e.pathname)}catch{return!1}},S=t=>{t.addEventListener("submit",e=>{e.preventDefault(),console.warn(`mailto.foo: unrecognized publish key in form action "${t.action}" \u2014 submission blocked to avoid a full-page redirect. Update the SDK or check the form action URL.`)})},C=t=>{let e={};for(let[n,o]of new FormData(t).entries())typeof o=="string"&&(e[n]=o);return e},v="mailto-foo-error",k="mailto-foo-success",L="mailto-foo-button",A="mailto:submitting",P="mailto:success",x="mailto:error",d=(t,e)=>{let n=t.querySelector(`.${e}`);if(n)return n;let o=document.createElement("div");return o.className=e,t.appendChild(o),o},M=t=>{let e=new Set;for(let n of t.querySelectorAll(`.${L}, button[type="submit"], input[type="submit"]`))(n instanceof HTMLButtonElement||n instanceof HTMLInputElement)&&e.add(n);return[...e]},m=(t,e)=>{for(let n of t)n.disabled=e,e?n.setAttribute("data-loading","true"):n.removeAttribute("data-loading")},_=(t,e)=>{let n=new l({publishKey:e}),o=d(t,v),s=d(t,k),i=M(t);t.addEventListener("submit",async c=>{c.preventDefault(),m(i,!0),t.dispatchEvent(new CustomEvent(A,{bubbles:!0}));try{await n.subscribe(C(t)),o.textContent="",s.textContent="Thanks for subscribing!",t.reset(),t.dispatchEvent(new CustomEvent(P,{bubbles:!0}))}catch(r){s.textContent="",o.textContent=r instanceof Error?r.message:String(r),t.dispatchEvent(new CustomEvent(x,{bubbles:!0,detail:{error:r}}))}finally{m(i,!1)}})},b=()=>{for(let t of document.querySelectorAll("form[action]")){let e=t.action.match(h);e?.[1]?_(t,e[1]):T(t.action)&&S(t)}};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",b):b();window.Mailto=l;})();
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@mailto.foo/sdk",
3
3
  "type": "module",
4
4
  "description": "Headless email subscription and contact form SDK for mailto.foo",
5
- "version": "1.4.1",
5
+ "version": "1.4.3",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
8
8
  "repository": {