@meaple-com/core 1.1.3 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +7 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -194,6 +194,13 @@ var EventsResource = class {
|
|
|
194
194
|
});
|
|
195
195
|
return response.data;
|
|
196
196
|
}
|
|
197
|
+
// Cities with upcoming published events (uses x-channel-id header)
|
|
198
|
+
async getCities() {
|
|
199
|
+
const response = await api.get(
|
|
200
|
+
"/v1/events/cities"
|
|
201
|
+
);
|
|
202
|
+
return response.data.cities;
|
|
203
|
+
}
|
|
197
204
|
// Get event by slug (uses x-channel-id header)
|
|
198
205
|
async getBySlug(eventSlug) {
|
|
199
206
|
const response = await api.get(
|
package/dist/index.cjs.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 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","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 removeGlobalToken(): void {\n api.removeDefaultHeader('Authorization');\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"]}
|
|
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 EventCityProps,\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 // Cities with upcoming published events (uses x-channel-id header)\n async getCities(): Promise<EventCityProps[]> {\n const response = await api.get<{ cities: EventCityProps[] }>(\n '/v1/events/cities'\n );\n return response.data.cities;\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","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 removeGlobalToken(): void {\n api.removeDefaultHeader('Authorization');\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.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AxiosInstance, AxiosRequestConfig } from 'axios';
|
|
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';
|
|
2
|
+
import { CategoryProps, CheckCouponProps, CouponProps, FindEventsParams, FindEventsResponseProps, EventCityProps, 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;
|
|
@@ -47,6 +47,7 @@ declare class CouponResource {
|
|
|
47
47
|
|
|
48
48
|
declare class EventsResource {
|
|
49
49
|
find(params?: FindEventsParams): Promise<FindEventsResponseProps>;
|
|
50
|
+
getCities(): Promise<EventCityProps[]>;
|
|
50
51
|
getBySlug(eventSlug: string): Promise<EventProps>;
|
|
51
52
|
getProducts(eventId: string, privateToken?: string | null): Promise<GetEventProductsResponseProps>;
|
|
52
53
|
getTickets(eventId: string, privateToken?: string | null, predecessorIds?: string[]): Promise<GetEventTicketsResponseProps>;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AxiosInstance, AxiosRequestConfig } from 'axios';
|
|
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';
|
|
2
|
+
import { CategoryProps, CheckCouponProps, CouponProps, FindEventsParams, FindEventsResponseProps, EventCityProps, 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;
|
|
@@ -47,6 +47,7 @@ declare class CouponResource {
|
|
|
47
47
|
|
|
48
48
|
declare class EventsResource {
|
|
49
49
|
find(params?: FindEventsParams): Promise<FindEventsResponseProps>;
|
|
50
|
+
getCities(): Promise<EventCityProps[]>;
|
|
50
51
|
getBySlug(eventSlug: string): Promise<EventProps>;
|
|
51
52
|
getProducts(eventId: string, privateToken?: string | null): Promise<GetEventProductsResponseProps>;
|
|
52
53
|
getTickets(eventId: string, privateToken?: string | null, predecessorIds?: string[]): Promise<GetEventTicketsResponseProps>;
|
package/dist/index.js
CHANGED
|
@@ -149,6 +149,13 @@ var EventsResource = class {
|
|
|
149
149
|
});
|
|
150
150
|
return response.data;
|
|
151
151
|
}
|
|
152
|
+
// Cities with upcoming published events (uses x-channel-id header)
|
|
153
|
+
async getCities() {
|
|
154
|
+
const response = await api.get(
|
|
155
|
+
"/v1/events/cities"
|
|
156
|
+
);
|
|
157
|
+
return response.data.cities;
|
|
158
|
+
}
|
|
152
159
|
// Get event by slug (uses x-channel-id header)
|
|
153
160
|
async getBySlug(eventSlug) {
|
|
154
161
|
const response = await api.get(
|
package/dist/index.js.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","../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","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 removeGlobalToken(): void {\n api.removeDefaultHeader('Authorization');\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":[]}
|
|
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 EventCityProps,\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 // Cities with upcoming published events (uses x-channel-id header)\n async getCities(): Promise<EventCityProps[]> {\n const response = await api.get<{ cities: EventCityProps[] }>(\n '/v1/events/cities'\n );\n return response.data.cities;\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","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 removeGlobalToken(): void {\n api.removeDefaultHeader('Authorization');\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.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "Core SDK for Meaple - ticketing platform",
|
|
5
5
|
"type": "module",
|
|
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": "^4.
|
|
43
|
+
"@meaple-com/types": "^4.1.0"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@types/node": "^20.11.17",
|