@marqeta/ux-toolkit-sdk-javascript 2.9.1 → 2.10.1

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.
package/dist/index.js CHANGED
@@ -1767,6 +1767,9 @@ __export(src_exports, {
1767
1767
  reactNativeSdkJsContainer: function() {
1768
1768
  return reactNativeContainer;
1769
1769
  },
1770
+ refreshAccessToken: function() {
1771
+ return refreshAccessToken;
1772
+ },
1770
1773
  registerDeviceForPushNotifications: function() {
1771
1774
  return registerDeviceForPushNotifications;
1772
1775
  },
@@ -1842,6 +1845,9 @@ __export(src_exports, {
1842
1845
  verifyExternalAccount: function() {
1843
1846
  return verifyExternalAccount;
1844
1847
  },
1848
+ verifyOTP: function() {
1849
+ return verifyOTP;
1850
+ },
1845
1851
  wlaReactNativeSdkJsContainer: function() {
1846
1852
  return wlaReactNativeContainer;
1847
1853
  }
@@ -5471,7 +5477,7 @@ function checkHttpStandizedError(httpIsOk, data) {
5471
5477
  function _checkHttpStandizedError() {
5472
5478
  _checkHttpStandizedError = // src/http-client/utils/checkHttpStandardizedError.ts
5473
5479
  _async_to_generator(function(httpIsOk, data) {
5474
- var error2, stdError;
5480
+ var error2, stdError, oauthError;
5475
5481
  return _ts_generator(this, function(_state) {
5476
5482
  error2 = data === null || data === void 0 ? void 0 : data.error;
5477
5483
  if ((error2 === null || error2 === void 0 ? void 0 : error2.id) && (error2 === null || error2 === void 0 ? void 0 : error2.debug)) {
@@ -5481,6 +5487,10 @@ function _checkHttpStandizedError() {
5481
5487
  });
5482
5488
  throw stdError;
5483
5489
  }
5490
+ oauthError = data;
5491
+ if ((oauthError === null || oauthError === void 0 ? void 0 : oauthError.error) && (oauthError === null || oauthError === void 0 ? void 0 : oauthError.error_description) && !httpIsOk) {
5492
+ throw oauthError;
5493
+ }
5484
5494
  if (!httpIsOk) {
5485
5495
  throw new MqSDKError("Received HTTP response not OK - Non-standard Error");
5486
5496
  }
@@ -17086,6 +17096,60 @@ function _loginWithIdAndPassword() {
17086
17096
  return _loginWithIdAndPassword.apply(this, arguments);
17087
17097
  }
17088
17098
  __name(loginWithIdAndPassword, "loginWithIdAndPassword");
17099
+ function refreshAccessToken(request) {
17100
+ return _refreshAccessToken.apply(this, arguments);
17101
+ }
17102
+ function _refreshAccessToken() {
17103
+ _refreshAccessToken = // src/idp/base/interactors/refreshAccessToken.ts
17104
+ _async_to_generator(function(request) {
17105
+ var container2, idpService;
17106
+ return _ts_generator(this, function(_state) {
17107
+ switch(_state.label){
17108
+ case 0:
17109
+ container2 = getActiveIocContainer();
17110
+ idpService = container2.get(ITF_IDP_SERVICE);
17111
+ return [
17112
+ 4,
17113
+ idpService.refreshAccessToken(request)
17114
+ ];
17115
+ case 1:
17116
+ return [
17117
+ 2,
17118
+ _state.sent()
17119
+ ];
17120
+ }
17121
+ });
17122
+ });
17123
+ return _refreshAccessToken.apply(this, arguments);
17124
+ }
17125
+ __name(refreshAccessToken, "refreshAccessToken");
17126
+ function verifyOTP(request) {
17127
+ return _verifyOTP.apply(this, arguments);
17128
+ }
17129
+ function _verifyOTP() {
17130
+ _verifyOTP = // src/idp/base/interactors/verifyOTP.ts
17131
+ _async_to_generator(function(request) {
17132
+ var container2, idpService;
17133
+ return _ts_generator(this, function(_state) {
17134
+ switch(_state.label){
17135
+ case 0:
17136
+ container2 = getActiveIocContainer();
17137
+ idpService = container2.get(ITF_IDP_SERVICE);
17138
+ return [
17139
+ 4,
17140
+ idpService.otpVerification(request)
17141
+ ];
17142
+ case 1:
17143
+ return [
17144
+ 2,
17145
+ _state.sent()
17146
+ ];
17147
+ }
17148
+ });
17149
+ });
17150
+ return _verifyOTP.apply(this, arguments);
17151
+ }
17152
+ __name(verifyOTP, "verifyOTP");
17089
17153
  // src/idp/base/services/iIdpService.ts
17090
17154
  var import_inversify113 = require("inversify");
17091
17155
  function _ts_decorate89(decorators, target, key, desc) {
@@ -17130,6 +17194,17 @@ var _MockIdpService = /*#__PURE__*/ function(iIdpService) {
17130
17194
  refreshToken: "mock-refresh-token",
17131
17195
  idToken: "mock-id-token"
17132
17196
  });
17197
+ __publicField(_assert_this_initialized(_this), "mockRefreshResponse", {
17198
+ accessToken: "mock-refreshed-access-token",
17199
+ expiresIn: 3600,
17200
+ refreshToken: "mock-new-refresh-token",
17201
+ idToken: "mock-new-id-token"
17202
+ });
17203
+ __publicField(_assert_this_initialized(_this), "mockMfaRequiredResponse", {
17204
+ error: "mfa_required",
17205
+ error_description: "Mock MFA required response",
17206
+ oob_code: "mock-oob-code"
17207
+ });
17133
17208
  return _this;
17134
17209
  }
17135
17210
  _create_class(_MockIdpService, [
@@ -17161,6 +17236,48 @@ var _MockIdpService = /*#__PURE__*/ function(iIdpService) {
17161
17236
  })();
17162
17237
  }
17163
17238
  },
17239
+ {
17240
+ key: "refreshAccessToken",
17241
+ value: function refreshAccessToken(request) {
17242
+ var _this = this;
17243
+ return _async_to_generator(function() {
17244
+ return _ts_generator(this, function(_state) {
17245
+ return [
17246
+ 2,
17247
+ _this.mockRefreshResponse
17248
+ ];
17249
+ });
17250
+ })();
17251
+ }
17252
+ },
17253
+ {
17254
+ key: "handleMfaRequired",
17255
+ value: function handleMfaRequired(request) {
17256
+ var _this = this;
17257
+ return _async_to_generator(function() {
17258
+ return _ts_generator(this, function(_state) {
17259
+ return [
17260
+ 2,
17261
+ _this.mockMfaRequiredResponse
17262
+ ];
17263
+ });
17264
+ })();
17265
+ }
17266
+ },
17267
+ {
17268
+ key: "otpVerification",
17269
+ value: function otpVerification(request) {
17270
+ var _this = this;
17271
+ return _async_to_generator(function() {
17272
+ return _ts_generator(this, function(_state) {
17273
+ return [
17274
+ 2,
17275
+ _this.mockLoginResponse
17276
+ ];
17277
+ });
17278
+ })();
17279
+ }
17280
+ },
17164
17281
  {
17165
17282
  key: "setMockOtpResponse",
17166
17283
  value: function setMockOtpResponse(response) {
@@ -17172,6 +17289,18 @@ var _MockIdpService = /*#__PURE__*/ function(iIdpService) {
17172
17289
  value: function setMockLoginResponse(response) {
17173
17290
  this.mockLoginResponse = response;
17174
17291
  }
17292
+ },
17293
+ {
17294
+ key: "setMockRefreshResponse",
17295
+ value: function setMockRefreshResponse(response) {
17296
+ this.mockRefreshResponse = response;
17297
+ }
17298
+ },
17299
+ {
17300
+ key: "setMockMfaRequiredResponse",
17301
+ value: function setMockMfaRequiredResponse(response) {
17302
+ this.mockMfaRequiredResponse = response;
17303
+ }
17175
17304
  }
17176
17305
  ]);
17177
17306
  return _MockIdpService;
@@ -17194,21 +17323,17 @@ function _ts_metadata50(k, v) {
17194
17323
  if ((typeof Reflect === "undefined" ? "undefined" : _type_of(Reflect)) === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
17195
17324
  }
17196
17325
  __name(_ts_metadata50, "_ts_metadata");
17197
- function _ts_param(paramIndex, decorator) {
17198
- return function(target, key) {
17199
- decorator(target, key, paramIndex);
17200
- };
17201
- }
17202
- __name(_ts_param, "_ts_param");
17203
17326
  var _RestIdpService = /*#__PURE__*/ function(iIdpService) {
17204
17327
  _inherits(_RestIdpService, iIdpService);
17205
17328
  var _super = _create_super(_RestIdpService);
17206
- function _RestIdpService(httpClient) {
17329
+ function _RestIdpService() {
17207
17330
  _class_call_check(this, _RestIdpService);
17208
17331
  var _this;
17209
- _this = _super.call(this);
17332
+ _this = _super.call.apply(_super, [
17333
+ this
17334
+ ].concat(Array.prototype.slice.call(arguments)));
17210
17335
  __publicField(_assert_this_initialized(_this), "httpClient");
17211
- _this.httpClient = httpClient;
17336
+ __publicField(_assert_this_initialized(_this), "getEnvConfigValueByName");
17212
17337
  return _this;
17213
17338
  }
17214
17339
  _create_class(_RestIdpService, [
@@ -17254,11 +17379,18 @@ var _RestIdpService = /*#__PURE__*/ function(iIdpService) {
17254
17379
  value: function loginWithPassword(request) {
17255
17380
  var _this = this;
17256
17381
  return _async_to_generator(function() {
17257
- var url, response;
17382
+ var url, audience, response, error2, mfaResponse, error3;
17258
17383
  return _ts_generator(this, function(_state) {
17259
17384
  switch(_state.label){
17260
17385
  case 0:
17386
+ _state.trys.push([
17387
+ 0,
17388
+ 2,
17389
+ ,
17390
+ 9
17391
+ ]);
17261
17392
  url = "".concat(request.oauthBaseUrl, "/oauth/token");
17393
+ audience = _this.getEnvConfigValueByName.execute("CUI_API_BASE_URL");
17262
17394
  return [
17263
17395
  4,
17264
17396
  _this.httpClient.post(url, {
@@ -17271,7 +17403,102 @@ var _RestIdpService = /*#__PURE__*/ function(iIdpService) {
17271
17403
  username: request.identifier,
17272
17404
  password: request.password,
17273
17405
  client_id: request.clientId,
17274
- scope: "openid,profile,offline_access,cardholder:all"
17406
+ scope: "openid email profile offline_access cardholder:all",
17407
+ audience: audience
17408
+ })
17409
+ })
17410
+ ];
17411
+ case 1:
17412
+ response = _state.sent();
17413
+ return [
17414
+ 2,
17415
+ {
17416
+ accessToken: response.access_token,
17417
+ expiresIn: response.expires_in,
17418
+ refreshToken: response.refresh_token,
17419
+ idToken: response.id_token
17420
+ }
17421
+ ];
17422
+ case 2:
17423
+ error2 = _state.sent();
17424
+ if (!(error2.error === "mfa_required" && error2.mfa_token)) return [
17425
+ 3,
17426
+ 7
17427
+ ];
17428
+ _state.label = 3;
17429
+ case 3:
17430
+ _state.trys.push([
17431
+ 3,
17432
+ 5,
17433
+ ,
17434
+ 6
17435
+ ]);
17436
+ return [
17437
+ 4,
17438
+ _this.handleMfaRequired({
17439
+ oauthBaseUrl: request.oauthBaseUrl,
17440
+ mfa_token: error2.mfa_token,
17441
+ identifier: request.identifier,
17442
+ clientId: request.clientId
17443
+ })
17444
+ ];
17445
+ case 4:
17446
+ mfaResponse = _state.sent();
17447
+ throw {
17448
+ accessToken: "",
17449
+ expiresIn: 0,
17450
+ refreshToken: "",
17451
+ idToken: "",
17452
+ error: error2.error,
17453
+ error_description: mfaResponse.error_description,
17454
+ mfa_token: error2.mfa_token,
17455
+ oob_code: mfaResponse.oob_code
17456
+ };
17457
+ case 5:
17458
+ error3 = _state.sent();
17459
+ throw error3;
17460
+ case 6:
17461
+ return [
17462
+ 3,
17463
+ 8
17464
+ ];
17465
+ case 7:
17466
+ throw new Error(error2.error_description || error2.error);
17467
+ case 8:
17468
+ return [
17469
+ 3,
17470
+ 9
17471
+ ];
17472
+ case 9:
17473
+ return [
17474
+ 2
17475
+ ];
17476
+ }
17477
+ });
17478
+ })();
17479
+ }
17480
+ },
17481
+ {
17482
+ key: "refreshAccessToken",
17483
+ value: function refreshAccessToken(request) {
17484
+ var _this = this;
17485
+ return _async_to_generator(function() {
17486
+ var url, response;
17487
+ return _ts_generator(this, function(_state) {
17488
+ switch(_state.label){
17489
+ case 0:
17490
+ url = "".concat(request.oauthBaseUrl, "/oauth/token");
17491
+ return [
17492
+ 4,
17493
+ _this.httpClient.post(url, {
17494
+ method: "POST",
17495
+ headers: {
17496
+ "Content-Type": "application/json"
17497
+ },
17498
+ body: JSON.stringify({
17499
+ grant_type: "refresh_token",
17500
+ refresh_token: request.refreshToken,
17501
+ client_id: request.clientId
17275
17502
  })
17276
17503
  })
17277
17504
  ];
@@ -17290,19 +17517,128 @@ var _RestIdpService = /*#__PURE__*/ function(iIdpService) {
17290
17517
  });
17291
17518
  })();
17292
17519
  }
17520
+ },
17521
+ {
17522
+ key: "handleMfaRequired",
17523
+ value: function handleMfaRequired(request) {
17524
+ var _this = this;
17525
+ return _async_to_generator(function() {
17526
+ var otpRequest, error2;
17527
+ return _ts_generator(this, function(_state) {
17528
+ switch(_state.label){
17529
+ case 0:
17530
+ _state.trys.push([
17531
+ 0,
17532
+ 2,
17533
+ ,
17534
+ 3
17535
+ ]);
17536
+ if (!request.mfa_token) {
17537
+ throw new Error("MFA token is required for handling MFA");
17538
+ }
17539
+ return [
17540
+ 4,
17541
+ _this.requestOtpCode({
17542
+ mfaToken: request.mfa_token,
17543
+ oauthBaseUrl: request.oauthBaseUrl,
17544
+ clientId: request.clientId
17545
+ })
17546
+ ];
17547
+ case 1:
17548
+ otpRequest = _state.sent();
17549
+ return [
17550
+ 2,
17551
+ {
17552
+ error: "mfa_required",
17553
+ error_description: "Multi-factor authentication is required.",
17554
+ oob_code: otpRequest.oobCode
17555
+ }
17556
+ ];
17557
+ case 2:
17558
+ error2 = _state.sent();
17559
+ throw new Error("Error handling MFA requirement: " + error2.message);
17560
+ case 3:
17561
+ return [
17562
+ 2
17563
+ ];
17564
+ }
17565
+ });
17566
+ })();
17567
+ }
17568
+ },
17569
+ {
17570
+ key: "otpVerification",
17571
+ value: function otpVerification(request) {
17572
+ var _this = this;
17573
+ return _async_to_generator(function() {
17574
+ var url, response, error2;
17575
+ return _ts_generator(this, function(_state) {
17576
+ switch(_state.label){
17577
+ case 0:
17578
+ _state.trys.push([
17579
+ 0,
17580
+ 2,
17581
+ ,
17582
+ 3
17583
+ ]);
17584
+ url = "".concat(request.oauthBaseUrl, "/oauth/token");
17585
+ return [
17586
+ 4,
17587
+ _this.httpClient.post(url, {
17588
+ method: "POST",
17589
+ headers: {
17590
+ "Content-Type": "application/json"
17591
+ },
17592
+ body: JSON.stringify({
17593
+ // Auth0's token endpoint specifically looks for the exact string http://auth0.com/oauth/grant-type/mfa-oob to identify MFA OOB requests.
17594
+ grant_type: "http://auth0.com/oauth/grant-type/mfa-oob",
17595
+ client_id: request.clientId,
17596
+ mfa_token: request.mfaToken,
17597
+ oob_code: request.oobCode,
17598
+ binding_code: request.bindingCode
17599
+ })
17600
+ })
17601
+ ];
17602
+ case 1:
17603
+ response = _state.sent();
17604
+ return [
17605
+ 2,
17606
+ {
17607
+ accessToken: response.access_token,
17608
+ expiresIn: response.expires_in,
17609
+ refreshToken: response.refresh_token,
17610
+ idToken: response.id_token,
17611
+ tokenType: response.token_type,
17612
+ scope: response.scope
17613
+ }
17614
+ ];
17615
+ case 2:
17616
+ error2 = _state.sent();
17617
+ throw new Error("Error verifying OTP: " + error2.message);
17618
+ case 3:
17619
+ return [
17620
+ 2
17621
+ ];
17622
+ }
17623
+ });
17624
+ })();
17625
+ }
17293
17626
  }
17294
17627
  ]);
17295
17628
  return _RestIdpService;
17296
17629
  }(iIdpService);
17297
17630
  __name(_RestIdpService, "RestIdpService");
17298
17631
  var RestIdpService = _RestIdpService;
17632
+ _ts_decorate91([
17633
+ (0, import_inversify115.inject)(ITF_HTTP_CLIENT),
17634
+ _ts_metadata50("design:type", typeof iHttpClient === "undefined" ? Object : iHttpClient)
17635
+ ], RestIdpService.prototype, "httpClient", void 0);
17636
+ _ts_decorate91([
17637
+ (0, import_inversify115.inject)(INTR_GET_ENV_CONFIG_VALUE_BY_NAME),
17638
+ _ts_metadata50("design:type", typeof GetEnvConfigValueByName === "undefined" ? Object : GetEnvConfigValueByName)
17639
+ ], RestIdpService.prototype, "getEnvConfigValueByName", void 0);
17299
17640
  RestIdpService = _ts_decorate91([
17300
- (0, import_inversify115.injectable)(),
17301
- _ts_param(0, (0, import_inversify115.inject)(ITF_HTTP_CLIENT)),
17302
- _ts_metadata50("design:type", Function),
17303
- _ts_metadata50("design:paramtypes", [
17304
- typeof iHttpClient === "undefined" ? Object : iHttpClient
17305
- ])
17641
+ (0, import_inversify115.injectable)()
17306
17642
  ], RestIdpService);
17307
17643
  // src/idp/ioc/idpIOCModule.ts
17308
17644
  var import_inversify116 = require("inversify");
@@ -23289,6 +23625,7 @@ setActiveIocContainer(container);
23289
23625
  reactNativeCommonIOCModule: reactNativeCommonIOCModule,
23290
23626
  reactNativeFeatureFlagsIOCModule: reactNativeFeatureFlagsIOCModule,
23291
23627
  reactNativeSdkJsContainer: reactNativeSdkJsContainer,
23628
+ refreshAccessToken: refreshAccessToken,
23292
23629
  registerDeviceForPushNotifications: registerDeviceForPushNotifications,
23293
23630
  replaceWlaCard: replaceWlaCard,
23294
23631
  requestOtpCode: requestOtpCode,
@@ -23314,6 +23651,7 @@ setActiveIocContainer(container);
23314
23651
  updateExternalAccount: updateExternalAccount,
23315
23652
  usersIOCModule: usersIOCModule,
23316
23653
  verifyExternalAccount: verifyExternalAccount,
23654
+ verifyOTP: verifyOTP,
23317
23655
  wlaReactNativeSdkJsContainer: wlaReactNativeSdkJsContainer
23318
23656
  }); /*! Bundled license information:
23319
23657