@meaple-com/core 1.0.0
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/README.md +120 -0
- package/dist/index.d.mts +122 -0
- package/dist/index.d.ts +122 -0
- package/dist/index.js +383 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +338 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +70 -0
package/README.md
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# Meaple SDK Core
|
|
2
|
+
|
|
3
|
+
SDK oficial do Meaple para JavaScript/TypeScript com sistema de autenticação global simplificado e suporte multi-tenant.
|
|
4
|
+
|
|
5
|
+
## Instalação
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
bun add @meaple-com/core
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Uso Básico
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
import { MeapleSDK, setGlobalToken, clearGlobalToken } from '@meaple-com/core';
|
|
15
|
+
|
|
16
|
+
const sdk = new MeapleSDK({
|
|
17
|
+
publicKey: 'pk_brasuca_0001',
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
// Rotas públicas
|
|
21
|
+
const events = await sdk.events.find();
|
|
22
|
+
|
|
23
|
+
// Login
|
|
24
|
+
const { accessToken, refreshToken } = await sdk.auth.authenticate({
|
|
25
|
+
email: 'user@example.com',
|
|
26
|
+
password: 'password123',
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
// Token global
|
|
30
|
+
setGlobalToken(accessToken, refreshToken, async refreshToken => {
|
|
31
|
+
const response = await sdk.auth.refreshToken(refreshToken);
|
|
32
|
+
return {
|
|
33
|
+
accessToken: response.accessToken,
|
|
34
|
+
refreshToken: response.refreshToken,
|
|
35
|
+
};
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
// Rotas autenticadas
|
|
39
|
+
const profile = await sdk.users.getMe();
|
|
40
|
+
const order = await sdk.orders.create({
|
|
41
|
+
eventId: 'event-id',
|
|
42
|
+
buyer: { name: 'User', email: 'user@example.com' },
|
|
43
|
+
items: [{ ticketTypeId: 'ticket-id', quantity: 2 }],
|
|
44
|
+
paymentMethod: 'pix',
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
// Logout
|
|
48
|
+
clearGlobalToken();
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## APIs Disponíveis
|
|
52
|
+
|
|
53
|
+
### Autenticação
|
|
54
|
+
|
|
55
|
+
- `auth.authenticate()` - Login
|
|
56
|
+
- `auth.refreshToken()` - Renovar token
|
|
57
|
+
- `auth.forgotPassword()` - Esqueci senha
|
|
58
|
+
- `auth.resetPassword()` - Reset senha
|
|
59
|
+
|
|
60
|
+
### Usuários
|
|
61
|
+
|
|
62
|
+
- `users.create()` - Registrar
|
|
63
|
+
- `users.getMe()` - Meu perfil
|
|
64
|
+
- `users.update()` - Atualizar perfil
|
|
65
|
+
- `users.updateEmail()` - Alterar email
|
|
66
|
+
- `users.updatePassword()` - Alterar senha
|
|
67
|
+
|
|
68
|
+
### Eventos
|
|
69
|
+
|
|
70
|
+
- `events.find()` - Buscar eventos
|
|
71
|
+
- `events.getProducts()` - Buscar produtos do evento
|
|
72
|
+
- `events.getTickets()` - Buscar ingressos do evento
|
|
73
|
+
- `events.getUserEventTickets()` - Buscar ingressos do usuário
|
|
74
|
+
- `events.createReminder()` - Criar lembrete
|
|
75
|
+
|
|
76
|
+
### Pedidos
|
|
77
|
+
|
|
78
|
+
- `orders.create()` - Criar pedido
|
|
79
|
+
- `orders.get()` - Ver pedido
|
|
80
|
+
- `orders.createPaymentIntent()` - Pagamento
|
|
81
|
+
- `orders.purchase()` - Finalizar compra
|
|
82
|
+
|
|
83
|
+
### Outros
|
|
84
|
+
|
|
85
|
+
- `uploads.upload()` - Upload arquivos
|
|
86
|
+
- `payments.getFee()` - Calcular taxa
|
|
87
|
+
- `channels.get()` - Ver canal
|
|
88
|
+
|
|
89
|
+
## Configuração
|
|
90
|
+
|
|
91
|
+
```typescript
|
|
92
|
+
const sdk = new MeapleSDK({
|
|
93
|
+
publicKey: 'pk_required', // Obrigatório
|
|
94
|
+
baseURL: 'https://custom.api', // Opcional
|
|
95
|
+
timeout: 30000, // Opcional
|
|
96
|
+
token: 'jwt-token', // Opcional
|
|
97
|
+
});
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Multi-Tenant
|
|
101
|
+
|
|
102
|
+
```typescript
|
|
103
|
+
import { MeapleSDK, switchTenant } from '@meaple-com/core';
|
|
104
|
+
|
|
105
|
+
const sdk = new MeapleSDK({ publicKey: 'pk_brasuca_0001' });
|
|
106
|
+
switchTenant(sdk, 'pk_multi_arena_0002');
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## TypeScript
|
|
110
|
+
|
|
111
|
+
```typescript
|
|
112
|
+
import type {
|
|
113
|
+
Event,
|
|
114
|
+
User,
|
|
115
|
+
Order,
|
|
116
|
+
AuthenticateUserRequest,
|
|
117
|
+
EventsResponse,
|
|
118
|
+
MeapleSDKOptions,
|
|
119
|
+
} from '@meaple-com/core';
|
|
120
|
+
```
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { AxiosInstance, AxiosRequestConfig } from 'axios';
|
|
2
|
+
import { CategoryProps, ChannelProps, EventProps, CheckCouponProps, CouponProps, FindEventsParams, FindEventsProps, FindEventProductsProps, FindEventTicketsProps, FindUserEventTicketsProps, CreateEventReminderProps, CreateOrderProps, CreatedOrderProps, GetOrderProps, CreateTicketFileProps, UpdateUserTicketProps, TransferTicketProps, CreateUserProps, UserProps, UpdateUserProps, UpdateUserEmailProps, UpdateUserPasswordProps, CouponsListProps, UserOrderProps } from '@meaple-com/types';
|
|
3
|
+
|
|
4
|
+
interface ApiResponse<T = any> {
|
|
5
|
+
data: T;
|
|
6
|
+
success?: boolean;
|
|
7
|
+
timestamp?: string;
|
|
8
|
+
requestId?: string;
|
|
9
|
+
}
|
|
10
|
+
interface ApiConfig {
|
|
11
|
+
baseURL?: string;
|
|
12
|
+
timeout?: number;
|
|
13
|
+
headers?: Record<string, string>;
|
|
14
|
+
}
|
|
15
|
+
interface RequestInterceptor {
|
|
16
|
+
onRequest(config: any): Promise<any>;
|
|
17
|
+
}
|
|
18
|
+
declare class SimpleApiClient {
|
|
19
|
+
private axios;
|
|
20
|
+
private interceptors;
|
|
21
|
+
constructor(config?: ApiConfig);
|
|
22
|
+
setDefaultHeader(name: string, value: string): void;
|
|
23
|
+
removeDefaultHeader(name: string): void;
|
|
24
|
+
setBaseURL(baseURL: string): void;
|
|
25
|
+
setBearerToken(token: string): void;
|
|
26
|
+
get axiosInstance(): AxiosInstance;
|
|
27
|
+
addRequestInterceptor(interceptor: RequestInterceptor): void;
|
|
28
|
+
addResponseInterceptor(onFulfilled?: (response: any) => any, onRejected?: (error: any) => any): void;
|
|
29
|
+
clearInterceptors(): void;
|
|
30
|
+
get<T = any>(url: string, config?: AxiosRequestConfig): Promise<ApiResponse<T>>;
|
|
31
|
+
post<T = any>(url: string, data?: any, config?: AxiosRequestConfig): Promise<ApiResponse<T>>;
|
|
32
|
+
put<T = any>(url: string, data?: any, config?: AxiosRequestConfig): Promise<ApiResponse<T>>;
|
|
33
|
+
patch<T = any>(url: string, data?: any, config?: AxiosRequestConfig): Promise<ApiResponse<T>>;
|
|
34
|
+
delete<T = any>(url: string, config?: AxiosRequestConfig): Promise<ApiResponse<T>>;
|
|
35
|
+
private setupInterceptors;
|
|
36
|
+
private formatResponse;
|
|
37
|
+
}
|
|
38
|
+
declare const api: SimpleApiClient;
|
|
39
|
+
|
|
40
|
+
declare class CategoriesResource {
|
|
41
|
+
find(): Promise<CategoryProps[]>;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
declare class ChannelsResource {
|
|
45
|
+
get(slug: string): Promise<ChannelProps>;
|
|
46
|
+
getEvents(channelId: string): Promise<EventProps[]>;
|
|
47
|
+
getEvent(channelSlug: string, eventSlug: string): Promise<EventProps>;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
declare class CouponResource {
|
|
51
|
+
check({ eventId, couponCode }: CheckCouponProps): Promise<CouponProps>;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
declare class EventsResource {
|
|
55
|
+
find(params?: FindEventsParams): Promise<FindEventsProps>;
|
|
56
|
+
getProducts(eventId: string, privateToken?: string | null): Promise<FindEventProductsProps>;
|
|
57
|
+
getTickets(eventId: string, privateToken?: string | null, predecessorIds?: string[]): Promise<FindEventTicketsProps>;
|
|
58
|
+
getUserEventTickets(eventId: string): Promise<FindUserEventTicketsProps>;
|
|
59
|
+
createReminder(eventId: string, data: CreateEventReminderProps): Promise<{
|
|
60
|
+
message: string;
|
|
61
|
+
}>;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
interface QueryParams {
|
|
65
|
+
[key: string]: string | number | boolean | undefined | null | (string | number | boolean)[];
|
|
66
|
+
}
|
|
67
|
+
interface Headers {
|
|
68
|
+
[key: string]: string;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
declare class OrdersResource {
|
|
72
|
+
create(data: CreateOrderProps): Promise<CreatedOrderProps>;
|
|
73
|
+
get(orderId: string, headers?: Headers): Promise<GetOrderProps>;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
declare class TicketsResource {
|
|
77
|
+
createFile(userTicketId: string, params: CreateTicketFileProps): Promise<Blob>;
|
|
78
|
+
editUserTicket(userTicketId: string, data: UpdateUserTicketProps): Promise<void>;
|
|
79
|
+
transfer(ticketId: string, data: TransferTicketProps): Promise<void>;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
declare class UsersResource {
|
|
83
|
+
create(data: CreateUserProps): Promise<UserProps>;
|
|
84
|
+
getMe(): Promise<UserProps>;
|
|
85
|
+
update(data: UpdateUserProps): Promise<UserProps>;
|
|
86
|
+
updateEmail(data: UpdateUserEmailProps): Promise<{
|
|
87
|
+
message: string;
|
|
88
|
+
}>;
|
|
89
|
+
updatePassword(data: UpdateUserPasswordProps): Promise<{
|
|
90
|
+
message: string;
|
|
91
|
+
}>;
|
|
92
|
+
delete(): Promise<{
|
|
93
|
+
message: string;
|
|
94
|
+
}>;
|
|
95
|
+
getPromoterCoupons(params?: {
|
|
96
|
+
limit?: number;
|
|
97
|
+
cursor?: string;
|
|
98
|
+
}): Promise<CouponsListProps>;
|
|
99
|
+
getOrders(params?: QueryParams): Promise<UserOrderProps[]>;
|
|
100
|
+
getEvents(params?: QueryParams): Promise<EventProps[]>;
|
|
101
|
+
refundOrder(orderId: string): Promise<{
|
|
102
|
+
message: string;
|
|
103
|
+
}>;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
interface MeapleSDKOptions {
|
|
107
|
+
publicKey: string;
|
|
108
|
+
baseURL: string;
|
|
109
|
+
}
|
|
110
|
+
declare class MeapleSDK {
|
|
111
|
+
users: UsersResource;
|
|
112
|
+
events: EventsResource;
|
|
113
|
+
orders: OrdersResource;
|
|
114
|
+
channels: ChannelsResource;
|
|
115
|
+
categories: CategoriesResource;
|
|
116
|
+
coupon: CouponResource;
|
|
117
|
+
tickets: TicketsResource;
|
|
118
|
+
constructor(config: MeapleSDKOptions);
|
|
119
|
+
setGlobalToken(token: string): void;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
export { CategoriesResource, ChannelsResource, CouponResource, EventsResource, MeapleSDK, type MeapleSDKOptions, OrdersResource, TicketsResource, UsersResource, api };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { AxiosInstance, AxiosRequestConfig } from 'axios';
|
|
2
|
+
import { CategoryProps, ChannelProps, EventProps, CheckCouponProps, CouponProps, FindEventsParams, FindEventsProps, FindEventProductsProps, FindEventTicketsProps, FindUserEventTicketsProps, CreateEventReminderProps, CreateOrderProps, CreatedOrderProps, GetOrderProps, CreateTicketFileProps, UpdateUserTicketProps, TransferTicketProps, CreateUserProps, UserProps, UpdateUserProps, UpdateUserEmailProps, UpdateUserPasswordProps, CouponsListProps, UserOrderProps } from '@meaple-com/types';
|
|
3
|
+
|
|
4
|
+
interface ApiResponse<T = any> {
|
|
5
|
+
data: T;
|
|
6
|
+
success?: boolean;
|
|
7
|
+
timestamp?: string;
|
|
8
|
+
requestId?: string;
|
|
9
|
+
}
|
|
10
|
+
interface ApiConfig {
|
|
11
|
+
baseURL?: string;
|
|
12
|
+
timeout?: number;
|
|
13
|
+
headers?: Record<string, string>;
|
|
14
|
+
}
|
|
15
|
+
interface RequestInterceptor {
|
|
16
|
+
onRequest(config: any): Promise<any>;
|
|
17
|
+
}
|
|
18
|
+
declare class SimpleApiClient {
|
|
19
|
+
private axios;
|
|
20
|
+
private interceptors;
|
|
21
|
+
constructor(config?: ApiConfig);
|
|
22
|
+
setDefaultHeader(name: string, value: string): void;
|
|
23
|
+
removeDefaultHeader(name: string): void;
|
|
24
|
+
setBaseURL(baseURL: string): void;
|
|
25
|
+
setBearerToken(token: string): void;
|
|
26
|
+
get axiosInstance(): AxiosInstance;
|
|
27
|
+
addRequestInterceptor(interceptor: RequestInterceptor): void;
|
|
28
|
+
addResponseInterceptor(onFulfilled?: (response: any) => any, onRejected?: (error: any) => any): void;
|
|
29
|
+
clearInterceptors(): void;
|
|
30
|
+
get<T = any>(url: string, config?: AxiosRequestConfig): Promise<ApiResponse<T>>;
|
|
31
|
+
post<T = any>(url: string, data?: any, config?: AxiosRequestConfig): Promise<ApiResponse<T>>;
|
|
32
|
+
put<T = any>(url: string, data?: any, config?: AxiosRequestConfig): Promise<ApiResponse<T>>;
|
|
33
|
+
patch<T = any>(url: string, data?: any, config?: AxiosRequestConfig): Promise<ApiResponse<T>>;
|
|
34
|
+
delete<T = any>(url: string, config?: AxiosRequestConfig): Promise<ApiResponse<T>>;
|
|
35
|
+
private setupInterceptors;
|
|
36
|
+
private formatResponse;
|
|
37
|
+
}
|
|
38
|
+
declare const api: SimpleApiClient;
|
|
39
|
+
|
|
40
|
+
declare class CategoriesResource {
|
|
41
|
+
find(): Promise<CategoryProps[]>;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
declare class ChannelsResource {
|
|
45
|
+
get(slug: string): Promise<ChannelProps>;
|
|
46
|
+
getEvents(channelId: string): Promise<EventProps[]>;
|
|
47
|
+
getEvent(channelSlug: string, eventSlug: string): Promise<EventProps>;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
declare class CouponResource {
|
|
51
|
+
check({ eventId, couponCode }: CheckCouponProps): Promise<CouponProps>;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
declare class EventsResource {
|
|
55
|
+
find(params?: FindEventsParams): Promise<FindEventsProps>;
|
|
56
|
+
getProducts(eventId: string, privateToken?: string | null): Promise<FindEventProductsProps>;
|
|
57
|
+
getTickets(eventId: string, privateToken?: string | null, predecessorIds?: string[]): Promise<FindEventTicketsProps>;
|
|
58
|
+
getUserEventTickets(eventId: string): Promise<FindUserEventTicketsProps>;
|
|
59
|
+
createReminder(eventId: string, data: CreateEventReminderProps): Promise<{
|
|
60
|
+
message: string;
|
|
61
|
+
}>;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
interface QueryParams {
|
|
65
|
+
[key: string]: string | number | boolean | undefined | null | (string | number | boolean)[];
|
|
66
|
+
}
|
|
67
|
+
interface Headers {
|
|
68
|
+
[key: string]: string;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
declare class OrdersResource {
|
|
72
|
+
create(data: CreateOrderProps): Promise<CreatedOrderProps>;
|
|
73
|
+
get(orderId: string, headers?: Headers): Promise<GetOrderProps>;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
declare class TicketsResource {
|
|
77
|
+
createFile(userTicketId: string, params: CreateTicketFileProps): Promise<Blob>;
|
|
78
|
+
editUserTicket(userTicketId: string, data: UpdateUserTicketProps): Promise<void>;
|
|
79
|
+
transfer(ticketId: string, data: TransferTicketProps): Promise<void>;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
declare class UsersResource {
|
|
83
|
+
create(data: CreateUserProps): Promise<UserProps>;
|
|
84
|
+
getMe(): Promise<UserProps>;
|
|
85
|
+
update(data: UpdateUserProps): Promise<UserProps>;
|
|
86
|
+
updateEmail(data: UpdateUserEmailProps): Promise<{
|
|
87
|
+
message: string;
|
|
88
|
+
}>;
|
|
89
|
+
updatePassword(data: UpdateUserPasswordProps): Promise<{
|
|
90
|
+
message: string;
|
|
91
|
+
}>;
|
|
92
|
+
delete(): Promise<{
|
|
93
|
+
message: string;
|
|
94
|
+
}>;
|
|
95
|
+
getPromoterCoupons(params?: {
|
|
96
|
+
limit?: number;
|
|
97
|
+
cursor?: string;
|
|
98
|
+
}): Promise<CouponsListProps>;
|
|
99
|
+
getOrders(params?: QueryParams): Promise<UserOrderProps[]>;
|
|
100
|
+
getEvents(params?: QueryParams): Promise<EventProps[]>;
|
|
101
|
+
refundOrder(orderId: string): Promise<{
|
|
102
|
+
message: string;
|
|
103
|
+
}>;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
interface MeapleSDKOptions {
|
|
107
|
+
publicKey: string;
|
|
108
|
+
baseURL: string;
|
|
109
|
+
}
|
|
110
|
+
declare class MeapleSDK {
|
|
111
|
+
users: UsersResource;
|
|
112
|
+
events: EventsResource;
|
|
113
|
+
orders: OrdersResource;
|
|
114
|
+
channels: ChannelsResource;
|
|
115
|
+
categories: CategoriesResource;
|
|
116
|
+
coupon: CouponResource;
|
|
117
|
+
tickets: TicketsResource;
|
|
118
|
+
constructor(config: MeapleSDKOptions);
|
|
119
|
+
setGlobalToken(token: string): void;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
export { CategoriesResource, ChannelsResource, CouponResource, EventsResource, MeapleSDK, type MeapleSDKOptions, OrdersResource, TicketsResource, UsersResource, api };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// src/index.ts
|
|
31
|
+
var index_exports = {};
|
|
32
|
+
__export(index_exports, {
|
|
33
|
+
CategoriesResource: () => CategoriesResource,
|
|
34
|
+
ChannelsResource: () => ChannelsResource,
|
|
35
|
+
CouponResource: () => CouponResource,
|
|
36
|
+
EventsResource: () => EventsResource,
|
|
37
|
+
MeapleSDK: () => MeapleSDK,
|
|
38
|
+
OrdersResource: () => OrdersResource,
|
|
39
|
+
TicketsResource: () => TicketsResource,
|
|
40
|
+
UsersResource: () => UsersResource,
|
|
41
|
+
api: () => api
|
|
42
|
+
});
|
|
43
|
+
module.exports = __toCommonJS(index_exports);
|
|
44
|
+
|
|
45
|
+
// src/core/http/api.ts
|
|
46
|
+
var import_axios = __toESM(require("axios"));
|
|
47
|
+
var SimpleApiClient = class {
|
|
48
|
+
axios;
|
|
49
|
+
interceptors = { request: [], response: [] };
|
|
50
|
+
constructor(config = {}) {
|
|
51
|
+
this.axios = import_axios.default.create({
|
|
52
|
+
baseURL: config.baseURL ?? "http://localhost:1234",
|
|
53
|
+
timeout: config.timeout ?? 3e4,
|
|
54
|
+
headers: {
|
|
55
|
+
"Content-Type": "application/json",
|
|
56
|
+
...config.headers
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
this.setupInterceptors();
|
|
60
|
+
}
|
|
61
|
+
// --------------------------------------------------------------------------
|
|
62
|
+
// Configuration Methods
|
|
63
|
+
// --------------------------------------------------------------------------
|
|
64
|
+
setDefaultHeader(name, value) {
|
|
65
|
+
this.axios.defaults.headers.common[name] = value;
|
|
66
|
+
}
|
|
67
|
+
removeDefaultHeader(name) {
|
|
68
|
+
delete this.axios.defaults.headers.common[name];
|
|
69
|
+
}
|
|
70
|
+
setBaseURL(baseURL) {
|
|
71
|
+
this.axios.defaults.baseURL = baseURL;
|
|
72
|
+
}
|
|
73
|
+
setBearerToken(token) {
|
|
74
|
+
this.setDefaultHeader("Authorization", `Bearer ${token}`);
|
|
75
|
+
}
|
|
76
|
+
get axiosInstance() {
|
|
77
|
+
return this.axios;
|
|
78
|
+
}
|
|
79
|
+
// --------------------------------------------------------------------------
|
|
80
|
+
// Interceptors
|
|
81
|
+
// --------------------------------------------------------------------------
|
|
82
|
+
addRequestInterceptor(interceptor) {
|
|
83
|
+
this.interceptors.request.push(interceptor);
|
|
84
|
+
}
|
|
85
|
+
addResponseInterceptor(onFulfilled, onRejected) {
|
|
86
|
+
if (onFulfilled) {
|
|
87
|
+
this.interceptors.response.push(onFulfilled);
|
|
88
|
+
}
|
|
89
|
+
if (onRejected) {
|
|
90
|
+
this.axios.interceptors.response.use(void 0, onRejected);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
clearInterceptors() {
|
|
94
|
+
this.interceptors.request = [];
|
|
95
|
+
this.interceptors.response = [];
|
|
96
|
+
}
|
|
97
|
+
// --------------------------------------------------------------------------
|
|
98
|
+
// HTTP Methods
|
|
99
|
+
// --------------------------------------------------------------------------
|
|
100
|
+
async get(url, config) {
|
|
101
|
+
const response = await this.axios.get(url, config);
|
|
102
|
+
return this.formatResponse(response);
|
|
103
|
+
}
|
|
104
|
+
async post(url, data, config) {
|
|
105
|
+
const response = await this.axios.post(url, data, config);
|
|
106
|
+
return this.formatResponse(response);
|
|
107
|
+
}
|
|
108
|
+
async put(url, data, config) {
|
|
109
|
+
const response = await this.axios.put(url, data, config);
|
|
110
|
+
return this.formatResponse(response);
|
|
111
|
+
}
|
|
112
|
+
async patch(url, data, config) {
|
|
113
|
+
const response = await this.axios.patch(url, data, config);
|
|
114
|
+
return this.formatResponse(response);
|
|
115
|
+
}
|
|
116
|
+
async delete(url, config) {
|
|
117
|
+
const response = await this.axios.delete(url, config);
|
|
118
|
+
return this.formatResponse(response);
|
|
119
|
+
}
|
|
120
|
+
// --------------------------------------------------------------------------
|
|
121
|
+
// Private Methods
|
|
122
|
+
// --------------------------------------------------------------------------
|
|
123
|
+
setupInterceptors() {
|
|
124
|
+
this.axios.interceptors.request.use(async (config) => {
|
|
125
|
+
let processedConfig = config;
|
|
126
|
+
for (const interceptor of this.interceptors.request) {
|
|
127
|
+
processedConfig = await interceptor.onRequest(processedConfig);
|
|
128
|
+
}
|
|
129
|
+
return processedConfig;
|
|
130
|
+
});
|
|
131
|
+
this.axios.interceptors.response.use((response) => {
|
|
132
|
+
let processedResponse = response;
|
|
133
|
+
for (const interceptor of this.interceptors.response) {
|
|
134
|
+
processedResponse = interceptor(processedResponse);
|
|
135
|
+
}
|
|
136
|
+
return processedResponse;
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
formatResponse(response) {
|
|
140
|
+
const requestId = response.headers["x-request-id"];
|
|
141
|
+
if (response.data instanceof Blob) {
|
|
142
|
+
return {
|
|
143
|
+
data: response.data,
|
|
144
|
+
success: response.status >= 200 && response.status < 300,
|
|
145
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
146
|
+
...requestId && { requestId }
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
return {
|
|
150
|
+
data: response.data,
|
|
151
|
+
success: response.status >= 200 && response.status < 300,
|
|
152
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
153
|
+
...requestId && { requestId }
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
var api = new SimpleApiClient();
|
|
158
|
+
|
|
159
|
+
// src/resources/categories/index.ts
|
|
160
|
+
var CategoriesResource = class {
|
|
161
|
+
async find() {
|
|
162
|
+
const response = await api.get(
|
|
163
|
+
"/sdk/categories"
|
|
164
|
+
);
|
|
165
|
+
return response.data.categories;
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
// src/resources/channels/index.ts
|
|
170
|
+
var ChannelsResource = class {
|
|
171
|
+
async get(slug) {
|
|
172
|
+
const result = await api.get(`/sdk/channels/${slug}`);
|
|
173
|
+
return result.data;
|
|
174
|
+
}
|
|
175
|
+
async getEvents(channelId) {
|
|
176
|
+
const result = await api.get(
|
|
177
|
+
`/sdk/channels/${channelId}/events`
|
|
178
|
+
);
|
|
179
|
+
return result.data.events;
|
|
180
|
+
}
|
|
181
|
+
async getEvent(channelSlug, eventSlug) {
|
|
182
|
+
const result = await api.get(
|
|
183
|
+
`/sdk/channels/${channelSlug}/events/${eventSlug}`
|
|
184
|
+
);
|
|
185
|
+
return result.data.event;
|
|
186
|
+
}
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
// src/resources/coupon/index.ts
|
|
190
|
+
var CouponResource = class {
|
|
191
|
+
async check({ eventId, couponCode }) {
|
|
192
|
+
const response = await api.get(
|
|
193
|
+
`/sdk/events/${eventId}/coupons/${couponCode}/check`
|
|
194
|
+
);
|
|
195
|
+
return response.data.coupon;
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
// src/resources/events/index.ts
|
|
200
|
+
var formatTicket = (ticket) => ({
|
|
201
|
+
...ticket,
|
|
202
|
+
price: Number(ticket.price.toFixed(2))
|
|
203
|
+
});
|
|
204
|
+
var formatProducts = (product) => ({
|
|
205
|
+
...product,
|
|
206
|
+
price: Number(product.price.toFixed(2))
|
|
207
|
+
});
|
|
208
|
+
var EventsResource = class {
|
|
209
|
+
// Find events
|
|
210
|
+
async find(params) {
|
|
211
|
+
const response = await api.get("/sdk/events", {
|
|
212
|
+
params
|
|
213
|
+
});
|
|
214
|
+
return response.data;
|
|
215
|
+
}
|
|
216
|
+
// Event products
|
|
217
|
+
async getProducts(eventId, privateToken) {
|
|
218
|
+
const response = await api.get(
|
|
219
|
+
`/sdk/events/${eventId}/products`,
|
|
220
|
+
{ params: { privateToken } }
|
|
221
|
+
);
|
|
222
|
+
const products = response.data.products.map(formatProducts);
|
|
223
|
+
return { ...response.data, products };
|
|
224
|
+
}
|
|
225
|
+
// Event tickets
|
|
226
|
+
async getTickets(eventId, privateToken, predecessorIds) {
|
|
227
|
+
const response = await api.get(
|
|
228
|
+
`/sdk/events/${eventId}/tickets`,
|
|
229
|
+
{ params: { privateToken, predecessorIds } }
|
|
230
|
+
);
|
|
231
|
+
const tickets = response.data.tickets.map(formatTicket);
|
|
232
|
+
const groups = response.data.groups.map((group) => ({
|
|
233
|
+
...group,
|
|
234
|
+
tickets: group.tickets.map(formatTicket)
|
|
235
|
+
}));
|
|
236
|
+
return { ...response.data, tickets, groups };
|
|
237
|
+
}
|
|
238
|
+
// User event tickets
|
|
239
|
+
async getUserEventTickets(eventId) {
|
|
240
|
+
const response = await api.get(
|
|
241
|
+
`/sdk/events/${eventId}/user-tickets`
|
|
242
|
+
);
|
|
243
|
+
return response.data;
|
|
244
|
+
}
|
|
245
|
+
// Create event reminder
|
|
246
|
+
async createReminder(eventId, data) {
|
|
247
|
+
const response = await api.post(
|
|
248
|
+
`/sdk/events/${eventId}/reminder`,
|
|
249
|
+
data
|
|
250
|
+
);
|
|
251
|
+
return response.data;
|
|
252
|
+
}
|
|
253
|
+
};
|
|
254
|
+
|
|
255
|
+
// src/resources/orders/index.ts
|
|
256
|
+
var OrdersResource = class {
|
|
257
|
+
async create(data) {
|
|
258
|
+
const response = await api.post("/sdk/orders", data);
|
|
259
|
+
return response.data;
|
|
260
|
+
}
|
|
261
|
+
async get(orderId, headers) {
|
|
262
|
+
const response = await api.get(`/sdk/orders/${orderId}`, {
|
|
263
|
+
headers
|
|
264
|
+
});
|
|
265
|
+
return response.data;
|
|
266
|
+
}
|
|
267
|
+
};
|
|
268
|
+
|
|
269
|
+
// src/resources/tickets/index.ts
|
|
270
|
+
var TicketsResource = class {
|
|
271
|
+
async createFile(userTicketId, params) {
|
|
272
|
+
const response = await api.get(
|
|
273
|
+
`/sdk/tickets/user-tickets/${userTicketId}/file`,
|
|
274
|
+
{ params, responseType: "blob" }
|
|
275
|
+
);
|
|
276
|
+
return response.data;
|
|
277
|
+
}
|
|
278
|
+
async editUserTicket(userTicketId, data) {
|
|
279
|
+
await api.put(`/sdk/tickets/user-tickets/${userTicketId}`, data);
|
|
280
|
+
}
|
|
281
|
+
async transfer(ticketId, data) {
|
|
282
|
+
await api.post(`/sdk/tickets/${ticketId}/transfer`, data);
|
|
283
|
+
}
|
|
284
|
+
};
|
|
285
|
+
|
|
286
|
+
// src/resources/users/index.ts
|
|
287
|
+
var UsersResource = class {
|
|
288
|
+
async create(data) {
|
|
289
|
+
const response = await api.post("/sdk/users", data);
|
|
290
|
+
return response.data;
|
|
291
|
+
}
|
|
292
|
+
async getMe() {
|
|
293
|
+
const response = await api.get("/sdk/users/me");
|
|
294
|
+
return response.data;
|
|
295
|
+
}
|
|
296
|
+
async update(data) {
|
|
297
|
+
const response = await api.put("/sdk/users", data);
|
|
298
|
+
return response.data;
|
|
299
|
+
}
|
|
300
|
+
async updateEmail(data) {
|
|
301
|
+
const response = await api.patch(
|
|
302
|
+
"/sdk/users/email",
|
|
303
|
+
data
|
|
304
|
+
);
|
|
305
|
+
return response.data;
|
|
306
|
+
}
|
|
307
|
+
async updatePassword(data) {
|
|
308
|
+
const response = await api.patch(
|
|
309
|
+
"/sdk/users/password",
|
|
310
|
+
data
|
|
311
|
+
);
|
|
312
|
+
return response.data;
|
|
313
|
+
}
|
|
314
|
+
async delete() {
|
|
315
|
+
const response = await api.delete("/sdk/users");
|
|
316
|
+
return response.data;
|
|
317
|
+
}
|
|
318
|
+
async getPromoterCoupons(params = {}) {
|
|
319
|
+
const response = await api.get(
|
|
320
|
+
"/sdk/users/promoters/coupons",
|
|
321
|
+
{ params }
|
|
322
|
+
);
|
|
323
|
+
return response.data;
|
|
324
|
+
}
|
|
325
|
+
async getOrders(params = {}) {
|
|
326
|
+
const response = await api.get(
|
|
327
|
+
"/sdk/users/orders",
|
|
328
|
+
{ params }
|
|
329
|
+
);
|
|
330
|
+
return response.data.orders;
|
|
331
|
+
}
|
|
332
|
+
async getEvents(params = {}) {
|
|
333
|
+
const response = await api.get(
|
|
334
|
+
"/sdk/users/events",
|
|
335
|
+
{ params }
|
|
336
|
+
);
|
|
337
|
+
return response.data.events;
|
|
338
|
+
}
|
|
339
|
+
async refundOrder(orderId) {
|
|
340
|
+
const response = await api.post(
|
|
341
|
+
`/sdk/users/orders/${orderId}/refund`
|
|
342
|
+
);
|
|
343
|
+
return response.data;
|
|
344
|
+
}
|
|
345
|
+
};
|
|
346
|
+
|
|
347
|
+
// src/meaple-sdk.ts
|
|
348
|
+
var MeapleSDK = class {
|
|
349
|
+
users;
|
|
350
|
+
events;
|
|
351
|
+
orders;
|
|
352
|
+
channels;
|
|
353
|
+
categories;
|
|
354
|
+
coupon;
|
|
355
|
+
tickets;
|
|
356
|
+
constructor(config) {
|
|
357
|
+
api.setBaseURL(config.baseURL);
|
|
358
|
+
api.setDefaultHeader("X-Channel-Id", config.publicKey);
|
|
359
|
+
this.users = new UsersResource();
|
|
360
|
+
this.events = new EventsResource();
|
|
361
|
+
this.orders = new OrdersResource();
|
|
362
|
+
this.channels = new ChannelsResource();
|
|
363
|
+
this.categories = new CategoriesResource();
|
|
364
|
+
this.coupon = new CouponResource();
|
|
365
|
+
this.tickets = new TicketsResource();
|
|
366
|
+
}
|
|
367
|
+
setGlobalToken(token) {
|
|
368
|
+
api.setBearerToken(token);
|
|
369
|
+
}
|
|
370
|
+
};
|
|
371
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
372
|
+
0 && (module.exports = {
|
|
373
|
+
CategoriesResource,
|
|
374
|
+
ChannelsResource,
|
|
375
|
+
CouponResource,
|
|
376
|
+
EventsResource,
|
|
377
|
+
MeapleSDK,
|
|
378
|
+
OrdersResource,
|
|
379
|
+
TicketsResource,
|
|
380
|
+
UsersResource,
|
|
381
|
+
api
|
|
382
|
+
});
|
|
383
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/core/http/api.ts","../src/resources/categories/index.ts","../src/resources/channels/index.ts","../src/resources/coupon/index.ts","../src/resources/events/index.ts","../src/resources/orders/index.ts","../src/resources/tickets/index.ts","../src/resources/users/index.ts","../src/meaple-sdk.ts"],"sourcesContent":["export { api } from './core/http/api';\nexport type { MeapleSDKOptions } from './meaple-sdk';\nexport { MeapleSDK } from './meaple-sdk';\n\n// Export resources for use in hooks\nexport { CategoriesResource } from './resources/categories';\nexport { ChannelsResource } from './resources/channels';\nexport { CouponResource } from './resources/coupon';\nexport { EventsResource } from './resources/events';\nexport { OrdersResource } from './resources/orders';\nexport { TicketsResource } from './resources/tickets';\nexport { UsersResource } from './resources/users';\n","import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';\n\n// ============================================================================\n// Types & Interfaces\n// ============================================================================\n\nexport interface ApiResponse<T = any> {\n data: T;\n success?: boolean;\n timestamp?: string;\n requestId?: string;\n}\n\nexport interface ApiConfig {\n baseURL?: string;\n timeout?: number;\n headers?: Record<string, string>;\n}\n\ninterface RequestInterceptor {\n onRequest(config: any): Promise<any>;\n}\n\n// ============================================================================\n// API Client\n// ============================================================================\n\nexport class SimpleApiClient {\n private axios: AxiosInstance;\n private interceptors: {\n request: RequestInterceptor[];\n response: ((response: any) => any)[];\n } = { request: [], response: [] };\n\n constructor(config: ApiConfig = {}) {\n this.axios = axios.create({\n baseURL: config.baseURL ?? 'http://localhost:1234',\n timeout: config.timeout ?? 30000,\n headers: {\n 'Content-Type': 'application/json',\n ...config.headers,\n },\n });\n\n this.setupInterceptors();\n }\n\n // --------------------------------------------------------------------------\n // Configuration Methods\n // --------------------------------------------------------------------------\n\n setDefaultHeader(name: string, value: string): void {\n this.axios.defaults.headers.common[name] = value;\n }\n\n removeDefaultHeader(name: string): void {\n delete this.axios.defaults.headers.common[name];\n }\n\n setBaseURL(baseURL: string): void {\n this.axios.defaults.baseURL = baseURL;\n }\n\n setBearerToken(token: string): void {\n this.setDefaultHeader('Authorization', `Bearer ${token}`);\n }\n\n get axiosInstance(): AxiosInstance {\n return this.axios;\n }\n\n // --------------------------------------------------------------------------\n // Interceptors\n // --------------------------------------------------------------------------\n\n addRequestInterceptor(interceptor: RequestInterceptor): void {\n this.interceptors.request.push(interceptor);\n }\n\n addResponseInterceptor(\n onFulfilled?: (response: any) => any,\n onRejected?: (error: any) => any\n ): void {\n if (onFulfilled) {\n this.interceptors.response.push(onFulfilled);\n }\n if (onRejected) {\n this.axios.interceptors.response.use(undefined, onRejected);\n }\n }\n\n clearInterceptors(): void {\n this.interceptors.request = [];\n this.interceptors.response = [];\n }\n\n // --------------------------------------------------------------------------\n // HTTP Methods\n // --------------------------------------------------------------------------\n\n async get<T = any>(\n url: string,\n config?: AxiosRequestConfig\n ): Promise<ApiResponse<T>> {\n const response = await this.axios.get(url, config);\n return this.formatResponse(response);\n }\n\n async post<T = any>(\n url: string,\n data?: any,\n config?: AxiosRequestConfig\n ): Promise<ApiResponse<T>> {\n const response = await this.axios.post(url, data, config);\n return this.formatResponse(response);\n }\n\n async put<T = any>(\n url: string,\n data?: any,\n config?: AxiosRequestConfig\n ): Promise<ApiResponse<T>> {\n const response = await this.axios.put(url, data, config);\n return this.formatResponse(response);\n }\n\n async patch<T = any>(\n url: string,\n data?: any,\n config?: AxiosRequestConfig\n ): Promise<ApiResponse<T>> {\n const response = await this.axios.patch(url, data, config);\n return this.formatResponse(response);\n }\n\n async delete<T = any>(\n url: string,\n config?: AxiosRequestConfig\n ): Promise<ApiResponse<T>> {\n const response = await this.axios.delete(url, config);\n return this.formatResponse(response);\n }\n\n // --------------------------------------------------------------------------\n // Private Methods\n // --------------------------------------------------------------------------\n\n private setupInterceptors(): void {\n // Request interceptor\n this.axios.interceptors.request.use(async config => {\n let processedConfig = config;\n for (const interceptor of this.interceptors.request) {\n processedConfig = await interceptor.onRequest(processedConfig);\n }\n return processedConfig;\n });\n\n // Response interceptor\n this.axios.interceptors.response.use(response => {\n let processedResponse = response;\n for (const interceptor of this.interceptors.response) {\n processedResponse = interceptor(processedResponse);\n }\n return processedResponse;\n });\n }\n\n private formatResponse<T>(response: AxiosResponse): ApiResponse<T> {\n const requestId = response.headers['x-request-id'];\n\n // Se response.data for um Blob, retornar diretamente sem formatação adicional\n if (response.data instanceof Blob) {\n return {\n data: response.data as any,\n success: response.status >= 200 && response.status < 300,\n timestamp: new Date().toISOString(),\n ...(requestId && { requestId }),\n };\n }\n\n return {\n data: response.data,\n success: response.status >= 200 && response.status < 300,\n timestamp: new Date().toISOString(),\n ...(requestId && { requestId }),\n };\n }\n}\n\n// ============================================================================\n// Exports\n// ============================================================================\n\nexport const api = new SimpleApiClient();\n","import { CategoryProps } from '@meaple-com/types';\n\nimport { api } from '../../core/http/api';\n\nexport class CategoriesResource {\n async find(): Promise<CategoryProps[]> {\n const response = await api.get<{ categories: CategoryProps[] }>(\n '/sdk/categories'\n );\n return response.data.categories;\n }\n}\n","import type {\n ChannelProps,\n EventProps,\n GetChannelEventProps,\n} from '@meaple-com/types';\n\nimport { api } from '../../core/http/api';\n\nexport class ChannelsResource {\n async get(slug: string): Promise<ChannelProps> {\n const result = await api.get<ChannelProps>(`/sdk/channels/${slug}`);\n return result.data;\n }\n\n async getEvents(channelId: string): Promise<EventProps[]> {\n const result = await api.get<{ events: EventProps[] }>(\n `/sdk/channels/${channelId}/events`\n );\n return result.data.events;\n }\n\n async getEvent(channelSlug: string, eventSlug: string): Promise<EventProps> {\n const result = await api.get<GetChannelEventProps>(\n `/sdk/channels/${channelSlug}/events/${eventSlug}`\n );\n return result.data.event;\n }\n}\n","import { CheckCouponProps, CouponProps } from '@meaple-com/types';\n\nimport { api } from '../../core/http/api';\n\nexport class CouponResource {\n async check({ eventId, couponCode }: CheckCouponProps): Promise<CouponProps> {\n const response = await api.get<{ coupon: CouponProps }>(\n `/sdk/events/${eventId}/coupons/${couponCode}/check`\n );\n return response.data.coupon;\n }\n}\n","import type {\n CreateEventReminderProps,\n FindEventProductsProps,\n FindEventsParams,\n FindEventsProps,\n FindEventTicketsProps,\n FindUserEventTicketsProps,\n TicketProps,\n} from '@meaple-com/types';\n\nimport { api } from '../../core/http/api';\n\n// Helper functions\nconst formatTicket = (ticket: TicketProps): TicketProps => ({\n ...ticket,\n price: Number(ticket.price.toFixed(2)),\n});\n\nconst formatProducts = (product: TicketProps): TicketProps => ({\n ...product,\n price: Number(product.price.toFixed(2)),\n});\n\nexport class EventsResource {\n // Find events\n async find(params?: FindEventsParams): Promise<FindEventsProps> {\n const response = await api.get<FindEventsProps>('/sdk/events', {\n params,\n });\n return response.data;\n }\n\n // Event products\n async getProducts(\n eventId: string,\n privateToken?: string | null\n ): Promise<FindEventProductsProps> {\n const response = await api.get<FindEventProductsProps>(\n `/sdk/events/${eventId}/products`,\n { params: { privateToken } }\n );\n\n const products = response.data.products.map(formatProducts);\n\n return { ...response.data, products };\n }\n\n // Event tickets\n async getTickets(\n eventId: string,\n privateToken?: string | null,\n predecessorIds?: string[]\n ): Promise<FindEventTicketsProps> {\n const response = await api.get<FindEventTicketsProps>(\n `/sdk/events/${eventId}/tickets`,\n { params: { privateToken, predecessorIds } }\n );\n\n const tickets = response.data.tickets.map(formatTicket);\n\n const groups = response.data.groups.map(group => ({\n ...group,\n tickets: group.tickets.map(formatTicket),\n }));\n\n return { ...response.data, tickets, groups };\n }\n\n // User event tickets\n async getUserEventTickets(\n eventId: string\n ): Promise<FindUserEventTicketsProps> {\n const response = await api.get<FindUserEventTicketsProps>(\n `/sdk/events/${eventId}/user-tickets`\n );\n return response.data;\n }\n\n // Create event reminder\n async createReminder(\n eventId: string,\n data: CreateEventReminderProps\n ): Promise<{ message: string }> {\n const response = await api.post<{ message: string }>(\n `/sdk/events/${eventId}/reminder`,\n data\n );\n return response.data;\n }\n}\n","import type {\n CreatedOrderProps,\n CreateOrderProps,\n GetOrderProps,\n} from '@meaple-com/types';\n\nimport { api } from '../../core/http/api';\nimport type { Headers } from '../../core/types/common';\n\nexport class OrdersResource {\n async create(data: CreateOrderProps): Promise<CreatedOrderProps> {\n const response = await api.post<CreatedOrderProps>('/sdk/orders', data);\n return response.data;\n }\n\n async get(orderId: string, headers?: Headers): Promise<GetOrderProps> {\n const response = await api.get<GetOrderProps>(`/sdk/orders/${orderId}`, {\n headers,\n });\n return response.data;\n }\n}\n","import type {\n CreateTicketFileProps,\n TransferTicketProps,\n UpdateUserTicketProps,\n} from '@meaple-com/types';\n\nimport { api } from '../../core/http/api';\n\nexport class TicketsResource {\n async createFile(\n userTicketId: string,\n params: CreateTicketFileProps\n ): Promise<Blob> {\n const response = await api.get(\n `/sdk/tickets/user-tickets/${userTicketId}/file`,\n { params, responseType: 'blob' }\n );\n return response.data;\n }\n\n async editUserTicket(\n userTicketId: string,\n data: UpdateUserTicketProps\n ): Promise<void> {\n await api.put(`/sdk/tickets/user-tickets/${userTicketId}`, data);\n }\n\n async transfer(ticketId: string, data: TransferTicketProps): Promise<void> {\n await api.post(`/sdk/tickets/${ticketId}/transfer`, data);\n }\n}\n","import type {\n CouponsListProps,\n CreateUserProps,\n EventProps,\n UpdateUserEmailProps,\n UpdateUserPasswordProps,\n UpdateUserProps,\n UserOrderProps,\n UserProps,\n} from '@meaple-com/types';\n\nimport { api } from '../../core/http/api';\nimport type { QueryParams } from '../../core/types/common';\n\nexport class UsersResource {\n async create(data: CreateUserProps): Promise<UserProps> {\n const response = await api.post<UserProps>('/sdk/users', data);\n return response.data;\n }\n\n async getMe(): Promise<UserProps> {\n const response = await api.get<UserProps>('/sdk/users/me');\n return response.data;\n }\n\n async update(data: UpdateUserProps): Promise<UserProps> {\n const response = await api.put<UserProps>('/sdk/users', data);\n return response.data;\n }\n\n async updateEmail(data: UpdateUserEmailProps): Promise<{ message: string }> {\n const response = await api.patch<{ message: string }>(\n '/sdk/users/email',\n data\n );\n return response.data;\n }\n\n async updatePassword(\n data: UpdateUserPasswordProps\n ): Promise<{ message: string }> {\n const response = await api.patch<{ message: string }>(\n '/sdk/users/password',\n data\n );\n return response.data;\n }\n\n async delete(): Promise<{ message: string }> {\n const response = await api.delete<{ message: string }>('/sdk/users');\n return response.data;\n }\n\n async getPromoterCoupons(\n params: { limit?: number; cursor?: string } = {}\n ): Promise<CouponsListProps> {\n const response = await api.get<CouponsListProps>(\n '/sdk/users/promoters/coupons',\n { params }\n );\n return response.data;\n }\n\n async getOrders(params: QueryParams = {}): Promise<UserOrderProps[]> {\n const response = await api.get<{ orders: UserOrderProps[] }>(\n '/sdk/users/orders',\n { params }\n );\n return response.data.orders;\n }\n\n async getEvents(params: QueryParams = {}): Promise<EventProps[]> {\n const response = await api.get<{ events: EventProps[] }>(\n '/sdk/users/events',\n { params }\n );\n return response.data.events;\n }\n\n async refundOrder(orderId: string): Promise<{ message: string }> {\n const response = await api.post<{ message: string }>(\n `/sdk/users/orders/${orderId}/refund`\n );\n return response.data;\n }\n}\n","import { api } from './core/http/api';\nimport { CategoriesResource } from './resources/categories';\nimport { ChannelsResource } from './resources/channels';\nimport { CouponResource } from './resources/coupon';\nimport { EventsResource } from './resources/events';\nimport { OrdersResource } from './resources/orders';\nimport { TicketsResource } from './resources/tickets';\nimport { UsersResource } from './resources/users';\n\nexport interface MeapleSDKOptions {\n publicKey: string;\n baseURL: string;\n}\n\nexport class MeapleSDK {\n public users: UsersResource;\n public events: EventsResource;\n public orders: OrdersResource;\n public channels: ChannelsResource;\n public categories: CategoriesResource;\n public coupon: CouponResource;\n public tickets: TicketsResource;\n\n constructor(config: MeapleSDKOptions) {\n // Configura a instância global de API\n api.setBaseURL(config.baseURL);\n api.setDefaultHeader('X-Channel-Id', config.publicKey);\n\n // Inicializa todos os recursos\n this.users = new UsersResource();\n this.events = new EventsResource();\n this.orders = new OrdersResource();\n this.channels = new ChannelsResource();\n this.categories = new CategoriesResource();\n this.coupon = new CouponResource();\n this.tickets = new TicketsResource();\n }\n\n setGlobalToken(token: string): void {\n api.setBearerToken(token);\n }\n}\n"],"mappings":"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","names":["axios"]}
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
// src/core/http/api.ts
|
|
2
|
+
import axios from "axios";
|
|
3
|
+
var SimpleApiClient = class {
|
|
4
|
+
axios;
|
|
5
|
+
interceptors = { request: [], response: [] };
|
|
6
|
+
constructor(config = {}) {
|
|
7
|
+
this.axios = axios.create({
|
|
8
|
+
baseURL: config.baseURL ?? "http://localhost:1234",
|
|
9
|
+
timeout: config.timeout ?? 3e4,
|
|
10
|
+
headers: {
|
|
11
|
+
"Content-Type": "application/json",
|
|
12
|
+
...config.headers
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
this.setupInterceptors();
|
|
16
|
+
}
|
|
17
|
+
// --------------------------------------------------------------------------
|
|
18
|
+
// Configuration Methods
|
|
19
|
+
// --------------------------------------------------------------------------
|
|
20
|
+
setDefaultHeader(name, value) {
|
|
21
|
+
this.axios.defaults.headers.common[name] = value;
|
|
22
|
+
}
|
|
23
|
+
removeDefaultHeader(name) {
|
|
24
|
+
delete this.axios.defaults.headers.common[name];
|
|
25
|
+
}
|
|
26
|
+
setBaseURL(baseURL) {
|
|
27
|
+
this.axios.defaults.baseURL = baseURL;
|
|
28
|
+
}
|
|
29
|
+
setBearerToken(token) {
|
|
30
|
+
this.setDefaultHeader("Authorization", `Bearer ${token}`);
|
|
31
|
+
}
|
|
32
|
+
get axiosInstance() {
|
|
33
|
+
return this.axios;
|
|
34
|
+
}
|
|
35
|
+
// --------------------------------------------------------------------------
|
|
36
|
+
// Interceptors
|
|
37
|
+
// --------------------------------------------------------------------------
|
|
38
|
+
addRequestInterceptor(interceptor) {
|
|
39
|
+
this.interceptors.request.push(interceptor);
|
|
40
|
+
}
|
|
41
|
+
addResponseInterceptor(onFulfilled, onRejected) {
|
|
42
|
+
if (onFulfilled) {
|
|
43
|
+
this.interceptors.response.push(onFulfilled);
|
|
44
|
+
}
|
|
45
|
+
if (onRejected) {
|
|
46
|
+
this.axios.interceptors.response.use(void 0, onRejected);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
clearInterceptors() {
|
|
50
|
+
this.interceptors.request = [];
|
|
51
|
+
this.interceptors.response = [];
|
|
52
|
+
}
|
|
53
|
+
// --------------------------------------------------------------------------
|
|
54
|
+
// HTTP Methods
|
|
55
|
+
// --------------------------------------------------------------------------
|
|
56
|
+
async get(url, config) {
|
|
57
|
+
const response = await this.axios.get(url, config);
|
|
58
|
+
return this.formatResponse(response);
|
|
59
|
+
}
|
|
60
|
+
async post(url, data, config) {
|
|
61
|
+
const response = await this.axios.post(url, data, config);
|
|
62
|
+
return this.formatResponse(response);
|
|
63
|
+
}
|
|
64
|
+
async put(url, data, config) {
|
|
65
|
+
const response = await this.axios.put(url, data, config);
|
|
66
|
+
return this.formatResponse(response);
|
|
67
|
+
}
|
|
68
|
+
async patch(url, data, config) {
|
|
69
|
+
const response = await this.axios.patch(url, data, config);
|
|
70
|
+
return this.formatResponse(response);
|
|
71
|
+
}
|
|
72
|
+
async delete(url, config) {
|
|
73
|
+
const response = await this.axios.delete(url, config);
|
|
74
|
+
return this.formatResponse(response);
|
|
75
|
+
}
|
|
76
|
+
// --------------------------------------------------------------------------
|
|
77
|
+
// Private Methods
|
|
78
|
+
// --------------------------------------------------------------------------
|
|
79
|
+
setupInterceptors() {
|
|
80
|
+
this.axios.interceptors.request.use(async (config) => {
|
|
81
|
+
let processedConfig = config;
|
|
82
|
+
for (const interceptor of this.interceptors.request) {
|
|
83
|
+
processedConfig = await interceptor.onRequest(processedConfig);
|
|
84
|
+
}
|
|
85
|
+
return processedConfig;
|
|
86
|
+
});
|
|
87
|
+
this.axios.interceptors.response.use((response) => {
|
|
88
|
+
let processedResponse = response;
|
|
89
|
+
for (const interceptor of this.interceptors.response) {
|
|
90
|
+
processedResponse = interceptor(processedResponse);
|
|
91
|
+
}
|
|
92
|
+
return processedResponse;
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
formatResponse(response) {
|
|
96
|
+
const requestId = response.headers["x-request-id"];
|
|
97
|
+
if (response.data instanceof Blob) {
|
|
98
|
+
return {
|
|
99
|
+
data: response.data,
|
|
100
|
+
success: response.status >= 200 && response.status < 300,
|
|
101
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
102
|
+
...requestId && { requestId }
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
data: response.data,
|
|
107
|
+
success: response.status >= 200 && response.status < 300,
|
|
108
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
109
|
+
...requestId && { requestId }
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
var api = new SimpleApiClient();
|
|
114
|
+
|
|
115
|
+
// src/resources/categories/index.ts
|
|
116
|
+
var CategoriesResource = class {
|
|
117
|
+
async find() {
|
|
118
|
+
const response = await api.get(
|
|
119
|
+
"/sdk/categories"
|
|
120
|
+
);
|
|
121
|
+
return response.data.categories;
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
// src/resources/channels/index.ts
|
|
126
|
+
var ChannelsResource = class {
|
|
127
|
+
async get(slug) {
|
|
128
|
+
const result = await api.get(`/sdk/channels/${slug}`);
|
|
129
|
+
return result.data;
|
|
130
|
+
}
|
|
131
|
+
async getEvents(channelId) {
|
|
132
|
+
const result = await api.get(
|
|
133
|
+
`/sdk/channels/${channelId}/events`
|
|
134
|
+
);
|
|
135
|
+
return result.data.events;
|
|
136
|
+
}
|
|
137
|
+
async getEvent(channelSlug, eventSlug) {
|
|
138
|
+
const result = await api.get(
|
|
139
|
+
`/sdk/channels/${channelSlug}/events/${eventSlug}`
|
|
140
|
+
);
|
|
141
|
+
return result.data.event;
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
// src/resources/coupon/index.ts
|
|
146
|
+
var CouponResource = class {
|
|
147
|
+
async check({ eventId, couponCode }) {
|
|
148
|
+
const response = await api.get(
|
|
149
|
+
`/sdk/events/${eventId}/coupons/${couponCode}/check`
|
|
150
|
+
);
|
|
151
|
+
return response.data.coupon;
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
// src/resources/events/index.ts
|
|
156
|
+
var formatTicket = (ticket) => ({
|
|
157
|
+
...ticket,
|
|
158
|
+
price: Number(ticket.price.toFixed(2))
|
|
159
|
+
});
|
|
160
|
+
var formatProducts = (product) => ({
|
|
161
|
+
...product,
|
|
162
|
+
price: Number(product.price.toFixed(2))
|
|
163
|
+
});
|
|
164
|
+
var EventsResource = class {
|
|
165
|
+
// Find events
|
|
166
|
+
async find(params) {
|
|
167
|
+
const response = await api.get("/sdk/events", {
|
|
168
|
+
params
|
|
169
|
+
});
|
|
170
|
+
return response.data;
|
|
171
|
+
}
|
|
172
|
+
// Event products
|
|
173
|
+
async getProducts(eventId, privateToken) {
|
|
174
|
+
const response = await api.get(
|
|
175
|
+
`/sdk/events/${eventId}/products`,
|
|
176
|
+
{ params: { privateToken } }
|
|
177
|
+
);
|
|
178
|
+
const products = response.data.products.map(formatProducts);
|
|
179
|
+
return { ...response.data, products };
|
|
180
|
+
}
|
|
181
|
+
// Event tickets
|
|
182
|
+
async getTickets(eventId, privateToken, predecessorIds) {
|
|
183
|
+
const response = await api.get(
|
|
184
|
+
`/sdk/events/${eventId}/tickets`,
|
|
185
|
+
{ params: { privateToken, predecessorIds } }
|
|
186
|
+
);
|
|
187
|
+
const tickets = response.data.tickets.map(formatTicket);
|
|
188
|
+
const groups = response.data.groups.map((group) => ({
|
|
189
|
+
...group,
|
|
190
|
+
tickets: group.tickets.map(formatTicket)
|
|
191
|
+
}));
|
|
192
|
+
return { ...response.data, tickets, groups };
|
|
193
|
+
}
|
|
194
|
+
// User event tickets
|
|
195
|
+
async getUserEventTickets(eventId) {
|
|
196
|
+
const response = await api.get(
|
|
197
|
+
`/sdk/events/${eventId}/user-tickets`
|
|
198
|
+
);
|
|
199
|
+
return response.data;
|
|
200
|
+
}
|
|
201
|
+
// Create event reminder
|
|
202
|
+
async createReminder(eventId, data) {
|
|
203
|
+
const response = await api.post(
|
|
204
|
+
`/sdk/events/${eventId}/reminder`,
|
|
205
|
+
data
|
|
206
|
+
);
|
|
207
|
+
return response.data;
|
|
208
|
+
}
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
// src/resources/orders/index.ts
|
|
212
|
+
var OrdersResource = class {
|
|
213
|
+
async create(data) {
|
|
214
|
+
const response = await api.post("/sdk/orders", data);
|
|
215
|
+
return response.data;
|
|
216
|
+
}
|
|
217
|
+
async get(orderId, headers) {
|
|
218
|
+
const response = await api.get(`/sdk/orders/${orderId}`, {
|
|
219
|
+
headers
|
|
220
|
+
});
|
|
221
|
+
return response.data;
|
|
222
|
+
}
|
|
223
|
+
};
|
|
224
|
+
|
|
225
|
+
// src/resources/tickets/index.ts
|
|
226
|
+
var TicketsResource = class {
|
|
227
|
+
async createFile(userTicketId, params) {
|
|
228
|
+
const response = await api.get(
|
|
229
|
+
`/sdk/tickets/user-tickets/${userTicketId}/file`,
|
|
230
|
+
{ params, responseType: "blob" }
|
|
231
|
+
);
|
|
232
|
+
return response.data;
|
|
233
|
+
}
|
|
234
|
+
async editUserTicket(userTicketId, data) {
|
|
235
|
+
await api.put(`/sdk/tickets/user-tickets/${userTicketId}`, data);
|
|
236
|
+
}
|
|
237
|
+
async transfer(ticketId, data) {
|
|
238
|
+
await api.post(`/sdk/tickets/${ticketId}/transfer`, data);
|
|
239
|
+
}
|
|
240
|
+
};
|
|
241
|
+
|
|
242
|
+
// src/resources/users/index.ts
|
|
243
|
+
var UsersResource = class {
|
|
244
|
+
async create(data) {
|
|
245
|
+
const response = await api.post("/sdk/users", data);
|
|
246
|
+
return response.data;
|
|
247
|
+
}
|
|
248
|
+
async getMe() {
|
|
249
|
+
const response = await api.get("/sdk/users/me");
|
|
250
|
+
return response.data;
|
|
251
|
+
}
|
|
252
|
+
async update(data) {
|
|
253
|
+
const response = await api.put("/sdk/users", data);
|
|
254
|
+
return response.data;
|
|
255
|
+
}
|
|
256
|
+
async updateEmail(data) {
|
|
257
|
+
const response = await api.patch(
|
|
258
|
+
"/sdk/users/email",
|
|
259
|
+
data
|
|
260
|
+
);
|
|
261
|
+
return response.data;
|
|
262
|
+
}
|
|
263
|
+
async updatePassword(data) {
|
|
264
|
+
const response = await api.patch(
|
|
265
|
+
"/sdk/users/password",
|
|
266
|
+
data
|
|
267
|
+
);
|
|
268
|
+
return response.data;
|
|
269
|
+
}
|
|
270
|
+
async delete() {
|
|
271
|
+
const response = await api.delete("/sdk/users");
|
|
272
|
+
return response.data;
|
|
273
|
+
}
|
|
274
|
+
async getPromoterCoupons(params = {}) {
|
|
275
|
+
const response = await api.get(
|
|
276
|
+
"/sdk/users/promoters/coupons",
|
|
277
|
+
{ params }
|
|
278
|
+
);
|
|
279
|
+
return response.data;
|
|
280
|
+
}
|
|
281
|
+
async getOrders(params = {}) {
|
|
282
|
+
const response = await api.get(
|
|
283
|
+
"/sdk/users/orders",
|
|
284
|
+
{ params }
|
|
285
|
+
);
|
|
286
|
+
return response.data.orders;
|
|
287
|
+
}
|
|
288
|
+
async getEvents(params = {}) {
|
|
289
|
+
const response = await api.get(
|
|
290
|
+
"/sdk/users/events",
|
|
291
|
+
{ params }
|
|
292
|
+
);
|
|
293
|
+
return response.data.events;
|
|
294
|
+
}
|
|
295
|
+
async refundOrder(orderId) {
|
|
296
|
+
const response = await api.post(
|
|
297
|
+
`/sdk/users/orders/${orderId}/refund`
|
|
298
|
+
);
|
|
299
|
+
return response.data;
|
|
300
|
+
}
|
|
301
|
+
};
|
|
302
|
+
|
|
303
|
+
// src/meaple-sdk.ts
|
|
304
|
+
var MeapleSDK = class {
|
|
305
|
+
users;
|
|
306
|
+
events;
|
|
307
|
+
orders;
|
|
308
|
+
channels;
|
|
309
|
+
categories;
|
|
310
|
+
coupon;
|
|
311
|
+
tickets;
|
|
312
|
+
constructor(config) {
|
|
313
|
+
api.setBaseURL(config.baseURL);
|
|
314
|
+
api.setDefaultHeader("X-Channel-Id", config.publicKey);
|
|
315
|
+
this.users = new UsersResource();
|
|
316
|
+
this.events = new EventsResource();
|
|
317
|
+
this.orders = new OrdersResource();
|
|
318
|
+
this.channels = new ChannelsResource();
|
|
319
|
+
this.categories = new CategoriesResource();
|
|
320
|
+
this.coupon = new CouponResource();
|
|
321
|
+
this.tickets = new TicketsResource();
|
|
322
|
+
}
|
|
323
|
+
setGlobalToken(token) {
|
|
324
|
+
api.setBearerToken(token);
|
|
325
|
+
}
|
|
326
|
+
};
|
|
327
|
+
export {
|
|
328
|
+
CategoriesResource,
|
|
329
|
+
ChannelsResource,
|
|
330
|
+
CouponResource,
|
|
331
|
+
EventsResource,
|
|
332
|
+
MeapleSDK,
|
|
333
|
+
OrdersResource,
|
|
334
|
+
TicketsResource,
|
|
335
|
+
UsersResource,
|
|
336
|
+
api
|
|
337
|
+
};
|
|
338
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/http/api.ts","../src/resources/categories/index.ts","../src/resources/channels/index.ts","../src/resources/coupon/index.ts","../src/resources/events/index.ts","../src/resources/orders/index.ts","../src/resources/tickets/index.ts","../src/resources/users/index.ts","../src/meaple-sdk.ts"],"sourcesContent":["import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';\n\n// ============================================================================\n// Types & Interfaces\n// ============================================================================\n\nexport interface ApiResponse<T = any> {\n data: T;\n success?: boolean;\n timestamp?: string;\n requestId?: string;\n}\n\nexport interface ApiConfig {\n baseURL?: string;\n timeout?: number;\n headers?: Record<string, string>;\n}\n\ninterface RequestInterceptor {\n onRequest(config: any): Promise<any>;\n}\n\n// ============================================================================\n// API Client\n// ============================================================================\n\nexport class SimpleApiClient {\n private axios: AxiosInstance;\n private interceptors: {\n request: RequestInterceptor[];\n response: ((response: any) => any)[];\n } = { request: [], response: [] };\n\n constructor(config: ApiConfig = {}) {\n this.axios = axios.create({\n baseURL: config.baseURL ?? 'http://localhost:1234',\n timeout: config.timeout ?? 30000,\n headers: {\n 'Content-Type': 'application/json',\n ...config.headers,\n },\n });\n\n this.setupInterceptors();\n }\n\n // --------------------------------------------------------------------------\n // Configuration Methods\n // --------------------------------------------------------------------------\n\n setDefaultHeader(name: string, value: string): void {\n this.axios.defaults.headers.common[name] = value;\n }\n\n removeDefaultHeader(name: string): void {\n delete this.axios.defaults.headers.common[name];\n }\n\n setBaseURL(baseURL: string): void {\n this.axios.defaults.baseURL = baseURL;\n }\n\n setBearerToken(token: string): void {\n this.setDefaultHeader('Authorization', `Bearer ${token}`);\n }\n\n get axiosInstance(): AxiosInstance {\n return this.axios;\n }\n\n // --------------------------------------------------------------------------\n // Interceptors\n // --------------------------------------------------------------------------\n\n addRequestInterceptor(interceptor: RequestInterceptor): void {\n this.interceptors.request.push(interceptor);\n }\n\n addResponseInterceptor(\n onFulfilled?: (response: any) => any,\n onRejected?: (error: any) => any\n ): void {\n if (onFulfilled) {\n this.interceptors.response.push(onFulfilled);\n }\n if (onRejected) {\n this.axios.interceptors.response.use(undefined, onRejected);\n }\n }\n\n clearInterceptors(): void {\n this.interceptors.request = [];\n this.interceptors.response = [];\n }\n\n // --------------------------------------------------------------------------\n // HTTP Methods\n // --------------------------------------------------------------------------\n\n async get<T = any>(\n url: string,\n config?: AxiosRequestConfig\n ): Promise<ApiResponse<T>> {\n const response = await this.axios.get(url, config);\n return this.formatResponse(response);\n }\n\n async post<T = any>(\n url: string,\n data?: any,\n config?: AxiosRequestConfig\n ): Promise<ApiResponse<T>> {\n const response = await this.axios.post(url, data, config);\n return this.formatResponse(response);\n }\n\n async put<T = any>(\n url: string,\n data?: any,\n config?: AxiosRequestConfig\n ): Promise<ApiResponse<T>> {\n const response = await this.axios.put(url, data, config);\n return this.formatResponse(response);\n }\n\n async patch<T = any>(\n url: string,\n data?: any,\n config?: AxiosRequestConfig\n ): Promise<ApiResponse<T>> {\n const response = await this.axios.patch(url, data, config);\n return this.formatResponse(response);\n }\n\n async delete<T = any>(\n url: string,\n config?: AxiosRequestConfig\n ): Promise<ApiResponse<T>> {\n const response = await this.axios.delete(url, config);\n return this.formatResponse(response);\n }\n\n // --------------------------------------------------------------------------\n // Private Methods\n // --------------------------------------------------------------------------\n\n private setupInterceptors(): void {\n // Request interceptor\n this.axios.interceptors.request.use(async config => {\n let processedConfig = config;\n for (const interceptor of this.interceptors.request) {\n processedConfig = await interceptor.onRequest(processedConfig);\n }\n return processedConfig;\n });\n\n // Response interceptor\n this.axios.interceptors.response.use(response => {\n let processedResponse = response;\n for (const interceptor of this.interceptors.response) {\n processedResponse = interceptor(processedResponse);\n }\n return processedResponse;\n });\n }\n\n private formatResponse<T>(response: AxiosResponse): ApiResponse<T> {\n const requestId = response.headers['x-request-id'];\n\n // Se response.data for um Blob, retornar diretamente sem formatação adicional\n if (response.data instanceof Blob) {\n return {\n data: response.data as any,\n success: response.status >= 200 && response.status < 300,\n timestamp: new Date().toISOString(),\n ...(requestId && { requestId }),\n };\n }\n\n return {\n data: response.data,\n success: response.status >= 200 && response.status < 300,\n timestamp: new Date().toISOString(),\n ...(requestId && { requestId }),\n };\n }\n}\n\n// ============================================================================\n// Exports\n// ============================================================================\n\nexport const api = new SimpleApiClient();\n","import { CategoryProps } from '@meaple-com/types';\n\nimport { api } from '../../core/http/api';\n\nexport class CategoriesResource {\n async find(): Promise<CategoryProps[]> {\n const response = await api.get<{ categories: CategoryProps[] }>(\n '/sdk/categories'\n );\n return response.data.categories;\n }\n}\n","import type {\n ChannelProps,\n EventProps,\n GetChannelEventProps,\n} from '@meaple-com/types';\n\nimport { api } from '../../core/http/api';\n\nexport class ChannelsResource {\n async get(slug: string): Promise<ChannelProps> {\n const result = await api.get<ChannelProps>(`/sdk/channels/${slug}`);\n return result.data;\n }\n\n async getEvents(channelId: string): Promise<EventProps[]> {\n const result = await api.get<{ events: EventProps[] }>(\n `/sdk/channels/${channelId}/events`\n );\n return result.data.events;\n }\n\n async getEvent(channelSlug: string, eventSlug: string): Promise<EventProps> {\n const result = await api.get<GetChannelEventProps>(\n `/sdk/channels/${channelSlug}/events/${eventSlug}`\n );\n return result.data.event;\n }\n}\n","import { CheckCouponProps, CouponProps } from '@meaple-com/types';\n\nimport { api } from '../../core/http/api';\n\nexport class CouponResource {\n async check({ eventId, couponCode }: CheckCouponProps): Promise<CouponProps> {\n const response = await api.get<{ coupon: CouponProps }>(\n `/sdk/events/${eventId}/coupons/${couponCode}/check`\n );\n return response.data.coupon;\n }\n}\n","import type {\n CreateEventReminderProps,\n FindEventProductsProps,\n FindEventsParams,\n FindEventsProps,\n FindEventTicketsProps,\n FindUserEventTicketsProps,\n TicketProps,\n} from '@meaple-com/types';\n\nimport { api } from '../../core/http/api';\n\n// Helper functions\nconst formatTicket = (ticket: TicketProps): TicketProps => ({\n ...ticket,\n price: Number(ticket.price.toFixed(2)),\n});\n\nconst formatProducts = (product: TicketProps): TicketProps => ({\n ...product,\n price: Number(product.price.toFixed(2)),\n});\n\nexport class EventsResource {\n // Find events\n async find(params?: FindEventsParams): Promise<FindEventsProps> {\n const response = await api.get<FindEventsProps>('/sdk/events', {\n params,\n });\n return response.data;\n }\n\n // Event products\n async getProducts(\n eventId: string,\n privateToken?: string | null\n ): Promise<FindEventProductsProps> {\n const response = await api.get<FindEventProductsProps>(\n `/sdk/events/${eventId}/products`,\n { params: { privateToken } }\n );\n\n const products = response.data.products.map(formatProducts);\n\n return { ...response.data, products };\n }\n\n // Event tickets\n async getTickets(\n eventId: string,\n privateToken?: string | null,\n predecessorIds?: string[]\n ): Promise<FindEventTicketsProps> {\n const response = await api.get<FindEventTicketsProps>(\n `/sdk/events/${eventId}/tickets`,\n { params: { privateToken, predecessorIds } }\n );\n\n const tickets = response.data.tickets.map(formatTicket);\n\n const groups = response.data.groups.map(group => ({\n ...group,\n tickets: group.tickets.map(formatTicket),\n }));\n\n return { ...response.data, tickets, groups };\n }\n\n // User event tickets\n async getUserEventTickets(\n eventId: string\n ): Promise<FindUserEventTicketsProps> {\n const response = await api.get<FindUserEventTicketsProps>(\n `/sdk/events/${eventId}/user-tickets`\n );\n return response.data;\n }\n\n // Create event reminder\n async createReminder(\n eventId: string,\n data: CreateEventReminderProps\n ): Promise<{ message: string }> {\n const response = await api.post<{ message: string }>(\n `/sdk/events/${eventId}/reminder`,\n data\n );\n return response.data;\n }\n}\n","import type {\n CreatedOrderProps,\n CreateOrderProps,\n GetOrderProps,\n} from '@meaple-com/types';\n\nimport { api } from '../../core/http/api';\nimport type { Headers } from '../../core/types/common';\n\nexport class OrdersResource {\n async create(data: CreateOrderProps): Promise<CreatedOrderProps> {\n const response = await api.post<CreatedOrderProps>('/sdk/orders', data);\n return response.data;\n }\n\n async get(orderId: string, headers?: Headers): Promise<GetOrderProps> {\n const response = await api.get<GetOrderProps>(`/sdk/orders/${orderId}`, {\n headers,\n });\n return response.data;\n }\n}\n","import type {\n CreateTicketFileProps,\n TransferTicketProps,\n UpdateUserTicketProps,\n} from '@meaple-com/types';\n\nimport { api } from '../../core/http/api';\n\nexport class TicketsResource {\n async createFile(\n userTicketId: string,\n params: CreateTicketFileProps\n ): Promise<Blob> {\n const response = await api.get(\n `/sdk/tickets/user-tickets/${userTicketId}/file`,\n { params, responseType: 'blob' }\n );\n return response.data;\n }\n\n async editUserTicket(\n userTicketId: string,\n data: UpdateUserTicketProps\n ): Promise<void> {\n await api.put(`/sdk/tickets/user-tickets/${userTicketId}`, data);\n }\n\n async transfer(ticketId: string, data: TransferTicketProps): Promise<void> {\n await api.post(`/sdk/tickets/${ticketId}/transfer`, data);\n }\n}\n","import type {\n CouponsListProps,\n CreateUserProps,\n EventProps,\n UpdateUserEmailProps,\n UpdateUserPasswordProps,\n UpdateUserProps,\n UserOrderProps,\n UserProps,\n} from '@meaple-com/types';\n\nimport { api } from '../../core/http/api';\nimport type { QueryParams } from '../../core/types/common';\n\nexport class UsersResource {\n async create(data: CreateUserProps): Promise<UserProps> {\n const response = await api.post<UserProps>('/sdk/users', data);\n return response.data;\n }\n\n async getMe(): Promise<UserProps> {\n const response = await api.get<UserProps>('/sdk/users/me');\n return response.data;\n }\n\n async update(data: UpdateUserProps): Promise<UserProps> {\n const response = await api.put<UserProps>('/sdk/users', data);\n return response.data;\n }\n\n async updateEmail(data: UpdateUserEmailProps): Promise<{ message: string }> {\n const response = await api.patch<{ message: string }>(\n '/sdk/users/email',\n data\n );\n return response.data;\n }\n\n async updatePassword(\n data: UpdateUserPasswordProps\n ): Promise<{ message: string }> {\n const response = await api.patch<{ message: string }>(\n '/sdk/users/password',\n data\n );\n return response.data;\n }\n\n async delete(): Promise<{ message: string }> {\n const response = await api.delete<{ message: string }>('/sdk/users');\n return response.data;\n }\n\n async getPromoterCoupons(\n params: { limit?: number; cursor?: string } = {}\n ): Promise<CouponsListProps> {\n const response = await api.get<CouponsListProps>(\n '/sdk/users/promoters/coupons',\n { params }\n );\n return response.data;\n }\n\n async getOrders(params: QueryParams = {}): Promise<UserOrderProps[]> {\n const response = await api.get<{ orders: UserOrderProps[] }>(\n '/sdk/users/orders',\n { params }\n );\n return response.data.orders;\n }\n\n async getEvents(params: QueryParams = {}): Promise<EventProps[]> {\n const response = await api.get<{ events: EventProps[] }>(\n '/sdk/users/events',\n { params }\n );\n return response.data.events;\n }\n\n async refundOrder(orderId: string): Promise<{ message: string }> {\n const response = await api.post<{ message: string }>(\n `/sdk/users/orders/${orderId}/refund`\n );\n return response.data;\n }\n}\n","import { api } from './core/http/api';\nimport { CategoriesResource } from './resources/categories';\nimport { ChannelsResource } from './resources/channels';\nimport { CouponResource } from './resources/coupon';\nimport { EventsResource } from './resources/events';\nimport { OrdersResource } from './resources/orders';\nimport { TicketsResource } from './resources/tickets';\nimport { UsersResource } from './resources/users';\n\nexport interface MeapleSDKOptions {\n publicKey: string;\n baseURL: string;\n}\n\nexport class MeapleSDK {\n public users: UsersResource;\n public events: EventsResource;\n public orders: OrdersResource;\n public channels: ChannelsResource;\n public categories: CategoriesResource;\n public coupon: CouponResource;\n public tickets: TicketsResource;\n\n constructor(config: MeapleSDKOptions) {\n // Configura a instância global de API\n api.setBaseURL(config.baseURL);\n api.setDefaultHeader('X-Channel-Id', config.publicKey);\n\n // Inicializa todos os recursos\n this.users = new UsersResource();\n this.events = new EventsResource();\n this.orders = new OrdersResource();\n this.channels = new ChannelsResource();\n this.categories = new CategoriesResource();\n this.coupon = new CouponResource();\n this.tickets = new TicketsResource();\n }\n\n setGlobalToken(token: string): void {\n api.setBearerToken(token);\n }\n}\n"],"mappings":"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","names":[]}
|
package/package.json
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@meaple-com/core",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Core SDK for Meaple - ticketing platform",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js",
|
|
13
|
+
"require": "./dist/index.cjs",
|
|
14
|
+
"default": "./dist/index.js"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist"
|
|
19
|
+
],
|
|
20
|
+
"sideEffects": false,
|
|
21
|
+
"engines": {
|
|
22
|
+
"node": ">=18.0.0"
|
|
23
|
+
},
|
|
24
|
+
"publishConfig": {
|
|
25
|
+
"access": "public",
|
|
26
|
+
"registry": "https://registry.npmjs.org/"
|
|
27
|
+
},
|
|
28
|
+
"scripts": {
|
|
29
|
+
"build": "tsup",
|
|
30
|
+
"build:packages": "tsup",
|
|
31
|
+
"dev": "tsup --watch",
|
|
32
|
+
"lint": "eslint \"src/**/*.{ts,tsx}\"",
|
|
33
|
+
"lint:fix": "eslint --fix \"src/**/*.{ts,tsx}\"",
|
|
34
|
+
"test": "vitest run",
|
|
35
|
+
"test:watch": "vitest",
|
|
36
|
+
"test:coverage": "vitest run --coverage",
|
|
37
|
+
"typecheck": "tsc --noEmit",
|
|
38
|
+
"clean": "rimraf dist",
|
|
39
|
+
"validate": "bun run typecheck && bun run lint && bun run test"
|
|
40
|
+
},
|
|
41
|
+
"dependencies": {
|
|
42
|
+
"axios": "^1.12.2",
|
|
43
|
+
"@meaple-com/types": "workspace:*"
|
|
44
|
+
},
|
|
45
|
+
"devDependencies": {
|
|
46
|
+
"@types/node": "^20.11.17",
|
|
47
|
+
"@typescript-eslint/eslint-plugin": "^7.18.0",
|
|
48
|
+
"@typescript-eslint/parser": "^7.18.0",
|
|
49
|
+
"@vitest/coverage-v8": "^1.2.2",
|
|
50
|
+
"eslint": "^8.56.0",
|
|
51
|
+
"eslint-config-prettier": "^9.1.0",
|
|
52
|
+
"eslint-import-resolver-typescript": "^3.6.1",
|
|
53
|
+
"eslint-plugin-import": "^2.29.1",
|
|
54
|
+
"rimraf": "^5.0.5",
|
|
55
|
+
"tsup": "^8.0.2",
|
|
56
|
+
"typescript": "^5.3.3",
|
|
57
|
+
"vitest": "^1.2.2"
|
|
58
|
+
},
|
|
59
|
+
"keywords": [
|
|
60
|
+
"meaple",
|
|
61
|
+
"sdk",
|
|
62
|
+
"core",
|
|
63
|
+
"utilities",
|
|
64
|
+
"typescript",
|
|
65
|
+
"universal"
|
|
66
|
+
],
|
|
67
|
+
"peerDependencies": {
|
|
68
|
+
"axios": "^1.12.2"
|
|
69
|
+
}
|
|
70
|
+
}
|