@crossmint/common-sdk-auth 0.2.0 → 0.2.2

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/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var c=Object.defineProperty;var w=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var S=Object.prototype.hasOwnProperty;var A=(t,e)=>{for(var r in e)c(t,r,{get:e[r],enumerable:!0})},k=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of E(e))!S.call(t,o)&&o!==r&&c(t,o,{get:()=>e[o],enumerable:!(s=w(e,o))||s.enumerable});return t};var T=t=>k(c({},"__esModule",{value:!0}),t);var i=(t,e,r)=>new Promise((s,o)=>{var l=n=>{try{h(r.next(n))}catch(m){o(m)}},d=n=>{try{h(r.throw(n))}catch(m){o(m)}},h=n=>n.done?s(n.value):Promise.resolve(n.value).then(l,d);h((r=r.apply(t,e)).next())});var x={};A(x,{AUTH_SERVICE:()=>u,CrossmintAuthService:()=>g,authLogger:()=>f});module.exports=T(x);var a=require("@crossmint/client-sdk-base");var p=require("@crossmint/client-sdk-base");var u="AUTH_SDK";var f=new p.SDKLogger(u);var g=class extends a.BaseCrossmintService{constructor(){super(...arguments);this.apiErrorService=new a.APIErrorService({});this.logger=f}getJWKSUri(){return`${this.crossmintBaseUrl}/.well-known/jwks.json`}refreshAuthMaterial(r){return i(this,null,function*(){let s=yield this.fetchCrossmintAPI("2024-09-26/session/sdk/auth/refresh",{method:"POST",body:JSON.stringify({refresh:r})},"Error fetching new refresh and access tokans.");return{jwtToken:s.jwt,refreshToken:s.refresh,user:s.user}})}getUserFromServer(r){return i(this,null,function*(){return(yield this.fetchCrossmintAPI(`sdk/auth/user/${r}`,{method:"GET"},"Error fetching user.")).user})}getUserFromClient(r){return i(this,null,function*(){return yield this.fetchCrossmintAPI("sdk/auth/user",{method:"GET"},"Error fetching user.",r)})}};0&&(module.exports={AUTH_SERVICE,CrossmintAuthService,authLogger});
1
+ "use strict";var m=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var w=Object.prototype.hasOwnProperty;var I=(e,t)=>{for(var r in t)m(e,r,{get:t[r],enumerable:!0})},U=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of d(t))!w.call(e,o)&&o!==r&&m(e,o,{get:()=>t[o],enumerable:!(s=S(t,o))||s.enumerable});return e};var k=e=>U(m({},"__esModule",{value:!0}),e);var i=(e,t,r)=>new Promise((s,o)=>{var E=n=>{try{c(r.next(n))}catch(h){o(h)}},x=n=>{try{c(r.throw(n))}catch(h){o(h)}},c=n=>n.done?s(n.value):Promise.resolve(n.value).then(E,x);c((r=r.apply(e,t)).next())});var T={};I(T,{AUTH_SERVICE:()=>f,CrossmintAuthService:()=>g,CrossmintAuthenticationError:()=>p,REFRESH_TOKEN_PREFIX:()=>P,SESSION_PREFIX:()=>A,authLogger:()=>u,isEmailValid:()=>R});module.exports=k(T);var a=require("@crossmint/client-sdk-base");var l=require("@crossmint/client-sdk-base");var f="AUTH_SDK",A="crossmint-jwt",P="crossmint-refresh-token";var u=new l.SDKLogger(f);var g=class extends a.BaseCrossmintService{constructor(){super(...arguments);this.apiErrorService=new a.APIErrorService({});this.logger=u}getJWKSUri(){return`${this.crossmintBaseUrl}/.well-known/jwks.json`}refreshAuthMaterial(r){return i(this,null,function*(){let s=yield this.fetchCrossmintAPI("2024-09-26/session/sdk/auth/refresh",{method:"POST",body:JSON.stringify({refresh:r})},"Error fetching new refresh and access tokans.");return{jwt:s.jwt,refreshToken:s.refresh,user:s.user}})}getUserFromServer(r){return i(this,null,function*(){return(yield this.fetchCrossmintAPI(`sdk/auth/user/${r}`,{method:"GET"},"Error fetching user.")).user})}getUserFromClient(r){return i(this,null,function*(){return yield this.fetchCrossmintAPI("sdk/auth/user",{method:"GET"},"Error fetching user.",r)})}};function R(e){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}var p=class extends Error{};0&&(module.exports={AUTH_SERVICE,CrossmintAuthService,CrossmintAuthenticationError,REFRESH_TOKEN_PREFIX,SESSION_PREFIX,authLogger,isEmailValid});
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/services/CrossmintAuthService.ts","../src/services/logger.ts","../src/utils/constants.ts"],"sourcesContent":["export * from \"./services\";\nexport * from \"./utils\";\nexport * from \"./types\";\n","import { APIErrorService, BaseCrossmintService } from \"@crossmint/client-sdk-base\";\n\nimport { authLogger } from \"./logger\";\nimport type { AuthMaterial } from \"@/types\";\n\nexport class CrossmintAuthService extends BaseCrossmintService {\n protected apiErrorService = new APIErrorService<never>({});\n protected logger = authLogger;\n\n public getJWKSUri() {\n return `${this.crossmintBaseUrl}/.well-known/jwks.json`;\n }\n\n async refreshAuthMaterial(refreshToken: string): Promise<AuthMaterial> {\n const result = await this.fetchCrossmintAPI(\n \"2024-09-26/session/sdk/auth/refresh\",\n { method: \"POST\", body: JSON.stringify({ refresh: refreshToken }) },\n \"Error fetching new refresh and access tokans.\"\n );\n\n return {\n jwtToken: result.jwt,\n refreshToken: result.refresh,\n user: result.user,\n };\n }\n\n async getUserFromServer(externalUserId: string) {\n const result = await this.fetchCrossmintAPI(\n `sdk/auth/user/${externalUserId}`,\n { method: \"GET\" },\n \"Error fetching user.\"\n );\n\n return result.user;\n }\n async getUserFromClient(jwt: string) {\n return await this.fetchCrossmintAPI(\"sdk/auth/user\", { method: \"GET\" }, \"Error fetching user.\", jwt);\n }\n}\n","import { SDKLogger } from \"@crossmint/client-sdk-base\";\n\nimport { AUTH_SERVICE } from \"../utils/constants\";\n\nexport const authLogger = new SDKLogger(AUTH_SERVICE);\n","export const AUTH_SERVICE = \"AUTH_SDK\";\n"],"mappings":"snBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,EAAA,yBAAAC,EAAA,eAAAC,IAAA,eAAAC,EAAAL,GCAA,IAAAM,EAAsD,sCCAtD,IAAAC,EAA0B,sCCAnB,IAAMC,EAAe,WDIrB,IAAMC,EAAa,IAAI,YAAUC,CAAY,EDC7C,IAAMC,EAAN,cAAmC,sBAAqB,CAAxD,kCACH,KAAU,gBAAkB,IAAI,kBAAuB,CAAC,CAAC,EACzD,KAAU,OAASC,EAEZ,YAAa,CAChB,MAAO,GAAG,KAAK,gBAAgB,wBACnC,CAEM,oBAAoBC,EAA6C,QAAAC,EAAA,sBACnE,IAAMC,EAAS,MAAM,KAAK,kBACtB,sCACA,CAAE,OAAQ,OAAQ,KAAM,KAAK,UAAU,CAAE,QAASF,CAAa,CAAC,CAAE,EAClE,+CACJ,EAEA,MAAO,CACH,SAAUE,EAAO,IACjB,aAAcA,EAAO,QACrB,KAAMA,EAAO,IACjB,CACJ,GAEM,kBAAkBC,EAAwB,QAAAF,EAAA,sBAO5C,OANe,MAAM,KAAK,kBACtB,iBAAiBE,CAAc,GAC/B,CAAE,OAAQ,KAAM,EAChB,sBACJ,GAEc,IAClB,GACM,kBAAkBC,EAAa,QAAAH,EAAA,sBACjC,OAAO,MAAM,KAAK,kBAAkB,gBAAiB,CAAE,OAAQ,KAAM,EAAG,uBAAwBG,CAAG,CACvG,GACJ","names":["src_exports","__export","AUTH_SERVICE","CrossmintAuthService","authLogger","__toCommonJS","import_client_sdk_base","import_client_sdk_base","AUTH_SERVICE","authLogger","AUTH_SERVICE","CrossmintAuthService","authLogger","refreshToken","__async","result","externalUserId","jwt"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/services/CrossmintAuthService.ts","../src/services/logger.ts","../src/utils/constants.ts","../src/utils/isEmailValid.ts","../src/types/errors.ts"],"sourcesContent":["export * from \"./services\";\nexport * from \"./utils\";\nexport * from \"./types\";\n","import { APIErrorService, BaseCrossmintService } from \"@crossmint/client-sdk-base\";\n\nimport { authLogger } from \"./logger\";\nimport type { AuthMaterialWithUser } from \"@/types\";\n\nexport class CrossmintAuthService extends BaseCrossmintService {\n protected apiErrorService = new APIErrorService<never>({});\n protected logger = authLogger;\n\n public getJWKSUri() {\n return `${this.crossmintBaseUrl}/.well-known/jwks.json`;\n }\n\n async refreshAuthMaterial(refreshToken: string): Promise<AuthMaterialWithUser> {\n const result = await this.fetchCrossmintAPI(\n \"2024-09-26/session/sdk/auth/refresh\",\n { method: \"POST\", body: JSON.stringify({ refresh: refreshToken }) },\n \"Error fetching new refresh and access tokans.\"\n );\n\n return {\n jwt: result.jwt,\n refreshToken: result.refresh,\n user: result.user,\n };\n }\n\n async getUserFromServer(externalUserId: string) {\n const result = await this.fetchCrossmintAPI(\n `sdk/auth/user/${externalUserId}`,\n { method: \"GET\" },\n \"Error fetching user.\"\n );\n\n return result.user;\n }\n async getUserFromClient(jwt: string) {\n return await this.fetchCrossmintAPI(\"sdk/auth/user\", { method: \"GET\" }, \"Error fetching user.\", jwt);\n }\n}\n","import { SDKLogger } from \"@crossmint/client-sdk-base\";\n\nimport { AUTH_SERVICE } from \"../utils/constants\";\n\nexport const authLogger = new SDKLogger(AUTH_SERVICE);\n","export const AUTH_SERVICE = \"AUTH_SDK\";\nexport const SESSION_PREFIX = \"crossmint-jwt\";\nexport const REFRESH_TOKEN_PREFIX = \"crossmint-refresh-token\";\n","export function isEmailValid(email: string): boolean {\n // Regular expression for basic email validation\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return emailRegex.test(email);\n}\n","export class CrossmintAuthenticationError extends Error {}\n"],"mappings":"snBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,EAAA,yBAAAC,EAAA,iCAAAC,EAAA,yBAAAC,EAAA,mBAAAC,EAAA,eAAAC,EAAA,iBAAAC,IAAA,eAAAC,EAAAT,GCAA,IAAAU,EAAsD,sCCAtD,IAAAC,EAA0B,sCCAnB,IAAMC,EAAe,WACfC,EAAiB,gBACjBC,EAAuB,0BDE7B,IAAMC,EAAa,IAAI,YAAUC,CAAY,EDC7C,IAAMC,EAAN,cAAmC,sBAAqB,CAAxD,kCACH,KAAU,gBAAkB,IAAI,kBAAuB,CAAC,CAAC,EACzD,KAAU,OAASC,EAEZ,YAAa,CAChB,MAAO,GAAG,KAAK,gBAAgB,wBACnC,CAEM,oBAAoBC,EAAqD,QAAAC,EAAA,sBAC3E,IAAMC,EAAS,MAAM,KAAK,kBACtB,sCACA,CAAE,OAAQ,OAAQ,KAAM,KAAK,UAAU,CAAE,QAASF,CAAa,CAAC,CAAE,EAClE,+CACJ,EAEA,MAAO,CACH,IAAKE,EAAO,IACZ,aAAcA,EAAO,QACrB,KAAMA,EAAO,IACjB,CACJ,GAEM,kBAAkBC,EAAwB,QAAAF,EAAA,sBAO5C,OANe,MAAM,KAAK,kBACtB,iBAAiBE,CAAc,GAC/B,CAAE,OAAQ,KAAM,EAChB,sBACJ,GAEc,IAClB,GACM,kBAAkBC,EAAa,QAAAH,EAAA,sBACjC,OAAO,MAAM,KAAK,kBAAkB,gBAAiB,CAAE,OAAQ,KAAM,EAAG,uBAAwBG,CAAG,CACvG,GACJ,EGvCO,SAASC,EAAaC,EAAwB,CAGjD,MADmB,6BACD,KAAKA,CAAK,CAChC,CCJO,IAAMC,EAAN,cAA2C,KAAM,CAAC","names":["src_exports","__export","AUTH_SERVICE","CrossmintAuthService","CrossmintAuthenticationError","REFRESH_TOKEN_PREFIX","SESSION_PREFIX","authLogger","isEmailValid","__toCommonJS","import_client_sdk_base","import_client_sdk_base","AUTH_SERVICE","SESSION_PREFIX","REFRESH_TOKEN_PREFIX","authLogger","AUTH_SERVICE","CrossmintAuthService","authLogger","refreshToken","__async","result","externalUserId","jwt","isEmailValid","email","CrossmintAuthenticationError"]}
package/dist/index.d.cts CHANGED
@@ -17,20 +17,47 @@ type SDKExternalUser = {
17
17
  farcaster?: FarcasterMetadata;
18
18
  };
