tonightpass 0.0.1 → 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.
- package/.turbo/turbo-build.log +10 -10
- package/CHANGELOG.md +12 -0
- package/dist/index.d.mts +37 -5
- package/dist/index.d.ts +37 -5
- package/dist/index.js +31 -30
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3 -3
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +1 -0
- package/src/rest/client.ts +1 -12
- package/src/rest/request/request.ts +5 -4
- package/src/tonightpass.ts +3 -0
- package/tests/index.ts +2 -1
- package/tests/users/index.ts +31 -0
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> tonightpass@0.0.
|
|
2
|
+
> tonightpass@0.0.3 build /home/runner/work/tonightpass/tonightpass/packages/node
|
|
3
3
|
> tsup
|
|
4
4
|
|
|
5
5
|
[34mCLI[39m Building entry: src/index.ts
|
|
@@ -9,13 +9,13 @@
|
|
|
9
9
|
[34mCLI[39m Target: esnext
|
|
10
10
|
[34mCJS[39m Build start
|
|
11
11
|
[34mESM[39m Build start
|
|
12
|
-
[
|
|
13
|
-
[
|
|
14
|
-
[
|
|
15
|
-
[
|
|
16
|
-
[
|
|
17
|
-
[
|
|
12
|
+
[32mCJS[39m [1mdist/index.js [22m[32m7.40 KB[39m
|
|
13
|
+
[32mCJS[39m [1mdist/index.js.map [22m[32m25.23 KB[39m
|
|
14
|
+
[32mCJS[39m ⚡️ Build success in 173ms
|
|
15
|
+
[32mESM[39m [1mdist/index.mjs [22m[32m6.52 KB[39m
|
|
16
|
+
[32mESM[39m [1mdist/index.mjs.map [22m[32m25.23 KB[39m
|
|
17
|
+
[32mESM[39m ⚡️ Build success in 227ms
|
|
18
18
|
[34mDTS[39m Build start
|
|
19
|
-
[32mDTS[39m ⚡️ Build success in
|
|
20
|
-
[32mDTS[39m [1mdist/index.d.ts [22m[
|
|
21
|
-
[32mDTS[39m [1mdist/index.d.mts [22m[
|
|
19
|
+
[32mDTS[39m ⚡️ Build success in 2462ms
|
|
20
|
+
[32mDTS[39m [1mdist/index.d.ts [22m[32m18.63 KB[39m
|
|
21
|
+
[32mDTS[39m [1mdist/index.d.mts [22m[32m18.63 KB[39m
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
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
|
+
|
|
9
|
+
## 0.0.2
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [`276f52e`](https://github.com/tonightpass/tonightpass/commit/276f52eb551e2dce6173c3331119a68780cea8d0) Thanks [@AntoineKM](https://github.com/AntoineKM)! - Add TonightPass exports
|
|
14
|
+
|
|
3
15
|
## 0.0.1
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
package/dist/index.d.mts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import * as redaxios from 'redaxios';
|
|
2
1
|
import { Options, Response } from 'redaxios';
|
|
3
|
-
import { Method } from 'axios';
|
|
4
2
|
import { ParamValue } from 'pathcat';
|
|
5
3
|
|
|
6
4
|
declare const DEFAULT_API_URL = "https://api.tonightpass.com";
|
|
@@ -445,7 +443,7 @@ declare class UpdateIdentityDto implements Partial<Pick<UserIdentity, "firstName
|
|
|
445
443
|
|
|
446
444
|
interface APIRequestOptions extends Options {
|
|
447
445
|
}
|
|
448
|
-
declare const request: <T>(url: string, options?: Options) => Promise<
|
|
446
|
+
declare const request: <T>(url: string, options?: Options) => Promise<Response<APIResponse<T>>>;
|
|
449
447
|
|
|
450
448
|
type ExtractRouteParams<T extends string> = string extends T ? Record<string, string | number | undefined> : T extends `${string}:${infer Param}/${infer Rest}` ? {
|
|
451
449
|
[k in Param | keyof ExtractRouteParams<Rest>]: string | number;
|
|
@@ -456,7 +454,7 @@ type ExtractEndpoint<Method extends string, Path extends string> = Extract<Endpo
|
|
|
456
454
|
path: Path;
|
|
457
455
|
method: Method;
|
|
458
456
|
}>;
|
|
459
|
-
type PathsFor<M extends
|
|
457
|
+
type PathsFor<M extends Options["method"]> = Extract<Endpoints, {
|
|
460
458
|
method: M;
|
|
461
459
|
}>["path"];
|
|
462
460
|
type Query<Path extends string> = ExtractRouteParams<Path> & Record<string, string | number | undefined>;
|
|
@@ -580,6 +578,40 @@ declare const users: (client: Client) => {
|
|
|
580
578
|
update: (id: string, data: UpdateUserDto) => Promise<User>;
|
|
581
579
|
};
|
|
582
580
|
|
|
581
|
+
declare class TonightPass {
|
|
582
|
+
readonly client: Client;
|
|
583
|
+
readonly careers: {
|
|
584
|
+
categories: {
|
|
585
|
+
getAll: (query?: Query<"/careers/categories"> | undefined) => Promise<CareersCategory[]>;
|
|
586
|
+
};
|
|
587
|
+
employmentTypes: {
|
|
588
|
+
getAll: (query?: Query<"/careers/employmentTypes"> | undefined) => Promise<CareersEmploymentType[]>;
|
|
589
|
+
};
|
|
590
|
+
jobs: {
|
|
591
|
+
getAll: (query?: Query<"/careers/jobs"> | undefined) => Promise<CareersJob[]>;
|
|
592
|
+
get: (id: number) => Promise<CareersJob>;
|
|
593
|
+
};
|
|
594
|
+
offices: {
|
|
595
|
+
getAll: (query?: Query<"/careers/offices"> | undefined) => Promise<CareersOffice[]>;
|
|
596
|
+
};
|
|
597
|
+
};
|
|
598
|
+
readonly health: {
|
|
599
|
+
database: () => Promise<Health<"database">>;
|
|
600
|
+
http: () => Promise<Health<"app">>;
|
|
601
|
+
};
|
|
602
|
+
readonly profiles: {
|
|
603
|
+
get: (username: string) => Promise<CareersCategory[] | CareersEmploymentType[] | CareersJob[] | CareersJob | CareersOffice[] | Health<"database"> | Health<"app"> | UserIdentity | User[] | User | UserIdentifier>;
|
|
604
|
+
};
|
|
605
|
+
readonly users: {
|
|
606
|
+
getAll: () => Promise<User[]>;
|
|
607
|
+
get: (id: string) => Promise<CareersCategory[] | CareersEmploymentType[] | CareersJob[] | CareersJob | CareersOffice[] | Health<"database"> | Health<"app"> | UserIdentity | User[] | User | UserIdentifier>;
|
|
608
|
+
me: () => Promise<User>;
|
|
609
|
+
check: (identifier: string) => Promise<CareersCategory[] | CareersEmploymentType[] | CareersJob[] | CareersJob | CareersOffice[] | Health<"database"> | Health<"app"> | UserIdentity | User[] | User | UserIdentifier>;
|
|
610
|
+
update: (id: string, data: UpdateUserDto) => Promise<User>;
|
|
611
|
+
};
|
|
612
|
+
constructor(options: ClientOptions);
|
|
613
|
+
}
|
|
614
|
+
|
|
583
615
|
declare const isBrowser: boolean;
|
|
584
616
|
|
|
585
|
-
export { type APIRequestOptions, type APIResponse, BCRYPT_HASH, type CareersCategory, type CareersEmploymentType, type CareersEndpoints, type CareersJob, type CareersOffice, Client, type ClientOptions, CreateUserDto, Currency, DEFAULT_API_URL, EMAIL_REGEX, type Endpoint, type Endpoints, type ErroredAPIResponse, type Event, type EventStyle, EventStyleType, type EventTicket, EventTicketCategory, type EventTicketType, EventType, type ExtractEndpoint, type ExtractRouteParams, type Health, type HealthEndpoints, IMAGE_URL_REGEX, Language, type Location$1 as Location, NAME_REGEX, type Order, type OrderItem, OrderStatus, type Organization, type OrganizationIdentity, type OrganizationMember, OrganizationMemberRole, type OrganizationSocialLink, OrganizationSocialType, PASSWORD_REGEX, PHONE_NUMBER_REGEX, type PathsFor, type Profile, type ProfileEndpoints, type ProfileMetadata, type PromoCode, type Query, SLUG_REGEX, SignInUserDto, type SuccessfulAPIResponse, TonightPassAPIError, UpdateUserDto, type User, type UserConnection, type UserConnectionClient, type UserConnectionDevice, type UserConnectionOS, type UserEndpoints, type UserIdentifier, type UserIdentity, type UserIdentityGender, type UserPreferences, UserRole, type UserToken, UserTokenType, health, isBrowser, request, sdk, users };
|
|
617
|
+
export { type APIRequestOptions, type APIResponse, BCRYPT_HASH, type CareersCategory, type CareersEmploymentType, type CareersEndpoints, type CareersJob, type CareersOffice, Client, type ClientOptions, CreateUserDto, Currency, DEFAULT_API_URL, EMAIL_REGEX, type Endpoint, type Endpoints, type ErroredAPIResponse, type Event, type EventStyle, EventStyleType, type EventTicket, EventTicketCategory, type EventTicketType, EventType, type ExtractEndpoint, type ExtractRouteParams, type Health, type HealthEndpoints, IMAGE_URL_REGEX, Language, type Location$1 as Location, NAME_REGEX, type Order, type OrderItem, OrderStatus, type Organization, type OrganizationIdentity, type OrganizationMember, OrganizationMemberRole, type OrganizationSocialLink, OrganizationSocialType, PASSWORD_REGEX, PHONE_NUMBER_REGEX, type PathsFor, type Profile, type ProfileEndpoints, type ProfileMetadata, type PromoCode, type Query, SLUG_REGEX, SignInUserDto, type SuccessfulAPIResponse, TonightPass, TonightPassAPIError, UpdateUserDto, type User, type UserConnection, type UserConnectionClient, type UserConnectionDevice, type UserConnectionOS, type UserEndpoints, type UserIdentifier, type UserIdentity, type UserIdentityGender, type UserPreferences, UserRole, type UserToken, UserTokenType, health, isBrowser, request, sdk, users };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import * as redaxios from 'redaxios';
|
|
2
1
|
import { Options, Response } from 'redaxios';
|
|
3
|
-
import { Method } from 'axios';
|
|
4
2
|
import { ParamValue } from 'pathcat';
|
|
5
3
|
|
|
6
4
|
declare const DEFAULT_API_URL = "https://api.tonightpass.com";
|
|
@@ -445,7 +443,7 @@ declare class UpdateIdentityDto implements Partial<Pick<UserIdentity, "firstName
|
|
|
445
443
|
|
|
446
444
|
interface APIRequestOptions extends Options {
|
|
447
445
|
}
|
|
448
|
-
declare const request: <T>(url: string, options?: Options) => Promise<
|
|
446
|
+
declare const request: <T>(url: string, options?: Options) => Promise<Response<APIResponse<T>>>;
|
|
449
447
|
|
|
450
448
|
type ExtractRouteParams<T extends string> = string extends T ? Record<string, string | number | undefined> : T extends `${string}:${infer Param}/${infer Rest}` ? {
|
|
451
449
|
[k in Param | keyof ExtractRouteParams<Rest>]: string | number;
|
|
@@ -456,7 +454,7 @@ type ExtractEndpoint<Method extends string, Path extends string> = Extract<Endpo
|
|
|
456
454
|
path: Path;
|
|
457
455
|
method: Method;
|
|
458
456
|
}>;
|
|
459
|
-
type PathsFor<M extends
|
|
457
|
+
type PathsFor<M extends Options["method"]> = Extract<Endpoints, {
|
|
460
458
|
method: M;
|
|
461
459
|
}>["path"];
|
|
462
460
|
type Query<Path extends string> = ExtractRouteParams<Path> & Record<string, string | number | undefined>;
|
|
@@ -580,6 +578,40 @@ declare const users: (client: Client) => {
|
|
|
580
578
|
update: (id: string, data: UpdateUserDto) => Promise<User>;
|
|
581
579
|
};
|
|
582
580
|
|
|
581
|
+
declare class TonightPass {
|
|
582
|
+
readonly client: Client;
|
|
583
|
+
readonly careers: {
|
|
584
|
+
categories: {
|
|
585
|
+
getAll: (query?: Query<"/careers/categories"> | undefined) => Promise<CareersCategory[]>;
|
|
586
|
+
};
|
|
587
|
+
employmentTypes: {
|
|
588
|
+
getAll: (query?: Query<"/careers/employmentTypes"> | undefined) => Promise<CareersEmploymentType[]>;
|
|
589
|
+
};
|
|
590
|
+
jobs: {
|
|
591
|
+
getAll: (query?: Query<"/careers/jobs"> | undefined) => Promise<CareersJob[]>;
|
|
592
|
+
get: (id: number) => Promise<CareersJob>;
|
|
593
|
+
};
|
|
594
|
+
offices: {
|
|
595
|
+
getAll: (query?: Query<"/careers/offices"> | undefined) => Promise<CareersOffice[]>;
|
|
596
|
+
};
|
|
597
|
+
};
|
|
598
|
+
readonly health: {
|
|
599
|
+
database: () => Promise<Health<"database">>;
|
|
600
|
+
http: () => Promise<Health<"app">>;
|
|
601
|
+
};
|
|
602
|
+
readonly profiles: {
|
|
603
|
+
get: (username: string) => Promise<CareersCategory[] | CareersEmploymentType[] | CareersJob[] | CareersJob | CareersOffice[] | Health<"database"> | Health<"app"> | UserIdentity | User[] | User | UserIdentifier>;
|
|
604
|
+
};
|
|
605
|
+
readonly users: {
|
|
606
|
+
getAll: () => Promise<User[]>;
|
|
607
|
+
get: (id: string) => Promise<CareersCategory[] | CareersEmploymentType[] | CareersJob[] | CareersJob | CareersOffice[] | Health<"database"> | Health<"app"> | UserIdentity | User[] | User | UserIdentifier>;
|
|
608
|
+
me: () => Promise<User>;
|
|
609
|
+
check: (identifier: string) => Promise<CareersCategory[] | CareersEmploymentType[] | CareersJob[] | CareersJob | CareersOffice[] | Health<"database"> | Health<"app"> | UserIdentity | User[] | User | UserIdentifier>;
|
|
610
|
+
update: (id: string, data: UpdateUserDto) => Promise<User>;
|
|
611
|
+
};
|
|
612
|
+
constructor(options: ClientOptions);
|
|
613
|
+
}
|
|
614
|
+
|
|
583
615
|
declare const isBrowser: boolean;
|
|
584
616
|
|
|
585
|
-
export { type APIRequestOptions, type APIResponse, BCRYPT_HASH, type CareersCategory, type CareersEmploymentType, type CareersEndpoints, type CareersJob, type CareersOffice, Client, type ClientOptions, CreateUserDto, Currency, DEFAULT_API_URL, EMAIL_REGEX, type Endpoint, type Endpoints, type ErroredAPIResponse, type Event, type EventStyle, EventStyleType, type EventTicket, EventTicketCategory, type EventTicketType, EventType, type ExtractEndpoint, type ExtractRouteParams, type Health, type HealthEndpoints, IMAGE_URL_REGEX, Language, type Location$1 as Location, NAME_REGEX, type Order, type OrderItem, OrderStatus, type Organization, type OrganizationIdentity, type OrganizationMember, OrganizationMemberRole, type OrganizationSocialLink, OrganizationSocialType, PASSWORD_REGEX, PHONE_NUMBER_REGEX, type PathsFor, type Profile, type ProfileEndpoints, type ProfileMetadata, type PromoCode, type Query, SLUG_REGEX, SignInUserDto, type SuccessfulAPIResponse, TonightPassAPIError, UpdateUserDto, type User, type UserConnection, type UserConnectionClient, type UserConnectionDevice, type UserConnectionOS, type UserEndpoints, type UserIdentifier, type UserIdentity, type UserIdentityGender, type UserPreferences, UserRole, type UserToken, UserTokenType, health, isBrowser, request, sdk, users };
|
|
617
|
+
export { type APIRequestOptions, type APIResponse, BCRYPT_HASH, type CareersCategory, type CareersEmploymentType, type CareersEndpoints, type CareersJob, type CareersOffice, Client, type ClientOptions, CreateUserDto, Currency, DEFAULT_API_URL, EMAIL_REGEX, type Endpoint, type Endpoints, type ErroredAPIResponse, type Event, type EventStyle, EventStyleType, type EventTicket, EventTicketCategory, type EventTicketType, EventType, type ExtractEndpoint, type ExtractRouteParams, type Health, type HealthEndpoints, IMAGE_URL_REGEX, Language, type Location$1 as Location, NAME_REGEX, type Order, type OrderItem, OrderStatus, type Organization, type OrganizationIdentity, type OrganizationMember, OrganizationMemberRole, type OrganizationSocialLink, OrganizationSocialType, PASSWORD_REGEX, PHONE_NUMBER_REGEX, type PathsFor, type Profile, type ProfileEndpoints, type ProfileMetadata, type PromoCode, type Query, SLUG_REGEX, SignInUserDto, type SuccessfulAPIResponse, TonightPass, TonightPassAPIError, UpdateUserDto, type User, type UserConnection, type UserConnectionClient, type UserConnectionDevice, type UserConnectionOS, type UserEndpoints, type UserIdentifier, type UserIdentity, type UserIdentityGender, type UserPreferences, UserRole, type UserToken, UserTokenType, health, isBrowser, request, sdk, users };
|
package/dist/index.js
CHANGED
|
@@ -3,42 +3,43 @@
|
|
|
3
3
|
require('reflect-metadata');
|
|
4
4
|
var classTransformer = require('class-transformer');
|
|
5
5
|
var classValidator = require('class-validator');
|
|
6
|
-
var
|
|
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
|
|
11
|
+
var H__default = /*#__PURE__*/_interopDefault(H);
|
|
12
12
|
|
|
13
|
-
var
|
|
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 =
|
|
16
|
-
exports.Client =
|
|
17
|
-
exports.CreateUserDto =
|
|
18
|
-
exports.Currency =
|
|
19
|
-
exports.DEFAULT_API_URL =
|
|
20
|
-
exports.EMAIL_REGEX =
|
|
21
|
-
exports.EventStyleType =
|
|
22
|
-
exports.EventTicketCategory =
|
|
23
|
-
exports.EventType =
|
|
24
|
-
exports.IMAGE_URL_REGEX =
|
|
25
|
-
exports.Language =
|
|
26
|
-
exports.NAME_REGEX =
|
|
27
|
-
exports.OrderStatus =
|
|
28
|
-
exports.OrganizationMemberRole =
|
|
29
|
-
exports.OrganizationSocialType =
|
|
30
|
-
exports.PASSWORD_REGEX =
|
|
31
|
-
exports.PHONE_NUMBER_REGEX =
|
|
32
|
-
exports.SLUG_REGEX =
|
|
33
|
-
exports.SignInUserDto =
|
|
34
|
-
exports.
|
|
15
|
+
exports.BCRYPT_HASH = de;
|
|
16
|
+
exports.Client = x;
|
|
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;
|
|
35
36
|
exports.UpdateUserDto = h;
|
|
36
|
-
exports.UserRole =
|
|
37
|
-
exports.UserTokenType =
|
|
38
|
-
exports.health =
|
|
39
|
-
exports.isBrowser =
|
|
40
|
-
exports.request =
|
|
41
|
-
exports.sdk =
|
|
42
|
-
exports.users =
|
|
37
|
+
exports.UserRole = J;
|
|
38
|
+
exports.UserTokenType = Z;
|
|
39
|
+
exports.health = _;
|
|
40
|
+
exports.isBrowser = y;
|
|
41
|
+
exports.request = G;
|
|
42
|
+
exports.sdk = P;
|
|
43
|
+
exports.users = T;
|
|
43
44
|
//# sourceMappingURL=out.js.map
|
|
44
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"],"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"],"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 { Method } from \"axios\";\nimport { 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 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"]}
|
|
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
|
|
4
|
+
import H from 'redaxios';
|
|
5
5
|
import { pathcat } from 'pathcat';
|
|
6
6
|
|
|
7
|
-
var
|
|
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 {
|
|
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
|
package/dist/index.mjs.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"],"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"],"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 { Method } from \"axios\";\nimport { 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 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"]}
|
|
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.
|
|
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.
|
|
24
|
+
"@types/node": "20.12.2",
|
|
25
25
|
"tsx": "^4.7.1",
|
|
26
26
|
"typescript": "^5.0.0"
|
|
27
27
|
},
|
package/src/index.ts
CHANGED
package/src/rest/client.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { Method } from "axios";
|
|
2
1
|
import { ParamValue, pathcat } from "pathcat";
|
|
3
2
|
import { Options, Response } from "redaxios";
|
|
4
3
|
|
|
@@ -6,14 +5,6 @@ import { APIResponse, Endpoints, ErroredAPIResponse } from "./endpoints";
|
|
|
6
5
|
import { APIRequestOptions, request } from "./request";
|
|
7
6
|
import { DEFAULT_API_URL } from "../constants";
|
|
8
7
|
|
|
9
|
-
// type ExtractRouteParams<T extends string> = string extends T
|
|
10
|
-
// ? string
|
|
11
|
-
// : T extends `${string}:${infer Param}/${infer Rest}`
|
|
12
|
-
// ? Param | ExtractRouteParams<Rest>
|
|
13
|
-
// : T extends `${string}:${infer Param}`
|
|
14
|
-
// ? Param
|
|
15
|
-
// : never;
|
|
16
|
-
|
|
17
8
|
export type ExtractRouteParams<T extends string> = string extends T
|
|
18
9
|
? Record<string, string | number | undefined>
|
|
19
10
|
: T extends `${string}:${infer Param}/${infer Rest}`
|
|
@@ -27,7 +18,7 @@ export type ExtractEndpoint<
|
|
|
27
18
|
Path extends string,
|
|
28
19
|
> = Extract<Endpoints, { path: Path; method: Method }>;
|
|
29
20
|
|
|
30
|
-
export type PathsFor<M extends
|
|
21
|
+
export type PathsFor<M extends Options["method"]> = Extract<
|
|
31
22
|
Endpoints,
|
|
32
23
|
{ method: M }
|
|
33
24
|
>["path"];
|
|
@@ -142,8 +133,6 @@ export class Client {
|
|
|
142
133
|
...options,
|
|
143
134
|
});
|
|
144
135
|
|
|
145
|
-
// TODO: Add error catcher
|
|
146
|
-
|
|
147
136
|
const result = response.data;
|
|
148
137
|
|
|
149
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:
|
|
26
|
-
throw error;
|
|
26
|
+
.catch((error: Response<ErroredAPIResponse>) => {
|
|
27
|
+
throw error.data;
|
|
27
28
|
});
|
|
28
29
|
|
|
29
30
|
return response;
|
package/src/tonightpass.ts
CHANGED
|
@@ -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
|
+
}
|