tonightpass 0.0.2 → 0.0.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.
@@ -1,5 +1,5 @@
1
1
 
2
- > tonightpass@0.0.2 build /home/runner/work/tonightpass/tonightpass/packages/node
2
+ > tonightpass@0.0.3 build /home/runner/work/tonightpass/tonightpass/packages/node
3
3
  > tsup
4
4
 
5
5
  CLI Building entry: src/index.ts
@@ -9,13 +9,13 @@
9
9
  CLI Target: esnext
10
10
  CJS Build start
11
11
  ESM Build start
12
- CJS dist/index.js 7.27 KB
13
- CJS dist/index.js.map 24.96 KB
14
- CJS ⚡️ Build success in 227ms
15
- ESM dist/index.mjs 6.39 KB
16
- ESM dist/index.mjs.map 24.96 KB
17
- ESM ⚡️ Build success in 228ms
12
+ CJS dist/index.js 7.40 KB
13
+ CJS dist/index.js.map 25.23 KB
14
+ CJS ⚡️ Build success in 173ms
15
+ ESM dist/index.mjs 6.52 KB
16
+ ESM dist/index.mjs.map 25.23 KB
17
+ ESM ⚡️ Build success in 227ms
18
18
  DTS Build start
19
- DTS ⚡️ Build success in 2585ms
20
- DTS dist/index.d.ts 18.43 KB
21
- DTS dist/index.d.mts 18.43 KB
19
+ DTS ⚡️ Build success in 2462ms
20
+ DTS dist/index.d.ts 18.63 KB
21
+ DTS dist/index.d.mts 18.63 KB
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # tonightpass
2
2
 