19
19
 
20
+ type AuthMaterialBasic = {
21
+ jwt?: string;
22
+ refreshToken: string;
23
+ };
20
24
  type AuthMaterial = {
21
- jwtToken: string;
22
- refreshToken: {
23
- secret: string;
24
- expiresAt: string;
25
- };
25
+ jwt: string;
26
+ refreshToken: RefreshToken;
27
+ };
28
+ type AuthMaterialWithUser = AuthMaterial & {
29
+ user: SDKExternalUser;
30
+ };
31
+ type AuthMaterialResponse = {
32
+ jwt: string;
33
+ refresh: RefreshToken;
26
34
  user: SDKExternalUser;
27
35
  };
36
+ type AuthSession = {
37
+ jwt: string;
38
+ refreshToken: RefreshToken;
39
+ userId: string;
40
+ };
41
+ interface RefreshToken {
42
+ secret: string;
43
+ expiresAt: string;
44
+ }
45
+ type OAuthProvider = "google";
46
+
47
+ declare class CrossmintAuthenticationError extends Error {
48
+ }
49
+
50
+ type CookieOptions = {
51
+ name: string;
52
+ value: string;
53
+ expiresAt?: string;
54
+ };
28
55
 
29
56
  declare class CrossmintAuthService extends BaseCrossmintService {
30
57
  protected apiErrorService: APIErrorService<never>;
31
58
  protected logger: _crossmint_client_sdk_base.SDKLogger;
32
59
  getJWKSUri(): string;
33
- refreshAuthMaterial(refreshToken: string): Promise<AuthMaterial>;
60
+ refreshAuthMaterial(refreshToken: string): Promise<AuthMaterialWithUser>;
34
61
  getUserFromServer(externalUserId: string): Promise<any>;
35
62
  getUserFromClient(jwt: string): Promise<any>;
36
63
  }
