@amalaika/form-sdk-package 1.0.0 → 1.1.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 (120) hide show
  1. package/README.md +193 -233
  2. package/dist/cjs/client/index.d.ts +42 -3
  3. package/dist/cjs/client/index.d.ts.map +1 -1
  4. package/dist/cjs/client/index.js +274 -73
  5. package/dist/cjs/client/index.js.map +1 -1
  6. package/dist/cjs/i18n/en.json +7 -0
  7. package/dist/cjs/i18n/fr.json +7 -0
  8. package/dist/cjs/i18n/index.d.ts +2 -0
  9. package/dist/cjs/i18n/index.d.ts.map +1 -0
  10. package/dist/cjs/i18n/index.js +15 -0
  11. package/dist/cjs/i18n/index.js.map +1 -0
  12. package/dist/cjs/i18n/rw.json +7 -0
  13. package/dist/cjs/index.d.ts +4 -2
  14. package/dist/cjs/index.d.ts.map +1 -1
  15. package/dist/cjs/index.js +10 -1
  16. package/dist/cjs/index.js.map +1 -1
  17. package/dist/cjs/integrations/checkout-script.d.ts +10 -0
  18. package/dist/cjs/integrations/checkout-script.d.ts.map +1 -0
  19. package/dist/cjs/integrations/checkout-script.js +38 -0
  20. package/dist/cjs/integrations/checkout-script.js.map +1 -0
  21. package/dist/cjs/integrations/index.d.ts +5 -0
  22. package/dist/cjs/integrations/index.d.ts.map +1 -0
  23. package/dist/cjs/integrations/index.js +49 -0
  24. package/dist/cjs/integrations/index.js.map +1 -0
  25. package/dist/cjs/integrations/mastercard.d.ts +11 -0
  26. package/dist/cjs/integrations/mastercard.d.ts.map +1 -0
  27. package/dist/cjs/integrations/mastercard.js +100 -0
  28. package/dist/cjs/integrations/mastercard.js.map +1 -0
  29. package/dist/cjs/integrations/types.d.ts +31 -0
  30. package/dist/cjs/integrations/types.d.ts.map +1 -0
  31. package/dist/cjs/{types.js.map → integrations/types.js.map} +1 -1
  32. package/dist/cjs/state/index.d.ts +29 -0
  33. package/dist/cjs/state/index.d.ts.map +1 -0
  34. package/dist/cjs/state/index.js +97 -0
  35. package/dist/cjs/state/index.js.map +1 -0
  36. package/dist/cjs/types/index.d.ts +80 -2
  37. package/dist/cjs/types/index.d.ts.map +1 -1
  38. package/dist/cjs/utils/index.d.ts +14 -1
  39. package/dist/cjs/utils/index.d.ts.map +1 -1
  40. package/dist/cjs/utils/index.js +122 -4
  41. package/dist/cjs/utils/index.js.map +1 -1
  42. package/dist/esm/client/index.d.ts +42 -3
  43. package/dist/esm/client/index.d.ts.map +1 -1
  44. package/dist/esm/client/index.js +274 -73
  45. package/dist/esm/client/index.js.map +1 -1
  46. package/dist/esm/i18n/en.json +7 -0
  47. package/dist/esm/i18n/fr.json +7 -0
  48. package/dist/esm/i18n/index.d.ts +2 -0
  49. package/dist/esm/i18n/index.d.ts.map +1 -0
  50. package/dist/esm/i18n/index.js +9 -0
  51. package/dist/esm/i18n/index.js.map +1 -0
  52. package/dist/esm/i18n/rw.json +7 -0
  53. package/dist/esm/index.d.ts +4 -2
  54. package/dist/esm/index.d.ts.map +1 -1
  55. package/dist/esm/index.js +3 -1
  56. package/dist/esm/index.js.map +1 -1
  57. package/dist/esm/integrations/checkout-script.d.ts +10 -0
  58. package/dist/esm/integrations/checkout-script.d.ts.map +1 -0
  59. package/dist/esm/integrations/checkout-script.js +35 -0
  60. package/dist/esm/integrations/checkout-script.js.map +1 -0
  61. package/dist/esm/integrations/index.d.ts +5 -0
  62. package/dist/esm/integrations/index.d.ts.map +1 -0
  63. package/dist/esm/integrations/index.js +11 -0
  64. package/dist/esm/integrations/index.js.map +1 -0
  65. package/dist/esm/integrations/mastercard.d.ts +11 -0
  66. package/dist/esm/integrations/mastercard.d.ts.map +1 -0
  67. package/dist/esm/integrations/mastercard.js +97 -0
  68. package/dist/esm/integrations/mastercard.js.map +1 -0
  69. package/dist/esm/integrations/types.d.ts +31 -0
  70. package/dist/esm/integrations/types.d.ts.map +1 -0
  71. package/dist/esm/{types.js.map → integrations/types.js.map} +1 -1
  72. package/dist/esm/state/index.d.ts +29 -0
  73. package/dist/esm/state/index.d.ts.map +1 -0
  74. package/dist/esm/state/index.js +93 -0
  75. package/dist/esm/state/index.js.map +1 -0
  76. package/dist/esm/types/index.d.ts +80 -2
  77. package/dist/esm/types/index.d.ts.map +1 -1
  78. package/dist/esm/utils/index.d.ts +14 -1
  79. package/dist/esm/utils/index.d.ts.map +1 -1
  80. package/dist/esm/utils/index.js +117 -4
  81. package/dist/esm/utils/index.js.map +1 -1
  82. package/package.json +2 -4
  83. package/dist/cjs/client/__tests__/client.spec.d.ts +0 -2
  84. package/dist/cjs/client/__tests__/client.spec.d.ts.map +0 -1
  85. package/dist/cjs/client/__tests__/client.spec.js +0 -300
  86. package/dist/cjs/client/__tests__/client.spec.js.map +0 -1
  87. package/dist/cjs/client.d.ts +0 -22
  88. package/dist/cjs/client.d.ts.map +0 -1
  89. package/dist/cjs/client.js +0 -111
  90. package/dist/cjs/client.js.map +0 -1
  91. package/dist/cjs/types.d.ts +0 -78
  92. package/dist/cjs/types.d.ts.map +0 -1
  93. package/dist/cjs/utils/__tests__/utils.spec.d.ts +0 -2
  94. package/dist/cjs/utils/__tests__/utils.spec.d.ts.map +0 -1
  95. package/dist/cjs/utils/__tests__/utils.spec.js +0 -172
  96. package/dist/cjs/utils/__tests__/utils.spec.js.map +0 -1
  97. package/dist/cjs/utils.d.ts +0 -5
  98. package/dist/cjs/utils.d.ts.map +0 -1
  99. package/dist/cjs/utils.js +0 -45
  100. package/dist/cjs/utils.js.map +0 -1
  101. package/dist/esm/client/__tests__/client.spec.d.ts +0 -2
  102. package/dist/esm/client/__tests__/client.spec.d.ts.map +0 -1
  103. package/dist/esm/client/__tests__/client.spec.js +0 -355
  104. package/dist/esm/client/__tests__/client.spec.js.map +0 -1
  105. package/dist/esm/client.d.ts +0 -22
  106. package/dist/esm/client.d.ts.map +0 -1
  107. package/dist/esm/client.js +0 -107
  108. package/dist/esm/client.js.map +0 -1
  109. package/dist/esm/types.d.ts +0 -78
  110. package/dist/esm/types.d.ts.map +0 -1
  111. package/dist/esm/utils/__tests__/utils.spec.d.ts +0 -2
  112. package/dist/esm/utils/__tests__/utils.spec.d.ts.map +0 -1
  113. package/dist/esm/utils/__tests__/utils.spec.js +0 -182
  114. package/dist/esm/utils/__tests__/utils.spec.js.map +0 -1
  115. package/dist/esm/utils.d.ts +0 -5
  116. package/dist/esm/utils.d.ts.map +0 -1
  117. package/dist/esm/utils.js +0 -40
  118. package/dist/esm/utils.js.map +0 -1
  119. /package/dist/cjs/{types.js → integrations/types.js} +0 -0
  120. /package/dist/esm/{types.js → integrations/types.js} +0 -0