3
+ ## 0.0.3
4
+
5
+ ### Patch Changes
6
+
7
+ - [`2166d44`](https://github.com/tonightpass/tonightpass/commit/2166d44417e5af6e1da86681330b4aa2892775e5) Thanks [@AntoineKM](https://github.com/AntoineKM)! - Add error handler
8
+
3
9
  ## 0.0.2
4
10
 
5
11
  ### Patch Changes
package/dist/index.d.mts CHANGED
@@ -1,4 +1,3 @@
1
- import * as redaxios from 'redaxios';
2
1
  import { Options, Response } from 'redaxios';
3
2
  import { ParamValue } from 'pathcat';
4
3
 
@@ -444,7 +443,7 @@ declare class UpdateIdentityDto implements Partial<Pick<UserIdentity, "firstName
444
443
 
445
444
  interface APIRequestOptions extends Options {
446
445
  }
447
- declare const request: <T>(url: string, options?: Options) => Promise<redaxios.Response<APIResponse<T>>>;
446
+ declare const request: <T>(url: string, options?: Options) => Promise<Response<APIResponse<T>>>;
448
447
 
449
448
  type ExtractRouteParams<T extends string> = string extends T ? Record<string, string | number | undefined> : T extends `${string}:${infer Param}/${infer Rest}` ? {
450
449
  [k in Param | keyof ExtractRouteParams<Rest>]: string | number;
@@ -600,6 +599,9 @@ declare class TonightPass {
600
599
  database: () => Promise<Health<"database">>;
601
600
  http: () => Promise<Health<"app">>;
602
601
  };
602
+ readonly profiles: {
603
+ get: (username: string) => Promise<CareersCategory[] | CareersEmploymentType[] | CareersJob[] | CareersJob | CareersOffice[] | Health<"database"> | Health<"app"> | UserIdentity | User[] | User | UserIdentifier>;
604
+ };
603
605
  readonly users: {
604
606
  getAll: () => Promise<User[]>;
605
607
  get: (id: string) => Promise<CareersCategory[] | CareersEmploymentType[] | CareersJob[] | CareersJob | CareersOffice[] | Health<"database"> | Health<"app"> | UserIdentity | User[] | User | UserIdentifier>;
package/dist/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- import * as redaxios from 'redaxios';
2
1
  import { Options, Response } from 'redaxios';
3
2
  import { ParamValue } from 'pathcat';
4
3
 
@@ -444,7 +443,7 @@ declare class UpdateIdentityDto implements Partial<Pick<UserIdentity, "firstName
444
443
 
445
444
  interface APIRequestOptions extends Options {
446
445
  }
447
- declare const request: <T>(url: string, options?: Options) => Promise<redaxios.Response<APIResponse<T>>>;
446
+ declare const request: <T>(url: string, options?: Options) => Promise<Response<APIResponse<T>>>;
448
447
 
449
448
  type ExtractRouteParams<T extends string> = string extends T ? Record<string, string | number | undefined> : T extends `${string}:${infer Param}/${infer Rest}` ? {
450
449
  [k in Param | keyof ExtractRouteParams<Rest>]: string | number;
@@ -600,6 +599,9 @@ declare class TonightPass {
600
599
  database: () => Promise<Health<"database">>;
601
600
  http: () => Promise<Health<"app">>;
602
601
  };
602
+ readonly profiles: {
603
+ get: (username: string) => Promise<CareersCategory[] | CareersEmploymentType[] | CareersJob[] | CareersJob | CareersOffice[] | Health<"database"> | Health<"app"> | UserIdentity | User[] | User | UserIdentifier>;
604
+ };
603
605
  readonly users: {
604
606
  getAll: () => Promise<User[]>;
605
607
  get: (id: string) => Promise<CareersCategory[] | CareersEmploymentType[] | CareersJob[] | CareersJob | CareersOffice[] | Health<"database"> | Health<"app"> | UserIdentity | User[] | User | UserIdentifier>;
package/dist/index.js CHANGED
@@ -3,43 +3,43 @@
3
3
  require('reflect-metadata');
4
4
  var classTransformer = require('class-transformer');
5
5
  var classValidator = require('class-validator');
6
- var z = require('redaxios');
6
+ var H = require('redaxios');
7
7
  var pathcat = require('pathcat');
8
8
 
9
9
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
10
10
 
11
- var z__default = /*#__PURE__*/_interopDefault(z);
11
+ var H__default = /*#__PURE__*/_interopDefault(H);
12
12
 
13
- var $=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var a=(r,e,s,t)=>{for(var n=t>1?void 0:t?j(e,s):e,i=r.length-1,d;i>=0;i--)(d=r[i])&&(n=(t?d(e,s,n):d(n))||n);return t&&n&&$(e,s,n),n};var R="https://api.tonightpass.com";var oe=/^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$/,ie=/((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$/,E=/(^[\p{L}\d'\\.\s\\-]*$)/u,ae=/^[a-z\d]+(?:(\.|-|_)[a-z\d]+)*$/,pe=/\$2[abxy]?\$\d{1,2}\$[A-Za-z\d\\./]{53}/,de=/^\s*(?:\+?(\d{1,3}))?([-. (]*(\d{3})[-. )]*)?((\d{3})[-. ]*(\d{2,4})(?:[-.x ]*(\d+))?)\s*$/,me=/(((http:\/\/www)|(http:\/\/)|(www))[-a-zA-Z0-9@:%_\\+.~#?&//=]+)\.(jpg|jpeg|gif|png|bmp|tiff|tga|svg)/i;var I=class{identifier;password;identity;addresses};var U=class{identifier;password};var h=class{identifier;identity;password};a([classValidator.IsOptional(),classValidator.IsObject(),classValidator.ValidateNested(),classTransformer.Type(()=>f)],h.prototype,"identifier",2),a([classValidator.IsOptional(),classValidator.IsObject(),classValidator.ValidateNested(),classTransformer.Type(()=>m)],h.prototype,"identity",2),a([classValidator.IsOptional(),classValidator.IsString(),classValidator.MinLength(6),classValidator.MaxLength(130)],h.prototype,"password",2);var f=class{email;phoneNumber;username};a([classValidator.IsOptional(),classValidator.IsString(),classValidator.IsEmail()],f.prototype,"email",2),a([classValidator.IsOptional(),classValidator.IsString(),classValidator.IsPhoneNumber()],f.prototype,"phoneNumber",2),a([classValidator.IsOptional(),classValidator.IsString(),classValidator.MinLength(3)],f.prototype,"username",2);var m=class{firstName;lastName;displayName;description;profilePictureUrl;bannerUrl;gender;birthDate};a([classValidator.IsOptional(),classValidator.IsString(),classValidator.Length(2,50),classValidator.Matches(E,{message:"First name must be composed of letters only"})],m.prototype,"firstName",2),a([classValidator.IsOptional(),classValidator.IsString(),classValidator.Length(2,50),classValidator.Matches(E,{message:"Last name must be composed of letters only"})],m.prototype,"lastName",2),a([classValidator.IsOptional(),classValidator.IsString(),classValidator.Length(1,32)],m.prototype,"displayName",2),a([classValidator.IsOptional(),classValidator.IsString(),classValidator.Length(15,500)],m.prototype,"description",2),a([classValidator.IsOptional(),classValidator.IsUrl()],m.prototype,"profilePictureUrl",2),a([classValidator.IsOptional(),classValidator.IsUrl()],m.prototype,"bannerUrl",2),a([classValidator.IsOptional()],m.prototype,"gender",2),a([classValidator.IsOptional(),classValidator.IsDateString()],m.prototype,"birthDate",2);var k=typeof window<"u";var H=z__default.default.create({headers:{"Content-Type":"application/json",Accept:"application/json",...!k&&{"User-Agent":"tonightpass-api-client"}},responseType:"json",transformRequest:[function(r){return JSON.stringify(r)}]}),G=async(r,e)=>H(r,{...e}).then(t=>t).catch(t=>{throw t});var V=(c=>(c.ENTRY="entry",c.PACKAGE="package",c.MEAL="meal",c.DRINK="drink",c.PARKING="parking",c.ACCOMMODATION="accommodation",c.CAMPING="camping",c.LOCKER="locker",c.SHUTTLE="shuttle",c.OTHER="other",c))(V||{});var B=(o=>(o.Clubbing="clubbing",o.Concert="concert",o.Afterwork="afterwork",o.DancingLunch="dancing_lunch",o.Diner="diner",o.Garden="garden",o.AfterBeach="after_beach",o.Festival="festival",o.Spectacle="spectacle",o.Cruise="cruise",o.OutsideAnimation="outside_animation",o.Sport="sport",o.Match="match",o.Seminar="seminar",o.Conference="conference",o.WellnessDay="wellness_day",o.Workshop="workshop",o.TradeFair="trade_fair",o.ConsumerShow="consumer_show",o.Membership="membership",o))(B||{}),X=(i=>(i.Music="music",i.Dress="dress",i.Sport="sport",i.Food="food",i.Art="art",i))(X||{});var W=(d=>(d.Facebook="facebook",d.Twitter="twitter",d.Instagram="instagram",d.Linkedin="linkedin",d.Youtube="youtube",d.Website="website",d))(W||{}),K=(n=>(n[n.EMPLOYEE=0]="EMPLOYEE",n[n.MANAGER=1]="MANAGER",n[n.ADMINISTRATOR=2]="ADMINISTRATOR",n[n.OWNER=3]="OWNER",n))(K||{});var Y=(i=>(i.Authentication="authentication",i.OrganizationInvite="organization_invite",i.PasswordRecovery="password_recovery",i.EmailValidation="email_validation",i.PhoneValidation="phone_validation",i))(Y||{});var Z=(t=>(t[t.USER=0]="USER",t[t.DEVELOPER=8]="DEVELOPER",t[t.ADMINISTRATOR=10]="ADMINISTRATOR",t))(Z||{});var J=(u=>(u.Created="created",u.Cancelled="cancelled",u.Completed="completed",u.Pending="pending",u.Confirmed="confirmed",u.Declined="declined",u.Refunded="refunded",u.PartiallyRefunded="partially_refunded",u.Expired="expired",u))(J||{});var ee=(t=>(t.EUR="EUR",t.USD="USD",t.GBP="GBP",t))(ee||{}),te=(s=>(s.FR="fr",s.EN="en",s))(te||{});var b=class extends Error{constructor(s,t){super(t.message);this.response=s;this.data=t;this.status=s.status;}status},x=class{options;url;constructor(e){this.options=e,this.url=(s,t)=>{let n=this.options.baseURL||R;return pathcat.pathcat(n,s,t)};}setOptions(e){this.options=e;}async get(e,s,t){return this.requester("GET",e,void 0,s,t)}async post(e,s,t,n){return this.requester("POST",e,s,t,n)}async put(e,s,t,n){return this.requester("PUT",e,s,t,n)}async patch(e,s,t,n){return this.requester("PATCH",e,s,t,n)}async delete(e,s,t){return this.requester("DELETE",e,void 0,s,t)}async requester(e,s,t,n={},i={}){let d=this.url(s,n);if(t!==void 0&&e==="GET")throw new Error("Cannot send a GET request with a body");let A=await G(d,{method:e,data:t,...i}),P=A.data;if(!P.success)throw new b(A,P);return P.data}};function y(r){return r}var _=r=>({database:async()=>r.get("/health/database"),http:async()=>r.get("/health/http")});var T=r=>({getAll:async()=>r.get("/users"),get:async e=>r.get("/users",{id:e}),me:async()=>r.get("/users/me"),check:async e=>r.get("/check/:identifier",{identifier:e}),update:async(e,s)=>r.put("/users/:id",s,{id:e})});var M=r=>({categories:{getAll:async e=>r.get("/careers/categories",e)},employmentTypes:{getAll:async e=>r.get("/careers/employmentTypes",e)},jobs:{getAll:async e=>r.get("/careers/jobs",e),get:async e=>r.get("/careers/jobs/:id",{id:e})},offices:{getAll:async e=>r.get("/careers/offices",e)}});var q=class{client;careers;health;users;constructor(e){this.client=new x(e),this.careers=M(this.client),this.health=_(this.client),this.users=T(this.client);}};
13
+ var j=Object.defineProperty;var F=Object.getOwnPropertyDescriptor;var a=(r,e,n,t)=>{for(var s=t>1?void 0:t?F(e,n):e,i=r.length-1,d;i>=0;i--)(d=r[i])&&(s=(t?d(e,n,s):d(s))||s);return t&&s&&j(e,n,s),s};var I="https://api.tonightpass.com";var ie=/^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$/,ae=/((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$/,b=/(^[\p{L}\d'\\.\s\\-]*$)/u,pe=/^[a-z\d]+(?:(\.|-|_)[a-z\d]+)*$/,de=/\$2[abxy]?\$\d{1,2}\$[A-Za-z\d\\./]{53}/,me=/^\s*(?:\+?(\d{1,3}))?([-. (]*(\d{3})[-. )]*)?((\d{3})[-. ]*(\d{2,4})(?:[-.x ]*(\d+))?)\s*$/,ce=/(((http:\/\/www)|(http:\/\/)|(www))[-a-zA-Z0-9@:%_\\+.~#?&//=]+)\.(jpg|jpeg|gif|png|bmp|tiff|tga|svg)/i;var U=class{identifier;password;identity;addresses};var C=class{identifier;password};var h=class{identifier;identity;password};a([classValidator.IsOptional(),classValidator.IsObject(),classValidator.ValidateNested(),classTransformer.Type(()=>f)],h.prototype,"identifier",2),a([classValidator.IsOptional(),classValidator.IsObject(),classValidator.ValidateNested(),classTransformer.Type(()=>m)],h.prototype,"identity",2),a([classValidator.IsOptional(),classValidator.IsString(),classValidator.MinLength(6),classValidator.MaxLength(130)],h.prototype,"password",2);var f=class{email;phoneNumber;username};a([classValidator.IsOptional(),classValidator.IsString(),classValidator.IsEmail()],f.prototype,"email",2),a([classValidator.IsOptional(),classValidator.IsString(),classValidator.IsPhoneNumber()],f.prototype,"phoneNumber",2),a([classValidator.IsOptional(),classValidator.IsString(),classValidator.MinLength(3)],f.prototype,"username",2);var m=class{firstName;lastName;displayName;description;profilePictureUrl;bannerUrl;gender;birthDate};a([classValidator.IsOptional(),classValidator.IsString(),classValidator.Length(2,50),classValidator.Matches(b,{message:"First name must be composed of letters only"})],m.prototype,"firstName",2),a([classValidator.IsOptional(),classValidator.IsString(),classValidator.Length(2,50),classValidator.Matches(b,{message:"Last name must be composed of letters only"})],m.prototype,"lastName",2),a([classValidator.IsOptional(),classValidator.IsString(),classValidator.Length(1,32)],m.prototype,"displayName",2),a([classValidator.IsOptional(),classValidator.IsString(),classValidator.Length(15,500)],m.prototype,"description",2),a([classValidator.IsOptional(),classValidator.IsUrl()],m.prototype,"profilePictureUrl",2),a([classValidator.IsOptional(),classValidator.IsUrl()],m.prototype,"bannerUrl",2),a([classValidator.IsOptional()],m.prototype,"gender",2),a([classValidator.IsOptional(),classValidator.IsDateString()],m.prototype,"birthDate",2);var y=typeof window<"u";var V=H__default.default.create({headers:{"Content-Type":"application/json",Accept:"application/json",...!y&&{"User-Agent":"tonightpass-api-client"}},responseType:"json",transformRequest:[function(r){return JSON.stringify(r)}],withCredentials:y}),G=async(r,e)=>V(r,{...e}).then(t=>t).catch(t=>{throw t.data});var B=(c=>(c.ENTRY="entry",c.PACKAGE="package",c.MEAL="meal",c.DRINK="drink",c.PARKING="parking",c.ACCOMMODATION="accommodation",c.CAMPING="camping",c.LOCKER="locker",c.SHUTTLE="shuttle",c.OTHER="other",c))(B||{});var X=(o=>(o.Clubbing="clubbing",o.Concert="concert",o.Afterwork="afterwork",o.DancingLunch="dancing_lunch",o.Diner="diner",o.Garden="garden",o.AfterBeach="after_beach",o.Festival="festival",o.Spectacle="spectacle",o.Cruise="cruise",o.OutsideAnimation="outside_animation",o.Sport="sport",o.Match="match",o.Seminar="seminar",o.Conference="conference",o.WellnessDay="wellness_day",o.Workshop="workshop",o.TradeFair="trade_fair",o.ConsumerShow="consumer_show",o.Membership="membership",o))(X||{}),W=(i=>(i.Music="music",i.Dress="dress",i.Sport="sport",i.Food="food",i.Art="art",i))(W||{});var K=(d=>(d.Facebook="facebook",d.Twitter="twitter",d.Instagram="instagram",d.Linkedin="linkedin",d.Youtube="youtube",d.Website="website",d))(K||{}),Y=(s=>(s[s.EMPLOYEE=0]="EMPLOYEE",s[s.MANAGER=1]="MANAGER",s[s.ADMINISTRATOR=2]="ADMINISTRATOR",s[s.OWNER=3]="OWNER",s))(Y||{});var Z=(i=>(i.Authentication="authentication",i.OrganizationInvite="organization_invite",i.PasswordRecovery="password_recovery",i.EmailValidation="email_validation",i.PhoneValidation="phone_validation",i))(Z||{});var J=(t=>(t[t.USER=0]="USER",t[t.DEVELOPER=8]="DEVELOPER",t[t.ADMINISTRATOR=10]="ADMINISTRATOR",t))(J||{});var ee=(u=>(u.Created="created",u.Cancelled="cancelled",u.Completed="completed",u.Pending="pending",u.Confirmed="confirmed",u.Declined="declined",u.Refunded="refunded",u.PartiallyRefunded="partially_refunded",u.Expired="expired",u))(ee||{});var te=(t=>(t.EUR="EUR",t.USD="USD",t.GBP="GBP",t))(te||{}),re=(n=>(n.FR="fr",n.EN="en",n))(re||{});var A=class extends Error{constructor(n,t){super(t.message);this.response=n;this.data=t;this.status=n.status;}status},x=class{options;url;constructor(e){this.options=e,this.url=(n,t)=>{let s=this.options.baseURL||I;return pathcat.pathcat(s,n,t)};}setOptions(e){this.options=e;}async get(e,n,t){return this.requester("GET",e,void 0,n,t)}async post(e,n,t,s){return this.requester("POST",e,n,t,s)}async put(e,n,t,s){return this.requester("PUT",e,n,t,s)}async patch(e,n,t,s){return this.requester("PATCH",e,n,t,s)}async delete(e,n,t){return this.requester("DELETE",e,void 0,n,t)}async requester(e,n,t,s={},i={}){let d=this.url(n,s);if(t!==void 0&&e==="GET")throw new Error("Cannot send a GET request with a body");let R=await G(d,{method:e,data:t,...i}),E=R.data;if(!E.success)throw new A(R,E);return E.data}};function P(r){return r}var _=r=>({database:async()=>r.get("/health/database"),http:async()=>r.get("/health/http")});var T=r=>({getAll:async()=>r.get("/users"),get:async e=>r.get("/users",{id:e}),me:async()=>r.get("/users/me"),check:async e=>r.get("/check/:identifier",{identifier:e}),update:async(e,n)=>r.put("/users/:id",n,{id:e})});var M=r=>({categories:{getAll:async e=>r.get("/careers/categories",e)},employmentTypes:{getAll:async e=>r.get("/careers/employmentTypes",e)},jobs:{getAll:async e=>r.get("/careers/jobs",e),get:async e=>r.get("/careers/jobs/:id",{id:e})},offices:{getAll:async e=>r.get("/careers/offices",e)}});var q=r=>({get:async e=>r.get("/profiles/:username",{username:e})});var $=class{client;careers;health;profiles;users;constructor(e){this.client=new x(e),this.careers=M(this.client),this.health=_(this.client),this.profiles=q(this.client),this.users=T(this.client);}};
14
14
 
15
- exports.BCRYPT_HASH = pe;
15
+ exports.BCRYPT_HASH = de;
16
16
  exports.Client = x;
17
- exports.CreateUserDto = I;
18
- exports.Currency = ee;
19
- exports.DEFAULT_API_URL = R;
20
- exports.EMAIL_REGEX = oe;
21
- exports.EventStyleType = X;
22
- exports.EventTicketCategory = V;
23
- exports.EventType = B;
24
- exports.IMAGE_URL_REGEX = me;
25
- exports.Language = te;
26
- exports.NAME_REGEX = E;
27
- exports.OrderStatus = J;
28
- exports.OrganizationMemberRole = K;
29
- exports.OrganizationSocialType = W;
30
- exports.PASSWORD_REGEX = ie;
31
- exports.PHONE_NUMBER_REGEX = de;
32
- exports.SLUG_REGEX = ae;
33
- exports.SignInUserDto = U;
34
- exports.TonightPass = q;
35
- exports.TonightPassAPIError = b;
17
+ exports.CreateUserDto = U;
18
+ exports.Currency = te;
19
+ exports.DEFAULT_API_URL = I;
20
+ exports.EMAIL_REGEX = ie;
21
+ exports.EventStyleType = W;
22
+ exports.EventTicketCategory = B;
23
+ exports.EventType = X;
24
+ exports.IMAGE_URL_REGEX = ce;
25
+ exports.Language = re;
26
+ exports.NAME_REGEX = b;
27
+ exports.OrderStatus = ee;
28
+ exports.OrganizationMemberRole = Y;
29
+ exports.OrganizationSocialType = K;
30
+ exports.PASSWORD_REGEX = ae;
31
+ exports.PHONE_NUMBER_REGEX = me;
32
+ exports.SLUG_REGEX = pe;
33
+ exports.SignInUserDto = C;
34
+ exports.TonightPass = $;
35
+ exports.TonightPassAPIError = A;
36
36
  exports.UpdateUserDto = h;
37
- exports.UserRole = Z;
38
- exports.UserTokenType = Y;
37
+ exports.UserRole = J;
38
+ exports.UserTokenType = Z;
39
39
  exports.health = _;
40
- exports.isBrowser = k;
40
+ exports.isBrowser = y;
41
41
  exports.request = G;
42
- exports.sdk = y;
42
+ exports.sdk = P;
43
43
  exports.users = T;
44
44
  //# sourceMappingURL=out.js.map
45
45
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/constants/api.ts","../src/constants/regex.ts","../src/rest/dtos/index.ts","../src/rest/dtos/users/create-user.dto.ts","../src/rest/dtos/users/sign-in-user.dto.ts","../src/rest/dtos/users/update-user.dto.ts","../src/rest/request/request.ts","../src/utils/index.ts","../src/rest/types/event/ticket/index.ts","../src/rest/types/event/index.ts","../src/rest/types/organizations/index.ts","../src/rest/types/token/index.ts","../src/rest/types/users/index.ts","../src/rest/types/order/index.ts","../src/rest/types/index.ts","../src/rest/client.ts","../src/sdk/builder.ts","../src/sdk/health.ts","../src/sdk/users.ts","../src/sdk/careers.ts","../src/tonightpass.ts"],"names":["DEFAULT_API_URL","EMAIL_REGEX","PASSWORD_REGEX","NAME_REGEX","SLUG_REGEX","BCRYPT_HASH","PHONE_NUMBER_REGEX","IMAGE_URL_REGEX","CreateUserDto","SignInUserDto","Type","IsDateString","IsEmail","IsObject","IsOptional","IsPhoneNumber","IsString","IsUrl","Length","Matches","MaxLength","MinLength","ValidateNested","UpdateUserDto","__decorateClass","UpdateIdentifierDto","UpdateIdentityDto","axios","isBrowser","instance","data","request","url","options","response","error","EventTicketCategory","EventType","EventStyleType","OrganizationSocialType","OrganizationMemberRole","UserTokenType","UserRole","OrderStatus","Currency","Language","pathcat","TonightPassAPIError","Client","path","params","baseURL","query","body","method","result","sdk","builder","health","client","users","id","identifier","careers","TonightPass"],"mappings":"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","sourcesContent":["export const DEFAULT_API_URL = \"https://api.tonightpass.com\";\n","export const EMAIL_REGEX = /^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,4}$/;\n\n// checks if a password has at least one uppercase letter and a number or special character\nexport const PASSWORD_REGEX =\n /((?=.*\\d)|(?=.*\\W+))(?![.\\n])(?=.*[A-Z])(?=.*[a-z]).*$/;\n\n// checks if a string has only letters, numbers, spaces, apostrophes, dots and dashes\nexport const NAME_REGEX = /(^[\\p{L}\\d'\\\\.\\s\\\\-]*$)/u;\n\n// checks if a string is a valid slug, useful for usernames\nexport const SLUG_REGEX = /^[a-z\\d]+(?:(\\.|-|_)[a-z\\d]+)*$/;\n\n// validates if passwords are valid bcrypt hashes\nexport const BCRYPT_HASH = /\\$2[abxy]?\\$\\d{1,2}\\$[A-Za-z\\d\\\\./]{53}/;\n\nexport const PHONE_NUMBER_REGEX =\n /^\\s*(?:\\+?(\\d{1,3}))?([-. (]*(\\d{3})[-. )]*)?((\\d{3})[-. ]*(\\d{2,4})(?:[-.x ]*(\\d+))?)\\s*$/;\n\nexport const IMAGE_URL_REGEX =\n /(((http:\\/\\/www)|(http:\\/\\/)|(www))[-a-zA-Z0-9@:%_\\\\+.~#?&//=]+)\\.(jpg|jpeg|gif|png|bmp|tiff|tga|svg)/i;\n","import \"reflect-metadata\";\n\nexport * from \"./users\";\n","import { UserIdentifier, UserIdentityGender } from \"../../types\";\n\nexport class CreateUserDto {\n identifier: UserIdentifier;\n password: string;\n identity: CreateUserIdentituDto;\n addresses: Location[];\n}\n\nclass CreateUserIdentituDto {\n firstName: string;\n lastName: string;\n gender: UserIdentityGender;\n profilePictureUrl?: string;\n birthDate: Date;\n}\n","export class SignInUserDto {\n identifier: string;\n password: string;\n}\n","import { Type } from \"class-transformer\";\nimport {\n IsDateString,\n IsEmail,\n IsObject,\n IsOptional,\n IsPhoneNumber,\n IsString,\n IsUrl,\n Length,\n Matches,\n MaxLength,\n MinLength,\n ValidateNested,\n} from \"class-validator\";\n\nimport { NAME_REGEX } from \"../../../constants/regex\";\nimport { UserIdentifier, UserIdentity } from \"../../types\";\n\nexport class UpdateUserDto {\n @IsOptional()\n @IsObject()\n @ValidateNested()\n @Type(() => UpdateIdentifierDto)\n identifier?: UpdateIdentifierDto;\n\n @IsOptional()\n @IsObject()\n @ValidateNested()\n @Type(() => UpdateIdentityDto)\n identity?: UpdateIdentityDto;\n\n @IsOptional()\n @IsString()\n @MinLength(6)\n @MaxLength(130)\n password?: string;\n}\n\nclass UpdateIdentifierDto\n implements\n Partial<Pick<UserIdentifier, \"email\" | \"phoneNumber\" | \"username\">>\n{\n @IsOptional()\n @IsString()\n @IsEmail()\n email?: string;\n\n @IsOptional()\n @IsString()\n @IsPhoneNumber()\n phoneNumber?: string;\n\n @IsOptional()\n @IsString()\n @MinLength(3)\n username?: string;\n}\n\nclass UpdateIdentityDto\n implements\n Partial<\n Pick<\n UserIdentity,\n | \"firstName\"\n | \"lastName\"\n | \"displayName\"\n | \"description\"\n | \"profilePictureUrl\"\n | \"bannerUrl\"\n | \"gender\"\n | \"birthDate\"\n >\n >\n{\n @IsOptional()\n @IsString()\n @Length(2, 50)\n @Matches(NAME_REGEX, {\n message: \"First name must be composed of letters only\",\n })\n firstName?: string;\n\n @IsOptional()\n @IsString()\n @Length(2, 50)\n @Matches(NAME_REGEX, {\n message: \"Last name must be composed of letters only\",\n })\n lastName?: string;\n\n @IsOptional()\n @IsString()\n @Length(1, 32)\n displayName?: string;\n\n @IsOptional()\n @IsString()\n @Length(15, 500)\n description?: string;\n\n @IsOptional()\n @IsUrl()\n profilePictureUrl?: string | undefined;\n\n @IsOptional()\n @IsUrl()\n bannerUrl?: string | undefined;\n\n @IsOptional()\n gender?: string;\n\n @IsOptional()\n @IsDateString()\n birthDate?: Date;\n}\n","import axios, { Options } from \"redaxios\";\n\nimport { isBrowser } from \"../../utils\";\nimport { APIResponse } from \"../endpoints\";\n\nconst instance = axios.create({\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n ...(!isBrowser && { \"User-Agent\": \"tonightpass-api-client\" }),\n },\n responseType: \"json\",\n transformRequest: [\n function (data) {\n return JSON.stringify(data);\n },\n ],\n});\n\nexport interface APIRequestOptions extends Options {}\n\nexport const request = async <T>(url: string, options?: Options) => {\n const response = instance<APIResponse<T>>(url, { ...options })\n .then((response) => response)\n .catch((error: Error) => {\n throw error;\n });\n\n return response;\n};\n","export const isBrowser = typeof window !== \"undefined\";\n","import { Currency } from \"../..\";\n\nexport type EventTicket = {\n id: string;\n name: string;\n description?: string;\n price: number;\n displayPrice: number;\n quantity: number;\n type: EventTicketType;\n category: EventTicketCategory;\n currency: Currency;\n vatRate: number;\n externalId?: string;\n isVisible: boolean;\n isFeesIncluded: boolean;\n startAt: Date;\n endAt: Date;\n updatedAt: Date;\n createdAt: Date;\n};\n\nexport type EventTicketType = \"e-ticket\" | \"other\";\n\nexport enum EventTicketCategory {\n ENTRY = \"entry\",\n PACKAGE = \"package\",\n MEAL = \"meal\",\n DRINK = \"drink\",\n PARKING = \"parking\",\n ACCOMMODATION = \"accommodation\",\n CAMPING = \"camping\",\n LOCKER = \"locker\",\n SHUTTLE = \"shuttle\",\n OTHER = \"other\",\n}\n","import { EventTicket } from \"./ticket\";\nimport { Location } from \"..\";\nimport { Organization } from \"../organizations\";\n\nexport * from \"./ticket\";\n\nexport type Event = {\n title: string;\n description: string;\n slug: string;\n organization: Organization;\n type: EventType;\n public: boolean;\n flyers: string[];\n trailers: string[];\n location: Location;\n tickets: EventTicket[];\n styles: EventStyle[];\n startAt: Date;\n endAt: Date;\n updatedAt: Date;\n createdAt: Date;\n};\n\nexport enum EventType {\n Clubbing = \"clubbing\",\n Concert = \"concert\",\n Afterwork = \"afterwork\",\n DancingLunch = \"dancing_lunch\",\n Diner = \"diner\",\n Garden = \"garden\",\n AfterBeach = \"after_beach\",\n Festival = \"festival\",\n Spectacle = \"spectacle\",\n Cruise = \"cruise\",\n OutsideAnimation = \"outside_animation\",\n Sport = \"sport\",\n Match = \"match\",\n Seminar = \"seminar\",\n Conference = \"conference\",\n WellnessDay = \"wellness_day\",\n Workshop = \"workshop\",\n TradeFair = \"trade_fair\",\n ConsumerShow = \"consumer_show\",\n Membership = \"membership\",\n}\n\nexport type EventStyle = {\n type: EventStyleType;\n emoji: string;\n name: string;\n};\n\nexport enum EventStyleType {\n Music = \"music\",\n Dress = \"dress\",\n Sport = \"sport\",\n Food = \"food\",\n Art = \"art\",\n}\n","import { Location, Profile, ProfileMetadata } from \"..\";\nimport { Event } from \"../event\";\nimport { EventTicket } from \"../event/ticket\";\nimport { User } from \"../users\";\n\nexport type Organization = {\n id: string;\n slug: string;\n identity: OrganizationIdentity;\n members: OrganizationMember[];\n location?: Location;\n events: Event[];\n savedTickets: EventTicket[];\n verified: boolean;\n updatedAt: Date;\n createdAt: Date;\n};\n\nexport type OrganizationIdentity = Profile & {\n socialLinks: OrganizationSocialLink[];\n\n metadata: ProfileMetadata & {\n eventsCount: number;\n viewsCount: number;\n membersCount: number;\n };\n};\n\nexport type OrganizationSocialLink = {\n type: OrganizationSocialType;\n url: string;\n};\n\nexport enum OrganizationSocialType {\n Facebook = \"facebook\",\n Twitter = \"twitter\",\n Instagram = \"instagram\",\n Linkedin = \"linkedin\",\n Youtube = \"youtube\",\n Website = \"website\",\n}\n\nexport type OrganizationMember = {\n user: User;\n role: OrganizationMemberRole;\n createdAt: Date;\n};\n\nexport enum OrganizationMemberRole {\n EMPLOYEE = 0,\n MANAGER = 1,\n ADMINISTRATOR = 2,\n OWNER = 3,\n}\n","export type UserToken = {\n id: string;\n type: UserTokenType;\n value: string;\n createdAt: Date;\n expiresAt: Date;\n};\n\nexport enum UserTokenType {\n Authentication = \"authentication\",\n OrganizationInvite = \"organization_invite\",\n PasswordRecovery = \"password_recovery\",\n EmailValidation = \"email_validation\",\n PhoneValidation = \"phone_validation\",\n}\n","import { Currency, Language, Location, Profile, ProfileMetadata } from \"..\";\nimport { UpdateUserDto } from \"../../dtos\";\nimport { Endpoint } from \"../../endpoints\";\n\nexport type User = {\n id: string;\n identifier: UserIdentifier;\n password: string;\n identity: UserIdentity;\n role: UserRole;\n addresses: Location[];\n preferences: UserPreferences;\n connections: UserConnection[];\n verified: boolean;\n updatedAt: Date;\n createdAt: Date;\n};\n\nexport type UserIdentifier = {\n email?: string;\n phoneNumber?: string;\n username: string;\n\n [key: string]: string | undefined;\n};\n\nexport type UserIdentity = Profile & {\n firstName: string;\n lastName: string;\n fullName: string;\n gender: UserIdentityGender;\n birthDate: Date;\n\n metadata: ProfileMetadata & {\n followingCount: number;\n hasPassPlus: boolean;\n idValid: boolean;\n };\n};\n\nexport enum UserRole {\n USER = 0,\n DEVELOPER = 8,\n ADMINISTRATOR = 10,\n}\n\nexport type UserIdentityGender =\n | \"male\"\n | \"female\"\n | \"non-binary\"\n | \"gender-fluid\"\n | \"neutral\"\n | \"other\"\n | string;\n\nexport type UserPreferences = {\n language: Language;\n currency: Currency;\n notifications: {\n email: {\n newsletter: boolean;\n message: boolean;\n };\n push: {\n message: boolean;\n };\n };\n};\n\nexport type UserConnection = {\n ip: string;\n os: UserConnectionOS;\n device: UserConnectionDevice;\n client: UserConnectionClient;\n updatedAt: Date;\n createdAt: Date;\n};\n\nexport type UserConnectionOS = {\n name: string;\n version: string;\n};\n\nexport type UserConnectionDevice = {\n type: string;\n brand: string;\n};\n\nexport type UserConnectionClient = {\n name: string;\n version: string;\n};\n\nexport type UserEndpoints =\n | Endpoint<\"GET\", \"/users\", User[]>\n | Endpoint<\"GET\", \"/users/:id\", User, { id: string }>\n | Endpoint<\"GET\", \"/users/me\", User>\n | Endpoint<\n \"GET\",\n \"/check/:identifier\",\n UserIdentifier,\n { identifier: string }\n >\n | Endpoint<\"PUT\", \"/users/:id\", User, UpdateUserDto>;\n","import { Currency } from \"..\";\nimport { Event, EventTicket } from \"../event\";\nimport { User } from \"../users\";\n\nexport enum OrderStatus {\n Created = \"created\",\n Cancelled = \"cancelled\",\n Completed = \"completed\",\n Pending = \"pending\",\n Confirmed = \"confirmed\",\n Declined = \"declined\",\n Refunded = \"refunded\",\n PartiallyRefunded = \"partially_refunded\",\n Expired = \"expired\",\n}\n\nexport type OrderItem = {\n id: string;\n ticket: EventTicket;\n isUsed: boolean;\n updatedAt: Date;\n createdAt: Date;\n};\n\nexport type Order = {\n id: string;\n owner: User;\n members: User[];\n status: OrderStatus;\n event: Event;\n items: OrderItem[];\n promoCode?: PromoCode;\n total: number;\n currency: Currency;\n createdAt: Date;\n};\n\nexport type PromoCode = {\n id: string;\n code: string;\n used: number;\n discount: number;\n isActive: boolean;\n expirationAt: Date;\n createdAt: Date;\n};\n","export * from \"./careers\";\nexport * from \"./event\";\nexport * from \"./health\";\nexport * from \"./organizations\";\nexport * from \"./token\";\nexport * from \"./users\";\nexport * from \"./order\";\nexport * from \"./profiles\";\n\nexport type Location = {\n name?: string;\n address: string;\n zipCode: string;\n city: string;\n country: string;\n geometry?: {\n latitude: number;\n longitude: number;\n };\n};\n\n// Currency\nexport enum Currency {\n EUR = \"EUR\",\n USD = \"USD\",\n GBP = \"GBP\",\n}\n\n// I18n\nexport enum Language {\n FR = \"fr\",\n EN = \"en\",\n}\n","import { ParamValue, pathcat } from \"pathcat\";\nimport { Options, Response } from \"redaxios\";\n\nimport { APIResponse, Endpoints, ErroredAPIResponse } from \"./endpoints\";\nimport { APIRequestOptions, request } from \"./request\";\nimport { DEFAULT_API_URL } from \"../constants\";\n\n// type ExtractRouteParams<T extends string> = string extends T\n// ? string\n// : T extends `${string}:${infer Param}/${infer Rest}`\n// ? Param | ExtractRouteParams<Rest>\n// : T extends `${string}:${infer Param}`\n// ? Param\n// : never;\n\nexport type ExtractRouteParams<T extends string> = string extends T\n ? Record<string, string | number | undefined>\n : T extends `${string}:${infer Param}/${infer Rest}`\n ? { [k in Param | keyof ExtractRouteParams<Rest>]: string | number }\n : T extends `${string}:${infer Param}`\n ? { [k in Param]: string | number }\n : object;\n\nexport type ExtractEndpoint<\n Method extends string,\n Path extends string,\n> = Extract<Endpoints, { path: Path; method: Method }>;\n\nexport type PathsFor<M extends Options[\"method\"]> = Extract<\n Endpoints,\n { method: M }\n>[\"path\"];\n\nexport type Query<Path extends string> = ExtractRouteParams<Path> &\n Record<string, string | number | undefined>;\n\nexport class TonightPassAPIError<T> extends Error {\n public readonly status: number;\n\n constructor(\n public readonly response: Response<APIResponse<T>>,\n public readonly data: ErroredAPIResponse,\n ) {\n super(data.message);\n\n this.status = response.status;\n }\n}\n\nexport interface ClientOptions {\n readonly baseURL: string;\n}\n\nexport class Client {\n private options;\n public readonly url;\n\n constructor(options: ClientOptions) {\n this.options = options;\n this.url = (path: string, params: Record<string, ParamValue>) => {\n const baseURL = this.options.baseURL || DEFAULT_API_URL;\n return pathcat(baseURL, path, params);\n };\n }\n\n setOptions(options: ClientOptions) {\n this.options = options;\n }\n\n async get<Path extends PathsFor<\"GET\">>(\n path: Path,\n query?: Query<Path>,\n options?: APIRequestOptions,\n ) {\n return this.requester<\n Extract<Endpoints, { path: Path; method: \"GET\" }>[\"res\"]\n >(\"GET\", path, undefined, query, options);\n }\n\n async post<Path extends Extract<Endpoints, { method: \"POST\" }>[\"path\"]>(\n path: Path,\n body: Extract<Endpoints, { path: Path; method: \"POST\" }>[\"body\"],\n query?: Query<Path>,\n options?: APIRequestOptions,\n ) {\n return this.requester<\n Extract<Endpoints, { path: Path; method: \"POST\" }>[\"res\"]\n >(\"POST\", path, body, query, options);\n }\n\n async put<Path extends Extract<Endpoints, { method: \"PUT\" }>[\"path\"]>(\n path: Path,\n body: Extract<Endpoints, { path: Path; method: \"PUT\" }>[\"body\"],\n query?: Query<Path>,\n options?: APIRequestOptions,\n ) {\n return this.requester<\n Extract<Endpoints, { path: Path; method: \"PUT\" }>[\"res\"]\n >(\"PUT\", path, body, query, options);\n }\n\n async patch<Path extends Extract<Endpoints, { method: \"PATCH\" }>[\"path\"]>(\n path: Path,\n body: Extract<Endpoints, { path: Path; method: \"PATCH\" }>[\"body\"],\n query?: Query<Path>,\n options?: APIRequestOptions,\n ) {\n return this.requester<\n Extract<Endpoints, { path: Path; method: \"PATCH\" }>[\"res\"]\n >(\"PATCH\", path, body, query, options);\n }\n\n async delete<Path extends Extract<Endpoints, { method: \"DELETE\" }>[\"path\"]>(\n path: Path,\n query?: Query<Path>,\n options?: APIRequestOptions,\n ) {\n return this.requester<\n Extract<Endpoints, { path: Path; method: \"DELETE\" }>[\"res\"]\n >(\"DELETE\", path, undefined, query, options);\n }\n\n private async requester<T>(\n method: Options[\"method\"],\n path: string,\n body: unknown,\n query: Record<string, string | number | undefined> = {},\n options: APIRequestOptions = {},\n ) {\n const url = this.url(path, query);\n\n if (body !== undefined) {\n if (method === \"GET\") {\n throw new Error(\"Cannot send a GET request with a body\");\n }\n }\n\n const response: Response<APIResponse<T>> = await request<T>(url, {\n method,\n data: body,\n ...options,\n });\n\n // TODO: Add error catcher\n\n const result = response.data;\n\n if (!result.success) {\n throw new TonightPassAPIError<T>(response, result);\n }\n\n return result.data;\n }\n}\n","import { Client } from \"../rest\";\n\nexport function sdk<T>(builder: (client: Client) => T) {\n return builder;\n}\n","import { sdk } from \"./builder\";\n\nexport const health = sdk((client) => ({\n database: async () => client.get(\"/health/database\"),\n http: async () => client.get(\"/health/http\"),\n}));\n","import { sdk } from \"./builder\";\nimport { UpdateUserDto } from \"../rest\";\n\nexport const users = sdk((client) => ({\n getAll: async () => client.get(\"/users\"),\n get: async (id: string) => client.get(\"/users\", { id }),\n me: async () => client.get(\"/users/me\"),\n check: async (identifier: string) =>\n client.get(\"/check/:identifier\", { identifier }),\n update: async (id: string, data: UpdateUserDto) =>\n client.put(\"/users/:id\", data, { id }),\n}));\n","import { sdk } from \"./builder\";\nimport { Query } from \"../rest\";\n\nexport const careers = sdk((client) => ({\n categories: {\n getAll: async (query?: Query<\"/careers/categories\">) =>\n client.get(\"/careers/categories\", query),\n },\n employmentTypes: {\n getAll: async (query?: Query<\"/careers/employmentTypes\">) =>\n client.get(\"/careers/employmentTypes\", query),\n },\n jobs: {\n getAll: async (query?: Query<\"/careers/jobs\">) =>\n client.get(\"/careers/jobs\", query),\n get: async (id: number) => client.get(\"/careers/jobs/:id\", { id }),\n },\n offices: {\n getAll: async (query?: Query<\"/careers/offices\">) =>\n client.get(\"/careers/offices\", query),\n },\n}));\n","import { Client, ClientOptions } from \"./rest\";\nimport { health, users } from \"./sdk\";\nimport { careers } from \"./sdk/careers\";\n\nexport class TonightPass {\n public readonly client: Client;\n\n public readonly careers;\n public readonly health;\n public readonly users;\n\n constructor(options: ClientOptions) {\n this.client = new Client(options);\n\n this.careers = careers(this.client);\n this.health = health(this.client);\n this.users = users(this.client);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/constants/api.ts","../src/constants/regex.ts","../src/rest/dtos/index.ts","../src/rest/dtos/users/create-user.dto.ts","../src/rest/dtos/users/sign-in-user.dto.ts","../src/rest/dtos/users/update-user.dto.ts","../src/rest/request/request.ts","../src/utils/index.ts","../src/rest/types/event/ticket/index.ts","../src/rest/types/event/index.ts","../src/rest/types/organizations/index.ts","../src/rest/types/token/index.ts","../src/rest/types/users/index.ts","../src/rest/types/order/index.ts","../src/rest/types/index.ts","../src/rest/client.ts","../src/sdk/builder.ts","../src/sdk/health.ts","../src/sdk/users.ts","../src/sdk/careers.ts","../src/sdk/profiles.ts","../src/tonightpass.ts"],"names":["DEFAULT_API_URL","EMAIL_REGEX","PASSWORD_REGEX","NAME_REGEX","SLUG_REGEX","BCRYPT_HASH","PHONE_NUMBER_REGEX","IMAGE_URL_REGEX","CreateUserDto","SignInUserDto","Type","IsDateString","IsEmail","IsObject","IsOptional","IsPhoneNumber","IsString","IsUrl","Length","Matches","MaxLength","MinLength","ValidateNested","UpdateUserDto","__decorateClass","UpdateIdentifierDto","UpdateIdentityDto","axios","isBrowser","instance","data","request","url","options","response","error","EventTicketCategory","EventType","EventStyleType","OrganizationSocialType","OrganizationMemberRole","UserTokenType","UserRole","OrderStatus","Currency","Language","pathcat","TonightPassAPIError","Client","path","params","baseURL","query","body","method","result","sdk","builder","health","client","users","id","identifier","careers","profiles","username","TonightPass"],"mappings":"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","sourcesContent":["export const DEFAULT_API_URL = \"https://api.tonightpass.com\";\n","export const EMAIL_REGEX = /^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,4}$/;\n\n// checks if a password has at least one uppercase letter and a number or special character\nexport const PASSWORD_REGEX =\n /((?=.*\\d)|(?=.*\\W+))(?![.\\n])(?=.*[A-Z])(?=.*[a-z]).*$/;\n\n// checks if a string has only letters, numbers, spaces, apostrophes, dots and dashes\nexport const NAME_REGEX = /(^[\\p{L}\\d'\\\\.\\s\\\\-]*$)/u;\n\n// checks if a string is a valid slug, useful for usernames\nexport const SLUG_REGEX = /^[a-z\\d]+(?:(\\.|-|_)[a-z\\d]+)*$/;\n\n// validates if passwords are valid bcrypt hashes\nexport const BCRYPT_HASH = /\\$2[abxy]?\\$\\d{1,2}\\$[A-Za-z\\d\\\\./]{53}/;\n\nexport const PHONE_NUMBER_REGEX =\n /^\\s*(?:\\+?(\\d{1,3}))?([-. (]*(\\d{3})[-. )]*)?((\\d{3})[-. ]*(\\d{2,4})(?:[-.x ]*(\\d+))?)\\s*$/;\n\nexport const IMAGE_URL_REGEX =\n /(((http:\\/\\/www)|(http:\\/\\/)|(www))[-a-zA-Z0-9@:%_\\\\+.~#?&//=]+)\\.(jpg|jpeg|gif|png|bmp|tiff|tga|svg)/i;\n","import \"reflect-metadata\";\n\nexport * from \"./users\";\n","import { UserIdentifier, UserIdentityGender } from \"../../types\";\n\nexport class CreateUserDto {\n identifier: UserIdentifier;\n password: string;\n identity: CreateUserIdentituDto;\n addresses: Location[];\n}\n\nclass CreateUserIdentituDto {\n firstName: string;\n lastName: string;\n gender: UserIdentityGender;\n profilePictureUrl?: string;\n birthDate: Date;\n}\n","export class SignInUserDto {\n identifier: string;\n password: string;\n}\n","import { Type } from \"class-transformer\";\nimport {\n IsDateString,\n IsEmail,\n IsObject,\n IsOptional,\n IsPhoneNumber,\n IsString,\n IsUrl,\n Length,\n Matches,\n MaxLength,\n MinLength,\n ValidateNested,\n} from \"class-validator\";\n\nimport { NAME_REGEX } from \"../../../constants/regex\";\nimport { UserIdentifier, UserIdentity } from \"../../types\";\n\nexport class UpdateUserDto {\n @IsOptional()\n @IsObject()\n @ValidateNested()\n @Type(() => UpdateIdentifierDto)\n identifier?: UpdateIdentifierDto;\n\n @IsOptional()\n @IsObject()\n @ValidateNested()\n @Type(() => UpdateIdentityDto)\n identity?: UpdateIdentityDto;\n\n @IsOptional()\n @IsString()\n @MinLength(6)\n @MaxLength(130)\n password?: string;\n}\n\nclass UpdateIdentifierDto\n implements\n Partial<Pick<UserIdentifier, \"email\" | \"phoneNumber\" | \"username\">>\n{\n @IsOptional()\n @IsString()\n @IsEmail()\n email?: string;\n\n @IsOptional()\n @IsString()\n @IsPhoneNumber()\n phoneNumber?: string;\n\n @IsOptional()\n @IsString()\n @MinLength(3)\n username?: string;\n}\n\nclass UpdateIdentityDto\n implements\n Partial<\n Pick<\n UserIdentity,\n | \"firstName\"\n | \"lastName\"\n | \"displayName\"\n | \"description\"\n | \"profilePictureUrl\"\n | \"bannerUrl\"\n | \"gender\"\n | \"birthDate\"\n >\n >\n{\n @IsOptional()\n @IsString()\n @Length(2, 50)\n @Matches(NAME_REGEX, {\n message: \"First name must be composed of letters only\",\n })\n firstName?: string;\n\n @IsOptional()\n @IsString()\n @Length(2, 50)\n @Matches(NAME_REGEX, {\n message: \"Last name must be composed of letters only\",\n })\n lastName?: string;\n\n @IsOptional()\n @IsString()\n @Length(1, 32)\n displayName?: string;\n\n @IsOptional()\n @IsString()\n @Length(15, 500)\n description?: string;\n\n @IsOptional()\n @IsUrl()\n profilePictureUrl?: string | undefined;\n\n @IsOptional()\n @IsUrl()\n bannerUrl?: string | undefined;\n\n @IsOptional()\n gender?: string;\n\n @IsOptional()\n @IsDateString()\n birthDate?: Date;\n}\n","import axios, { Options, Response } from \"redaxios\";\n\nimport { isBrowser } from \"../../utils\";\nimport { APIResponse, ErroredAPIResponse } from \"../endpoints\";\n\nconst instance = axios.create({\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n ...(!isBrowser && { \"User-Agent\": \"tonightpass-api-client\" }),\n },\n responseType: \"json\",\n transformRequest: [\n function (data) {\n return JSON.stringify(data);\n },\n ],\n withCredentials: isBrowser,\n});\n\nexport interface APIRequestOptions extends Options {}\n\nexport const request = async <T>(url: string, options?: Options) => {\n const response = instance<APIResponse<T>>(url, { ...options })\n .then((response) => response)\n .catch((error: Response<ErroredAPIResponse>) => {\n throw error.data;\n });\n\n return response;\n};\n","export const isBrowser = typeof window !== \"undefined\";\n","import { Currency } from \"../..\";\n\nexport type EventTicket = {\n id: string;\n name: string;\n description?: string;\n price: number;\n displayPrice: number;\n quantity: number;\n type: EventTicketType;\n category: EventTicketCategory;\n currency: Currency;\n vatRate: number;\n externalId?: string;\n isVisible: boolean;\n isFeesIncluded: boolean;\n startAt: Date;\n endAt: Date;\n updatedAt: Date;\n createdAt: Date;\n};\n\nexport type EventTicketType = \"e-ticket\" | \"other\";\n\nexport enum EventTicketCategory {\n ENTRY = \"entry\",\n PACKAGE = \"package\",\n MEAL = \"meal\",\n DRINK = \"drink\",\n PARKING = \"parking\",\n ACCOMMODATION = \"accommodation\",\n CAMPING = \"camping\",\n LOCKER = \"locker\",\n SHUTTLE = \"shuttle\",\n OTHER = \"other\",\n}\n","import { EventTicket } from \"./ticket\";\nimport { Location } from \"..\";\nimport { Organization } from \"../organizations\";\n\nexport * from \"./ticket\";\n\nexport type Event = {\n title: string;\n description: string;\n slug: string;\n organization: Organization;\n type: EventType;\n public: boolean;\n flyers: string[];\n trailers: string[];\n location: Location;\n tickets: EventTicket[];\n styles: EventStyle[];\n startAt: Date;\n endAt: Date;\n updatedAt: Date;\n createdAt: Date;\n};\n\nexport enum EventType {\n Clubbing = \"clubbing\",\n Concert = \"concert\",\n Afterwork = \"afterwork\",\n DancingLunch = \"dancing_lunch\",\n Diner = \"diner\",\n Garden = \"garden\",\n AfterBeach = \"after_beach\",\n Festival = \"festival\",\n Spectacle = \"spectacle\",\n Cruise = \"cruise\",\n OutsideAnimation = \"outside_animation\",\n Sport = \"sport\",\n Match = \"match\",\n Seminar = \"seminar\",\n Conference = \"conference\",\n WellnessDay = \"wellness_day\",\n Workshop = \"workshop\",\n TradeFair = \"trade_fair\",\n ConsumerShow = \"consumer_show\",\n Membership = \"membership\",\n}\n\nexport type EventStyle = {\n type: EventStyleType;\n emoji: string;\n name: string;\n};\n\nexport enum EventStyleType {\n Music = \"music\",\n Dress = \"dress\",\n Sport = \"sport\",\n Food = \"food\",\n Art = \"art\",\n}\n","import { Location, Profile, ProfileMetadata } from \"..\";\nimport { Event } from \"../event\";\nimport { EventTicket } from \"../event/ticket\";\nimport { User } from \"../users\";\n\nexport type Organization = {\n id: string;\n slug: string;\n identity: OrganizationIdentity;\n members: OrganizationMember[];\n location?: Location;\n events: Event[];\n savedTickets: EventTicket[];\n verified: boolean;\n updatedAt: Date;\n createdAt: Date;\n};\n\nexport type OrganizationIdentity = Profile & {\n socialLinks: OrganizationSocialLink[];\n\n metadata: ProfileMetadata & {\n eventsCount: number;\n viewsCount: number;\n membersCount: number;\n };\n};\n\nexport type OrganizationSocialLink = {\n type: OrganizationSocialType;\n url: string;\n};\n\nexport enum OrganizationSocialType {\n Facebook = \"facebook\",\n Twitter = \"twitter\",\n Instagram = \"instagram\",\n Linkedin = \"linkedin\",\n Youtube = \"youtube\",\n Website = \"website\",\n}\n\nexport type OrganizationMember = {\n user: User;\n role: OrganizationMemberRole;\n createdAt: Date;\n};\n\nexport enum OrganizationMemberRole {\n EMPLOYEE = 0,\n MANAGER = 1,\n ADMINISTRATOR = 2,\n OWNER = 3,\n}\n","export type UserToken = {\n id: string;\n type: UserTokenType;\n value: string;\n createdAt: Date;\n expiresAt: Date;\n};\n\nexport enum UserTokenType {\n Authentication = \"authentication\",\n OrganizationInvite = \"organization_invite\",\n PasswordRecovery = \"password_recovery\",\n EmailValidation = \"email_validation\",\n PhoneValidation = \"phone_validation\",\n}\n","import { Currency, Language, Location, Profile, ProfileMetadata } from \"..\";\nimport { UpdateUserDto } from \"../../dtos\";\nimport { Endpoint } from \"../../endpoints\";\n\nexport type User = {\n id: string;\n identifier: UserIdentifier;\n password: string;\n identity: UserIdentity;\n role: UserRole;\n addresses: Location[];\n preferences: UserPreferences;\n connections: UserConnection[];\n verified: boolean;\n updatedAt: Date;\n createdAt: Date;\n};\n\nexport type UserIdentifier = {\n email?: string;\n phoneNumber?: string;\n username: string;\n\n [key: string]: string | undefined;\n};\n\nexport type UserIdentity = Profile & {\n firstName: string;\n lastName: string;\n fullName: string;\n gender: UserIdentityGender;\n birthDate: Date;\n\n metadata: ProfileMetadata & {\n followingCount: number;\n hasPassPlus: boolean;\n idValid: boolean;\n };\n};\n\nexport enum UserRole {\n USER = 0,\n DEVELOPER = 8,\n ADMINISTRATOR = 10,\n}\n\nexport type UserIdentityGender =\n | \"male\"\n | \"female\"\n | \"non-binary\"\n | \"gender-fluid\"\n | \"neutral\"\n | \"other\"\n | string;\n\nexport type UserPreferences = {\n language: Language;\n currency: Currency;\n notifications: {\n email: {\n newsletter: boolean;\n message: boolean;\n };\n push: {\n message: boolean;\n };\n };\n};\n\nexport type UserConnection = {\n ip: string;\n os: UserConnectionOS;\n device: UserConnectionDevice;\n client: UserConnectionClient;\n updatedAt: Date;\n createdAt: Date;\n};\n\nexport type UserConnectionOS = {\n name: string;\n version: string;\n};\n\nexport type UserConnectionDevice = {\n type: string;\n brand: string;\n};\n\nexport type UserConnectionClient = {\n name: string;\n version: string;\n};\n\nexport type UserEndpoints =\n | Endpoint<\"GET\", \"/users\", User[]>\n | Endpoint<\"GET\", \"/users/:id\", User, { id: string }>\n | Endpoint<\"GET\", \"/users/me\", User>\n | Endpoint<\n \"GET\",\n \"/check/:identifier\",\n UserIdentifier,\n { identifier: string }\n >\n | Endpoint<\"PUT\", \"/users/:id\", User, UpdateUserDto>;\n","import { Currency } from \"..\";\nimport { Event, EventTicket } from \"../event\";\nimport { User } from \"../users\";\n\nexport enum OrderStatus {\n Created = \"created\",\n Cancelled = \"cancelled\",\n Completed = \"completed\",\n Pending = \"pending\",\n Confirmed = \"confirmed\",\n Declined = \"declined\",\n Refunded = \"refunded\",\n PartiallyRefunded = \"partially_refunded\",\n Expired = \"expired\",\n}\n\nexport type OrderItem = {\n id: string;\n ticket: EventTicket;\n isUsed: boolean;\n updatedAt: Date;\n createdAt: Date;\n};\n\nexport type Order = {\n id: string;\n owner: User;\n members: User[];\n status: OrderStatus;\n event: Event;\n items: OrderItem[];\n promoCode?: PromoCode;\n total: number;\n currency: Currency;\n createdAt: Date;\n};\n\nexport type PromoCode = {\n id: string;\n code: string;\n used: number;\n discount: number;\n isActive: boolean;\n expirationAt: Date;\n createdAt: Date;\n};\n","export * from \"./careers\";\nexport * from \"./event\";\nexport * from \"./health\";\nexport * from \"./organizations\";\nexport * from \"./token\";\nexport * from \"./users\";\nexport * from \"./order\";\nexport * from \"./profiles\";\n\nexport type Location = {\n name?: string;\n address: string;\n zipCode: string;\n city: string;\n country: string;\n geometry?: {\n latitude: number;\n longitude: number;\n };\n};\n\n// Currency\nexport enum Currency {\n EUR = \"EUR\",\n USD = \"USD\",\n GBP = \"GBP\",\n}\n\n// I18n\nexport enum Language {\n FR = \"fr\",\n EN = \"en\",\n}\n","import { ParamValue, pathcat } from \"pathcat\";\nimport { Options, Response } from \"redaxios\";\n\nimport { APIResponse, Endpoints, ErroredAPIResponse } from \"./endpoints\";\nimport { APIRequestOptions, request } from \"./request\";\nimport { DEFAULT_API_URL } from \"../constants\";\n\nexport type ExtractRouteParams<T extends string> = string extends T\n ? Record<string, string | number | undefined>\n : T extends `${string}:${infer Param}/${infer Rest}`\n ? { [k in Param | keyof ExtractRouteParams<Rest>]: string | number }\n : T extends `${string}:${infer Param}`\n ? { [k in Param]: string | number }\n : object;\n\nexport type ExtractEndpoint<\n Method extends string,\n Path extends string,\n> = Extract<Endpoints, { path: Path; method: Method }>;\n\nexport type PathsFor<M extends Options[\"method\"]> = Extract<\n Endpoints,\n { method: M }\n>[\"path\"];\n\nexport type Query<Path extends string> = ExtractRouteParams<Path> &\n Record<string, string | number | undefined>;\n\nexport class TonightPassAPIError<T> extends Error {\n public readonly status: number;\n\n constructor(\n public readonly response: Response<APIResponse<T>>,\n public readonly data: ErroredAPIResponse,\n ) {\n super(data.message);\n\n this.status = response.status;\n }\n}\n\nexport interface ClientOptions {\n readonly baseURL: string;\n}\n\nexport class Client {\n private options;\n public readonly url;\n\n constructor(options: ClientOptions) {\n this.options = options;\n this.url = (path: string, params: Record<string, ParamValue>) => {\n const baseURL = this.options.baseURL || DEFAULT_API_URL;\n return pathcat(baseURL, path, params);\n };\n }\n\n setOptions(options: ClientOptions) {\n this.options = options;\n }\n\n async get<Path extends PathsFor<\"GET\">>(\n path: Path,\n query?: Query<Path>,\n options?: APIRequestOptions,\n ) {\n return this.requester<\n Extract<Endpoints, { path: Path; method: \"GET\" }>[\"res\"]\n >(\"GET\", path, undefined, query, options);\n }\n\n async post<Path extends Extract<Endpoints, { method: \"POST\" }>[\"path\"]>(\n path: Path,\n body: Extract<Endpoints, { path: Path; method: \"POST\" }>[\"body\"],\n query?: Query<Path>,\n options?: APIRequestOptions,\n ) {\n return this.requester<\n Extract<Endpoints, { path: Path; method: \"POST\" }>[\"res\"]\n >(\"POST\", path, body, query, options);\n }\n\n async put<Path extends Extract<Endpoints, { method: \"PUT\" }>[\"path\"]>(\n path: Path,\n body: Extract<Endpoints, { path: Path; method: \"PUT\" }>[\"body\"],\n query?: Query<Path>,\n options?: APIRequestOptions,\n ) {\n return this.requester<\n Extract<Endpoints, { path: Path; method: \"PUT\" }>[\"res\"]\n >(\"PUT\", path, body, query, options);\n }\n\n async patch<Path extends Extract<Endpoints, { method: \"PATCH\" }>[\"path\"]>(\n path: Path,\n body: Extract<Endpoints, { path: Path; method: \"PATCH\" }>[\"body\"],\n query?: Query<Path>,\n options?: APIRequestOptions,\n ) {\n return this.requester<\n Extract<Endpoints, { path: Path; method: \"PATCH\" }>[\"res\"]\n >(\"PATCH\", path, body, query, options);\n }\n\n async delete<Path extends Extract<Endpoints, { method: \"DELETE\" }>[\"path\"]>(\n path: Path,\n query?: Query<Path>,\n options?: APIRequestOptions,\n ) {\n return this.requester<\n Extract<Endpoints, { path: Path; method: \"DELETE\" }>[\"res\"]\n >(\"DELETE\", path, undefined, query, options);\n }\n\n private async requester<T>(\n method: Options[\"method\"],\n path: string,\n body: unknown,\n query: Record<string, string | number | undefined> = {},\n options: APIRequestOptions = {},\n ) {\n const url = this.url(path, query);\n\n if (body !== undefined) {\n if (method === \"GET\") {\n throw new Error(\"Cannot send a GET request with a body\");\n }\n }\n\n const response: Response<APIResponse<T>> = await request<T>(url, {\n method,\n data: body,\n ...options,\n });\n\n const result = response.data;\n\n if (!result.success) {\n throw new TonightPassAPIError<T>(response, result);\n }\n\n return result.data;\n }\n}\n","import { Client } from \"../rest\";\n\nexport function sdk<T>(builder: (client: Client) => T) {\n return builder;\n}\n","import { sdk } from \"./builder\";\n\nexport const health = sdk((client) => ({\n database: async () => client.get(\"/health/database\"),\n http: async () => client.get(\"/health/http\"),\n}));\n","import { sdk } from \"./builder\";\nimport { UpdateUserDto } from \"../rest\";\n\nexport const users = sdk((client) => ({\n getAll: async () => client.get(\"/users\"),\n get: async (id: string) => client.get(\"/users\", { id }),\n me: async () => client.get(\"/users/me\"),\n check: async (identifier: string) =>\n client.get(\"/check/:identifier\", { identifier }),\n update: async (id: string, data: UpdateUserDto) =>\n client.put(\"/users/:id\", data, { id }),\n}));\n","import { sdk } from \"./builder\";\nimport { Query } from \"../rest\";\n\nexport const careers = sdk((client) => ({\n categories: {\n getAll: async (query?: Query<\"/careers/categories\">) =>\n client.get(\"/careers/categories\", query),\n },\n employmentTypes: {\n getAll: async (query?: Query<\"/careers/employmentTypes\">) =>\n client.get(\"/careers/employmentTypes\", query),\n },\n jobs: {\n getAll: async (query?: Query<\"/careers/jobs\">) =>\n client.get(\"/careers/jobs\", query),\n get: async (id: number) => client.get(\"/careers/jobs/:id\", { id }),\n },\n offices: {\n getAll: async (query?: Query<\"/careers/offices\">) =>\n client.get(\"/careers/offices\", query),\n },\n}));\n","import { sdk } from \"./builder\";\n\nexport const profiles = sdk((client) => ({\n get: async (username: string) =>\n client.get(\"/profiles/:username\", { username }),\n}));\n","import { Client, ClientOptions } from \"./rest\";\nimport { health, users } from \"./sdk\";\nimport { careers } from \"./sdk/careers\";\nimport { profiles } from \"./sdk/profiles\";\n\nexport class TonightPass {\n public readonly client: Client;\n\n public readonly careers;\n public readonly health;\n public readonly profiles;\n public readonly users;\n\n constructor(options: ClientOptions) {\n this.client = new Client(options);\n\n this.careers = careers(this.client);\n this.health = health(this.client);\n this.profiles = profiles(this.client);\n this.users = users(this.client);\n }\n}\n"]}
package/dist/index.mjs CHANGED
@@ -1,11 +1,11 @@
1
1
  import 'reflect-metadata';
2
2
  import { Type } from 'class-transformer';
3
3
  import { IsOptional, IsObject, ValidateNested, IsString, MinLength, MaxLength, IsEmail, IsPhoneNumber, Length, Matches, IsUrl, IsDateString } from 'class-validator';
4
- import z from 'redaxios';
4
+ import H from 'redaxios';
5
5
  import { pathcat } from 'pathcat';
6
6
 
7
- var $=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var a=(r,e,s,t)=>{for(var n=t>1?void 0:t?j(e,s):e,i=r.length-1,d;i>=0;i--)(d=r[i])&&(n=(t?d(e,s,n):d(n))||n);return t&&n&&$(e,s,n),n};var R="https://api.tonightpass.com";var oe=/^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$/,ie=/((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$/,E=/(^[\p{L}\d'\\.\s\\-]*$)/u,ae=/^[a-z\d]+(?:(\.|-|_)[a-z\d]+)*$/,pe=/\$2[abxy]?\$\d{1,2}\$[A-Za-z\d\\./]{53}/,de=/^\s*(?:\+?(\d{1,3}))?([-. (]*(\d{3})[-. )]*)?((\d{3})[-. ]*(\d{2,4})(?:[-.x ]*(\d+))?)\s*$/,me=/(((http:\/\/www)|(http:\/\/)|(www))[-a-zA-Z0-9@:%_\\+.~#?&//=]+)\.(jpg|jpeg|gif|png|bmp|tiff|tga|svg)/i;var I=class{identifier;password;identity;addresses};var U=class{identifier;password};var h=class{identifier;identity;password};a([IsOptional(),IsObject(),ValidateNested(),Type(()=>f)],h.prototype,"identifier",2),a([IsOptional(),IsObject(),ValidateNested(),Type(()=>m)],h.prototype,"identity",2),a([IsOptional(),IsString(),MinLength(6),MaxLength(130)],h.prototype,"password",2);var f=class{email;phoneNumber;username};a([IsOptional(),IsString(),IsEmail()],f.prototype,"email",2),a([IsOptional(),IsString(),IsPhoneNumber()],f.prototype,"phoneNumber",2),a([IsOptional(),IsString(),MinLength(3)],f.prototype,"username",2);var m=class{firstName;lastName;displayName;description;profilePictureUrl;bannerUrl;gender;birthDate};a([IsOptional(),IsString(),Length(2,50),Matches(E,{message:"First name must be composed of letters only"})],m.prototype,"firstName",2),a([IsOptional(),IsString(),Length(2,50),Matches(E,{message:"Last name must be composed of letters only"})],m.prototype,"lastName",2),a([IsOptional(),IsString(),Length(1,32)],m.prototype,"displayName",2),a([IsOptional(),IsString(),Length(15,500)],m.prototype,"description",2),a([IsOptional(),IsUrl()],m.prototype,"profilePictureUrl",2),a([IsOptional(),IsUrl()],m.prototype,"bannerUrl",2),a([IsOptional()],m.prototype,"gender",2),a([IsOptional(),IsDateString()],m.prototype,"birthDate",2);var k=typeof window<"u";var H=z.create({headers:{"Content-Type":"application/json",Accept:"application/json",...!k&&{"User-Agent":"tonightpass-api-client"}},responseType:"json",transformRequest:[function(r){return JSON.stringify(r)}]}),G=async(r,e)=>H(r,{...e}).then(t=>t).catch(t=>{throw t});var V=(c=>(c.ENTRY="entry",c.PACKAGE="package",c.MEAL="meal",c.DRINK="drink",c.PARKING="parking",c.ACCOMMODATION="accommodation",c.CAMPING="camping",c.LOCKER="locker",c.SHUTTLE="shuttle",c.OTHER="other",c))(V||{});var B=(o=>(o.Clubbing="clubbing",o.Concert="concert",o.Afterwork="afterwork",o.DancingLunch="dancing_lunch",o.Diner="diner",o.Garden="garden",o.AfterBeach="after_beach",o.Festival="festival",o.Spectacle="spectacle",o.Cruise="cruise",o.OutsideAnimation="outside_animation",o.Sport="sport",o.Match="match",o.Seminar="seminar",o.Conference="conference",o.WellnessDay="wellness_day",o.Workshop="workshop",o.TradeFair="trade_fair",o.ConsumerShow="consumer_show",o.Membership="membership",o))(B||{}),X=(i=>(i.Music="music",i.Dress="dress",i.Sport="sport",i.Food="food",i.Art="art",i))(X||{});var W=(d=>(d.Facebook="facebook",d.Twitter="twitter",d.Instagram="instagram",d.Linkedin="linkedin",d.Youtube="youtube",d.Website="website",d))(W||{}),K=(n=>(n[n.EMPLOYEE=0]="EMPLOYEE",n[n.MANAGER=1]="MANAGER",n[n.ADMINISTRATOR=2]="ADMINISTRATOR",n[n.OWNER=3]="OWNER",n))(K||{});var Y=(i=>(i.Authentication="authentication",i.OrganizationInvite="organization_invite",i.PasswordRecovery="password_recovery",i.EmailValidation="email_validation",i.PhoneValidation="phone_validation",i))(Y||{});var Z=(t=>(t[t.USER=0]="USER",t[t.DEVELOPER=8]="DEVELOPER",t[t.ADMINISTRATOR=10]="ADMINISTRATOR",t))(Z||{});var J=(u=>(u.Created="created",u.Cancelled="cancelled",u.Completed="completed",u.Pending="pending",u.Confirmed="confirmed",u.Declined="declined",u.Refunded="refunded",u.PartiallyRefunded="partially_refunded",u.Expired="expired",u))(J||{});var ee=(t=>(t.EUR="EUR",t.USD="USD",t.GBP="GBP",t))(ee||{}),te=(s=>(s.FR="fr",s.EN="en",s))(te||{});var b=class extends Error{constructor(s,t){super(t.message);this.response=s;this.data=t;this.status=s.status;}status},x=class{options;url;constructor(e){this.options=e,this.url=(s,t)=>{let n=this.options.baseURL||R;return pathcat(n,s,t)};}setOptions(e){this.options=e;}async get(e,s,t){return this.requester("GET",e,void 0,s,t)}async post(e,s,t,n){return this.requester("POST",e,s,t,n)}async put(e,s,t,n){return this.requester("PUT",e,s,t,n)}async patch(e,s,t,n){return this.requester("PATCH",e,s,t,n)}async delete(e,s,t){return this.requester("DELETE",e,void 0,s,t)}async requester(e,s,t,n={},i={}){let d=this.url(s,n);if(t!==void 0&&e==="GET")throw new Error("Cannot send a GET request with a body");let A=await G(d,{method:e,data:t,...i}),P=A.data;if(!P.success)throw new b(A,P);return P.data}};function y(r){return r}var _=r=>({database:async()=>r.get("/health/database"),http:async()=>r.get("/health/http")});var T=r=>({getAll:async()=>r.get("/users"),get:async e=>r.get("/users",{id:e}),me:async()=>r.get("/users/me"),check:async e=>r.get("/check/:identifier",{identifier:e}),update:async(e,s)=>r.put("/users/:id",s,{id:e})});var M=r=>({categories:{getAll:async e=>r.get("/careers/categories",e)},employmentTypes:{getAll:async e=>r.get("/careers/employmentTypes",e)},jobs:{getAll:async e=>r.get("/careers/jobs",e),get:async e=>r.get("/careers/jobs/:id",{id:e})},offices:{getAll:async e=>r.get("/careers/offices",e)}});var q=class{client;careers;health;users;constructor(e){this.client=new x(e),this.careers=M(this.client),this.health=_(this.client),this.users=T(this.client);}};
7
+ var j=Object.defineProperty;var F=Object.getOwnPropertyDescriptor;var a=(r,e,n,t)=>{for(var s=t>1?void 0:t?F(e,n):e,i=r.length-1,d;i>=0;i--)(d=r[i])&&(s=(t?d(e,n,s):d(s))||s);return t&&s&&j(e,n,s),s};var I="https://api.tonightpass.com";var ie=/^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$/,ae=/((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$/,b=/(^[\p{L}\d'\\.\s\\-]*$)/u,pe=/^[a-z\d]+(?:(\.|-|_)[a-z\d]+)*$/,de=/\$2[abxy]?\$\d{1,2}\$[A-Za-z\d\\./]{53}/,me=/^\s*(?:\+?(\d{1,3}))?([-. (]*(\d{3})[-. )]*)?((\d{3})[-. ]*(\d{2,4})(?:[-.x ]*(\d+))?)\s*$/,ce=/(((http:\/\/www)|(http:\/\/)|(www))[-a-zA-Z0-9@:%_\\+.~#?&//=]+)\.(jpg|jpeg|gif|png|bmp|tiff|tga|svg)/i;var U=class{identifier;password;identity;addresses};var C=class{identifier;password};var h=class{identifier;identity;password};a([IsOptional(),IsObject(),ValidateNested(),Type(()=>f)],h.prototype,"identifier",2),a([IsOptional(),IsObject(),ValidateNested(),Type(()=>m)],h.prototype,"identity",2),a([IsOptional(),IsString(),MinLength(6),MaxLength(130)],h.prototype,"password",2);var f=class{email;phoneNumber;username};a([IsOptional(),IsString(),IsEmail()],f.prototype,"email",2),a([IsOptional(),IsString(),IsPhoneNumber()],f.prototype,"phoneNumber",2),a([IsOptional(),IsString(),MinLength(3)],f.prototype,"username",2);var m=class{firstName;lastName;displayName;description;profilePictureUrl;bannerUrl;gender;birthDate};a([IsOptional(),IsString(),Length(2,50),Matches(b,{message:"First name must be composed of letters only"})],m.prototype,"firstName",2),a([IsOptional(),IsString(),Length(2,50),Matches(b,{message:"Last name must be composed of letters only"})],m.prototype,"lastName",2),a([IsOptional(),IsString(),Length(1,32)],m.prototype,"displayName",2),a([IsOptional(),IsString(),Length(15,500)],m.prototype,"description",2),a([IsOptional(),IsUrl()],m.prototype,"profilePictureUrl",2),a([IsOptional(),IsUrl()],m.prototype,"bannerUrl",2),a([IsOptional()],m.prototype,"gender",2),a([IsOptional(),IsDateString()],m.prototype,"birthDate",2);var y=typeof window<"u";var V=H.create({headers:{"Content-Type":"application/json",Accept:"application/json",...!y&&{"User-Agent":"tonightpass-api-client"}},responseType:"json",transformRequest:[function(r){return JSON.stringify(r)}],withCredentials:y}),G=async(r,e)=>V(r,{...e}).then(t=>t).catch(t=>{throw t.data});var B=(c=>(c.ENTRY="entry",c.PACKAGE="package",c.MEAL="meal",c.DRINK="drink",c.PARKING="parking",c.ACCOMMODATION="accommodation",c.CAMPING="camping",c.LOCKER="locker",c.SHUTTLE="shuttle",c.OTHER="other",c))(B||{});var X=(o=>(o.Clubbing="clubbing",o.Concert="concert",o.Afterwork="afterwork",o.DancingLunch="dancing_lunch",o.Diner="diner",o.Garden="garden",o.AfterBeach="after_beach",o.Festival="festival",o.Spectacle="spectacle",o.Cruise="cruise",o.OutsideAnimation="outside_animation",o.Sport="sport",o.Match="match",o.Seminar="seminar",o.Conference="conference",o.WellnessDay="wellness_day",o.Workshop="workshop",o.TradeFair="trade_fair",o.ConsumerShow="consumer_show",o.Membership="membership",o))(X||{}),W=(i=>(i.Music="music",i.Dress="dress",i.Sport="sport",i.Food="food",i.Art="art",i))(W||{});var K=(d=>(d.Facebook="facebook",d.Twitter="twitter",d.Instagram="instagram",d.Linkedin="linkedin",d.Youtube="youtube",d.Website="website",d))(K||{}),Y=(s=>(s[s.EMPLOYEE=0]="EMPLOYEE",s[s.MANAGER=1]="MANAGER",s[s.ADMINISTRATOR=2]="ADMINISTRATOR",s[s.OWNER=3]="OWNER",s))(Y||{});var Z=(i=>(i.Authentication="authentication",i.OrganizationInvite="organization_invite",i.PasswordRecovery="password_recovery",i.EmailValidation="email_validation",i.PhoneValidation="phone_validation",i))(Z||{});var J=(t=>(t[t.USER=0]="USER",t[t.DEVELOPER=8]="DEVELOPER",t[t.ADMINISTRATOR=10]="ADMINISTRATOR",t))(J||{});var ee=(u=>(u.Created="created",u.Cancelled="cancelled",u.Completed="completed",u.Pending="pending",u.Confirmed="confirmed",u.Declined="declined",u.Refunded="refunded",u.PartiallyRefunded="partially_refunded",u.Expired="expired",u))(ee||{});var te=(t=>(t.EUR="EUR",t.USD="USD",t.GBP="GBP",t))(te||{}),re=(n=>(n.FR="fr",n.EN="en",n))(re||{});var A=class extends Error{constructor(n,t){super(t.message);this.response=n;this.data=t;this.status=n.status;}status},x=class{options;url;constructor(e){this.options=e,this.url=(n,t)=>{let s=this.options.baseURL||I;return pathcat(s,n,t)};}setOptions(e){this.options=e;}async get(e,n,t){return this.requester("GET",e,void 0,n,t)}async post(e,n,t,s){return this.requester("POST",e,n,t,s)}async put(e,n,t,s){return this.requester("PUT",e,n,t,s)}async patch(e,n,t,s){return this.requester("PATCH",e,n,t,s)}async delete(e,n,t){return this.requester("DELETE",e,void 0,n,t)}async requester(e,n,t,s={},i={}){let d=this.url(n,s);if(t!==void 0&&e==="GET")throw new Error("Cannot send a GET request with a body");let R=await G(d,{method:e,data:t,...i}),E=R.data;if(!E.success)throw new A(R,E);return E.data}};function P(r){return r}var _=r=>({database:async()=>r.get("/health/database"),http:async()=>r.get("/health/http")});var T=r=>({getAll:async()=>r.get("/users"),get:async e=>r.get("/users",{id:e}),me:async()=>r.get("/users/me"),check:async e=>r.get("/check/:identifier",{identifier:e}),update:async(e,n)=>r.put("/users/:id",n,{id:e})});var M=r=>({categories:{getAll:async e=>r.get("/careers/categories",e)},employmentTypes:{getAll:async e=>r.get("/careers/employmentTypes",e)},jobs:{getAll:async e=>r.get("/careers/jobs",e),get:async e=>r.get("/careers/jobs/:id",{id:e})},offices:{getAll:async e=>r.get("/careers/offices",e)}});var q=r=>({get:async e=>r.get("/profiles/:username",{username:e})});var $=class{client;careers;health;profiles;users;constructor(e){this.client=new x(e),this.careers=M(this.client),this.health=_(this.client),this.profiles=q(this.client),this.users=T(this.client);}};
8
8
 
9
- export { pe as BCRYPT_HASH, x as Client, I as CreateUserDto, ee as Currency, R as DEFAULT_API_URL, oe as EMAIL_REGEX, X as EventStyleType, V as EventTicketCategory, B as EventType, me as IMAGE_URL_REGEX, te as Language, E as NAME_REGEX, J as OrderStatus, K as OrganizationMemberRole, W as OrganizationSocialType, ie as PASSWORD_REGEX, de as PHONE_NUMBER_REGEX, ae as SLUG_REGEX, U as SignInUserDto, q as TonightPass, b as TonightPassAPIError, h as UpdateUserDto, Z as UserRole, Y as UserTokenType, _ as health, k as isBrowser, G as request, y as sdk, T as users };
9
+ export { de as BCRYPT_HASH, x as Client, U as CreateUserDto, te as Currency, I as DEFAULT_API_URL, ie as EMAIL_REGEX, W as EventStyleType, B as EventTicketCategory, X as EventType, ce as IMAGE_URL_REGEX, re as Language, b as NAME_REGEX, ee as OrderStatus, Y as OrganizationMemberRole, K as OrganizationSocialType, ae as PASSWORD_REGEX, me as PHONE_NUMBER_REGEX, pe as SLUG_REGEX, C as SignInUserDto, $ as TonightPass, A as TonightPassAPIError, h as UpdateUserDto, J as UserRole, Z as UserTokenType, _ as health, y as isBrowser, G as request, P as sdk, T as users };
10
10
  //# sourceMappingURL=out.js.map
11
11
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/constants/api.ts","../src/constants/regex.ts","../src/rest/dtos/index.ts","../src/rest/dtos/users/create-user.dto.ts","../src/rest/dtos/users/sign-in-user.dto.ts","../src/rest/dtos/users/update-user.dto.ts","../src/rest/request/request.ts","../src/utils/index.ts","../src/rest/types/event/ticket/index.ts","../src/rest/types/event/index.ts","../src/rest/types/organizations/index.ts","../src/rest/types/token/index.ts","../src/rest/types/users/index.ts","../src/rest/types/order/index.ts","../src/rest/types/index.ts","../src/rest/client.ts","../src/sdk/builder.ts","../src/sdk/health.ts","../src/sdk/users.ts","../src/sdk/careers.ts","../src/tonightpass.ts"],"names":["DEFAULT_API_URL","EMAIL_REGEX","PASSWORD_REGEX","NAME_REGEX","SLUG_REGEX","BCRYPT_HASH","PHONE_NUMBER_REGEX","IMAGE_URL_REGEX","CreateUserDto","SignInUserDto","Type","IsDateString","IsEmail","IsObject","IsOptional","IsPhoneNumber","IsString","IsUrl","Length","Matches","MaxLength","MinLength","ValidateNested","UpdateUserDto","__decorateClass","UpdateIdentifierDto","UpdateIdentityDto","axios","isBrowser","instance","data","request","url","options","response","error","EventTicketCategory","EventType","EventStyleType","OrganizationSocialType","OrganizationMemberRole","UserTokenType","UserRole","OrderStatus","Currency","Language","pathcat","TonightPassAPIError","Client","path","params","baseURL","query","body","method","result","sdk","builder","health","client","users","id","identifier","careers","TonightPass"],"mappings":"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","sourcesContent":["export const DEFAULT_API_URL = \"https://api.tonightpass.com\";\n","export const EMAIL_REGEX = /^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,4}$/;\n\n// checks if a password has at least one uppercase letter and a number or special character\nexport const PASSWORD_REGEX =\n /((?=.*\\d)|(?=.*\\W+))(?![.\\n])(?=.*[A-Z])(?=.*[a-z]).*$/;\n\n// checks if a string has only letters, numbers, spaces, apostrophes, dots and dashes\nexport const NAME_REGEX = /(^[\\p{L}\\d'\\\\.\\s\\\\-]*$)/u;\n\n// checks if a string is a valid slug, useful for usernames\nexport const SLUG_REGEX = /^[a-z\\d]+(?:(\\.|-|_)[a-z\\d]+)*$/;\n\n// validates if passwords are valid bcrypt hashes\nexport const BCRYPT_HASH = /\\$2[abxy]?\\$\\d{1,2}\\$[A-Za-z\\d\\\\./]{53}/;\n\nexport const PHONE_NUMBER_REGEX =\n /^\\s*(?:\\+?(\\d{1,3}))?([-. (]*(\\d{3})[-. )]*)?((\\d{3})[-. ]*(\\d{2,4})(?:[-.x ]*(\\d+))?)\\s*$/;\n\nexport const IMAGE_URL_REGEX =\n /(((http:\\/\\/www)|(http:\\/\\/)|(www))[-a-zA-Z0-9@:%_\\\\+.~#?&//=]+)\\.(jpg|jpeg|gif|png|bmp|tiff|tga|svg)/i;\n","import \"reflect-metadata\";\n\nexport * from \"./users\";\n","import { UserIdentifier, UserIdentityGender } from \"../../types\";\n\nexport class CreateUserDto {\n identifier: UserIdentifier;\n password: string;\n identity: CreateUserIdentituDto;\n addresses: Location[];\n}\n\nclass CreateUserIdentituDto {\n firstName: string;\n lastName: string;\n gender: UserIdentityGender;\n profilePictureUrl?: string;\n birthDate: Date;\n}\n","export class SignInUserDto {\n identifier: string;\n password: string;\n}\n","import { Type } from \"class-transformer\";\nimport {\n IsDateString,\n IsEmail,\n IsObject,\n IsOptional,\n IsPhoneNumber,\n IsString,\n IsUrl,\n Length,\n Matches,\n MaxLength,\n MinLength,\n ValidateNested,\n} from \"class-validator\";\n\nimport { NAME_REGEX } from \"../../../constants/regex\";\nimport { UserIdentifier, UserIdentity } from \"../../types\";\n\nexport class UpdateUserDto {\n @IsOptional()\n @IsObject()\n @ValidateNested()\n @Type(() => UpdateIdentifierDto)\n identifier?: UpdateIdentifierDto;\n\n @IsOptional()\n @IsObject()\n @ValidateNested()\n @Type(() => UpdateIdentityDto)\n identity?: UpdateIdentityDto;\n\n @IsOptional()\n @IsString()\n @MinLength(6)\n @MaxLength(130)\n password?: string;\n}\n\nclass UpdateIdentifierDto\n implements\n Partial<Pick<UserIdentifier, \"email\" | \"phoneNumber\" | \"username\">>\n{\n @IsOptional()\n @IsString()\n @IsEmail()\n email?: string;\n\n @IsOptional()\n @IsString()\n @IsPhoneNumber()\n phoneNumber?: string;\n\n @IsOptional()\n @IsString()\n @MinLength(3)\n username?: string;\n}\n\nclass UpdateIdentityDto\n implements\n Partial<\n Pick<\n UserIdentity,\n | \"firstName\"\n | \"lastName\"\n | \"displayName\"\n | \"description\"\n | \"profilePictureUrl\"\n | \"bannerUrl\"\n | \"gender\"\n | \"birthDate\"\n >\n >\n{\n @IsOptional()\n @IsString()\n @Length(2, 50)\n @Matches(NAME_REGEX, {\n message: \"First name must be composed of letters only\",\n })\n firstName?: string;\n\n @IsOptional()\n @IsString()\n @Length(2, 50)\n @Matches(NAME_REGEX, {\n message: \"Last name must be composed of letters only\",\n })\n lastName?: string;\n\n @IsOptional()\n @IsString()\n @Length(1, 32)\n displayName?: string;\n\n @IsOptional()\n @IsString()\n @Length(15, 500)\n description?: string;\n\n @IsOptional()\n @IsUrl()\n profilePictureUrl?: string | undefined;\n\n @IsOptional()\n @IsUrl()\n bannerUrl?: string | undefined;\n\n @IsOptional()\n gender?: string;\n\n @IsOptional()\n @IsDateString()\n birthDate?: Date;\n}\n","import axios, { Options } from \"redaxios\";\n\nimport { isBrowser } from \"../../utils\";\nimport { APIResponse } from \"../endpoints\";\n\nconst instance = axios.create({\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n ...(!isBrowser && { \"User-Agent\": \"tonightpass-api-client\" }),\n },\n responseType: \"json\",\n transformRequest: [\n function (data) {\n return JSON.stringify(data);\n },\n ],\n});\n\nexport interface APIRequestOptions extends Options {}\n\nexport const request = async <T>(url: string, options?: Options) => {\n const response = instance<APIResponse<T>>(url, { ...options })\n .then((response) => response)\n .catch((error: Error) => {\n throw error;\n });\n\n return response;\n};\n","export const isBrowser = typeof window !== \"undefined\";\n","import { Currency } from \"../..\";\n\nexport type EventTicket = {\n id: string;\n name: string;\n description?: string;\n price: number;\n displayPrice: number;\n quantity: number;\n type: EventTicketType;\n category: EventTicketCategory;\n currency: Currency;\n vatRate: number;\n externalId?: string;\n isVisible: boolean;\n isFeesIncluded: boolean;\n startAt: Date;\n endAt: Date;\n updatedAt: Date;\n createdAt: Date;\n};\n\nexport type EventTicketType = \"e-ticket\" | \"other\";\n\nexport enum EventTicketCategory {\n ENTRY = \"entry\",\n PACKAGE = \"package\",\n MEAL = \"meal\",\n DRINK = \"drink\",\n PARKING = \"parking\",\n ACCOMMODATION = \"accommodation\",\n CAMPING = \"camping\",\n LOCKER = \"locker\",\n SHUTTLE = \"shuttle\",\n OTHER = \"other\",\n}\n","import { EventTicket } from \"./ticket\";\nimport { Location } from \"..\";\nimport { Organization } from \"../organizations\";\n\nexport * from \"./ticket\";\n\nexport type Event = {\n title: string;\n description: string;\n slug: string;\n organization: Organization;\n type: EventType;\n public: boolean;\n flyers: string[];\n trailers: string[];\n location: Location;\n tickets: EventTicket[];\n styles: EventStyle[];\n startAt: Date;\n endAt: Date;\n updatedAt: Date;\n createdAt: Date;\n};\n\nexport enum EventType {\n Clubbing = \"clubbing\",\n Concert = \"concert\",\n Afterwork = \"afterwork\",\n DancingLunch = \"dancing_lunch\",\n Diner = \"diner\",\n Garden = \"garden\",\n AfterBeach = \"after_beach\",\n Festival = \"festival\",\n Spectacle = \"spectacle\",\n Cruise = \"cruise\",\n OutsideAnimation = \"outside_animation\",\n Sport = \"sport\",\n Match = \"match\",\n Seminar = \"seminar\",\n Conference = \"conference\",\n WellnessDay = \"wellness_day\",\n Workshop = \"workshop\",\n TradeFair = \"trade_fair\",\n ConsumerShow = \"consumer_show\",\n Membership = \"membership\",\n}\n\nexport type EventStyle = {\n type: EventStyleType;\n emoji: string;\n name: string;\n};\n\nexport enum EventStyleType {\n Music = \"music\",\n Dress = \"dress\",\n Sport = \"sport\",\n Food = \"food\",\n Art = \"art\",\n}\n","import { Location, Profile, ProfileMetadata } from \"..\";\nimport { Event } from \"../event\";\nimport { EventTicket } from \"../event/ticket\";\nimport { User } from \"../users\";\n\nexport type Organization = {\n id: string;\n slug: string;\n identity: OrganizationIdentity;\n members: OrganizationMember[];\n location?: Location;\n events: Event[];\n savedTickets: EventTicket[];\n verified: boolean;\n updatedAt: Date;\n createdAt: Date;\n};\n\nexport type OrganizationIdentity = Profile & {\n socialLinks: OrganizationSocialLink[];\n\n metadata: ProfileMetadata & {\n eventsCount: number;\n viewsCount: number;\n membersCount: number;\n };\n};\n\nexport type OrganizationSocialLink = {\n type: OrganizationSocialType;\n url: string;\n};\n\nexport enum OrganizationSocialType {\n Facebook = \"facebook\",\n Twitter = \"twitter\",\n Instagram = \"instagram\",\n Linkedin = \"linkedin\",\n Youtube = \"youtube\",\n Website = \"website\",\n}\n\nexport type OrganizationMember = {\n user: User;\n role: OrganizationMemberRole;\n createdAt: Date;\n};\n\nexport enum OrganizationMemberRole {\n EMPLOYEE = 0,\n MANAGER = 1,\n ADMINISTRATOR = 2,\n OWNER = 3,\n}\n","export type UserToken = {\n id: string;\n type: UserTokenType;\n value: string;\n createdAt: Date;\n expiresAt: Date;\n};\n\nexport enum UserTokenType {\n Authentication = \"authentication\",\n OrganizationInvite = \"organization_invite\",\n PasswordRecovery = \"password_recovery\",\n EmailValidation = \"email_validation\",\n PhoneValidation = \"phone_validation\",\n}\n","import { Currency, Language, Location, Profile, ProfileMetadata } from \"..\";\nimport { UpdateUserDto } from \"../../dtos\";\nimport { Endpoint } from \"../../endpoints\";\n\nexport type User = {\n id: string;\n identifier: UserIdentifier;\n password: string;\n identity: UserIdentity;\n role: UserRole;\n addresses: Location[];\n preferences: UserPreferences;\n connections: UserConnection[];\n verified: boolean;\n updatedAt: Date;\n createdAt: Date;\n};\n\nexport type UserIdentifier = {\n email?: string;\n phoneNumber?: string;\n username: string;\n\n [key: string]: string | undefined;\n};\n\nexport type UserIdentity = Profile & {\n firstName: string;\n lastName: string;\n fullName: string;\n gender: UserIdentityGender;\n birthDate: Date;\n\n metadata: ProfileMetadata & {\n followingCount: number;\n hasPassPlus: boolean;\n idValid: boolean;\n };\n};\n\nexport enum UserRole {\n USER = 0,\n DEVELOPER = 8,\n ADMINISTRATOR = 10,\n}\n\nexport type UserIdentityGender =\n | \"male\"\n | \"female\"\n | \"non-binary\"\n | \"gender-fluid\"\n | \"neutral\"\n | \"other\"\n | string;\n\nexport type UserPreferences = {\n language: Language;\n currency: Currency;\n notifications: {\n email: {\n newsletter: boolean;\n message: boolean;\n };\n push: {\n message: boolean;\n };\n };\n};\n\nexport type UserConnection = {\n ip: string;\n os: UserConnectionOS;\n device: UserConnectionDevice;\n client: UserConnectionClient;\n updatedAt: Date;\n createdAt: Date;\n};\n\nexport type UserConnectionOS = {\n name: string;\n version: string;\n};\n\nexport type UserConnectionDevice = {\n type: string;\n brand: string;\n};\n\nexport type UserConnectionClient = {\n name: string;\n version: string;\n};\n\nexport type UserEndpoints =\n | Endpoint<\"GET\", \"/users\", User[]>\n | Endpoint<\"GET\", \"/users/:id\", User, { id: string }>\n | Endpoint<\"GET\", \"/users/me\", User>\n | Endpoint<\n \"GET\",\n \"/check/:identifier\",\n UserIdentifier,\n { identifier: string }\n >\n | Endpoint<\"PUT\", \"/users/:id\", User, UpdateUserDto>;\n","import { Currency } from \"..\";\nimport { Event, EventTicket } from \"../event\";\nimport { User } from \"../users\";\n\nexport enum OrderStatus {\n Created = \"created\",\n Cancelled = \"cancelled\",\n Completed = \"completed\",\n Pending = \"pending\",\n Confirmed = \"confirmed\",\n Declined = \"declined\",\n Refunded = \"refunded\",\n PartiallyRefunded = \"partially_refunded\",\n Expired = \"expired\",\n}\n\nexport type OrderItem = {\n id: string;\n ticket: EventTicket;\n isUsed: boolean;\n updatedAt: Date;\n createdAt: Date;\n};\n\nexport type Order = {\n id: string;\n owner: User;\n members: User[];\n status: OrderStatus;\n event: Event;\n items: OrderItem[];\n promoCode?: PromoCode;\n total: number;\n currency: Currency;\n createdAt: Date;\n};\n\nexport type PromoCode = {\n id: string;\n code: string;\n used: number;\n discount: number;\n isActive: boolean;\n expirationAt: Date;\n createdAt: Date;\n};\n","export * from \"./careers\";\nexport * from \"./event\";\nexport * from \"./health\";\nexport * from \"./organizations\";\nexport * from \"./token\";\nexport * from \"./users\";\nexport * from \"./order\";\nexport * from \"./profiles\";\n\nexport type Location = {\n name?: string;\n address: string;\n zipCode: string;\n city: string;\n country: string;\n geometry?: {\n latitude: number;\n longitude: number;\n };\n};\n\n// Currency\nexport enum Currency {\n EUR = \"EUR\",\n USD = \"USD\",\n GBP = \"GBP\",\n}\n\n// I18n\nexport enum Language {\n FR = \"fr\",\n EN = \"en\",\n}\n","import { ParamValue, pathcat } from \"pathcat\";\nimport { Options, Response } from \"redaxios\";\n\nimport { APIResponse, Endpoints, ErroredAPIResponse } from \"./endpoints\";\nimport { APIRequestOptions, request } from \"./request\";\nimport { DEFAULT_API_URL } from \"../constants\";\n\n// type ExtractRouteParams<T extends string> = string extends T\n// ? string\n// : T extends `${string}:${infer Param}/${infer Rest}`\n// ? Param | ExtractRouteParams<Rest>\n// : T extends `${string}:${infer Param}`\n// ? Param\n// : never;\n\nexport type ExtractRouteParams<T extends string> = string extends T\n ? Record<string, string | number | undefined>\n : T extends `${string}:${infer Param}/${infer Rest}`\n ? { [k in Param | keyof ExtractRouteParams<Rest>]: string | number }\n : T extends `${string}:${infer Param}`\n ? { [k in Param]: string | number }\n : object;\n\nexport type ExtractEndpoint<\n Method extends string,\n Path extends string,\n> = Extract<Endpoints, { path: Path; method: Method }>;\n\nexport type PathsFor<M extends Options[\"method\"]> = Extract<\n Endpoints,\n { method: M }\n>[\"path\"];\n\nexport type Query<Path extends string> = ExtractRouteParams<Path> &\n Record<string, string | number | undefined>;\n\nexport class TonightPassAPIError<T> extends Error {\n public readonly status: number;\n\n constructor(\n public readonly response: Response<APIResponse<T>>,\n public readonly data: ErroredAPIResponse,\n ) {\n super(data.message);\n\n this.status = response.status;\n }\n}\n\nexport interface ClientOptions {\n readonly baseURL: string;\n}\n\nexport class Client {\n private options;\n public readonly url;\n\n constructor(options: ClientOptions) {\n this.options = options;\n this.url = (path: string, params: Record<string, ParamValue>) => {\n const baseURL = this.options.baseURL || DEFAULT_API_URL;\n return pathcat(baseURL, path, params);\n };\n }\n\n setOptions(options: ClientOptions) {\n this.options = options;\n }\n\n async get<Path extends PathsFor<\"GET\">>(\n path: Path,\n query?: Query<Path>,\n options?: APIRequestOptions,\n ) {\n return this.requester<\n Extract<Endpoints, { path: Path; method: \"GET\" }>[\"res\"]\n >(\"GET\", path, undefined, query, options);\n }\n\n async post<Path extends Extract<Endpoints, { method: \"POST\" }>[\"path\"]>(\n path: Path,\n body: Extract<Endpoints, { path: Path; method: \"POST\" }>[\"body\"],\n query?: Query<Path>,\n options?: APIRequestOptions,\n ) {\n return this.requester<\n Extract<Endpoints, { path: Path; method: \"POST\" }>[\"res\"]\n >(\"POST\", path, body, query, options);\n }\n\n async put<Path extends Extract<Endpoints, { method: \"PUT\" }>[\"path\"]>(\n path: Path,\n body: Extract<Endpoints, { path: Path; method: \"PUT\" }>[\"body\"],\n query?: Query<Path>,\n options?: APIRequestOptions,\n ) {\n return this.requester<\n Extract<Endpoints, { path: Path; method: \"PUT\" }>[\"res\"]\n >(\"PUT\", path, body, query, options);\n }\n\n async patch<Path extends Extract<Endpoints, { method: \"PATCH\" }>[\"path\"]>(\n path: Path,\n body: Extract<Endpoints, { path: Path; method: \"PATCH\" }>[\"body\"],\n query?: Query<Path>,\n options?: APIRequestOptions,\n ) {\n return this.requester<\n Extract<Endpoints, { path: Path; method: \"PATCH\" }>[\"res\"]\n >(\"PATCH\", path, body, query, options);\n }\n\n async delete<Path extends Extract<Endpoints, { method: \"DELETE\" }>[\"path\"]>(\n path: Path,\n query?: Query<Path>,\n options?: APIRequestOptions,\n ) {\n return this.requester<\n Extract<Endpoints, { path: Path; method: \"DELETE\" }>[\"res\"]\n >(\"DELETE\", path, undefined, query, options);\n }\n\n private async requester<T>(\n method: Options[\"method\"],\n path: string,\n body: unknown,\n query: Record<string, string | number | undefined> = {},\n options: APIRequestOptions = {},\n ) {\n const url = this.url(path, query);\n\n if (body !== undefined) {\n if (method === \"GET\") {\n throw new Error(\"Cannot send a GET request with a body\");\n }\n }\n\n const response: Response<APIResponse<T>> = await request<T>(url, {\n method,\n data: body,\n ...options,\n });\n\n // TODO: Add error catcher\n\n const result = response.data;\n\n if (!result.success) {\n throw new TonightPassAPIError<T>(response, result);\n }\n\n return result.data;\n }\n}\n","import { Client } from \"../rest\";\n\nexport function sdk<T>(builder: (client: Client) => T) {\n return builder;\n}\n","import { sdk } from \"./builder\";\n\nexport const health = sdk((client) => ({\n database: async () => client.get(\"/health/database\"),\n http: async () => client.get(\"/health/http\"),\n}));\n","import { sdk } from \"./builder\";\nimport { UpdateUserDto } from \"../rest\";\n\nexport const users = sdk((client) => ({\n getAll: async () => client.get(\"/users\"),\n get: async (id: string) => client.get(\"/users\", { id }),\n me: async () => client.get(\"/users/me\"),\n check: async (identifier: string) =>\n client.get(\"/check/:identifier\", { identifier }),\n update: async (id: string, data: UpdateUserDto) =>\n client.put(\"/users/:id\", data, { id }),\n}));\n","import { sdk } from \"./builder\";\nimport { Query } from \"../rest\";\n\nexport const careers = sdk((client) => ({\n categories: {\n getAll: async (query?: Query<\"/careers/categories\">) =>\n client.get(\"/careers/categories\", query),\n },\n employmentTypes: {\n getAll: async (query?: Query<\"/careers/employmentTypes\">) =>\n client.get(\"/careers/employmentTypes\", query),\n },\n jobs: {\n getAll: async (query?: Query<\"/careers/jobs\">) =>\n client.get(\"/careers/jobs\", query),\n get: async (id: number) => client.get(\"/careers/jobs/:id\", { id }),\n },\n offices: {\n getAll: async (query?: Query<\"/careers/offices\">) =>\n client.get(\"/careers/offices\", query),\n },\n}));\n","import { Client, ClientOptions } from \"./rest\";\nimport { health, users } from \"./sdk\";\nimport { careers } from \"./sdk/careers\";\n\nexport class TonightPass {\n public readonly client: Client;\n\n public readonly careers;\n public readonly health;\n public readonly users;\n\n constructor(options: ClientOptions) {\n this.client = new Client(options);\n\n this.careers = careers(this.client);\n this.health = health(this.client);\n this.users = users(this.client);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/constants/api.ts","../src/constants/regex.ts","../src/rest/dtos/index.ts","../src/rest/dtos/users/create-user.dto.ts","../src/rest/dtos/users/sign-in-user.dto.ts","../src/rest/dtos/users/update-user.dto.ts","../src/rest/request/request.ts","../src/utils/index.ts","../src/rest/types/event/ticket/index.ts","../src/rest/types/event/index.ts","../src/rest/types/organizations/index.ts","../src/rest/types/token/index.ts","../src/rest/types/users/index.ts","../src/rest/types/order/index.ts","../src/rest/types/index.ts","../src/rest/client.ts","../src/sdk/builder.ts","../src/sdk/health.ts","../src/sdk/users.ts","../src/sdk/careers.ts","../src/sdk/profiles.ts","../src/tonightpass.ts"],"names":["DEFAULT_API_URL","EMAIL_REGEX","PASSWORD_REGEX","NAME_REGEX","SLUG_REGEX","BCRYPT_HASH","PHONE_NUMBER_REGEX","IMAGE_URL_REGEX","CreateUserDto","SignInUserDto","Type","IsDateString","IsEmail","IsObject","IsOptional","IsPhoneNumber","IsString","IsUrl","Length","Matches","MaxLength","MinLength","ValidateNested","UpdateUserDto","__decorateClass","UpdateIdentifierDto","UpdateIdentityDto","axios","isBrowser","instance","data","request","url","options","response","error","EventTicketCategory","EventType","EventStyleType","OrganizationSocialType","OrganizationMemberRole","UserTokenType","UserRole","OrderStatus","Currency","Language","pathcat","TonightPassAPIError","Client","path","params","baseURL","query","body","method","result","sdk","builder","health","client","users","id","identifier","careers","profiles","username","TonightPass"],"mappings":"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","sourcesContent":["export const DEFAULT_API_URL = \"https://api.tonightpass.com\";\n","export const EMAIL_REGEX = /^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,4}$/;\n\n// checks if a password has at least one uppercase letter and a number or special character\nexport const PASSWORD_REGEX =\n /((?=.*\\d)|(?=.*\\W+))(?![.\\n])(?=.*[A-Z])(?=.*[a-z]).*$/;\n\n// checks if a string has only letters, numbers, spaces, apostrophes, dots and dashes\nexport const NAME_REGEX = /(^[\\p{L}\\d'\\\\.\\s\\\\-]*$)/u;\n\n// checks if a string is a valid slug, useful for usernames\nexport const SLUG_REGEX = /^[a-z\\d]+(?:(\\.|-|_)[a-z\\d]+)*$/;\n\n// validates if passwords are valid bcrypt hashes\nexport const BCRYPT_HASH = /\\$2[abxy]?\\$\\d{1,2}\\$[A-Za-z\\d\\\\./]{53}/;\n\nexport const PHONE_NUMBER_REGEX =\n /^\\s*(?:\\+?(\\d{1,3}))?([-. (]*(\\d{3})[-. )]*)?((\\d{3})[-. ]*(\\d{2,4})(?:[-.x ]*(\\d+))?)\\s*$/;\n\nexport const IMAGE_URL_REGEX =\n /(((http:\\/\\/www)|(http:\\/\\/)|(www))[-a-zA-Z0-9@:%_\\\\+.~#?&//=]+)\\.(jpg|jpeg|gif|png|bmp|tiff|tga|svg)/i;\n","import \"reflect-metadata\";\n\nexport * from \"./users\";\n","import { UserIdentifier, UserIdentityGender } from \"../../types\";\n\nexport class CreateUserDto {\n identifier: UserIdentifier;\n password: string;\n identity: CreateUserIdentituDto;\n addresses: Location[];\n}\n\nclass CreateUserIdentituDto {\n firstName: string;\n lastName: string;\n gender: UserIdentityGender;\n profilePictureUrl?: string;\n birthDate: Date;\n}\n","export class SignInUserDto {\n identifier: string;\n password: string;\n}\n","import { Type } from \"class-transformer\";\nimport {\n IsDateString,\n IsEmail,\n IsObject,\n IsOptional,\n IsPhoneNumber,\n IsString,\n IsUrl,\n Length,\n Matches,\n MaxLength,\n MinLength,\n ValidateNested,\n} from \"class-validator\";\n\nimport { NAME_REGEX } from \"../../../constants/regex\";\nimport { UserIdentifier, UserIdentity } from \"../../types\";\n\nexport class UpdateUserDto {\n @IsOptional()\n @IsObject()\n @ValidateNested()\n @Type(() => UpdateIdentifierDto)\n identifier?: UpdateIdentifierDto;\n\n @IsOptional()\n @IsObject()\n @ValidateNested()\n @Type(() => UpdateIdentityDto)\n identity?: UpdateIdentityDto;\n\n @IsOptional()\n @IsString()\n @MinLength(6)\n @MaxLength(130)\n password?: string;\n}\n\nclass UpdateIdentifierDto\n implements\n Partial<Pick<UserIdentifier, \"email\" | \"phoneNumber\" | \"username\">>\n{\n @IsOptional()\n @IsString()\n @IsEmail()\n email?: string;\n\n @IsOptional()\n @IsString()\n @IsPhoneNumber()\n phoneNumber?: string;\n\n @IsOptional()\n @IsString()\n @MinLength(3)\n username?: string;\n}\n\nclass UpdateIdentityDto\n implements\n Partial<\n Pick<\n UserIdentity,\n | \"firstName\"\n | \"lastName\"\n | \"displayName\"\n | \"description\"\n | \"profilePictureUrl\"\n | \"bannerUrl\"\n | \"gender\"\n | \"birthDate\"\n >\n >\n{\n @IsOptional()\n @IsString()\n @Length(2, 50)\n @Matches(NAME_REGEX, {\n message: \"First name must be composed of letters only\",\n })\n firstName?: string;\n\n @IsOptional()\n @IsString()\n @Length(2, 50)\n @Matches(NAME_REGEX, {\n message: \"Last name must be composed of letters only\",\n })\n lastName?: string;\n\n @IsOptional()\n @IsString()\n @Length(1, 32)\n displayName?: string;\n\n @IsOptional()\n @IsString()\n @Length(15, 500)\n description?: string;\n\n @IsOptional()\n @IsUrl()\n profilePictureUrl?: string | undefined;\n\n @IsOptional()\n @IsUrl()\n bannerUrl?: string | undefined;\n\n @IsOptional()\n gender?: string;\n\n @IsOptional()\n @IsDateString()\n birthDate?: Date;\n}\n","import axios, { Options, Response } from \"redaxios\";\n\nimport { isBrowser } from \"../../utils\";\nimport { APIResponse, ErroredAPIResponse } from \"../endpoints\";\n\nconst instance = axios.create({\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n ...(!isBrowser && { \"User-Agent\": \"tonightpass-api-client\" }),\n },\n responseType: \"json\",\n transformRequest: [\n function (data) {\n return JSON.stringify(data);\n },\n ],\n withCredentials: isBrowser,\n});\n\nexport interface APIRequestOptions extends Options {}\n\nexport const request = async <T>(url: string, options?: Options) => {\n const response = instance<APIResponse<T>>(url, { ...options })\n .then((response) => response)\n .catch((error: Response<ErroredAPIResponse>) => {\n throw error.data;\n });\n\n return response;\n};\n","export const isBrowser = typeof window !== \"undefined\";\n","import { Currency } from \"../..\";\n\nexport type EventTicket = {\n id: string;\n name: string;\n description?: string;\n price: number;\n displayPrice: number;\n quantity: number;\n type: EventTicketType;\n category: EventTicketCategory;\n currency: Currency;\n vatRate: number;\n externalId?: string;\n isVisible: boolean;\n isFeesIncluded: boolean;\n startAt: Date;\n endAt: Date;\n updatedAt: Date;\n createdAt: Date;\n};\n\nexport type EventTicketType = \"e-ticket\" | \"other\";\n\nexport enum EventTicketCategory {\n ENTRY = \"entry\",\n PACKAGE = \"package\",\n MEAL = \"meal\",\n DRINK = \"drink\",\n PARKING = \"parking\",\n ACCOMMODATION = \"accommodation\",\n CAMPING = \"camping\",\n LOCKER = \"locker\",\n SHUTTLE = \"shuttle\",\n OTHER = \"other\",\n}\n","import { EventTicket } from \"./ticket\";\nimport { Location } from \"..\";\nimport { Organization } from \"../organizations\";\n\nexport * from \"./ticket\";\n\nexport type Event = {\n title: string;\n description: string;\n slug: string;\n organization: Organization;\n type: EventType;\n public: boolean;\n flyers: string[];\n trailers: string[];\n location: Location;\n tickets: EventTicket[];\n styles: EventStyle[];\n startAt: Date;\n endAt: Date;\n updatedAt: Date;\n createdAt: Date;\n};\n\nexport enum EventType {\n Clubbing = \"clubbing\",\n Concert = \"concert\",\n Afterwork = \"afterwork\",\n DancingLunch = \"dancing_lunch\",\n Diner = \"diner\",\n Garden = \"garden\",\n AfterBeach = \"after_beach\",\n Festival = \"festival\",\n Spectacle = \"spectacle\",\n Cruise = \"cruise\",\n OutsideAnimation = \"outside_animation\",\n Sport = \"sport\",\n Match = \"match\",\n Seminar = \"seminar\",\n Conference = \"conference\",\n WellnessDay = \"wellness_day\",\n Workshop = \"workshop\",\n TradeFair = \"trade_fair\",\n ConsumerShow = \"consumer_show\",\n Membership = \"membership\",\n}\n\nexport type EventStyle = {\n type: EventStyleType;\n emoji: string;\n name: string;\n};\n\nexport enum EventStyleType {\n Music = \"music\",\n Dress = \"dress\",\n Sport = \"sport\",\n Food = \"food\",\n Art = \"art\",\n}\n","import { Location, Profile, ProfileMetadata } from \"..\";\nimport { Event } from \"../event\";\nimport { EventTicket } from \"../event/ticket\";\nimport { User } from \"../users\";\n\nexport type Organization = {\n id: string;\n slug: string;\n identity: OrganizationIdentity;\n members: OrganizationMember[];\n location?: Location;\n events: Event[];\n savedTickets: EventTicket[];\n verified: boolean;\n updatedAt: Date;\n createdAt: Date;\n};\n\nexport type OrganizationIdentity = Profile & {\n socialLinks: OrganizationSocialLink[];\n\n metadata: ProfileMetadata & {\n eventsCount: number;\n viewsCount: number;\n membersCount: number;\n };\n};\n\nexport type OrganizationSocialLink = {\n type: OrganizationSocialType;\n url: string;\n};\n\nexport enum OrganizationSocialType {\n Facebook = \"facebook\",\n Twitter = \"twitter\",\n Instagram = \"instagram\",\n Linkedin = \"linkedin\",\n Youtube = \"youtube\",\n Website = \"website\",\n}\n\nexport type OrganizationMember = {\n user: User;\n role: OrganizationMemberRole;\n createdAt: Date;\n};\n\nexport enum OrganizationMemberRole {\n EMPLOYEE = 0,\n MANAGER = 1,\n ADMINISTRATOR = 2,\n OWNER = 3,\n}\n","export type UserToken = {\n id: string;\n type: UserTokenType;\n value: string;\n createdAt: Date;\n expiresAt: Date;\n};\n\nexport enum UserTokenType {\n Authentication = \"authentication\",\n OrganizationInvite = \"organization_invite\",\n PasswordRecovery = \"password_recovery\",\n EmailValidation = \"email_validation\",\n PhoneValidation = \"phone_validation\",\n}\n","import { Currency, Language, Location, Profile, ProfileMetadata } from \"..\";\nimport { UpdateUserDto } from \"../../dtos\";\nimport { Endpoint } from \"../../endpoints\";\n\nexport type User = {\n id: string;\n identifier: UserIdentifier;\n password: string;\n identity: UserIdentity;\n role: UserRole;\n addresses: Location[];\n preferences: UserPreferences;\n connections: UserConnection[];\n verified: boolean;\n updatedAt: Date;\n createdAt: Date;\n};\n\nexport type UserIdentifier = {\n email?: string;\n phoneNumber?: string;\n username: string;\n\n [key: string]: string | undefined;\n};\n\nexport type UserIdentity = Profile & {\n firstName: string;\n lastName: string;\n fullName: string;\n gender: UserIdentityGender;\n birthDate: Date;\n\n metadata: ProfileMetadata & {\n followingCount: number;\n hasPassPlus: boolean;\n idValid: boolean;\n };\n};\n\nexport enum UserRole {\n USER = 0,\n DEVELOPER = 8,\n ADMINISTRATOR = 10,\n}\n\nexport type UserIdentityGender =\n | \"male\"\n | \"female\"\n | \"non-binary\"\n | \"gender-fluid\"\n | \"neutral\"\n | \"other\"\n | string;\n\nexport type UserPreferences = {\n language: Language;\n currency: Currency;\n notifications: {\n email: {\n newsletter: boolean;\n message: boolean;\n };\n push: {\n message: boolean;\n };\n };\n};\n\nexport type UserConnection = {\n ip: string;\n os: UserConnectionOS;\n device: UserConnectionDevice;\n client: UserConnectionClient;\n updatedAt: Date;\n createdAt: Date;\n};\n\nexport type UserConnectionOS = {\n name: string;\n version: string;\n};\n\nexport type UserConnectionDevice = {\n type: string;\n brand: string;\n};\n\nexport type UserConnectionClient = {\n name: string;\n version: string;\n};\n\nexport type UserEndpoints =\n | Endpoint<\"GET\", \"/users\", User[]>\n | Endpoint<\"GET\", \"/users/:id\", User, { id: string }>\n | Endpoint<\"GET\", \"/users/me\", User>\n | Endpoint<\n \"GET\",\n \"/check/:identifier\",\n UserIdentifier,\n { identifier: string }\n >\n | Endpoint<\"PUT\", \"/users/:id\", User, UpdateUserDto>;\n","import { Currency } from \"..\";\nimport { Event, EventTicket } from \"../event\";\nimport { User } from \"../users\";\n\nexport enum OrderStatus {\n Created = \"created\",\n Cancelled = \"cancelled\",\n Completed = \"completed\",\n Pending = \"pending\",\n Confirmed = \"confirmed\",\n Declined = \"declined\",\n Refunded = \"refunded\",\n PartiallyRefunded = \"partially_refunded\",\n Expired = \"expired\",\n}\n\nexport type OrderItem = {\n id: string;\n ticket: EventTicket;\n isUsed: boolean;\n updatedAt: Date;\n createdAt: Date;\n};\n\nexport type Order = {\n id: string;\n owner: User;\n members: User[];\n status: OrderStatus;\n event: Event;\n items: OrderItem[];\n promoCode?: PromoCode;\n total: number;\n currency: Currency;\n createdAt: Date;\n};\n\nexport type PromoCode = {\n id: string;\n code: string;\n used: number;\n discount: number;\n isActive: boolean;\n expirationAt: Date;\n createdAt: Date;\n};\n","export * from \"./careers\";\nexport * from \"./event\";\nexport * from \"./health\";\nexport * from \"./organizations\";\nexport * from \"./token\";\nexport * from \"./users\";\nexport * from \"./order\";\nexport * from \"./profiles\";\n\nexport type Location = {\n name?: string;\n address: string;\n zipCode: string;\n city: string;\n country: string;\n geometry?: {\n latitude: number;\n longitude: number;\n };\n};\n\n// Currency\nexport enum Currency {\n EUR = \"EUR\",\n USD = \"USD\",\n GBP = \"GBP\",\n}\n\n// I18n\nexport enum Language {\n FR = \"fr\",\n EN = \"en\",\n}\n","import { ParamValue, pathcat } from \"pathcat\";\nimport { Options, Response } from \"redaxios\";\n\nimport { APIResponse, Endpoints, ErroredAPIResponse } from \"./endpoints\";\nimport { APIRequestOptions, request } from \"./request\";\nimport { DEFAULT_API_URL } from \"../constants\";\n\nexport type ExtractRouteParams<T extends string> = string extends T\n ? Record<string, string | number | undefined>\n : T extends `${string}:${infer Param}/${infer Rest}`\n ? { [k in Param | keyof ExtractRouteParams<Rest>]: string | number }\n : T extends `${string}:${infer Param}`\n ? { [k in Param]: string | number }\n : object;\n\nexport type ExtractEndpoint<\n Method extends string,\n Path extends string,\n> = Extract<Endpoints, { path: Path; method: Method }>;\n\nexport type PathsFor<M extends Options[\"method\"]> = Extract<\n Endpoints,\n { method: M }\n>[\"path\"];\n\nexport type Query<Path extends string> = ExtractRouteParams<Path> &\n Record<string, string | number | undefined>;\n\nexport class TonightPassAPIError<T> extends Error {\n public readonly status: number;\n\n constructor(\n public readonly response: Response<APIResponse<T>>,\n public readonly data: ErroredAPIResponse,\n ) {\n super(data.message);\n\n this.status = response.status;\n }\n}\n\nexport interface ClientOptions {\n readonly baseURL: string;\n}\n\nexport class Client {\n private options;\n public readonly url;\n\n constructor(options: ClientOptions) {\n this.options = options;\n this.url = (path: string, params: Record<string, ParamValue>) => {\n const baseURL = this.options.baseURL || DEFAULT_API_URL;\n return pathcat(baseURL, path, params);\n };\n }\n\n setOptions(options: ClientOptions) {\n this.options = options;\n }\n\n async get<Path extends PathsFor<\"GET\">>(\n path: Path,\n query?: Query<Path>,\n options?: APIRequestOptions,\n ) {\n return this.requester<\n Extract<Endpoints, { path: Path; method: \"GET\" }>[\"res\"]\n >(\"GET\", path, undefined, query, options);\n }\n\n async post<Path extends Extract<Endpoints, { method: \"POST\" }>[\"path\"]>(\n path: Path,\n body: Extract<Endpoints, { path: Path; method: \"POST\" }>[\"body\"],\n query?: Query<Path>,\n options?: APIRequestOptions,\n ) {\n return this.requester<\n Extract<Endpoints, { path: Path; method: \"POST\" }>[\"res\"]\n >(\"POST\", path, body, query, options);\n }\n\n async put<Path extends Extract<Endpoints, { method: \"PUT\" }>[\"path\"]>(\n path: Path,\n body: Extract<Endpoints, { path: Path; method: \"PUT\" }>[\"body\"],\n query?: Query<Path>,\n options?: APIRequestOptions,\n ) {\n return this.requester<\n Extract<Endpoints, { path: Path; method: \"PUT\" }>[\"res\"]\n >(\"PUT\", path, body, query, options);\n }\n\n async patch<Path extends Extract<Endpoints, { method: \"PATCH\" }>[\"path\"]>(\n path: Path,\n body: Extract<Endpoints, { path: Path; method: \"PATCH\" }>[\"body\"],\n query?: Query<Path>,\n options?: APIRequestOptions,\n ) {\n return this.requester<\n Extract<Endpoints, { path: Path; method: \"PATCH\" }>[\"res\"]\n >(\"PATCH\", path, body, query, options);\n }\n\n async delete<Path extends Extract<Endpoints, { method: \"DELETE\" }>[\"path\"]>(\n path: Path,\n query?: Query<Path>,\n options?: APIRequestOptions,\n ) {\n return this.requester<\n Extract<Endpoints, { path: Path; method: \"DELETE\" }>[\"res\"]\n >(\"DELETE\", path, undefined, query, options);\n }\n\n private async requester<T>(\n method: Options[\"method\"],\n path: string,\n body: unknown,\n query: Record<string, string | number | undefined> = {},\n options: APIRequestOptions = {},\n ) {\n const url = this.url(path, query);\n\n if (body !== undefined) {\n if (method === \"GET\") {\n throw new Error(\"Cannot send a GET request with a body\");\n }\n }\n\n const response: Response<APIResponse<T>> = await request<T>(url, {\n method,\n data: body,\n ...options,\n });\n\n const result = response.data;\n\n if (!result.success) {\n throw new TonightPassAPIError<T>(response, result);\n }\n\n return result.data;\n }\n}\n","import { Client } from \"../rest\";\n\nexport function sdk<T>(builder: (client: Client) => T) {\n return builder;\n}\n","import { sdk } from \"./builder\";\n\nexport const health = sdk((client) => ({\n database: async () => client.get(\"/health/database\"),\n http: async () => client.get(\"/health/http\"),\n}));\n","import { sdk } from \"./builder\";\nimport { UpdateUserDto } from \"../rest\";\n\nexport const users = sdk((client) => ({\n getAll: async () => client.get(\"/users\"),\n get: async (id: string) => client.get(\"/users\", { id }),\n me: async () => client.get(\"/users/me\"),\n check: async (identifier: string) =>\n client.get(\"/check/:identifier\", { identifier }),\n update: async (id: string, data: UpdateUserDto) =>\n client.put(\"/users/:id\", data, { id }),\n}));\n","import { sdk } from \"./builder\";\nimport { Query } from \"../rest\";\n\nexport const careers = sdk((client) => ({\n categories: {\n getAll: async (query?: Query<\"/careers/categories\">) =>\n client.get(\"/careers/categories\", query),\n },\n employmentTypes: {\n getAll: async (query?: Query<\"/careers/employmentTypes\">) =>\n client.get(\"/careers/employmentTypes\", query),\n },\n jobs: {\n getAll: async (query?: Query<\"/careers/jobs\">) =>\n client.get(\"/careers/jobs\", query),\n get: async (id: number) => client.get(\"/careers/jobs/:id\", { id }),\n },\n offices: {\n getAll: async (query?: Query<\"/careers/offices\">) =>\n client.get(\"/careers/offices\", query),\n },\n}));\n","import { sdk } from \"./builder\";\n\nexport const profiles = sdk((client) => ({\n get: async (username: string) =>\n client.get(\"/profiles/:username\", { username }),\n}));\n","import { Client, ClientOptions } from \"./rest\";\nimport { health, users } from \"./sdk\";\nimport { careers } from \"./sdk/careers\";\nimport { profiles } from \"./sdk/profiles\";\n\nexport class TonightPass {\n public readonly client: Client;\n\n public readonly careers;\n public readonly health;\n public readonly profiles;\n public readonly users;\n\n constructor(options: ClientOptions) {\n this.client = new Client(options);\n\n this.careers = careers(this.client);\n this.health = health(this.client);\n this.profiles = profiles(this.client);\n this.users = users(this.client);\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tonightpass",
3
- "version": "0.0.2",
3
+ "version": "0.0.3",
4
4
  "description": "@tonightpass sdk and tools.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -21,7 +21,7 @@
21
21
  "reflect-metadata": "^0.2.1"
22
22
  },
23
23
  "devDependencies": {
24
- "@types/node": "20.11.30",
24
+ "@types/node": "20.12.2",
25
25
  "tsx": "^4.7.1",
26
26
  "typescript": "^5.0.0"
27
27
  },
@@ -5,14 +5,6 @@ import { APIResponse, Endpoints, ErroredAPIResponse } from "./endpoints";
5
5
  import { APIRequestOptions, request } from "./request";
6
6
  import { DEFAULT_API_URL } from "../constants";
7
7
 
8
- // type ExtractRouteParams<T extends string> = string extends T
9
- // ? string
10
- // : T extends `${string}:${infer Param}/${infer Rest}`
11
- // ? Param | ExtractRouteParams<Rest>
12
- // : T extends `${string}:${infer Param}`
13
- // ? Param
14
- // : never;
15
-
16
8
  export type ExtractRouteParams<T extends string> = string extends T
17
9
  ? Record<string, string | number | undefined>
18
10
  : T extends `${string}:${infer Param}/${infer Rest}`
@@ -141,8 +133,6 @@ export class Client {
141
133
  ...options,
142
134
  });
143
135
 
144
- // TODO: Add error catcher
145
-
146
136
  const result = response.data;
147
137
 
148
138
  if (!result.success) {
@@ -1,7 +1,7 @@
1
- import axios, { Options } from "redaxios";
1
+ import axios, { Options, Response } from "redaxios";
2
2
 
3
3
  import { isBrowser } from "../../utils";
4
- import { APIResponse } from "../endpoints";
4
+ import { APIResponse, ErroredAPIResponse } from "../endpoints";
5
5
 
6
6
  const instance = axios.create({
7
7
  headers: {
@@ -15,6 +15,7 @@ const instance = axios.create({
15
15
  return JSON.stringify(data);
16
16
  },
17
17
  ],
18
+ withCredentials: isBrowser,
18
19
  });
19
20
 
20
21
  export interface APIRequestOptions extends Options {}
@@ -22,8 +23,8 @@ export interface APIRequestOptions extends Options {}
22
23
  export const request = async <T>(url: string, options?: Options) => {
23
24
  const response = instance<APIResponse<T>>(url, { ...options })
24
25
  .then((response) => response)
25
- .catch((error: Error) => {
26
- throw error;
26
+ .catch((error: Response<ErroredAPIResponse>) => {
27
+ throw error.data;
27
28
  });
28
29
 
29
30
  return response;
@@ -1,12 +1,14 @@
1
1
  import { Client, ClientOptions } from "./rest";
2
2
  import { health, users } from "./sdk";
3
3
  import { careers } from "./sdk/careers";
4
+ import { profiles } from "./sdk/profiles";
4
5
 
5
6
  export class TonightPass {
6
7
  public readonly client: Client;
7
8
 
8
9
  public readonly careers;
9
10
  public readonly health;
11
+ public readonly profiles;
10
12
  public readonly users;
11
13
 
12
14
  constructor(options: ClientOptions) {
@@ -14,6 +16,7 @@ export class TonightPass {
14
16
 
15
17
  this.careers = careers(this.client);
16
18
  this.health = health(this.client);
19
+ this.profiles = profiles(this.client);
17
20
  this.users = users(this.client);
18
21
  }
19
22
  }
package/tests/index.ts CHANGED
@@ -4,9 +4,10 @@ import assert from "node:assert";
4
4
  import test from "node:test";
5
5
 
6
6
  import { careersTests } from "./careers";
7
+ import { usersTests } from "./users";
7
8
  import { TonightPass } from "../src/tonightpass";
8
9
 
9
- const sdkTests = [careersTests];
10
+ const sdkTests = [careersTests, usersTests];
10
11
 
11
12
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
12
13
  // @ts-expect-error
@@ -0,0 +1,31 @@
1
+ import assert from "assert";
2
+ import test from "node:test";
3
+
4
+ import { ErroredAPIResponse } from "../../src";
5
+ import { TonightPass } from "../../src/tonightpass";
6
+
7
+ export function usersTests(tnp: TonightPass) {
8
+ test("It will fail to get user 'me'", async () => {
9
+ try {
10
+ await tnp.users.me();
11
+ assert.fail("Expected the 'me' function to throw an error but it didn't");
12
+ } catch (error) {
13
+ const typedError = error as ErroredAPIResponse;
14
+ assert.strictEqual(
15
+ typedError.success,
16
+ false,
17
+ "Expected error response to indicate failure",
18
+ );
19
+ assert.strictEqual(
20
+ typeof typedError.message,
21
+ "string",
22
+ "Expected error message to be a string",
23
+ );
24
+ assert.strictEqual(
25
+ typedError.message,
26
+ "Unauthorized",
27
+ "Expected error message to be 'Unauthorized'",
28
+ );
29
+ }
30
+ });
31
+ }