@amalaika/form-sdk-package 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/README.md +342 -0
  2. package/dist/cjs/client/__tests__/client.spec.d.ts +2 -0
  3. package/dist/cjs/client/__tests__/client.spec.d.ts.map +1 -0
  4. package/dist/cjs/client/__tests__/client.spec.js +300 -0
  5. package/dist/cjs/client/__tests__/client.spec.js.map +1 -0
  6. package/dist/cjs/client/index.d.ts +26 -0
  7. package/dist/cjs/client/index.d.ts.map +1 -0
  8. package/dist/cjs/client/index.js +179 -0
  9. package/dist/cjs/client/index.js.map +1 -0
  10. package/dist/cjs/client.d.ts +22 -0
  11. package/dist/cjs/client.d.ts.map +1 -0
  12. package/dist/cjs/client.js +111 -0
  13. package/dist/cjs/client.js.map +1 -0
  14. package/dist/cjs/index.d.ts +4 -0
  15. package/dist/cjs/index.d.ts.map +1 -0
  16. package/dist/cjs/index.js +10 -0
  17. package/dist/cjs/index.js.map +1 -0
  18. package/dist/cjs/package.json +1 -0
  19. package/dist/cjs/types/index.d.ts +91 -0
  20. package/dist/cjs/types/index.d.ts.map +1 -0
  21. package/dist/cjs/types/index.js +3 -0
  22. package/dist/cjs/types/index.js.map +1 -0
  23. package/dist/cjs/types.d.ts +78 -0
  24. package/dist/cjs/types.d.ts.map +1 -0
  25. package/dist/cjs/types.js +3 -0
  26. package/dist/cjs/types.js.map +1 -0
  27. package/dist/cjs/utils/__tests__/utils.spec.d.ts +2 -0
  28. package/dist/cjs/utils/__tests__/utils.spec.d.ts.map +1 -0
  29. package/dist/cjs/utils/__tests__/utils.spec.js +172 -0
  30. package/dist/cjs/utils/__tests__/utils.spec.js.map +1 -0
  31. package/dist/cjs/utils/index.d.ts +5 -0
  32. package/dist/cjs/utils/index.d.ts.map +1 -0
  33. package/dist/cjs/utils/index.js +45 -0
  34. package/dist/cjs/utils/index.js.map +1 -0
  35. package/dist/cjs/utils.d.ts +5 -0
  36. package/dist/cjs/utils.d.ts.map +1 -0
  37. package/dist/cjs/utils.js +45 -0
  38. package/dist/cjs/utils.js.map +1 -0
  39. package/dist/esm/client/__tests__/client.spec.d.ts +2 -0
  40. package/dist/esm/client/__tests__/client.spec.d.ts.map +1 -0
  41. package/dist/esm/client/__tests__/client.spec.js +355 -0
  42. package/dist/esm/client/__tests__/client.spec.js.map +1 -0
  43. package/dist/esm/client/index.d.ts +26 -0
  44. package/dist/esm/client/index.d.ts.map +1 -0
  45. package/dist/esm/client/index.js +175 -0
  46. package/dist/esm/client/index.js.map +1 -0
  47. package/dist/esm/client.d.ts +22 -0
  48. package/dist/esm/client.d.ts.map +1 -0
  49. package/dist/esm/client.js +107 -0
  50. package/dist/esm/client.js.map +1 -0
  51. package/dist/esm/index.d.ts +4 -0
  52. package/dist/esm/index.d.ts.map +1 -0
  53. package/dist/esm/index.js +3 -0
  54. package/dist/esm/index.js.map +1 -0
  55. package/dist/esm/types/index.d.ts +91 -0
  56. package/dist/esm/types/index.d.ts.map +1 -0
  57. package/dist/esm/types/index.js +2 -0
  58. package/dist/esm/types/index.js.map +1 -0
  59. package/dist/esm/types.d.ts +78 -0
  60. package/dist/esm/types.d.ts.map +1 -0
  61. package/dist/esm/types.js +2 -0
  62. package/dist/esm/types.js.map +1 -0
  63. package/dist/esm/utils/__tests__/utils.spec.d.ts +2 -0
  64. package/dist/esm/utils/__tests__/utils.spec.d.ts.map +1 -0
  65. package/dist/esm/utils/__tests__/utils.spec.js +182 -0
  66. package/dist/esm/utils/__tests__/utils.spec.js.map +1 -0
  67. package/dist/esm/utils/index.d.ts +5 -0
  68. package/dist/esm/utils/index.d.ts.map +1 -0
  69. package/dist/esm/utils/index.js +40 -0
  70. package/dist/esm/utils/index.js.map +1 -0
  71. package/dist/esm/utils.d.ts +5 -0
  72. package/dist/esm/utils.d.ts.map +1 -0
  73. package/dist/esm/utils.js +40 -0
  74. package/dist/esm/utils.js.map +1 -0
  75. package/package.json +54 -0
