@transcend-io/cli 8.38.1 → 8.38.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 (119) hide show
  1. package/dist/{api-keys-y8Txn6tT.cjs → api-keys-DMPYZTne.cjs} +2 -2
  2. package/dist/{api-keys-y8Txn6tT.cjs.map → api-keys-DMPYZTne.cjs.map} +1 -1
  3. package/dist/{app-_ZoYl64o.cjs → app-bPlpZQj_.cjs} +18 -18
  4. package/dist/{app-_ZoYl64o.cjs.map → app-bPlpZQj_.cjs.map} +1 -1
  5. package/dist/bin/bash-complete.cjs +1 -1
  6. package/dist/bin/cli.cjs +1 -1
  7. package/dist/bin/deprecated-command.cjs +1 -1
  8. package/dist/{code-scanning-ByZQgqip.cjs → code-scanning-D6YstOWo.cjs} +2 -2
  9. package/dist/{code-scanning-ByZQgqip.cjs.map → code-scanning-D6YstOWo.cjs.map} +1 -1
  10. package/dist/{command-CLULRNcd.cjs → command-C39HGpGR.cjs} +2 -2
  11. package/dist/{command-CLULRNcd.cjs.map → command-C39HGpGR.cjs.map} +1 -1
  12. package/dist/{consent-manager-CJZ5GTmv.cjs → consent-manager-C3UVAKd_.cjs} +2 -2
  13. package/dist/{consent-manager-CJZ5GTmv.cjs.map → consent-manager-C3UVAKd_.cjs.map} +1 -1
  14. package/dist/{constants-CzmvL6Mw.cjs → constants-gJm1eQH0.cjs} +2 -2
  15. package/dist/{constants-CzmvL6Mw.cjs.map → constants-gJm1eQH0.cjs.map} +1 -1
  16. package/dist/{cron-Ts7kHP6_.cjs → cron-NLlyCiml.cjs} +2 -2
  17. package/dist/{cron-Ts7kHP6_.cjs.map → cron-NLlyCiml.cjs.map} +1 -1
  18. package/dist/{data-inventory-D0Tt_vAm.cjs → data-inventory-a9Nz9lUO.cjs} +2 -2
  19. package/dist/{data-inventory-D0Tt_vAm.cjs.map → data-inventory-a9Nz9lUO.cjs.map} +1 -1
  20. package/dist/{dataFlowsToDataSilos-B7nTxawV.cjs → dataFlowsToDataSilos-BJh0hzJI.cjs} +2 -2
  21. package/dist/{dataFlowsToDataSilos-B7nTxawV.cjs.map → dataFlowsToDataSilos-BJh0hzJI.cjs.map} +1 -1
  22. package/dist/{impl-_wktLwfn.cjs → impl--RUTvJko.cjs} +2 -2
  23. package/dist/{impl-_wktLwfn.cjs.map → impl--RUTvJko.cjs.map} +1 -1
  24. package/dist/{impl-CujcX7vE.cjs → impl-6vrF2_M3.cjs} +2 -2
  25. package/dist/{impl-CujcX7vE.cjs.map → impl-6vrF2_M3.cjs.map} +1 -1
  26. package/dist/{impl-8HXqFDdD.cjs → impl-BAZ34gSp.cjs} +2 -2
  27. package/dist/{impl-8HXqFDdD.cjs.map → impl-BAZ34gSp.cjs.map} +1 -1
  28. package/dist/{impl-BvrbCovf.cjs → impl-BAs-7neS.cjs} +2 -2
  29. package/dist/{impl-BvrbCovf.cjs.map → impl-BAs-7neS.cjs.map} +1 -1
  30. package/dist/{impl-CrieEyzk.cjs → impl-BF44h4oH.cjs} +2 -2
  31. package/dist/{impl-CrieEyzk.cjs.map → impl-BF44h4oH.cjs.map} +1 -1
  32. package/dist/{impl-1qwMfsU4.cjs → impl-BKXkRTVx.cjs} +2 -2
  33. package/dist/{impl-1qwMfsU4.cjs.map → impl-BKXkRTVx.cjs.map} +1 -1
  34. package/dist/{impl-ChHjX-p0.cjs → impl-BN8N7BHo.cjs} +2 -2
  35. package/dist/{impl-ChHjX-p0.cjs.map → impl-BN8N7BHo.cjs.map} +1 -1
  36. package/dist/{impl-B8rg6CMv.cjs → impl-BO1fP5DL.cjs} +2 -2
  37. package/dist/{impl-B8rg6CMv.cjs.map → impl-BO1fP5DL.cjs.map} +1 -1
  38. package/dist/{impl-DkyT66jZ.cjs → impl-BRAiiMt3.cjs} +2 -2
  39. package/dist/{impl-DkyT66jZ.cjs.map → impl-BRAiiMt3.cjs.map} +1 -1
  40. package/dist/{impl-C6Vv_fyU.cjs → impl-BRNha4nQ.cjs} +2 -2
  41. package/dist/{impl-C6Vv_fyU.cjs.map → impl-BRNha4nQ.cjs.map} +1 -1
  42. package/dist/{impl-BPxZw3LN.cjs → impl-Ba1d91O1.cjs} +2 -2
  43. package/dist/{impl-BPxZw3LN.cjs.map → impl-Ba1d91O1.cjs.map} +1 -1
  44. package/dist/{impl-Bhv353rp.cjs → impl-Bgp_TuxN.cjs} +2 -2
  45. package/dist/{impl-Bhv353rp.cjs.map → impl-Bgp_TuxN.cjs.map} +1 -1
  46. package/dist/{impl-DpkTAuVd.cjs → impl-BreaZGaV.cjs} +2 -2
  47. package/dist/{impl-DpkTAuVd.cjs.map → impl-BreaZGaV.cjs.map} +1 -1
  48. package/dist/{impl-zSp6Nypz.cjs → impl-BzAwMfNS.cjs} +2 -2
  49. package/dist/{impl-zSp6Nypz.cjs.map → impl-BzAwMfNS.cjs.map} +1 -1
  50. package/dist/{impl-DvFcMtV7.cjs → impl-C0eKnbO8.cjs} +2 -2
  51. package/dist/{impl-DvFcMtV7.cjs.map → impl-C0eKnbO8.cjs.map} +1 -1
  52. package/dist/{impl-BxKSXO7j.cjs → impl-C2kTLgRr.cjs} +2 -2
  53. package/dist/{impl-BxKSXO7j.cjs.map → impl-C2kTLgRr.cjs.map} +1 -1
  54. package/dist/{impl-BIjDq-3S.cjs → impl-CA7X_TDD.cjs} +2 -2
  55. package/dist/{impl-BIjDq-3S.cjs.map → impl-CA7X_TDD.cjs.map} +1 -1
  56. package/dist/{impl-DYHQz-Wu.cjs → impl-CC0T0jNd.cjs} +2 -2
  57. package/dist/{impl-DYHQz-Wu.cjs.map → impl-CC0T0jNd.cjs.map} +1 -1
  58. package/dist/{impl-B61wd2KQ.cjs → impl-CJT35FpG.cjs} +2 -2
  59. package/dist/{impl-B61wd2KQ.cjs.map → impl-CJT35FpG.cjs.map} +1 -1
  60. package/dist/{impl-Dzi2-R-5.cjs → impl-CTXPMoXc.cjs} +2 -2
  61. package/dist/{impl-Dzi2-R-5.cjs.map → impl-CTXPMoXc.cjs.map} +1 -1
  62. package/dist/{impl-Dzyo_6if.cjs → impl-CUScCLAS.cjs} +2 -2
  63. package/dist/{impl-Dzyo_6if.cjs.map → impl-CUScCLAS.cjs.map} +1 -1
  64. package/dist/{impl-DhKyE3ja.cjs → impl-CYmPZogW.cjs} +2 -2
  65. package/dist/{impl-DhKyE3ja.cjs.map → impl-CYmPZogW.cjs.map} +1 -1
  66. package/dist/{impl-BczOEWXK.cjs → impl-Ccd0FaOU.cjs} +2 -2
  67. package/dist/{impl-BczOEWXK.cjs.map → impl-Ccd0FaOU.cjs.map} +1 -1
  68. package/dist/{impl-BeUsmMIp.cjs → impl-CmKWcYiV.cjs} +2 -2
  69. package/dist/{impl-BeUsmMIp.cjs.map → impl-CmKWcYiV.cjs.map} +1 -1
  70. package/dist/{impl-brt-L_kS.cjs → impl-CqshC7my.cjs} +2 -2
  71. package/dist/{impl-brt-L_kS.cjs.map → impl-CqshC7my.cjs.map} +1 -1
  72. package/dist/{impl-DHIiB7cV.cjs → impl-Cypfgm4t.cjs} +2 -2
  73. package/dist/{impl-DHIiB7cV.cjs.map → impl-Cypfgm4t.cjs.map} +1 -1
  74. package/dist/{impl-D_tCWU8I.cjs → impl-D2SWeIGe.cjs} +2 -2
  75. package/dist/{impl-D_tCWU8I.cjs.map → impl-D2SWeIGe.cjs.map} +1 -1
  76. package/dist/{impl-DCKUxoWY.cjs → impl-DLwIQVA6.cjs} +2 -2
  77. package/dist/{impl-DCKUxoWY.cjs.map → impl-DLwIQVA6.cjs.map} +1 -1
  78. package/dist/{impl-AZPWCkCp.cjs → impl-DMm4lt-A.cjs} +2 -2
  79. package/dist/{impl-AZPWCkCp.cjs.map → impl-DMm4lt-A.cjs.map} +1 -1
  80. package/dist/{impl-iuvcsdad.cjs → impl-DRsuGuRx.cjs} +2 -2
  81. package/dist/{impl-iuvcsdad.cjs.map → impl-DRsuGuRx.cjs.map} +1 -1
  82. package/dist/{impl-D9OOb2JE.cjs → impl-DSrvfkVp.cjs} +2 -2
  83. package/dist/{impl-D9OOb2JE.cjs.map → impl-DSrvfkVp.cjs.map} +1 -1
  84. package/dist/{impl-JgMjiEBD.cjs → impl-DZMWJNLE.cjs} +2 -2
  85. package/dist/{impl-JgMjiEBD.cjs.map → impl-DZMWJNLE.cjs.map} +1 -1
  86. package/dist/{impl-CGSBsFc7.cjs → impl-DbqAvW7X.cjs} +2 -2
  87. package/dist/{impl-CGSBsFc7.cjs.map → impl-DbqAvW7X.cjs.map} +1 -1
  88. package/dist/{impl-kmDIC1No.cjs → impl-Dl78xJu6.cjs} +2 -2
  89. package/dist/{impl-kmDIC1No.cjs.map → impl-Dl78xJu6.cjs.map} +1 -1
  90. package/dist/{impl-ChqwjO34.cjs → impl-Dvpc-Qa5.cjs} +2 -2
  91. package/dist/{impl-ChqwjO34.cjs.map → impl-Dvpc-Qa5.cjs.map} +1 -1
  92. package/dist/{impl-DG_MFWMU.cjs → impl-DySeNL1m.cjs} +2 -2
  93. package/dist/{impl-DG_MFWMU.cjs.map → impl-DySeNL1m.cjs.map} +1 -1
  94. package/dist/{impl-D_4LdDL9.cjs → impl-Fj-Esff-.cjs} +2 -2
  95. package/dist/{impl-D_4LdDL9.cjs.map → impl-Fj-Esff-.cjs.map} +1 -1
  96. package/dist/{impl-afJ-fKK4.cjs → impl-W6tVmm8N.cjs} +2 -2
  97. package/dist/{impl-afJ-fKK4.cjs.map → impl-W6tVmm8N.cjs.map} +1 -1
  98. package/dist/{impl-BiPKUZQ2.cjs → impl-WphnR0cX.cjs} +2 -2
  99. package/dist/{impl-BiPKUZQ2.cjs.map → impl-WphnR0cX.cjs.map} +1 -1
  100. package/dist/{impl-ByavdlGX.cjs → impl-YNAicr-z.cjs} +2 -2
  101. package/dist/{impl-ByavdlGX.cjs.map → impl-YNAicr-z.cjs.map} +1 -1
  102. package/dist/{impl-HogBsNBk.cjs → impl-jEpWgC2N.cjs} +2 -2
  103. package/dist/{impl-HogBsNBk.cjs.map → impl-jEpWgC2N.cjs.map} +1 -1
  104. package/dist/{impl-JkHt--m4.cjs → impl-x2P-_Pk2.cjs} +2 -2
  105. package/dist/{impl-JkHt--m4.cjs.map → impl-x2P-_Pk2.cjs.map} +1 -1
  106. package/dist/index.cjs +1 -1
  107. package/dist/index.d.cts +58 -55
  108. package/dist/{manual-enrichment-CW8iihdb.cjs → manual-enrichment-DTVJo7hP.cjs} +2 -2
  109. package/dist/{manual-enrichment-CW8iihdb.cjs.map → manual-enrichment-DTVJo7hP.cjs.map} +1 -1
  110. package/dist/{pooling-Dw0a42I_.cjs → pooling-C-TYBnHI.cjs} +2 -2
  111. package/dist/{pooling-Dw0a42I_.cjs.map → pooling-C-TYBnHI.cjs.map} +1 -1
  112. package/dist/{preference-management-CkmW6Z91.cjs → preference-management-Ch77Yxod.cjs} +2 -2
  113. package/dist/{preference-management-CkmW6Z91.cjs.map → preference-management-Ch77Yxod.cjs.map} +1 -1
  114. package/dist/{syncConfigurationToTranscend-DkeLrq-I.cjs → syncConfigurationToTranscend-s-cjtUI3.cjs} +5 -4
  115. package/dist/syncConfigurationToTranscend-s-cjtUI3.cjs.map +1 -0
  116. package/dist/{uploadConsents-zr1Hg-JE.cjs → uploadConsents-CDkk_sWY.cjs} +2 -2
  117. package/dist/{uploadConsents-zr1Hg-JE.cjs.map → uploadConsents-CDkk_sWY.cjs.map} +1 -1
  118. package/package.json +1 -1
  119. package/dist/syncConfigurationToTranscend-DkeLrq-I.cjs.map +0 -1
