@uninspired/auth-client 0.0.13 → 0.0.14

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/cjs/index.js CHANGED
@@ -1,4 +1,4 @@
1
- var{defineProperty:c,getOwnPropertyNames:g,getOwnPropertyDescriptor:R}=Object,k=Object.prototype.hasOwnProperty;var a=new WeakMap,x=(e)=>{var t=a.get(e),r;if(t)return t;if(t=c({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")g(e).map((n)=>!k.call(t,n)&&c(t,n,{get:()=>e[n],enumerable:!(r=R(e,n))||r.enumerable}));return a.set(e,t),t};var P=(e,t)=>{for(var r in t)c(e,r,{get:t[r],enumerable:!0,configurable:!0,set:(n)=>t[r]=()=>n})};var M={};P(M,{makeUsBetterAuthClient:()=>A,makeRedirectIntent:()=>y,makePublicClient:()=>b,makeMailingListClient:()=>O,makeLoginUrl:()=>q,makeCheckoutUrl:()=>j,makeCheckoutClient:()=>L,makeAppClient:()=>d});module.exports=x(M);var m=require("hono/client"),b=(e,t)=>{return m.hc(e,t)};var l=require("hono/client"),d=(e,t)=>{return l.hc(e,{...t,fetch:(r,n)=>(t?.fetch??fetch)(r,{...n,credentials:"include",headers:{...n.headers,"Content-Type":"application/json"}})})};var i=require("better-auth/client/plugins"),h=require("better-auth/react"),A=(e)=>{return h.createAuthClient({baseURL:e,plugins:[i.customSessionClient(),i.magicLinkClient(),i.emailOTPClient(),i.passkeyClient()]})};var f=require("hono/client"),L=(e,t)=>{return f.hc(e,{...t,fetch:(r,n)=>(t?.fetch??fetch)(r,{...n,credentials:"include",headers:{...n.headers,"Content-Type":"application/json"}})})};var C=require("hono/client"),O=(e,t,r)=>{return C.hc(e,{...r,headers:{...r?.headers,"X-Public-Key":t}})};function q(e,t,r){let n=new URL("/login",e);if(t)n.searchParams.set("intent",y(t,r));return n.toString()}function T(...e){}function j(e,t,r,n,s,p,u){T({priceId:t,productId:r,discountCode:n,loginUrl:s,pricingUrl:p,successUrl:u});let o=new URL("/auth/checkout",e);if(o.searchParams.set("priceId",t),o.searchParams.set("productId",r),n)o.searchParams.set("discountCode",n);if(s)o.searchParams.set("loginUrl",s);if(p)o.searchParams.set("pricingUrl",p);if(u)o.searchParams.set("successUrl",u);return o.toString()}function y(e,t){return JSON.stringify({type:"redirect",redirectUrl:e,appName:t})}
1
+ var{defineProperty:a,getOwnPropertyNames:R,getOwnPropertyDescriptor:x}=Object,d=Object.prototype.hasOwnProperty;var c=new WeakMap,k=(t)=>{var e=c.get(t),r;if(e)return e;if(e=a({},"__esModule",{value:!0}),t&&typeof t==="object"||typeof t==="function")R(t).map((n)=>!d.call(e,n)&&a(e,n,{get:()=>t[n],enumerable:!(r=x(t,n))||r.enumerable}));return c.set(t,e),e};var P=(t,e)=>{for(var r in e)a(t,r,{get:e[r],enumerable:!0,configurable:!0,set:(n)=>e[r]=()=>n})};var U={};P(U,{makeUsBetterAuthClient:()=>S,makeRedirectIntent:()=>y,makePublicClient:()=>b,makeMailingListClient:()=>O,makeLoginUrl:()=>T,makeCheckoutUrl:()=>j,makeCheckoutClient:()=>L,makeAppClient:()=>A,hasUserSubscribed:()=>I,hasUserPurchased:()=>M,formatPrice:()=>g.formatPrice});module.exports=k(U);var l=require("hono/client"),b=(t,e)=>{return l.hc(t,e)};var m=require("hono/client"),A=(t,e)=>{return m.hc(t,{...e,fetch:(r,n)=>(e?.fetch??fetch)(r,{...n,credentials:"include",headers:{...n.headers,"Content-Type":"application/json"}})})};var o=require("better-auth/client/plugins"),f=require("better-auth/react"),S=(t)=>{return f.createAuthClient({baseURL:t,plugins:[o.customSessionClient(),o.magicLinkClient(),o.emailOTPClient(),o.passkeyClient()]})};var h=require("hono/client"),L=(t,e)=>{return h.hc(t,{...e,fetch:(r,n)=>(e?.fetch??fetch)(r,{...n,credentials:"include",headers:{...n.headers,"Content-Type":"application/json"}})})};var C=require("hono/client"),O=(t,e,r)=>{return C.hc(t,{...r,headers:{...r?.headers,"X-Public-Key":e}})};function T(t,e,r){let n=new URL("/login",t);if(e)n.searchParams.set("intent",y(e,r));return n.toString()}function q(...t){}function j(t,e,r,n,s,p,u){q({priceId:e,productId:r,discountCode:n,loginUrl:s,pricingUrl:p,successUrl:u});let i=new URL("/auth/checkout",t);if(i.searchParams.set("priceId",e),i.searchParams.set("productId",r),n)i.searchParams.set("discountCode",n);if(s)i.searchParams.set("loginUrl",s);if(p)i.searchParams.set("pricingUrl",p);if(u)i.searchParams.set("successUrl",u);return i.toString()}function y(t,e){return JSON.stringify({type:"redirect",redirectUrl:t,appName:e})}function M(t,e){if(!t)return!1;return t.products.transactions.some((r)=>{r.productId===e&&r.status})}function I(t,e){if(!t)return!1;return t.products.subscriptions.some((r)=>{r.productId===e&&r.status})}var g=require("@us-accounts/utils");
2
2
 
3
- //# debugId=2ED0EA5600DA226664756E2164756E21
3
+ //# debugId=F78CCA901C70F47064756E2164756E21
4
4
  //# sourceMappingURL=index.js.map
@@ -1,15 +1,17 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/clients/publicClient.ts", "../../src/clients/appClient.ts", "../../src/clients/authClient.ts", "../../src/clients/checkoutClient.ts", "../../src/clients/mailingListClient.ts", "../../src/utils/intent.ts"],
3
+ "sources": ["../../src/clients/publicClient.ts", "../../src/clients/appClient.ts", "../../src/clients/authClient.ts", "../../src/clients/checkoutClient.ts", "../../src/clients/mailingListClient.ts", "../../src/utils/intent.ts", "../../src/utils/purchase.ts", "../../src/utils/index.ts"],
4
4
  "sourcesContent": [
5
5
  "import type { PublicRouter } from \"@us-accounts/api\";\nimport { hc, type ClientRequestOptions } from \"hono/client\";\n\nexport type PublicClient = ReturnType<typeof hc<PublicRouter>>;\n\nexport const makePublicClient = (\n baseURL: string,\n options?: ClientRequestOptions,\n): PublicClient => {\n return hc<PublicRouter>(baseURL, options);\n};\n",
6
6
  "import type { AppRouter } from \"@us-accounts/api\";\nimport { hc, type ClientRequestOptions } from \"hono/client\";\n\nexport type AppClient = ReturnType<typeof hc<AppRouter>>;\n\nexport const makeAppClient = (\n baseURL: string,\n options?: ClientRequestOptions,\n): AppClient => {\n return hc<AppRouter>(baseURL, {\n ...options,\n fetch: (url: any, init: any) =>\n (options?.fetch ?? fetch)(url, {\n ...init,\n credentials: \"include\",\n headers: {\n ...init.headers,\n \"Content-Type\": \"application/json\",\n },\n }),\n });\n};\n",
7
- "import {\n customSessionClient,\n magicLinkClient,\n emailOTPClient,\n passkeyClient,\n} from \"better-auth/client/plugins\";\nimport { createAuthClient } from \"better-auth/react\";\nimport type { Auth } from \"@us-accounts/api\";\n\nexport const makeUsBetterAuthClient = (baseURL: string) => {\n return createAuthClient({\n baseURL,\n plugins: [\n customSessionClient<Auth>(),\n magicLinkClient(),\n emailOTPClient(),\n passkeyClient(),\n ],\n });\n};\n",
7
+ "import {\n customSessionClient,\n magicLinkClient,\n emailOTPClient,\n passkeyClient,\n} from \"better-auth/client/plugins\";\nimport { createAuthClient } from \"better-auth/react\";\nimport type { Auth } from \"@us-accounts/api\";\n\nexport const makeUsBetterAuthClient = (baseURL: string) => {\n return createAuthClient({\n baseURL,\n plugins: [\n customSessionClient<Auth>(),\n magicLinkClient(),\n emailOTPClient(),\n passkeyClient(),\n ],\n });\n};\n\nexport type AuthClient = ReturnType<typeof makeUsBetterAuthClient>;\n",
8
8
  "import type { CheckoutRouter } from \"@us-accounts/api\";\nimport { hc, type ClientRequestOptions } from \"hono/client\";\n\nexport type CheckoutClient = ReturnType<typeof hc<CheckoutRouter>>;\n\nexport const makeCheckoutClient = (\n baseURL: string,\n options?: ClientRequestOptions,\n): CheckoutClient => {\n return hc<CheckoutRouter>(baseURL, {\n ...options,\n fetch: (url: any, init: any) =>\n (options?.fetch ?? fetch)(url, {\n ...init,\n credentials: \"include\",\n headers: {\n ...init.headers,\n \"Content-Type\": \"application/json\",\n },\n }),\n });\n};\n",
9
9
  "import type { MailingListRouter } from \"@us-accounts/api\";\nimport { hc, type ClientRequestOptions } from \"hono/client\";\n\nexport type MailingListClient = ReturnType<typeof hc<MailingListRouter>>;\n\nexport const makeMailingListClient = (\n baseURL: string,\n publicKey: string,\n options?: ClientRequestOptions,\n): MailingListClient => {\n return hc<MailingListRouter>(baseURL, {\n ...options,\n headers: {\n ...options?.headers,\n \"X-Public-Key\": publicKey,\n },\n });\n};\n",
10
- "import type { CheckoutSearch, RedirectIntent } from \"@us-accounts/utils\";\n\nexport function makeLoginUrl(\n apiUrl: string,\n redirectUrl?: string,\n appName?: string,\n) {\n const url = new URL(\"/login\", apiUrl);\n if (redirectUrl) {\n url.searchParams.set(\"intent\", makeRedirectIntent(redirectUrl, appName));\n }\n return url.toString();\n}\n\nfunction noop(...args: any[]) {\n // Do nothing\n}\n\nexport function makeCheckoutUrl(\n apiUrl: string,\n priceId: string,\n productId: string,\n discountCode?: string,\n loginUrl?: string,\n pricingUrl?: string,\n successUrl?: string,\n) {\n const obj = {\n priceId,\n productId,\n discountCode,\n loginUrl,\n pricingUrl,\n successUrl,\n } satisfies CheckoutSearch;\n noop(obj);\n\n const url = new URL(\"/auth/checkout\", apiUrl);\n url.searchParams.set(\"priceId\", priceId);\n url.searchParams.set(\"productId\", productId);\n if (discountCode) {\n url.searchParams.set(\"discountCode\", discountCode);\n }\n if (loginUrl) {\n url.searchParams.set(\"loginUrl\", loginUrl);\n }\n if (pricingUrl) {\n url.searchParams.set(\"pricingUrl\", pricingUrl);\n }\n if (successUrl) {\n url.searchParams.set(\"successUrl\", successUrl);\n }\n return url.toString();\n}\n\nexport function makeRedirectIntent(\n redirectUrl: string,\n appName?: string,\n): string {\n const obj = {\n type: \"redirect\",\n redirectUrl,\n appName,\n } satisfies RedirectIntent;\n\n return JSON.stringify(obj);\n}\n"
10
+ "import type { CheckoutSearch, RedirectIntent } from \"@us-accounts/utils\";\n\nexport function makeLoginUrl(\n apiUrl: string,\n redirectUrl?: string,\n appName?: string,\n) {\n const url = new URL(\"/login\", apiUrl);\n if (redirectUrl) {\n url.searchParams.set(\"intent\", makeRedirectIntent(redirectUrl, appName));\n }\n return url.toString();\n}\n\nfunction noop(...args: any[]) {\n // Do nothing\n}\n\nexport function makeCheckoutUrl(\n apiUrl: string,\n priceId: string,\n productId: string,\n discountCode?: string,\n loginUrl?: string,\n pricingUrl?: string,\n successUrl?: string,\n) {\n const obj = {\n priceId,\n productId,\n discountCode,\n loginUrl,\n pricingUrl,\n successUrl,\n } satisfies CheckoutSearch;\n noop(obj);\n\n const url = new URL(\"/auth/checkout\", apiUrl);\n url.searchParams.set(\"priceId\", priceId);\n url.searchParams.set(\"productId\", productId);\n if (discountCode) {\n url.searchParams.set(\"discountCode\", discountCode);\n }\n if (loginUrl) {\n url.searchParams.set(\"loginUrl\", loginUrl);\n }\n if (pricingUrl) {\n url.searchParams.set(\"pricingUrl\", pricingUrl);\n }\n if (successUrl) {\n url.searchParams.set(\"successUrl\", successUrl);\n }\n return url.toString();\n}\n\nexport function makeRedirectIntent(\n redirectUrl: string,\n appName?: string,\n): string {\n const obj = {\n type: \"redirect\",\n redirectUrl,\n appName,\n } satisfies RedirectIntent;\n\n return JSON.stringify(obj);\n}\n",
11
+ "import type { AuthClient } from \"../clients/authClient\";\n\nexport type SessionData = ReturnType<AuthClient[\"useSession\"]>[\"data\"];\n\nexport function hasUserPurchased(\n sessionData: SessionData,\n productId: string,\n): boolean {\n if (!sessionData) return false;\n return sessionData.products.transactions.some((transaction) => {\n transaction.productId === productId && transaction.status === \"completed\";\n });\n}\n\nexport function hasUserSubscribed(\n sessionData: SessionData,\n productId: string,\n): boolean {\n if (!sessionData) return false;\n return sessionData.products.subscriptions.some((subscription) => {\n subscription.productId === productId && subscription.status === \"active\";\n });\n}\n",
12
+ "export * from \"./intent\";\nexport * from \"./purchase\";\nexport { formatPrice } from \"@us-accounts/utils\";\n"
11
13
  ],
12
- "mappings": "4qBAC8C,IAA9C,yBAIa,EAAmB,CAC9B,EACA,IACiB,CACjB,OAAO,KAAiB,EAAS,CAAO,GCRI,IAA9C,yBAIa,EAAgB,CAC3B,EACA,IACc,CACd,OAAO,KAAc,EAAS,IACzB,EACH,MAAO,CAAC,EAAU,KACf,GAAS,OAAS,OAAO,EAAK,IAC1B,EACH,YAAa,UACb,QAAS,IACJ,EAAK,QACR,eAAgB,kBAClB,CACF,CAAC,CACL,CAAC,GCfI,IALP,wCAMA,+BAGa,EAAyB,CAAC,IAAoB,CACzD,OAAO,mBAAiB,CACtB,UACA,QAAS,CACP,sBAA0B,EAC1B,kBAAgB,EAChB,iBAAe,EACf,gBAAc,CAChB,CACF,CAAC,GCjB2C,IAA9C,yBAIa,EAAqB,CAChC,EACA,IACmB,CACnB,OAAO,KAAmB,EAAS,IAC9B,EACH,MAAO,CAAC,EAAU,KACf,GAAS,OAAS,OAAO,EAAK,IAC1B,EACH,YAAa,UACb,QAAS,IACJ,EAAK,QACR,eAAgB,kBAClB,CACF,CAAC,CACL,CAAC,GCnB2C,IAA9C,yBAIa,EAAwB,CACnC,EACA,EACA,IACsB,CACtB,OAAO,KAAsB,EAAS,IACjC,EACH,QAAS,IACJ,GAAS,QACZ,eAAgB,CAClB,CACF,CAAC,GCdI,SAAS,CAAY,CAC1B,EACA,EACA,EACA,CACA,IAAM,EAAM,IAAI,IAAI,SAAU,CAAM,EACpC,GAAI,EACF,EAAI,aAAa,IAAI,SAAU,EAAmB,EAAa,CAAO,CAAC,EAEzE,OAAO,EAAI,SAAS,EAGtB,SAAS,CAAI,IAAI,EAAa,EAIvB,SAAS,CAAe,CAC7B,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CASA,EARY,CACV,UACA,YACA,eACA,WACA,aACA,YACF,CACQ,EAER,IAAM,EAAM,IAAI,IAAI,iBAAkB,CAAM,EAG5C,GAFA,EAAI,aAAa,IAAI,UAAW,CAAO,EACvC,EAAI,aAAa,IAAI,YAAa,CAAS,EACvC,EACF,EAAI,aAAa,IAAI,eAAgB,CAAY,EAEnD,GAAI,EACF,EAAI,aAAa,IAAI,WAAY,CAAQ,EAE3C,GAAI,EACF,EAAI,aAAa,IAAI,aAAc,CAAU,EAE/C,GAAI,EACF,EAAI,aAAa,IAAI,aAAc,CAAU,EAE/C,OAAO,EAAI,SAAS,EAGf,SAAS,CAAkB,CAChC,EACA,EACQ,CAOR,OAAO,KAAK,UANA,CACV,KAAM,WACN,cACA,SACF,CAEyB",
13
- "debugId": "2ED0EA5600DA226664756E2164756E21",
14
+ "mappings": "yvBAC8C,IAA9C,yBAIa,EAAmB,CAC9B,EACA,IACiB,CACjB,OAAO,KAAiB,EAAS,CAAO,GCRI,IAA9C,yBAIa,EAAgB,CAC3B,EACA,IACc,CACd,OAAO,KAAc,EAAS,IACzB,EACH,MAAO,CAAC,EAAU,KACf,GAAS,OAAS,OAAO,EAAK,IAC1B,EACH,YAAa,UACb,QAAS,IACJ,EAAK,QACR,eAAgB,kBAClB,CACF,CAAC,CACL,CAAC,GCfI,IALP,wCAMA,+BAGa,EAAyB,CAAC,IAAoB,CACzD,OAAO,mBAAiB,CACtB,UACA,QAAS,CACP,sBAA0B,EAC1B,kBAAgB,EAChB,iBAAe,EACf,gBAAc,CAChB,CACF,CAAC,GCjB2C,IAA9C,yBAIa,EAAqB,CAChC,EACA,IACmB,CACnB,OAAO,KAAmB,EAAS,IAC9B,EACH,MAAO,CAAC,EAAU,KACf,GAAS,OAAS,OAAO,EAAK,IAC1B,EACH,YAAa,UACb,QAAS,IACJ,EAAK,QACR,eAAgB,kBAClB,CACF,CAAC,CACL,CAAC,GCnB2C,IAA9C,yBAIa,EAAwB,CACnC,EACA,EACA,IACsB,CACtB,OAAO,KAAsB,EAAS,IACjC,EACH,QAAS,IACJ,GAAS,QACZ,eAAgB,CAClB,CACF,CAAC,GCdI,SAAS,CAAY,CAC1B,EACA,EACA,EACA,CACA,IAAM,EAAM,IAAI,IAAI,SAAU,CAAM,EACpC,GAAI,EACF,EAAI,aAAa,IAAI,SAAU,EAAmB,EAAa,CAAO,CAAC,EAEzE,OAAO,EAAI,SAAS,EAGtB,SAAS,CAAI,IAAI,EAAa,EAIvB,SAAS,CAAe,CAC7B,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CASA,EARY,CACV,UACA,YACA,eACA,WACA,aACA,YACF,CACQ,EAER,IAAM,EAAM,IAAI,IAAI,iBAAkB,CAAM,EAG5C,GAFA,EAAI,aAAa,IAAI,UAAW,CAAO,EACvC,EAAI,aAAa,IAAI,YAAa,CAAS,EACvC,EACF,EAAI,aAAa,IAAI,eAAgB,CAAY,EAEnD,GAAI,EACF,EAAI,aAAa,IAAI,WAAY,CAAQ,EAE3C,GAAI,EACF,EAAI,aAAa,IAAI,aAAc,CAAU,EAE/C,GAAI,EACF,EAAI,aAAa,IAAI,aAAc,CAAU,EAE/C,OAAO,EAAI,SAAS,EAGf,SAAS,CAAkB,CAChC,EACA,EACQ,CAOR,OAAO,KAAK,UANA,CACV,KAAM,WACN,cACA,SACF,CAEyB,EC7DpB,SAAS,CAAgB,CAC9B,EACA,EACS,CACT,GAAI,CAAC,EAAa,MAAO,GACzB,OAAO,EAAY,SAAS,aAAa,KAAK,CAAC,IAAgB,CAC7D,EAAY,YAAc,GAAa,EAAY,OACpD,EAGI,SAAS,CAAiB,CAC/B,EACA,EACS,CACT,GAAI,CAAC,EAAa,MAAO,GACzB,OAAO,EAAY,SAAS,cAAc,KAAK,CAAC,IAAiB,CAC/D,EAAa,YAAc,GAAa,EAAa,OACtD,ECnByB,IAA5B",
15
+ "debugId": "F78CCA901C70F47064756E2164756E21",
14
16
  "names": []
15
17
  }
package/dist/esm/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import{hc as u}from"hono/client";var P=(e,t)=>{return u(e,t)};import{hc as c}from"hono/client";var A=(e,t)=>{return c(e,{...t,fetch:(r,n)=>(t?.fetch??fetch)(r,{...n,credentials:"include",headers:{...n.headers,"Content-Type":"application/json"}})})};import{customSessionClient as a,magicLinkClient as m,emailOTPClient as l,passkeyClient as h}from"better-auth/client/plugins";import{createAuthClient as f}from"better-auth/react";var T=(e)=>{return f({baseURL:e,plugins:[a(),m(),l(),h()]})};import{hc as C}from"hono/client";var S=(e,t)=>{return C(e,{...t,fetch:(r,n)=>(t?.fetch??fetch)(r,{...n,credentials:"include",headers:{...n.headers,"Content-Type":"application/json"}})})};import{hc as y}from"hono/client";var B=(e,t,r)=>{return y(e,{...r,headers:{...r?.headers,"X-Public-Key":t}})};function D(e,t,r){let n=new URL("/login",e);if(t)n.searchParams.set("intent",R(t,r));return n.toString()}function g(...e){}function E(e,t,r,n,o,s,p){g({priceId:t,productId:r,discountCode:n,loginUrl:o,pricingUrl:s,successUrl:p});let i=new URL("/auth/checkout",e);if(i.searchParams.set("priceId",t),i.searchParams.set("productId",r),n)i.searchParams.set("discountCode",n);if(o)i.searchParams.set("loginUrl",o);if(s)i.searchParams.set("pricingUrl",s);if(p)i.searchParams.set("successUrl",p);return i.toString()}function R(e,t){return JSON.stringify({type:"redirect",redirectUrl:e,appName:t})}export{T as makeUsBetterAuthClient,R as makeRedirectIntent,P as makePublicClient,B as makeMailingListClient,D as makeLoginUrl,E as makeCheckoutUrl,S as makeCheckoutClient,A as makeAppClient};
1
+ import{hc as u}from"hono/client";var k=(t,e)=>{return u(t,e)};import{hc as a}from"hono/client";var A=(t,e)=>{return a(t,{...e,fetch:(r,n)=>(e?.fetch??fetch)(r,{...n,credentials:"include",headers:{...n.headers,"Content-Type":"application/json"}})})};import{customSessionClient as c,magicLinkClient as l,emailOTPClient as m,passkeyClient as f}from"better-auth/client/plugins";import{createAuthClient as h}from"better-auth/react";var T=(t)=>{return h({baseURL:t,plugins:[c(),l(),m(),f()]})};import{hc as C}from"hono/client";var M=(t,e)=>{return C(t,{...e,fetch:(r,n)=>(e?.fetch??fetch)(r,{...n,credentials:"include",headers:{...n.headers,"Content-Type":"application/json"}})})};import{hc as y}from"hono/client";var w=(t,e,r)=>{return y(t,{...r,headers:{...r?.headers,"X-Public-Key":e}})};function z(t,e,r){let n=new URL("/login",t);if(e)n.searchParams.set("intent",R(e,r));return n.toString()}function g(...t){}function E(t,e,r,n,i,s,p){g({priceId:e,productId:r,discountCode:n,loginUrl:i,pricingUrl:s,successUrl:p});let o=new URL("/auth/checkout",t);if(o.searchParams.set("priceId",e),o.searchParams.set("productId",r),n)o.searchParams.set("discountCode",n);if(i)o.searchParams.set("loginUrl",i);if(s)o.searchParams.set("pricingUrl",s);if(p)o.searchParams.set("successUrl",p);return o.toString()}function R(t,e){return JSON.stringify({type:"redirect",redirectUrl:t,appName:e})}function G(t,e){if(!t)return!1;return t.products.transactions.some((r)=>{r.productId===e&&r.status})}function H(t,e){if(!t)return!1;return t.products.subscriptions.some((r)=>{r.productId===e&&r.status})}import{formatPrice as _}from"@us-accounts/utils";export{T as makeUsBetterAuthClient,R as makeRedirectIntent,k as makePublicClient,w as makeMailingListClient,z as makeLoginUrl,E as makeCheckoutUrl,M as makeCheckoutClient,A as makeAppClient,H as hasUserSubscribed,G as hasUserPurchased,_ as formatPrice};
2
2
 
3
- //# debugId=007B2F935D38AB1064756E2164756E21
3
+ //# debugId=10219B7A43FFF4DC64756E2164756E21
4
4
  //# sourceMappingURL=index.js.map
@@ -1,15 +1,17 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/clients/publicClient.ts", "../../src/clients/appClient.ts", "../../src/clients/authClient.ts", "../../src/clients/checkoutClient.ts", "../../src/clients/mailingListClient.ts", "../../src/utils/intent.ts"],
3
+ "sources": ["../../src/clients/publicClient.ts", "../../src/clients/appClient.ts", "../../src/clients/authClient.ts", "../../src/clients/checkoutClient.ts", "../../src/clients/mailingListClient.ts", "../../src/utils/intent.ts", "../../src/utils/purchase.ts", "../../src/utils/index.ts"],
4
4
  "sourcesContent": [
5
5
  "import type { PublicRouter } from \"@us-accounts/api\";\nimport { hc, type ClientRequestOptions } from \"hono/client\";\n\nexport type PublicClient = ReturnType<typeof hc<PublicRouter>>;\n\nexport const makePublicClient = (\n baseURL: string,\n options?: ClientRequestOptions,\n): PublicClient => {\n return hc<PublicRouter>(baseURL, options);\n};\n",
6
6
  "import type { AppRouter } from \"@us-accounts/api\";\nimport { hc, type ClientRequestOptions } from \"hono/client\";\n\nexport type AppClient = ReturnType<typeof hc<AppRouter>>;\n\nexport const makeAppClient = (\n baseURL: string,\n options?: ClientRequestOptions,\n): AppClient => {\n return hc<AppRouter>(baseURL, {\n ...options,\n fetch: (url: any, init: any) =>\n (options?.fetch ?? fetch)(url, {\n ...init,\n credentials: \"include\",\n headers: {\n ...init.headers,\n \"Content-Type\": \"application/json\",\n },\n }),\n });\n};\n",
7
- "import {\n customSessionClient,\n magicLinkClient,\n emailOTPClient,\n passkeyClient,\n} from \"better-auth/client/plugins\";\nimport { createAuthClient } from \"better-auth/react\";\nimport type { Auth } from \"@us-accounts/api\";\n\nexport const makeUsBetterAuthClient = (baseURL: string) => {\n return createAuthClient({\n baseURL,\n plugins: [\n customSessionClient<Auth>(),\n magicLinkClient(),\n emailOTPClient(),\n passkeyClient(),\n ],\n });\n};\n",
7
+ "import {\n customSessionClient,\n magicLinkClient,\n emailOTPClient,\n passkeyClient,\n} from \"better-auth/client/plugins\";\nimport { createAuthClient } from \"better-auth/react\";\nimport type { Auth } from \"@us-accounts/api\";\n\nexport const makeUsBetterAuthClient = (baseURL: string) => {\n return createAuthClient({\n baseURL,\n plugins: [\n customSessionClient<Auth>(),\n magicLinkClient(),\n emailOTPClient(),\n passkeyClient(),\n ],\n });\n};\n\nexport type AuthClient = ReturnType<typeof makeUsBetterAuthClient>;\n",
8
8
  "import type { CheckoutRouter } from \"@us-accounts/api\";\nimport { hc, type ClientRequestOptions } from \"hono/client\";\n\nexport type CheckoutClient = ReturnType<typeof hc<CheckoutRouter>>;\n\nexport const makeCheckoutClient = (\n baseURL: string,\n options?: ClientRequestOptions,\n): CheckoutClient => {\n return hc<CheckoutRouter>(baseURL, {\n ...options,\n fetch: (url: any, init: any) =>\n (options?.fetch ?? fetch)(url, {\n ...init,\n credentials: \"include\",\n headers: {\n ...init.headers,\n \"Content-Type\": \"application/json\",\n },\n }),\n });\n};\n",
9
9
  "import type { MailingListRouter } from \"@us-accounts/api\";\nimport { hc, type ClientRequestOptions } from \"hono/client\";\n\nexport type MailingListClient = ReturnType<typeof hc<MailingListRouter>>;\n\nexport const makeMailingListClient = (\n baseURL: string,\n publicKey: string,\n options?: ClientRequestOptions,\n): MailingListClient => {\n return hc<MailingListRouter>(baseURL, {\n ...options,\n headers: {\n ...options?.headers,\n \"X-Public-Key\": publicKey,\n },\n });\n};\n",
10
- "import type { CheckoutSearch, RedirectIntent } from \"@us-accounts/utils\";\n\nexport function makeLoginUrl(\n apiUrl: string,\n redirectUrl?: string,\n appName?: string,\n) {\n const url = new URL(\"/login\", apiUrl);\n if (redirectUrl) {\n url.searchParams.set(\"intent\", makeRedirectIntent(redirectUrl, appName));\n }\n return url.toString();\n}\n\nfunction noop(...args: any[]) {\n // Do nothing\n}\n\nexport function makeCheckoutUrl(\n apiUrl: string,\n priceId: string,\n productId: string,\n discountCode?: string,\n loginUrl?: string,\n pricingUrl?: string,\n successUrl?: string,\n) {\n const obj = {\n priceId,\n productId,\n discountCode,\n loginUrl,\n pricingUrl,\n successUrl,\n } satisfies CheckoutSearch;\n noop(obj);\n\n const url = new URL(\"/auth/checkout\", apiUrl);\n url.searchParams.set(\"priceId\", priceId);\n url.searchParams.set(\"productId\", productId);\n if (discountCode) {\n url.searchParams.set(\"discountCode\", discountCode);\n }\n if (loginUrl) {\n url.searchParams.set(\"loginUrl\", loginUrl);\n }\n if (pricingUrl) {\n url.searchParams.set(\"pricingUrl\", pricingUrl);\n }\n if (successUrl) {\n url.searchParams.set(\"successUrl\", successUrl);\n }\n return url.toString();\n}\n\nexport function makeRedirectIntent(\n redirectUrl: string,\n appName?: string,\n): string {\n const obj = {\n type: \"redirect\",\n redirectUrl,\n appName,\n } satisfies RedirectIntent;\n\n return JSON.stringify(obj);\n}\n"
10
+ "import type { CheckoutSearch, RedirectIntent } from \"@us-accounts/utils\";\n\nexport function makeLoginUrl(\n apiUrl: string,\n redirectUrl?: string,\n appName?: string,\n) {\n const url = new URL(\"/login\", apiUrl);\n if (redirectUrl) {\n url.searchParams.set(\"intent\", makeRedirectIntent(redirectUrl, appName));\n }\n return url.toString();\n}\n\nfunction noop(...args: any[]) {\n // Do nothing\n}\n\nexport function makeCheckoutUrl(\n apiUrl: string,\n priceId: string,\n productId: string,\n discountCode?: string,\n loginUrl?: string,\n pricingUrl?: string,\n successUrl?: string,\n) {\n const obj = {\n priceId,\n productId,\n discountCode,\n loginUrl,\n pricingUrl,\n successUrl,\n } satisfies CheckoutSearch;\n noop(obj);\n\n const url = new URL(\"/auth/checkout\", apiUrl);\n url.searchParams.set(\"priceId\", priceId);\n url.searchParams.set(\"productId\", productId);\n if (discountCode) {\n url.searchParams.set(\"discountCode\", discountCode);\n }\n if (loginUrl) {\n url.searchParams.set(\"loginUrl\", loginUrl);\n }\n if (pricingUrl) {\n url.searchParams.set(\"pricingUrl\", pricingUrl);\n }\n if (successUrl) {\n url.searchParams.set(\"successUrl\", successUrl);\n }\n return url.toString();\n}\n\nexport function makeRedirectIntent(\n redirectUrl: string,\n appName?: string,\n): string {\n const obj = {\n type: \"redirect\",\n redirectUrl,\n appName,\n } satisfies RedirectIntent;\n\n return JSON.stringify(obj);\n}\n",
11
+ "import type { AuthClient } from \"../clients/authClient\";\n\nexport type SessionData = ReturnType<AuthClient[\"useSession\"]>[\"data\"];\n\nexport function hasUserPurchased(\n sessionData: SessionData,\n productId: string,\n): boolean {\n if (!sessionData) return false;\n return sessionData.products.transactions.some((transaction) => {\n transaction.productId === productId && transaction.status === \"completed\";\n });\n}\n\nexport function hasUserSubscribed(\n sessionData: SessionData,\n productId: string,\n): boolean {\n if (!sessionData) return false;\n return sessionData.products.subscriptions.some((subscription) => {\n subscription.productId === productId && subscription.status === \"active\";\n });\n}\n",
12
+ "export * from \"./intent\";\nexport * from \"./purchase\";\nexport { formatPrice } from \"@us-accounts/utils\";\n"
11
13
  ],
12
- "mappings": "AACA,aAAS,oBAIF,IAAM,EAAmB,CAC9B,EACA,IACiB,CACjB,OAAO,EAAiB,EAAS,CAAO,GCR1C,aAAS,oBAIF,IAAM,EAAgB,CAC3B,EACA,IACc,CACd,OAAO,EAAc,EAAS,IACzB,EACH,MAAO,CAAC,EAAU,KACf,GAAS,OAAS,OAAO,EAAK,IAC1B,EACH,YAAa,UACb,QAAS,IACJ,EAAK,QACR,eAAgB,kBAClB,CACF,CAAC,CACL,CAAC,GCpBH,8BACE,qBACA,oBACA,mBACA,mCAEF,2BAAS,0BAGF,IAAM,EAAyB,CAAC,IAAoB,CACzD,OAAO,EAAiB,CACtB,UACA,QAAS,CACP,EAA0B,EAC1B,EAAgB,EAChB,EAAe,EACf,EAAc,CAChB,CACF,CAAC,GCjBH,aAAS,oBAIF,IAAM,EAAqB,CAChC,EACA,IACmB,CACnB,OAAO,EAAmB,EAAS,IAC9B,EACH,MAAO,CAAC,EAAU,KACf,GAAS,OAAS,OAAO,EAAK,IAC1B,EACH,YAAa,UACb,QAAS,IACJ,EAAK,QACR,eAAgB,kBAClB,CACF,CAAC,CACL,CAAC,GCnBH,aAAS,oBAIF,IAAM,EAAwB,CACnC,EACA,EACA,IACsB,CACtB,OAAO,EAAsB,EAAS,IACjC,EACH,QAAS,IACJ,GAAS,QACZ,eAAgB,CAClB,CACF,CAAC,GCdI,SAAS,CAAY,CAC1B,EACA,EACA,EACA,CACA,IAAM,EAAM,IAAI,IAAI,SAAU,CAAM,EACpC,GAAI,EACF,EAAI,aAAa,IAAI,SAAU,EAAmB,EAAa,CAAO,CAAC,EAEzE,OAAO,EAAI,SAAS,EAGtB,SAAS,CAAI,IAAI,EAAa,EAIvB,SAAS,CAAe,CAC7B,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CASA,EARY,CACV,UACA,YACA,eACA,WACA,aACA,YACF,CACQ,EAER,IAAM,EAAM,IAAI,IAAI,iBAAkB,CAAM,EAG5C,GAFA,EAAI,aAAa,IAAI,UAAW,CAAO,EACvC,EAAI,aAAa,IAAI,YAAa,CAAS,EACvC,EACF,EAAI,aAAa,IAAI,eAAgB,CAAY,EAEnD,GAAI,EACF,EAAI,aAAa,IAAI,WAAY,CAAQ,EAE3C,GAAI,EACF,EAAI,aAAa,IAAI,aAAc,CAAU,EAE/C,GAAI,EACF,EAAI,aAAa,IAAI,aAAc,CAAU,EAE/C,OAAO,EAAI,SAAS,EAGf,SAAS,CAAkB,CAChC,EACA,EACQ,CAOR,OAAO,KAAK,UANA,CACV,KAAM,WACN,cACA,SACF,CAEyB",
13
- "debugId": "007B2F935D38AB1064756E2164756E21",
14
+ "mappings": "AACA,aAAS,oBAIF,IAAM,EAAmB,CAC9B,EACA,IACiB,CACjB,OAAO,EAAiB,EAAS,CAAO,GCR1C,aAAS,oBAIF,IAAM,EAAgB,CAC3B,EACA,IACc,CACd,OAAO,EAAc,EAAS,IACzB,EACH,MAAO,CAAC,EAAU,KACf,GAAS,OAAS,OAAO,EAAK,IAC1B,EACH,YAAa,UACb,QAAS,IACJ,EAAK,QACR,eAAgB,kBAClB,CACF,CAAC,CACL,CAAC,GCpBH,8BACE,qBACA,oBACA,mBACA,mCAEF,2BAAS,0BAGF,IAAM,EAAyB,CAAC,IAAoB,CACzD,OAAO,EAAiB,CACtB,UACA,QAAS,CACP,EAA0B,EAC1B,EAAgB,EAChB,EAAe,EACf,EAAc,CAChB,CACF,CAAC,GCjBH,aAAS,oBAIF,IAAM,EAAqB,CAChC,EACA,IACmB,CACnB,OAAO,EAAmB,EAAS,IAC9B,EACH,MAAO,CAAC,EAAU,KACf,GAAS,OAAS,OAAO,EAAK,IAC1B,EACH,YAAa,UACb,QAAS,IACJ,EAAK,QACR,eAAgB,kBAClB,CACF,CAAC,CACL,CAAC,GCnBH,aAAS,oBAIF,IAAM,EAAwB,CACnC,EACA,EACA,IACsB,CACtB,OAAO,EAAsB,EAAS,IACjC,EACH,QAAS,IACJ,GAAS,QACZ,eAAgB,CAClB,CACF,CAAC,GCdI,SAAS,CAAY,CAC1B,EACA,EACA,EACA,CACA,IAAM,EAAM,IAAI,IAAI,SAAU,CAAM,EACpC,GAAI,EACF,EAAI,aAAa,IAAI,SAAU,EAAmB,EAAa,CAAO,CAAC,EAEzE,OAAO,EAAI,SAAS,EAGtB,SAAS,CAAI,IAAI,EAAa,EAIvB,SAAS,CAAe,CAC7B,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CASA,EARY,CACV,UACA,YACA,eACA,WACA,aACA,YACF,CACQ,EAER,IAAM,EAAM,IAAI,IAAI,iBAAkB,CAAM,EAG5C,GAFA,EAAI,aAAa,IAAI,UAAW,CAAO,EACvC,EAAI,aAAa,IAAI,YAAa,CAAS,EACvC,EACF,EAAI,aAAa,IAAI,eAAgB,CAAY,EAEnD,GAAI,EACF,EAAI,aAAa,IAAI,WAAY,CAAQ,EAE3C,GAAI,EACF,EAAI,aAAa,IAAI,aAAc,CAAU,EAE/C,GAAI,EACF,EAAI,aAAa,IAAI,aAAc,CAAU,EAE/C,OAAO,EAAI,SAAS,EAGf,SAAS,CAAkB,CAChC,EACA,EACQ,CAOR,OAAO,KAAK,UANA,CACV,KAAM,WACN,cACA,SACF,CAEyB,EC7DpB,SAAS,CAAgB,CAC9B,EACA,EACS,CACT,GAAI,CAAC,EAAa,MAAO,GACzB,OAAO,EAAY,SAAS,aAAa,KAAK,CAAC,IAAgB,CAC7D,EAAY,YAAc,GAAa,EAAY,OACpD,EAGI,SAAS,CAAiB,CAC/B,EACA,EACS,CACT,GAAI,CAAC,EAAa,MAAO,GACzB,OAAO,EAAY,SAAS,cAAc,KAAK,CAAC,IAAiB,CAC/D,EAAa,YAAc,GAAa,EAAa,OACtD,ECnBH,sBAAS",
15
+ "debugId": "10219B7A43FFF4DC64756E2164756E21",
14
16
  "names": []
15
17
  }
@@ -94,7 +94,7 @@ declare const appRouter: hono_hono_base.HonoBase<{
94
94
  input: {
95
95
  param: {
96
96
  subscriptionId: string;
97
- action: "cancel" | "update";
97
+ action: "update" | "cancel";
98
98
  };
99
99
  };
100
100
  output: undefined;
@@ -3537,6 +3537,7 @@ declare const makeUsBetterAuthClient: (baseURL: string) => {
3537
3537
  USER_ALREADY_HAS_PASSWORD: string;
3538
3538
  };
3539
3539
  };
3540
+ type AuthClient = ReturnType<typeof makeUsBetterAuthClient>;
3540
3541
 
3541
3542
  type CheckoutClient = ReturnType<typeof hc<CheckoutRouter>>;
3542
3543
  declare const makeCheckoutClient: (baseURL: string, options?: ClientRequestOptions) => CheckoutClient;
@@ -3548,5 +3549,11 @@ declare function makeLoginUrl(apiUrl: string, redirectUrl?: string, appName?: st
3548
3549
  declare function makeCheckoutUrl(apiUrl: string, priceId: string, productId: string, discountCode?: string, loginUrl?: string, pricingUrl?: string, successUrl?: string): string;
3549
3550
  declare function makeRedirectIntent(redirectUrl: string, appName?: string): string;
3550
3551
 
3551
- export { makeAppClient, makeCheckoutClient, makeCheckoutUrl, makeLoginUrl, makeMailingListClient, makePublicClient, makeRedirectIntent, makeUsBetterAuthClient };
3552
- export type { AppClient, CheckoutClient, MailingListClient, PublicClient };
3552
+ type SessionData = ReturnType<AuthClient["useSession"]>["data"];
3553
+ declare function hasUserPurchased(sessionData: SessionData, productId: string): boolean;
3554
+ declare function hasUserSubscribed(sessionData: SessionData, productId: string): boolean;
3555
+
3556
+ declare function formatPrice(amountStr: string, currencyCode: string): string | null;
3557
+
3558
+ export { formatPrice, hasUserPurchased, hasUserSubscribed, makeAppClient, makeCheckoutClient, makeCheckoutUrl, makeLoginUrl, makeMailingListClient, makePublicClient, makeRedirectIntent, makeUsBetterAuthClient };
3559
+ export type { AppClient, AuthClient, CheckoutClient, MailingListClient, PublicClient, SessionData };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uninspired/auth-client",
3
- "version": "0.0.13",
3
+ "version": "0.0.14",
4
4
  "description": "Auth client for Uninspired Studio Products",
5
5
  "author": "Chris Kolb <chris@uninspired.studio>",
6
6
  "license": "MIT",