@thorprovider/adapters 4.2.0 → 4.3.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 (56) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/PROVIDER_IMPLEMENTATION_ANALYSIS.md +659 -0
  3. package/README.md +19 -0
  4. package/dist/index.d.mts +249 -2
  5. package/dist/index.d.ts +249 -2
  6. package/dist/index.js +1450 -2
  7. package/dist/index.js.map +1 -1
  8. package/dist/index.mjs +1448 -2
  9. package/dist/index.mjs.map +1 -1
  10. package/docs/RETRY_SOLUTION_SUMMARY.md +26 -11
  11. package/docs/authentication.md +115 -62
  12. package/docs/capabilities-system.md +34 -2
  13. package/docs/category-customization.md +37 -29
  14. package/docs/fetch-reliability-solution.md +127 -278
  15. package/docs/getting-started.md +43 -29
  16. package/docs/profile-management.md +68 -38
  17. package/docs/providers-overview.md +14 -0
  18. package/docs/services-overview.md +20 -2
  19. package/package.json +10 -6
  20. package/quick-reference.md +34 -0
  21. package/src/factory/index.ts +4 -0
  22. package/src/index.ts +3 -0
  23. package/src/providers/index.ts +3 -0
  24. package/src/providers/medusa/admin.test.ts +404 -0
  25. package/src/providers/medusa/admin.ts +442 -0
  26. package/src/providers/medusa/auth.test.ts +137 -0
  27. package/src/providers/medusa/auth.ts +96 -1
  28. package/src/providers/medusa/index.ts +21 -1
  29. package/src/providers/shopify/auth.ts +6 -0
  30. package/src/providers/stelorder/client.test-helpers.ts +3 -0
  31. package/src/providers/stelorder/client.test.ts +58 -0
  32. package/src/providers/stelorder/client.ts +326 -0
  33. package/src/providers/stelorder/index.test.ts +48 -0
  34. package/src/providers/stelorder/index.ts +685 -0
  35. package/src/providers/stelorder/live-smoke.test.ts +54 -0
  36. package/src/providers/stelorder/transforms.test.ts +103 -0
  37. package/src/providers/stelorder/transforms.ts +631 -0
  38. package/src/resilience/README.md +70 -48
  39. package/src/types/capabilities.types.ts +51 -0
  40. package/vitest.config.ts +13 -0
  41. package/vitest.setup.ts +6 -0
  42. package/.turbo/turbo-build.log +0 -18
  43. package/dist/.tsbuildinfo +0 -1
  44. package/src/core/errors.js +0 -161
  45. package/src/core/fetch-utils.js +0 -240
  46. package/src/core/logger.js +0 -63
  47. package/src/metadata/channel-scope-validation.js +0 -136
  48. package/src/metadata/channel-scope.js +0 -174
  49. package/src/metadata/index.js +0 -31
  50. package/src/providers/medusa/auth.js +0 -601
  51. package/src/providers/medusa/index.js +0 -2485
  52. package/src/providers/medusa/payment.js +0 -265
  53. package/src/providers/medusa/transforms.js +0 -505
  54. package/src/types/capabilities.types.js +0 -141
  55. package/src/types/provider.js +0 -9
  56. package/src/utils/payment-utils.js +0 -152
