@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 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
+ ```
@@ -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 };
@@ -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
+ }