@@ -1,172 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const __1 = require("..");
4
- // ---------------------------------------------------------------------------
5
- // Helpers
6
- // ---------------------------------------------------------------------------
7
- function makeField(overrides) {
8
- return {
9
- type: "text",
10
- required: false,
11
- ...overrides,
12
- };
13
- }
14
- // ---------------------------------------------------------------------------
15
- // getAllFields
16
- // ---------------------------------------------------------------------------
17
- describe("getAllFields", () => {
18
- it("returns fields from a flat schema", () => {
19
- const schema = {
20
- fields: [
21
- makeField({ id: "first_name" }),
22
- makeField({ id: "email", type: "email" }),
23
- ],
24
- };
25
- const result = (0, __1.getAllFields)(schema);
26
- expect(result).toHaveLength(2);
27
- expect(result.map((f) => f.id)).toEqual(["first_name", "email"]);
28
- });
29
- it("returns fields from a stepped schema", () => {
30
- const schema = {
31
- steps: [
32
- { id: "step1", fields: [makeField({ id: "a" })] },
33
- { id: "step2", fields: [makeField({ id: "b" }), makeField({ id: "c" })] },
34
- ],
35
- };
36
- const result = (0, __1.getAllFields)(schema);
37
- expect(result).toHaveLength(3);
38
- expect(result.map((f) => f.id)).toEqual(["a", "b", "c"]);
39
- });
40
- it("returns empty array when schema has neither fields nor steps", () => {
41
- const schema = {};
42
- expect((0, __1.getAllFields)(schema)).toEqual([]);
43
- });
44
- it("prefers steps over fields when both exist", () => {
45
- const schema = {
46
- fields: [makeField({ id: "flat" })],
47
- steps: [{ id: "s1", fields: [makeField({ id: "stepped" })] }],
48
- };
49
- const result = (0, __1.getAllFields)(schema);
50
- expect(result.map((f) => f.id)).toEqual(["stepped"]);
51
- });
52
- });
53
- // ---------------------------------------------------------------------------
54
- // isFieldVisible
55
- // ---------------------------------------------------------------------------
56
- describe("isFieldVisible", () => {
57
- it("returns true when field has no visibility rule", () => {
58
- const field = makeField({ id: "name" });
59
- expect((0, __1.isFieldVisible)(field, {}, [field])).toBe(true);
60
- });
61
- describe("equals operator", () => {
62
- const allFields = [
63
- makeField({ id: "role", type: "select" }),
64
- makeField({
65
- id: "talk_title",
66
- visibility: { dependsOn: "role", operator: "equals", value: "speaker" },
67
- }),
68
- ];
69
- it("shows field when condition is met", () => {
70
- expect((0, __1.isFieldVisible)(allFields[1], { role: "speaker" }, allFields)).toBe(true);
71
- });
72
- it("hides field when condition is not met", () => {
73
- expect((0, __1.isFieldVisible)(allFields[1], { role: "attendee" }, allFields)).toBe(false);
74
- });
75
- it("hides field when dependency has no value", () => {
76
- expect((0, __1.isFieldVisible)(allFields[1], {}, allFields)).toBe(false);
77
- });
78
- });
79
- describe("not_equals operator", () => {
80
- const allFields = [
81
- makeField({ id: "role", type: "select" }),
82
- makeField({
83
- id: "general_info",
84
- visibility: { dependsOn: "role", operator: "not_equals", value: "speaker" },
85
- }),
86
- ];
87
- it("shows field when value differs", () => {
88
- expect((0, __1.isFieldVisible)(allFields[1], { role: "attendee" }, allFields)).toBe(true);
89
- });
90
- it("hides field when value matches", () => {
91
- expect((0, __1.isFieldVisible)(allFields[1], { role: "speaker" }, allFields)).toBe(false);
92
- });
93
- });
94
- describe("in operator", () => {
95
- const allFields = [
96
- makeField({ id: "diet", type: "checkbox" }),
97
- makeField({
98
- id: "allergy_details",
99
- visibility: { dependsOn: "diet", operator: "in", value: ["vegan", "gluten_free"] },
100
- }),
101
- ];
102
- it("shows field when single value is in target list", () => {
103
- expect((0, __1.isFieldVisible)(allFields[1], { diet: "vegan" }, allFields)).toBe(true);
104
- });
105
- it("shows field when array value overlaps target list", () => {
106
- expect((0, __1.isFieldVisible)(allFields[1], { diet: ["gluten_free", "other"] }, allFields)).toBe(true);
107
- });
108
- it("hides field when value is not in target list", () => {
109
- expect((0, __1.isFieldVisible)(allFields[1], { diet: "none" }, allFields)).toBe(false);
110
- });
111
- });
112
- describe("cascading visibility", () => {
113
- it("hides child when parent is hidden", () => {
114
- const allFields = [
115
- makeField({ id: "role", type: "select" }),
116
- makeField({
117
- id: "talk_title",
118
- visibility: { dependsOn: "role", operator: "equals", value: "speaker" },
119
- }),
120
- makeField({
121
- id: "talk_abstract",
122
- visibility: { dependsOn: "talk_title", operator: "not_equals", value: "" },
123
- }),
124
- ];
125
- // role is "attendee" → talk_title hidden → talk_abstract hidden too
126
- expect((0, __1.isFieldVisible)(allFields[2], { role: "attendee" }, allFields)).toBe(false);
127
- });
128
- it("shows child when entire chain is satisfied", () => {
129
- const allFields = [
130
- makeField({ id: "role", type: "select" }),
131
- makeField({
132
- id: "talk_title",
133
- visibility: { dependsOn: "role", operator: "equals", value: "speaker" },
134
- }),
135
- makeField({
136
- id: "talk_abstract",
137
- visibility: { dependsOn: "talk_title", operator: "not_equals", value: "" },
138
- }),
139
- ];
140
- expect((0, __1.isFieldVisible)(allFields[2], { role: "speaker", talk_title: "My Talk" }, allFields)).toBe(true);
141
- });
142
- });
143
- });
144
- // ---------------------------------------------------------------------------
145
- // getVisibleFieldIds
146
- // ---------------------------------------------------------------------------
147
- describe("getVisibleFieldIds", () => {
148
- const allFields = [
149
- makeField({ id: "first_name" }),
150
- makeField({ id: "role", type: "select" }),
151
- makeField({
152
- id: "talk_title",
153
- visibility: { dependsOn: "role", operator: "equals", value: "speaker" },
154
- }),
155
- makeField({ id: "email", type: "email" }),
156
- ];
157
- it("includes all fields without visibility rules", () => {
158
- const visible = (0, __1.getVisibleFieldIds)(allFields, {});
159
- expect(visible.has("first_name")).toBe(true);
160
- expect(visible.has("role")).toBe(true);
161
- expect(visible.has("email")).toBe(true);
162
- });
163
- it("excludes fields whose condition is not met", () => {
164
- const visible = (0, __1.getVisibleFieldIds)(allFields, { role: "attendee" });
165
- expect(visible.has("talk_title")).toBe(false);
166
- });
167
- it("includes conditional fields when condition is met", () => {
168
- const visible = (0, __1.getVisibleFieldIds)(allFields, { role: "speaker" });
169
- expect(visible.has("talk_title")).toBe(true);
170
- });
171
- });
172
- //# sourceMappingURL=utils.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.spec.js","sourceRoot":"","sources":["../../../../src/utils/__tests__/utils.spec.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import type { FieldDefinition, FormSchema } from "./types.js";
2
- export declare function getAllFields(schema: FormSchema): FieldDefinition[];
3
- export declare function isFieldVisible(field: FieldDefinition, formValues: Record<string, unknown>, allFields: FieldDefinition[]): boolean;
4
- export declare function getVisibleFieldIds(allFields: FieldDefinition[], formValues: Record<string, unknown>): Set<string>;
5
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE9D,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,eAAe,EAAE,CAKlE;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,eAAe,EACtB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,SAAS,EAAE,eAAe,EAAE,GAC3B,OAAO,CA0BT;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,eAAe,EAAE,EAC5B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,GAAG,CAAC,MAAM,CAAC,CAQb"}
package/dist/cjs/utils.js DELETED
@@ -1,45 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getAllFields = getAllFields;
4
- exports.isFieldVisible = isFieldVisible;
5
- exports.getVisibleFieldIds = getVisibleFieldIds;
6
- function getAllFields(schema) {
7
- if (schema.steps) {
8
- return schema.steps.flatMap((step) => step.fields);
9
- }
10
- return schema.fields ?? [];
11
- }
12
- function isFieldVisible(field, formValues, allFields) {
13
- if (!field.visibility)
14
- return true;
15
- const { dependsOn, operator, value } = field.visibility;
16
- // Cascading: if the parent field is itself hidden, this field is hidden too
17
- const parentField = allFields.find((f) => f.id === dependsOn);
18
- if (parentField && !isFieldVisible(parentField, formValues, allFields)) {
19
- return false;
20
- }
21
- const current = formValues[dependsOn];
22
- switch (operator) {
23
- case "equals":
24
- return current === value;
25
- case "not_equals":
26
- return current !== value;
27
- case "in": {
28
- const selected = Array.isArray(current) ? current : [current];
29
- const targets = Array.isArray(value) ? value : [value];
30
- return targets.some((v) => selected.includes(v));
31
- }
32
- default:
33
- return true;
34
- }
35
- }
36
- function getVisibleFieldIds(allFields, formValues) {
37
- const visible = new Set();
38
- for (const field of allFields) {
39
- if (isFieldVisible(field, formValues, allFields)) {
40
- visible.add(field.id);
41
- }
42
- }
43
- return visible;
44
- }
45
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;AAEA,oCAKC;AAED,wCA8BC;AAED,gDAWC;AAlDD,SAAgB,YAAY,CAAC,MAAkB;IAC7C,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;AAC7B,CAAC;AAED,SAAgB,cAAc,CAC5B,KAAsB,EACtB,UAAmC,EACnC,SAA4B;IAE5B,IAAI,CAAC,KAAK,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAEnC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC;IAExD,4EAA4E;IAC5E,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;IAC9D,IAAI,WAAW,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC;QACvE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAEtC,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ;YACX,OAAO,OAAO,KAAK,KAAK,CAAC;QAC3B,KAAK,YAAY;YACf,OAAO,OAAO,KAAK,KAAK,CAAC;QAC3B,KAAK,IAAI,CAAC,CAAC,CAAC;YACV,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACvD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,CAAC;QACD;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAgB,kBAAkB,CAChC,SAA4B,EAC5B,UAAmC;IAEnC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9B,IAAI,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=client.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.spec.d.ts","sourceRoot":"","sources":["../../../../src/client/__tests__/client.spec.ts"],"names":[],"mappings":""}
@@ -1,355 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.spec.js","sourceRoot":"","sources":["../../../../src/client/__tests__/client.spec.ts"],"names":[],"mappings":"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"}