@@ -0,0 +1,355 @@
1
+ import { of, throwError } from "rxjs";
2
+ import { AjaxError } from "rxjs/ajax";
3
+ import { EventFormClient } from "..";
4
+ // ---------------------------------------------------------------------------
5
+ // Mock rxjs/ajax
6
+ // ---------------------------------------------------------------------------
7
+ jest.mock("rxjs/ajax", () => {
8
+ const actual = jest.requireActual("rxjs/ajax");
9
+ return {
10
+ ...actual,
11
+ ajax: jest.fn(),
12
+ };
13
+ });
14
+ import { ajax } from "rxjs/ajax";
15
+ const mockAjax = ajax;
16
+ function ajaxSuccess(data, status = 200) {
17
+ const body = { statusCode: status, message: "OK", data };
18
+ return {
19
+ status,
20
+ response: body,
21
+ responseType: "json",
22
+ loaded: 0,
23
+ total: 0,
24
+ request: {},
25
+ xhr: {},
26
+ originalEvent: {},
27
+ responseHeaders: {},
28
+ type: "load",
29
+ };
30
+ }
31
+ function ajaxError(message, status = 400) {
32
+ const xhr = {
33
+ status,
34
+ response: JSON.stringify({ statusCode: status, message }),
35
+ responseType: "json",
36
+ };
37
+ const error = new AjaxError(message, xhr, {
38
+ url: "",
39
+ method: "GET",
40
+ headers: {},
41
+ crossDomain: false,
42
+ withCredentials: false,
43
+ async: true,
44
+ timeout: 0,
45
+ responseType: "json",
46
+ });
47
+ Object.defineProperty(error, "response", {
48
+ value: { statusCode: status, message },
49
+ });
50
+ return error;
51
+ }
52
+ // ---------------------------------------------------------------------------
53
+ // Fixtures
54
+ // ---------------------------------------------------------------------------
55
+ const API_BASE = "https://test.api/api";
56
+ const API_KEY = "Am_test-key";
57
+ function createClient() {
58
+ return new EventFormClient({
59
+ apiKey: API_KEY,
60
+ resourceType: "ticketing",
61
+ apiBaseUrl: API_BASE,
62
+ });
63
+ }
64
+ const sampleTicket = {
65
+ id: 1,
66
+ eventId: 10,
67
+ price: "50.00",
68
+ currency: "USD",
69
+ attendanceType: "PHYSICAL",
70
+ virtualPrice: null,
71
+ physicalPrice: null,
72
+ quantityTotal: 200,
73
+ salesStartAt: null,
74
+ salesEndAt: null,
75
+ discountPercentage: null,
76
+ discountEndAt: null,
77
+ isActive: true,
78
+ createdBy: 1,
79
+ name: "General Admission",
80
+ };
81
+ const sampleForm = {
82
+ id: 6,
83
+ title: "Registration",
84
+ description: null,
85
+ eventId: 10,
86
+ schema: {
87
+ fields: [
88
+ { id: "first_name", type: "text", required: true },
89
+ { id: "email", type: "email", required: true },
90
+ ],
91
+ },
92
+ };
93
+ // ---------------------------------------------------------------------------
94
+ // Tests
95
+ // ---------------------------------------------------------------------------
96
+ beforeEach(() => {
97
+ mockAjax.mockReset();
98
+ });
99
+ describe("EventFormClient", () => {
100
+ describe("constructor", () => {
101
+ it("uses default API base when none provided", async () => {
102
+ const client = new EventFormClient({
103
+ apiKey: API_KEY,
104
+ resourceType: "ticketing",
105
+ });
106
+ mockAjax.mockReturnValueOnce(of(ajaxSuccess([sampleTicket])));
107
+ await client.fetchTickets();
108
+ expect(mockAjax).toHaveBeenCalledWith(expect.objectContaining({
109
+ url: expect.stringContaining("https://api.eventsfactory.rw/api/"),
110
+ }));
111
+ });
112
+ it("strips trailing slash from custom API base", async () => {
113
+ const client = new EventFormClient({
114
+ apiKey: API_KEY,
115
+ resourceType: "ticketing",
116
+ apiBaseUrl: "https://custom.api/api/",
117
+ });
118
+ mockAjax.mockReturnValueOnce(of(ajaxSuccess([sampleTicket])));
119
+ await client.fetchTickets();
120
+ expect(mockAjax).toHaveBeenCalledWith(expect.objectContaining({
121
+ url: expect.stringContaining("https://custom.api/api/events/"),
122
+ }));
123
+ });
124
+ });
125
+ // -------------------------------------------------------------------------
126
+ // fetchTickets
127
+ // -------------------------------------------------------------------------
128
+ describe("fetchTickets", () => {
129
+ it("calls the correct endpoint with API key", async () => {
130
+ mockAjax.mockReturnValueOnce(of(ajaxSuccess([sampleTicket])));
131
+ const client = createClient();
132
+ const tickets = await client.fetchTickets();
133
+ expect(mockAjax).toHaveBeenCalledWith(expect.objectContaining({
134
+ url: expect.stringContaining(`/events/tickets/event/${API_KEY}/public`),
135
+ method: "GET",
136
+ headers: {},
137
+ }));
138
+ expect(tickets).toEqual([sampleTicket]);
139
+ });
140
+ it("passes locale as query param and Accept-Language header", async () => {
141
+ mockAjax.mockReturnValueOnce(of(ajaxSuccess([sampleTicket])));
142
+ const client = createClient();
143
+ await client.fetchTickets({ locale: "fr" });
144
+ const call = mockAjax.mock.calls[0][0];
145
+ expect(call.url).toContain("locale=fr");
146
+ expect(call.headers).toEqual({ "Accept-Language": "fr" });
147
+ });
148
+ it("passes name as query param", async () => {
149
+ mockAjax.mockReturnValueOnce(of(ajaxSuccess([sampleTicket])));
150
+ const client = createClient();
151
+ await client.fetchTickets({ name: "VIP" });
152
+ const call = mockAjax.mock.calls[0][0];
153
+ expect(call.url).toContain("name=VIP");
154
+ });
155
+ it("throws on non-OK response", async () => {
156
+ mockAjax.mockReturnValueOnce(throwError(() => ajaxError("Not found", 404)));
157
+ const client = createClient();
158
+ await expect(client.fetchTickets()).rejects.toThrow("Failed to fetch tickets (404)");
159
+ });
160
+ });
161
+ // -------------------------------------------------------------------------
162
+ // fetchTicketById
163
+ // -------------------------------------------------------------------------
164
+ describe("fetchTicketById", () => {
165
+ it("calls the correct endpoint", async () => {
166
+ mockAjax.mockReturnValueOnce(of(ajaxSuccess(sampleTicket)));
167
+ const client = createClient();
168
+ const ticket = await client.fetchTicketById(1);
169
+ expect(mockAjax).toHaveBeenCalledWith(expect.objectContaining({
170
+ url: `${API_BASE}/events/tickets/1`,
171
+ method: "GET",
172
+ headers: {},
173
+ }));
174
+ expect(ticket).toEqual(sampleTicket);
175
+ });
176
+ it("sends Accept-Language header when locale is provided", async () => {
177
+ mockAjax.mockReturnValueOnce(of(ajaxSuccess(sampleTicket)));
178
+ const client = createClient();
179
+ await client.fetchTicketById(1, "en");
180
+ const call = mockAjax.mock.calls[0][0];
181
+ expect(call.headers).toEqual({ "Accept-Language": "en" });
182
+ });
183
+ it("throws on non-OK response", async () => {
184
+ mockAjax.mockReturnValueOnce(throwError(() => ajaxError("Not found", 404)));
185
+ const client = createClient();
186
+ await expect(client.fetchTicketById(999)).rejects.toThrow("Ticket not found (404)");
187
+ });
188
+ });
189
+ // -------------------------------------------------------------------------
190
+ // fetchLanguages
191
+ // -------------------------------------------------------------------------
192
+ describe("fetchLanguages", () => {
193
+ it("returns sorted language codes with default first", async () => {
194
+ mockAjax.mockReturnValueOnce(of(ajaxSuccess([
195
+ { id: 2, languageCode: "fr", isDefault: false },
196
+ { id: 1, languageCode: "en", isDefault: true },
197
+ ])));
198
+ const client = createClient();
199
+ const langs = await client.fetchLanguages();
200
+ expect(langs).toEqual(["en", "fr"]);
201
+ expect(mockAjax).toHaveBeenCalledWith(expect.objectContaining({
202
+ url: `${API_BASE}/events/onboarding/main-info/${API_KEY}/languages`,
203
+ }));
204
+ });
205
+ it("preserves order when both languages have same isDefault", async () => {
206
+ mockAjax.mockReturnValueOnce(of(ajaxSuccess([
207
+ { id: 1, languageCode: "fr", isDefault: false },
208
+ { id: 2, languageCode: "de", isDefault: false },
209
+ ])));
210
+ const client = createClient();
211
+ const langs = await client.fetchLanguages();
212
+ expect(langs).toEqual(["fr", "de"]);
213
+ });
214
+ it("throws on non-OK response", async () => {
215
+ mockAjax.mockReturnValueOnce(throwError(() => ajaxError("Not found", 404)));
216
+ const client = createClient();
217
+ await expect(client.fetchLanguages()).rejects.toThrow("Failed to fetch languages (404)");
218
+ });
219
+ });
220
+ // -------------------------------------------------------------------------
221
+ // fetchForm
222
+ // -------------------------------------------------------------------------
223
+ describe("fetchForm", () => {
224
+ it("calls the correct endpoint and returns form data", async () => {
225
+ mockAjax.mockReturnValueOnce(of(ajaxSuccess(sampleForm)));
226
+ const client = createClient();
227
+ const form = await client.fetchForm(1);
228
+ expect(mockAjax).toHaveBeenCalledWith(expect.objectContaining({
229
+ url: `${API_BASE}/application/forms/ticketing/1/public`,
230
+ method: "GET",
231
+ headers: {},
232
+ }));
233
+ expect(form).toEqual(sampleForm);
234
+ });
235
+ it("sends Accept-Language when locale provided", async () => {
236
+ mockAjax.mockReturnValueOnce(of(ajaxSuccess(sampleForm)));
237
+ const client = createClient();
238
+ await client.fetchForm(1, "fr");
239
+ const call = mockAjax.mock.calls[0][0];
240
+ expect(call.headers).toEqual({ "Accept-Language": "fr" });
241
+ });
242
+ it("throws on non-OK response", async () => {
243
+ mockAjax.mockReturnValueOnce(throwError(() => ajaxError("Not found", 404)));
244
+ const client = createClient();
245
+ await expect(client.fetchForm(999)).rejects.toThrow("Form not found (404)");
246
+ });
247
+ });
248
+ // -------------------------------------------------------------------------
249
+ // authorizeUpload
250
+ // -------------------------------------------------------------------------
251
+ describe("authorizeUpload", () => {
252
+ const file = new File(["content"], "resume.pdf", { type: "application/pdf" });
253
+ it("sends correct payload and returns upload token", async () => {
254
+ mockAjax.mockReturnValueOnce(of(ajaxSuccess({ uploadToken: "tok-123" })));
255
+ const client = createClient();
256
+ const token = await client.authorizeUpload(6, "resume", file);
257
+ expect(token).toBe("tok-123");
258
+ const call = mockAjax.mock.calls[0][0];
259
+ expect(call.url).toBe(`${API_BASE}/application/forms/6/submissions/authorize-upload`);
260
+ expect(call.method).toBe("POST");
261
+ expect(call.body).toEqual({
262
+ fieldId: "resume",
263
+ mimeType: "application/pdf",
264
+ fileSize: file.size,
265
+ fileName: "resume.pdf",
266
+ });
267
+ });
268
+ it("throws with server error message on failure", async () => {
269
+ mockAjax.mockReturnValueOnce(throwError(() => ajaxError("File type not allowed", 400)));
270
+ const client = createClient();
271
+ await expect(client.authorizeUpload(6, "resume", file)).rejects.toThrow("File type not allowed");
272
+ });
273
+ it("falls back to default message when server returns no message", async () => {
274
+ const error = ajaxError("", 400);
275
+ Object.defineProperty(error, "response", { value: { statusCode: 400 } });
276
+ mockAjax.mockReturnValueOnce(throwError(() => error));
277
+ const client = createClient();
278
+ await expect(client.authorizeUpload(6, "resume", file)).rejects.toThrow("Upload authorization failed");
279
+ });
280
+ });
281
+ // -------------------------------------------------------------------------
282
+ // uploadFile
283
+ // -------------------------------------------------------------------------
284
+ describe("uploadFile", () => {
285
+ const file = new File(["content"], "resume.pdf", { type: "application/pdf" });
286
+ it("sends FormData body and returns URL", async () => {
287
+ mockAjax.mockReturnValueOnce(of(ajaxSuccess({ url: "https://files.example.com/resume.pdf" })));
288
+ const client = createClient();
289
+ const url = await client.uploadFile(6, "tok-123", file);
290
+ expect(url).toBe("https://files.example.com/resume.pdf");
291
+ const call = mockAjax.mock.calls[0][0];
292
+ expect(call.url).toBe(`${API_BASE}/application/forms/6/submissions/upload`);
293
+ expect(call.method).toBe("POST");
294
+ expect(call.body).toBeInstanceOf(FormData);
295
+ });
296
+ it("throws on non-OK response", async () => {
297
+ mockAjax.mockReturnValueOnce(throwError(() => ajaxError("Token expired", 401)));
298
+ const client = createClient();
299
+ await expect(client.uploadFile(6, "bad-tok", file)).rejects.toThrow("File upload failed");
300
+ });
301
+ });
302
+ // -------------------------------------------------------------------------
303
+ // submitForm
304
+ // -------------------------------------------------------------------------
305
+ describe("submitForm", () => {
306
+ it("sends correct payload with resourceType from constructor", async () => {
307
+ mockAjax.mockReturnValueOnce(of(ajaxSuccess(undefined, 201)));
308
+ const client = createClient();
309
+ await client.submitForm(6, { first_name: "Jane", email: "jane@test.com" }, {
310
+ eventId: 10,
311
+ ticketId: 1,
312
+ });
313
+ const call = mockAjax.mock.calls[0][0];
314
+ expect(call.url).toBe(`${API_BASE}/application/forms/6/submissions`);
315
+ expect(call.method).toBe("POST");
316
+ expect(call.body).toEqual({
317
+ data: { first_name: "Jane", email: "jane@test.com" },
318
+ eventId: 10,
319
+ resourceType: "ticketing",
320
+ resourceId: 1,
321
+ });
322
+ });
323
+ it("sends Accept-Language header when locale is in context", async () => {
324
+ mockAjax.mockReturnValueOnce(of(ajaxSuccess(undefined, 201)));
325
+ const client = createClient();
326
+ await client.submitForm(6, {}, { eventId: 10, ticketId: 1, locale: "fr" });
327
+ const call = mockAjax.mock.calls[0][0];
328
+ expect(call.headers).toEqual(expect.objectContaining({ "Accept-Language": "fr" }));
329
+ });
330
+ it("throws with server error message on failure", async () => {
331
+ mockAjax.mockReturnValueOnce(throwError(() => ajaxError("Duplicate email", 400)));
332
+ const client = createClient();
333
+ await expect(client.submitForm(6, {}, { eventId: 10, ticketId: 1 })).rejects.toThrow("Duplicate email");
334
+ });
335
+ it("falls back to default message when server returns no message", async () => {
336
+ const error = ajaxError("", 400);
337
+ Object.defineProperty(error, "response", { value: { statusCode: 400 } });
338
+ mockAjax.mockReturnValueOnce(throwError(() => error));
339
+ const client = createClient();
340
+ await expect(client.submitForm(6, {}, { eventId: 10, ticketId: 1 })).rejects.toThrow("Submission failed");
341
+ });
342
+ it("uses different resourceType when configured", async () => {
343
+ mockAjax.mockReturnValueOnce(of(ajaxSuccess(undefined, 201)));
344
+ const client = new EventFormClient({
345
+ apiKey: API_KEY,
346
+ resourceType: "accommodation",
347
+ apiBaseUrl: API_BASE,
348
+ });
349
+ await client.submitForm(6, {}, { eventId: 10, ticketId: 1 });
350
+ const call = mockAjax.mock.calls[0][0];
351
+ expect(call.body.resourceType).toBe("accommodation");
352
+ });
353
+ });
354
+ });
355
+ //# sourceMappingURL=client.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.spec.js","sourceRoot":"","sources":["../../../../src/client/__tests__/client.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { EventFormConfig, FormData, Ticket } from "../types/index.js";
2
+ export declare class EventFormClient {
3
+ private readonly apiBase;
4
+ private readonly apiKey;
5
+ private readonly resourceType;
6
+ private readonly messages;
7
+ private locale;
8
+ constructor(config: EventFormConfig);
9
+ setLocale(locale: string): void;
10
+ getLocale(): string | undefined;
11
+ fetchTickets(options?: {
12
+ locale?: string;
13
+ name?: string;
14
+ }): Promise<Ticket[]>;
15
+ fetchTicketById(id: number, locale?: string): Promise<Ticket>;
16
+ fetchLanguages(): Promise<string[]>;
17
+ fetchForm(ticketId: number, locale?: string): Promise<FormData>;
18
+ authorizeUpload(formId: number, fieldId: string, file: File, locale?: string): Promise<string>;
19
+ uploadFile(formId: number, token: string, file: File, locale?: string): Promise<string>;
20
+ submitForm(formId: number, data: Record<string, unknown>, context: {
21
+ eventId: number;
22
+ ticketId: number;
23
+ locale?: string;
24
+ }): Promise<void>;
25
+ }
26
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAGV,eAAe,EACf,QAAQ,EACR,MAAM,EACP,MAAM,mBAAmB,CAAC;AAmC3B,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IACzC,OAAO,CAAC,MAAM,CAAqB;gBAEvB,MAAM,EAAE,eAAe;IAQnC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,SAAS,IAAI,MAAM,GAAG,SAAS;IAIzB,YAAY,CAAC,OAAO,CAAC,EAAE;QAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAuBf,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiB7D,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAoBnC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAiB/D,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,IAAI,EACV,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC;IAyBZ,UAAU,CACd,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,IAAI,EACV,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC;IAqBZ,UAAU,CACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GACA,OAAO,CAAC,IAAI,CAAC;CAuBjB"}
@@ -0,0 +1,175 @@
1
+ import { firstValueFrom } from "rxjs";
2
+ import { ajax, AjaxError } from "rxjs/ajax";
3
+ const DEFAULT_API_BASE = "https://api.eventsfactory.rw/api";
4
+ const DEFAULT_ERROR_MESSAGES = {
5
+ fetchTickets: "Failed to fetch tickets",
6
+ fetchTicketById: "Ticket not found",
7
+ fetchLanguages: "Failed to fetch languages",
8
+ fetchForm: "Form not found",
9
+ authorizeUpload: "Upload authorization failed",
10
+ uploadFile: "File upload failed",
11
+ submitForm: "Submission failed",
12
+ };
13
+ function getHeaders(locale) {
14
+ const headers = {};
15
+ if (locale)
16
+ headers["Accept-Language"] = locale;
17
+ return headers;
18
+ }
19
+ function extractErrorMessage(error, fallback) {
20
+ if (error instanceof AjaxError) {
21
+ const body = error.response;
22
+ return body?.message || fallback;
23
+ }
24
+ if (error instanceof Error)
25
+ return error.message;
26
+ return fallback;
27
+ }
28
+ export class EventFormClient {
29
+ apiBase;
30
+ apiKey;
31
+ resourceType;
32
+ messages;
33
+ locale;
34
+ constructor(config) {
35
+ this.apiKey = config.apiKey;
36
+ this.resourceType = config.resourceType;
37
+ this.apiBase = (config.apiBaseUrl ?? DEFAULT_API_BASE).replace(/\/$/, "");
38
+ this.messages = { ...DEFAULT_ERROR_MESSAGES, ...config.errorMessages };
39
+ this.locale = config.locale;
40
+ }
41
+ setLocale(locale) {
42
+ this.locale = locale;
43
+ }
44
+ getLocale() {
45
+ return this.locale;
46
+ }
47
+ async fetchTickets(options) {
48
+ const effectiveLocale = options?.locale ?? this.locale;
49
+ const url = new URL(`${this.apiBase}/events/tickets/event/${this.apiKey}/public`);
50
+ if (effectiveLocale)
51
+ url.searchParams.set("locale", effectiveLocale);
52
+ if (options?.name)
53
+ url.searchParams.set("name", options.name);
54
+ try {
55
+ const res = await firstValueFrom(ajax({
56
+ url: url.toString(),
57
+ method: "GET",
58
+ headers: getHeaders(effectiveLocale),
59
+ }));
60
+ return res.response.data;
61
+ }
62
+ catch (error) {
63
+ const status = error instanceof AjaxError ? error.status : 0;
64
+ throw new Error(`${this.messages.fetchTickets} (${status})`, { cause: error });
65
+ }
66
+ }
67
+ async fetchTicketById(id, locale) {
68
+ const effectiveLocale = locale ?? this.locale;
69
+ try {
70
+ const res = await firstValueFrom(ajax({
71
+ url: `${this.apiBase}/events/tickets/${id}`,
72
+ method: "GET",
73
+ headers: getHeaders(effectiveLocale),
74
+ }));
75
+ return res.response.data;
76
+ }
77
+ catch (error) {
78
+ const status = error instanceof AjaxError ? error.status : 0;
79
+ throw new Error(`${this.messages.fetchTicketById} (${status})`, { cause: error });
80
+ }
81
+ }
82
+ async fetchLanguages() {
83
+ try {
84
+ const res = await firstValueFrom(ajax({
85
+ url: `${this.apiBase}/events/onboarding/main-info/${this.apiKey}/languages`,
86
+ method: "GET",
87
+ }));
88
+ const sorted = res.response.data.sort((a, b) => a.isDefault === b.isDefault ? 0 : a.isDefault ? -1 : 1);
89
+ return sorted.map((l) => l.languageCode);
90
+ }
91
+ catch (error) {
92
+ const status = error instanceof AjaxError ? error.status : 0;
93
+ throw new Error(`${this.messages.fetchLanguages} (${status})`, { cause: error });
94
+ }
95
+ }
96
+ async fetchForm(ticketId, locale) {
97
+ const effectiveLocale = locale ?? this.locale;
98
+ try {
99
+ const res = await firstValueFrom(ajax({
100
+ url: `${this.apiBase}/application/forms/ticketing/${ticketId}/public`,
101
+ method: "GET",
102
+ headers: getHeaders(effectiveLocale),
103
+ }));
104
+ return res.response.data;
105
+ }
106
+ catch (error) {
107
+ const status = error instanceof AjaxError ? error.status : 0;
108
+ throw new Error(`${this.messages.fetchForm} (${status})`, { cause: error });
109
+ }
110
+ }
111
+ async authorizeUpload(formId, fieldId, file, locale) {
112
+ const effectiveLocale = locale ?? this.locale;
113
+ try {
114
+ const res = await firstValueFrom(ajax({
115
+ url: `${this.apiBase}/application/forms/${formId}/submissions/authorize-upload`,
116
+ method: "POST",
117
+ headers: {
118
+ ...getHeaders(effectiveLocale),
119
+ "Content-Type": "application/json",
120
+ },
121
+ body: {
122
+ fieldId,
123
+ mimeType: file.type,
124
+ fileSize: file.size,
125
+ fileName: file.name,
126
+ },
127
+ }));
128
+ return res.response.data.uploadToken;
129
+ }
130
+ catch (error) {
131
+ throw new Error(extractErrorMessage(error, this.messages.authorizeUpload), { cause: error });
132
+ }
133
+ }
134
+ async uploadFile(formId, token, file, locale) {
135
+ const effectiveLocale = locale ?? this.locale;
136
+ const body = new globalThis.FormData();
137
+ body.append("file", file);
138
+ body.append("uploadToken", token);
139
+ try {
140
+ const res = await firstValueFrom(ajax({
141
+ url: `${this.apiBase}/application/forms/${formId}/submissions/upload`,
142
+ method: "POST",
143
+ headers: getHeaders(effectiveLocale),
144
+ body,
145
+ }));
146
+ return res.response.data.url;
147
+ }
148
+ catch (error) {
149
+ throw new Error(this.messages.uploadFile, { cause: error });
150
+ }
151
+ }
152
+ async submitForm(formId, data, context) {
153
+ const effectiveLocale = context.locale ?? this.locale;
154
+ try {
155
+ await firstValueFrom(ajax({
156
+ url: `${this.apiBase}/application/forms/${formId}/submissions`,
157
+ method: "POST",
158
+ headers: {
159
+ ...getHeaders(effectiveLocale),
160
+ "Content-Type": "application/json",
161
+ },
162
+ body: {
163
+ data,
164
+ eventId: context.eventId,
165
+ resourceType: this.resourceType,
166
+ resourceId: context.ticketId,
167
+ },
168
+ }));
169
+ }
170
+ catch (error) {
171
+ throw new Error(extractErrorMessage(error, this.messages.submitForm), { cause: error });
172
+ }
173
+ }
174
+ }
175
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { EventFormConfig, FormData, Ticket } from "./types.js";
2
+ export declare class EventFormClient {
3
+ private readonly apiBase;
4
+ private readonly apiKey;
5
+ private readonly resourceType;
6
+ constructor(config: EventFormConfig);
7
+ fetchTickets(options?: {
8
+ locale?: string;
9
+ name?: string;
10
+ }): Promise<Ticket[]>;
11
+ fetchTicketById(id: number, locale?: string): Promise<Ticket>;
12
+ fetchLanguages(): Promise<string[]>;
13
+ fetchForm(ticketId: number, locale?: string): Promise<FormData>;
14
+ authorizeUpload(formId: number, fieldId: string, file: File, locale?: string): Promise<string>;
15
+ uploadFile(formId: number, token: string, file: File, locale?: string): Promise<string>;
16
+ submitForm(formId: number, data: Record<string, unknown>, context: {
17
+ eventId: number;
18
+ ticketId: number;
19
+ locale?: string;
20
+ }): Promise<void>;
21
+ }
22
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,eAAe,EACf,QAAQ,EACR,MAAM,EACP,MAAM,YAAY,CAAC;AAgBpB,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAE1B,MAAM,EAAE,eAAe;IAM7B,YAAY,CAAC,OAAO,CAAC,EAAE;QAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAiBf,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAW7D,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAiBnC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAY/D,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,IAAI,EACV,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC;IA2BZ,UAAU,CACd,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,IAAI,EACV,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC;IAoBZ,UAAU,CACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GACA,OAAO,CAAC,IAAI,CAAC;CAuBjB"}