@meaple-com/core 1.0.6 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,84 @@
1
+ # @meaple-com/core
2
+
3
+ Core SDK for the [Meaple](https://meaple.com) ticketing platform. Use it to call the Meaple API from Node or the browser with a simple, typed client.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @meaple-com/core @meaple-com/types
9
+ # or
10
+ pnpm add @meaple-com/core @meaple-com/types
11
+ # or
12
+ bun add @meaple-com/core @meaple-com/types
13
+ ```
14
+
15
+ **Peer dependency:** `axios` (^1.12.2) — install it if not already in your project.
16
+
17
+ ## Quick start
18
+
19
+ ```ts
20
+ import { MeapleSDK } from '@meaple-com/core';
21
+
22
+ const sdk = new MeapleSDK({
23
+ publicKey: 'YOUR_CHANNEL_ID',
24
+ baseURL: 'https://api.meaple.com',
25
+ });
26
+
27
+ // Optional: set bearer token for authenticated requests
28
+ sdk.setGlobalToken('user-jwt-token');
29
+
30
+ // List events
31
+ const { events } = await sdk.events.find({ limit: 10 });
32
+
33
+ // Get a single event
34
+ const event = await sdk.events.get('event-id', 'event-slug');
35
+
36
+ // Categories
37
+ const categories = await sdk.categories.find();
38
+
39
+ // Check coupon
40
+ const coupon = await sdk.coupon.check('PROMO20', 'event-id');
41
+
42
+ // Create order (typically used with react-query in a React app)
43
+ const order = await sdk.orders.create({ ...createOrderPayload });
44
+ ```
45
+
46
+ ## API resources
47
+
48
+ | Resource | Methods / usage |
49
+ | ---------------- | --------------------------------------- |
50
+ | `sdk.users` | User events, orders, refunds |
51
+ | `sdk.events` | `find`, `get`, tickets, products |
52
+ | `sdk.orders` | `get`, `create` |
53
+ | `sdk.categories` | `find` |
54
+ | `sdk.coupon` | `check` |
55
+ | `sdk.payments` | Platform fee, etc. |
56
+ | `sdk.tickets` | Transfer, edit user ticket, create file |
57
+
58
+ All methods are typed with `@meaple-com/types`.
59
+
60
+ ## Options
61
+
62
+ ```ts
63
+ interface MeapleSDKOptions {
64
+ publicKey: string; // Channel ID (X-Channel-Id)
65
+ baseURL: string; // e.g. https://api.meaple.com
66
+ }
67
+ ```
68
+
69
+ ## Utilities
70
+
71
+ ```ts
72
+ import { descriptionToHtml } from '@meaple-com/core';
73
+
74
+ // Convert Meaple description blocks to HTML
75
+ const html = descriptionToHtml(event.description);
76
+ ```
77
+
78
+ ## Use with React
79
+
80
+ For React apps, use `@meaple-com/react-query` for hooks and `@meaple-com/react-headless-components` for UI building blocks. They depend on `@meaple-com/core` and the same SDK instance.
81
+
82
+ ## Documentation
83
+
84
+ [https://docs.meaple.com.br/](https://docs.meaple.com.br/)
@@ -1,10 +1,55 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/index.ts
31
+ var index_exports = {};
32
+ __export(index_exports, {
33
+ CategoriesResource: () => CategoriesResource,
34
+ CouponResource: () => CouponResource,
35
+ EventsResource: () => EventsResource,
36
+ MeapleSDK: () => MeapleSDK,
37
+ OrdersResource: () => OrdersResource,
38
+ PaymentsResource: () => PaymentsResource,
39
+ TicketsResource: () => TicketsResource,
40
+ UsersResource: () => UsersResource,
41
+ api: () => api,
42
+ descriptionToHtml: () => descriptionToHtml
43
+ });
44
+ module.exports = __toCommonJS(index_exports);
45
+
1
46
  // src/core/http/api.ts
2
- import axios from "axios";
47
+ var import_axios = __toESM(require("axios"), 1);
3
48
  var SimpleApiClient = class {
4
49
  axios;
5
50
  interceptors = { request: [], response: [] };
6
51
  constructor(config = {}) {
7
- this.axios = axios.create({
52
+ this.axios = import_axios.default.create({
8
53
  baseURL: config.baseURL ?? "http://localhost:1234",
9
54
  timeout: config.timeout ?? 3e4,
10
55
  headers: {
@@ -198,13 +243,19 @@ var EventsResource = class {
198
243
  // src/resources/orders/index.ts
199
244
  var OrdersResource = class {
200
245
  async create(data) {
201
- const response = await api.post("/v1/orders", data);
246
+ const response = await api.post(
247
+ "/v1/orders",
248
+ data
249
+ );
202
250
  return response.data;
203
251
  }
204
252
  async get(orderId, headers) {
205
- const response = await api.get(`/v1/orders/${orderId}`, {
206
- headers
207
- });
253
+ const response = await api.get(
254
+ `/v1/orders/${orderId}`,
255
+ {
256
+ headers
257
+ }
258
+ );
208
259
  return response.data;
209
260
  }
210
261
  };
@@ -418,7 +469,8 @@ function descriptionToHtml(description) {
418
469
  return "";
419
470
  }
420
471
  }
421
- export {
472
+ // Annotate the CommonJS export names for ESM import in node:
473
+ 0 && (module.exports = {
422
474
  CategoriesResource,
423
475
  CouponResource,
424
476
  EventsResource,
@@ -429,5 +481,5 @@ export {
429
481
  UsersResource,
430
482
  api,
431
483
  descriptionToHtml
432
- };
433
- //# sourceMappingURL=index.mjs.map
484
+ });
485
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +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","../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 FindEventsParams,\n FindEventsResponseProps,\n GetChannelEventProps,\n GetEventProductProps,\n GetEventProductsResponseProps,\n GetEventTicketProps,\n GetEventTicketsResponseProps,\n UserTicketProps,\n} from '@meaple-com/types';\n\nimport { api } from '../../core/http/api';\n\n// Helper functions\nconst formatTicket = (ticket: GetEventTicketProps): GetEventTicketProps => ({\n ...ticket,\n price: Number(ticket.price.toFixed(2)),\n});\n\nconst formatProducts = (\n product: GetEventProductProps\n): GetEventProductProps => ({\n ...product,\n price: Number(product.price.toFixed(2)),\n});\n\nexport class EventsResource {\n // Find events\n async find(params?: FindEventsParams): Promise<FindEventsResponseProps> {\n const response = await api.get<FindEventsResponseProps>('/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<GetEventProductsResponseProps> {\n const response = await api.get<GetEventProductsResponseProps>(\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<GetEventTicketsResponseProps> {\n const response = await api.get<GetEventTicketsResponseProps>(\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 CreatedOrderResponseProps,\n CreateOrderParams,\n GetOrderResponseProps,\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: CreateOrderParams): Promise<CreatedOrderResponseProps> {\n const response = await api.post<CreatedOrderResponseProps>(\n '/v1/orders',\n data\n );\n return response.data;\n }\n\n async get(\n orderId: string,\n headers?: Headers\n ): Promise<GetOrderResponseProps> {\n const response = await api.get<GetOrderResponseProps>(\n `/v1/orders/${orderId}`,\n {\n headers,\n }\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 GetUserEventProps,\n GetUserOrderProps,\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<GetUserOrderProps[]> {\n const response = await api.get<{ orders: GetUserOrderProps[] }>(\n '/v1/users/orders',\n { params }\n );\n return response.data.orders;\n }\n\n async getEvents(params: QueryParams = {}): Promise<GetUserEventProps[]> {\n const response = await api.get<{ events: GetUserEventProps[] }>(\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, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#39;');\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"]}
@@ -1,5 +1,5 @@
1
1
  import { AxiosInstance, AxiosRequestConfig } from 'axios';
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';
2
+ import { CategoryProps, CheckCouponProps, CouponProps, FindEventsParams, FindEventsResponseProps, EventProps, GetEventProductsResponseProps, GetEventTicketsResponseProps, UserTicketProps, CreateEventReminderProps, CreateOrderParams, CreatedOrderResponseProps, GetOrderResponseProps, PlatformFeeProps, CreateTicketFileProps, UpdateUserTicketProps, TransferTicketProps, GetMeUserProps, GetUserOrderProps, GetUserEventProps } from '@meaple-com/types';
3
3
 
4
4
  interface ApiResponse<T = any> {
5
5
  data: T;
@@ -46,10 +46,10 @@ declare class CouponResource {
46
46
  }
47
47
 
48
48
  declare class EventsResource {
49
- find(params?: FindEventsParams): Promise<FindEventsProps>;
49
+ find(params?: FindEventsParams): Promise<FindEventsResponseProps>;
50
50
  getBySlug(eventSlug: string): Promise<EventProps>;
51
- getProducts(eventId: string, privateToken?: string | null): Promise<FindEventProductsProps>;
52
- getTickets(eventId: string, privateToken?: string | null, predecessorIds?: string[]): Promise<FindEventTicketsProps>;
51
+ getProducts(eventId: string, privateToken?: string | null): Promise<GetEventProductsResponseProps>;
52
+ getTickets(eventId: string, privateToken?: string | null, predecessorIds?: string[]): Promise<GetEventTicketsResponseProps>;
53
53
  getUserEventTickets(eventId: string): Promise<UserTicketProps[]>;
54
54
  createReminder(eventId: string, data: CreateEventReminderProps): Promise<{
55
55
  message: string;
@@ -64,8 +64,8 @@ interface Headers {
64
64
  }
65
65
 
66
66
  declare class OrdersResource {
67
- create(data: CreateOrderProps): Promise<CreatedOrderProps>;
68
- get(orderId: string, headers?: Headers): Promise<GetOrderProps>;
67
+ create(data: CreateOrderParams): Promise<CreatedOrderResponseProps>;
68
+ get(orderId: string, headers?: Headers): Promise<GetOrderResponseProps>;
69
69
  }
70
70
 
71
71
  declare class PaymentsResource {
@@ -80,8 +80,8 @@ declare class TicketsResource {
80
80
 
81
81
  declare class UsersResource {
82
82
  getMe(): Promise<GetMeUserProps>;
83
- getOrders(params?: QueryParams): Promise<UserOrderProps[]>;
84
- getEvents(params?: QueryParams): Promise<GetUserEventsProps[]>;
83
+ getOrders(params?: QueryParams): Promise<GetUserOrderProps[]>;
84
+ getEvents(params?: QueryParams): Promise<GetUserEventProps[]>;
85
85
  refundOrder(orderId: string): Promise<{
86
86
  message: string;
87
87
  }>;
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, UserTicketProps, CreateEventReminderProps, CreateOrderProps, CreatedOrderProps, GetOrderProps, PlatformFeeProps, CreateTicketFileProps, UpdateUserTicketProps, TransferTicketProps, GetMeUserProps, UserOrderProps, GetUserEventsProps } from '@meaple-com/types';
2
+ import { CategoryProps, CheckCouponProps, CouponProps, FindEventsParams, FindEventsResponseProps, EventProps, GetEventProductsResponseProps, GetEventTicketsResponseProps, UserTicketProps, CreateEventReminderProps, CreateOrderParams, CreatedOrderResponseProps, GetOrderResponseProps, PlatformFeeProps, CreateTicketFileProps, UpdateUserTicketProps, TransferTicketProps, GetMeUserProps, GetUserOrderProps, GetUserEventProps } from '@meaple-com/types';
3
3
 
4
4
  interface ApiResponse<T = any> {
5
5
  data: T;
@@ -46,10 +46,10 @@ declare class CouponResource {
46
46
  }
47
47
 
48
48
  declare class EventsResource {
49
- find(params?: FindEventsParams): Promise<FindEventsProps>;
49
+ find(params?: FindEventsParams): Promise<FindEventsResponseProps>;
50
50
  getBySlug(eventSlug: string): Promise<EventProps>;
51
- getProducts(eventId: string, privateToken?: string | null): Promise<FindEventProductsProps>;
52
- getTickets(eventId: string, privateToken?: string | null, predecessorIds?: string[]): Promise<FindEventTicketsProps>;
51
+ getProducts(eventId: string, privateToken?: string | null): Promise<GetEventProductsResponseProps>;
52
+ getTickets(eventId: string, privateToken?: string | null, predecessorIds?: string[]): Promise<GetEventTicketsResponseProps>;
53
53
  getUserEventTickets(eventId: string): Promise<UserTicketProps[]>;
54
54
  createReminder(eventId: string, data: CreateEventReminderProps): Promise<{
55
55
  message: string;
@@ -64,8 +64,8 @@ interface Headers {
64
64
  }
65
65
 
66
66
  declare class OrdersResource {
67
- create(data: CreateOrderProps): Promise<CreatedOrderProps>;
68
- get(orderId: string, headers?: Headers): Promise<GetOrderProps>;
67
+ create(data: CreateOrderParams): Promise<CreatedOrderResponseProps>;
68
+ get(orderId: string, headers?: Headers): Promise<GetOrderResponseProps>;
69
69
  }
70
70
 
71
71
  declare class PaymentsResource {
@@ -80,8 +80,8 @@ declare class TicketsResource {
80
80
 
81
81
  declare class UsersResource {
82
82
  getMe(): Promise<GetMeUserProps>;
83
- getOrders(params?: QueryParams): Promise<UserOrderProps[]>;
84
- getEvents(params?: QueryParams): Promise<GetUserEventsProps[]>;
83
+ getOrders(params?: QueryParams): Promise<GetUserOrderProps[]>;
84
+ getEvents(params?: QueryParams): Promise<GetUserEventProps[]>;
85
85
  refundOrder(orderId: string): Promise<{
86
86
  message: string;
87
87
  }>;
package/dist/index.js CHANGED
@@ -1,55 +1,10 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
-
30
- // src/index.ts
31
- var index_exports = {};
32
- __export(index_exports, {
33
- CategoriesResource: () => CategoriesResource,
34
- CouponResource: () => CouponResource,
35
- EventsResource: () => EventsResource,
36
- MeapleSDK: () => MeapleSDK,
37
- OrdersResource: () => OrdersResource,
38
- PaymentsResource: () => PaymentsResource,
39
- TicketsResource: () => TicketsResource,
40
- UsersResource: () => UsersResource,
41
- api: () => api,
42
- descriptionToHtml: () => descriptionToHtml
43
- });
44
- module.exports = __toCommonJS(index_exports);
45
-
46
1
  // src/core/http/api.ts
47
- var import_axios = __toESM(require("axios"));
2
+ import axios from "axios";
48
3
  var SimpleApiClient = class {
49
4
  axios;
50
5
  interceptors = { request: [], response: [] };
51
6
  constructor(config = {}) {
52
- this.axios = import_axios.default.create({
7
+ this.axios = axios.create({
53
8
  baseURL: config.baseURL ?? "http://localhost:1234",
54
9
  timeout: config.timeout ?? 3e4,
55
10
  headers: {
@@ -243,13 +198,19 @@ var EventsResource = class {
243
198
  // src/resources/orders/index.ts
244
199
  var OrdersResource = class {
245
200
  async create(data) {
246
- const response = await api.post("/v1/orders", data);
201
+ const response = await api.post(
202
+ "/v1/orders",
203
+ data
204
+ );
247
205
  return response.data;
248
206
  }
249
207
  async get(orderId, headers) {
250
- const response = await api.get(`/v1/orders/${orderId}`, {
251
- headers
252
- });
208
+ const response = await api.get(
209
+ `/v1/orders/${orderId}`,
210
+ {
211
+ headers
212
+ }
213
+ );
253
214
  return response.data;
254
215
  }
255
216
  };
@@ -463,8 +424,7 @@ function descriptionToHtml(description) {
463
424
  return "";
464
425
  }
465
426
  }
466
- // Annotate the CommonJS export names for ESM import in node:
467
- 0 && (module.exports = {
427
+ export {
468
428
  CategoriesResource,
469
429
  CouponResource,
470
430
  EventsResource,
@@ -475,5 +435,5 @@ function descriptionToHtml(description) {
475
435
  UsersResource,
476
436
  api,
477
437
  descriptionToHtml
478
- });
438
+ };
479
439
  //# 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","../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, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#39;');\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"]}
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 FindEventsParams,\n FindEventsResponseProps,\n GetChannelEventProps,\n GetEventProductProps,\n GetEventProductsResponseProps,\n GetEventTicketProps,\n GetEventTicketsResponseProps,\n UserTicketProps,\n} from '@meaple-com/types';\n\nimport { api } from '../../core/http/api';\n\n// Helper functions\nconst formatTicket = (ticket: GetEventTicketProps): GetEventTicketProps => ({\n ...ticket,\n price: Number(ticket.price.toFixed(2)),\n});\n\nconst formatProducts = (\n product: GetEventProductProps\n): GetEventProductProps => ({\n ...product,\n price: Number(product.price.toFixed(2)),\n});\n\nexport class EventsResource {\n // Find events\n async find(params?: FindEventsParams): Promise<FindEventsResponseProps> {\n const response = await api.get<FindEventsResponseProps>('/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<GetEventProductsResponseProps> {\n const response = await api.get<GetEventProductsResponseProps>(\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<GetEventTicketsResponseProps> {\n const response = await api.get<GetEventTicketsResponseProps>(\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 CreatedOrderResponseProps,\n CreateOrderParams,\n GetOrderResponseProps,\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: CreateOrderParams): Promise<CreatedOrderResponseProps> {\n const response = await api.post<CreatedOrderResponseProps>(\n '/v1/orders',\n data\n );\n return response.data;\n }\n\n async get(\n orderId: string,\n headers?: Headers\n ): Promise<GetOrderResponseProps> {\n const response = await api.get<GetOrderResponseProps>(\n `/v1/orders/${orderId}`,\n {\n headers,\n }\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 GetUserEventProps,\n GetUserOrderProps,\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<GetUserOrderProps[]> {\n const response = await api.get<{ orders: GetUserOrderProps[] }>(\n '/v1/users/orders',\n { params }\n );\n return response.data.orders;\n }\n\n async getEvents(params: QueryParams = {}): Promise<GetUserEventProps[]> {\n const response = await api.get<{ events: GetUserEventProps[] }>(\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, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#39;');\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,8 +1,8 @@
1
1
  {
2
2
  "name": "@meaple-com/core",
3
- "version": "1.0.6",
3
+ "version": "1.1.1",
4
4
  "description": "Core SDK for Meaple - ticketing platform",
5
- "license": "MIT",
5
+ "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "module": "./dist/index.js",
8
8
  "types": "./dist/index.d.ts",
@@ -40,7 +40,7 @@
40
40
  },
41
41
  "dependencies": {
42
42
  "axios": "^1.12.2",
43
- "@meaple-com/types": "^2.0.0"
43
+ "@meaple-com/types": "^4.0.0"
44
44
  },
45
45
  "devDependencies": {
46
46
  "@types/node": "^20.11.17",
@@ -1 +0,0 @@
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, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#39;');\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":[]}