@transcend-io/cli 8.33.0 → 8.34.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 (123) hide show
  1. package/README.md +18 -17
  2. package/dist/{api-keys-CeNcWGoF.cjs → api-keys-CDp8NUhN.cjs} +2 -2
  3. package/dist/{api-keys-CeNcWGoF.cjs.map → api-keys-CDp8NUhN.cjs.map} +1 -1
  4. package/dist/{app-DcXc-oSw.cjs → app-rVGy2Ks-.cjs} +18 -18
  5. package/dist/app-rVGy2Ks-.cjs.map +1 -0
  6. package/dist/bin/bash-complete.cjs +1 -1
  7. package/dist/bin/cli.cjs +1 -1
  8. package/dist/bin/deprecated-command.cjs +1 -1
  9. package/dist/{code-scanning-CkCFWUcH.cjs → code-scanning-BwfVNIHr.cjs} +2 -2
  10. package/dist/{code-scanning-CkCFWUcH.cjs.map → code-scanning-BwfVNIHr.cjs.map} +1 -1
  11. package/dist/{command-D5Fq3lQQ.cjs → command-3fhEz5PC.cjs} +2 -2
  12. package/dist/{command-D5Fq3lQQ.cjs.map → command-3fhEz5PC.cjs.map} +1 -1
  13. package/dist/{consent-manager-BX6ZnSbw.cjs → consent-manager-DXWjvCtI.cjs} +2 -2
  14. package/dist/{consent-manager-BX6ZnSbw.cjs.map → consent-manager-DXWjvCtI.cjs.map} +1 -1
  15. package/dist/{constants-BD9ZSD52.cjs → constants-B-TmLA0w.cjs} +2 -2
  16. package/dist/{constants-BD9ZSD52.cjs.map → constants-B-TmLA0w.cjs.map} +1 -1
  17. package/dist/{cron-D1F4Wo3v.cjs → cron-DQHN57v7.cjs} +2 -2
  18. package/dist/{cron-D1F4Wo3v.cjs.map → cron-DQHN57v7.cjs.map} +1 -1
  19. package/dist/{data-inventory-DWDKRQdc.cjs → data-inventory-flXV6qPl.cjs} +2 -2
  20. package/dist/{data-inventory-DWDKRQdc.cjs.map → data-inventory-flXV6qPl.cjs.map} +1 -1
  21. package/dist/{dataFlowsToDataSilos-Cgf4hNWx.cjs → dataFlowsToDataSilos-Lk7WQ39V.cjs} +2 -2
  22. package/dist/{dataFlowsToDataSilos-Cgf4hNWx.cjs.map → dataFlowsToDataSilos-Lk7WQ39V.cjs.map} +1 -1
  23. package/dist/{impl-C-7OtS7U.cjs → impl-2u3q0rji.cjs} +2 -2
  24. package/dist/{impl-C-7OtS7U.cjs.map → impl-2u3q0rji.cjs.map} +1 -1
  25. package/dist/{impl-Cin6Sm_A.cjs → impl-3ih-x09b.cjs} +2 -2
  26. package/dist/{impl-Cin6Sm_A.cjs.map → impl-3ih-x09b.cjs.map} +1 -1
  27. package/dist/{impl-BbzXYtNe.cjs → impl-80GXtjmz.cjs} +2 -2
  28. package/dist/{impl-BbzXYtNe.cjs.map → impl-80GXtjmz.cjs.map} +1 -1
  29. package/dist/{impl-DzhRBdKP.cjs → impl-8PlQ3Cvy.cjs} +2 -2
  30. package/dist/{impl-DzhRBdKP.cjs.map → impl-8PlQ3Cvy.cjs.map} +1 -1
  31. package/dist/{impl-DsxQG1dX.cjs → impl-B1p9GNrM.cjs} +2 -2
  32. package/dist/{impl-DsxQG1dX.cjs.map → impl-B1p9GNrM.cjs.map} +1 -1
  33. package/dist/{impl-yHnQQ2CQ.cjs → impl-B4iI3rcF.cjs} +2 -2
  34. package/dist/{impl-yHnQQ2CQ.cjs.map → impl-B4iI3rcF.cjs.map} +1 -1
  35. package/dist/{impl-BIKOcvus.cjs → impl-B6qG10UZ.cjs} +2 -2
  36. package/dist/{impl-BIKOcvus.cjs.map → impl-B6qG10UZ.cjs.map} +1 -1
  37. package/dist/{impl-DM1304bO.cjs → impl-BJ8i_gqQ.cjs} +2 -2
  38. package/dist/{impl-DM1304bO.cjs.map → impl-BJ8i_gqQ.cjs.map} +1 -1
  39. package/dist/{impl-CVfl7uBT.cjs → impl-BZc5cmdE.cjs} +2 -2
  40. package/dist/{impl-CVfl7uBT.cjs.map → impl-BZc5cmdE.cjs.map} +1 -1
  41. package/dist/{impl-CGyUqfRC.cjs → impl-Bc9DMV-V.cjs} +2 -2
  42. package/dist/{impl-CGyUqfRC.cjs.map → impl-Bc9DMV-V.cjs.map} +1 -1
  43. package/dist/{impl-CbgeX1jH.cjs → impl-BjsBvvGF.cjs} +2 -2
  44. package/dist/{impl-CbgeX1jH.cjs.map → impl-BjsBvvGF.cjs.map} +1 -1
  45. package/dist/{impl-B5OPMsjg.cjs → impl-BqyO4vYa.cjs} +2 -2
  46. package/dist/{impl-B5OPMsjg.cjs.map → impl-BqyO4vYa.cjs.map} +1 -1
  47. package/dist/{impl-B6BUB0mM.cjs → impl-Bsqlw8_g.cjs} +2 -2
  48. package/dist/{impl-B6BUB0mM.cjs.map → impl-Bsqlw8_g.cjs.map} +1 -1
  49. package/dist/{impl-CUv-uEcw.cjs → impl-BuJNWbOW.cjs} +2 -2
  50. package/dist/{impl-CUv-uEcw.cjs.map → impl-BuJNWbOW.cjs.map} +1 -1
  51. package/dist/{impl-BHn8Xyv1.cjs → impl-C2_oQebA.cjs} +2 -2
  52. package/dist/{impl-BHn8Xyv1.cjs.map → impl-C2_oQebA.cjs.map} +1 -1
  53. package/dist/{impl-C90tUCre.cjs → impl-CCeEUy6z.cjs} +2 -2
  54. package/dist/{impl-C90tUCre.cjs.map → impl-CCeEUy6z.cjs.map} +1 -1
  55. package/dist/impl-CUkxcZrf.cjs +2 -0
  56. package/dist/impl-CUkxcZrf.cjs.map +1 -0
  57. package/dist/{impl-BDnouOC0.cjs → impl-CZmlwib3.cjs} +2 -2
  58. package/dist/{impl-BDnouOC0.cjs.map → impl-CZmlwib3.cjs.map} +1 -1
  59. package/dist/{impl-D5hff3ap.cjs → impl-CaSO2LPb.cjs} +2 -2
  60. package/dist/{impl-D5hff3ap.cjs.map → impl-CaSO2LPb.cjs.map} +1 -1
  61. package/dist/{impl-Dp8YKwTO.cjs → impl-CaUSDPuW.cjs} +2 -2
  62. package/dist/{impl-Dp8YKwTO.cjs.map → impl-CaUSDPuW.cjs.map} +1 -1
  63. package/dist/{impl-oR9gq6xk.cjs → impl-Cc-Lfiig.cjs} +2 -2
  64. package/dist/{impl-oR9gq6xk.cjs.map → impl-Cc-Lfiig.cjs.map} +1 -1
  65. package/dist/{impl-BsGJeF__.cjs → impl-CpoSlP1o.cjs} +2 -2
  66. package/dist/{impl-BsGJeF__.cjs.map → impl-CpoSlP1o.cjs.map} +1 -1
  67. package/dist/{impl-CTL3WMFF.cjs → impl-CrsHy3BZ.cjs} +2 -2
  68. package/dist/{impl-CTL3WMFF.cjs.map → impl-CrsHy3BZ.cjs.map} +1 -1
  69. package/dist/{impl-B4qjQXOd.cjs → impl-CtMVi5m1.cjs} +2 -2
  70. package/dist/{impl-B4qjQXOd.cjs.map → impl-CtMVi5m1.cjs.map} +1 -1
  71. package/dist/{impl-DS6F9y25.cjs → impl-Cw7Jxx0V.cjs} +2 -2
  72. package/dist/{impl-DS6F9y25.cjs.map → impl-Cw7Jxx0V.cjs.map} +1 -1
  73. package/dist/{impl-CxdbiV2X.cjs → impl-CwPRkBc0.cjs} +2 -2
  74. package/dist/{impl-CxdbiV2X.cjs.map → impl-CwPRkBc0.cjs.map} +1 -1
  75. package/dist/{impl-D3zjP2ku.cjs → impl-CzO7dqsL.cjs} +2 -2
  76. package/dist/{impl-D3zjP2ku.cjs.map → impl-CzO7dqsL.cjs.map} +1 -1
  77. package/dist/{impl-iq1sVHav.cjs → impl-D0r4dSxM.cjs} +2 -2
  78. package/dist/{impl-iq1sVHav.cjs.map → impl-D0r4dSxM.cjs.map} +1 -1
  79. package/dist/{impl-BMRqCmae.cjs → impl-DBnRvkUi.cjs} +2 -2
  80. package/dist/{impl-BMRqCmae.cjs.map → impl-DBnRvkUi.cjs.map} +1 -1
  81. package/dist/{impl-kVQqDHo_.cjs → impl-DOmKR8yz.cjs} +2 -2
  82. package/dist/{impl-kVQqDHo_.cjs.map → impl-DOmKR8yz.cjs.map} +1 -1
  83. package/dist/{impl-BbW2KaPV.cjs → impl-DX7gLoTo.cjs} +2 -2
  84. package/dist/{impl-BbW2KaPV.cjs.map → impl-DX7gLoTo.cjs.map} +1 -1
  85. package/dist/{impl-rnU7yUjG.cjs → impl-DcQ_HfDZ.cjs} +2 -2
  86. package/dist/{impl-rnU7yUjG.cjs.map → impl-DcQ_HfDZ.cjs.map} +1 -1
  87. package/dist/{impl-BuWbatdy.cjs → impl-DjTjLgew.cjs} +2 -2
  88. package/dist/{impl-BuWbatdy.cjs.map → impl-DjTjLgew.cjs.map} +1 -1
  89. package/dist/{impl-YgCkAZKW.cjs → impl-DoP4FUJI.cjs} +2 -2
  90. package/dist/{impl-YgCkAZKW.cjs.map → impl-DoP4FUJI.cjs.map} +1 -1
  91. package/dist/{impl-DFFHnEfz.cjs → impl-DrNWIvMG.cjs} +2 -2
  92. package/dist/{impl-DFFHnEfz.cjs.map → impl-DrNWIvMG.cjs.map} +1 -1
  93. package/dist/{impl-DKLcpd4u.cjs → impl-DvlAq8xf.cjs} +2 -2
  94. package/dist/{impl-DKLcpd4u.cjs.map → impl-DvlAq8xf.cjs.map} +1 -1
  95. package/dist/{impl-CZhxfPM5.cjs → impl-E1vzeNmp.cjs} +2 -2
  96. package/dist/{impl-CZhxfPM5.cjs.map → impl-E1vzeNmp.cjs.map} +1 -1
  97. package/dist/{impl-kcqjjB9c.cjs → impl-EEKe6HmF.cjs} +2 -2
  98. package/dist/{impl-kcqjjB9c.cjs.map → impl-EEKe6HmF.cjs.map} +1 -1
  99. package/dist/{impl-C_OukxEb.cjs → impl-NdV_MRsm.cjs} +2 -2
  100. package/dist/{impl-C_OukxEb.cjs.map → impl-NdV_MRsm.cjs.map} +1 -1
  101. package/dist/{impl-CjYWoHKD.cjs → impl-TQVXJemY.cjs} +2 -2
  102. package/dist/{impl-CjYWoHKD.cjs.map → impl-TQVXJemY.cjs.map} +1 -1
  103. package/dist/{impl-PFoDCPAv.cjs → impl-b6KwZ74o.cjs} +2 -2
  104. package/dist/{impl-PFoDCPAv.cjs.map → impl-b6KwZ74o.cjs.map} +1 -1
  105. package/dist/{impl-C9fSANNl.cjs → impl-t_fZSUcj.cjs} +2 -2
  106. package/dist/{impl-C9fSANNl.cjs.map → impl-t_fZSUcj.cjs.map} +1 -1
  107. package/dist/index.cjs +1 -1
  108. package/dist/index.d.cts +62 -62
  109. package/dist/{manual-enrichment-CYHP0rrX.cjs → manual-enrichment-Y_BQaSZQ.cjs} +2 -2
  110. package/dist/{manual-enrichment-CYHP0rrX.cjs.map → manual-enrichment-Y_BQaSZQ.cjs.map} +1 -1
  111. package/dist/{pooling-BxR5ih0w.cjs → pooling-Ct83vfEh.cjs} +2 -2
  112. package/dist/{pooling-BxR5ih0w.cjs.map → pooling-Ct83vfEh.cjs.map} +1 -1
  113. package/dist/{preference-management-ChwQxoo8.cjs → preference-management-5uJDKuMK.cjs} +3 -3
  114. package/dist/{preference-management-ChwQxoo8.cjs.map → preference-management-5uJDKuMK.cjs.map} +1 -1
  115. package/dist/{syncConfigurationToTranscend-B9c2w6d0.cjs → syncConfigurationToTranscend-Bpge5AcC.cjs} +3 -3
  116. package/dist/syncConfigurationToTranscend-Bpge5AcC.cjs.map +1 -0
  117. package/dist/{uploadConsents-d1VkrHk6.cjs → uploadConsents-CJc_6Qwd.cjs} +2 -2
  118. package/dist/{uploadConsents-d1VkrHk6.cjs.map → uploadConsents-CJc_6Qwd.cjs.map} +1 -1
  119. package/package.json +1 -1
  120. package/dist/app-DcXc-oSw.cjs.map +0 -1
  121. package/dist/impl-D5rwOHR4.cjs +0 -2
  122. package/dist/impl-D5rwOHR4.cjs.map +0 -1
  123. package/dist/syncConfigurationToTranscend-B9c2w6d0.cjs.map +0 -1
