@truesift/express 0.1.1 → 0.1.2

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 (2) hide show
  1. package/dist/index.js +94 -14
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -398,6 +398,28 @@ function requireSuccessTrue(record) {
398
398
  );
399
399
  }
400
400
  }
401
+ function hasOwnResponseField(record, fieldName) {
402
+ return Object.prototype.hasOwnProperty.call(record, fieldName);
403
+ }
404
+ function getResponsePayloadRecord(record, primaryFieldName) {
405
+ if (hasOwnResponseField(record, primaryFieldName)) {
406
+ return record;
407
+ }
408
+ const data = record["data"];
409
+ if (data === void 0) {
410
+ return record;
411
+ }
412
+ if (!isRecord(data)) {
413
+ throw createResponseError(
414
+ 'TrueSift API response field "data" must be an object when payload fields are nested.',
415
+ {
416
+ fieldName: "data",
417
+ expected: "object"
418
+ }
419
+ );
420
+ }
421
+ return data;
422
+ }
401
423
  function requireStringField(record, fieldName) {
402
424
  const value = record[fieldName];
403
425
  if (typeof value !== "string" || value.trim().length === 0) {
@@ -427,6 +449,16 @@ function optionalStringField(record, fieldName) {
427
449
  }
428
450
  return value.trim();
429
451
  }
452
+ function optionalStringFieldFromPayloadOrRoot(payloadRecord, rootRecord, fieldName) {
453
+ const payloadValue = optionalStringField(payloadRecord, fieldName);
454
+ if (payloadValue !== void 0) {
455
+ return payloadValue;
456
+ }
457
+ if (payloadRecord === rootRecord) {
458
+ return void 0;
459
+ }
460
+ return optionalStringField(rootRecord, fieldName);
461
+ }
430
462
  function requireFiniteNumberField(record, fieldName) {
431
463
  const value = record[fieldName];
432
464
  if (typeof value !== "number" || !Number.isFinite(value)) {
@@ -488,6 +520,16 @@ function optionalVerificationModeField(record, fieldName) {
488
520
  }
489
521
  );
490
522
  }
523
+ function optionalVerificationModeFieldFromPayloadOrRoot(payloadRecord, rootRecord, fieldName) {
524
+ const payloadValue = optionalVerificationModeField(payloadRecord, fieldName);
525
+ if (payloadValue !== void 0) {
526
+ return payloadValue;
527
+ }
528
+ if (payloadRecord === rootRecord) {
529
+ return void 0;
530
+ }
531
+ return optionalVerificationModeField(rootRecord, fieldName);
532
+ }
491
533
  function optionalDecisionField(record, fieldName) {
492
534
  const value = record[fieldName];
493
535
  if (value === void 0) {
@@ -495,10 +537,32 @@ function optionalDecisionField(record, fieldName) {
495
537
  }
496
538
  return normalizeDecision(value);
497
539
  }
498
- function getDecisionMetadata(record) {
499
- const mode = optionalVerificationModeField(record, "mode");
500
- const calculatedDecision = optionalDecisionField(record, "calculatedDecision");
501
- const effectiveDecision = optionalDecisionField(record, "effectiveDecision");
540
+ function optionalDecisionFieldFromPayloadOrRoot(payloadRecord, rootRecord, fieldName) {
541
+ const payloadValue = optionalDecisionField(payloadRecord, fieldName);
542
+ if (payloadValue !== void 0) {
543
+ return payloadValue;
544
+ }
545
+ if (payloadRecord === rootRecord) {
546
+ return void 0;
547
+ }
548
+ return optionalDecisionField(rootRecord, fieldName);
549
+ }
550
+ function getDecisionMetadata(payloadRecord, rootRecord) {
551
+ const mode = optionalVerificationModeFieldFromPayloadOrRoot(
552
+ payloadRecord,
553
+ rootRecord,
554
+ "mode"
555
+ );
556
+ const calculatedDecision = optionalDecisionFieldFromPayloadOrRoot(
557
+ payloadRecord,
558
+ rootRecord,
559
+ "calculatedDecision"
560
+ );
561
+ const effectiveDecision = optionalDecisionFieldFromPayloadOrRoot(
562
+ payloadRecord,
563
+ rootRecord,
564
+ "effectiveDecision"
565
+ );
502
566
  return {
503
567
  ...mode !== void 0 ? { mode } : {},
504
568
  ...calculatedDecision !== void 0 ? { calculatedDecision } : {},
@@ -508,12 +572,17 @@ function getDecisionMetadata(record) {
508
572
  function validateCreateChallengeResponse(response) {
509
573
  const record = requireRecord(response);
510
574
  requireSuccessTrue(record);
511
- const requestId = optionalStringField(record, "requestId");
575
+ const payloadRecord = getResponsePayloadRecord(record, "challengeId");
576
+ const requestId = optionalStringFieldFromPayloadOrRoot(
577
+ payloadRecord,
578
+ record,
579
+ "requestId"
580
+ );
512
581
  return {
513
582
  success: true,
514
- challengeId: requireStringField(record, "challengeId"),
515
- challengeToken: requireStringField(record, "challengeToken"),
516
- expiresAt: requireStringField(record, "expiresAt"),
583
+ challengeId: requireStringField(payloadRecord, "challengeId"),
584
+ challengeToken: requireStringField(payloadRecord, "challengeToken"),
585
+ expiresAt: requireStringField(payloadRecord, "expiresAt"),
517
586
  ...requestId !== void 0 ? { requestId } : {},
518
587
  raw: record
519
588
  };
@@ -521,16 +590,27 @@ function validateCreateChallengeResponse(response) {
521
590
  function validateVerifyChallengeResponse(response) {
522
591
  const record = requireRecord(response);
523
592
  requireSuccessTrue(record);
524
- const decision = normalizeDecision(requireStringField(record, "decision"));
593
+ const payloadRecord = getResponsePayloadRecord(record, "decision");
594
+ const decision = normalizeDecision(
595
+ requireStringField(payloadRecord, "decision")
596
+ );
525
597
  const decisionFlags = createDecisionFlags(decision);
526
- const metadata = getDecisionMetadata(record);
527
- const challengeId = optionalStringField(record, "challengeId");
528
- const requestId = optionalStringField(record, "requestId");
598
+ const metadata = getDecisionMetadata(payloadRecord, record);
599
+ const challengeId = optionalStringFieldFromPayloadOrRoot(
600
+ payloadRecord,
601
+ record,
602
+ "challengeId"
603
+ );
604
+ const requestId = optionalStringFieldFromPayloadOrRoot(
605
+ payloadRecord,
606
+ record,
607
+ "requestId"
608
+ );
529
609
  return {
530
610
  success: true,
531
611
  decision,
532
- score: requireFiniteNumberField(record, "score"),
533
- reasonCodes: optionalStringArrayField(record, "reasonCodes"),
612
+ score: requireFiniteNumberField(payloadRecord, "score"),
613
+ reasonCodes: optionalStringArrayField(payloadRecord, "reasonCodes"),
534
614
  ...challengeId !== void 0 ? { challengeId } : {},
535
615
  ...requestId !== void 0 ? { requestId } : {},
536
616
  ...metadata,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@truesift/express",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "Server-side TypeScript SDK client for TrueSift human verification API.",
5
5
  "type": "module",
6
6
  "license": "MIT",