@bates-solutions/squareup 0.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 (220) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +154 -0
  3. package/README.md.backup +292 -0
  4. package/dist/angular/__tests__/setup.d.ts +1 -0
  5. package/dist/angular/__tests__/setup.d.ts.map +1 -0
  6. package/dist/angular/__tests__/setup.js +5 -0
  7. package/dist/angular/__tests__/setup.js.map +1 -0
  8. package/dist/angular/components/index.d.ts +2 -0
  9. package/dist/angular/components/index.d.ts.map +1 -0
  10. package/dist/angular/components/index.js +2 -0
  11. package/dist/angular/components/index.js.map +1 -0
  12. package/dist/angular/components/payment-button.component.d.ts +49 -0
  13. package/dist/angular/components/payment-button.component.d.ts.map +1 -0
  14. package/dist/angular/components/payment-button.component.js +176 -0
  15. package/dist/angular/components/payment-button.component.js.map +1 -0
  16. package/dist/angular/directives/index.d.ts +2 -0
  17. package/dist/angular/directives/index.d.ts.map +1 -0
  18. package/dist/angular/directives/index.js +2 -0
  19. package/dist/angular/directives/index.js.map +1 -0
  20. package/dist/angular/directives/square-card.directive.d.ts +52 -0
  21. package/dist/angular/directives/square-card.directive.d.ts.map +1 -0
  22. package/dist/angular/directives/square-card.directive.js +98 -0
  23. package/dist/angular/directives/square-card.directive.js.map +1 -0
  24. package/dist/angular/index.d.ts +42 -0
  25. package/dist/angular/index.d.ts.map +1 -0
  26. package/dist/angular/index.js +45 -0
  27. package/dist/angular/index.js.map +1 -0
  28. package/dist/angular/services/index.d.ts +6 -0
  29. package/dist/angular/services/index.d.ts.map +1 -0
  30. package/dist/angular/services/index.js +6 -0
  31. package/dist/angular/services/index.js.map +1 -0
  32. package/dist/angular/services/square-catalog.service.d.ts +60 -0
  33. package/dist/angular/services/square-catalog.service.d.ts.map +1 -0
  34. package/dist/angular/services/square-catalog.service.js +152 -0
  35. package/dist/angular/services/square-catalog.service.js.map +1 -0
  36. package/dist/angular/services/square-customers.service.d.ts +77 -0
  37. package/dist/angular/services/square-customers.service.d.ts.map +1 -0
  38. package/dist/angular/services/square-customers.service.js +187 -0
  39. package/dist/angular/services/square-customers.service.js.map +1 -0
  40. package/dist/angular/services/square-orders.service.d.ts +66 -0
  41. package/dist/angular/services/square-orders.service.d.ts.map +1 -0
  42. package/dist/angular/services/square-orders.service.js +170 -0
  43. package/dist/angular/services/square-orders.service.js.map +1 -0
  44. package/dist/angular/services/square-payments.service.d.ts +73 -0
  45. package/dist/angular/services/square-payments.service.d.ts.map +1 -0
  46. package/dist/angular/services/square-payments.service.js +167 -0
  47. package/dist/angular/services/square-payments.service.js.map +1 -0
  48. package/dist/angular/services/square-sdk.service.d.ts +45 -0
  49. package/dist/angular/services/square-sdk.service.d.ts.map +1 -0
  50. package/dist/angular/services/square-sdk.service.js +133 -0
  51. package/dist/angular/services/square-sdk.service.js.map +1 -0
  52. package/dist/angular/square.module.d.ts +36 -0
  53. package/dist/angular/square.module.d.ts.map +1 -0
  54. package/dist/angular/square.module.js +75 -0
  55. package/dist/angular/square.module.js.map +1 -0
  56. package/dist/angular/types.d.ts +189 -0
  57. package/dist/angular/types.d.ts.map +1 -0
  58. package/dist/angular/types.js +8 -0
  59. package/dist/angular/types.js.map +1 -0
  60. package/dist/core/builders/order.builder.d.ts +140 -0
  61. package/dist/core/builders/order.builder.d.ts.map +1 -0
  62. package/dist/core/builders/order.builder.js +185 -0
  63. package/dist/core/builders/order.builder.js.map +1 -0
  64. package/dist/core/client.d.ts +93 -0
  65. package/dist/core/client.d.ts.map +1 -0
  66. package/dist/core/client.js +99 -0
  67. package/dist/core/client.js.map +1 -0
  68. package/dist/core/errors.d.ts +55 -0
  69. package/dist/core/errors.d.ts.map +1 -0
  70. package/dist/core/errors.js +118 -0
  71. package/dist/core/errors.js.map +1 -0
  72. package/dist/core/index.d.ts +17 -0
  73. package/dist/core/index.d.ts.map +1 -0
  74. package/dist/core/index.js +18 -0
  75. package/dist/core/index.js.map +1 -0
  76. package/dist/core/services/catalog.service.d.ts +218 -0
  77. package/dist/core/services/catalog.service.d.ts.map +1 -0
  78. package/dist/core/services/catalog.service.js +274 -0
  79. package/dist/core/services/catalog.service.js.map +1 -0
  80. package/dist/core/services/customers.service.d.ts +197 -0
  81. package/dist/core/services/customers.service.d.ts.map +1 -0
  82. package/dist/core/services/customers.service.js +246 -0
  83. package/dist/core/services/customers.service.js.map +1 -0
  84. package/dist/core/services/inventory.service.d.ts +196 -0
  85. package/dist/core/services/inventory.service.d.ts.map +1 -0
  86. package/dist/core/services/inventory.service.js +266 -0
  87. package/dist/core/services/inventory.service.js.map +1 -0
  88. package/dist/core/services/invoices.service.d.ts +211 -0
  89. package/dist/core/services/invoices.service.d.ts.map +1 -0
  90. package/dist/core/services/invoices.service.js +297 -0
  91. package/dist/core/services/invoices.service.js.map +1 -0
  92. package/dist/core/services/loyalty.service.d.ts +282 -0
  93. package/dist/core/services/loyalty.service.d.ts.map +1 -0
  94. package/dist/core/services/loyalty.service.js +340 -0
  95. package/dist/core/services/loyalty.service.js.map +1 -0
  96. package/dist/core/services/orders.service.d.ts +121 -0
  97. package/dist/core/services/orders.service.d.ts.map +1 -0
  98. package/dist/core/services/orders.service.js +208 -0
  99. package/dist/core/services/orders.service.js.map +1 -0
  100. package/dist/core/services/payments.service.d.ts +121 -0
  101. package/dist/core/services/payments.service.d.ts.map +1 -0
  102. package/dist/core/services/payments.service.js +189 -0
  103. package/dist/core/services/payments.service.js.map +1 -0
  104. package/dist/core/services/subscriptions.service.d.ts +205 -0
  105. package/dist/core/services/subscriptions.service.d.ts.map +1 -0
  106. package/dist/core/services/subscriptions.service.js +265 -0
  107. package/dist/core/services/subscriptions.service.js.map +1 -0
  108. package/dist/core/types/index.d.ts +68 -0
  109. package/dist/core/types/index.d.ts.map +1 -0
  110. package/dist/core/types/index.js +2 -0
  111. package/dist/core/types/index.js.map +1 -0
  112. package/dist/core/utils.d.ts +74 -0
  113. package/dist/core/utils.d.ts.map +1 -0
  114. package/dist/core/utils.js +96 -0
  115. package/dist/core/utils.js.map +1 -0
  116. package/dist/react/SquareProvider.d.ts +50 -0
  117. package/dist/react/SquareProvider.d.ts.map +1 -0
  118. package/dist/react/SquareProvider.js +134 -0
  119. package/dist/react/SquareProvider.js.map +1 -0
  120. package/dist/react/__tests__/CardInput.test.d.ts +2 -0
  121. package/dist/react/__tests__/CardInput.test.d.ts.map +1 -0
  122. package/dist/react/__tests__/CardInput.test.js +218 -0
  123. package/dist/react/__tests__/CardInput.test.js.map +1 -0
  124. package/dist/react/__tests__/PaymentButton.test.d.ts +2 -0
  125. package/dist/react/__tests__/PaymentButton.test.d.ts.map +1 -0
  126. package/dist/react/__tests__/PaymentButton.test.js +400 -0
  127. package/dist/react/__tests__/PaymentButton.test.js.map +1 -0
  128. package/dist/react/__tests__/SquareProvider.test.d.ts +2 -0
  129. package/dist/react/__tests__/SquareProvider.test.d.ts.map +1 -0
  130. package/dist/react/__tests__/SquareProvider.test.js +126 -0
  131. package/dist/react/__tests__/SquareProvider.test.js.map +1 -0
  132. package/dist/react/__tests__/setup.d.ts +2 -0
  133. package/dist/react/__tests__/setup.d.ts.map +1 -0
  134. package/dist/react/__tests__/setup.js +3 -0
  135. package/dist/react/__tests__/setup.js.map +1 -0
  136. package/dist/react/__tests__/useCatalog.test.d.ts +2 -0
  137. package/dist/react/__tests__/useCatalog.test.d.ts.map +1 -0
  138. package/dist/react/__tests__/useCatalog.test.js +277 -0
  139. package/dist/react/__tests__/useCatalog.test.js.map +1 -0
  140. package/dist/react/__tests__/useCustomers.test.d.ts +2 -0
  141. package/dist/react/__tests__/useCustomers.test.d.ts.map +1 -0
  142. package/dist/react/__tests__/useCustomers.test.js +312 -0
  143. package/dist/react/__tests__/useCustomers.test.js.map +1 -0
  144. package/dist/react/__tests__/useOrders.test.d.ts +2 -0
  145. package/dist/react/__tests__/useOrders.test.d.ts.map +1 -0
  146. package/dist/react/__tests__/useOrders.test.js +216 -0
  147. package/dist/react/__tests__/useOrders.test.js.map +1 -0
  148. package/dist/react/__tests__/usePayments.test.d.ts +2 -0
  149. package/dist/react/__tests__/usePayments.test.d.ts.map +1 -0
  150. package/dist/react/__tests__/usePayments.test.js +235 -0
  151. package/dist/react/__tests__/usePayments.test.js.map +1 -0
  152. package/dist/react/__tests__/useSquarePayment.test.d.ts +2 -0
  153. package/dist/react/__tests__/useSquarePayment.test.d.ts.map +1 -0
  154. package/dist/react/__tests__/useSquarePayment.test.js +447 -0
  155. package/dist/react/__tests__/useSquarePayment.test.js.map +1 -0
  156. package/dist/react/components/CardInput.d.ts +69 -0
  157. package/dist/react/components/CardInput.d.ts.map +1 -0
  158. package/dist/react/components/CardInput.js +58 -0
  159. package/dist/react/components/CardInput.js.map +1 -0
  160. package/dist/react/components/PaymentButton.d.ts +71 -0
  161. package/dist/react/components/PaymentButton.d.ts.map +1 -0
  162. package/dist/react/components/PaymentButton.js +140 -0
  163. package/dist/react/components/PaymentButton.js.map +1 -0
  164. package/dist/react/components/index.d.ts +5 -0
  165. package/dist/react/components/index.d.ts.map +1 -0
  166. package/dist/react/components/index.js +3 -0
  167. package/dist/react/components/index.js.map +1 -0
  168. package/dist/react/hooks/index.d.ts +11 -0
  169. package/dist/react/hooks/index.d.ts.map +1 -0
  170. package/dist/react/hooks/index.js +6 -0
  171. package/dist/react/hooks/index.js.map +1 -0
  172. package/dist/react/hooks/useCatalog.d.ts +98 -0
  173. package/dist/react/hooks/useCatalog.d.ts.map +1 -0
  174. package/dist/react/hooks/useCatalog.js +134 -0
  175. package/dist/react/hooks/useCatalog.js.map +1 -0
  176. package/dist/react/hooks/useCustomers.d.ts +105 -0
  177. package/dist/react/hooks/useCustomers.d.ts.map +1 -0
  178. package/dist/react/hooks/useCustomers.js +174 -0
  179. package/dist/react/hooks/useCustomers.js.map +1 -0
  180. package/dist/react/hooks/useOrders.d.ts +112 -0
  181. package/dist/react/hooks/useOrders.d.ts.map +1 -0
  182. package/dist/react/hooks/useOrders.js +115 -0
  183. package/dist/react/hooks/useOrders.js.map +1 -0
  184. package/dist/react/hooks/usePayments.d.ts +98 -0
  185. package/dist/react/hooks/usePayments.d.ts.map +1 -0
  186. package/dist/react/hooks/usePayments.js +89 -0
  187. package/dist/react/hooks/usePayments.js.map +1 -0
  188. package/dist/react/hooks/useSquarePayment.d.ts +52 -0
  189. package/dist/react/hooks/useSquarePayment.d.ts.map +1 -0
  190. package/dist/react/hooks/useSquarePayment.js +146 -0
  191. package/dist/react/hooks/useSquarePayment.js.map +1 -0
  192. package/dist/react/index.d.ts +8 -0
  193. package/dist/react/index.d.ts.map +1 -0
  194. package/dist/react/index.js +7 -0
  195. package/dist/react/index.js.map +1 -0
  196. package/dist/react/types.d.ts +183 -0
  197. package/dist/react/types.d.ts.map +1 -0
  198. package/dist/react/types.js +2 -0
  199. package/dist/react/types.js.map +1 -0
  200. package/dist/server/index.d.ts +43 -0
  201. package/dist/server/index.d.ts.map +1 -0
  202. package/dist/server/index.js +45 -0
  203. package/dist/server/index.js.map +1 -0
  204. package/dist/server/middleware/express.d.ts +77 -0
  205. package/dist/server/middleware/express.d.ts.map +1 -0
  206. package/dist/server/middleware/express.js +123 -0
  207. package/dist/server/middleware/express.js.map +1 -0
  208. package/dist/server/middleware/nextjs.d.ts +118 -0
  209. package/dist/server/middleware/nextjs.d.ts.map +1 -0
  210. package/dist/server/middleware/nextjs.js +172 -0
  211. package/dist/server/middleware/nextjs.js.map +1 -0
  212. package/dist/server/types.d.ts +89 -0
  213. package/dist/server/types.d.ts.map +1 -0
  214. package/dist/server/types.js +7 -0
  215. package/dist/server/types.js.map +1 -0
  216. package/dist/server/webhook.d.ts +114 -0
  217. package/dist/server/webhook.d.ts.map +1 -0
  218. package/dist/server/webhook.js +190 -0
  219. package/dist/server/webhook.js.map +1 -0
  220. package/package.json +118 -0
