@meaple-com/core 1.0.4 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +7 -21
- package/dist/index.d.ts +7 -21
- package/dist/index.js +137 -45
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +135 -44
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
- package/README.md +0 -121
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AxiosInstance, AxiosRequestConfig } from 'axios';
|
|
2
|
-
import { CategoryProps, CheckCouponProps, CouponProps, FindEventsParams, FindEventsProps, EventProps, FindEventProductsProps, FindEventTicketsProps,
|
|
2
|
+
import { CategoryProps, CheckCouponProps, CouponProps, FindEventsParams, FindEventsProps, EventProps, FindEventProductsProps, FindEventTicketsProps, UserTicketProps, CreateEventReminderProps, CreateOrderProps, CreatedOrderProps, GetOrderProps, PlatformFeeProps, CreateTicketFileProps, UpdateUserTicketProps, TransferTicketProps, GetMeUserProps, UserOrderProps, GetUserEventsProps } from '@meaple-com/types';
|
|
3
3
|
|
|
4
4
|
interface ApiResponse<T = any> {
|
|
5
5
|
data: T;
|
|
@@ -47,11 +47,10 @@ declare class CouponResource {
|
|
|
47
47
|
|
|
48
48
|
declare class EventsResource {
|
|
49
49
|
find(params?: FindEventsParams): Promise<FindEventsProps>;
|
|
50
|
-
get(eventId: string): Promise<EventProps>;
|
|
51
50
|
getBySlug(eventSlug: string): Promise<EventProps>;
|
|
52
51
|
getProducts(eventId: string, privateToken?: string | null): Promise<FindEventProductsProps>;
|
|
53
52
|
getTickets(eventId: string, privateToken?: string | null, predecessorIds?: string[]): Promise<FindEventTicketsProps>;
|
|
54
|
-
getUserEventTickets(eventId: string): Promise<
|
|
53
|
+
getUserEventTickets(eventId: string): Promise<UserTicketProps[]>;
|
|
55
54
|
createReminder(eventId: string, data: CreateEventReminderProps): Promise<{
|
|
56
55
|
message: string;
|
|
57
56
|
}>;
|
|
@@ -80,24 +79,9 @@ declare class TicketsResource {
|
|
|
80
79
|
}
|
|
81
80
|
|
|
82
81
|
declare class UsersResource {
|
|
83
|
-
|
|
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>;
|
|
82
|
+
getMe(): Promise<GetMeUserProps>;
|
|
99
83
|
getOrders(params?: QueryParams): Promise<UserOrderProps[]>;
|
|
100
|
-
getEvents(params?: QueryParams): Promise<
|
|
84
|
+
getEvents(params?: QueryParams): Promise<GetUserEventsProps[]>;
|
|
101
85
|
refundOrder(orderId: string): Promise<{
|
|
102
86
|
message: string;
|
|
103
87
|
}>;
|
|
@@ -119,4 +103,6 @@ declare class MeapleSDK {
|
|
|
119
103
|
setGlobalToken(token: string): void;
|
|
120
104
|
}
|
|
121
105
|
|
|
122
|
-
|
|
106
|
+
declare function descriptionToHtml(description: Record<string, unknown>[] | null | undefined): string;
|
|
107
|
+
|
|
108
|
+
export { CategoriesResource, CouponResource, EventsResource, MeapleSDK, type MeapleSDKOptions, OrdersResource, PaymentsResource, TicketsResource, UsersResource, api, descriptionToHtml };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AxiosInstance, AxiosRequestConfig } from 'axios';
|
|
2
|
-
import { CategoryProps, CheckCouponProps, CouponProps, FindEventsParams, FindEventsProps, EventProps, FindEventProductsProps, FindEventTicketsProps,
|
|
2
|
+
import { CategoryProps, CheckCouponProps, CouponProps, FindEventsParams, FindEventsProps, EventProps, FindEventProductsProps, FindEventTicketsProps, UserTicketProps, CreateEventReminderProps, CreateOrderProps, CreatedOrderProps, GetOrderProps, PlatformFeeProps, CreateTicketFileProps, UpdateUserTicketProps, TransferTicketProps, GetMeUserProps, UserOrderProps, GetUserEventsProps } from '@meaple-com/types';
|
|
3
3
|
|
|
4
4
|
interface ApiResponse<T = any> {
|
|
5
5
|
data: T;
|
|
@@ -47,11 +47,10 @@ declare class CouponResource {
|
|
|
47
47
|
|
|
48
48
|
declare class EventsResource {
|
|
49
49
|
find(params?: FindEventsParams): Promise<FindEventsProps>;
|
|
50
|
-
get(eventId: string): Promise<EventProps>;
|
|
51
50
|
getBySlug(eventSlug: string): Promise<EventProps>;
|
|
52
51
|
getProducts(eventId: string, privateToken?: string | null): Promise<FindEventProductsProps>;
|
|
53
52
|
getTickets(eventId: string, privateToken?: string | null, predecessorIds?: string[]): Promise<FindEventTicketsProps>;
|
|
54
|
-
getUserEventTickets(eventId: string): Promise<
|
|
53
|
+
getUserEventTickets(eventId: string): Promise<UserTicketProps[]>;
|
|
55
54
|
createReminder(eventId: string, data: CreateEventReminderProps): Promise<{
|
|
56
55
|
message: string;
|
|
57
56
|
}>;
|
|
@@ -80,24 +79,9 @@ declare class TicketsResource {
|
|
|
80
79
|
}
|
|
81
80
|
|
|
82
81
|
declare class UsersResource {
|
|
83
|
-
|
|
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>;
|
|
82
|
+
getMe(): Promise<GetMeUserProps>;
|
|
99
83
|
getOrders(params?: QueryParams): Promise<UserOrderProps[]>;
|
|
100
|
-
getEvents(params?: QueryParams): Promise<
|
|
84
|
+
getEvents(params?: QueryParams): Promise<GetUserEventsProps[]>;
|
|
101
85
|
refundOrder(orderId: string): Promise<{
|
|
102
86
|
message: string;
|
|
103
87
|
}>;
|
|
@@ -119,4 +103,6 @@ declare class MeapleSDK {
|
|
|
119
103
|
setGlobalToken(token: string): void;
|
|
120
104
|
}
|
|
121
105
|
|
|
122
|
-
|
|
106
|
+
declare function descriptionToHtml(description: Record<string, unknown>[] | null | undefined): string;
|
|
107
|
+
|
|
108
|
+
export { CategoriesResource, CouponResource, EventsResource, MeapleSDK, type MeapleSDKOptions, OrdersResource, PaymentsResource, TicketsResource, UsersResource, api, descriptionToHtml };
|
package/dist/index.js
CHANGED
|
@@ -38,7 +38,8 @@ __export(index_exports, {
|
|
|
38
38
|
PaymentsResource: () => PaymentsResource,
|
|
39
39
|
TicketsResource: () => TicketsResource,
|
|
40
40
|
UsersResource: () => UsersResource,
|
|
41
|
-
api: () => api
|
|
41
|
+
api: () => api,
|
|
42
|
+
descriptionToHtml: () => descriptionToHtml
|
|
42
43
|
});
|
|
43
44
|
module.exports = __toCommonJS(index_exports);
|
|
44
45
|
|
|
@@ -193,13 +194,6 @@ var EventsResource = class {
|
|
|
193
194
|
});
|
|
194
195
|
return response.data;
|
|
195
196
|
}
|
|
196
|
-
// Get event by ID
|
|
197
|
-
async get(eventId) {
|
|
198
|
-
const response = await api.get(
|
|
199
|
-
`/v1/events/${eventId}`
|
|
200
|
-
);
|
|
201
|
-
return response.data.event;
|
|
202
|
-
}
|
|
203
197
|
// Get event by slug (uses x-channel-id header)
|
|
204
198
|
async getBySlug(eventSlug) {
|
|
205
199
|
const response = await api.get(
|
|
@@ -234,13 +228,13 @@ var EventsResource = class {
|
|
|
234
228
|
const response = await api.get(
|
|
235
229
|
`/v1/events/${eventId}/user-tickets`
|
|
236
230
|
);
|
|
237
|
-
return response.data;
|
|
231
|
+
return response.data.userTickets;
|
|
238
232
|
}
|
|
239
233
|
// Create event reminder
|
|
240
234
|
async createReminder(eventId, data) {
|
|
241
235
|
const response = await api.post(
|
|
242
236
|
`/v1/events/${eventId}/reminder`,
|
|
243
|
-
data
|
|
237
|
+
{ reminder: data }
|
|
244
238
|
);
|
|
245
239
|
return response.data;
|
|
246
240
|
}
|
|
@@ -289,42 +283,9 @@ var TicketsResource = class {
|
|
|
289
283
|
|
|
290
284
|
// src/resources/users/index.ts
|
|
291
285
|
var UsersResource = class {
|
|
292
|
-
async create(data) {
|
|
293
|
-
const response = await api.post("/v1/users", data);
|
|
294
|
-
return response.data;
|
|
295
|
-
}
|
|
296
286
|
async getMe() {
|
|
297
287
|
const response = await api.get("/v1/users/me");
|
|
298
|
-
return response.data;
|
|
299
|
-
}
|
|
300
|
-
async update(data) {
|
|
301
|
-
const response = await api.put("/v1/users", data);
|
|
302
|
-
return response.data;
|
|
303
|
-
}
|
|
304
|
-
async updateEmail(data) {
|
|
305
|
-
const response = await api.patch(
|
|
306
|
-
"/v1/users/email",
|
|
307
|
-
data
|
|
308
|
-
);
|
|
309
|
-
return response.data;
|
|
310
|
-
}
|
|
311
|
-
async updatePassword(data) {
|
|
312
|
-
const response = await api.patch(
|
|
313
|
-
"/v1/users/password",
|
|
314
|
-
data
|
|
315
|
-
);
|
|
316
|
-
return response.data;
|
|
317
|
-
}
|
|
318
|
-
async delete() {
|
|
319
|
-
const response = await api.delete("/v1/users");
|
|
320
|
-
return response.data;
|
|
321
|
-
}
|
|
322
|
-
async getPromoterCoupons(params = {}) {
|
|
323
|
-
const response = await api.get(
|
|
324
|
-
"/v1/users/promoters/coupons",
|
|
325
|
-
{ params }
|
|
326
|
-
);
|
|
327
|
-
return response.data;
|
|
288
|
+
return response.data.user;
|
|
328
289
|
}
|
|
329
290
|
async getOrders(params = {}) {
|
|
330
291
|
const response = await api.get(
|
|
@@ -372,6 +333,136 @@ var MeapleSDK = class {
|
|
|
372
333
|
api.setBearerToken(token);
|
|
373
334
|
}
|
|
374
335
|
};
|
|
336
|
+
|
|
337
|
+
// src/utils/colorMapping.ts
|
|
338
|
+
var COLOR_MAP = {
|
|
339
|
+
white: {
|
|
340
|
+
hex: `#ffffff`,
|
|
341
|
+
rgb: `rgb(255, 255, 255)`
|
|
342
|
+
},
|
|
343
|
+
"text-400": {
|
|
344
|
+
hex: `#c7c7c7`,
|
|
345
|
+
rgb: `rgb(199, 199, 199)`
|
|
346
|
+
},
|
|
347
|
+
primary: {
|
|
348
|
+
hex: `#00a0fc`,
|
|
349
|
+
rgb: `rgb(0, 160, 252)`
|
|
350
|
+
},
|
|
351
|
+
secondary: {
|
|
352
|
+
hex: `#fca600`,
|
|
353
|
+
rgb: `rgb(252, 166, 0)`
|
|
354
|
+
},
|
|
355
|
+
tertiary: {
|
|
356
|
+
hex: `#ab71f4`,
|
|
357
|
+
rgb: `rgb(171, 113, 244)`
|
|
358
|
+
}
|
|
359
|
+
};
|
|
360
|
+
var slateNameToHex = (name) => {
|
|
361
|
+
const colorData = COLOR_MAP[name];
|
|
362
|
+
return colorData?.hex;
|
|
363
|
+
};
|
|
364
|
+
|
|
365
|
+
// src/utils/descriptionToHtml.ts
|
|
366
|
+
var isEmbedUrl = (url) => {
|
|
367
|
+
if (!url) return false;
|
|
368
|
+
const patterns = [
|
|
369
|
+
/youtube\.com\/embed\//,
|
|
370
|
+
/youtu\.be\//,
|
|
371
|
+
/open\.spotify\.com\/embed\//
|
|
372
|
+
];
|
|
373
|
+
return patterns.some((p) => p.test(url));
|
|
374
|
+
};
|
|
375
|
+
var isSpotifyUrl = (url) => {
|
|
376
|
+
if (!url) return false;
|
|
377
|
+
return /open\.spotify\.com\/embed\//.test(url);
|
|
378
|
+
};
|
|
379
|
+
var escapeHtml = (text) => text.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
|
|
380
|
+
function isTextNode(node) {
|
|
381
|
+
return typeof node.text === "string";
|
|
382
|
+
}
|
|
383
|
+
function renderMarks(text, marks) {
|
|
384
|
+
let result = escapeHtml(text);
|
|
385
|
+
if (!result) return result;
|
|
386
|
+
const wrap = (tag, attrs = "") => `<${tag}${attrs ? ` ${attrs}` : ""}>${result}</${tag}>`;
|
|
387
|
+
if (marks.bold) result = wrap("strong");
|
|
388
|
+
if (marks.italic) result = wrap("em");
|
|
389
|
+
if (marks.underline) result = wrap("u");
|
|
390
|
+
if (marks.strike) result = wrap("s");
|
|
391
|
+
if (marks.color) {
|
|
392
|
+
const hex = slateNameToHex(marks.color);
|
|
393
|
+
if (hex) result = wrap("span", `style="color: ${hex}"`);
|
|
394
|
+
}
|
|
395
|
+
return result;
|
|
396
|
+
}
|
|
397
|
+
function renderChildren(children) {
|
|
398
|
+
return children.map(
|
|
399
|
+
(child) => isTextNode(child) ? renderMarks(child.text ?? "", child) : renderElement(child)
|
|
400
|
+
).join("");
|
|
401
|
+
}
|
|
402
|
+
function isWhitespaceOnly(children) {
|
|
403
|
+
return children.every((child) => {
|
|
404
|
+
if (!isTextNode(child)) return false;
|
|
405
|
+
const text = child.text ?? "";
|
|
406
|
+
return /^\s*$/.test(text);
|
|
407
|
+
});
|
|
408
|
+
}
|
|
409
|
+
function renderElement(node) {
|
|
410
|
+
const children = node.children ?? [];
|
|
411
|
+
const type = node.type ?? "paragraph";
|
|
412
|
+
switch (type) {
|
|
413
|
+
case "paragraph": {
|
|
414
|
+
const content = renderChildren(children);
|
|
415
|
+
if (isWhitespaceOnly(children) || /^\s*$/.test(content)) {
|
|
416
|
+
return content.replace(/\n/g, "<br>") || "<br>";
|
|
417
|
+
}
|
|
418
|
+
return `<p>${content}</p>`;
|
|
419
|
+
}
|
|
420
|
+
case "heading-one":
|
|
421
|
+
return `<h1>${renderChildren(children)}</h1>`;
|
|
422
|
+
case "heading-two":
|
|
423
|
+
return `<h2>${renderChildren(children)}</h2>`;
|
|
424
|
+
case "heading-three":
|
|
425
|
+
return `<h3>${renderChildren(children)}</h3>`;
|
|
426
|
+
case "bulleted-list":
|
|
427
|
+
return `<ul>${renderChildren(children)}</ul>`;
|
|
428
|
+
case "numbered-list":
|
|
429
|
+
return `<ol>${renderChildren(children)}</ol>`;
|
|
430
|
+
case "list-item":
|
|
431
|
+
return `<li>${renderChildren(children)}</li>`;
|
|
432
|
+
case "link": {
|
|
433
|
+
const url = node.url;
|
|
434
|
+
if (isEmbedUrl(url)) {
|
|
435
|
+
const style = isSpotifyUrl(url) ? "width: 100%; height: 152px; display: block" : "width: 100%; aspect-ratio: 16/9; display: block";
|
|
436
|
+
return `<iframe src="${escapeHtml(url ?? "")}" frameborder="0" allowfullscreen="true" style="${style}"></iframe>`;
|
|
437
|
+
}
|
|
438
|
+
const href = url ? ` href="${escapeHtml(url)}"` : "";
|
|
439
|
+
return `<a${href} target="_blank" rel="noopener noreferrer">${renderChildren(children)}</a>`;
|
|
440
|
+
}
|
|
441
|
+
case "image": {
|
|
442
|
+
const url = node.url;
|
|
443
|
+
const alt = node.alt;
|
|
444
|
+
const size = node.size;
|
|
445
|
+
const attrs = [];
|
|
446
|
+
if (url) attrs.push(`src="${escapeHtml(url)}"`);
|
|
447
|
+
if (alt) attrs.push(`alt="${escapeHtml(alt)}"`);
|
|
448
|
+
if (size !== void 0)
|
|
449
|
+
attrs.push(`style="width: ${size}%; height: auto"`);
|
|
450
|
+
return `<img ${attrs.join(" ")}>`;
|
|
451
|
+
}
|
|
452
|
+
default:
|
|
453
|
+
return renderChildren(children) || "<p></p>";
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
function descriptionToHtml(description) {
|
|
457
|
+
if (!description || !Array.isArray(description) || description.length === 0) {
|
|
458
|
+
return "";
|
|
459
|
+
}
|
|
460
|
+
try {
|
|
461
|
+
return description.map((n) => renderElement(n)).join("");
|
|
462
|
+
} catch {
|
|
463
|
+
return "";
|
|
464
|
+
}
|
|
465
|
+
}
|
|
375
466
|
// Annotate the CommonJS export names for ESM import in node:
|
|
376
467
|
0 && (module.exports = {
|
|
377
468
|
CategoriesResource,
|
|
@@ -382,6 +473,7 @@ var MeapleSDK = class {
|
|
|
382
473
|
PaymentsResource,
|
|
383
474
|
TicketsResource,
|
|
384
475
|
UsersResource,
|
|
385
|
-
api
|
|
476
|
+
api,
|
|
477
|
+
descriptionToHtml
|
|
386
478
|
});
|
|
387
479
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/core/http/api.ts","../src/resources/categories/index.ts","../src/resources/coupon/index.ts","../src/resources/events/index.ts","../src/resources/orders/index.ts","../src/resources/payments/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 { CouponResource } from './resources/coupon';\nexport { EventsResource } from './resources/events';\nexport { OrdersResource } from './resources/orders';\nexport { PaymentsResource } from './resources/payments';\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 '/v1/categories'\n );\n return response.data.categories;\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 `/v1/events/${eventId}/coupons/${couponCode}/check`\n );\n return response.data.coupon;\n }\n}\n","import type {\n CreateEventReminderProps,\n EventProps,\n FindEventProductsProps,\n FindEventsParams,\n FindEventsProps,\n FindEventTicketsProps,\n FindUserEventTicketsProps,\n GetChannelEventProps,\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>('/v1/events', {\n params,\n });\n return response.data;\n }\n\n // Get event by ID\n async get(eventId: string): Promise<EventProps> {\n const response = await api.get<GetChannelEventProps>(\n `/v1/events/${eventId}`\n );\n return response.data.event;\n }\n\n // Get event by slug (uses x-channel-id header)\n async getBySlug(eventSlug: string): Promise<EventProps> {\n const response = await api.get<GetChannelEventProps>(\n `/v1/events/${eventSlug}`\n );\n return response.data.event;\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 `/v1/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 `/v1/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 `/v1/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 `/v1/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>('/v1/orders', data);\n return response.data;\n }\n\n async get(orderId: string, headers?: Headers): Promise<GetOrderProps> {\n const response = await api.get<GetOrderProps>(`/v1/orders/${orderId}`, {\n headers,\n });\n return response.data;\n }\n}\n","import type { PlatformFeeProps } from '@meaple-com/types';\n\nimport { api } from '../../core/http/api';\n\nexport class PaymentsResource {\n async getFee(eventId?: string): Promise<PlatformFeeProps> {\n const response = await api.get<PlatformFeeProps>('/v1/payments/fee', {\n params: { eventId },\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 `/v1/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(`/v1/tickets/user-tickets/${userTicketId}`, data);\n }\n\n async transfer(ticketId: string, data: TransferTicketProps): Promise<void> {\n await api.post(`/v1/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>('/v1/users', data);\n return response.data;\n }\n\n async getMe(): Promise<UserProps> {\n const response = await api.get<UserProps>('/v1/users/me');\n return response.data;\n }\n\n async update(data: UpdateUserProps): Promise<UserProps> {\n const response = await api.put<UserProps>('/v1/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 '/v1/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 '/v1/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 }>('/v1/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 '/v1/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 '/v1/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 '/v1/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 `/v1/users/orders/${orderId}/refund`\n );\n return response.data;\n }\n}\n","import { api } from './core/http/api';\nimport { CategoriesResource } from './resources/categories';\nimport { CouponResource } from './resources/coupon';\nimport { EventsResource } from './resources/events';\nimport { OrdersResource } from './resources/orders';\nimport { PaymentsResource } from './resources/payments';\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 categories: CategoriesResource;\n public coupon: CouponResource;\n public payments: PaymentsResource;\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.categories = new CategoriesResource();\n this.coupon = new CouponResource();\n this.payments = new PaymentsResource();\n this.tickets = new TicketsResource();\n }\n\n setGlobalToken(token: string): void {\n api.setBearerToken(token);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,mBAAwE;AA2BjE,IAAM,kBAAN,MAAsB;AAAA,EACnB;AAAA,EACA,eAGJ,EAAE,SAAS,CAAC,GAAG,UAAU,CAAC,EAAE;AAAA,EAEhC,YAAY,SAAoB,CAAC,GAAG;AAClC,SAAK,QAAQ,aAAAA,QAAM,OAAO;AAAA,MACxB,SAAS,OAAO,WAAW;AAAA,MAC3B,SAAS,OAAO,WAAW;AAAA,MAC3B,SAAS;AAAA,QACP,gBAAgB;AAAA,QAChB,GAAG,OAAO;AAAA,MACZ;AAAA,IACF,CAAC;AAED,SAAK,kBAAkB;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA,EAMA,iBAAiB,MAAc,OAAqB;AAClD,SAAK,MAAM,SAAS,QAAQ,OAAO,IAAI,IAAI;AAAA,EAC7C;AAAA,EAEA,oBAAoB,MAAoB;AACtC,WAAO,KAAK,MAAM,SAAS,QAAQ,OAAO,IAAI;AAAA,EAChD;AAAA,EAEA,WAAW,SAAuB;AAChC,SAAK,MAAM,SAAS,UAAU;AAAA,EAChC;AAAA,EAEA,eAAe,OAAqB;AAClC,SAAK,iBAAiB,iBAAiB,UAAU,KAAK,EAAE;AAAA,EAC1D;AAAA,EAEA,IAAI,gBAA+B;AACjC,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAMA,sBAAsB,aAAuC;AAC3D,SAAK,aAAa,QAAQ,KAAK,WAAW;AAAA,EAC5C;AAAA,EAEA,uBACE,aACA,YACM;AACN,QAAI,aAAa;AACf,WAAK,aAAa,SAAS,KAAK,WAAW;AAAA,IAC7C;AACA,QAAI,YAAY;AACd,WAAK,MAAM,aAAa,SAAS,IAAI,QAAW,UAAU;AAAA,IAC5D;AAAA,EACF;AAAA,EAEA,oBAA0B;AACxB,SAAK,aAAa,UAAU,CAAC;AAC7B,SAAK,aAAa,WAAW,CAAC;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,IACJ,KACA,QACyB;AACzB,UAAM,WAAW,MAAM,KAAK,MAAM,IAAI,KAAK,MAAM;AACjD,WAAO,KAAK,eAAe,QAAQ;AAAA,EACrC;AAAA,EAEA,MAAM,KACJ,KACA,MACA,QACyB;AACzB,UAAM,WAAW,MAAM,KAAK,MAAM,KAAK,KAAK,MAAM,MAAM;AACxD,WAAO,KAAK,eAAe,QAAQ;AAAA,EACrC;AAAA,EAEA,MAAM,IACJ,KACA,MACA,QACyB;AACzB,UAAM,WAAW,MAAM,KAAK,MAAM,IAAI,KAAK,MAAM,MAAM;AACvD,WAAO,KAAK,eAAe,QAAQ;AAAA,EACrC;AAAA,EAEA,MAAM,MACJ,KACA,MACA,QACyB;AACzB,UAAM,WAAW,MAAM,KAAK,MAAM,MAAM,KAAK,MAAM,MAAM;AACzD,WAAO,KAAK,eAAe,QAAQ;AAAA,EACrC;AAAA,EAEA,MAAM,OACJ,KACA,QACyB;AACzB,UAAM,WAAW,MAAM,KAAK,MAAM,OAAO,KAAK,MAAM;AACpD,WAAO,KAAK,eAAe,QAAQ;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAMQ,oBAA0B;AAEhC,SAAK,MAAM,aAAa,QAAQ,IAAI,OAAM,WAAU;AAClD,UAAI,kBAAkB;AACtB,iBAAW,eAAe,KAAK,aAAa,SAAS;AACnD,0BAAkB,MAAM,YAAY,UAAU,eAAe;AAAA,MAC/D;AACA,aAAO;AAAA,IACT,CAAC;AAGD,SAAK,MAAM,aAAa,SAAS,IAAI,cAAY;AAC/C,UAAI,oBAAoB;AACxB,iBAAW,eAAe,KAAK,aAAa,UAAU;AACpD,4BAAoB,YAAY,iBAAiB;AAAA,MACnD;AACA,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AAAA,EAEQ,eAAkB,UAAyC;AACjE,UAAM,YAAY,SAAS,QAAQ,cAAc;AAGjD,QAAI,SAAS,gBAAgB,MAAM;AACjC,aAAO;AAAA,QACL,MAAM,SAAS;AAAA,QACf,SAAS,SAAS,UAAU,OAAO,SAAS,SAAS;AAAA,QACrD,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,QAClC,GAAI,aAAa,EAAE,UAAU;AAAA,MAC/B;AAAA,IACF;AAEA,WAAO;AAAA,MACL,MAAM,SAAS;AAAA,MACf,SAAS,SAAS,UAAU,OAAO,SAAS,SAAS;AAAA,MACrD,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,MAClC,GAAI,aAAa,EAAE,UAAU;AAAA,IAC/B;AAAA,EACF;AACF;AAMO,IAAM,MAAM,IAAI,gBAAgB;;;AC7LhC,IAAM,qBAAN,MAAyB;AAAA,EAC9B,MAAM,OAAiC;AACrC,UAAM,WAAW,MAAM,IAAI;AAAA,MACzB;AAAA,IACF;AACA,WAAO,SAAS,KAAK;AAAA,EACvB;AACF;;;ACPO,IAAM,iBAAN,MAAqB;AAAA,EAC1B,MAAM,MAAM,EAAE,SAAS,WAAW,GAA2C;AAC3E,UAAM,WAAW,MAAM,IAAI;AAAA,MACzB,cAAc,OAAO,YAAY,UAAU;AAAA,IAC7C;AACA,WAAO,SAAS,KAAK;AAAA,EACvB;AACF;;;ACIA,IAAM,eAAe,CAAC,YAAsC;AAAA,EAC1D,GAAG;AAAA,EACH,OAAO,OAAO,OAAO,MAAM,QAAQ,CAAC,CAAC;AACvC;AAEA,IAAM,iBAAiB,CAAC,aAAuC;AAAA,EAC7D,GAAG;AAAA,EACH,OAAO,OAAO,QAAQ,MAAM,QAAQ,CAAC,CAAC;AACxC;AAEO,IAAM,iBAAN,MAAqB;AAAA;AAAA,EAE1B,MAAM,KAAK,QAAqD;AAC9D,UAAM,WAAW,MAAM,IAAI,IAAqB,cAAc;AAAA,MAC5D;AAAA,IACF,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AAAA;AAAA,EAGA,MAAM,IAAI,SAAsC;AAC9C,UAAM,WAAW,MAAM,IAAI;AAAA,MACzB,cAAc,OAAO;AAAA,IACvB;AACA,WAAO,SAAS,KAAK;AAAA,EACvB;AAAA;AAAA,EAGA,MAAM,UAAU,WAAwC;AACtD,UAAM,WAAW,MAAM,IAAI;AAAA,MACzB,cAAc,SAAS;AAAA,IACzB;AACA,WAAO,SAAS,KAAK;AAAA,EACvB;AAAA;AAAA,EAGA,MAAM,YACJ,SACA,cACiC;AACjC,UAAM,WAAW,MAAM,IAAI;AAAA,MACzB,cAAc,OAAO;AAAA,MACrB,EAAE,QAAQ,EAAE,aAAa,EAAE;AAAA,IAC7B;AAEA,UAAM,WAAW,SAAS,KAAK,SAAS,IAAI,cAAc;AAE1D,WAAO,EAAE,GAAG,SAAS,MAAM,SAAS;AAAA,EACtC;AAAA;AAAA,EAGA,MAAM,WACJ,SACA,cACA,gBACgC;AAChC,UAAM,WAAW,MAAM,IAAI;AAAA,MACzB,cAAc,OAAO;AAAA,MACrB,EAAE,QAAQ,EAAE,cAAc,eAAe,EAAE;AAAA,IAC7C;AAEA,UAAM,UAAU,SAAS,KAAK,QAAQ,IAAI,YAAY;AAEtD,UAAM,SAAS,SAAS,KAAK,OAAO,IAAI,YAAU;AAAA,MAChD,GAAG;AAAA,MACH,SAAS,MAAM,QAAQ,IAAI,YAAY;AAAA,IACzC,EAAE;AAEF,WAAO,EAAE,GAAG,SAAS,MAAM,SAAS,OAAO;AAAA,EAC7C;AAAA;AAAA,EAGA,MAAM,oBACJ,SACoC;AACpC,UAAM,WAAW,MAAM,IAAI;AAAA,MACzB,cAAc,OAAO;AAAA,IACvB;AACA,WAAO,SAAS;AAAA,EAClB;AAAA;AAAA,EAGA,MAAM,eACJ,SACA,MAC8B;AAC9B,UAAM,WAAW,MAAM,IAAI;AAAA,MACzB,cAAc,OAAO;AAAA,MACrB;AAAA,IACF;AACA,WAAO,SAAS;AAAA,EAClB;AACF;;;AClGO,IAAM,iBAAN,MAAqB;AAAA,EAC1B,MAAM,OAAO,MAAoD;AAC/D,UAAM,WAAW,MAAM,IAAI,KAAwB,cAAc,IAAI;AACrE,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,IAAI,SAAiB,SAA2C;AACpE,UAAM,WAAW,MAAM,IAAI,IAAmB,cAAc,OAAO,IAAI;AAAA,MACrE;AAAA,IACF,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AACF;;;ACjBO,IAAM,mBAAN,MAAuB;AAAA,EAC5B,MAAM,OAAO,SAA6C;AACxD,UAAM,WAAW,MAAM,IAAI,IAAsB,oBAAoB;AAAA,MACnE,QAAQ,EAAE,QAAQ;AAAA,IACpB,CAAC;AACD,WAAO,SAAS;AAAA,EAClB;AACF;;;ACHO,IAAM,kBAAN,MAAsB;AAAA,EAC3B,MAAM,WACJ,cACA,QACe;AACf,UAAM,WAAW,MAAM,IAAI;AAAA,MACzB,4BAA4B,YAAY;AAAA,MACxC,EAAE,QAAQ,cAAc,OAAO;AAAA,IACjC;AACA,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,eACJ,cACA,MACe;AACf,UAAM,IAAI,IAAI,4BAA4B,YAAY,IAAI,IAAI;AAAA,EAChE;AAAA,EAEA,MAAM,SAAS,UAAkB,MAA0C;AACzE,UAAM,IAAI,KAAK,eAAe,QAAQ,aAAa,IAAI;AAAA,EACzD;AACF;;;AChBO,IAAM,gBAAN,MAAoB;AAAA,EACzB,MAAM,OAAO,MAA2C;AACtD,UAAM,WAAW,MAAM,IAAI,KAAgB,aAAa,IAAI;AAC5D,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,QAA4B;AAChC,UAAM,WAAW,MAAM,IAAI,IAAe,cAAc;AACxD,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,OAAO,MAA2C;AACtD,UAAM,WAAW,MAAM,IAAI,IAAe,aAAa,IAAI;AAC3D,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,YAAY,MAA0D;AAC1E,UAAM,WAAW,MAAM,IAAI;AAAA,MACzB;AAAA,MACA;AAAA,IACF;AACA,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,eACJ,MAC8B;AAC9B,UAAM,WAAW,MAAM,IAAI;AAAA,MACzB;AAAA,MACA;AAAA,IACF;AACA,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,SAAuC;AAC3C,UAAM,WAAW,MAAM,IAAI,OAA4B,WAAW;AAClE,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,mBACJ,SAA8C,CAAC,GACpB;AAC3B,UAAM,WAAW,MAAM,IAAI;AAAA,MACzB;AAAA,MACA,EAAE,OAAO;AAAA,IACX;AACA,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,MAAM,UAAU,SAAsB,CAAC,GAA8B;AACnE,UAAM,WAAW,MAAM,IAAI;AAAA,MACzB;AAAA,MACA,EAAE,OAAO;AAAA,IACX;AACA,WAAO,SAAS,KAAK;AAAA,EACvB;AAAA,EAEA,MAAM,UAAU,SAAsB,CAAC,GAA0B;AAC/D,UAAM,WAAW,MAAM,IAAI;AAAA,MACzB;AAAA,MACA,EAAE,OAAO;AAAA,IACX;AACA,WAAO,SAAS,KAAK;AAAA,EACvB;AAAA,EAEA,MAAM,YAAY,SAA+C;AAC/D,UAAM,WAAW,MAAM,IAAI;AAAA,MACzB,oBAAoB,OAAO;AAAA,IAC7B;AACA,WAAO,SAAS;AAAA,EAClB;AACF;;;ACvEO,IAAM,YAAN,MAAgB;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEP,YAAY,QAA0B;AAEpC,QAAI,WAAW,OAAO,OAAO;AAC7B,QAAI,iBAAiB,gBAAgB,OAAO,SAAS;AAGrD,SAAK,QAAQ,IAAI,cAAc;AAC/B,SAAK,SAAS,IAAI,eAAe;AACjC,SAAK,SAAS,IAAI,eAAe;AACjC,SAAK,aAAa,IAAI,mBAAmB;AACzC,SAAK,SAAS,IAAI,eAAe;AACjC,SAAK,WAAW,IAAI,iBAAiB;AACrC,SAAK,UAAU,IAAI,gBAAgB;AAAA,EACrC;AAAA,EAEA,eAAe,OAAqB;AAClC,QAAI,eAAe,KAAK;AAAA,EAC1B;AACF;","names":["axios"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/core/http/api.ts","../src/resources/categories/index.ts","../src/resources/coupon/index.ts","../src/resources/events/index.ts","../src/resources/orders/index.ts","../src/resources/payments/index.ts","../src/resources/tickets/index.ts","../src/resources/users/index.ts","../src/meaple-sdk.ts","../src/utils/colorMapping.ts","../src/utils/descriptionToHtml.ts"],"sourcesContent":["export { api } from './core/http/api';\nexport type { MeapleSDKOptions } from './meaple-sdk';\nexport { MeapleSDK } from './meaple-sdk';\nexport { descriptionToHtml } from './utils/descriptionToHtml';\n\n// Export resources for use in hooks\nexport { CategoriesResource } from './resources/categories';\nexport { CouponResource } from './resources/coupon';\nexport { EventsResource } from './resources/events';\nexport { OrdersResource } from './resources/orders';\nexport { PaymentsResource } from './resources/payments';\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 '/v1/categories'\n );\n return response.data.categories;\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 `/v1/events/${eventId}/coupons/${couponCode}/check`\n );\n return response.data.coupon;\n }\n}\n","import type {\n CreateEventReminderProps,\n EventProps,\n FindEventProductItemProps,\n FindEventProductsProps,\n FindEventsParams,\n FindEventsProps,\n FindEventTicketItemProps,\n FindEventTicketsProps,\n GetChannelEventProps,\n UserTicketProps,\n} from '@meaple-com/types';\n\nimport { api } from '../../core/http/api';\n\n// Helper functions\nconst formatTicket = (\n ticket: FindEventTicketItemProps\n): FindEventTicketItemProps => ({\n ...ticket,\n price: Number(ticket.price.toFixed(2)),\n});\n\nconst formatProducts = (\n product: FindEventProductItemProps\n): FindEventProductItemProps => ({\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>('/v1/events', {\n params,\n });\n return response.data;\n }\n\n // Get event by slug (uses x-channel-id header)\n async getBySlug(eventSlug: string): Promise<EventProps> {\n const response = await api.get<GetChannelEventProps>(\n `/v1/events/${eventSlug}`\n );\n return response.data.event;\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 `/v1/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 `/v1/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(eventId: string): Promise<UserTicketProps[]> {\n const response = await api.get<{ userTickets: UserTicketProps[] }>(\n `/v1/events/${eventId}/user-tickets`\n );\n return response.data.userTickets;\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 `/v1/events/${eventId}/reminder`,\n { reminder: 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>('/v1/orders', data);\n return response.data;\n }\n\n async get(orderId: string, headers?: Headers): Promise<GetOrderProps> {\n const response = await api.get<GetOrderProps>(`/v1/orders/${orderId}`, {\n headers,\n });\n return response.data;\n }\n}\n","import type { PlatformFeeProps } from '@meaple-com/types';\n\nimport { api } from '../../core/http/api';\n\nexport class PaymentsResource {\n async getFee(eventId?: string): Promise<PlatformFeeProps> {\n const response = await api.get<PlatformFeeProps>('/v1/payments/fee', {\n params: { eventId },\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 `/v1/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(`/v1/tickets/user-tickets/${userTicketId}`, data);\n }\n\n async transfer(ticketId: string, data: TransferTicketProps): Promise<void> {\n await api.post(`/v1/tickets/${ticketId}/transfer`, data);\n }\n}\n","import type {\n GetMeUserProps,\n GetUserEventsProps,\n UserOrderProps,\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 getMe(): Promise<GetMeUserProps> {\n const response = await api.get<{ user: GetMeUserProps }>('/v1/users/me');\n return response.data.user;\n }\n\n async getOrders(params: QueryParams = {}): Promise<UserOrderProps[]> {\n const response = await api.get<{ orders: UserOrderProps[] }>(\n '/v1/users/orders',\n { params }\n );\n return response.data.orders;\n }\n\n async getEvents(params: QueryParams = {}): Promise<GetUserEventsProps[]> {\n const response = await api.get<{ events: GetUserEventsProps[] }>(\n '/v1/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 `/v1/users/orders/${orderId}/refund`\n );\n return response.data;\n }\n}\n","import { api } from './core/http/api';\nimport { CategoriesResource } from './resources/categories';\nimport { CouponResource } from './resources/coupon';\nimport { EventsResource } from './resources/events';\nimport { OrdersResource } from './resources/orders';\nimport { PaymentsResource } from './resources/payments';\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 categories: CategoriesResource;\n public coupon: CouponResource;\n public payments: PaymentsResource;\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.categories = new CategoriesResource();\n this.coupon = new CouponResource();\n this.payments = new PaymentsResource();\n this.tickets = new TicketsResource();\n }\n\n setGlobalToken(token: string): void {\n api.setBearerToken(token);\n }\n}\n","export const COLOR_MAP = {\n white: {\n hex: `#ffffff`,\n rgb: `rgb(255, 255, 255)`,\n },\n 'text-400': {\n hex: `#c7c7c7`,\n rgb: `rgb(199, 199, 199)`,\n },\n primary: {\n hex: `#00a0fc`,\n rgb: `rgb(0, 160, 252)`,\n },\n secondary: {\n hex: `#fca600`,\n rgb: `rgb(252, 166, 0)`,\n },\n tertiary: {\n hex: `#ab71f4`,\n rgb: `rgb(171, 113, 244)`,\n },\n} as const;\n\nexport const slateNameToHex = (name: string): string | undefined => {\n const colorData = COLOR_MAP[name as keyof typeof COLOR_MAP];\n return colorData?.hex;\n};\n","import { slateNameToHex } from './colorMapping';\n\nconst isEmbedUrl = (url?: string): boolean => {\n if (!url) return false;\n const patterns = [\n /youtube\\.com\\/embed\\//,\n /youtu\\.be\\//,\n /open\\.spotify\\.com\\/embed\\//,\n ];\n return patterns.some(p => p.test(url));\n};\n\nconst isSpotifyUrl = (url?: string): boolean => {\n if (!url) return false;\n return /open\\.spotify\\.com\\/embed\\//.test(url);\n};\n\nconst escapeHtml = (text: string): string =>\n text\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n\ntype SlateNode = Record<string, unknown>;\ntype SlateElement = SlateNode & { type?: string; children?: SlateNode[] };\ntype SlateText = SlateNode & { text?: string };\n\nfunction isTextNode(node: SlateNode): node is SlateText {\n return typeof (node as SlateText).text === 'string';\n}\n\nfunction renderMarks(text: string, marks: SlateText): string {\n let result = escapeHtml(text);\n if (!result) return result;\n\n const wrap = (tag: string, attrs = '') =>\n `<${tag}${attrs ? ` ${attrs}` : ''}>${result}</${tag}>`;\n\n if (marks.bold) result = wrap('strong');\n if (marks.italic) result = wrap('em');\n if (marks.underline) result = wrap('u');\n if (marks.strike) result = wrap('s');\n if (marks.color) {\n const hex = slateNameToHex(marks.color as string);\n if (hex) result = wrap('span', `style=\"color: ${hex}\"`);\n }\n return result;\n}\n\nfunction renderChildren(children: SlateNode[]): string {\n return children\n .map(child =>\n isTextNode(child)\n ? renderMarks((child as SlateText).text ?? '', child as SlateText)\n : renderElement(child as SlateElement)\n )\n .join('');\n}\n\nfunction isWhitespaceOnly(children: SlateNode[]): boolean {\n return children.every(child => {\n if (!isTextNode(child)) return false;\n const text = (child as SlateText).text ?? '';\n return /^\\s*$/.test(text);\n });\n}\n\nfunction renderElement(node: SlateElement): string {\n const children = node.children ?? [];\n const type = node.type ?? 'paragraph';\n\n switch (type) {\n case 'paragraph': {\n const content = renderChildren(children);\n if (isWhitespaceOnly(children) || /^\\s*$/.test(content)) {\n return content.replace(/\\n/g, '<br>') || '<br>';\n }\n return `<p>${content}</p>`;\n }\n case 'heading-one':\n return `<h1>${renderChildren(children)}</h1>`;\n case 'heading-two':\n return `<h2>${renderChildren(children)}</h2>`;\n case 'heading-three':\n return `<h3>${renderChildren(children)}</h3>`;\n case 'bulleted-list':\n return `<ul>${renderChildren(children)}</ul>`;\n case 'numbered-list':\n return `<ol>${renderChildren(children)}</ol>`;\n case 'list-item':\n return `<li>${renderChildren(children)}</li>`;\n case 'link': {\n const url = node.url as string | undefined;\n if (isEmbedUrl(url)) {\n const style = isSpotifyUrl(url)\n ? 'width: 100%; height: 152px; display: block'\n : 'width: 100%; aspect-ratio: 16/9; display: block';\n return `<iframe src=\"${escapeHtml(url ?? '')}\" frameborder=\"0\" allowfullscreen=\"true\" style=\"${style}\"></iframe>`;\n }\n const href = url ? ` href=\"${escapeHtml(url)}\"` : '';\n return `<a${href} target=\"_blank\" rel=\"noopener noreferrer\">${renderChildren(children)}</a>`;\n }\n case 'image': {\n const url = node.url as string | undefined;\n const alt = node.alt as string | undefined;\n const size = node.size as number | undefined;\n const attrs: string[] = [];\n if (url) attrs.push(`src=\"${escapeHtml(url)}\"`);\n if (alt) attrs.push(`alt=\"${escapeHtml(alt)}\"`);\n if (size !== undefined)\n attrs.push(`style=\"width: ${size}%; height: auto\"`);\n return `<img ${attrs.join(' ')}>`;\n }\n default:\n return renderChildren(children) || '<p></p>';\n }\n}\n\nexport function descriptionToHtml(\n description: Record<string, unknown>[] | null | undefined\n): string {\n if (!description || !Array.isArray(description) || description.length === 0) {\n return '';\n }\n try {\n return description.map(n => renderElement(n as SlateElement)).join('');\n } catch {\n return '';\n }\n}\n"],"mappings":"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","names":["axios"]}
|
package/dist/index.mjs
CHANGED
|
@@ -149,13 +149,6 @@ var EventsResource = class {
|
|
|
149
149
|
});
|
|
150
150
|
return response.data;
|
|
151
151
|
}
|
|
152
|
-
// Get event by ID
|
|
153
|
-
async get(eventId) {
|
|
154
|
-
const response = await api.get(
|
|
155
|
-
`/v1/events/${eventId}`
|
|
156
|
-
);
|
|
157
|
-
return response.data.event;
|
|
158
|
-
}
|
|
159
152
|
// Get event by slug (uses x-channel-id header)
|
|
160
153
|
async getBySlug(eventSlug) {
|
|
161
154
|
const response = await api.get(
|
|
@@ -190,13 +183,13 @@ var EventsResource = class {
|
|
|
190
183
|
const response = await api.get(
|
|
191
184
|
`/v1/events/${eventId}/user-tickets`
|
|
192
185
|
);
|
|
193
|
-
return response.data;
|
|
186
|
+
return response.data.userTickets;
|
|
194
187
|
}
|
|
195
188
|
// Create event reminder
|
|
196
189
|
async createReminder(eventId, data) {
|
|
197
190
|
const response = await api.post(
|
|
198
191
|
`/v1/events/${eventId}/reminder`,
|
|
199
|
-
data
|
|
192
|
+
{ reminder: data }
|
|
200
193
|
);
|
|
201
194
|
return response.data;
|
|
202
195
|
}
|
|
@@ -245,42 +238,9 @@ var TicketsResource = class {
|
|
|
245
238
|
|
|
246
239
|
// src/resources/users/index.ts
|
|
247
240
|
var UsersResource = class {
|
|
248
|
-
async create(data) {
|
|
249
|
-
const response = await api.post("/v1/users", data);
|
|
250
|
-
return response.data;
|
|
251
|
-
}
|
|
252
241
|
async getMe() {
|
|
253
242
|
const response = await api.get("/v1/users/me");
|
|
254
|
-
return response.data;
|
|
255
|
-
}
|
|
256
|
-
async update(data) {
|
|
257
|
-
const response = await api.put("/v1/users", data);
|
|
258
|
-
return response.data;
|
|
259
|
-
}
|
|
260
|
-
async updateEmail(data) {
|
|
261
|
-
const response = await api.patch(
|
|
262
|
-
"/v1/users/email",
|
|
263
|
-
data
|
|
264
|
-
);
|
|
265
|
-
return response.data;
|
|
266
|
-
}
|
|
267
|
-
async updatePassword(data) {
|
|
268
|
-
const response = await api.patch(
|
|
269
|
-
"/v1/users/password",
|
|
270
|
-
data
|
|
271
|
-
);
|
|
272
|
-
return response.data;
|
|
273
|
-
}
|
|
274
|
-
async delete() {
|
|
275
|
-
const response = await api.delete("/v1/users");
|
|
276
|
-
return response.data;
|
|
277
|
-
}
|
|
278
|
-
async getPromoterCoupons(params = {}) {
|
|
279
|
-
const response = await api.get(
|
|
280
|
-
"/v1/users/promoters/coupons",
|
|
281
|
-
{ params }
|
|
282
|
-
);
|
|
283
|
-
return response.data;
|
|
243
|
+
return response.data.user;
|
|
284
244
|
}
|
|
285
245
|
async getOrders(params = {}) {
|
|
286
246
|
const response = await api.get(
|
|
@@ -328,6 +288,136 @@ var MeapleSDK = class {
|
|
|
328
288
|
api.setBearerToken(token);
|
|
329
289
|
}
|
|
330
290
|
};
|
|
291
|
+
|
|
292
|
+
// src/utils/colorMapping.ts
|
|
293
|
+
var COLOR_MAP = {
|
|
294
|
+
white: {
|
|
295
|
+
hex: `#ffffff`,
|
|
296
|
+
rgb: `rgb(255, 255, 255)`
|
|
297
|
+
},
|
|
298
|
+
"text-400": {
|
|
299
|
+
hex: `#c7c7c7`,
|
|
300
|
+
rgb: `rgb(199, 199, 199)`
|
|
301
|
+
},
|
|
302
|
+
primary: {
|
|
303
|
+
hex: `#00a0fc`,
|
|
304
|
+
rgb: `rgb(0, 160, 252)`
|
|
305
|
+
},
|
|
306
|
+
secondary: {
|
|
307
|
+
hex: `#fca600`,
|
|
308
|
+
rgb: `rgb(252, 166, 0)`
|
|
309
|
+
},
|
|
310
|
+
tertiary: {
|
|
311
|
+
hex: `#ab71f4`,
|
|
312
|
+
rgb: `rgb(171, 113, 244)`
|
|
313
|
+
}
|
|
314
|
+
};
|
|
315
|
+
var slateNameToHex = (name) => {
|
|
316
|
+
const colorData = COLOR_MAP[name];
|
|
317
|
+
return colorData?.hex;
|
|
318
|
+
};
|
|
319
|
+
|
|
320
|
+
// src/utils/descriptionToHtml.ts
|
|
321
|
+
var isEmbedUrl = (url) => {
|
|
322
|
+
if (!url) return false;
|
|
323
|
+
const patterns = [
|
|
324
|
+
/youtube\.com\/embed\//,
|
|
325
|
+
/youtu\.be\//,
|
|
326
|
+
/open\.spotify\.com\/embed\//
|
|
327
|
+
];
|
|
328
|
+
return patterns.some((p) => p.test(url));
|
|
329
|
+
};
|
|
330
|
+
var isSpotifyUrl = (url) => {
|
|
331
|
+
if (!url) return false;
|
|
332
|
+
return /open\.spotify\.com\/embed\//.test(url);
|
|
333
|
+
};
|
|
334
|
+
var escapeHtml = (text) => text.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
|
|
335
|
+
function isTextNode(node) {
|
|
336
|
+
return typeof node.text === "string";
|
|
337
|
+
}
|
|
338
|
+
function renderMarks(text, marks) {
|
|
339
|
+
let result = escapeHtml(text);
|
|
340
|
+
if (!result) return result;
|
|
341
|
+
const wrap = (tag, attrs = "") => `<${tag}${attrs ? ` ${attrs}` : ""}>${result}</${tag}>`;
|
|
342
|
+
if (marks.bold) result = wrap("strong");
|
|
343
|
+
if (marks.italic) result = wrap("em");
|
|
344
|
+
if (marks.underline) result = wrap("u");
|
|
345
|
+
if (marks.strike) result = wrap("s");
|
|
346
|
+
if (marks.color) {
|
|
347
|
+
const hex = slateNameToHex(marks.color);
|
|
348
|
+
if (hex) result = wrap("span", `style="color: ${hex}"`);
|
|
349
|
+
}
|
|
350
|
+
return result;
|
|
351
|
+
}
|
|
352
|
+
function renderChildren(children) {
|
|
353
|
+
return children.map(
|
|
354
|
+
(child) => isTextNode(child) ? renderMarks(child.text ?? "", child) : renderElement(child)
|
|
355
|
+
).join("");
|
|
356
|
+
}
|
|
357
|
+
function isWhitespaceOnly(children) {
|
|
358
|
+
return children.every((child) => {
|
|
359
|
+
if (!isTextNode(child)) return false;
|
|
360
|
+
const text = child.text ?? "";
|
|
361
|
+
return /^\s*$/.test(text);
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
function renderElement(node) {
|
|
365
|
+
const children = node.children ?? [];
|
|
366
|
+
const type = node.type ?? "paragraph";
|
|
367
|
+
switch (type) {
|
|
368
|
+
case "paragraph": {
|
|
369
|
+
const content = renderChildren(children);
|
|
370
|
+
if (isWhitespaceOnly(children) || /^\s*$/.test(content)) {
|
|
371
|
+
return content.replace(/\n/g, "<br>") || "<br>";
|
|
372
|
+
}
|
|
373
|
+
return `<p>${content}</p>`;
|
|
374
|
+
}
|
|
375
|
+
case "heading-one":
|
|
376
|
+
return `<h1>${renderChildren(children)}</h1>`;
|
|
377
|
+
case "heading-two":
|
|
378
|
+
return `<h2>${renderChildren(children)}</h2>`;
|
|
379
|
+
case "heading-three":
|
|
380
|
+
return `<h3>${renderChildren(children)}</h3>`;
|
|
381
|
+
case "bulleted-list":
|
|
382
|
+
return `<ul>${renderChildren(children)}</ul>`;
|
|
383
|
+
case "numbered-list":
|
|
384
|
+
return `<ol>${renderChildren(children)}</ol>`;
|
|
385
|
+
case "list-item":
|
|
386
|
+
return `<li>${renderChildren(children)}</li>`;
|
|
387
|
+
case "link": {
|
|
388
|
+
const url = node.url;
|
|
389
|
+
if (isEmbedUrl(url)) {
|
|
390
|
+
const style = isSpotifyUrl(url) ? "width: 100%; height: 152px; display: block" : "width: 100%; aspect-ratio: 16/9; display: block";
|
|
391
|
+
return `<iframe src="${escapeHtml(url ?? "")}" frameborder="0" allowfullscreen="true" style="${style}"></iframe>`;
|
|
392
|
+
}
|
|
393
|
+
const href = url ? ` href="${escapeHtml(url)}"` : "";
|
|
394
|
+
return `<a${href} target="_blank" rel="noopener noreferrer">${renderChildren(children)}</a>`;
|
|
395
|
+
}
|
|
396
|
+
case "image": {
|
|
397
|
+
const url = node.url;
|
|
398
|
+
const alt = node.alt;
|
|
399
|
+
const size = node.size;
|
|
400
|
+
const attrs = [];
|
|
401
|
+
if (url) attrs.push(`src="${escapeHtml(url)}"`);
|
|
402
|
+
if (alt) attrs.push(`alt="${escapeHtml(alt)}"`);
|
|
403
|
+
if (size !== void 0)
|
|
404
|
+
attrs.push(`style="width: ${size}%; height: auto"`);
|
|
405
|
+
return `<img ${attrs.join(" ")}>`;
|
|
406
|
+
}
|
|
407
|
+
default:
|
|
408
|
+
return renderChildren(children) || "<p></p>";
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
function descriptionToHtml(description) {
|
|
412
|
+
if (!description || !Array.isArray(description) || description.length === 0) {
|
|
413
|
+
return "";
|
|
414
|
+
}
|
|
415
|
+
try {
|
|
416
|
+
return description.map((n) => renderElement(n)).join("");
|
|
417
|
+
} catch {
|
|
418
|
+
return "";
|
|
419
|
+
}
|
|
420
|
+
}
|
|
331
421
|
export {
|
|
332
422
|
CategoriesResource,
|
|
333
423
|
CouponResource,
|
|
@@ -337,6 +427,7 @@ export {
|
|
|
337
427
|
PaymentsResource,
|
|
338
428
|
TicketsResource,
|
|
339
429
|
UsersResource,
|
|
340
|
-
api
|
|
430
|
+
api,
|
|
431
|
+
descriptionToHtml
|
|
341
432
|
};
|
|
342
433
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/http/api.ts","../src/resources/categories/index.ts","../src/resources/coupon/index.ts","../src/resources/events/index.ts","../src/resources/orders/index.ts","../src/resources/payments/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 '/v1/categories'\n );\n return response.data.categories;\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 `/v1/events/${eventId}/coupons/${couponCode}/check`\n );\n return response.data.coupon;\n }\n}\n","import type {\n CreateEventReminderProps,\n EventProps,\n FindEventProductsProps,\n FindEventsParams,\n FindEventsProps,\n FindEventTicketsProps,\n FindUserEventTicketsProps,\n GetChannelEventProps,\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>('/v1/events', {\n params,\n });\n return response.data;\n }\n\n // Get event by ID\n async get(eventId: string): Promise<EventProps> {\n const response = await api.get<GetChannelEventProps>(\n `/v1/events/${eventId}`\n );\n return response.data.event;\n }\n\n // Get event by slug (uses x-channel-id header)\n async getBySlug(eventSlug: string): Promise<EventProps> {\n const response = await api.get<GetChannelEventProps>(\n `/v1/events/${eventSlug}`\n );\n return response.data.event;\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 `/v1/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 `/v1/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 `/v1/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 `/v1/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>('/v1/orders', data);\n return response.data;\n }\n\n async get(orderId: string, headers?: Headers): Promise<GetOrderProps> {\n const response = await api.get<GetOrderProps>(`/v1/orders/${orderId}`, {\n headers,\n });\n return response.data;\n }\n}\n","import type { PlatformFeeProps } from '@meaple-com/types';\n\nimport { api } from '../../core/http/api';\n\nexport class PaymentsResource {\n async getFee(eventId?: string): Promise<PlatformFeeProps> {\n const response = await api.get<PlatformFeeProps>('/v1/payments/fee', {\n params: { eventId },\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 `/v1/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(`/v1/tickets/user-tickets/${userTicketId}`, data);\n }\n\n async transfer(ticketId: string, data: TransferTicketProps): Promise<void> {\n await api.post(`/v1/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>('/v1/users', data);\n return response.data;\n }\n\n async getMe(): Promise<UserProps> {\n const response = await api.get<UserProps>('/v1/users/me');\n return response.data;\n }\n\n async update(data: UpdateUserProps): Promise<UserProps> {\n const response = await api.put<UserProps>('/v1/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 '/v1/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 '/v1/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 }>('/v1/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 '/v1/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 '/v1/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 '/v1/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 `/v1/users/orders/${orderId}/refund`\n );\n return response.data;\n }\n}\n","import { api } from './core/http/api';\nimport { CategoriesResource } from './resources/categories';\nimport { CouponResource } from './resources/coupon';\nimport { EventsResource } from './resources/events';\nimport { OrdersResource } from './resources/orders';\nimport { PaymentsResource } from './resources/payments';\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 categories: CategoriesResource;\n public coupon: CouponResource;\n public payments: PaymentsResource;\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.categories = new CategoriesResource();\n this.coupon = new CouponResource();\n this.payments = new PaymentsResource();\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":[]}
|
|
1
|
+
{"version":3,"sources":["../src/core/http/api.ts","../src/resources/categories/index.ts","../src/resources/coupon/index.ts","../src/resources/events/index.ts","../src/resources/orders/index.ts","../src/resources/payments/index.ts","../src/resources/tickets/index.ts","../src/resources/users/index.ts","../src/meaple-sdk.ts","../src/utils/colorMapping.ts","../src/utils/descriptionToHtml.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 '/v1/categories'\n );\n return response.data.categories;\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 `/v1/events/${eventId}/coupons/${couponCode}/check`\n );\n return response.data.coupon;\n }\n}\n","import type {\n CreateEventReminderProps,\n EventProps,\n FindEventProductItemProps,\n FindEventProductsProps,\n FindEventsParams,\n FindEventsProps,\n FindEventTicketItemProps,\n FindEventTicketsProps,\n GetChannelEventProps,\n UserTicketProps,\n} from '@meaple-com/types';\n\nimport { api } from '../../core/http/api';\n\n// Helper functions\nconst formatTicket = (\n ticket: FindEventTicketItemProps\n): FindEventTicketItemProps => ({\n ...ticket,\n price: Number(ticket.price.toFixed(2)),\n});\n\nconst formatProducts = (\n product: FindEventProductItemProps\n): FindEventProductItemProps => ({\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>('/v1/events', {\n params,\n });\n return response.data;\n }\n\n // Get event by slug (uses x-channel-id header)\n async getBySlug(eventSlug: string): Promise<EventProps> {\n const response = await api.get<GetChannelEventProps>(\n `/v1/events/${eventSlug}`\n );\n return response.data.event;\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 `/v1/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 `/v1/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(eventId: string): Promise<UserTicketProps[]> {\n const response = await api.get<{ userTickets: UserTicketProps[] }>(\n `/v1/events/${eventId}/user-tickets`\n );\n return response.data.userTickets;\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 `/v1/events/${eventId}/reminder`,\n { reminder: 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>('/v1/orders', data);\n return response.data;\n }\n\n async get(orderId: string, headers?: Headers): Promise<GetOrderProps> {\n const response = await api.get<GetOrderProps>(`/v1/orders/${orderId}`, {\n headers,\n });\n return response.data;\n }\n}\n","import type { PlatformFeeProps } from '@meaple-com/types';\n\nimport { api } from '../../core/http/api';\n\nexport class PaymentsResource {\n async getFee(eventId?: string): Promise<PlatformFeeProps> {\n const response = await api.get<PlatformFeeProps>('/v1/payments/fee', {\n params: { eventId },\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 `/v1/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(`/v1/tickets/user-tickets/${userTicketId}`, data);\n }\n\n async transfer(ticketId: string, data: TransferTicketProps): Promise<void> {\n await api.post(`/v1/tickets/${ticketId}/transfer`, data);\n }\n}\n","import type {\n GetMeUserProps,\n GetUserEventsProps,\n UserOrderProps,\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 getMe(): Promise<GetMeUserProps> {\n const response = await api.get<{ user: GetMeUserProps }>('/v1/users/me');\n return response.data.user;\n }\n\n async getOrders(params: QueryParams = {}): Promise<UserOrderProps[]> {\n const response = await api.get<{ orders: UserOrderProps[] }>(\n '/v1/users/orders',\n { params }\n );\n return response.data.orders;\n }\n\n async getEvents(params: QueryParams = {}): Promise<GetUserEventsProps[]> {\n const response = await api.get<{ events: GetUserEventsProps[] }>(\n '/v1/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 `/v1/users/orders/${orderId}/refund`\n );\n return response.data;\n }\n}\n","import { api } from './core/http/api';\nimport { CategoriesResource } from './resources/categories';\nimport { CouponResource } from './resources/coupon';\nimport { EventsResource } from './resources/events';\nimport { OrdersResource } from './resources/orders';\nimport { PaymentsResource } from './resources/payments';\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 categories: CategoriesResource;\n public coupon: CouponResource;\n public payments: PaymentsResource;\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.categories = new CategoriesResource();\n this.coupon = new CouponResource();\n this.payments = new PaymentsResource();\n this.tickets = new TicketsResource();\n }\n\n setGlobalToken(token: string): void {\n api.setBearerToken(token);\n }\n}\n","export const COLOR_MAP = {\n white: {\n hex: `#ffffff`,\n rgb: `rgb(255, 255, 255)`,\n },\n 'text-400': {\n hex: `#c7c7c7`,\n rgb: `rgb(199, 199, 199)`,\n },\n primary: {\n hex: `#00a0fc`,\n rgb: `rgb(0, 160, 252)`,\n },\n secondary: {\n hex: `#fca600`,\n rgb: `rgb(252, 166, 0)`,\n },\n tertiary: {\n hex: `#ab71f4`,\n rgb: `rgb(171, 113, 244)`,\n },\n} as const;\n\nexport const slateNameToHex = (name: string): string | undefined => {\n const colorData = COLOR_MAP[name as keyof typeof COLOR_MAP];\n return colorData?.hex;\n};\n","import { slateNameToHex } from './colorMapping';\n\nconst isEmbedUrl = (url?: string): boolean => {\n if (!url) return false;\n const patterns = [\n /youtube\\.com\\/embed\\//,\n /youtu\\.be\\//,\n /open\\.spotify\\.com\\/embed\\//,\n ];\n return patterns.some(p => p.test(url));\n};\n\nconst isSpotifyUrl = (url?: string): boolean => {\n if (!url) return false;\n return /open\\.spotify\\.com\\/embed\\//.test(url);\n};\n\nconst escapeHtml = (text: string): string =>\n text\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n\ntype SlateNode = Record<string, unknown>;\ntype SlateElement = SlateNode & { type?: string; children?: SlateNode[] };\ntype SlateText = SlateNode & { text?: string };\n\nfunction isTextNode(node: SlateNode): node is SlateText {\n return typeof (node as SlateText).text === 'string';\n}\n\nfunction renderMarks(text: string, marks: SlateText): string {\n let result = escapeHtml(text);\n if (!result) return result;\n\n const wrap = (tag: string, attrs = '') =>\n `<${tag}${attrs ? ` ${attrs}` : ''}>${result}</${tag}>`;\n\n if (marks.bold) result = wrap('strong');\n if (marks.italic) result = wrap('em');\n if (marks.underline) result = wrap('u');\n if (marks.strike) result = wrap('s');\n if (marks.color) {\n const hex = slateNameToHex(marks.color as string);\n if (hex) result = wrap('span', `style=\"color: ${hex}\"`);\n }\n return result;\n}\n\nfunction renderChildren(children: SlateNode[]): string {\n return children\n .map(child =>\n isTextNode(child)\n ? renderMarks((child as SlateText).text ?? '', child as SlateText)\n : renderElement(child as SlateElement)\n )\n .join('');\n}\n\nfunction isWhitespaceOnly(children: SlateNode[]): boolean {\n return children.every(child => {\n if (!isTextNode(child)) return false;\n const text = (child as SlateText).text ?? '';\n return /^\\s*$/.test(text);\n });\n}\n\nfunction renderElement(node: SlateElement): string {\n const children = node.children ?? [];\n const type = node.type ?? 'paragraph';\n\n switch (type) {\n case 'paragraph': {\n const content = renderChildren(children);\n if (isWhitespaceOnly(children) || /^\\s*$/.test(content)) {\n return content.replace(/\\n/g, '<br>') || '<br>';\n }\n return `<p>${content}</p>`;\n }\n case 'heading-one':\n return `<h1>${renderChildren(children)}</h1>`;\n case 'heading-two':\n return `<h2>${renderChildren(children)}</h2>`;\n case 'heading-three':\n return `<h3>${renderChildren(children)}</h3>`;\n case 'bulleted-list':\n return `<ul>${renderChildren(children)}</ul>`;\n case 'numbered-list':\n return `<ol>${renderChildren(children)}</ol>`;\n case 'list-item':\n return `<li>${renderChildren(children)}</li>`;\n case 'link': {\n const url = node.url as string | undefined;\n if (isEmbedUrl(url)) {\n const style = isSpotifyUrl(url)\n ? 'width: 100%; height: 152px; display: block'\n : 'width: 100%; aspect-ratio: 16/9; display: block';\n return `<iframe src=\"${escapeHtml(url ?? '')}\" frameborder=\"0\" allowfullscreen=\"true\" style=\"${style}\"></iframe>`;\n }\n const href = url ? ` href=\"${escapeHtml(url)}\"` : '';\n return `<a${href} target=\"_blank\" rel=\"noopener noreferrer\">${renderChildren(children)}</a>`;\n }\n case 'image': {\n const url = node.url as string | undefined;\n const alt = node.alt as string | undefined;\n const size = node.size as number | undefined;\n const attrs: string[] = [];\n if (url) attrs.push(`src=\"${escapeHtml(url)}\"`);\n if (alt) attrs.push(`alt=\"${escapeHtml(alt)}\"`);\n if (size !== undefined)\n attrs.push(`style=\"width: ${size}%; height: auto\"`);\n return `<img ${attrs.join(' ')}>`;\n }\n default:\n return renderChildren(children) || '<p></p>';\n }\n}\n\nexport function descriptionToHtml(\n description: Record<string, unknown>[] | null | undefined\n): string {\n if (!description || !Array.isArray(description) || description.length === 0) {\n return '';\n }\n try {\n return description.map(n => renderElement(n as SlateElement)).join('');\n } catch {\n return '';\n }\n}\n"],"mappings":"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","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@meaple-com/core",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.5",
|
|
4
4
|
"description": "Core SDK for Meaple - ticketing platform",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"axios": "^1.12.2",
|
|
43
|
-
"@meaple-com/types": "^1.0.
|
|
43
|
+
"@meaple-com/types": "^1.0.5"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@types/node": "^20.11.17",
|
package/README.md
DELETED
|
@@ -1,121 +0,0 @@
|
|
|
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.get()` - Buscar evento por ID
|
|
72
|
-
- `events.getBySlug()` - Buscar evento por slug
|
|
73
|
-
- `events.getProducts()` - Buscar produtos do evento
|
|
74
|
-
- `events.getTickets()` - Buscar ingressos do evento
|
|
75
|
-
- `events.getUserEventTickets()` - Buscar ingressos do usuário
|
|
76
|
-
- `events.createReminder()` - Criar lembrete
|
|
77
|
-
|
|
78
|
-
### Pedidos
|
|
79
|
-
|
|
80
|
-
- `orders.create()` - Criar pedido
|
|
81
|
-
- `orders.get()` - Ver pedido
|
|
82
|
-
- `orders.createPaymentIntent()` - Pagamento
|
|
83
|
-
- `orders.purchase()` - Finalizar compra
|
|
84
|
-
|
|
85
|
-
### Outros
|
|
86
|
-
|
|
87
|
-
- `uploads.upload()` - Upload arquivos
|
|
88
|
-
- `payments.getFee()` - Calcular taxa
|
|
89
|
-
|
|
90
|
-
## Configuração
|
|
91
|
-
|
|
92
|
-
```typescript
|
|
93
|
-
const sdk = new MeapleSDK({
|
|
94
|
-
publicKey: 'pk_required', // Obrigatório
|
|
95
|
-
baseURL: 'https://custom.api', // Opcional
|
|
96
|
-
timeout: 30000, // Opcional
|
|
97
|
-
token: 'jwt-token', // Opcional
|
|
98
|
-
});
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
## Multi-Tenant
|
|
102
|
-
|
|
103
|
-
```typescript
|
|
104
|
-
import { MeapleSDK, switchTenant } from '@meaple-com/core';
|
|
105
|
-
|
|
106
|
-
const sdk = new MeapleSDK({ publicKey: 'pk_brasuca_0001' });
|
|
107
|
-
switchTenant(sdk, 'pk_multi_arena_0002');
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
## TypeScript
|
|
111
|
-
|
|
112
|
-
```typescript
|
|
113
|
-
import type {
|
|
114
|
-
Event,
|
|
115
|
-
User,
|
|
116
|
-
Order,
|
|
117
|
-
AuthenticateUserRequest,
|
|
118
|
-
EventsResponse,
|
|
119
|
-
MeapleSDKOptions,
|
|
120
|
-
} from '@meaple-com/core';
|
|
121
|
-
```
|