@@ -38,5 +65,9 @@ declare class CrossmintAuthService extends BaseCrossmintService {
38
65
  declare const authLogger: SDKLogger;
39
66
 
40
67
  declare const AUTH_SERVICE = "AUTH_SDK";
68
+ declare const SESSION_PREFIX = "crossmint-jwt";
69
+ declare const REFRESH_TOKEN_PREFIX = "crossmint-refresh-token";
70
+
71
+ declare function isEmailValid(email: string): boolean;
41
72
 
42
- export { AUTH_SERVICE, type AuthMaterial, CrossmintAuthService, type FarcasterMetadata, type SDKExternalUser, authLogger };
73
+ export { AUTH_SERVICE, type AuthMaterial, type AuthMaterialBasic, type AuthMaterialResponse, type AuthMaterialWithUser, type AuthSession, type CookieOptions, CrossmintAuthService, CrossmintAuthenticationError, type FarcasterMetadata, type OAuthProvider, REFRESH_TOKEN_PREFIX, type SDKExternalUser, SESSION_PREFIX, authLogger, isEmailValid };
package/dist/index.d.ts CHANGED
@@ -17,20 +17,47 @@ type SDKExternalUser = {
17
17
  farcaster?: FarcasterMetadata;
18
18
  };
19
19
 
20
+ type AuthMaterialBasic = {
21
+ jwt?: string;
22
+ refreshToken: string;
23
+ };
20
24
  type AuthMaterial = {
21
- jwtToken: string;
22
- refreshToken: {
23
- secret: string;
24
- expiresAt: string;
25
- };
25
+ jwt: string;
26
+ refreshToken: RefreshToken;
27
+ };
28
+ type AuthMaterialWithUser = AuthMaterial & {
29
+ user: SDKExternalUser;
30
+ };
31
+ type AuthMaterialResponse = {
32
+ jwt: string;
33
+ refresh: RefreshToken;
26
34
  user: SDKExternalUser;
27
35
  };
36
+ type AuthSession = {
37
+ jwt: string;
38
+ refreshToken: RefreshToken;
39
+ userId: string;
40
+ };
41
+ interface RefreshToken {
42
+ secret: string;
43
+ expiresAt: string;
44
+ }
45
+ type OAuthProvider = "google";
46
+
47
+ declare class CrossmintAuthenticationError extends Error {
48
+ }
49
+
50
+ type CookieOptions = {
51
+ name: string;
52
+ value: string;
53
+ expiresAt?: string;
54
+ };
28
55
 
29
56
  declare class CrossmintAuthService extends BaseCrossmintService {
30
57
  protected apiErrorService: APIErrorService<never>;
31
58
  protected logger: _crossmint_client_sdk_base.SDKLogger;
32
59
  getJWKSUri(): string;
33
- refreshAuthMaterial(refreshToken: string): Promise<AuthMaterial>;
60
+ refreshAuthMaterial(refreshToken: string): Promise<AuthMaterialWithUser>;
34
61
  getUserFromServer(externalUserId: string): Promise<any>;
35
62
  getUserFromClient(jwt: string): Promise<any>;
36
63
  }
@@ -38,5 +65,9 @@ declare class CrossmintAuthService extends BaseCrossmintService {
38
65
  declare const authLogger: SDKLogger;
39
66
 
40
67
  declare const AUTH_SERVICE = "AUTH_SDK";
68
+ declare const SESSION_PREFIX = "crossmint-jwt";
69
+ declare const REFRESH_TOKEN_PREFIX = "crossmint-refresh-token";
70
+
71
+ declare function isEmailValid(email: string): boolean;
41
72
 
42
- export { AUTH_SERVICE, type AuthMaterial, CrossmintAuthService, type FarcasterMetadata, type SDKExternalUser, authLogger };
73
+ export { AUTH_SERVICE, type AuthMaterial, type AuthMaterialBasic, type AuthMaterialResponse, type AuthMaterialWithUser, type AuthSession, type CookieOptions, CrossmintAuthService, CrossmintAuthenticationError, type FarcasterMetadata, type OAuthProvider, REFRESH_TOKEN_PREFIX, type SDKExternalUser, SESSION_PREFIX, authLogger, isEmailValid };
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- var s=(i,a,r)=>new Promise((t,h)=>{var f=e=>{try{o(r.next(e))}catch(n){h(n)}},g=e=>{try{o(r.throw(e))}catch(n){h(n)}},o=e=>e.done?t(e.value):Promise.resolve(e.value).then(f,g);o((r=r.apply(i,a)).next())});import{APIErrorService as l,BaseCrossmintService as d}from"@crossmint/client-sdk-base";import{SDKLogger as p}from"@crossmint/client-sdk-base";var m="AUTH_SDK";var c=new p(m);var u=class extends d{constructor(){super(...arguments);this.apiErrorService=new l({});this.logger=c}getJWKSUri(){return`${this.crossmintBaseUrl}/.well-known/jwks.json`}refreshAuthMaterial(r){return s(this,null,function*(){let t=yield this.fetchCrossmintAPI("2024-09-26/session/sdk/auth/refresh",{method:"POST",body:JSON.stringify({refresh:r})},"Error fetching new refresh and access tokans.");return{jwtToken:t.jwt,refreshToken:t.refresh,user:t.user}})}getUserFromServer(r){return s(this,null,function*(){return(yield this.fetchCrossmintAPI(`sdk/auth/user/${r}`,{method:"GET"},"Error fetching user.")).user})}getUserFromClient(r){return s(this,null,function*(){return yield this.fetchCrossmintAPI("sdk/auth/user",{method:"GET"},"Error fetching user.",r)})}};export{m as AUTH_SERVICE,u as CrossmintAuthService,c as authLogger};
1
+ var o=(s,n,r)=>new Promise((t,c)=>{var g=e=>{try{i(r.next(e))}catch(a){c(a)}},p=e=>{try{i(r.throw(e))}catch(a){c(a)}},i=e=>e.done?t(e.value):Promise.resolve(e.value).then(g,p);i((r=r.apply(s,n)).next())});import{APIErrorService as E,BaseCrossmintService as x}from"@crossmint/client-sdk-base";import{SDKLogger as l}from"@crossmint/client-sdk-base";var h="AUTH_SDK",d="crossmint-jwt",w="crossmint-refresh-token";var m=new l(h);var f=class extends x{constructor(){super(...arguments);this.apiErrorService=new E({});this.logger=m}getJWKSUri(){return`${this.crossmintBaseUrl}/.well-known/jwks.json`}refreshAuthMaterial(r){return o(this,null,function*(){let t=yield this.fetchCrossmintAPI("2024-09-26/session/sdk/auth/refresh",{method:"POST",body:JSON.stringify({refresh:r})},"Error fetching new refresh and access tokans.");return{jwt:t.jwt,refreshToken:t.refresh,user:t.user}})}getUserFromServer(r){return o(this,null,function*(){return(yield this.fetchCrossmintAPI(`sdk/auth/user/${r}`,{method:"GET"},"Error fetching user.")).user})}getUserFromClient(r){return o(this,null,function*(){return yield this.fetchCrossmintAPI("sdk/auth/user",{method:"GET"},"Error fetching user.",r)})}};function _(s){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(s)}var u=class extends Error{};export{h as AUTH_SERVICE,f as CrossmintAuthService,u as CrossmintAuthenticationError,w as REFRESH_TOKEN_PREFIX,d as SESSION_PREFIX,m as authLogger,_ as isEmailValid};
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/services/CrossmintAuthService.ts","../src/services/logger.ts","../src/utils/constants.ts"],"sourcesContent":["import { APIErrorService, BaseCrossmintService } from \"@crossmint/client-sdk-base\";\n\nimport { authLogger } from \"./logger\";\nimport type { AuthMaterial } from \"@/types\";\n\nexport class CrossmintAuthService extends BaseCrossmintService {\n protected apiErrorService = new APIErrorService<never>({});\n protected logger = authLogger;\n\n public getJWKSUri() {\n return `${this.crossmintBaseUrl}/.well-known/jwks.json`;\n }\n\n async refreshAuthMaterial(refreshToken: string): Promise<AuthMaterial> {\n const result = await this.fetchCrossmintAPI(\n \"2024-09-26/session/sdk/auth/refresh\",\n { method: \"POST\", body: JSON.stringify({ refresh: refreshToken }) },\n \"Error fetching new refresh and access tokans.\"\n );\n\n return {\n jwtToken: result.jwt,\n refreshToken: result.refresh,\n user: result.user,\n };\n }\n\n async getUserFromServer(externalUserId: string) {\n const result = await this.fetchCrossmintAPI(\n `sdk/auth/user/${externalUserId}`,\n { method: \"GET\" },\n \"Error fetching user.\"\n );\n\n return result.user;\n }\n async getUserFromClient(jwt: string) {\n return await this.fetchCrossmintAPI(\"sdk/auth/user\", { method: \"GET\" }, \"Error fetching user.\", jwt);\n }\n}\n","import { SDKLogger } from \"@crossmint/client-sdk-base\";\n\nimport { AUTH_SERVICE } from \"../utils/constants\";\n\nexport const authLogger = new SDKLogger(AUTH_SERVICE);\n","export const AUTH_SERVICE = \"AUTH_SDK\";\n"],"mappings":"6MAAA,OAAS,mBAAAA,EAAiB,wBAAAC,MAA4B,6BCAtD,OAAS,aAAAC,MAAiB,6BCAnB,IAAMC,EAAe,WDIrB,IAAMC,EAAa,IAAIC,EAAUC,CAAY,EDC7C,IAAMC,EAAN,cAAmCC,CAAqB,CAAxD,kCACH,KAAU,gBAAkB,IAAIC,EAAuB,CAAC,CAAC,EACzD,KAAU,OAASC,EAEZ,YAAa,CAChB,MAAO,GAAG,KAAK,gBAAgB,wBACnC,CAEM,oBAAoBC,EAA6C,QAAAC,EAAA,sBACnE,IAAMC,EAAS,MAAM,KAAK,kBACtB,sCACA,CAAE,OAAQ,OAAQ,KAAM,KAAK,UAAU,CAAE,QAASF,CAAa,CAAC,CAAE,EAClE,+CACJ,EAEA,MAAO,CACH,SAAUE,EAAO,IACjB,aAAcA,EAAO,QACrB,KAAMA,EAAO,IACjB,CACJ,GAEM,kBAAkBC,EAAwB,QAAAF,EAAA,sBAO5C,OANe,MAAM,KAAK,kBACtB,iBAAiBE,CAAc,GAC/B,CAAE,OAAQ,KAAM,EAChB,sBACJ,GAEc,IAClB,GACM,kBAAkBC,EAAa,QAAAH,EAAA,sBACjC,OAAO,MAAM,KAAK,kBAAkB,gBAAiB,CAAE,OAAQ,KAAM,EAAG,uBAAwBG,CAAG,CACvG,GACJ","names":["APIErrorService","BaseCrossmintService","SDKLogger","AUTH_SERVICE","authLogger","SDKLogger","AUTH_SERVICE","CrossmintAuthService","BaseCrossmintService","APIErrorService","authLogger","refreshToken","__async","result","externalUserId","jwt"]}
1
+ {"version":3,"sources":["../src/services/CrossmintAuthService.ts","../src/services/logger.ts","../src/utils/constants.ts","../src/utils/isEmailValid.ts","../src/types/errors.ts"],"sourcesContent":["import { APIErrorService, BaseCrossmintService } from \"@crossmint/client-sdk-base\";\n\nimport { authLogger } from \"./logger\";\nimport type { AuthMaterialWithUser } from \"@/types\";\n\nexport class CrossmintAuthService extends BaseCrossmintService {\n protected apiErrorService = new APIErrorService<never>({});\n protected logger = authLogger;\n\n public getJWKSUri() {\n return `${this.crossmintBaseUrl}/.well-known/jwks.json`;\n }\n\n async refreshAuthMaterial(refreshToken: string): Promise<AuthMaterialWithUser> {\n const result = await this.fetchCrossmintAPI(\n \"2024-09-26/session/sdk/auth/refresh\",\n { method: \"POST\", body: JSON.stringify({ refresh: refreshToken }) },\n \"Error fetching new refresh and access tokans.\"\n );\n\n return {\n jwt: result.jwt,\n refreshToken: result.refresh,\n user: result.user,\n };\n }\n\n async getUserFromServer(externalUserId: string) {\n const result = await this.fetchCrossmintAPI(\n `sdk/auth/user/${externalUserId}`,\n { method: \"GET\" },\n \"Error fetching user.\"\n );\n\n return result.user;\n }\n async getUserFromClient(jwt: string) {\n return await this.fetchCrossmintAPI(\"sdk/auth/user\", { method: \"GET\" }, \"Error fetching user.\", jwt);\n }\n}\n","import { SDKLogger } from \"@crossmint/client-sdk-base\";\n\nimport { AUTH_SERVICE } from \"../utils/constants\";\n\nexport const authLogger = new SDKLogger(AUTH_SERVICE);\n","export const AUTH_SERVICE = \"AUTH_SDK\";\nexport const SESSION_PREFIX = \"crossmint-jwt\";\nexport const REFRESH_TOKEN_PREFIX = \"crossmint-refresh-token\";\n","export function isEmailValid(email: string): boolean {\n // Regular expression for basic email validation\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return emailRegex.test(email);\n}\n","export class CrossmintAuthenticationError extends Error {}\n"],"mappings":"6MAAA,OAAS,mBAAAA,EAAiB,wBAAAC,MAA4B,6BCAtD,OAAS,aAAAC,MAAiB,6BCAnB,IAAMC,EAAe,WACfC,EAAiB,gBACjBC,EAAuB,0BDE7B,IAAMC,EAAa,IAAIC,EAAUC,CAAY,EDC7C,IAAMC,EAAN,cAAmCC,CAAqB,CAAxD,kCACH,KAAU,gBAAkB,IAAIC,EAAuB,CAAC,CAAC,EACzD,KAAU,OAASC,EAEZ,YAAa,CAChB,MAAO,GAAG,KAAK,gBAAgB,wBACnC,CAEM,oBAAoBC,EAAqD,QAAAC,EAAA,sBAC3E,IAAMC,EAAS,MAAM,KAAK,kBACtB,sCACA,CAAE,OAAQ,OAAQ,KAAM,KAAK,UAAU,CAAE,QAASF,CAAa,CAAC,CAAE,EAClE,+CACJ,EAEA,MAAO,CACH,IAAKE,EAAO,IACZ,aAAcA,EAAO,QACrB,KAAMA,EAAO,IACjB,CACJ,GAEM,kBAAkBC,EAAwB,QAAAF,EAAA,sBAO5C,OANe,MAAM,KAAK,kBACtB,iBAAiBE,CAAc,GAC/B,CAAE,OAAQ,KAAM,EAChB,sBACJ,GAEc,IAClB,GACM,kBAAkBC,EAAa,QAAAH,EAAA,sBACjC,OAAO,MAAM,KAAK,kBAAkB,gBAAiB,CAAE,OAAQ,KAAM,EAAG,uBAAwBG,CAAG,CACvG,GACJ,EGvCO,SAASC,EAAaC,EAAwB,CAGjD,MADmB,6BACD,KAAKA,CAAK,CAChC,CCJO,IAAMC,EAAN,cAA2C,KAAM,CAAC","names":["APIErrorService","BaseCrossmintService","SDKLogger","AUTH_SERVICE","SESSION_PREFIX","REFRESH_TOKEN_PREFIX","authLogger","SDKLogger","AUTH_SERVICE","CrossmintAuthService","BaseCrossmintService","APIErrorService","authLogger","refreshToken","__async","result","externalUserId","jwt","isEmailValid","email","CrossmintAuthenticationError"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crossmint/common-sdk-auth",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "repository": "https://github.com/Crossmint/crossmint-sdk",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Paella Labs Inc",
@@ -19,7 +19,7 @@
19
19
  "LICENSE"
20
20
  ],
21
21
  "dependencies": {
22
- "@crossmint/client-sdk-base": "1.2.8"
22
+ "@crossmint/client-sdk-base": "1.3.0"
23
23
  },
24
24
  "scripts": {
25
25
  "build": "tsup src/index.ts --clean --format esm,cjs --outDir ./dist --minify --dts --sourcemap",
@@ -1,7 +1,7 @@
1
1
  import { APIErrorService, BaseCrossmintService } from "@crossmint/client-sdk-base";
2
2
 
3
3
  import { authLogger } from "./logger";
4
- import type { AuthMaterial } from "@/types";
4
+ import type { AuthMaterialWithUser } from "@/types";
5
5
 
6
6
  export class CrossmintAuthService extends BaseCrossmintService {
7
7
  protected apiErrorService = new APIErrorService<never>({});
@@ -11,7 +11,7 @@ export class CrossmintAuthService extends BaseCrossmintService {
11
11
  return `${this.crossmintBaseUrl}/.well-known/jwks.json`;
12
12
  }
13
13
 
14
- async refreshAuthMaterial(refreshToken: string): Promise<AuthMaterial> {
14
+ async refreshAuthMaterial(refreshToken: string): Promise<AuthMaterialWithUser> {
15
15
  const result = await this.fetchCrossmintAPI(
16
16
  "2024-09-26/session/sdk/auth/refresh",
17
17
  { method: "POST", body: JSON.stringify({ refresh: refreshToken }) },
@@ -19,7 +19,7 @@ export class CrossmintAuthService extends BaseCrossmintService {
19
19
  );
20
20
 
21
21
  return {
22
- jwtToken: result.jwt,
22
+ jwt: result.jwt,
23
23
  refreshToken: result.refresh,
24
24
  user: result.user,
25
25
  };
@@ -1,10 +1,34 @@
1
1
  import type { SDKExternalUser } from "./user";
2
2
 
3
+ export type AuthMaterialBasic = {
4
+ jwt?: string;
5
+ refreshToken: string;
6
+ };
7
+
3
8
  export type AuthMaterial = {
4
- jwtToken: string;
5
- refreshToken: {
6
- secret: string;
7
- expiresAt: string;
8
- };
9
+ jwt: string;
10
+ refreshToken: RefreshToken;
11
+ };
12
+
13
+ export type AuthMaterialWithUser = AuthMaterial & {
9
14
  user: SDKExternalUser;
10
15
  };
16
+
17
+ export type AuthMaterialResponse = {
18
+ jwt: string;
19
+ refresh: RefreshToken;
20
+ user: SDKExternalUser;
21
+ };
22
+
23
+ export type AuthSession = {
24
+ jwt: string;
25
+ refreshToken: RefreshToken;
26
+ userId: string;
27
+ };
28
+
29
+ interface RefreshToken {
30
+ secret: string;
31
+ expiresAt: string;
32
+ }
33
+
34
+ export type OAuthProvider = "google";
@@ -0,0 +1,5 @@
1
+ export type CookieOptions = {
2
+ name: string;
3
+ value: string;
4
+ expiresAt?: string;
5
+ };
@@ -0,0 +1 @@
1
+ export class CrossmintAuthenticationError extends Error {}
@@ -1,2 +1,4 @@
1
1
  export * from "./user";
2
2
  export * from "./authmaterial";
3
+ export * from "./errors";
4
+ export * from "./cookies";
@@ -1 +1,3 @@
1
1
  export const AUTH_SERVICE = "AUTH_SDK";
2
+ export const SESSION_PREFIX = "crossmint-jwt";
3
+ export const REFRESH_TOKEN_PREFIX = "crossmint-refresh-token";
@@ -1 +1,2 @@
1
1
  export * from "./constants";
2
+ export * from "./isEmailValid";
@@ -0,0 +1,5 @@
1
+ export function isEmailValid(email: string): boolean {
2
+ // Regular expression for basic email validation
3
+ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
4
+ return emailRegex.test(email);
5
+ }