@@ -1,601 +0,0 @@
1
- "use strict";
2
- /**
3
- * @fileoverview Medusa Authentication Provider
4
- * @module @thorprovider/adapters/providers/medusa/auth
5
- *
6
- * Implementation of AuthProvider for Medusa.js v2
7
- * Supports JWT and session-based authentication
8
- */
9
- var __assign = (this && this.__assign) || function () {
10
- __assign = Object.assign || function(t) {
11
- for (var s, i = 1, n = arguments.length; i < n; i++) {
12
- s = arguments[i];
13
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
14
- t[p] = s[p];
15
- }
16
- return t;
17
- };
18
- return __assign.apply(this, arguments);
19
- };
20
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
21
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
22
- return new (P || (P = Promise))(function (resolve, reject) {
23
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
24
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
25
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
26
- step((generator = generator.apply(thisArg, _arguments || [])).next());
27
- });
28
- };
29
- var __generator = (this && this.__generator) || function (thisArg, body) {
30
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
31
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
32
- function verb(n) { return function (v) { return step([n, v]); }; }
33
- function step(op) {
34
- if (f) throw new TypeError("Generator is already executing.");
35
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
36
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
37
- if (y = 0, t) op = [op[0] & 2, t.value];
38
- switch (op[0]) {
39
- case 0: case 1: t = op; break;
40
- case 4: _.label++; return { value: op[1], done: false };
41
- case 5: _.label++; y = op[1]; op = [0]; continue;
42
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
43
- default:
44
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
45
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
46
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
47
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
48
- if (t[2]) _.ops.pop();
49
- _.trys.pop(); continue;
50
- }
51
- op = body.call(thisArg, _);
52
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
53
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
54
- }
55
- };
56
- Object.defineProperty(exports, "__esModule", { value: true });
57
- exports.MedusaAuthProvider = void 0;
58
- var logger_1 = require("../../core/logger");
59
- var errors_1 = require("../../core/errors");
60
- var transforms_1 = require("./transforms");
61
- /**
62
- * Storage manager for authentication tokens
63
- */
64
- var AuthStorageManager = /** @class */ (function () {
65
- function AuthStorageManager(config) {
66
- var _a;
67
- this.storage = null;
68
- this.tokenKey = 'thor_auth_token';
69
- this.storageType = config.storage;
70
- this.storage = (_a = config.customStorage) !== null && _a !== void 0 ? _a : null;
71
- }
72
- AuthStorageManager.prototype.getToken = function () {
73
- return __awaiter(this, void 0, void 0, function () {
74
- return __generator(this, function (_a) {
75
- if (this.storage) {
76
- return [2 /*return*/, this.storage.getItem(this.tokenKey)];
77
- }
78
- if (typeof window === 'undefined') {
79
- // Server-side: no storage available
80
- return [2 /*return*/, null];
81
- }
82
- switch (this.storageType) {
83
- case 'localStorage':
84
- return [2 /*return*/, window.localStorage.getItem(this.tokenKey)];
85
- case 'sessionStorage':
86
- return [2 /*return*/, window.sessionStorage.getItem(this.tokenKey)];
87
- case 'cookie':
88
- // Cookies are handled automatically by fetch, just return null
89
- return [2 /*return*/, null];
90
- case 'memory':
91
- return [2 /*return*/, null];
92
- default:
93
- return [2 /*return*/, null];
94
- }
95
- return [2 /*return*/];
96
- });
97
- });
98
- };
99
- AuthStorageManager.prototype.setToken = function (token) {
100
- return __awaiter(this, void 0, void 0, function () {
101
- return __generator(this, function (_a) {
102
- switch (_a.label) {
103
- case 0:
104
- if (!this.storage) return [3 /*break*/, 2];
105
- return [4 /*yield*/, this.storage.setItem(this.tokenKey, token)];
106
- case 1:
107
- _a.sent();
108
- return [2 /*return*/];
109
- case 2:
110
- if (typeof window === 'undefined') {
111
- return [2 /*return*/];
112
- }
113
- switch (this.storageType) {
114
- case 'localStorage':
115
- window.localStorage.setItem(this.tokenKey, token);
116
- break;
117
- case 'sessionStorage':
118
- window.sessionStorage.setItem(this.tokenKey, token);
119
- break;
120
- case 'cookie':
121
- case 'memory':
122
- // No action needed for cookie (handled by SDK) or memory
123
- break;
124
- }
125
- return [2 /*return*/];
126
- }
127
- });
128
- });
129
- };
130
- AuthStorageManager.prototype.removeToken = function () {
131
- return __awaiter(this, void 0, void 0, function () {
132
- return __generator(this, function (_a) {
133
- switch (_a.label) {
134
- case 0:
135
- if (!this.storage) return [3 /*break*/, 2];
136
- return [4 /*yield*/, this.storage.removeItem(this.tokenKey)];
137
- case 1:
138
- _a.sent();
139
- return [2 /*return*/];
140
- case 2:
141
- if (typeof window === 'undefined') {
142
- return [2 /*return*/];
143
- }
144
- switch (this.storageType) {
145
- case 'localStorage':
146
- window.localStorage.removeItem(this.tokenKey);
147
- break;
148
- case 'sessionStorage':
149
- window.sessionStorage.removeItem(this.tokenKey);
150
- break;
151
- case 'cookie':
152
- case 'memory':
153
- // No action needed
154
- break;
155
- }
156
- return [2 /*return*/];
157
- }
158
- });
159
- });
160
- };
161
- return AuthStorageManager;
162
- }());
163
- /**
164
- * Medusa authentication provider implementation
165
- */
166
- var MedusaAuthProvider = /** @class */ (function () {
167
- function MedusaAuthProvider(sdk, authConfig, debug) {
168
- if (debug === void 0) { debug = false; }
169
- this.sdk = sdk;
170
- this.authConfig = authConfig;
171
- this.logger = (0, logger_1.createLogger)('MedusaAuthProvider', debug);
172
- this.storageManager = new AuthStorageManager(authConfig);
173
- this.logger.info('Medusa Auth Provider initialized', {
174
- method: authConfig.method,
175
- storage: authConfig.storage,
176
- });
177
- }
178
- // ========================================
179
- // Authentication Methods
180
- // ========================================
181
- MedusaAuthProvider.prototype.login = function (credentials) {
182
- return __awaiter(this, void 0, void 0, function () {
183
- var token, customer, error_1;
184
- return __generator(this, function (_a) {
185
- switch (_a.label) {
186
- case 0:
187
- this.logger.debug('login', { email: credentials.email });
188
- _a.label = 1;
189
- case 1:
190
- _a.trys.push([1, 6, , 7]);
191
- return [4 /*yield*/, this.sdk.auth.login('customer', 'emailpass', {
192
- email: credentials.email,
193
- password: credentials.password,
194
- })];
195
- case 2:
196
- token = _a.sent();
197
- // Check if token requires additional actions (OAuth flow)
198
- if (typeof token !== 'string') {
199
- this.logger.warn('Authentication requires additional actions', token);
200
- return [2 /*return*/, {
201
- requiresAction: true,
202
- redirectUrl: token.location,
203
- }];
204
- }
205
- if (!(this.authConfig.method === 'jwt')) return [3 /*break*/, 4];
206
- return [4 /*yield*/, this.storageManager.setToken(token)];
207
- case 3:
208
- _a.sent();
209
- _a.label = 4;
210
- case 4: return [4 /*yield*/, this.getCurrentCustomer()];
211
- case 5:
212
- customer = _a.sent();
213
- this.logger.info('Login successful', { customerId: customer === null || customer === void 0 ? void 0 : customer.id });
214
- return [2 /*return*/, {
215
- token: this.authConfig.method === 'jwt' ? token : undefined,
216
- customer: customer !== null && customer !== void 0 ? customer : undefined,
217
- }];
218
- case 6:
219
- error_1 = _a.sent();
220
- this.logger.error('Login failed', error_1);
221
- throw new errors_1.ProviderAPIError("Authentication failed: ".concat(error_1.message), 'LOGIN_FAILED', error_1);
222
- case 7: return [2 /*return*/];
223
- }
224
- });
225
- });
226
- };
227
- MedusaAuthProvider.prototype.register = function (data) {
228
- return __awaiter(this, void 0, void 0, function () {
229
- var token, customer, error_2;
230
- return __generator(this, function (_a) {
231
- switch (_a.label) {
232
- case 0:
233
- this.logger.debug('register', { email: data.email });
234
- _a.label = 1;
235
- case 1:
236
- _a.trys.push([1, 6, , 7]);
237
- return [4 /*yield*/, this.sdk.auth.register('customer', 'emailpass', {
238
- email: data.email,
239
- password: data.password,
240
- })];
241
- case 2:
242
- token = _a.sent();
243
- if (typeof token !== 'string') {
244
- throw new Error('Registration returned non-string token');
245
- }
246
- return [4 /*yield*/, this.sdk.store.customer.create({
247
- email: data.email,
248
- first_name: data.first_name,
249
- last_name: data.last_name,
250
- phone: data.phone,
251
- })];
252
- case 3:
253
- customer = (_a.sent()).customer;
254
- if (!(this.authConfig.method === 'jwt')) return [3 /*break*/, 5];
255
- return [4 /*yield*/, this.storageManager.setToken(token)];
256
- case 4:
257
- _a.sent();
258
- _a.label = 5;
259
- case 5:
260
- // Note: For session-based auth, the SDK automatically handles cookies
261
- // when auth.register() is called with auth.type='session' in SDK config
262
- this.logger.info('Registration successful', { customerId: customer.id });
263
- return [2 /*return*/, {
264
- token: this.authConfig.method === 'jwt' ? token : undefined,
265
- customer: (0, transforms_1.transformCustomer)(customer, customer.email),
266
- }];
267
- case 6:
268
- error_2 = _a.sent();
269
- this.logger.error('Registration failed', error_2);
270
- throw new errors_1.ProviderAPIError("Registration failed: ".concat(error_2.message), 'REGISTRATION_FAILED', error_2);
271
- case 7: return [2 /*return*/];
272
- }
273
- });
274
- });
275
- };
276
- MedusaAuthProvider.prototype.logout = function () {
277
- return __awaiter(this, void 0, void 0, function () {
278
- var error_3;
279
- return __generator(this, function (_a) {
280
- switch (_a.label) {
281
- case 0:
282
- this.logger.debug('logout');
283
- _a.label = 1;
284
- case 1:
285
- _a.trys.push([1, 5, , 6]);
286
- return [4 /*yield*/, this.storageManager.removeToken()];
287
- case 2:
288
- _a.sent();
289
- if (!(this.authConfig.method === 'session')) return [3 /*break*/, 4];
290
- return [4 /*yield*/, this.sdk.auth.logout()];
291
- case 3:
292
- _a.sent();
293
- _a.label = 4;
294
- case 4:
295
- this.logger.info('Logout successful');
296
- return [3 /*break*/, 6];
297
- case 5:
298
- error_3 = _a.sent();
299
- this.logger.error('Logout failed', error_3);
300
- return [3 /*break*/, 6];
301
- case 6: return [2 /*return*/];
302
- }
303
- });
304
- });
305
- };
306
- // ========================================
307
- // Password Management
308
- // ========================================
309
- MedusaAuthProvider.prototype.requestPasswordReset = function (email) {
310
- return __awaiter(this, void 0, void 0, function () {
311
- var error_4;
312
- return __generator(this, function (_a) {
313
- switch (_a.label) {
314
- case 0:
315
- this.logger.debug('requestPasswordReset', { email: email });
316
- _a.label = 1;
317
- case 1:
318
- _a.trys.push([1, 3, , 4]);
319
- return [4 /*yield*/, this.sdk.auth.resetPassword('customer', 'emailpass', {
320
- identifier: email,
321
- })];
322
- case 2:
323
- _a.sent();
324
- this.logger.info('Password reset email sent', { email: email });
325
- return [3 /*break*/, 4];
326
- case 3:
327
- error_4 = _a.sent();
328
- this.logger.error('Password reset request failed', error_4);
329
- throw new errors_1.ProviderAPIError("Password reset request failed: ".concat(error_4.message), 'PASSWORD_RESET_FAILED', error_4);
330
- case 4: return [2 /*return*/];
331
- }
332
- });
333
- });
334
- };
335
- MedusaAuthProvider.prototype.resetPassword = function (token, password, metadata) {
336
- return __awaiter(this, void 0, void 0, function () {
337
- var email, error_5;
338
- return __generator(this, function (_a) {
339
- switch (_a.label) {
340
- case 0:
341
- this.logger.debug('resetPassword', { hasMetadata: !!metadata });
342
- email = metadata === null || metadata === void 0 ? void 0 : metadata.email;
343
- if (!email) {
344
- throw new errors_1.ProviderAPIError('Email is required in metadata for Medusa password reset', 'MEDUSA_AUTH_PROVIDER', 400);
345
- }
346
- _a.label = 1;
347
- case 1:
348
- _a.trys.push([1, 3, , 4]);
349
- // Medusa v2.6+ API: email + password in body, token as 3rd param
350
- return [4 /*yield*/, this.sdk.auth.updateProvider('customer', 'emailpass', {
351
- email: email,
352
- password: password,
353
- }, token)];
354
- case 2:
355
- // Medusa v2.6+ API: email + password in body, token as 3rd param
356
- _a.sent();
357
- this.logger.info('Password reset successful');
358
- return [3 /*break*/, 4];
359
- case 3:
360
- error_5 = _a.sent();
361
- this.logger.error('Password reset failed', error_5);
362
- throw new errors_1.ProviderAPIError("Password reset failed: ".concat(error_5.message), 'PASSWORD_RESET_CONFIRM_FAILED', error_5);
363
- case 4: return [2 /*return*/];
364
- }
365
- });
366
- });
367
- };
368
- // ========================================
369
- // Session Management
370
- // ========================================
371
- MedusaAuthProvider.prototype.getCurrentCustomer = function () {
372
- return __awaiter(this, void 0, void 0, function () {
373
- var customer, error_6;
374
- return __generator(this, function (_a) {
375
- switch (_a.label) {
376
- case 0:
377
- this.logger.debug('getCurrentCustomer');
378
- _a.label = 1;
379
- case 1:
380
- _a.trys.push([1, 3, , 4]);
381
- return [4 /*yield*/, this.sdk.store.customer.retrieve()];
382
- case 2:
383
- customer = (_a.sent()).customer;
384
- if (!customer) {
385
- return [2 /*return*/, null];
386
- }
387
- return [2 /*return*/, (0, transforms_1.transformCustomer)(customer, customer.email)];
388
- case 3:
389
- error_6 = _a.sent();
390
- this.logger.debug('No authenticated customer');
391
- return [2 /*return*/, null];
392
- case 4: return [2 /*return*/];
393
- }
394
- });
395
- });
396
- };
397
- MedusaAuthProvider.prototype.updateCustomer = function (data) {
398
- return __awaiter(this, void 0, void 0, function () {
399
- var updateData, customer, error_7;
400
- return __generator(this, function (_a) {
401
- switch (_a.label) {
402
- case 0:
403
- this.logger.debug('updateCustomer');
404
- _a.label = 1;
405
- case 1:
406
- _a.trys.push([1, 3, , 4]);
407
- updateData = __assign({}, data);
408
- if (updateData.phone === null) {
409
- delete updateData.phone; // Medusa doesn't accept null, only undefined
410
- }
411
- return [4 /*yield*/, this.sdk.store.customer.update(updateData)];
412
- case 2:
413
- customer = (_a.sent()).customer;
414
- return [2 /*return*/, (0, transforms_1.transformCustomer)(customer, customer.email)];
415
- case 3:
416
- error_7 = _a.sent();
417
- this.logger.error('Update customer failed', error_7);
418
- throw new errors_1.ProviderAPIError("Failed to update customer: ".concat(error_7.message), 'UPDATE_CUSTOMER_FAILED', error_7);
419
- case 4: return [2 /*return*/];
420
- }
421
- });
422
- });
423
- };
424
- MedusaAuthProvider.prototype.isAuthenticated = function () {
425
- return __awaiter(this, void 0, void 0, function () {
426
- var customer;
427
- return __generator(this, function (_a) {
428
- switch (_a.label) {
429
- case 0: return [4 /*yield*/, this.getCurrentCustomer()];
430
- case 1:
431
- customer = _a.sent();
432
- return [2 /*return*/, customer !== null];
433
- }
434
- });
435
- });
436
- };
437
- MedusaAuthProvider.prototype.getAuthToken = function () {
438
- // For JWT auth, return stored token
439
- if (this.authConfig.method === 'jwt') {
440
- // This is sync, so we can't use async storage
441
- // Return null and rely on storage manager
442
- return null;
443
- }
444
- // For session auth, return null (cookies are handled automatically)
445
- return null;
446
- };
447
- // ========================================
448
- // Address Management
449
- // ========================================
450
- MedusaAuthProvider.prototype.getAddresses = function () {
451
- return __awaiter(this, void 0, void 0, function () {
452
- var addresses, error_8;
453
- return __generator(this, function (_a) {
454
- switch (_a.label) {
455
- case 0:
456
- this.logger.debug('getAddresses');
457
- _a.label = 1;
458
- case 1:
459
- _a.trys.push([1, 3, , 4]);
460
- return [4 /*yield*/, this.sdk.store.customer.listAddress()];
461
- case 2:
462
- addresses = (_a.sent()).addresses;
463
- return [2 /*return*/, addresses.map(function (address) { return (0, transforms_1.transformAddress)(address); })];
464
- case 3:
465
- error_8 = _a.sent();
466
- this.logger.error('Get addresses failed', error_8);
467
- throw new errors_1.ProviderAPIError("Failed to get addresses: ".concat(error_8.message), 'GET_ADDRESSES_FAILED', error_8);
468
- case 4: return [2 /*return*/];
469
- }
470
- });
471
- });
472
- };
473
- MedusaAuthProvider.prototype.createAddress = function (data) {
474
- return __awaiter(this, void 0, void 0, function () {
475
- var medusaData, customer, addresses, address, error_9;
476
- return __generator(this, function (_a) {
477
- switch (_a.label) {
478
- case 0:
479
- this.logger.debug('createAddress');
480
- _a.label = 1;
481
- case 1:
482
- _a.trys.push([1, 3, , 4]);
483
- medusaData = {
484
- first_name: data.firstName,
485
- last_name: data.lastName,
486
- company: data.company,
487
- address_1: data.address1,
488
- address_2: data.address2,
489
- city: data.city,
490
- province: data.province,
491
- postal_code: data.postalCode,
492
- country_code: data.countryCode,
493
- phone: data.phone,
494
- metadata: data.metadata,
495
- };
496
- return [4 /*yield*/, this.sdk.store.customer.createAddress(medusaData)];
497
- case 2:
498
- customer = (_a.sent()).customer;
499
- addresses = customer.addresses || [];
500
- address = addresses[addresses.length - 1];
501
- if (!address) {
502
- throw new Error('No address returned from createAddress');
503
- }
504
- return [2 /*return*/, (0, transforms_1.transformAddress)(address)];
505
- case 3:
506
- error_9 = _a.sent();
507
- this.logger.error('Create address failed', error_9);
508
- throw new errors_1.ProviderAPIError("Failed to create address: ".concat(error_9.message), 'CREATE_ADDRESS_FAILED', error_9);
509
- case 4: return [2 /*return*/];
510
- }
511
- });
512
- });
513
- };
514
- MedusaAuthProvider.prototype.updateAddress = function (addressId, data) {
515
- return __awaiter(this, void 0, void 0, function () {
516
- var medusaData, customer, addresses, address, error_10;
517
- return __generator(this, function (_a) {
518
- switch (_a.label) {
519
- case 0:
520
- this.logger.debug('updateAddress', { addressId: addressId });
521
- _a.label = 1;
522
- case 1:
523
- _a.trys.push([1, 3, , 4]);
524
- medusaData = {};
525
- if (data.firstName !== undefined)
526
- medusaData.first_name = data.firstName;
527
- if (data.lastName !== undefined)
528
- medusaData.last_name = data.lastName;
529
- if (data.company !== undefined)
530
- medusaData.company = data.company;
531
- if (data.address1 !== undefined)
532
- medusaData.address_1 = data.address1;
533
- if (data.address2 !== undefined)
534
- medusaData.address_2 = data.address2;
535
- if (data.city !== undefined)
536
- medusaData.city = data.city;
537
- if (data.province !== undefined)
538
- medusaData.province = data.province;
539
- if (data.postalCode !== undefined)
540
- medusaData.postal_code = data.postalCode;
541
- if (data.countryCode !== undefined)
542
- medusaData.country_code = data.countryCode;
543
- if (data.phone !== undefined)
544
- medusaData.phone = data.phone;
545
- if (data.metadata !== undefined)
546
- medusaData.metadata = data.metadata;
547
- return [4 /*yield*/, this.sdk.store.customer.updateAddress(addressId, medusaData)];
548
- case 2:
549
- customer = (_a.sent()).customer;
550
- addresses = customer.addresses || [];
551
- address = addresses.find(function (addr) { return addr.id === addressId; });
552
- if (!address) {
553
- throw new Error("Address ".concat(addressId, " not found after update"));
554
- }
555
- return [2 /*return*/, (0, transforms_1.transformAddress)(address)];
556
- case 3:
557
- error_10 = _a.sent();
558
- this.logger.error('Update address failed', error_10);
559
- throw new errors_1.ProviderAPIError("Failed to update address: ".concat(error_10.message), 'UPDATE_ADDRESS_FAILED', error_10);
560
- case 4: return [2 /*return*/];
561
- }
562
- });
563
- });
564
- };
565
- MedusaAuthProvider.prototype.deleteAddress = function (addressId) {
566
- return __awaiter(this, void 0, void 0, function () {
567
- var error_11;
568
- return __generator(this, function (_a) {
569
- switch (_a.label) {
570
- case 0:
571
- this.logger.debug('deleteAddress', { addressId: addressId });
572
- _a.label = 1;
573
- case 1:
574
- _a.trys.push([1, 3, , 4]);
575
- return [4 /*yield*/, this.sdk.store.customer.deleteAddress(addressId)];
576
- case 2:
577
- _a.sent();
578
- this.logger.info('Address deleted', { addressId: addressId });
579
- return [3 /*break*/, 4];
580
- case 3:
581
- error_11 = _a.sent();
582
- this.logger.error('Delete address failed', error_11);
583
- throw new errors_1.ProviderAPIError("Failed to delete address: ".concat(error_11.message), 'DELETE_ADDRESS_FAILED', error_11);
584
- case 4: return [2 /*return*/];
585
- }
586
- });
587
- });
588
- };
589
- MedusaAuthProvider.prototype.deleteCustomerAccount = function () {
590
- return __awaiter(this, void 0, void 0, function () {
591
- return __generator(this, function (_a) {
592
- this.logger.debug('deleteCustomerAccount');
593
- // TODO: Implement when custom Medusa backend endpoint is ready
594
- // DELETE /store/customers/me
595
- throw new errors_1.ProviderAPIError('Delete customer account is not yet implemented. Requires custom Medusa backend endpoint.', 'NOT_IMPLEMENTED', undefined);
596
- });
597
- });
598
- };
599
- return MedusaAuthProvider;
600
- }());
601
- exports.MedusaAuthProvider = MedusaAuthProvider;