@@ -0,0 +1,340 @@
1
+ import { parseSquareError, SquareValidationError } from '../errors.js';
2
+ import { createIdempotencyKey } from '../utils.js';
3
+ /**
4
+ * Loyalty service for managing Square loyalty programs
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * // Create a loyalty account
9
+ * const account = await square.loyalty.createAccount({
10
+ * programId: 'PROG_123',
11
+ * phoneNumber: '+15551234567',
12
+ * });
13
+ *
14
+ * // Add points
15
+ * await square.loyalty.accumulatePoints(account.id, {
16
+ * points: 100,
17
+ * });
18
+ *
19
+ * // Redeem a reward
20
+ * await square.loyalty.redeemReward(account.id, 'REWARD_123');
21
+ * ```
22
+ */
23
+ export class LoyaltyService {
24
+ client;
25
+ defaultLocationId;
26
+ constructor(client, defaultLocationId) {
27
+ this.client = client;
28
+ this.defaultLocationId = defaultLocationId;
29
+ }
30
+ /**
31
+ * Get the loyalty program for the current location
32
+ *
33
+ * @param programId - Optional program ID (uses main program if not provided)
34
+ * @returns Loyalty program details
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * const program = await square.loyalty.getProgram();
39
+ * console.log(`Points name: ${program.terminology?.other}`);
40
+ * ```
41
+ */
42
+ async getProgram(programId) {
43
+ try {
44
+ if (programId) {
45
+ const response = await this.client.loyalty.programs.get({ programId });
46
+ if (!response.program) {
47
+ throw new Error('Loyalty program not found');
48
+ }
49
+ return response.program;
50
+ }
51
+ // Get the main program
52
+ const response = await this.client.loyalty.programs.list();
53
+ const programs = response.programs ?? [];
54
+ if (programs.length === 0) {
55
+ throw new Error('No loyalty program found');
56
+ }
57
+ return programs[0];
58
+ }
59
+ catch (error) {
60
+ throw parseSquareError(error);
61
+ }
62
+ }
63
+ /**
64
+ * Create a new loyalty account
65
+ *
66
+ * @param options - Account creation options
67
+ * @returns Created loyalty account
68
+ *
69
+ * @example
70
+ * ```typescript
71
+ * const account = await square.loyalty.createAccount({
72
+ * programId: 'PROG_123',
73
+ * phoneNumber: '+15551234567',
74
+ * });
75
+ * ```
76
+ */
77
+ async createAccount(options) {
78
+ if (!options.programId) {
79
+ throw new SquareValidationError('programId is required', 'programId');
80
+ }
81
+ if (!options.phoneNumber && !options.customerId) {
82
+ throw new SquareValidationError('Either phoneNumber or customerId is required', 'phoneNumber');
83
+ }
84
+ try {
85
+ const response = await this.client.loyalty.accounts.create({
86
+ loyaltyAccount: {
87
+ programId: options.programId,
88
+ mapping: options.phoneNumber
89
+ ? {
90
+ phoneNumber: options.phoneNumber,
91
+ }
92
+ : undefined,
93
+ customerId: options.customerId,
94
+ },
95
+ idempotencyKey: options.idempotencyKey ?? createIdempotencyKey(),
96
+ });
97
+ if (!response.loyaltyAccount) {
98
+ throw new Error('Loyalty account was not created');
99
+ }
100
+ return response.loyaltyAccount;
101
+ }
102
+ catch (error) {
103
+ throw parseSquareError(error);
104
+ }
105
+ }
106
+ /**
107
+ * Get a loyalty account by ID
108
+ *
109
+ * @param accountId - Loyalty account ID
110
+ * @returns Loyalty account details
111
+ *
112
+ * @example
113
+ * ```typescript
114
+ * const account = await square.loyalty.getAccount('ACCT_123');
115
+ * console.log(`Balance: ${account.balance} points`);
116
+ * ```
117
+ */
118
+ async getAccount(accountId) {
119
+ try {
120
+ const response = await this.client.loyalty.accounts.get({ accountId });
121
+ if (!response.loyaltyAccount) {
122
+ throw new Error('Loyalty account not found');
123
+ }
124
+ return response.loyaltyAccount;
125
+ }
126
+ catch (error) {
127
+ throw parseSquareError(error);
128
+ }
129
+ }
130
+ /**
131
+ * Search for loyalty accounts
132
+ *
133
+ * @param options - Search options
134
+ * @returns Matching loyalty accounts
135
+ *
136
+ * @example
137
+ * ```typescript
138
+ * // Find by phone number
139
+ * const accounts = await square.loyalty.searchAccounts({
140
+ * phoneNumber: '+15551234567',
141
+ * });
142
+ *
143
+ * // Find by customer ID
144
+ * const accounts = await square.loyalty.searchAccounts({
145
+ * customerId: 'CUST_123',
146
+ * });
147
+ * ```
148
+ */
149
+ async searchAccounts(options) {
150
+ try {
151
+ const mappings = [];
152
+ const customerIds = [];
153
+ if (options?.phoneNumber) {
154
+ mappings.push({ phoneNumber: options.phoneNumber });
155
+ }
156
+ if (options?.customerId) {
157
+ customerIds.push(options.customerId);
158
+ }
159
+ const response = await this.client.loyalty.accounts.search({
160
+ cursor: options?.cursor,
161
+ limit: options?.limit,
162
+ query: mappings.length > 0 || customerIds.length > 0
163
+ ? {
164
+ mappings: mappings.length > 0 ? mappings : undefined,
165
+ customerIds: customerIds.length > 0 ? customerIds : undefined,
166
+ }
167
+ : undefined,
168
+ });
169
+ return {
170
+ data: (response.loyaltyAccounts ?? []),
171
+ cursor: response.cursor,
172
+ };
173
+ }
174
+ catch (error) {
175
+ throw parseSquareError(error);
176
+ }
177
+ }
178
+ /**
179
+ * Accumulate (add) points to a loyalty account
180
+ *
181
+ * @param accountId - Loyalty account ID
182
+ * @param options - Accumulation options
183
+ * @returns Loyalty event
184
+ *
185
+ * @example
186
+ * ```typescript
187
+ * // Add points from an order
188
+ * await square.loyalty.accumulatePoints('ACCT_123', {
189
+ * orderId: 'ORDER_456',
190
+ * });
191
+ *
192
+ * // Add points manually
193
+ * await square.loyalty.accumulatePoints('ACCT_123', {
194
+ * points: 50,
195
+ * });
196
+ * ```
197
+ */
198
+ async accumulatePoints(accountId, options) {
199
+ const locationId = this.defaultLocationId;
200
+ if (!locationId) {
201
+ throw new SquareValidationError('locationId is required. Set it in client config.', 'locationId');
202
+ }
203
+ if (!options.orderId && !options.points) {
204
+ throw new SquareValidationError('Either orderId or points is required');
205
+ }
206
+ try {
207
+ const response = await this.client.loyalty.accounts.accumulatePoints({
208
+ accountId,
209
+ accumulatePoints: {
210
+ orderId: options.orderId,
211
+ points: options.points,
212
+ },
213
+ locationId,
214
+ idempotencyKey: options.idempotencyKey ?? createIdempotencyKey(),
215
+ });
216
+ if (!response.event) {
217
+ throw new Error('Points accumulation failed');
218
+ }
219
+ return response.event;
220
+ }
221
+ catch (error) {
222
+ throw parseSquareError(error);
223
+ }
224
+ }
225
+ /**
226
+ * Adjust points on a loyalty account (add or subtract)
227
+ *
228
+ * @param accountId - Loyalty account ID
229
+ * @param points - Points to add (positive) or subtract (negative)
230
+ * @param reason - Reason for adjustment
231
+ * @returns Loyalty event
232
+ *
233
+ * @example
234
+ * ```typescript
235
+ * // Add bonus points
236
+ * await square.loyalty.adjustPoints('ACCT_123', 100, 'Birthday bonus');
237
+ *
238
+ * // Remove points
239
+ * await square.loyalty.adjustPoints('ACCT_123', -50, 'Points correction');
240
+ * ```
241
+ */
242
+ async adjustPoints(accountId, points, reason, idempotencyKey) {
243
+ try {
244
+ const response = await this.client.loyalty.accounts.adjust({
245
+ accountId,
246
+ adjustPoints: {
247
+ points,
248
+ reason,
249
+ },
250
+ idempotencyKey: idempotencyKey ?? createIdempotencyKey(),
251
+ });
252
+ if (!response.event) {
253
+ throw new Error('Points adjustment failed');
254
+ }
255
+ return response.event;
256
+ }
257
+ catch (error) {
258
+ throw parseSquareError(error);
259
+ }
260
+ }
261
+ /**
262
+ * Redeem a reward
263
+ *
264
+ * @param accountId - Loyalty account ID
265
+ * @param rewardTierId - Reward tier ID to redeem
266
+ * @param orderId - Optional order ID to apply reward to
267
+ * @returns Created reward
268
+ *
269
+ * @example
270
+ * ```typescript
271
+ * const reward = await square.loyalty.redeemReward(
272
+ * 'ACCT_123',
273
+ * 'TIER_123',
274
+ * 'ORDER_456'
275
+ * );
276
+ * ```
277
+ */
278
+ async redeemReward(accountId, rewardTierId, orderId, idempotencyKey) {
279
+ const locationId = this.defaultLocationId;
280
+ if (!locationId) {
281
+ throw new SquareValidationError('locationId is required. Set it in client config.', 'locationId');
282
+ }
283
+ try {
284
+ const response = await this.client.loyalty.rewards.create({
285
+ reward: {
286
+ loyaltyAccountId: accountId,
287
+ rewardTierId,
288
+ orderId,
289
+ },
290
+ idempotencyKey: idempotencyKey ?? createIdempotencyKey(),
291
+ });
292
+ if (!response.reward?.id) {
293
+ throw new Error('Reward creation failed');
294
+ }
295
+ const rewardId = response.reward.id;
296
+ // Redeem the reward
297
+ const redeemResponse = await this.client.loyalty.rewards.redeem({
298
+ rewardId,
299
+ locationId,
300
+ idempotencyKey: createIdempotencyKey(),
301
+ });
302
+ if (!redeemResponse.event) {
303
+ throw new Error('Reward redemption failed');
304
+ }
305
+ return {
306
+ id: rewardId,
307
+ status: 'REDEEMED',
308
+ };
309
+ }
310
+ catch (error) {
311
+ throw parseSquareError(error);
312
+ }
313
+ }
314
+ /**
315
+ * Calculate points that would be earned for an order
316
+ *
317
+ * @param programId - Loyalty program ID
318
+ * @param orderId - Order ID to calculate points for
319
+ * @returns Points that would be earned
320
+ *
321
+ * @example
322
+ * ```typescript
323
+ * const points = await square.loyalty.calculatePoints('PROG_123', 'ORDER_123');
324
+ * console.log(`This order earns ${points} points`);
325
+ * ```
326
+ */
327
+ async calculatePoints(programId, orderId) {
328
+ try {
329
+ const response = await this.client.loyalty.programs.calculate({
330
+ programId,
331
+ orderId,
332
+ });
333
+ return response.points ?? 0;
334
+ }
335
+ catch (error) {
336
+ throw parseSquareError(error);
337
+ }
338
+ }
339
+ }
340
+ //# sourceMappingURL=loyalty.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loyalty.service.js","sourceRoot":"","sources":["../../../src/core/services/loyalty.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,121 @@
1
+ import type { SquareClient } from 'square';
2
+ import type { CreateOrderOptions } from '../types/index.js';
3
+ import { OrderBuilder, type Order } from '../builders/order.builder.js';
4
+ /**
5
+ * Orders service for managing Square orders
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * // Using the builder (recommended)
10
+ * const order = await square.orders
11
+ * .builder()
12
+ * .addItem({ name: 'Latte', amount: 450 })
13
+ * .withCustomer('CUST_123')
14
+ * .build();
15
+ *
16
+ * // Or create directly
17
+ * const order = await square.orders.create({
18
+ * lineItems: [{ name: 'Latte', amount: 450 }],
19
+ * });
20
+ * ```
21
+ */
22
+ export declare class OrdersService {
23
+ private readonly client;
24
+ private readonly defaultLocationId?;
25
+ constructor(client: SquareClient, defaultLocationId?: string | undefined);
26
+ /**
27
+ * Create a new order builder
28
+ *
29
+ * @param locationId - Optional location ID (uses default if not provided)
30
+ * @returns Order builder instance
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * const order = await square.orders
35
+ * .builder()
36
+ * .addItem({ name: 'Coffee', amount: 350 })
37
+ * .addItem({ name: 'Muffin', amount: 250 })
38
+ * .withTip(100)
39
+ * .build();
40
+ * ```
41
+ */
42
+ builder(locationId?: string): OrderBuilder;
43
+ /**
44
+ * Create an order directly (without builder)
45
+ *
46
+ * @param options - Order creation options
47
+ * @param locationId - Optional location ID
48
+ * @returns Created order
49
+ *
50
+ * @example
51
+ * ```typescript
52
+ * const order = await square.orders.create({
53
+ * lineItems: [
54
+ * { name: 'Coffee', amount: 350 },
55
+ * { catalogObjectId: 'ITEM_123', quantity: 2 },
56
+ * ],
57
+ * customerId: 'CUST_123',
58
+ * });
59
+ * ```
60
+ */
61
+ create(options: CreateOrderOptions, locationId?: string): Promise<Order>;
62
+ /**
63
+ * Get an order by ID
64
+ *
65
+ * @param orderId - Order ID
66
+ * @returns Order details
67
+ *
68
+ * @example
69
+ * ```typescript
70
+ * const order = await square.orders.get('ORDER_123');
71
+ * ```
72
+ */
73
+ get(orderId: string): Promise<Order>;
74
+ /**
75
+ * Update an order
76
+ *
77
+ * @param orderId - Order ID to update
78
+ * @param updates - Update fields
79
+ * @returns Updated order
80
+ */
81
+ update(orderId: string, updates: {
82
+ version: number;
83
+ referenceId?: string;
84
+ }, locationId?: string): Promise<Order>;
85
+ /**
86
+ * Pay for an order
87
+ *
88
+ * @param orderId - Order ID
89
+ * @param paymentIds - Payment IDs to apply
90
+ * @returns Updated order
91
+ *
92
+ * @example
93
+ * ```typescript
94
+ * const order = await square.orders.pay('ORDER_123', ['PAYMENT_456']);
95
+ * ```
96
+ */
97
+ pay(orderId: string, paymentIds: string[]): Promise<Order>;
98
+ /**
99
+ * Search for orders
100
+ *
101
+ * @param options - Search options
102
+ * @returns Paginated list of orders
103
+ *
104
+ * @example
105
+ * ```typescript
106
+ * const { data, cursor } = await square.orders.search({
107
+ * locationIds: ['LXXX'],
108
+ * limit: 10,
109
+ * });
110
+ * ```
111
+ */
112
+ search(options?: {
113
+ locationIds?: string[];
114
+ cursor?: string;
115
+ limit?: number;
116
+ }): Promise<{
117
+ data: Order[];
118
+ cursor?: string;
119
+ }>;
120
+ }
121
+ //# sourceMappingURL=orders.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orders.service.d.ts","sourceRoot":"","sources":["../../../src/core/services/orders.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG5D,OAAO,EAAE,YAAY,EAAE,KAAK,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAExE;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,aAAa;IAEtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBADlB,MAAM,EAAE,YAAY,EACpB,iBAAiB,CAAC,EAAE,MAAM,YAAA;IAG7C;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,YAAY;IAW1C;;;;;;;;;;;;;;;;;OAiBG;IACG,MAAM,CAAC,OAAO,EAAE,kBAAkB,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IA+B9E;;;;;;;;;;OAUG;IACG,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAc1C;;;;;;OAMG;IACG,MAAM,CACV,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,EACD,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,KAAK,CAAC;IA8BjB;;;;;;;;;;;OAWG;IACG,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC;IAkBhE;;;;;;;;;;;;;OAaG;IACG,MAAM,CAAC,OAAO,CAAC,EAAE;QACrB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAsBhD"}
@@ -0,0 +1,208 @@
1
+ import { parseSquareError, SquareValidationError } from '../errors.js';
2
+ import { createIdempotencyKey } from '../utils.js';
3
+ import { OrderBuilder } from '../builders/order.builder.js';
4
+ /**
5
+ * Orders service for managing Square orders
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * // Using the builder (recommended)
10
+ * const order = await square.orders
11
+ * .builder()
12
+ * .addItem({ name: 'Latte', amount: 450 })
13
+ * .withCustomer('CUST_123')
14
+ * .build();
15
+ *
16
+ * // Or create directly
17
+ * const order = await square.orders.create({
18
+ * lineItems: [{ name: 'Latte', amount: 450 }],
19
+ * });
20
+ * ```
21
+ */
22
+ export class OrdersService {
23
+ client;
24
+ defaultLocationId;
25
+ constructor(client, defaultLocationId) {
26
+ this.client = client;
27
+ this.defaultLocationId = defaultLocationId;
28
+ }
29
+ /**
30
+ * Create a new order builder
31
+ *
32
+ * @param locationId - Optional location ID (uses default if not provided)
33
+ * @returns Order builder instance
34
+ *
35
+ * @example
36
+ * ```typescript
37
+ * const order = await square.orders
38
+ * .builder()
39
+ * .addItem({ name: 'Coffee', amount: 350 })
40
+ * .addItem({ name: 'Muffin', amount: 250 })
41
+ * .withTip(100)
42
+ * .build();
43
+ * ```
44
+ */
45
+ builder(locationId) {
46
+ const location = locationId ?? this.defaultLocationId;
47
+ if (!location) {
48
+ throw new SquareValidationError('locationId is required. Set it in client config or provide it explicitly.', 'locationId');
49
+ }
50
+ return new OrderBuilder(this.client, location);
51
+ }
52
+ /**
53
+ * Create an order directly (without builder)
54
+ *
55
+ * @param options - Order creation options
56
+ * @param locationId - Optional location ID
57
+ * @returns Created order
58
+ *
59
+ * @example
60
+ * ```typescript
61
+ * const order = await square.orders.create({
62
+ * lineItems: [
63
+ * { name: 'Coffee', amount: 350 },
64
+ * { catalogObjectId: 'ITEM_123', quantity: 2 },
65
+ * ],
66
+ * customerId: 'CUST_123',
67
+ * });
68
+ * ```
69
+ */
70
+ async create(options, locationId) {
71
+ const location = locationId ?? this.defaultLocationId;
72
+ if (!location) {
73
+ throw new SquareValidationError('locationId is required. Set it in client config or provide it explicitly.', 'locationId');
74
+ }
75
+ if (options.lineItems.length === 0) {
76
+ throw new SquareValidationError('Order must have at least one line item', 'lineItems');
77
+ }
78
+ // Use builder internally for consistent validation
79
+ const builder = new OrderBuilder(this.client, location);
80
+ for (const item of options.lineItems) {
81
+ builder.addItem(item);
82
+ }
83
+ if (options.customerId) {
84
+ builder.withCustomer(options.customerId);
85
+ }
86
+ if (options.referenceId) {
87
+ builder.withReference(options.referenceId);
88
+ }
89
+ return builder.build();
90
+ }
91
+ /**
92
+ * Get an order by ID
93
+ *
94
+ * @param orderId - Order ID
95
+ * @returns Order details
96
+ *
97
+ * @example
98
+ * ```typescript
99
+ * const order = await square.orders.get('ORDER_123');
100
+ * ```
101
+ */
102
+ async get(orderId) {
103
+ try {
104
+ const response = await this.client.orders.get({ orderId });
105
+ if (!response.order) {
106
+ throw new Error('Order not found');
107
+ }
108
+ return response.order;
109
+ }
110
+ catch (error) {
111
+ throw parseSquareError(error);
112
+ }
113
+ }
114
+ /**
115
+ * Update an order
116
+ *
117
+ * @param orderId - Order ID to update
118
+ * @param updates - Update fields
119
+ * @returns Updated order
120
+ */
121
+ async update(orderId, updates, locationId) {
122
+ const location = locationId ?? this.defaultLocationId;
123
+ if (!location) {
124
+ throw new SquareValidationError('locationId is required. Set it in client config or provide it explicitly.', 'locationId');
125
+ }
126
+ try {
127
+ const response = await this.client.orders.update({
128
+ orderId,
129
+ order: {
130
+ locationId: location,
131
+ version: updates.version,
132
+ referenceId: updates.referenceId,
133
+ },
134
+ idempotencyKey: createIdempotencyKey(),
135
+ });
136
+ if (!response.order) {
137
+ throw new Error('Order update failed');
138
+ }
139
+ return response.order;
140
+ }
141
+ catch (error) {
142
+ throw parseSquareError(error);
143
+ }
144
+ }
145
+ /**
146
+ * Pay for an order
147
+ *
148
+ * @param orderId - Order ID
149
+ * @param paymentIds - Payment IDs to apply
150
+ * @returns Updated order
151
+ *
152
+ * @example
153
+ * ```typescript
154
+ * const order = await square.orders.pay('ORDER_123', ['PAYMENT_456']);
155
+ * ```
156
+ */
157
+ async pay(orderId, paymentIds) {
158
+ try {
159
+ const response = await this.client.orders.pay({
160
+ orderId,
161
+ idempotencyKey: createIdempotencyKey(),
162
+ paymentIds,
163
+ });
164
+ if (!response.order) {
165
+ throw new Error('Order payment failed');
166
+ }
167
+ return response.order;
168
+ }
169
+ catch (error) {
170
+ throw parseSquareError(error);
171
+ }
172
+ }
173
+ /**
174
+ * Search for orders
175
+ *
176
+ * @param options - Search options
177
+ * @returns Paginated list of orders
178
+ *
179
+ * @example
180
+ * ```typescript
181
+ * const { data, cursor } = await square.orders.search({
182
+ * locationIds: ['LXXX'],
183
+ * limit: 10,
184
+ * });
185
+ * ```
186
+ */
187
+ async search(options) {
188
+ try {
189
+ const locationIds = options?.locationIds ?? (this.defaultLocationId ? [this.defaultLocationId] : []);
190
+ if (locationIds.length === 0) {
191
+ throw new SquareValidationError('At least one locationId is required for search');
192
+ }
193
+ const response = await this.client.orders.search({
194
+ locationIds,
195
+ cursor: options?.cursor,
196
+ limit: options?.limit,
197
+ });
198
+ return {
199
+ data: (response.orders ?? []),
200
+ cursor: response.cursor,
201
+ };
202
+ }
203
+ catch (error) {
204
+ throw parseSquareError(error);
205
+ }
206
+ }
207
+ }
208
+ //# sourceMappingURL=orders.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orders.service.js","sourceRoot":"","sources":["../../../src/core/services/orders.service.ts"],"names":[],"mappings":"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"}