package/dist/index.d.cts CHANGED
@@ -5676,8 +5676,6 @@ declare const ProcessingPurposePreviewInput: t.IntersectionC<[t.TypeC<{
5676
5676
  /** The parent purpose */
5677
5677
  purpose: t.KeyofC<{
5678
5678
  HR: unknown;
5679
- OTHER: unknown;
5680
- UNSPECIFIED: unknown;
5681
5679
  ESSENTIAL: unknown;
5682
5680
  ADDITIONAL_FUNCTIONALITY: unknown;
5683
5681
  ADVERTISING: unknown;
@@ -5688,6 +5686,8 @@ declare const ProcessingPurposePreviewInput: t.IntersectionC<[t.TypeC<{
5688
5686
  LEGAL: unknown;
5689
5687
  TRANSFER: unknown;
5690
5688
  SALE: unknown;
5689
+ OTHER: unknown;
5690
+ UNSPECIFIED: unknown;
5691
5691
  }>;
5692
5692
  }>, t.PartialC<{
5693
5693
  /** User-defined name for this processing purpose sub category */
@@ -5702,6 +5702,8 @@ declare const DataCategoryPreviewInput: t.IntersectionC<[t.TypeC<{
5702
5702
  /** The parent category */
5703
5703
  category: t.KeyofC<{
5704
5704
  ID: unknown;
5705
+ OTHER: unknown;
5706
+ UNSPECIFIED: unknown;
5705
5707
  FINANCIAL: unknown;
5706
5708
  HEALTH: unknown;
5707
5709
  CONTACT: unknown;
@@ -5714,8 +5716,6 @@ declare const DataCategoryPreviewInput: t.IntersectionC<[t.TypeC<{
5714
5716
  TRACKING: unknown;
5715
5717
  DEVICE: unknown;
5716
5718
  SURVEY: unknown;
5717
- OTHER: unknown;
5718
- UNSPECIFIED: unknown;
5719
5719
  NOT_PERSONAL_DATA: unknown;
5720
5720
  INTEGRATION_IDENTIFIER: unknown;
5721
5721
  }>;
@@ -5734,6 +5734,8 @@ declare const DataCategoryGuessInput: t.IntersectionC<[t.TypeC<{
5734
5734
  /** The parent category */
5735
5735
  category: t.KeyofC<{
5736
5736
  ID: unknown;
5737
+ OTHER: unknown;
5738
+ UNSPECIFIED: unknown;
5737
5739
  FINANCIAL: unknown;
5738
5740
  HEALTH: unknown;
5739
5741
  CONTACT: unknown;
@@ -5746,8 +5748,6 @@ declare const DataCategoryGuessInput: t.IntersectionC<[t.TypeC<{
5746
5748
  TRACKING: unknown;
5747
5749
  DEVICE: unknown;
5748
5750
  SURVEY: unknown;
5749
- OTHER: unknown;
5750
- UNSPECIFIED: unknown;
5751
5751
  NOT_PERSONAL_DATA: unknown;
5752
5752
  INTEGRATION_IDENTIFIER: unknown;
5753
5753
  }>;
@@ -5778,6 +5778,8 @@ declare const DataCategoryRecommendationInput: t.IntersectionC<[t.TypeC<{
5778
5778
  /** The parent category */
5779
5779
  category: t.KeyofC<{
5780
5780
  ID: unknown;
5781
+ OTHER: unknown;
5782
+ UNSPECIFIED: unknown;
5781
5783
  FINANCIAL: unknown;
5782
5784
  HEALTH: unknown;
5783
5785
  CONTACT: unknown;
@@ -5790,8 +5792,6 @@ declare const DataCategoryRecommendationInput: t.IntersectionC<[t.TypeC<{
5790
5792
  TRACKING: unknown;
5791
5793
  DEVICE: unknown;
5792
5794
  SURVEY: unknown;
5793
- OTHER: unknown;
5794
- UNSPECIFIED: unknown;
5795
5795
  NOT_PERSONAL_DATA: unknown;
5796
5796
  INTEGRATION_IDENTIFIER: unknown;
5797
5797
  }>;
@@ -11435,6 +11435,8 @@ declare const DataCategoryInput: t.IntersectionC<[t.TypeC<{
11435
11435
  /** Type of data category */
11436
11436
  category: t.KeyofC<{
11437
11437
  ID: unknown;
11438
+ OTHER: unknown;
11439
+ UNSPECIFIED: unknown;
11438
11440
  FINANCIAL: unknown;
11439
11441
  HEALTH: unknown;
11440
11442
  CONTACT: unknown;
@@ -11447,8 +11449,6 @@ declare const DataCategoryInput: t.IntersectionC<[t.TypeC<{
11447
11449
  TRACKING: unknown;
11448
11450
  DEVICE: unknown;
11449
11451
  SURVEY: unknown;
11450
- OTHER: unknown;
11451
- UNSPECIFIED: unknown;
11452
11452
  NOT_PERSONAL_DATA: unknown;
11453
11453
  INTEGRATION_IDENTIFIER: unknown;
11454
11454
  }>;
@@ -11493,8 +11493,6 @@ declare const ProcessingPurposeInput: t.IntersectionC<[t.TypeC<{
11493
11493
  /** Type of processing purpose */
11494
11494
  purpose: t.KeyofC<{
11495
11495
  HR: unknown;
11496
- OTHER: unknown;
11497
- UNSPECIFIED: unknown;
11498
11496
  ESSENTIAL: unknown;
11499
11497
  ADDITIONAL_FUNCTIONALITY: unknown;
11500
11498
  ADVERTISING: unknown;
@@ -11505,6 +11503,8 @@ declare const ProcessingPurposeInput: t.IntersectionC<[t.TypeC<{
11505
11503
  LEGAL: unknown;
11506
11504
  TRANSFER: unknown;
11507
11505
  SALE: unknown;
11506
+ OTHER: unknown;
11507
+ UNSPECIFIED: unknown;
11508
11508
  }>;
11509
11509
  }>, t.PartialC<{
11510
11510
  /** Description of processing purpose */
@@ -11598,8 +11598,6 @@ declare const FieldInput: t.IntersectionC<[t.TypeC<{
11598
11598
  /** The parent purpose */
11599
11599
  purpose: t.KeyofC<{
11600
11600
  HR: unknown;
11601
- OTHER: unknown;
11602
- UNSPECIFIED: unknown;
11603
11601
  ESSENTIAL: unknown;
11604
11602
  ADDITIONAL_FUNCTIONALITY: unknown;
11605
11603
  ADVERTISING: unknown;
@@ -11610,6 +11608,8 @@ declare const FieldInput: t.IntersectionC<[t.TypeC<{
11610
11608
  LEGAL: unknown;
11611
11609
  TRANSFER: unknown;
11612
11610
  SALE: unknown;
11611
+ OTHER: unknown;
11612
+ UNSPECIFIED: unknown;
11613
11613
  }>;
11614
11614
  }>, t.PartialC<{
11615
11615
  /** User-defined name for this processing purpose sub category */
@@ -11624,6 +11624,8 @@ declare const FieldInput: t.IntersectionC<[t.TypeC<{
11624
11624
  /** The parent category */
11625
11625
  category: t.KeyofC<{
11626
11626
  ID: unknown;
11627
+ OTHER: unknown;
11628
+ UNSPECIFIED: unknown;
11627
11629
  FINANCIAL: unknown;
11628
11630
  HEALTH: unknown;
11629
11631
  CONTACT: unknown;
@@ -11636,8 +11638,6 @@ declare const FieldInput: t.IntersectionC<[t.TypeC<{
11636
11638
  TRACKING: unknown;
11637
11639
  DEVICE: unknown;
11638
11640
  SURVEY: unknown;
11639
- OTHER: unknown;
11640
- UNSPECIFIED: unknown;
11641
11641
  NOT_PERSONAL_DATA: unknown;
11642
11642
  INTEGRATION_IDENTIFIER: unknown;
11643
11643
  }>;
@@ -11656,6 +11656,8 @@ declare const FieldInput: t.IntersectionC<[t.TypeC<{
11656
11656
  /** The parent category */
11657
11657
  category: t.KeyofC<{
11658
11658
  ID: unknown;
11659
+ OTHER: unknown;
11660
+ UNSPECIFIED: unknown;
11659
11661
  FINANCIAL: unknown;
11660
11662
  HEALTH: unknown;
11661
11663
  CONTACT: unknown;
@@ -11668,8 +11670,6 @@ declare const FieldInput: t.IntersectionC<[t.TypeC<{
11668
11670
  TRACKING: unknown;
11669
11671
  DEVICE: unknown;
11670
11672
  SURVEY: unknown;
11671
- OTHER: unknown;
11672
- UNSPECIFIED: unknown;
11673
11673
  NOT_PERSONAL_DATA: unknown;
11674
11674
  INTEGRATION_IDENTIFIER: unknown;
11675
11675
  }>;
@@ -11817,8 +11817,6 @@ declare const DatapointInput: t.IntersectionC<[t.TypeC<{
11817
11817
  /** The parent purpose */
11818
11818
  purpose: t.KeyofC<{
11819
11819
  HR: unknown;
11820
- OTHER: unknown;
11821
- UNSPECIFIED: unknown;
11822
11820
  ESSENTIAL: unknown;
11823
11821
  ADDITIONAL_FUNCTIONALITY: unknown;
11824
11822
  ADVERTISING: unknown;
@@ -11829,6 +11827,8 @@ declare const DatapointInput: t.IntersectionC<[t.TypeC<{
11829
11827
  LEGAL: unknown;
11830
11828
  TRANSFER: unknown;
11831
11829
  SALE: unknown;
11830
+ OTHER: unknown;
11831
+ UNSPECIFIED: unknown;
11832
11832
  }>;
11833
11833
  }>, t.PartialC<{
11834
11834
  /** User-defined name for this processing purpose sub category */
@@ -11843,6 +11843,8 @@ declare const DatapointInput: t.IntersectionC<[t.TypeC<{
11843
11843
  /** The parent category */
11844
11844
  category: t.KeyofC<{
11845
11845
  ID: unknown;
11846
+ OTHER: unknown;
11847
+ UNSPECIFIED: unknown;
11846
11848
  FINANCIAL: unknown;
11847
11849
  HEALTH: unknown;
11848
11850
  CONTACT: unknown;
@@ -11855,8 +11857,6 @@ declare const DatapointInput: t.IntersectionC<[t.TypeC<{
11855
11857
  TRACKING: unknown;
11856
11858
  DEVICE: unknown;
11857
11859
  SURVEY: unknown;
11858
- OTHER: unknown;
11859
- UNSPECIFIED: unknown;
11860
11860
  NOT_PERSONAL_DATA: unknown;
11861
11861
  INTEGRATION_IDENTIFIER: unknown;
11862
11862
  }>;
@@ -11875,6 +11875,8 @@ declare const DatapointInput: t.IntersectionC<[t.TypeC<{
11875
11875
  /** The parent category */
11876
11876
  category: t.KeyofC<{
11877
11877
  ID: unknown;
11878
+ OTHER: unknown;
11879
+ UNSPECIFIED: unknown;
11878
11880
  FINANCIAL: unknown;
11879
11881
  HEALTH: unknown;
11880
11882
  CONTACT: unknown;
@@ -11887,8 +11889,6 @@ declare const DatapointInput: t.IntersectionC<[t.TypeC<{
11887
11889
  TRACKING: unknown;
11888
11890
  DEVICE: unknown;
11889
11891
  SURVEY: unknown;
11890
- OTHER: unknown;
11891
- UNSPECIFIED: unknown;
11892
11892
  NOT_PERSONAL_DATA: unknown;
11893
11893
  INTEGRATION_IDENTIFIER: unknown;
11894
11894
  }>;
@@ -33663,8 +33663,6 @@ declare const ProcessingActivityInput: t.IntersectionC<[t.TypeC<{
33663
33663
  /** The parent purpose */
33664
33664
  purpose: t.KeyofC<{
33665
33665
  HR: unknown;
33666
- OTHER: unknown;
33667
- UNSPECIFIED: unknown;
33668
33666
  ESSENTIAL: unknown;
33669
33667
  ADDITIONAL_FUNCTIONALITY: unknown;
33670
33668
  ADVERTISING: unknown;
@@ -33675,6 +33673,8 @@ declare const ProcessingActivityInput: t.IntersectionC<[t.TypeC<{
33675
33673
  LEGAL: unknown;
33676
33674
  TRANSFER: unknown;
33677
33675
  SALE: unknown;
33676
+ OTHER: unknown;
33677
+ UNSPECIFIED: unknown;
33678
33678
  }>;
33679
33679
  }>, t.PartialC<{
33680
33680
  /** User-defined name for this processing purpose sub category */
@@ -33689,6 +33689,8 @@ declare const ProcessingActivityInput: t.IntersectionC<[t.TypeC<{
33689
33689
  /** The parent category */
33690
33690
  category: t.KeyofC<{
33691
33691
  ID: unknown;
33692
+ OTHER: unknown;
33693
+ UNSPECIFIED: unknown;
33692
33694
  FINANCIAL: unknown;
33693
33695
  HEALTH: unknown;
33694
33696
  CONTACT: unknown;
@@ -33701,8 +33703,6 @@ declare const ProcessingActivityInput: t.IntersectionC<[t.TypeC<{
33701
33703
  TRACKING: unknown;
33702
33704
  DEVICE: unknown;
33703
33705
  SURVEY: unknown;
33704
- OTHER: unknown;
33705
- UNSPECIFIED: unknown;
33706
33706
  NOT_PERSONAL_DATA: unknown;
33707
33707
  INTEGRATION_IDENTIFIER: unknown;
33708
33708
  }>;
@@ -50292,7 +50292,6 @@ declare const ConsentManageExperienceInput: t.IntersectionC<[t.TypeC<{
50292
50292
  * Browser languages that define this regional experience
50293
50293
  */
50294
50294
  browserLanguages: t.ArrayC<t.KeyofC<{
50295
- no: unknown;
50296
50295
  om: unknown;
50297
50296
  ab: unknown;
50298
50297
  aa: unknown;
@@ -50484,6 +50483,7 @@ declare const ConsentManageExperienceInput: t.IntersectionC<[t.TypeC<{
50484
50483
  ne: unknown;
50485
50484
  nd: unknown;
50486
50485
  ns: unknown;
50486
+ no: unknown;
50487
50487
  "no-NO": unknown;
50488
50488
  nb: unknown;
50489
50489
  "nb-NO": unknown;
@@ -51081,8 +51081,8 @@ declare const ConsentManagerInput: t.PartialC<{
51081
51081
  }>;
51082
51082
  /** Whether the site owner has signed the IAB agreement */
51083
51083
  signedIabAgreement: t.KeyofC<{
51084
- yes: unknown;
51085
51084
  no: unknown;
51085
+ yes: unknown;
51086
51086
  unknown: unknown;
51087
51087
  }>;
51088
51088
  /** Regional experience configurations */
@@ -56534,7 +56534,6 @@ declare const ConsentManagerInput: t.PartialC<{
56534
56534
  * Browser languages that define this regional experience
56535
56535
  */
56536
56536
  browserLanguages: t.ArrayC<t.KeyofC<{
56537
- no: unknown;
56538
56537
  om: unknown;
56539
56538
  ab: unknown;
56540
56539
  aa: unknown;
@@ -56726,6 +56725,7 @@ declare const ConsentManagerInput: t.PartialC<{
56726
56725
  ne: unknown;
56727
56726
  nd: unknown;
56728
56727
  ns: unknown;
56728
+ no: unknown;
56729
56729
  "no-NO": unknown;
56730
56730
  nb: unknown;
56731
56731
  "nb-NO": unknown;
@@ -58368,8 +58368,6 @@ declare const DataSiloInput: t.IntersectionC<[t.TypeC<{
58368
58368
  /** The parent purpose */
58369
58369
  purpose: t.KeyofC<{
58370
58370
  HR: unknown;
58371
- OTHER: unknown;
58372
- UNSPECIFIED: unknown;
58373
58371
  ESSENTIAL: unknown;
58374
58372
  ADDITIONAL_FUNCTIONALITY: unknown;
58375
58373
  ADVERTISING: unknown;
@@ -58380,6 +58378,8 @@ declare const DataSiloInput: t.IntersectionC<[t.TypeC<{
58380
58378
  LEGAL: unknown;
58381
58379
  TRANSFER: unknown;
58382
58380
  SALE: unknown;
58381
+ OTHER: unknown;
58382
+ UNSPECIFIED: unknown;
58383
58383
  }>;
58384
58384
  }>, t.PartialC<{
58385
58385
  /** User-defined name for this processing purpose sub category */
@@ -58394,6 +58394,8 @@ declare const DataSiloInput: t.IntersectionC<[t.TypeC<{
58394
58394
  /** The parent category */
58395
58395
  category: t.KeyofC<{
58396
58396
  ID: unknown;
58397
+ OTHER: unknown;
58398
+ UNSPECIFIED: unknown;
58397
58399
  FINANCIAL: unknown;
58398
58400
  HEALTH: unknown;
58399
58401
  CONTACT: unknown;
@@ -58406,8 +58408,6 @@ declare const DataSiloInput: t.IntersectionC<[t.TypeC<{
58406
58408
  TRACKING: unknown;
58407
58409
  DEVICE: unknown;
58408
58410
  SURVEY: unknown;
58409
- OTHER: unknown;
58410
- UNSPECIFIED: unknown;
58411
58411
  NOT_PERSONAL_DATA: unknown;
58412
58412
  INTEGRATION_IDENTIFIER: unknown;
58413
58413
  }>;
@@ -58426,6 +58426,8 @@ declare const DataSiloInput: t.IntersectionC<[t.TypeC<{
58426
58426
  /** The parent category */
58427
58427
  category: t.KeyofC<{
58428
58428
  ID: unknown;
58429
+ OTHER: unknown;
58430
+ UNSPECIFIED: unknown;
58429
58431
  FINANCIAL: unknown;
58430
58432
  HEALTH: unknown;
58431
58433
  CONTACT: unknown;
@@ -58438,8 +58440,6 @@ declare const DataSiloInput: t.IntersectionC<[t.TypeC<{
58438
58440
  TRACKING: unknown;
58439
58441
  DEVICE: unknown;
58440
58442
  SURVEY: unknown;
58441
- OTHER: unknown;
58442
- UNSPECIFIED: unknown;
58443
58443
  NOT_PERSONAL_DATA: unknown;
58444
58444
  INTEGRATION_IDENTIFIER: unknown;
58445
58445
  }>;
@@ -87502,6 +87502,8 @@ declare const TranscendInput: t.PartialC<{
87502
87502
  /** Type of data category */
87503
87503
  category: t.KeyofC<{
87504
87504
  ID: unknown;
87505
+ OTHER: unknown;
87506
+ UNSPECIFIED: unknown;
87505
87507
  FINANCIAL: unknown;
87506
87508
  HEALTH: unknown;
87507
87509
  CONTACT: unknown;
@@ -87514,8 +87516,6 @@ declare const TranscendInput: t.PartialC<{
87514
87516
  TRACKING: unknown;
87515
87517
  DEVICE: unknown;
87516
87518
  SURVEY: unknown;
87517
- OTHER: unknown;
87518
- UNSPECIFIED: unknown;
87519
87519
  NOT_PERSONAL_DATA: unknown;
87520
87520
  INTEGRATION_IDENTIFIER: unknown;
87521
87521
  }>;
@@ -87556,8 +87556,6 @@ declare const TranscendInput: t.PartialC<{
87556
87556
  /** Type of processing purpose */
87557
87557
  purpose: t.KeyofC<{
87558
87558
  HR: unknown;
87559
- OTHER: unknown;
87560
- UNSPECIFIED: unknown;
87561
87559
  ESSENTIAL: unknown;
87562
87560
  ADDITIONAL_FUNCTIONALITY: unknown;
87563
87561
  ADVERTISING: unknown;
@@ -87568,6 +87566,8 @@ declare const TranscendInput: t.PartialC<{
87568
87566
  LEGAL: unknown;
87569
87567
  TRANSFER: unknown;
87570
87568
  SALE: unknown;
87569
+ OTHER: unknown;
87570
+ UNSPECIFIED: unknown;
87571
87571
  }>;
87572
87572
  }>, t.PartialC<{
87573
87573
  /** Description of processing purpose */
@@ -98663,8 +98663,6 @@ declare const TranscendInput: t.PartialC<{
98663
98663
  /** The parent purpose */
98664
98664
  purpose: t.KeyofC<{
98665
98665
  HR: unknown;
98666
- OTHER: unknown;
98667
- UNSPECIFIED: unknown;
98668
98666
  ESSENTIAL: unknown;
98669
98667
  ADDITIONAL_FUNCTIONALITY: unknown;
98670
98668
  ADVERTISING: unknown;
@@ -98675,6 +98673,8 @@ declare const TranscendInput: t.PartialC<{
98675
98673
  LEGAL: unknown;
98676
98674
  TRANSFER: unknown;
98677
98675
  SALE: unknown;
98676
+ OTHER: unknown;
98677
+ UNSPECIFIED: unknown;
98678
98678
  }>;
98679
98679
  }>, t.PartialC<{
98680
98680
  /** User-defined name for this processing purpose sub category */
@@ -98689,6 +98689,8 @@ declare const TranscendInput: t.PartialC<{
98689
98689
  /** The parent category */
98690
98690
  category: t.KeyofC<{
98691
98691
  ID: unknown;
98692
+ OTHER: unknown;
98693
+ UNSPECIFIED: unknown;
98692
98694
  FINANCIAL: unknown;
98693
98695
  HEALTH: unknown;
98694
98696
  CONTACT: unknown;
@@ -98701,8 +98703,6 @@ declare const TranscendInput: t.PartialC<{
98701
98703
  TRACKING: unknown;
98702
98704
  DEVICE: unknown;
98703
98705
  SURVEY: unknown;
98704
- OTHER: unknown;
98705
- UNSPECIFIED: unknown;
98706
98706
  NOT_PERSONAL_DATA: unknown;
98707
98707
  INTEGRATION_IDENTIFIER: unknown;
98708
98708
  }>;
@@ -98721,6 +98721,8 @@ declare const TranscendInput: t.PartialC<{
98721
98721
  /** The parent category */
98722
98722
  category: t.KeyofC<{
98723
98723
  ID: unknown;
98724
+ OTHER: unknown;
98725
+ UNSPECIFIED: unknown;
98724
98726
  FINANCIAL: unknown;
98725
98727
  HEALTH: unknown;
98726
98728
  CONTACT: unknown;
@@ -98733,8 +98735,6 @@ declare const TranscendInput: t.PartialC<{
98733
98735
  TRACKING: unknown;
98734
98736
  DEVICE: unknown;
98735
98737
  SURVEY: unknown;
98736
- OTHER: unknown;
98737
- UNSPECIFIED: unknown;
98738
98738
  NOT_PERSONAL_DATA: unknown;
98739
98739
  INTEGRATION_IDENTIFIER: unknown;
98740
98740
  }>;
@@ -104370,8 +104370,8 @@ declare const TranscendInput: t.PartialC<{
104370
104370
  }>;
104371
104371
  /** Whether the site owner has signed the IAB agreement */
104372
104372
  signedIabAgreement: t.KeyofC<{
104373
- yes: unknown;
104374
104373
  no: unknown;
104374
+ yes: unknown;
104375
104375
  unknown: unknown;
104376
104376
  }>;
104377
104377
  /** Regional experience configurations */
@@ -109823,7 +109823,6 @@ declare const TranscendInput: t.PartialC<{
109823
109823
  * Browser languages that define this regional experience
109824
109824
  */
109825
109825
  browserLanguages: t.ArrayC<t.KeyofC<{
109826
- no: unknown;
109827
109826
  om: unknown;
109828
109827
  ab: unknown;
109829
109828
  aa: unknown;
@@ -110015,6 +110014,7 @@ declare const TranscendInput: t.PartialC<{
110015
110014
  ne: unknown;
110016
110015
  nd: unknown;
110017
110016
  ns: unknown;
110017
+ no: unknown;
110018
110018
  "no-NO": unknown;
110019
110019
  nb: unknown;
110020
110020
  "nb-NO": unknown;
@@ -123120,8 +123120,6 @@ declare const TranscendInput: t.PartialC<{
123120
123120
  /** The parent purpose */
123121
123121
  purpose: t.KeyofC<{
123122
123122
  HR: unknown;
123123
- OTHER: unknown;
123124
- UNSPECIFIED: unknown;
123125
123123
  ESSENTIAL: unknown;
123126
123124
  ADDITIONAL_FUNCTIONALITY: unknown;
123127
123125
  ADVERTISING: unknown;
@@ -123132,6 +123130,8 @@ declare const TranscendInput: t.PartialC<{
123132
123130
  LEGAL: unknown;
123133
123131
  TRANSFER: unknown;
123134
123132
  SALE: unknown;
123133
+ OTHER: unknown;
123134
+ UNSPECIFIED: unknown;
123135
123135
  }>;
123136
123136
  }>, t.PartialC<{
123137
123137
  /** User-defined name for this processing purpose sub category */
@@ -123146,6 +123146,8 @@ declare const TranscendInput: t.PartialC<{
123146
123146
  /** The parent category */
123147
123147
  category: t.KeyofC<{
123148
123148
  ID: unknown;
123149
+ OTHER: unknown;
123150
+ UNSPECIFIED: unknown;
123149
123151
  FINANCIAL: unknown;
123150
123152
  HEALTH: unknown;
123151
123153
  CONTACT: unknown;
@@ -123158,8 +123160,6 @@ declare const TranscendInput: t.PartialC<{
123158
123160
  TRACKING: unknown;
123159
123161
  DEVICE: unknown;
123160
123162
  SURVEY: unknown;
123161
- OTHER: unknown;
123162
- UNSPECIFIED: unknown;
123163
123163
  NOT_PERSONAL_DATA: unknown;
123164
123164
  INTEGRATION_IDENTIFIER: unknown;
123165
123165
  }>;
@@ -136831,9 +136831,9 @@ declare const RequestIdentifier: t.TypeC<{
136831
136831
  value: t.StringC;
136832
136832
  /** Type of identifier */
136833
136833
  type: t.KeyofC<{
136834
- transcend: unknown;
136835
136834
  email: unknown;
136836
136835
  phone: unknown;
136836
+ transcend: unknown;
136837
136837
  coreIdentifier: unknown;
136838
136838
  custom: unknown;
136839
136839
  gaid: unknown;
@@ -136877,9 +136877,9 @@ declare const RequestIdentifiersResponse: t.TypeC<{
136877
136877
  value: t.StringC;
136878
136878
  /** Type of identifier */
136879
136879
  type: t.KeyofC<{
136880
- transcend: unknown;
136881
136880
  email: unknown;
136882
136881
  phone: unknown;
136882
+ transcend: unknown;
136883
136883
  coreIdentifier: unknown;
136884
136884
  custom: unknown;
136885
136885
  gaid: unknown;
@@ -142635,6 +142635,8 @@ declare const PrivacyRequest: t.IntersectionC<[t.TypeC<{
142635
142635
  }>, t.PartialC<{
142636
142636
  /** Days remaining until expired */
142637
142637
  daysRemaining: t.UnionC<[t.NullC, t.NumberC]>;
142638
+ /** Time when request was successfully completed */
142639
+ successfullyCompletedAt: t.UnionC<[t.NullC, t.StringC]>;
142638
142640
  /** Purpose */
142639
142641
  purpose: t.TypeC<{
142640
142642
  title: t.StringC;
@@ -156868,6 +156870,7 @@ declare function formatRequestForCsv({
156868
156870
  subjectType,
156869
156871
  details,
156870
156872
  createdAt,
156873
+ successfullyCompletedAt,
156871
156874
  country,
156872
156875
  locale,
156873
156876
  origin,
@@ -1,2 +1,2 @@
1
- const e=require(`./chunk-Bmb41Sf3.cjs`),t=require(`./constants-CzmvL6Mw.cjs`),n=require(`./syncConfigurationToTranscend-DkeLrq-I.cjs`),r=require(`./logger-DQwEYtSS.cjs`);let i=require(`@transcend-io/privacy-types`),a=require(`colors`);a=e.t(a);let o=require(`io-ts`);o=e.t(o);async function s({file:e,auth:o,sombraAuth:s,requestActions:c=[],concurrency:l=100,transcendUrl:u=t.a}){let d=n.ai(u,o),f=await n.ii(u,o,s);r.t.info(a.default.magenta(`Pulling manual enrichment requests, filtered for actions: ${c.join(`,`)}`));let p=await n.mr(d,{actions:c,statuses:[i.RequestStatus.Enriching]});await n.vr(d);let m=[];await n.As(p,async e=>{let t=await n.br(d,{requestId:e.id});if(t.filter(({status:e})=>e===`ACTION_REQUIRED`)){let r=await n._r(d,f,{requestId:e.id,skipSombraCheck:!0});m.push({...e,requestIdentifiers:r,requestEnrichers:t})}},{concurrency:l});let h=m.map(({attributeValues:e,requestIdentifiers:t,requestEnrichers:r,...i})=>({...i,...Object.entries(n.Fs(t,`name`)).reduce((e,[t,n])=>Object.assign(e,{[t]:n.map(({value:e})=>e).join(`,`)}),{}),...Object.entries(n.Fs(e,`attributeKey.name`)).reduce((e,[t,n])=>Object.assign(e,{[t]:n.map(({name:e})=>e).join(`,`)}),{})}));return await n.l(e,h,n.Ms(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.Ms(n.pi(r)).length===0?e:Object.assign(e,{[t]:n.Ms(n.pi(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.ii(f,i,o),m=n.ai(f,i);r.t.info(a.default.magenta(`Reading "${e}" from disk`));let h=n.ui(e,l);r.t.info(a.default.magenta(`Enriching "${h.length}" privacy requests.`));let g=0,_=0,v=0;if(await n.As(h,async(e,t)=>{try{c&&(await n.i(m,n.Fo,{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-CW8iihdb.cjs.map
1
+ const e=require(`./chunk-Bmb41Sf3.cjs`),t=require(`./constants-gJm1eQH0.cjs`),n=require(`./syncConfigurationToTranscend-s-cjtUI3.cjs`),r=require(`./logger-DQwEYtSS.cjs`);let i=require(`@transcend-io/privacy-types`),a=require(`colors`);a=e.t(a);let o=require(`io-ts`);o=e.t(o);async function s({file:e,auth:o,sombraAuth:s,requestActions:c=[],concurrency:l=100,transcendUrl:u=t.a}){let d=n.ai(u,o),f=await n.ii(u,o,s);r.t.info(a.default.magenta(`Pulling manual enrichment requests, filtered for actions: ${c.join(`,`)}`));let p=await n.mr(d,{actions:c,statuses:[i.RequestStatus.Enriching]});await n.vr(d);let m=[];await n.As(p,async e=>{let t=await n.br(d,{requestId:e.id});if(t.filter(({status:e})=>e===`ACTION_REQUIRED`)){let r=await n._r(d,f,{requestId:e.id,skipSombraCheck:!0});m.push({...e,requestIdentifiers:r,requestEnrichers:t})}},{concurrency:l});let h=m.map(({attributeValues:e,requestIdentifiers:t,requestEnrichers:r,...i})=>({...i,...Object.entries(n.Fs(t,`name`)).reduce((e,[t,n])=>Object.assign(e,{[t]:n.map(({value:e})=>e).join(`,`)}),{}),...Object.entries(n.Fs(e,`attributeKey.name`)).reduce((e,[t,n])=>Object.assign(e,{[t]:n.map(({name:e})=>e).join(`,`)}),{})}));return await n.l(e,h,n.Ms(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.Ms(n.pi(r)).length===0?e:Object.assign(e,{[t]:n.Ms(n.pi(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.ii(f,i,o),m=n.ai(f,i);r.t.info(a.default.magenta(`Reading "${e}" from disk`));let h=n.ui(e,l);r.t.info(a.default.magenta(`Enriching "${h.length}" privacy requests.`));let g=0,_=0,v=0;if(await n.As(h,async(e,t)=>{try{c&&(await n.i(m,n.Fo,{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-DTVJo7hP.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"manual-enrichment-CW8iihdb.cjs","names":["DEFAULT_TRANSCEND_API","buildTranscendGraphQLClient","createSombraGotInstance","fetchAllRequests","RequestStatus","validateSombraVersion","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 validateSombraVersion,\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 await validateSombraVersion(client);\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 skipSombraCheck: true,\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-DTVJo7hP.cjs","names":["DEFAULT_TRANSCEND_API","buildTranscendGraphQLClient","createSombraGotInstance","fetchAllRequests","RequestStatus","validateSombraVersion","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 validateSombraVersion,\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 await validateSombraVersion(client);\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 skipSombraCheck: true,\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(`./chunk-Bmb41Sf3.cjs`),t=require(`./constants-CzmvL6Mw.cjs`),n=require(`./syncConfigurationToTranscend-DkeLrq-I.cjs`),r=require(`./logger-DQwEYtSS.cjs`);let i=require(`node:fs`),a=require(`node:os`),o=require(`node:path`),s=require(`colors`);s=e.t(s);let c=require(`node:child_process`),l=require(`node:readline`);l=e.t(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(`./chunk-Bmb41Sf3.cjs`),t=require(`./constants-gJm1eQH0.cjs`),n=require(`./syncConfigurationToTranscend-s-cjtUI3.cjs`),r=require(`./logger-DQwEYtSS.cjs`);let i=require(`node:fs`),a=require(`node:os`),o=require(`node:path`),s=require(`colors`);s=e.t(s);let c=require(`node:child_process`),l=require(`node:readline`);l=e.t(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()}H=k({workers:w,onAttach:G,onDetach:K,onCtrlC:W,getLogPaths:e=>N(e,w,E),replayBytes:200*1024,replayWhich:[`out`,`err`],onEnterAttachScreen:G}),e.extraKeyHandler&&(z=e.extraKeyHandler({logsBySlot:E,repaint:()=>B(),setPaused:e=>{R=e}}),process.stdin.on(`data`,z))}await new Promise(e=>{let t=setInterval(async()=>{if(M===0){if(clearInterval(t),I&&clearInterval(I),H(),z)try{process.stdin.off(`data`,z)}catch{}U();let n=Date.now();try{await l.postProcess?.({slots:T,totals:j,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-Dw0a42I_.cjs.map
23
+ //# sourceMappingURL=pooling-C-TYBnHI.cjs.map