@smvtech/x-flux 1.1.13 → 1.1.15

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.d.mts CHANGED
@@ -5499,16 +5499,16 @@ declare function getSignedUrlFromAsset(docId: string): Promise<string | null>;
5499
5499
  declare function getDisplayableQuestions(questions: TEDCApplicant["questions"], questionAnswerSources: ANSWER_SOURCE[]): TEDCApplicant["questions"];
5500
5500
  declare function getDisplayableDocuments(questions: TEDCApplicant["questions"], documentAnswerSources: ANSWER_SOURCE[]): TEDCApplicant["questions"];
5501
5501
  declare function getValidationErrors(validations?: TAnswer["validations"] | null): ValidationResult;
5502
- declare function getValidationResult(question: TEDCApplicant["questions"][0], applicants?: Record<string, TEDCApplicant>): ValidationResult;
5503
- declare function validateApplicantQuestions(applicant: TEDCApplicant, questionAnswerSources: ANSWER_SOURCE[], applicants?: Record<string, TEDCApplicant>): Array<{
5502
+ declare function getValidationResult(question: TEDCApplicant["questions"][0]): ValidationResult;
5503
+ declare function validateApplicantQuestions(applicant: TEDCApplicant, questionAnswerSources: ANSWER_SOURCE[]): Array<{
5504
5504
  name: string;
5505
5505
  validationResult: ValidationResult;
5506
5506
  }>;
5507
- declare function validateApplicantDocuments(applicant: TEDCApplicant, documentAnswerSources: ANSWER_SOURCE[], applicants?: Record<string, TEDCApplicant>): Array<{
5507
+ declare function validateApplicantDocuments(applicant: TEDCApplicant, documentAnswerSources: ANSWER_SOURCE[]): Array<{
5508
5508
  name: string;
5509
5509
  validationResult: ValidationResult;
5510
5510
  }>;
5511
- declare function validateApplicant(applicant: TEDCApplicant, questionAnswerSources: ANSWER_SOURCE[], documentAnswerSources: ANSWER_SOURCE[], applicants?: Record<string, TEDCApplicant>): {
5511
+ declare function validateApplicant(applicant: TEDCApplicant, questionAnswerSources: ANSWER_SOURCE[], documentAnswerSources: ANSWER_SOURCE[]): {
5512
5512
  isComplete: boolean;
5513
5513
  questionValidations: Array<{
5514
5514
  name: string;
package/dist/index.d.ts CHANGED
@@ -5499,16 +5499,16 @@ declare function getSignedUrlFromAsset(docId: string): Promise<string | null>;
5499
5499
  declare function getDisplayableQuestions(questions: TEDCApplicant["questions"], questionAnswerSources: ANSWER_SOURCE[]): TEDCApplicant["questions"];
5500
5500
  declare function getDisplayableDocuments(questions: TEDCApplicant["questions"], documentAnswerSources: ANSWER_SOURCE[]): TEDCApplicant["questions"];
5501
5501
  declare function getValidationErrors(validations?: TAnswer["validations"] | null): ValidationResult;
5502
- declare function getValidationResult(question: TEDCApplicant["questions"][0], applicants?: Record<string, TEDCApplicant>): ValidationResult;
5503
- declare function validateApplicantQuestions(applicant: TEDCApplicant, questionAnswerSources: ANSWER_SOURCE[], applicants?: Record<string, TEDCApplicant>): Array<{
5502
+ declare function getValidationResult(question: TEDCApplicant["questions"][0]): ValidationResult;
5503
+ declare function validateApplicantQuestions(applicant: TEDCApplicant, questionAnswerSources: ANSWER_SOURCE[]): Array<{
5504
5504
  name: string;
5505
5505
  validationResult: ValidationResult;
5506
5506
  }>;
5507
- declare function validateApplicantDocuments(applicant: TEDCApplicant, documentAnswerSources: ANSWER_SOURCE[], applicants?: Record<string, TEDCApplicant>): Array<{
5507
+ declare function validateApplicantDocuments(applicant: TEDCApplicant, documentAnswerSources: ANSWER_SOURCE[]): Array<{
5508
5508
  name: string;
5509
5509
  validationResult: ValidationResult;
5510
5510
  }>;
5511
- declare function validateApplicant(applicant: TEDCApplicant, questionAnswerSources: ANSWER_SOURCE[], documentAnswerSources: ANSWER_SOURCE[], applicants?: Record<string, TEDCApplicant>): {
5511
+ declare function validateApplicant(applicant: TEDCApplicant, questionAnswerSources: ANSWER_SOURCE[], documentAnswerSources: ANSWER_SOURCE[]): {
5512
5512
  isComplete: boolean;
5513
5513
  questionValidations: Array<{
5514
5514
  name: string;
package/dist/index.js CHANGED
@@ -558,11 +558,6 @@ var extractDefaultAnswer = (value) => {
558
558
  const match = value.match(/^\{\{.*\}\}$/);
559
559
  return match ? match[0] : null;
560
560
  };
561
- var isDynamicApplicantAnswerEmpty = (answer, applicants) => {
562
- const match = answer.match(/^app_id_(.+)$/);
563
- if (!match) return false;
564
- return !(match[1] in applicants);
565
- };
566
561
  function getDisplayableQuestions(questions, questionAnswerSources) {
567
562
  return questions.filter((q) => {
568
563
  if (q.question.type === "DOCUMENT" /* DOCUMENT */) return false;
@@ -626,7 +621,7 @@ function getValidationErrors(validations) {
626
621
  totalTimeSaved
627
622
  };
628
623
  }
629
- function getValidationResult(question, applicants = {}) {
624
+ function getValidationResult(question) {
630
625
  const backendResult = getValidationErrors(question.answer_data?.validations);
631
626
  if (backendResult && backendResult.status !== "PERFECT" /* PERFECT */) {
632
627
  return backendResult;
@@ -635,7 +630,7 @@ function getValidationResult(question, applicants = {}) {
635
630
  const isDocument = question.question.type === "DOCUMENT" /* DOCUMENT */;
636
631
  const hasApproved = question.answer_data?.assets_id?.find((asset) => asset.status === "APPROVED");
637
632
  const answer = question.answer_data?.answer?.[0];
638
- const isAnswerEmpty = !answer || answer === "" || extractDefaultAnswer(answer) !== null || isDynamicApplicantAnswerEmpty(answer, applicants);
633
+ const isAnswerEmpty = !answer || answer === "" || extractDefaultAnswer(answer) !== null;
639
634
  if (isDocument && !hasApproved || !isDocument && isAnswerEmpty) {
640
635
  const answerRequiredItem = {
641
636
  error_text: isDocument ? "Please upload the required document" : "Answer cannot be empty",
@@ -660,11 +655,11 @@ function getValidationResult(question, applicants = {}) {
660
655
  totalTimeSaved: 0
661
656
  };
662
657
  }
663
- function validateApplicantQuestions(applicant, questionAnswerSources, applicants = {}) {
658
+ function validateApplicantQuestions(applicant, questionAnswerSources) {
664
659
  const displayableQuestions = getDisplayableQuestions(applicant.questions, questionAnswerSources);
665
660
  const questionValidations = [];
666
661
  displayableQuestions.forEach((question) => {
667
- const validationResult = getValidationResult(question, applicants);
662
+ const validationResult = getValidationResult(question);
668
663
  if (validationResult && (validationResult.status === "MISSING" /* MISSING */ || validationResult.status === "UNFIXABLE" /* UNFIXABLE */)) {
669
664
  questionValidations.push({
670
665
  name: question.question.question,
@@ -674,11 +669,11 @@ function validateApplicantQuestions(applicant, questionAnswerSources, applicants
674
669
  });
675
670
  return questionValidations;
676
671
  }
677
- function validateApplicantDocuments(applicant, documentAnswerSources, applicants = {}) {
672
+ function validateApplicantDocuments(applicant, documentAnswerSources) {
678
673
  const displayableDocuments = getDisplayableDocuments(applicant.questions, documentAnswerSources);
679
674
  const documentValidations = [];
680
675
  displayableDocuments.forEach((document) => {
681
- const validationResult = getValidationResult(document, applicants);
676
+ const validationResult = getValidationResult(document);
682
677
  if (validationResult && (validationResult.status === "MISSING" /* MISSING */ || validationResult.status === "UNFIXABLE" /* UNFIXABLE */)) {
683
678
  documentValidations.push({
684
679
  name: document.question.question,
@@ -688,9 +683,9 @@ function validateApplicantDocuments(applicant, documentAnswerSources, applicants
688
683
  });
689
684
  return documentValidations;
690
685
  }
691
- function validateApplicant(applicant, questionAnswerSources, documentAnswerSources, applicants = {}) {
692
- const questionValidations = validateApplicantQuestions(applicant, questionAnswerSources, applicants);
693
- const documentValidations = validateApplicantDocuments(applicant, documentAnswerSources, applicants);
686
+ function validateApplicant(applicant, questionAnswerSources, documentAnswerSources) {
687
+ const questionValidations = validateApplicantQuestions(applicant, questionAnswerSources);
688
+ const documentValidations = validateApplicantDocuments(applicant, documentAnswerSources);
694
689
  const applicantValidations = getValidationErrors(applicant.application?.validations);
695
690
  const hasBlockingIssues = questionValidations.some((q) => q.validationResult?.status === "MISSING" /* MISSING */ || q.validationResult?.status === "UNFIXABLE" /* UNFIXABLE */) || documentValidations.some((d) => d.validationResult?.status === "MISSING" /* MISSING */ || d.validationResult?.status === "UNFIXABLE" /* UNFIXABLE */) || applicantValidations?.status === "UNFIXABLE" /* UNFIXABLE */;
696
691
  return {
@@ -702,10 +697,9 @@ function validateApplicant(applicant, questionAnswerSources, documentAnswerSourc
702
697
  }
703
698
  function validateAllApplicants(applicants, questionAnswerSources, documentAnswerSources) {
704
699
  const applicantsArray = Array.isArray(applicants) ? applicants : Object.values(applicants);
705
- const applicantsRecord = Array.isArray(applicants) ? Object.fromEntries(applicants.map((a) => [a.application_id, a])) : applicants;
706
700
  const applicantValidations = [];
707
701
  applicantsArray.forEach((applicant) => {
708
- const validation = validateApplicant(applicant, questionAnswerSources, documentAnswerSources, applicantsRecord);
702
+ const validation = validateApplicant(applicant, questionAnswerSources, documentAnswerSources);
709
703
  if (!validation.isComplete) {
710
704
  const applicantName = getFullName(
711
705
  applicant.traveller.first_name,
@@ -1209,9 +1203,9 @@ var EDCFlowProvider = ({ children, orderId }) => {
1209
1203
  const { updatedQuestionnaire, updatedApplicants } = runApplicantSideEffects(applicants2, questionnaireData, dynamicMap);
1210
1204
  setQuestionnaire(updatedQuestionnaire);
1211
1205
  setApplicants(updatedApplicants);
1212
- const applicantIds = Object.keys(updatedApplicants);
1213
- if (applicantIds.length > 0) {
1214
- setActiveApplicant(applicantIds[0]);
1206
+ const ids = Object.keys(updatedApplicants);
1207
+ if (ids.length > 0) {
1208
+ setActiveApplicant(ids[0]);
1215
1209
  }
1216
1210
  }
1217
1211
  } catch (err) {
package/dist/index.mjs CHANGED
@@ -532,11 +532,6 @@ var extractDefaultAnswer = (value) => {
532
532
  const match = value.match(/^\{\{.*\}\}$/);
533
533
  return match ? match[0] : null;
534
534
  };
535
- var isDynamicApplicantAnswerEmpty = (answer, applicants) => {
536
- const match = answer.match(/^app_id_(.+)$/);
537
- if (!match) return false;
538
- return !(match[1] in applicants);
539
- };
540
535
  function getDisplayableQuestions(questions, questionAnswerSources) {
541
536
  return questions.filter((q) => {
542
537
  if (q.question.type === "DOCUMENT" /* DOCUMENT */) return false;
@@ -600,7 +595,7 @@ function getValidationErrors(validations) {
600
595
  totalTimeSaved
601
596
  };
602
597
  }
603
- function getValidationResult(question, applicants = {}) {
598
+ function getValidationResult(question) {
604
599
  const backendResult = getValidationErrors(question.answer_data?.validations);
605
600
  if (backendResult && backendResult.status !== "PERFECT" /* PERFECT */) {
606
601
  return backendResult;
@@ -609,7 +604,7 @@ function getValidationResult(question, applicants = {}) {
609
604
  const isDocument = question.question.type === "DOCUMENT" /* DOCUMENT */;
610
605
  const hasApproved = question.answer_data?.assets_id?.find((asset) => asset.status === "APPROVED");
611
606
  const answer = question.answer_data?.answer?.[0];
612
- const isAnswerEmpty = !answer || answer === "" || extractDefaultAnswer(answer) !== null || isDynamicApplicantAnswerEmpty(answer, applicants);
607
+ const isAnswerEmpty = !answer || answer === "" || extractDefaultAnswer(answer) !== null;
613
608
  if (isDocument && !hasApproved || !isDocument && isAnswerEmpty) {
614
609
  const answerRequiredItem = {
615
610
  error_text: isDocument ? "Please upload the required document" : "Answer cannot be empty",
@@ -634,11 +629,11 @@ function getValidationResult(question, applicants = {}) {
634
629
  totalTimeSaved: 0
635
630
  };
636
631
  }
637
- function validateApplicantQuestions(applicant, questionAnswerSources, applicants = {}) {
632
+ function validateApplicantQuestions(applicant, questionAnswerSources) {
638
633
  const displayableQuestions = getDisplayableQuestions(applicant.questions, questionAnswerSources);
639
634
  const questionValidations = [];
640
635
  displayableQuestions.forEach((question) => {
641
- const validationResult = getValidationResult(question, applicants);
636
+ const validationResult = getValidationResult(question);
642
637
  if (validationResult && (validationResult.status === "MISSING" /* MISSING */ || validationResult.status === "UNFIXABLE" /* UNFIXABLE */)) {
643
638
  questionValidations.push({
644
639
  name: question.question.question,
@@ -648,11 +643,11 @@ function validateApplicantQuestions(applicant, questionAnswerSources, applicants
648
643
  });
649
644
  return questionValidations;
650
645
  }
651
- function validateApplicantDocuments(applicant, documentAnswerSources, applicants = {}) {
646
+ function validateApplicantDocuments(applicant, documentAnswerSources) {
652
647
  const displayableDocuments = getDisplayableDocuments(applicant.questions, documentAnswerSources);
653
648
  const documentValidations = [];
654
649
  displayableDocuments.forEach((document) => {
655
- const validationResult = getValidationResult(document, applicants);
650
+ const validationResult = getValidationResult(document);
656
651
  if (validationResult && (validationResult.status === "MISSING" /* MISSING */ || validationResult.status === "UNFIXABLE" /* UNFIXABLE */)) {
657
652
  documentValidations.push({
658
653
  name: document.question.question,
@@ -662,9 +657,9 @@ function validateApplicantDocuments(applicant, documentAnswerSources, applicants
662
657
  });
663
658
  return documentValidations;
664
659
  }
665
- function validateApplicant(applicant, questionAnswerSources, documentAnswerSources, applicants = {}) {
666
- const questionValidations = validateApplicantQuestions(applicant, questionAnswerSources, applicants);
667
- const documentValidations = validateApplicantDocuments(applicant, documentAnswerSources, applicants);
660
+ function validateApplicant(applicant, questionAnswerSources, documentAnswerSources) {
661
+ const questionValidations = validateApplicantQuestions(applicant, questionAnswerSources);
662
+ const documentValidations = validateApplicantDocuments(applicant, documentAnswerSources);
668
663
  const applicantValidations = getValidationErrors(applicant.application?.validations);
669
664
  const hasBlockingIssues = questionValidations.some((q) => q.validationResult?.status === "MISSING" /* MISSING */ || q.validationResult?.status === "UNFIXABLE" /* UNFIXABLE */) || documentValidations.some((d) => d.validationResult?.status === "MISSING" /* MISSING */ || d.validationResult?.status === "UNFIXABLE" /* UNFIXABLE */) || applicantValidations?.status === "UNFIXABLE" /* UNFIXABLE */;
670
665
  return {
@@ -676,10 +671,9 @@ function validateApplicant(applicant, questionAnswerSources, documentAnswerSourc
676
671
  }
677
672
  function validateAllApplicants(applicants, questionAnswerSources, documentAnswerSources) {
678
673
  const applicantsArray = Array.isArray(applicants) ? applicants : Object.values(applicants);
679
- const applicantsRecord = Array.isArray(applicants) ? Object.fromEntries(applicants.map((a) => [a.application_id, a])) : applicants;
680
674
  const applicantValidations = [];
681
675
  applicantsArray.forEach((applicant) => {
682
- const validation = validateApplicant(applicant, questionAnswerSources, documentAnswerSources, applicantsRecord);
676
+ const validation = validateApplicant(applicant, questionAnswerSources, documentAnswerSources);
683
677
  if (!validation.isComplete) {
684
678
  const applicantName = getFullName(
685
679
  applicant.traveller.first_name,
@@ -1183,9 +1177,9 @@ var EDCFlowProvider = ({ children, orderId }) => {
1183
1177
  const { updatedQuestionnaire, updatedApplicants } = runApplicantSideEffects(applicants2, questionnaireData, dynamicMap);
1184
1178
  setQuestionnaire(updatedQuestionnaire);
1185
1179
  setApplicants(updatedApplicants);
1186
- const applicantIds = Object.keys(updatedApplicants);
1187
- if (applicantIds.length > 0) {
1188
- setActiveApplicant(applicantIds[0]);
1180
+ const ids = Object.keys(updatedApplicants);
1181
+ if (ids.length > 0) {
1182
+ setActiveApplicant(ids[0]);
1189
1183
  }
1190
1184
  }
1191
1185
  } catch (err) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smvtech/x-flux",
3
- "version": "1.1.13",
3
+ "version": "1.1.15",
4
4
  "description": "x-flux - A powerful React package for managing effective document collection flows, visa questionnaires, travellers, and applications",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",