@thorprovider/adapters 4.2.1 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/PROVIDER_IMPLEMENTATION_ANALYSIS.md +659 -0
  2. package/dist/index.d.mts +225 -387
  3. package/dist/index.d.ts +225 -387
  4. package/dist/index.js +613 -3062
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.mjs +609 -3052
  7. package/dist/index.mjs.map +1 -1
  8. package/docs/RETRY_SOLUTION_SUMMARY.md +26 -11
  9. package/docs/authentication.md +115 -62
  10. package/docs/capabilities-system.md +4 -2
  11. package/docs/category-customization.md +37 -29
  12. package/docs/fetch-reliability-solution.md +127 -278
  13. package/docs/getting-started.md +43 -29
  14. package/docs/profile-management.md +68 -38
  15. package/docs/services-overview.md +4 -2
  16. package/package.json +1 -1
  17. package/quick-reference.md +33 -0
  18. package/src/backend/factory.ts +1 -11
  19. package/src/factory/index.ts +74 -52
  20. package/src/index.ts +5 -15
  21. package/src/providers/index.ts +1 -16
  22. package/src/providers/medusa/admin.test.ts +404 -0
  23. package/src/providers/medusa/admin.ts +442 -0
  24. package/src/providers/medusa/auth.test.ts +137 -0
  25. package/src/providers/medusa/auth.ts +96 -1
  26. package/src/providers/medusa/index.ts +21 -1
  27. package/src/resilience/README.md +70 -48
  28. package/src/types/capabilities.types.ts +0 -250
  29. package/src/core/errors.js +0 -161
  30. package/src/core/fetch-utils.js +0 -240
  31. package/src/core/logger.js +0 -63
  32. package/src/metadata/channel-scope-validation.js +0 -136
  33. package/src/metadata/channel-scope.js +0 -174
  34. package/src/metadata/index.js +0 -31
  35. package/src/providers/bigcommerce/bigcommerce.ts +0 -6
  36. package/src/providers/bigcommerce/index.ts +0 -315
  37. package/src/providers/bigcommerce/transforms.ts +0 -227
  38. package/src/providers/magento/index.ts +0 -387
  39. package/src/providers/magento/magento.ts +0 -5
  40. package/src/providers/magento/queries.ts +0 -267
  41. package/src/providers/magento/transforms.ts +0 -249
  42. package/src/providers/medusa/auth.js +0 -601
  43. package/src/providers/medusa/index.js +0 -2485
  44. package/src/providers/medusa/payment.js +0 -265
  45. package/src/providers/medusa/transforms.js +0 -505
  46. package/src/providers/shopify/auth.ts +0 -402
  47. package/src/providers/shopify/index.ts +0 -444
  48. package/src/providers/shopify/mutations.ts +0 -247
  49. package/src/providers/shopify/queries.ts +0 -324
  50. package/src/providers/shopify/shopify.ts +0 -7
  51. package/src/providers/shopify/transforms.ts +0 -275
  52. package/src/providers/spree/index.ts +0 -344
  53. package/src/providers/spree/spree.ts +0 -5
  54. package/src/providers/spree/transforms.ts +0 -254
  55. package/src/providers/woocommerce/index.ts +0 -310
  56. package/src/providers/woocommerce/transforms.ts +0 -254
  57. package/src/providers/woocommerce/woocommerce.ts +0 -5
  58. package/src/types/capabilities.types.js +0 -141
  59. package/src/types/provider.js +0 -9
  60. 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;