package/dist/index.d.cts CHANGED
@@ -5674,8 +5674,6 @@ declare const ProcessingPurposePreviewInput: t.IntersectionC<[t.TypeC<{
5674
5674
  /** The parent purpose */
5675
5675
  purpose: t.KeyofC<{
5676
5676
  HR: unknown;
5677
- OTHER: unknown;
5678
- UNSPECIFIED: unknown;
5679
5677
  ESSENTIAL: unknown;
5680
5678
  ADDITIONAL_FUNCTIONALITY: unknown;
5681
5679
  ADVERTISING: unknown;
@@ -5686,6 +5684,8 @@ declare const ProcessingPurposePreviewInput: t.IntersectionC<[t.TypeC<{
5686
5684
  LEGAL: unknown;
5687
5685
  TRANSFER: unknown;
5688
5686
  SALE: unknown;
5687
+ OTHER: unknown;
5688
+ UNSPECIFIED: unknown;
5689
5689
  }>;
5690
5690
  }>, t.PartialC<{
5691
5691
  /** User-defined name for this processing purpose sub category */
@@ -5700,6 +5700,8 @@ declare const DataCategoryPreviewInput: t.IntersectionC<[t.TypeC<{
5700
5700
  /** The parent category */
5701
5701
  category: t.KeyofC<{
5702
5702
  ID: unknown;
5703
+ OTHER: unknown;
5704
+ UNSPECIFIED: unknown;
5703
5705
  FINANCIAL: unknown;
5704
5706
  HEALTH: unknown;
5705
5707
  CONTACT: unknown;
@@ -5712,8 +5714,6 @@ declare const DataCategoryPreviewInput: t.IntersectionC<[t.TypeC<{
5712
5714
  TRACKING: unknown;
5713
5715
  DEVICE: unknown;
5714
5716
  SURVEY: unknown;
5715
- OTHER: unknown;
5716
- UNSPECIFIED: unknown;
5717
5717
  NOT_PERSONAL_DATA: unknown;
5718
5718
  INTEGRATION_IDENTIFIER: unknown;
5719
5719
  }>;
@@ -5732,6 +5732,8 @@ declare const DataCategoryGuessInput: t.IntersectionC<[t.TypeC<{
5732
5732
  /** The parent category */
5733
5733
  category: t.KeyofC<{
5734
5734
  ID: unknown;
5735
+ OTHER: unknown;
5736
+ UNSPECIFIED: unknown;
5735
5737
  FINANCIAL: unknown;
5736
5738
  HEALTH: unknown;
5737
5739
  CONTACT: unknown;
@@ -5744,8 +5746,6 @@ declare const DataCategoryGuessInput: t.IntersectionC<[t.TypeC<{
5744
5746
  TRACKING: unknown;
5745
5747
  DEVICE: unknown;
5746
5748
  SURVEY: unknown;
5747
- OTHER: unknown;
5748
- UNSPECIFIED: unknown;
5749
5749
  NOT_PERSONAL_DATA: unknown;
5750
5750
  INTEGRATION_IDENTIFIER: unknown;
5751
5751
  }>;
@@ -5776,6 +5776,8 @@ declare const DataCategoryRecommendationInput: t.IntersectionC<[t.TypeC<{
5776
5776
  /** The parent category */
5777
5777
  category: t.KeyofC<{
5778
5778
  ID: unknown;
5779
+ OTHER: unknown;
5780
+ UNSPECIFIED: unknown;
5779
5781
  FINANCIAL: unknown;
5780
5782
  HEALTH: unknown;
5781
5783
  CONTACT: unknown;
@@ -5788,8 +5790,6 @@ declare const DataCategoryRecommendationInput: t.IntersectionC<[t.TypeC<{
5788
5790
  TRACKING: unknown;
5789
5791
  DEVICE: unknown;
5790
5792
  SURVEY: unknown;
5791
- OTHER: unknown;
5792
- UNSPECIFIED: unknown;
5793
5793
  NOT_PERSONAL_DATA: unknown;
5794
5794
  INTEGRATION_IDENTIFIER: unknown;
5795
5795
  }>;
@@ -11433,6 +11433,8 @@ declare const DataCategoryInput: t.IntersectionC<[t.TypeC<{
11433
11433
  /** Type of data category */
11434
11434
  category: t.KeyofC<{
11435
11435
  ID: unknown;
11436
+ OTHER: unknown;
11437
+ UNSPECIFIED: unknown;
11436
11438
  FINANCIAL: unknown;
11437
11439
  HEALTH: unknown;
11438
11440
  CONTACT: unknown;
@@ -11445,8 +11447,6 @@ declare const DataCategoryInput: t.IntersectionC<[t.TypeC<{
11445
11447
  TRACKING: unknown;
11446
11448
  DEVICE: unknown;
11447
11449
  SURVEY: unknown;
11448
- OTHER: unknown;
11449
- UNSPECIFIED: unknown;
11450
11450
  NOT_PERSONAL_DATA: unknown;
11451
11451
  INTEGRATION_IDENTIFIER: unknown;
11452
11452
  }>;
@@ -11491,8 +11491,6 @@ declare const ProcessingPurposeInput: t.IntersectionC<[t.TypeC<{
11491
11491
  /** Type of processing purpose */
11492
11492
  purpose: t.KeyofC<{
11493
11493
  HR: unknown;
11494
- OTHER: unknown;
11495
- UNSPECIFIED: unknown;
11496
11494
  ESSENTIAL: unknown;
11497
11495
  ADDITIONAL_FUNCTIONALITY: unknown;
11498
11496
  ADVERTISING: unknown;
@@ -11503,6 +11501,8 @@ declare const ProcessingPurposeInput: t.IntersectionC<[t.TypeC<{
11503
11501
  LEGAL: unknown;
11504
11502
  TRANSFER: unknown;
11505
11503
  SALE: unknown;
11504
+ OTHER: unknown;
11505
+ UNSPECIFIED: unknown;
11506
11506
  }>;
11507
11507
  }>, t.PartialC<{
11508
11508
  /** Description of processing purpose */
@@ -11596,8 +11596,6 @@ declare const FieldInput: t.IntersectionC<[t.TypeC<{
11596
11596
  /** The parent purpose */
11597
11597
  purpose: t.KeyofC<{
11598
11598
  HR: unknown;
11599
- OTHER: unknown;
11600
- UNSPECIFIED: unknown;
11601
11599
  ESSENTIAL: unknown;
11602
11600
  ADDITIONAL_FUNCTIONALITY: unknown;
11603
11601
  ADVERTISING: unknown;
@@ -11608,6 +11606,8 @@ declare const FieldInput: t.IntersectionC<[t.TypeC<{
11608
11606
  LEGAL: unknown;
11609
11607
  TRANSFER: unknown;
11610
11608
  SALE: unknown;
11609
+ OTHER: unknown;
11610
+ UNSPECIFIED: unknown;
11611
11611
  }>;
11612
11612
  }>, t.PartialC<{
11613
11613
  /** User-defined name for this processing purpose sub category */
@@ -11622,6 +11622,8 @@ declare const FieldInput: t.IntersectionC<[t.TypeC<{
11622
11622
  /** The parent category */
11623
11623
  category: t.KeyofC<{
11624
11624
  ID: unknown;
11625
+ OTHER: unknown;
11626
+ UNSPECIFIED: unknown;
11625
11627
  FINANCIAL: unknown;
11626
11628
  HEALTH: unknown;
11627
11629
  CONTACT: unknown;
@@ -11634,8 +11636,6 @@ declare const FieldInput: t.IntersectionC<[t.TypeC<{
11634
11636
  TRACKING: unknown;
11635
11637
  DEVICE: unknown;
11636
11638
  SURVEY: unknown;
11637
- OTHER: unknown;
11638
- UNSPECIFIED: unknown;
11639
11639
  NOT_PERSONAL_DATA: unknown;
11640
11640
  INTEGRATION_IDENTIFIER: unknown;
11641
11641
  }>;
@@ -11654,6 +11654,8 @@ declare const FieldInput: t.IntersectionC<[t.TypeC<{
11654
11654
  /** The parent category */
11655
11655
  category: t.KeyofC<{
11656
11656
  ID: unknown;
11657
+ OTHER: unknown;
11658
+ UNSPECIFIED: unknown;
11657
11659
  FINANCIAL: unknown;
11658
11660
  HEALTH: unknown;
11659
11661
  CONTACT: unknown;
@@ -11666,8 +11668,6 @@ declare const FieldInput: t.IntersectionC<[t.TypeC<{
11666
11668
  TRACKING: unknown;
11667
11669
  DEVICE: unknown;
11668
11670
  SURVEY: unknown;
11669
- OTHER: unknown;
11670
- UNSPECIFIED: unknown;
11671
11671
  NOT_PERSONAL_DATA: unknown;
11672
11672
  INTEGRATION_IDENTIFIER: unknown;
11673
11673
  }>;
@@ -11815,8 +11815,6 @@ declare const DatapointInput: t.IntersectionC<[t.TypeC<{
11815
11815
  /** The parent purpose */
11816
11816
  purpose: t.KeyofC<{
11817
11817
  HR: unknown;
11818
- OTHER: unknown;
11819
- UNSPECIFIED: unknown;
11820
11818
  ESSENTIAL: unknown;
11821
11819
  ADDITIONAL_FUNCTIONALITY: unknown;
11822
11820
  ADVERTISING: unknown;
@@ -11827,6 +11825,8 @@ declare const DatapointInput: t.IntersectionC<[t.TypeC<{
11827
11825
  LEGAL: unknown;
11828
11826
  TRANSFER: unknown;
11829
11827
  SALE: unknown;
11828
+ OTHER: unknown;
11829
+ UNSPECIFIED: unknown;
11830
11830
  }>;
11831
11831
  }>, t.PartialC<{
11832
11832
  /** User-defined name for this processing purpose sub category */
@@ -11841,6 +11841,8 @@ declare const DatapointInput: t.IntersectionC<[t.TypeC<{
11841
11841
  /** The parent category */
11842
11842
  category: t.KeyofC<{
11843
11843
  ID: unknown;
11844
+ OTHER: unknown;
11845
+ UNSPECIFIED: unknown;
11844
11846
  FINANCIAL: unknown;
11845
11847
  HEALTH: unknown;
11846
11848
  CONTACT: unknown;
@@ -11853,8 +11855,6 @@ declare const DatapointInput: t.IntersectionC<[t.TypeC<{
11853
11855
  TRACKING: unknown;
11854
11856
  DEVICE: unknown;
11855
11857
  SURVEY: unknown;
11856
- OTHER: unknown;
11857
- UNSPECIFIED: unknown;
11858
11858
  NOT_PERSONAL_DATA: unknown;
11859
11859
  INTEGRATION_IDENTIFIER: unknown;
11860
11860
  }>;
@@ -11873,6 +11873,8 @@ declare const DatapointInput: t.IntersectionC<[t.TypeC<{
11873
11873
  /** The parent category */
11874
11874
  category: t.KeyofC<{
11875
11875
  ID: unknown;
11876
+ OTHER: unknown;
11877
+ UNSPECIFIED: unknown;
11876
11878
  FINANCIAL: unknown;
11877
11879
  HEALTH: unknown;
11878
11880
  CONTACT: unknown;
@@ -11885,8 +11887,6 @@ declare const DatapointInput: t.IntersectionC<[t.TypeC<{
11885
11887
  TRACKING: unknown;
11886
11888
  DEVICE: unknown;
11887
11889
  SURVEY: unknown;
11888
- OTHER: unknown;
11889
- UNSPECIFIED: unknown;
11890
11890
  NOT_PERSONAL_DATA: unknown;
11891
11891
  INTEGRATION_IDENTIFIER: unknown;
11892
11892
  }>;
@@ -33661,8 +33661,6 @@ declare const ProcessingActivityInput: t.IntersectionC<[t.TypeC<{
33661
33661
  /** The parent purpose */
33662
33662
  purpose: t.KeyofC<{
33663
33663
  HR: unknown;
33664
- OTHER: unknown;
33665
- UNSPECIFIED: unknown;
33666
33664
  ESSENTIAL: unknown;
33667
33665
  ADDITIONAL_FUNCTIONALITY: unknown;
33668
33666
  ADVERTISING: unknown;
@@ -33673,6 +33671,8 @@ declare const ProcessingActivityInput: t.IntersectionC<[t.TypeC<{
33673
33671
  LEGAL: unknown;
33674
33672
  TRANSFER: unknown;
33675
33673
  SALE: unknown;
33674
+ OTHER: unknown;
33675
+ UNSPECIFIED: unknown;
33676
33676
  }>;
33677
33677
  }>, t.PartialC<{
33678
33678
  /** User-defined name for this processing purpose sub category */
@@ -33687,6 +33687,8 @@ declare const ProcessingActivityInput: t.IntersectionC<[t.TypeC<{
33687
33687
  /** The parent category */
33688
33688
  category: t.KeyofC<{
33689
33689
  ID: unknown;
33690
+ OTHER: unknown;
33691
+ UNSPECIFIED: unknown;
33690
33692
  FINANCIAL: unknown;
33691
33693
  HEALTH: unknown;
33692
33694
  CONTACT: unknown;
@@ -33699,8 +33701,6 @@ declare const ProcessingActivityInput: t.IntersectionC<[t.TypeC<{
33699
33701
  TRACKING: unknown;
33700
33702
  DEVICE: unknown;
33701
33703
  SURVEY: unknown;
33702
- OTHER: unknown;
33703
- UNSPECIFIED: unknown;
33704
33704
  NOT_PERSONAL_DATA: unknown;
33705
33705
  INTEGRATION_IDENTIFIER: unknown;
33706
33706
  }>;
@@ -50290,7 +50290,6 @@ declare const ConsentManageExperienceInput: t.IntersectionC<[t.TypeC<{
50290
50290
  * Browser languages that define this regional experience
50291
50291
  */
50292
50292
  browserLanguages: t.ArrayC<t.KeyofC<{
50293
- no: unknown;
50294
50293
  om: unknown;
50295
50294
  ab: unknown;
50296
50295
  aa: unknown;
@@ -50439,6 +50438,7 @@ declare const ConsentManageExperienceInput: t.IntersectionC<[t.TypeC<{
50439
50438
  mn: unknown;
50440
50439
  na: unknown;
50441
50440
  ne: unknown;
50441
+ no: unknown;
50442
50442
  nb: unknown;
50443
50443
  nn: unknown;
50444
50444
  "no-NO": unknown;
@@ -51016,8 +51016,8 @@ declare const ConsentManagerInput: t.PartialC<{
51016
51016
  }>;
51017
51017
  /** Whether the site owner has signed the IAB agreement */
51018
51018
  signedIabAgreement: t.KeyofC<{
51019
- yes: unknown;
51020
51019
  no: unknown;
51020
+ yes: unknown;
51021
51021
  unknown: unknown;
51022
51022
  }>;
51023
51023
  /** Regional experience configurations */
@@ -56469,7 +56469,6 @@ declare const ConsentManagerInput: t.PartialC<{
56469
56469
  * Browser languages that define this regional experience
56470
56470
  */
56471
56471
  browserLanguages: t.ArrayC<t.KeyofC<{
56472
- no: unknown;
56473
56472
  om: unknown;
56474
56473
  ab: unknown;
56475
56474
  aa: unknown;
@@ -56618,6 +56617,7 @@ declare const ConsentManagerInput: t.PartialC<{
56618
56617
  mn: unknown;
56619
56618
  na: unknown;
56620
56619
  ne: unknown;
56620
+ no: unknown;
56621
56621
  nb: unknown;
56622
56622
  nn: unknown;
56623
56623
  "no-NO": unknown;
@@ -58235,8 +58235,6 @@ declare const DataSiloInput: t.IntersectionC<[t.TypeC<{
58235
58235
  /** The parent purpose */
58236
58236
  purpose: t.KeyofC<{
58237
58237
  HR: unknown;
58238
- OTHER: unknown;
58239
- UNSPECIFIED: unknown;
58240
58238
  ESSENTIAL: unknown;
58241
58239
  ADDITIONAL_FUNCTIONALITY: unknown;
58242
58240
  ADVERTISING: unknown;
@@ -58247,6 +58245,8 @@ declare const DataSiloInput: t.IntersectionC<[t.TypeC<{
58247
58245
  LEGAL: unknown;
58248
58246
  TRANSFER: unknown;
58249
58247
  SALE: unknown;
58248
+ OTHER: unknown;
58249
+ UNSPECIFIED: unknown;
58250
58250
  }>;
58251
58251
  }>, t.PartialC<{
58252
58252
  /** User-defined name for this processing purpose sub category */
@@ -58261,6 +58261,8 @@ declare const DataSiloInput: t.IntersectionC<[t.TypeC<{
58261
58261
  /** The parent category */
58262
58262
  category: t.KeyofC<{
58263
58263
  ID: unknown;
58264
+ OTHER: unknown;
58265
+ UNSPECIFIED: unknown;
58264
58266
  FINANCIAL: unknown;
58265
58267
  HEALTH: unknown;
58266
58268
  CONTACT: unknown;
@@ -58273,8 +58275,6 @@ declare const DataSiloInput: t.IntersectionC<[t.TypeC<{
58273
58275
  TRACKING: unknown;
58274
58276
  DEVICE: unknown;
58275
58277
  SURVEY: unknown;
58276
- OTHER: unknown;
58277
- UNSPECIFIED: unknown;
58278
58278
  NOT_PERSONAL_DATA: unknown;
58279
58279
  INTEGRATION_IDENTIFIER: unknown;
58280
58280
  }>;
@@ -58293,6 +58293,8 @@ declare const DataSiloInput: t.IntersectionC<[t.TypeC<{
58293
58293
  /** The parent category */
58294
58294
  category: t.KeyofC<{
58295
58295
  ID: unknown;
58296
+ OTHER: unknown;
58297
+ UNSPECIFIED: unknown;
58296
58298
  FINANCIAL: unknown;
58297
58299
  HEALTH: unknown;
58298
58300
  CONTACT: unknown;
@@ -58305,8 +58307,6 @@ declare const DataSiloInput: t.IntersectionC<[t.TypeC<{
58305
58307
  TRACKING: unknown;
58306
58308
  DEVICE: unknown;
58307
58309
  SURVEY: unknown;
58308
- OTHER: unknown;
58309
- UNSPECIFIED: unknown;
58310
58310
  NOT_PERSONAL_DATA: unknown;
58311
58311
  INTEGRATION_IDENTIFIER: unknown;
58312
58312
  }>;
@@ -87360,6 +87360,8 @@ declare const TranscendInput: t.PartialC<{
87360
87360
  /** Type of data category */
87361
87361
  category: t.KeyofC<{
87362
87362
  ID: unknown;
87363
+ OTHER: unknown;
87364
+ UNSPECIFIED: unknown;
87363
87365
  FINANCIAL: unknown;
87364
87366
  HEALTH: unknown;
87365
87367
  CONTACT: unknown;
@@ -87372,8 +87374,6 @@ declare const TranscendInput: t.PartialC<{
87372
87374
  TRACKING: unknown;
87373
87375
  DEVICE: unknown;
87374
87376
  SURVEY: unknown;
87375
- OTHER: unknown;
87376
- UNSPECIFIED: unknown;
87377
87377
  NOT_PERSONAL_DATA: unknown;
87378
87378
  INTEGRATION_IDENTIFIER: unknown;
87379
87379
  }>;
@@ -87414,8 +87414,6 @@ declare const TranscendInput: t.PartialC<{
87414
87414
  /** Type of processing purpose */
87415
87415
  purpose: t.KeyofC<{
87416
87416
  HR: unknown;
87417
- OTHER: unknown;
87418
- UNSPECIFIED: unknown;
87419
87417
  ESSENTIAL: unknown;
87420
87418
  ADDITIONAL_FUNCTIONALITY: unknown;
87421
87419
  ADVERTISING: unknown;
@@ -87426,6 +87424,8 @@ declare const TranscendInput: t.PartialC<{
87426
87424
  LEGAL: unknown;
87427
87425
  TRANSFER: unknown;
87428
87426
  SALE: unknown;
87427
+ OTHER: unknown;
87428
+ UNSPECIFIED: unknown;
87429
87429
  }>;
87430
87430
  }>, t.PartialC<{
87431
87431
  /** Description of processing purpose */
@@ -98521,8 +98521,6 @@ declare const TranscendInput: t.PartialC<{
98521
98521
  /** The parent purpose */
98522
98522
  purpose: t.KeyofC<{
98523
98523
  HR: unknown;
98524
- OTHER: unknown;
98525
- UNSPECIFIED: unknown;
98526
98524
  ESSENTIAL: unknown;
98527
98525
  ADDITIONAL_FUNCTIONALITY: unknown;
98528
98526
  ADVERTISING: unknown;
@@ -98533,6 +98531,8 @@ declare const TranscendInput: t.PartialC<{
98533
98531
  LEGAL: unknown;
98534
98532
  TRANSFER: unknown;
98535
98533
  SALE: unknown;
98534
+ OTHER: unknown;
98535
+ UNSPECIFIED: unknown;
98536
98536
  }>;
98537
98537
  }>, t.PartialC<{
98538
98538
  /** User-defined name for this processing purpose sub category */
@@ -98547,6 +98547,8 @@ declare const TranscendInput: t.PartialC<{
98547
98547
  /** The parent category */
98548
98548
  category: t.KeyofC<{
98549
98549
  ID: unknown;
98550
+ OTHER: unknown;
98551
+ UNSPECIFIED: unknown;
98550
98552
  FINANCIAL: unknown;
98551
98553
  HEALTH: unknown;
98552
98554
  CONTACT: unknown;
@@ -98559,8 +98561,6 @@ declare const TranscendInput: t.PartialC<{
98559
98561
  TRACKING: unknown;
98560
98562
  DEVICE: unknown;
98561
98563
  SURVEY: unknown;
98562
- OTHER: unknown;
98563
- UNSPECIFIED: unknown;
98564
98564
  NOT_PERSONAL_DATA: unknown;
98565
98565
  INTEGRATION_IDENTIFIER: unknown;
98566
98566
  }>;
@@ -98579,6 +98579,8 @@ declare const TranscendInput: t.PartialC<{
98579
98579
  /** The parent category */
98580
98580
  category: t.KeyofC<{
98581
98581
  ID: unknown;
98582
+ OTHER: unknown;
98583
+ UNSPECIFIED: unknown;
98582
98584
  FINANCIAL: unknown;
98583
98585
  HEALTH: unknown;
98584
98586
  CONTACT: unknown;
@@ -98591,8 +98593,6 @@ declare const TranscendInput: t.PartialC<{
98591
98593
  TRACKING: unknown;
98592
98594
  DEVICE: unknown;
98593
98595
  SURVEY: unknown;
98594
- OTHER: unknown;
98595
- UNSPECIFIED: unknown;
98596
98596
  NOT_PERSONAL_DATA: unknown;
98597
98597
  INTEGRATION_IDENTIFIER: unknown;
98598
98598
  }>;
@@ -104228,8 +104228,8 @@ declare const TranscendInput: t.PartialC<{
104228
104228
  }>;
104229
104229
  /** Whether the site owner has signed the IAB agreement */
104230
104230
  signedIabAgreement: t.KeyofC<{
104231
- yes: unknown;
104232
104231
  no: unknown;
104232
+ yes: unknown;
104233
104233
  unknown: unknown;
104234
104234
  }>;
104235
104235
  /** Regional experience configurations */
@@ -109681,7 +109681,6 @@ declare const TranscendInput: t.PartialC<{
109681
109681
  * Browser languages that define this regional experience
109682
109682
  */
109683
109683
  browserLanguages: t.ArrayC<t.KeyofC<{
109684
- no: unknown;
109685
109684
  om: unknown;
109686
109685
  ab: unknown;
109687
109686
  aa: unknown;
@@ -109830,6 +109829,7 @@ declare const TranscendInput: t.PartialC<{
109830
109829
  mn: unknown;
109831
109830
  na: unknown;
109832
109831
  ne: unknown;
109832
+ no: unknown;
109833
109833
  nb: unknown;
109834
109834
  nn: unknown;
109835
109835
  "no-NO": unknown;
@@ -122906,8 +122906,6 @@ declare const TranscendInput: t.PartialC<{
122906
122906
  /** The parent purpose */
122907
122907
  purpose: t.KeyofC<{
122908
122908
  HR: unknown;
122909
- OTHER: unknown;
122910
- UNSPECIFIED: unknown;
122911
122909
  ESSENTIAL: unknown;
122912
122910
  ADDITIONAL_FUNCTIONALITY: unknown;
122913
122911
  ADVERTISING: unknown;
@@ -122918,6 +122916,8 @@ declare const TranscendInput: t.PartialC<{
122918
122916
  LEGAL: unknown;
122919
122917
  TRANSFER: unknown;
122920
122918
  SALE: unknown;
122919
+ OTHER: unknown;
122920
+ UNSPECIFIED: unknown;
122921
122921
  }>;
122922
122922
  }>, t.PartialC<{
122923
122923
  /** User-defined name for this processing purpose sub category */
@@ -122932,6 +122932,8 @@ declare const TranscendInput: t.PartialC<{
122932
122932
  /** The parent category */
122933
122933
  category: t.KeyofC<{
122934
122934
  ID: unknown;
122935
+ OTHER: unknown;
122936
+ UNSPECIFIED: unknown;
122935
122937
  FINANCIAL: unknown;
122936
122938
  HEALTH: unknown;
122937
122939
  CONTACT: unknown;
@@ -122944,8 +122946,6 @@ declare const TranscendInput: t.PartialC<{
122944
122946
  TRACKING: unknown;
122945
122947
  DEVICE: unknown;
122946
122948
  SURVEY: unknown;
122947
- OTHER: unknown;
122948
- UNSPECIFIED: unknown;
122949
122949
  NOT_PERSONAL_DATA: unknown;
122950
122950
  INTEGRATION_IDENTIFIER: unknown;
122951
122951
  }>;
@@ -134530,11 +134530,11 @@ declare const CachedFileState: t.TypeC<{
134530
134530
  /** Mapping between request status in import to Transcend request status */
134531
134531
  statusToRequestStatus: t.RecordC<t.StringC, t.KeyofC<{
134532
134532
  CANCELED: unknown;
134533
+ "[NONE]": unknown;
134533
134534
  FAILED_VERIFICATION: unknown;
134534
134535
  COMPLETED: unknown;
134535
134536
  SECONDARY_COMPLETED: unknown;
134536
134537
  REVOKED: unknown;
134537
- "[NONE]": unknown;
134538
134538
  }>>;
134539
134539
  }>;
134540
134540
  /** Type override */
@@ -136975,20 +136975,20 @@ declare const PrivacyRequest: t.IntersectionC<[t.TypeC<{
136975
136975
  status: t.KeyofC<{
136976
136976
  CANCELED: unknown;
136977
136977
  ON_HOLD: unknown;
136978
- REQUEST_MADE: unknown;
136979
136978
  FAILED_VERIFICATION: unknown;
136979
+ COMPLETED: unknown;
136980
+ SECONDARY_COMPLETED: unknown;
136981
+ REVOKED: unknown;
136982
+ REQUEST_MADE: unknown;
136980
136983
  ENRICHING: unknown;
136981
136984
  WAITING: unknown;
136982
136985
  COMPILING: unknown;
136983
136986
  APPROVING: unknown;
136984
136987
  DELAYED: unknown;
136985
- COMPLETED: unknown;
136986
136988
  DOWNLOADABLE: unknown;
136987
136989
  VIEW_CATEGORIES: unknown;
136988
136990
  SECONDARY: unknown;
136989
- SECONDARY_COMPLETED: unknown;
136990
136991
  SECONDARY_APPROVING: unknown;
136991
- REVOKED: unknown;
136992
136992
  }>;
136993
136993
  /** Type of data subject */
136994
136994
  subjectType: t.StringC;
@@ -150532,20 +150532,20 @@ declare const PrivacyRequestResponse: t.TypeC<{
150532
150532
  status: t.KeyofC<{
150533
150533
  CANCELED: unknown;
150534
150534
  ON_HOLD: unknown;
150535
- REQUEST_MADE: unknown;
150536
150535
  FAILED_VERIFICATION: unknown;
150536
+ COMPLETED: unknown;
150537
+ SECONDARY_COMPLETED: unknown;
150538
+ REVOKED: unknown;
150539
+ REQUEST_MADE: unknown;
150537
150540
  ENRICHING: unknown;
150538
150541
  WAITING: unknown;
150539
150542
  COMPILING: unknown;
150540
150543
  APPROVING: unknown;
150541
150544
  DELAYED: unknown;
150542
- COMPLETED: unknown;
150543
150545
  DOWNLOADABLE: unknown;
150544
150546
  VIEW_CATEGORIES: unknown;
150545
150547
  SECONDARY: unknown;
150546
- SECONDARY_COMPLETED: unknown;
150547
150548
  SECONDARY_APPROVING: unknown;
150548
- REVOKED: unknown;
150549
150549
  }>;
150550
150550
  type: t.KeyofC<{
150551
150551
  ACCESS: unknown;
@@ -1,2 +1,2 @@
1
- const e=require(`./enums-CBXlBJii.cjs`),t=require(`./constants-BD9ZSD52.cjs`),n=require(`./syncConfigurationToTranscend-B9c2w6d0.cjs`),r=require(`./logger-BaHHbWVd.cjs`);let i=require(`@transcend-io/privacy-types`),a=require(`colors`);a=e.s(a);let o=require(`io-ts`);o=e.s(o);async function s({file:e,auth:o,sombraAuth:s,requestActions:c=[],concurrency:l=100,transcendUrl:u=t.a}){let d=n.ti(u,o),f=await n.ei(u,o,s);r.t.info(a.default.magenta(`Pulling manual enrichment requests, filtered for actions: ${c.join(`,`)}`));let p=await n.fr(d,{actions:c,statuses:[i.RequestStatus.Enriching]}),m=[];await n.Ts(p,async e=>{let t=await n.gr(d,{requestId:e.id});if(t.filter(({status:e})=>e===`ACTION_REQUIRED`)){let r=await n.mr(d,f,{requestId:e.id});m.push({...e,requestIdentifiers:r,requestEnrichers:t})}},{concurrency:l});let h=m.map(({attributeValues:e,requestIdentifiers:t,requestEnrichers:r,...i})=>({...i,...Object.entries(n.As(t,`name`)).reduce((e,[t,n])=>Object.assign(e,{[t]:n.map(({value:e})=>e).join(`,`)}),{}),...Object.entries(n.As(e,`attributeKey.name`)).reduce((e,[t,n])=>Object.assign(e,{[t]:n.map(({name:e})=>e).join(`,`)}),{})}));return await n.l(e,h,n.Ds(h.map(e=>Object.keys(e)).flat())),r.t.info(a.default.green(`Successfully wrote ${m.length} requests to file "${e}"`)),m}const c=`https://app.transcend.io/privacy-requests/incoming-requests/`,l=o.record(o.string,o.string);async function u(e,{id:t,...i},o,s){if(!t){let e=`Request ID must be provided to enricher request.${s?` Found error in row: ${s}`:``}`;throw r.t.error(a.default.red(e)),Error(e)}let l=t.toLowerCase(),u=Object.entries(i).reduce((e,[t,r])=>n.Ds(n.li(r)).length===0?e:Object.assign(e,{[t]:n.Ds(n.li(r)).map(e=>({value:t===`email`?e.toLowerCase():e}))}),{});try{return await e.post(`v1/enrich-identifiers`,{headers:{"x-transcend-request-id":l,"x-transcend-enricher-id":o},json:{enrichedIdentifiers:u}}).json(),r.t.error(a.default.green(`Successfully enriched request: ${c}${l}`)),!0}catch(e){if(typeof e.response.body==`string`&&e.response.body.includes(`Cannot update a resolved RequestEnricher`))return r.t.warn(a.default.magenta(`Skipped enrichment for request: ${c}${l}, request is no longer in the enriching phase.`)),!1;throw r.t.error(a.default.red(`Failed to enricher identifiers for request with id: ${c}${l} - ${e.message} - ${e.response.body}`)),e}}async function d({file:e,auth:i,sombraAuth:o,enricherId:s,markSilent:c,concurrency:d=100,transcendUrl:f=t.a}){let p=await n.ei(f,i,o),m=n.ti(f,i);r.t.info(a.default.magenta(`Reading "${e}" from disk`));let h=n.oi(e,l);r.t.info(a.default.magenta(`Enriching "${h.length}" privacy requests.`));let g=0,_=0,v=0;if(await n.Ts(h,async(e,t)=>{try{c&&(await n.i(m,n.Ao,{input:{id:e.id,isSilent:!0}}),r.t.info(a.default.magenta(`Mark request as silent mode - ${e.id}`))),await u(p,e,s,t)?g+=1:_+=1}catch{v+=1}},{concurrency:d}),r.t.info(a.default.green(`Successfully notified Transcend! \n Success count: ${g}.`)),_>0&&r.t.info(a.default.magenta(`Skipped count: ${_}.`)),v>0)throw r.t.info(a.default.red(`Error Count: ${v}.`)),Error(`Failed to enrich: ${v} requests.`);return h.length}Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return d}});
2
- //# sourceMappingURL=manual-enrichment-CYHP0rrX.cjs.map
1
+ const e=require(`./enums-CBXlBJii.cjs`),t=require(`./constants-B-TmLA0w.cjs`),n=require(`./syncConfigurationToTranscend-Bpge5AcC.cjs`),r=require(`./logger-BaHHbWVd.cjs`);let i=require(`@transcend-io/privacy-types`),a=require(`colors`);a=e.s(a);let o=require(`io-ts`);o=e.s(o);async function s({file:e,auth:o,sombraAuth:s,requestActions:c=[],concurrency:l=100,transcendUrl:u=t.a}){let d=n.ti(u,o),f=await n.ei(u,o,s);r.t.info(a.default.magenta(`Pulling manual enrichment requests, filtered for actions: ${c.join(`,`)}`));let p=await n.fr(d,{actions:c,statuses:[i.RequestStatus.Enriching]}),m=[];await n.Ts(p,async e=>{let t=await n.gr(d,{requestId:e.id});if(t.filter(({status:e})=>e===`ACTION_REQUIRED`)){let r=await n.mr(d,f,{requestId:e.id});m.push({...e,requestIdentifiers:r,requestEnrichers:t})}},{concurrency:l});let h=m.map(({attributeValues:e,requestIdentifiers:t,requestEnrichers:r,...i})=>({...i,...Object.entries(n.As(t,`name`)).reduce((e,[t,n])=>Object.assign(e,{[t]:n.map(({value:e})=>e).join(`,`)}),{}),...Object.entries(n.As(e,`attributeKey.name`)).reduce((e,[t,n])=>Object.assign(e,{[t]:n.map(({name:e})=>e).join(`,`)}),{})}));return await n.l(e,h,n.Ds(h.map(e=>Object.keys(e)).flat())),r.t.info(a.default.green(`Successfully wrote ${m.length} requests to file "${e}"`)),m}const c=`https://app.transcend.io/privacy-requests/incoming-requests/`,l=o.record(o.string,o.string);async function u(e,{id:t,...i},o,s){if(!t){let e=`Request ID must be provided to enricher request.${s?` Found error in row: ${s}`:``}`;throw r.t.error(a.default.red(e)),Error(e)}let l=t.toLowerCase(),u=Object.entries(i).reduce((e,[t,r])=>n.Ds(n.li(r)).length===0?e:Object.assign(e,{[t]:n.Ds(n.li(r)).map(e=>({value:t===`email`?e.toLowerCase():e}))}),{});try{return await e.post(`v1/enrich-identifiers`,{headers:{"x-transcend-request-id":l,"x-transcend-enricher-id":o},json:{enrichedIdentifiers:u}}).json(),r.t.error(a.default.green(`Successfully enriched request: ${c}${l}`)),!0}catch(e){if(typeof e.response.body==`string`&&e.response.body.includes(`Cannot update a resolved RequestEnricher`))return r.t.warn(a.default.magenta(`Skipped enrichment for request: ${c}${l}, request is no longer in the enriching phase.`)),!1;throw r.t.error(a.default.red(`Failed to enricher identifiers for request with id: ${c}${l} - ${e.message} - ${e.response.body}`)),e}}async function d({file:e,auth:i,sombraAuth:o,enricherId:s,markSilent:c,concurrency:d=100,transcendUrl:f=t.a}){let p=await n.ei(f,i,o),m=n.ti(f,i);r.t.info(a.default.magenta(`Reading "${e}" from disk`));let h=n.oi(e,l);r.t.info(a.default.magenta(`Enriching "${h.length}" privacy requests.`));let g=0,_=0,v=0;if(await n.Ts(h,async(e,t)=>{try{c&&(await n.i(m,n.Ao,{input:{id:e.id,isSilent:!0}}),r.t.info(a.default.magenta(`Mark request as silent mode - ${e.id}`))),await u(p,e,s,t)?g+=1:_+=1}catch{v+=1}},{concurrency:d}),r.t.info(a.default.green(`Successfully notified Transcend! \n Success count: ${g}.`)),_>0&&r.t.info(a.default.magenta(`Skipped count: ${_}.`)),v>0)throw r.t.info(a.default.red(`Error Count: ${v}.`)),Error(`Failed to enrich: ${v} requests.`);return h.length}Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return d}});
2
+ //# sourceMappingURL=manual-enrichment-Y_BQaSZQ.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"manual-enrichment-CYHP0rrX.cjs","names":["DEFAULT_TRANSCEND_API","buildTranscendGraphQLClient","createSombraGotInstance","fetchAllRequests","RequestStatus","map","fetchAllRequestEnrichers","fetchAllRequestIdentifiers","groupBy","writeCsv","uniq","t","uniq","splitCsvToList","DEFAULT_TRANSCEND_API","createSombraGotInstance","buildTranscendGraphQLClient","readCsv","map","makeGraphQLRequest","UPDATE_PRIVACY_REQUEST"],"sources":["../src/lib/manual-enrichment/pullManualEnrichmentIdentifiersToCsv.ts","../src/lib/manual-enrichment/enrichPrivacyRequest.ts","../src/lib/manual-enrichment/pushManualEnrichmentIdentifiersFromCsv.ts"],"sourcesContent":["import { RequestAction, RequestStatus } from '@transcend-io/privacy-types';\nimport { map } from '../bluebird';\nimport colors from 'colors';\nimport { groupBy, uniq } from 'lodash-es';\nimport { DEFAULT_TRANSCEND_API } from '../../constants';\nimport { writeCsv } from '../helpers/writeCsv';\nimport {\n PrivacyRequest,\n RequestEnricher,\n RequestIdentifier,\n buildTranscendGraphQLClient,\n createSombraGotInstance,\n fetchAllRequestEnrichers,\n fetchAllRequestIdentifiers,\n fetchAllRequests,\n} from '../graphql';\nimport { logger } from '../../logger';\n\nexport interface PrivacyRequestWithIdentifiers extends PrivacyRequest {\n /** Request Enrichers */\n requestEnrichers: RequestEnricher[];\n /** Request Identifiers */\n requestIdentifiers: RequestIdentifier[];\n}\n\n/**\n * Pull the set of manual enrichment jobs to CSV\n *\n * @param options - Options\n * @returns List of requests with identifiers\n */\nexport async function pullManualEnrichmentIdentifiersToCsv({\n file,\n auth,\n sombraAuth,\n requestActions = [],\n concurrency = 100,\n transcendUrl = DEFAULT_TRANSCEND_API,\n}: {\n /** CSV file path */\n file: string;\n /** Transcend API key authentication */\n auth: string;\n /** Sombra API key */\n sombraAuth?: string;\n /** Concurrency */\n concurrency?: number;\n /** The request actions to fetch */\n requestActions?: RequestAction[];\n /** API URL for Transcend backend */\n transcendUrl?: string;\n}): Promise<PrivacyRequestWithIdentifiers[]> {\n // Find all requests made before createdAt that are in a removing data state\n const client = buildTranscendGraphQLClient(transcendUrl, auth);\n const sombra = await createSombraGotInstance(transcendUrl, auth, sombraAuth);\n\n logger.info(\n colors.magenta(\n `Pulling manual enrichment requests, filtered for actions: ${requestActions.join(\n ',',\n )}`,\n ),\n );\n\n // Pull all privacy requests\n const allRequests = await fetchAllRequests(client, {\n actions: requestActions,\n statuses: [RequestStatus.Enriching],\n });\n\n // Requests to save\n const savedRequests: PrivacyRequestWithIdentifiers[] = [];\n\n // Filter down requests to what is needed\n await map(\n allRequests,\n async (request) => {\n // Fetch enrichers\n const requestEnrichers = await fetchAllRequestEnrichers(client, {\n requestId: request.id,\n });\n\n // Check if manual enrichment exists for that request\n const hasManualEnrichment = requestEnrichers.filter(\n ({ status }) => status === 'ACTION_REQUIRED',\n );\n\n // Save request to queue\n if (hasManualEnrichment) {\n const requestIdentifiers = await fetchAllRequestIdentifiers(\n client,\n sombra,\n {\n requestId: request.id,\n },\n );\n savedRequests.push({\n ...request,\n requestIdentifiers,\n requestEnrichers,\n });\n }\n },\n {\n concurrency,\n },\n );\n\n const data = savedRequests.map(\n ({\n attributeValues,\n requestIdentifiers,\n requestEnrichers, // eslint-disable-line @typescript-eslint/no-unused-vars\n ...request\n }) => ({\n ...request,\n // flatten identifiers\n ...Object.entries(groupBy(requestIdentifiers, 'name')).reduce(\n (acc, [key, values]) =>\n Object.assign(acc, {\n [key]: values.map(({ value }) => value).join(','),\n }),\n {},\n ),\n // flatten attributes\n ...Object.entries(groupBy(attributeValues, 'attributeKey.name')).reduce(\n (acc, [key, values]) =>\n Object.assign(acc, {\n [key]: values.map(({ name }) => name).join(','),\n }),\n {},\n ),\n }),\n );\n\n // Write out to CSV\n const headers = uniq(data.map((d) => Object.keys(d)).flat());\n await writeCsv(file, data, headers);\n\n logger.info(\n colors.green(\n `Successfully wrote ${savedRequests.length} requests to file \"${file}\"`,\n ),\n );\n\n return savedRequests;\n}\n","import type { Got } from 'got';\nimport * as t from 'io-ts';\nimport { logger } from '../../logger';\nimport { uniq } from 'lodash-es';\nimport colors from 'colors';\nimport { splitCsvToList } from '../requests/splitCsvToList';\n\nconst ADMIN_URL =\n 'https://app.transcend.io/privacy-requests/incoming-requests/';\n/**\n * Minimal set required to mark as completed\n */\nexport const EnrichPrivacyRequest = t.record(t.string, t.string);\n\n/** Type override */\nexport type EnrichPrivacyRequest = t.TypeOf<typeof EnrichPrivacyRequest>;\n\n/**\n * Upload identifiers to a privacy request or mark request as\n *\n * @param sombra - Sombra instance configured to make requests\n * @param request - Request to enricher\n * @param enricherId - The ID of the enricher being uploaded to\n * @param index - Index of request ID\n * @returns True if enriched successfully, false if skipped, throws error if failed\n */\nexport async function enrichPrivacyRequest(\n sombra: Got,\n { id: rawId, ...rest }: EnrichPrivacyRequest,\n enricherId: string,\n index?: number,\n): Promise<boolean> {\n if (!rawId) {\n // error\n const msg = `Request ID must be provided to enricher request.${\n index ? ` Found error in row: ${index}` : ''\n }`;\n logger.error(colors.red(msg));\n throw new Error(msg);\n }\n\n const id = rawId.toLowerCase();\n\n // Pull out the identifiers\n const enrichedIdentifiers = Object.entries(rest).reduce(\n (acc, [key, value]) => {\n const values = uniq(splitCsvToList(value));\n return values.length === 0\n ? acc\n : Object.assign(acc, {\n [key]: uniq(splitCsvToList(value)).map((val) => ({\n value: key === 'email' ? val.toLowerCase() : val,\n })),\n });\n },\n {} as Record<string, string[]>,\n );\n\n // Make the GraphQL request\n try {\n await sombra\n .post('v1/enrich-identifiers', {\n headers: {\n 'x-transcend-request-id': id,\n 'x-transcend-enricher-id': enricherId,\n },\n json: {\n enrichedIdentifiers,\n },\n })\n .json();\n\n logger.error(\n colors.green(`Successfully enriched request: ${ADMIN_URL}${id}`),\n );\n return true;\n } catch (err) {\n // skip if already enriched\n if (\n typeof err.response.body === 'string' &&\n err.response.body.includes('Cannot update a resolved RequestEnricher')\n ) {\n logger.warn(\n colors.magenta(\n `Skipped enrichment for request: ${ADMIN_URL}${id}, request is no longer in the enriching phase.`,\n ),\n );\n return false;\n }\n\n // error\n logger.error(\n colors.red(\n `Failed to enricher identifiers for request with id: ${ADMIN_URL}${id} - ${err.message} - ${err.response.body}`,\n ),\n );\n throw err;\n }\n}\n","import colors from 'colors';\nimport { map } from '../bluebird';\nimport { logger } from '../../logger';\nimport {\n UPDATE_PRIVACY_REQUEST,\n buildTranscendGraphQLClient,\n createSombraGotInstance,\n makeGraphQLRequest,\n} from '../graphql';\nimport {\n enrichPrivacyRequest,\n EnrichPrivacyRequest,\n} from './enrichPrivacyRequest';\nimport { readCsv } from '../requests';\nimport { DEFAULT_TRANSCEND_API } from '../../constants';\n\n/**\n * Push a CSV of enriched requests back into Transcend\n *\n * @param options - Options\n * @returns Number of items processed\n */\nexport async function pushManualEnrichmentIdentifiersFromCsv({\n file,\n auth,\n sombraAuth,\n enricherId,\n markSilent,\n concurrency = 100,\n transcendUrl = DEFAULT_TRANSCEND_API,\n}: {\n /** CSV file path */\n file: string;\n /** Transcend API key authentication */\n auth: string;\n /** ID of enricher being uploaded to */\n enricherId: string;\n /** Sombra API key authentication */\n sombraAuth?: string;\n /** Concurrency */\n concurrency?: number;\n /** API URL for Transcend backend */\n transcendUrl?: string;\n /** Mark requests in silent mode before enriching */\n markSilent?: boolean;\n}): Promise<number> {\n // Create sombra instance to communicate with\n const sombra = await createSombraGotInstance(transcendUrl, auth, sombraAuth);\n const client = buildTranscendGraphQLClient(transcendUrl, auth);\n\n // Read from CSV\n logger.info(colors.magenta(`Reading \"${file}\" from disk`));\n const activeResults = readCsv(file, EnrichPrivacyRequest);\n\n // Notify Transcend\n logger.info(\n colors.magenta(`Enriching \"${activeResults.length}\" privacy requests.`),\n );\n\n let successCount = 0;\n let skippedCount = 0;\n let errorCount = 0;\n\n await map(\n activeResults,\n async (request, index) => {\n try {\n // Mark requests in silent mode before a certain date\n if (markSilent) {\n await makeGraphQLRequest(client, UPDATE_PRIVACY_REQUEST, {\n input: {\n id: request.id,\n isSilent: true,\n },\n });\n\n logger.info(\n colors.magenta(`Mark request as silent mode - ${request.id}`),\n );\n }\n\n const result = await enrichPrivacyRequest(\n sombra,\n request,\n enricherId,\n index,\n );\n if (result) {\n successCount += 1;\n } else {\n skippedCount += 1;\n }\n } catch (err) {\n errorCount += 1;\n }\n },\n { concurrency },\n );\n\n logger.info(\n colors.green(\n `Successfully notified Transcend! \\n Success count: ${successCount}.`,\n ),\n );\n\n if (skippedCount > 0) {\n logger.info(colors.magenta(`Skipped count: ${skippedCount}.`));\n }\n\n if (errorCount > 0) {\n logger.info(colors.red(`Error Count: ${errorCount}.`));\n throw new Error(`Failed to enrich: ${errorCount} requests.`);\n }\n\n return activeResults.length;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"manual-enrichment-Y_BQaSZQ.cjs","names":["DEFAULT_TRANSCEND_API","buildTranscendGraphQLClient","createSombraGotInstance","fetchAllRequests","RequestStatus","map","fetchAllRequestEnrichers","fetchAllRequestIdentifiers","groupBy","writeCsv","uniq","t","uniq","splitCsvToList","DEFAULT_TRANSCEND_API","createSombraGotInstance","buildTranscendGraphQLClient","readCsv","map","makeGraphQLRequest","UPDATE_PRIVACY_REQUEST"],"sources":["../src/lib/manual-enrichment/pullManualEnrichmentIdentifiersToCsv.ts","../src/lib/manual-enrichment/enrichPrivacyRequest.ts","../src/lib/manual-enrichment/pushManualEnrichmentIdentifiersFromCsv.ts"],"sourcesContent":["import { RequestAction, RequestStatus } from '@transcend-io/privacy-types';\nimport { map } from '../bluebird';\nimport colors from 'colors';\nimport { groupBy, uniq } from 'lodash-es';\nimport { DEFAULT_TRANSCEND_API } from '../../constants';\nimport { writeCsv } from '../helpers/writeCsv';\nimport {\n PrivacyRequest,\n RequestEnricher,\n RequestIdentifier,\n buildTranscendGraphQLClient,\n createSombraGotInstance,\n fetchAllRequestEnrichers,\n fetchAllRequestIdentifiers,\n fetchAllRequests,\n} from '../graphql';\nimport { logger } from '../../logger';\n\nexport interface PrivacyRequestWithIdentifiers extends PrivacyRequest {\n /** Request Enrichers */\n requestEnrichers: RequestEnricher[];\n /** Request Identifiers */\n requestIdentifiers: RequestIdentifier[];\n}\n\n/**\n * Pull the set of manual enrichment jobs to CSV\n *\n * @param options - Options\n * @returns List of requests with identifiers\n */\nexport async function pullManualEnrichmentIdentifiersToCsv({\n file,\n auth,\n sombraAuth,\n requestActions = [],\n concurrency = 100,\n transcendUrl = DEFAULT_TRANSCEND_API,\n}: {\n /** CSV file path */\n file: string;\n /** Transcend API key authentication */\n auth: string;\n /** Sombra API key */\n sombraAuth?: string;\n /** Concurrency */\n concurrency?: number;\n /** The request actions to fetch */\n requestActions?: RequestAction[];\n /** API URL for Transcend backend */\n transcendUrl?: string;\n}): Promise<PrivacyRequestWithIdentifiers[]> {\n // Find all requests made before createdAt that are in a removing data state\n const client = buildTranscendGraphQLClient(transcendUrl, auth);\n const sombra = await createSombraGotInstance(transcendUrl, auth, sombraAuth);\n\n logger.info(\n colors.magenta(\n `Pulling manual enrichment requests, filtered for actions: ${requestActions.join(\n ',',\n )}`,\n ),\n );\n\n // Pull all privacy requests\n const allRequests = await fetchAllRequests(client, {\n actions: requestActions,\n statuses: [RequestStatus.Enriching],\n });\n\n // Requests to save\n const savedRequests: PrivacyRequestWithIdentifiers[] = [];\n\n // Filter down requests to what is needed\n await map(\n allRequests,\n async (request) => {\n // Fetch enrichers\n const requestEnrichers = await fetchAllRequestEnrichers(client, {\n requestId: request.id,\n });\n\n // Check if manual enrichment exists for that request\n const hasManualEnrichment = requestEnrichers.filter(\n ({ status }) => status === 'ACTION_REQUIRED',\n );\n\n // Save request to queue\n if (hasManualEnrichment) {\n const requestIdentifiers = await fetchAllRequestIdentifiers(\n client,\n sombra,\n {\n requestId: request.id,\n },\n );\n savedRequests.push({\n ...request,\n requestIdentifiers,\n requestEnrichers,\n });\n }\n },\n {\n concurrency,\n },\n );\n\n const data = savedRequests.map(\n ({\n attributeValues,\n requestIdentifiers,\n requestEnrichers, // eslint-disable-line @typescript-eslint/no-unused-vars\n ...request\n }) => ({\n ...request,\n // flatten identifiers\n ...Object.entries(groupBy(requestIdentifiers, 'name')).reduce(\n (acc, [key, values]) =>\n Object.assign(acc, {\n [key]: values.map(({ value }) => value).join(','),\n }),\n {},\n ),\n // flatten attributes\n ...Object.entries(groupBy(attributeValues, 'attributeKey.name')).reduce(\n (acc, [key, values]) =>\n Object.assign(acc, {\n [key]: values.map(({ name }) => name).join(','),\n }),\n {},\n ),\n }),\n );\n\n // Write out to CSV\n const headers = uniq(data.map((d) => Object.keys(d)).flat());\n await writeCsv(file, data, headers);\n\n logger.info(\n colors.green(\n `Successfully wrote ${savedRequests.length} requests to file \"${file}\"`,\n ),\n );\n\n return savedRequests;\n}\n","import type { Got } from 'got';\nimport * as t from 'io-ts';\nimport { logger } from '../../logger';\nimport { uniq } from 'lodash-es';\nimport colors from 'colors';\nimport { splitCsvToList } from '../requests/splitCsvToList';\n\nconst ADMIN_URL =\n 'https://app.transcend.io/privacy-requests/incoming-requests/';\n/**\n * Minimal set required to mark as completed\n */\nexport const EnrichPrivacyRequest = t.record(t.string, t.string);\n\n/** Type override */\nexport type EnrichPrivacyRequest = t.TypeOf<typeof EnrichPrivacyRequest>;\n\n/**\n * Upload identifiers to a privacy request or mark request as\n *\n * @param sombra - Sombra instance configured to make requests\n * @param request - Request to enricher\n * @param enricherId - The ID of the enricher being uploaded to\n * @param index - Index of request ID\n * @returns True if enriched successfully, false if skipped, throws error if failed\n */\nexport async function enrichPrivacyRequest(\n sombra: Got,\n { id: rawId, ...rest }: EnrichPrivacyRequest,\n enricherId: string,\n index?: number,\n): Promise<boolean> {\n if (!rawId) {\n // error\n const msg = `Request ID must be provided to enricher request.${\n index ? ` Found error in row: ${index}` : ''\n }`;\n logger.error(colors.red(msg));\n throw new Error(msg);\n }\n\n const id = rawId.toLowerCase();\n\n // Pull out the identifiers\n const enrichedIdentifiers = Object.entries(rest).reduce(\n (acc, [key, value]) => {\n const values = uniq(splitCsvToList(value));\n return values.length === 0\n ? acc\n : Object.assign(acc, {\n [key]: uniq(splitCsvToList(value)).map((val) => ({\n value: key === 'email' ? val.toLowerCase() : val,\n })),\n });\n },\n {} as Record<string, string[]>,\n );\n\n // Make the GraphQL request\n try {\n await sombra\n .post('v1/enrich-identifiers', {\n headers: {\n 'x-transcend-request-id': id,\n 'x-transcend-enricher-id': enricherId,\n },\n json: {\n enrichedIdentifiers,\n },\n })\n .json();\n\n logger.error(\n colors.green(`Successfully enriched request: ${ADMIN_URL}${id}`),\n );\n return true;\n } catch (err) {\n // skip if already enriched\n if (\n typeof err.response.body === 'string' &&\n err.response.body.includes('Cannot update a resolved RequestEnricher')\n ) {\n logger.warn(\n colors.magenta(\n `Skipped enrichment for request: ${ADMIN_URL}${id}, request is no longer in the enriching phase.`,\n ),\n );\n return false;\n }\n\n // error\n logger.error(\n colors.red(\n `Failed to enricher identifiers for request with id: ${ADMIN_URL}${id} - ${err.message} - ${err.response.body}`,\n ),\n );\n throw err;\n }\n}\n","import colors from 'colors';\nimport { map } from '../bluebird';\nimport { logger } from '../../logger';\nimport {\n UPDATE_PRIVACY_REQUEST,\n buildTranscendGraphQLClient,\n createSombraGotInstance,\n makeGraphQLRequest,\n} from '../graphql';\nimport {\n enrichPrivacyRequest,\n EnrichPrivacyRequest,\n} from './enrichPrivacyRequest';\nimport { readCsv } from '../requests';\nimport { DEFAULT_TRANSCEND_API } from '../../constants';\n\n/**\n * Push a CSV of enriched requests back into Transcend\n *\n * @param options - Options\n * @returns Number of items processed\n */\nexport async function pushManualEnrichmentIdentifiersFromCsv({\n file,\n auth,\n sombraAuth,\n enricherId,\n markSilent,\n concurrency = 100,\n transcendUrl = DEFAULT_TRANSCEND_API,\n}: {\n /** CSV file path */\n file: string;\n /** Transcend API key authentication */\n auth: string;\n /** ID of enricher being uploaded to */\n enricherId: string;\n /** Sombra API key authentication */\n sombraAuth?: string;\n /** Concurrency */\n concurrency?: number;\n /** API URL for Transcend backend */\n transcendUrl?: string;\n /** Mark requests in silent mode before enriching */\n markSilent?: boolean;\n}): Promise<number> {\n // Create sombra instance to communicate with\n const sombra = await createSombraGotInstance(transcendUrl, auth, sombraAuth);\n const client = buildTranscendGraphQLClient(transcendUrl, auth);\n\n // Read from CSV\n logger.info(colors.magenta(`Reading \"${file}\" from disk`));\n const activeResults = readCsv(file, EnrichPrivacyRequest);\n\n // Notify Transcend\n logger.info(\n colors.magenta(`Enriching \"${activeResults.length}\" privacy requests.`),\n );\n\n let successCount = 0;\n let skippedCount = 0;\n let errorCount = 0;\n\n await map(\n activeResults,\n async (request, index) => {\n try {\n // Mark requests in silent mode before a certain date\n if (markSilent) {\n await makeGraphQLRequest(client, UPDATE_PRIVACY_REQUEST, {\n input: {\n id: request.id,\n isSilent: true,\n },\n });\n\n logger.info(\n colors.magenta(`Mark request as silent mode - ${request.id}`),\n );\n }\n\n const result = await enrichPrivacyRequest(\n sombra,\n request,\n enricherId,\n index,\n );\n if (result) {\n successCount += 1;\n } else {\n skippedCount += 1;\n }\n } catch (err) {\n errorCount += 1;\n }\n },\n { concurrency },\n );\n\n logger.info(\n colors.green(\n `Successfully notified Transcend! \\n Success count: ${successCount}.`,\n ),\n );\n\n if (skippedCount > 0) {\n logger.info(colors.magenta(`Skipped count: ${skippedCount}.`));\n }\n\n if (errorCount > 0) {\n logger.info(colors.red(`Error Count: ${errorCount}.`));\n throw new Error(`Failed to enrich: ${errorCount} requests.`);\n }\n\n return activeResults.length;\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- const e=require(`./enums-CBXlBJii.cjs`),t=require(`./constants-BD9ZSD52.cjs`),n=require(`./syncConfigurationToTranscend-B9c2w6d0.cjs`),r=require(`./logger-BaHHbWVd.cjs`);let i=require(`node:fs`),a=require(`node:os`),o=require(`node:path`),s=require(`colors`);s=e.s(s);let c=require(`node:child_process`),l=require(`node:readline`);l=e.s(l);function u(e,t){let n=Math.max(1,a.availableParallelism?.()??1);return{poolSize:typeof e==`number`&&e>0?Math.min(e,t):Math.min(n,t),cpuCount:n}}function d(e){return`'${String(e).replace(/'/g,`'\\''`)}'`}function f(e,t,n=!1){if(n)return;let i=(0,a.platform)();try{if(i===`darwin`){(0,c.spawn)(`osascript`,[`-e`,`
1
+ const e=require(`./enums-CBXlBJii.cjs`),t=require(`./constants-B-TmLA0w.cjs`),n=require(`./syncConfigurationToTranscend-Bpge5AcC.cjs`),r=require(`./logger-BaHHbWVd.cjs`);let i=require(`node:fs`),a=require(`node:os`),o=require(`node:path`),s=require(`colors`);s=e.s(s);let c=require(`node:child_process`),l=require(`node:readline`);l=e.s(l);function u(e,t){let n=Math.max(1,a.availableParallelism?.()??1);return{poolSize:typeof e==`number`&&e>0?Math.min(e,t):Math.min(n,t),cpuCount:n}}function d(e){return`'${String(e).replace(/'/g,`'\\''`)}'`}function f(e,t,n=!1){if(n)return;let i=(0,a.platform)();try{if(i===`darwin`){(0,c.spawn)(`osascript`,[`-e`,`
2
2
  tell application "Terminal"
3
3
  activate
4
4
  do script "printf '\\e]0;${t}\\a'; tail -n +1 -f ${e.map(d).join(` -f `)}"
@@ -20,4 +20,4 @@ Stopping workers...
20
20
  `))}process.stdin.resume()}B=k({workers:w,onAttach:U,onDetach:W,onCtrlC:H,getLogPaths:e=>N(e,w,E),replayBytes:200*1024,replayWhich:[`out`,`err`],onEnterAttachScreen:U}),e.extraKeyHandler&&(L=e.extraKeyHandler({logsBySlot:E,repaint:()=>R(),setPaused:e=>{I=e}}),process.stdin.on(`data`,L))}await new Promise(e=>{let t=setInterval(async()=>{if(A===0){if(clearInterval(t),P&&clearInterval(P),B(),L)try{process.stdin.off(`data`,L)}catch{}V();let n=Date.now();try{await l.postProcess?.({slots:T,totals:O,logDir:y,logsBySlot:E,startedAt:v,finishedAt:n,viewerMode:f,getLogPathsForSlot:e=>N(e,w,E)})}catch(e){let t=e?.stack??String(e);process.stdout.write(s.default.red(`postProcess error: ${t}\n`))}e()}},300)})}function B(e){let{logsBySlot:t,repaint:n,setPaused:r,exportMgr:i,exportStatus:a,custom:o}=e,s=e=>{process.stdout.write(`${e}\n`)},c=(e,t)=>{let r=Date.now(),i=a?.[e]??{path:t};a&&(a[e]={path:t||i.path,savedAt:r,exported:!0},n())},l=!1,u=(e,i)=>{l||(l=!0,r(!0),process.stdout.write(`\x1B[2J\x1B[H`),process.stdout.write(`Combined logs viewer (press Esc or Ctrl+] to return)
21
21
 
22
22
  `),(async()=>{try{await w(t,e,i)}catch{l=!1,r(!1),n()}})())},d=(e,n)=>{if(i)try{let r=i.exportCombinedLogs(t,e);s(`\nWrote combined ${n} logs to: ${r}`),c(e,r)}catch{s(`\nFailed to write combined ${n} logs`)}};return e=>{let t=e.toString(`utf8`);if(t===`e`){u([`err`],`error`);return}if(t===`w`){u([`warn`,`err`],`warn`);return}if(t===`i`){u([`info`],`all`);return}if(t===`l`){u([`out`,`err`,`structured`],`all`);return}if(t===`E`){d(`error`,`error`);return}if(t===`W`){d(`warn`,`warn`);return}if(t===`I`){d(`info`,`info`);return}if(t===`A`){d(`all`,`ALL`);return}let i=o?.[t];if(i){i({noteExport:c,say:s});return}(t===`\x1B`||t===``)&&(l=!1,r(!1),n())}}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return B}});
23
- //# sourceMappingURL=pooling-BxR5ih0w.cjs.map
23
+ //# sourceMappingURL=pooling-Ct83vfEh.cjs.map