@ucptools/validator 1.0.1 → 1.2.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 (162) hide show
  1. package/dist/auth/config.d.ts +20 -0
  2. package/dist/auth/config.d.ts.map +1 -0
  3. package/dist/auth/config.js +114 -0
  4. package/dist/auth/config.js.map +1 -0
  5. package/dist/auth/index.d.ts +5 -0
  6. package/dist/auth/index.d.ts.map +1 -0
  7. package/dist/auth/index.js +17 -0
  8. package/dist/auth/index.js.map +1 -0
  9. package/dist/auth/middleware.d.ts +45 -0
  10. package/dist/auth/middleware.d.ts.map +1 -0
  11. package/dist/auth/middleware.js +170 -0
  12. package/dist/auth/middleware.js.map +1 -0
  13. package/dist/auth/service.d.ts +80 -0
  14. package/dist/auth/service.d.ts.map +1 -0
  15. package/dist/auth/service.js +298 -0
  16. package/dist/auth/service.js.map +1 -0
  17. package/dist/cli/index.js +96 -0
  18. package/dist/cli/index.js.map +1 -1
  19. package/dist/cli/mock-server.d.ts +20 -0
  20. package/dist/cli/mock-server.d.ts.map +1 -0
  21. package/dist/cli/mock-server.js +261 -0
  22. package/dist/cli/mock-server.js.map +1 -0
  23. package/dist/db/index.d.ts +8 -2
  24. package/dist/db/index.d.ts.map +1 -1
  25. package/dist/db/index.js +22 -5
  26. package/dist/db/index.js.map +1 -1
  27. package/dist/db/schema.d.ts +3570 -128
  28. package/dist/db/schema.d.ts.map +1 -1
  29. package/dist/db/schema.js +377 -17
  30. package/dist/db/schema.js.map +1 -1
  31. package/dist/db/utils.d.ts +252 -0
  32. package/dist/db/utils.d.ts.map +1 -0
  33. package/dist/db/utils.js +295 -0
  34. package/dist/db/utils.js.map +1 -0
  35. package/dist/feed-analyzer/feed-analyzer.d.ts.map +1 -1
  36. package/dist/feed-analyzer/feed-analyzer.js +218 -4
  37. package/dist/feed-analyzer/feed-analyzer.js.map +1 -1
  38. package/dist/feed-analyzer/types.d.ts +82 -1
  39. package/dist/feed-analyzer/types.d.ts.map +1 -1
  40. package/dist/feed-analyzer/types.js +13 -0
  41. package/dist/feed-analyzer/types.js.map +1 -1
  42. package/dist/generator/profile-builder.d.ts.map +1 -1
  43. package/dist/generator/profile-builder.js +158 -115
  44. package/dist/generator/profile-builder.js.map +1 -1
  45. package/dist/lib/analytics.d.ts +349 -0
  46. package/dist/lib/analytics.d.ts.map +1 -0
  47. package/dist/lib/analytics.js +198 -0
  48. package/dist/lib/analytics.js.map +1 -0
  49. package/dist/security/security-scanner.d.ts.map +1 -1
  50. package/dist/security/security-scanner.js +130 -2
  51. package/dist/security/security-scanner.js.map +1 -1
  52. package/dist/security/types.d.ts +32 -0
  53. package/dist/security/types.d.ts.map +1 -1
  54. package/dist/security/types.js.map +1 -1
  55. package/dist/services/analytics.d.ts +114 -0
  56. package/dist/services/analytics.d.ts.map +1 -0
  57. package/dist/services/analytics.js +862 -0
  58. package/dist/services/analytics.js.map +1 -0
  59. package/dist/services/badge.d.ts +31 -0
  60. package/dist/services/badge.d.ts.map +1 -0
  61. package/dist/services/badge.js +152 -0
  62. package/dist/services/badge.js.map +1 -0
  63. package/dist/services/cron.d.ts +127 -0
  64. package/dist/services/cron.d.ts.map +1 -0
  65. package/dist/services/cron.js +693 -0
  66. package/dist/services/cron.js.map +1 -0
  67. package/dist/services/directory.d.ts +2 -0
  68. package/dist/services/directory.d.ts.map +1 -1
  69. package/dist/services/directory.js +45 -27
  70. package/dist/services/directory.js.map +1 -1
  71. package/dist/services/email.d.ts +127 -0
  72. package/dist/services/email.d.ts.map +1 -0
  73. package/dist/services/email.js +876 -0
  74. package/dist/services/email.js.map +1 -0
  75. package/dist/services/hosted-profiles.d.ts +77 -0
  76. package/dist/services/hosted-profiles.d.ts.map +1 -0
  77. package/dist/services/hosted-profiles.js +433 -0
  78. package/dist/services/hosted-profiles.js.map +1 -0
  79. package/dist/services/latency.d.ts +67 -0
  80. package/dist/services/latency.d.ts.map +1 -0
  81. package/dist/services/latency.js +274 -0
  82. package/dist/services/latency.js.map +1 -0
  83. package/dist/services/manifest-compliance.d.ts +64 -0
  84. package/dist/services/manifest-compliance.d.ts.map +1 -0
  85. package/dist/services/manifest-compliance.js +271 -0
  86. package/dist/services/manifest-compliance.js.map +1 -0
  87. package/dist/services/monitoring-diff.d.ts +31 -0
  88. package/dist/services/monitoring-diff.d.ts.map +1 -0
  89. package/dist/services/monitoring-diff.js +189 -0
  90. package/dist/services/monitoring-diff.js.map +1 -0
  91. package/dist/services/notifications.d.ts +46 -0
  92. package/dist/services/notifications.d.ts.map +1 -0
  93. package/dist/services/notifications.js +88 -0
  94. package/dist/services/notifications.js.map +1 -0
  95. package/dist/services/posthog.d.ts +43 -0
  96. package/dist/services/posthog.d.ts.map +1 -0
  97. package/dist/services/posthog.js +110 -0
  98. package/dist/services/posthog.js.map +1 -0
  99. package/dist/services/stripe.d.ts +93 -0
  100. package/dist/services/stripe.d.ts.map +1 -0
  101. package/dist/services/stripe.js +490 -0
  102. package/dist/services/stripe.js.map +1 -0
  103. package/dist/services/validation-history.d.ts +99 -0
  104. package/dist/services/validation-history.d.ts.map +1 -0
  105. package/dist/services/validation-history.js +344 -0
  106. package/dist/services/validation-history.js.map +1 -0
  107. package/dist/services/validation-logging.d.ts +103 -0
  108. package/dist/services/validation-logging.d.ts.map +1 -0
  109. package/dist/services/validation-logging.js +210 -0
  110. package/dist/services/validation-logging.js.map +1 -0
  111. package/dist/services/validation.d.ts +119 -0
  112. package/dist/services/validation.d.ts.map +1 -0
  113. package/dist/services/validation.js +1185 -0
  114. package/dist/services/validation.js.map +1 -0
  115. package/dist/simulator/agent-simulator.d.ts.map +1 -1
  116. package/dist/simulator/agent-simulator.js +229 -9
  117. package/dist/simulator/agent-simulator.js.map +1 -1
  118. package/dist/simulator/types.d.ts +26 -0
  119. package/dist/simulator/types.d.ts.map +1 -1
  120. package/dist/simulator/types.js.map +1 -1
  121. package/dist/types/acp-validation.d.ts +87 -0
  122. package/dist/types/acp-validation.d.ts.map +1 -0
  123. package/dist/types/acp-validation.js +40 -0
  124. package/dist/types/acp-validation.js.map +1 -0
  125. package/dist/types/analytics.d.ts +182 -0
  126. package/dist/types/analytics.d.ts.map +1 -0
  127. package/dist/types/analytics.js +7 -0
  128. package/dist/types/analytics.js.map +1 -0
  129. package/dist/types/generator.d.ts +4 -0
  130. package/dist/types/generator.d.ts.map +1 -1
  131. package/dist/types/ucp-profile.d.ts +32 -2
  132. package/dist/types/ucp-profile.d.ts.map +1 -1
  133. package/dist/types/ucp-profile.js +31 -1
  134. package/dist/types/ucp-profile.js.map +1 -1
  135. package/dist/types/validation.d.ts +14 -0
  136. package/dist/types/validation.d.ts.map +1 -1
  137. package/dist/types/validation.js +19 -0
  138. package/dist/types/validation.js.map +1 -1
  139. package/dist/validator/acp/index.d.ts +31 -0
  140. package/dist/validator/acp/index.d.ts.map +1 -0
  141. package/dist/validator/acp/index.js +574 -0
  142. package/dist/validator/acp/index.js.map +1 -0
  143. package/dist/validator/network-validator.d.ts.map +1 -1
  144. package/dist/validator/network-validator.js +23 -13
  145. package/dist/validator/network-validator.js.map +1 -1
  146. package/dist/validator/rules-validator.d.ts +8 -0
  147. package/dist/validator/rules-validator.d.ts.map +1 -1
  148. package/dist/validator/rules-validator.js +159 -43
  149. package/dist/validator/rules-validator.js.map +1 -1
  150. package/dist/validator/structural-validator.d.ts.map +1 -1
  151. package/dist/validator/structural-validator.js +283 -53
  152. package/dist/validator/structural-validator.js.map +1 -1
  153. package/dist/validator/utils.d.ts +62 -0
  154. package/dist/validator/utils.d.ts.map +1 -0
  155. package/dist/validator/utils.js +151 -0
  156. package/dist/validator/utils.js.map +1 -0
  157. package/package.json +45 -12
  158. package/.claude/settings.local.json +0 -60
  159. package/.vercel/README.txt +0 -11
  160. package/.vercel/project.json +0 -1
  161. package/publish-output.txt +0 -0
  162. package/tsconfig.json +0 -20
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email.js","sourceRoot":"","sources":["../../src/services/email.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAQH,0CAMC;AAwBD,8BA6CC;AAiDD,oDAwFC;AAMD,8CA2HC;AAKD,4CA4FC;AAKD,wDAmEC;AAMD,gDAuGC;AAKD,gDAmFC;AAKD,gDAmGC;AAKD,gDAgFC;AAKD,sDAgFC;AA39BD,MAAM,kBAAkB,GAAG,qCAAqC,CAAC;AAEjE;;;GAGG;AACH,SAAgB,eAAe,CAAC,QAAuB,EAAE,QAAuB;IAC9E,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAC,CAAC,wDAAwD;IACxE,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC;IAC7C,OAAO,MAAM,IAAI,EAAE,CAAC;AACtB,CAAC;AAqBD;;GAEG;AACI,KAAK,UAAU,SAAS,CAAC,OAAqB;IACnD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAE9C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC3D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,8BAA8B,EAAE,CAAC;IACnE,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,IAAI;QAChC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,qBAAqB;QACjE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,WAAW;KACtD,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,kBAAkB,EAAE;YAC/C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU,MAAM,EAAE;gBACnC,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,IAAI,EAAE,SAAS;gBACf,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,IAAI,EAAE,OAAO,CAAC,IAAI;aACnB,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YAChB,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,SAAS,CAAC;YACpE,OAAO,CAAC,GAAG,CAAC,gCAAgC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACtC,CAAC;QAED,gBAAgB;QAChB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1D,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,IAAI,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpE,OAAO,CAAC,KAAK,CAAC,2BAA2B,YAAY,EAAE,CAAC,CAAC;QACzD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QAC9E,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAC;QACnD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IACjD,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,GAAG,CAAC,CAAC,OAAO,SAAS,CAAC;QAC3B,KAAK,GAAG,CAAC,CAAC,OAAO,SAAS,CAAC;QAC3B,KAAK,GAAG,CAAC,CAAC,OAAO,SAAS,CAAC;QAC3B,KAAK,GAAG,CAAC,CAAC,OAAO,SAAS,CAAC;QAC3B,KAAK,GAAG,CAAC,CAAC,OAAO,SAAS,CAAC;QAC3B,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC;IAC5B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,KAAa,EAAE,WAAmB,0BAA0B;IAClF,OAAO,mDAAmD,QAAQ;;4DAER,KAAK;SACxD,CAAC;AACV,CAAC;AAED;;GAEG;AACH,SAAS,cAAc;IACrB,OAAO;;;;;;;;;;;;;;;;WAgBE,CAAC;AACZ,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,oBAAoB,CAAC,MAQ1C;IACC,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;IAEpF,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACxC,MAAM,SAAS,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;IAC5D,MAAM,UAAU,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,WAAW,EAAE,CAAC;IAC1E,MAAM,KAAK,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAE5C,MAAM,OAAO,GAAG,GAAG,KAAK,IAAI,MAAM,WAAW,SAAS,KAAK,UAAU,UAAU,CAAC;IAEhF,MAAM,IAAI,GAAG;;;;;;;;;IASX,cAAc,CAAC,iBAAiB,EAAE,0BAA0B,CAAC;;;kCAG/B,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;;8CAEhB,MAAM,iBAAiB,SAAS;;;;;wEAKN,QAAQ;iEACf,aAAa,CAAC,QAAQ,CAAC,YAAY,QAAQ;;;;;iEAK3C,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,MAAM,QAAQ;iEACrD,aAAa,CAAC,QAAQ,CAAC,YAAY,QAAQ;;;;;kHAKM,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,YAAY,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;UAClM,KAAK,IAAI,UAAU;;;;;iBAKZ,YAAY;;;MAGvB,cAAc,EAAE;;;;CAIrB,CAAC;IAEA,MAAM,IAAI,GAAG;;;IAGX,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;;+BAED,MAAM,QAAQ,SAAS;;YAE1C,QAAQ,WAAW,QAAQ;WAC5B,QAAQ,WAAW,QAAQ;UAC5B,UAAU;;yBAEK,YAAY;;;;;CAKpC,CAAC;IAEA,OAAO,SAAS,CAAC;QACf,EAAE,EAAE,CAAC,EAAE,CAAC;QACR,OAAO;QACP,IAAI;QACJ,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,iBAAiB,CAAC,MAWvC;IACC,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;IAEhH,MAAM,MAAM,GAA6G;QACvH,MAAM,EAAE;YACN,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,sCAAsC;YAC7C,QAAQ,EAAE,0BAA0B;YACpC,QAAQ,EAAE,SAAS;YACnB,UAAU,EAAE,SAAS;SACtB;QACD,QAAQ,EAAE;YACR,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,sBAAsB;YAC7B,QAAQ,EAAE,0BAA0B;YACpC,QAAQ,EAAE,SAAS;YACnB,UAAU,EAAE,SAAS;SACtB;QACD,OAAO,EAAE;YACP,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,qBAAqB;YAC5B,QAAQ,EAAE,0BAA0B;YACpC,QAAQ,EAAE,SAAS;YACnB,UAAU,EAAE,SAAS;SACtB;KACF,CAAC;IAEF,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC;IAC7C,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,KAAK,IAAI,MAAM,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;IAEnD,MAAM,YAAY,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC;;;;wEAI6B,QAAQ;iEACf,aAAa,CAAC,QAAQ,IAAI,GAAG,CAAC,YAAY,QAAQ,IAAI,GAAG;;;;;iEAKzD,aAAa,CAAC,QAAQ,CAAC,MAAM,QAAQ;iEACrC,aAAa,CAAC,QAAQ,CAAC,YAAY,QAAQ;;WAEjG,CAAC,CAAC,CAAC,EAAE,CAAC;IAEf,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;;;QAGtC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;;kCAEL,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;cACnG,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;;YAE/D,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,QAAQ,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE;;OAEjH,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QACT,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,wEAAwE,OAAO,CAAC,MAAM,GAAG,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAAE;WACxI,CAAC,CAAC,CAAC,EAAE,CAAC;IAEf,MAAM,IAAI,GAAG;;;;;;WAMJ,CAAC,CAAC,KAAK;;;IAGd,cAAc,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC;;;kCAGL,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;;8BAEhC,CAAC,CAAC,QAAQ,YAAY,CAAC,CAAC,UAAU;QACxD,OAAO;;;MAGT,YAAY;MACZ,cAAc;;;iBAGH,YAAY,2FAA2F,CAAC,CAAC,QAAQ;;;MAG5H,cAAc,EAAE;;;;CAIrB,CAAC;IAEA,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,KAAK;;IAErB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;;EAE9B,OAAO;;EAEP,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,QAAQ,KAAK,QAAQ,OAAO,QAAQ,KAAK,QAAQ,GAAG,CAAC,CAAC,CAAC,UAAU,QAAQ,KAAK,QAAQ,GAAG;;EAEvH,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;;oBAElJ,YAAY;;;;CAI/B,CAAC;IAEA,OAAO,SAAS,CAAC;QACf,EAAE,EAAE,CAAC,EAAE,CAAC;QACR,OAAO;QACP,IAAI;QACJ,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,gBAAgB,CAAC,MAItC;IACC,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IAEjD,MAAM,YAAY,GAAG,WAAW;QAC9B,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACvG,CAAC,CAAC,IAAI,CAAC;IAET,MAAM,OAAO,GAAG,0DAA0D,CAAC;IAE3E,MAAM,IAAI,GAAG;;;;;;;;IAQX,cAAc,CAAC,oCAAoC,CAAC;;;kCAGtB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;;wDAEN,YAAY,CAAC,CAAC,CAAC,kBAAkB,YAAY,WAAW,CAAC,CAAC,CAAC,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;iBAuBxH,YAAY;;;MAGvB,cAAc,EAAE;;;;CAIrB,CAAC;IAEA,MAAM,IAAI,GAAG;;;IAGX,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;;iDAEiB,YAAY,CAAC,CAAC,CAAC,UAAU,YAAY,EAAE,CAAC,CAAC,CAAC,sBAAsB;;;;;;;;;;;;;;;;wBAgBzF,YAAY;;;;;CAKnC,CAAC;IAEA,OAAO,SAAS,CAAC;QACf,EAAE,EAAE,CAAC,EAAE,CAAC;QACR,OAAO;QACP,IAAI;QACJ,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,sBAAsB,CAAC,MAG5C;IACC,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAEhC,MAAM,OAAO,GAAG,+BAA+B,CAAC;IAEhD,MAAM,IAAI,GAAG;;;;;;;;;IASX,cAAc,CAAC,gBAAgB,EAAE,0BAA0B,CAAC;;;kCAG9B,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;;;;;iBAK7C,QAAQ;;;;;;;MAOnB,cAAc,EAAE;;;;iBAIL,QAAQ,oDAAoD,QAAQ;;;;;CAKpF,CAAC;IAEA,MAAM,IAAI,GAAG;;;IAGX,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;;;;;EAK9B,QAAQ;;;;;;;;CAQT,CAAC;IAEA,OAAO,SAAS,CAAC;QACf,EAAE,EAAE,CAAC,EAAE,CAAC;QACR,OAAO;QACP,IAAI;QACJ,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,kBAAkB,CAAC,MAOxC;IACC,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC;IAE1E,MAAM,SAAS,GAAG,MAAM,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC;IAEzD,MAAM,OAAO,GAAG,SAAS;QACvB,CAAC,CAAC,qBAAqB,KAAK,KAAK,KAAK,4BAA4B;QAClE,CAAC,CAAC,8CAA8C,CAAC;IAEnD,MAAM,mBAAmB,GAAG,SAAS,CAAC,CAAC,CAAC;;uEAE6B,MAAM;+DACd,aAAa,CAAC,KAAK,CAAC,MAAM,KAAK;uFACP,KAAK;;MAEtF,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;;;QAGrB,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;;YAE/B,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO;;OAE7D,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;WACN,CAAC,CAAC,CAAC,EAAE;GACb,CAAC,CAAC,CAAC;;;;GAIH,CAAC;IAEF,MAAM,IAAI,GAAG;;;;;;;;IAQX,cAAc,CAAC,yBAAyB,CAAC;;;kCAGX,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;;MAExD,SAAS;QACT,CAAC,CAAC,oCAAoC,MAAM,4DAA4D;QACxG,CAAC,CAAC,4HACJ;;MAEE,mBAAmB;;;;;;;;;iBASR,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,GAAG,eAAe,kMAAkM,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,iBAAiB;;;;;;;;MAQxT,cAAc,EAAE;;;;CAIrB,CAAC;IAEA,MAAM,IAAI,GAAG;;IAEX,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;;EAE9B,SAAS;QACT,CAAC,CAAC,yBAAyB,MAAM,qCAAqC,KAAK,KAAK,KAAK,UAAU,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;QAC5M,CAAC,CAAC,2GACJ;;;;EAIE,SAAS,CAAC,CAAC,CAAC,qBAAqB,YAAY,EAAE,CAAC,CAAC,CAAC,oBAAoB,YAAY,eAAe;;;;;;CAMlG,CAAC;IAEA,OAAO,SAAS,CAAC;QACf,EAAE,EAAE,CAAC,EAAE,CAAC;QACR,OAAO;QACP,IAAI;QACJ,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,kBAAkB,CAAC,MAGxC;IACC,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;IAEpC,MAAM,OAAO,GAAG,+DAA+D,CAAC;IAEhF,MAAM,IAAI,GAAG;;;;;;;;IAQX,cAAc,CAAC,oCAAoC,CAAC;;;kCAGtB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;iBAyB7C,YAAY;;;MAGvB,cAAc,EAAE;;;;CAIrB,CAAC;IAEA,MAAM,IAAI,GAAG;;;IAGX,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;CAmB/B,CAAC;IAEA,OAAO,SAAS,CAAC;QACf,EAAE,EAAE,CAAC,EAAE,CAAC;QACR,OAAO;QACP,IAAI;QACJ,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,kBAAkB,CAAC,MAIxC;IACC,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,YAAY,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC;IAEtD,MAAM,OAAO,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,gEAAgE,CAAC;IAE3I,MAAM,IAAI,GAAG;;;;;;;;IAQX,cAAc,CAAC,kCAAkC,EAAE,0BAA0B,CAAC;;;kCAGhD,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;;MAExD,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC;mCACU,YAAY,UAAU,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;KAa/E,CAAC,CAAC,CAAC;;;;;;;;;;;KAWH;;;iBAGY,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,gDAAgD,kMAAkM,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,2BAA2B;;;;;;;;MAQpX,cAAc,EAAE;;;;CAIrB,CAAC;IAEA,MAAM,IAAI,GAAG;;;IAGX,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;;EAE9B,YAAY,GAAG,CAAC;QAChB,CAAC,CAAC,qBAAqB,YAAY,UAAU,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;;;;;;;;;uBASnD,YAAY,YAAY;QAC7C,CAAC,CAAC;;;;gEAKJ;;;;;;CAMC,CAAC;IAEA,OAAO,SAAS,CAAC;QACf,EAAE,EAAE,CAAC,EAAE,CAAC;QACR,OAAO;QACP,IAAI;QACJ,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,kBAAkB,CAAC,MAKxC;IACC,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,YAAY,GAAG,CAAC,EAAE,cAAc,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC;IAE1E,MAAM,OAAO,GAAG,wDAAwD,CAAC;IAEzE,MAAM,IAAI,GAAG;;;;;;;;IAQX,cAAc,CAAC,4BAA4B,EAAE,0BAA0B,CAAC;;;kCAG1C,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;;;;;;gDAMd,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,YAAY,UAAU,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAAE;qDAC9F,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,cAAc,cAAc,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;iBAc1I,YAAY;;;MAGvB,cAAc,EAAE;;;;CAIrB,CAAC;IAEA,MAAM,IAAI,GAAG;;;IAGX,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;;;;qBAIX,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,YAAY,UAAU,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAAE;0BAC9F,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,cAAc,cAAc,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE;;;;;;;;iBAQ/G,YAAY;;;;;CAK5B,CAAC;IAEA,OAAO,SAAS,CAAC;QACf,EAAE,EAAE,CAAC,EAAE,CAAC;QACR,OAAO;QACP,IAAI;QACJ,IAAI;KACL,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,qBAAqB,CAAC,MAI3C;IACC,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,YAAY,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC;IAEtD,MAAM,OAAO,GAAG,4DAA4D,CAAC;IAE7E,MAAM,IAAI,GAAG;;;;;;;;IAQX,cAAc,CAAC,sBAAsB,EAAE,0BAA0B,CAAC;;;kCAGpC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;;;;;;gDAMd,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,YAAY,UAAU,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;iBAgBhH,YAAY;;;MAGvB,cAAc,EAAE;;;;CAIrB,CAAC;IAEA,MAAM,IAAI,GAAG;;IAEX,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;;;;qBAIX,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,YAAY,UAAU,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;eAUvF,YAAY;;;;;CAK1B,CAAC;IAEA,OAAO,SAAS,CAAC;QACf,EAAE,EAAE,CAAC,EAAE,CAAC;QACR,OAAO;QACP,IAAI;QACJ,IAAI;KACL,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Hosted Profiles Service
3
+ * Business logic for managed UCP manifest hosting
4
+ */
5
+ import { type HostedProfile } from '../db/schema.js';
6
+ /**
7
+ * Create a new hosted profile
8
+ */
9
+ export declare function createHostedProfile(params: {
10
+ userId: string;
11
+ domain: string;
12
+ profileJson: string;
13
+ merchantId?: string;
14
+ }): Promise<HostedProfile>;
15
+ /**
16
+ * Get verification instructions for a hosted profile
17
+ */
18
+ export declare function getVerificationInstructions(profileId: string): Promise<{
19
+ dnsRecord: string;
20
+ dnsValue: string;
21
+ domain: string;
22
+ }>;
23
+ /**
24
+ * Check DNS TXT record for domain verification
25
+ */
26
+ export declare function checkDnsVerification(profileId: string): Promise<{
27
+ verified: boolean;
28
+ error?: string;
29
+ }>;
30
+ /**
31
+ * Activate hosting for a profile (requires verification)
32
+ */
33
+ export declare function activateHosting(profileId: string): Promise<HostedProfile>;
34
+ /**
35
+ * Deactivate hosting for a profile
36
+ */
37
+ export declare function deactivateHosting(profileId: string): Promise<HostedProfile>;
38
+ /**
39
+ * Update profile JSON
40
+ */
41
+ export declare function updateProfileJson(profileId: string, profileJson: string): Promise<HostedProfile>;
42
+ /**
43
+ * Get hosted profile by merchantId (hot path for serving)
44
+ */
45
+ export declare function getProfileByMerchantId(merchantId: string): Promise<HostedProfile | null>;
46
+ /**
47
+ * Get all hosted profiles for a user
48
+ */
49
+ export declare function getUserHostedProfiles(userId: string): Promise<HostedProfile[]>;
50
+ /**
51
+ * Get a single hosted profile by ID (with ownership check)
52
+ */
53
+ export declare function getHostedProfileById(profileId: string, userId: string): Promise<HostedProfile | null>;
54
+ /**
55
+ * Delete a hosted profile (ownership-checked)
56
+ */
57
+ export declare function deleteHostedProfile(profileId: string, userId: string): Promise<boolean>;
58
+ /**
59
+ * Validate a hosted profile's stored JSON and update score/grade
60
+ */
61
+ export declare function validateHostedProfile(profileId: string): Promise<{
62
+ score: number | null;
63
+ grade: string | null;
64
+ }>;
65
+ /**
66
+ * Get hosted profiles needing validation (active, not validated in 7+ days)
67
+ */
68
+ export declare function getProfilesNeedingValidation(maxProfiles?: number): Promise<HostedProfile[]>;
69
+ /**
70
+ * Get hosted profiles with pending verification
71
+ */
72
+ export declare function getProfilesPendingVerification(maxProfiles?: number): Promise<HostedProfile[]>;
73
+ /**
74
+ * Check if a domain is already claimed by another user
75
+ */
76
+ export declare function isDomainClaimed(domain: string, excludeUserId?: string): Promise<boolean>;
77
+ //# sourceMappingURL=hosted-profiles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hosted-profiles.d.ts","sourceRoot":"","sources":["../../src/services/hosted-profiles.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAEL,KAAK,aAAa,EAEnB,MAAM,iBAAiB,CAAC;AA0EzB;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,aAAa,CAAC,CA6DzB;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5E,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAeD;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IACrE,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAkDD;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAoB/E;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAUjF;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,aAAa,CAAC,CAwCxB;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAS/B;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,aAAa,EAAE,CAAC,CAO1B;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAW/B;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CASlB;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IACtE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAAC,CAgCD;AAMD;;GAEG;AACH,wBAAsB,4BAA4B,CAChD,WAAW,GAAE,MAAY,GACxB,OAAO,CAAC,aAAa,EAAE,CAAC,CAkB1B;AAED;;GAEG;AACH,wBAAsB,8BAA8B,CAClD,WAAW,GAAE,MAAW,GACvB,OAAO,CAAC,aAAa,EAAE,CAAC,CAO1B;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,OAAO,CAAC,CA2BlB"}
@@ -0,0 +1,433 @@
1
+ "use strict";
2
+ /**
3
+ * Hosted Profiles Service
4
+ * Business logic for managed UCP manifest hosting
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.createHostedProfile = createHostedProfile;
8
+ exports.getVerificationInstructions = getVerificationInstructions;
9
+ exports.checkDnsVerification = checkDnsVerification;
10
+ exports.activateHosting = activateHosting;
11
+ exports.deactivateHosting = deactivateHosting;
12
+ exports.updateProfileJson = updateProfileJson;
13
+ exports.getProfileByMerchantId = getProfileByMerchantId;
14
+ exports.getUserHostedProfiles = getUserHostedProfiles;
15
+ exports.getHostedProfileById = getHostedProfileById;
16
+ exports.deleteHostedProfile = deleteHostedProfile;
17
+ exports.validateHostedProfile = validateHostedProfile;
18
+ exports.getProfilesNeedingValidation = getProfilesNeedingValidation;
19
+ exports.getProfilesPendingVerification = getProfilesPendingVerification;
20
+ exports.isDomainClaimed = isDomainClaimed;
21
+ const drizzle_orm_1 = require("drizzle-orm");
22
+ const dns_1 = require("dns");
23
+ const index_js_1 = require("../db/index.js");
24
+ const schema_js_1 = require("../db/schema.js");
25
+ const nanoid_1 = require("nanoid");
26
+ const index_js_2 = require("../validator/index.js");
27
+ // ============================================================================
28
+ // Score/Grade helpers
29
+ // ============================================================================
30
+ /**
31
+ * Compute a simple score (0-100) and letter grade from ValidationReport issues.
32
+ * Starts at 100, deducts 15 per error and 5 per warning.
33
+ */
34
+ function scoreFromReport(report) {
35
+ const errors = report.issues.filter((i) => i.severity === 'error').length;
36
+ const warnings = report.issues.filter((i) => i.severity === 'warn').length;
37
+ const score = Math.max(0, 100 - errors * 15 - warnings * 5);
38
+ return { score, grade: gradeFromScore(score) };
39
+ }
40
+ function gradeFromScore(score) {
41
+ if (score >= 90)
42
+ return 'A';
43
+ if (score >= 75)
44
+ return 'B';
45
+ if (score >= 60)
46
+ return 'C';
47
+ if (score >= 40)
48
+ return 'D';
49
+ return 'F';
50
+ }
51
+ // ============================================================================
52
+ // Hosted Profile CRUD
53
+ // ============================================================================
54
+ /**
55
+ * Generate a merchantId slug from a domain
56
+ * e.g., "example.com" → "example-com", "my.store.co.uk" → "my-store-co-uk"
57
+ */
58
+ function domainToMerchantId(domain) {
59
+ return domain.toLowerCase().replace(/\./g, '-');
60
+ }
61
+ /**
62
+ * Extract metadata from a UCP profile JSON string
63
+ */
64
+ function extractProfileMetadata(profileJson) {
65
+ try {
66
+ const profile = JSON.parse(profileJson);
67
+ const ucp = profile?.ucp;
68
+ if (!ucp)
69
+ return { ucpVersion: null, transports: null, capabilitiesCount: 0 };
70
+ const ucpVersion = ucp.version || null;
71
+ const capabilitiesCount = Array.isArray(ucp.capabilities) ? ucp.capabilities.length : 0;
72
+ // Extract transport types from services
73
+ const transportSet = new Set();
74
+ if (ucp.services && typeof ucp.services === 'object') {
75
+ for (const svc of Object.values(ucp.services)) {
76
+ if (svc.rest)
77
+ transportSet.add('REST');
78
+ if (svc.mcp)
79
+ transportSet.add('MCP');
80
+ if (svc.a2a)
81
+ transportSet.add('A2A');
82
+ if (svc.embedded)
83
+ transportSet.add('Embedded');
84
+ }
85
+ }
86
+ const transports = transportSet.size > 0 ? Array.from(transportSet).join(', ') : null;
87
+ return { ucpVersion, transports, capabilitiesCount };
88
+ }
89
+ catch {
90
+ return { ucpVersion: null, transports: null, capabilitiesCount: 0 };
91
+ }
92
+ }
93
+ /**
94
+ * Create a new hosted profile
95
+ */
96
+ async function createHostedProfile(params) {
97
+ const db = (0, index_js_1.getDb)();
98
+ const domain = params.domain.toLowerCase().trim();
99
+ // Validate JSON is valid
100
+ try {
101
+ JSON.parse(params.profileJson);
102
+ }
103
+ catch {
104
+ throw new Error('Invalid JSON: profileJson must be valid JSON');
105
+ }
106
+ // Generate merchantId with collision handling
107
+ let merchantId = params.merchantId || domainToMerchantId(domain);
108
+ let suffix = 1;
109
+ while (true) {
110
+ const existing = await db
111
+ .select({ id: schema_js_1.hostedProfiles.id })
112
+ .from(schema_js_1.hostedProfiles)
113
+ .where((0, drizzle_orm_1.eq)(schema_js_1.hostedProfiles.merchantId, merchantId))
114
+ .limit(1);
115
+ if (existing.length === 0)
116
+ break;
117
+ suffix++;
118
+ merchantId = `${domainToMerchantId(domain)}-${suffix}`;
119
+ }
120
+ // Generate verification token
121
+ const verificationToken = (0, nanoid_1.nanoid)(32);
122
+ // Extract metadata
123
+ const metadata = extractProfileMetadata(params.profileJson);
124
+ // Run initial validation
125
+ let validationScore = null;
126
+ let validationGrade = null;
127
+ try {
128
+ const result = await (0, index_js_2.validateProfile)(JSON.parse(params.profileJson));
129
+ const scored = scoreFromReport(result);
130
+ validationScore = scored.score;
131
+ validationGrade = scored.grade;
132
+ }
133
+ catch {
134
+ // Validation failure is non-blocking
135
+ }
136
+ const newProfile = {
137
+ userId: params.userId,
138
+ domain,
139
+ merchantId,
140
+ profileJson: params.profileJson,
141
+ ucpVersion: metadata.ucpVersion,
142
+ transports: metadata.transports,
143
+ capabilitiesCount: metadata.capabilitiesCount,
144
+ verificationToken,
145
+ verificationStatus: 'pending',
146
+ hostingStatus: 'inactive',
147
+ lastValidationScore: validationScore,
148
+ lastValidationGrade: validationGrade,
149
+ lastValidatedAt: validationScore !== null ? new Date() : null,
150
+ };
151
+ const [profile] = await db.insert(schema_js_1.hostedProfiles).values(newProfile).returning();
152
+ return profile;
153
+ }
154
+ /**
155
+ * Get verification instructions for a hosted profile
156
+ */
157
+ async function getVerificationInstructions(profileId) {
158
+ const db = (0, index_js_1.getDb)();
159
+ const [profile] = await db
160
+ .select()
161
+ .from(schema_js_1.hostedProfiles)
162
+ .where((0, drizzle_orm_1.eq)(schema_js_1.hostedProfiles.id, profileId))
163
+ .limit(1);
164
+ if (!profile)
165
+ throw new Error('Profile not found');
166
+ return {
167
+ dnsRecord: `_ucp-verify.${profile.domain}`,
168
+ dnsValue: `ucp-verify=${profile.verificationToken}`,
169
+ domain: profile.domain,
170
+ };
171
+ }
172
+ /**
173
+ * Check DNS TXT record for domain verification
174
+ */
175
+ async function checkDnsVerification(profileId) {
176
+ const db = (0, index_js_1.getDb)();
177
+ const [profile] = await db
178
+ .select()
179
+ .from(schema_js_1.hostedProfiles)
180
+ .where((0, drizzle_orm_1.eq)(schema_js_1.hostedProfiles.id, profileId))
181
+ .limit(1);
182
+ if (!profile)
183
+ return { verified: false, error: 'Profile not found' };
184
+ if (profile.verificationStatus === 'verified') {
185
+ return { verified: true };
186
+ }
187
+ try {
188
+ const records = await dns_1.promises.resolveTxt(`_ucp-verify.${profile.domain}`);
189
+ const flatRecords = records.map((r) => r.join(''));
190
+ const expectedValue = `ucp-verify=${profile.verificationToken}`;
191
+ const found = flatRecords.some((r) => r === expectedValue);
192
+ if (found) {
193
+ await db
194
+ .update(schema_js_1.hostedProfiles)
195
+ .set({
196
+ verificationStatus: 'verified',
197
+ verifiedAt: new Date(),
198
+ updatedAt: new Date(),
199
+ })
200
+ .where((0, drizzle_orm_1.eq)(schema_js_1.hostedProfiles.id, profileId));
201
+ return { verified: true };
202
+ }
203
+ return {
204
+ verified: false,
205
+ error: 'DNS TXT record not found. DNS changes can take up to 48 hours to propagate.',
206
+ };
207
+ }
208
+ catch (err) {
209
+ const code = err.code;
210
+ if (code === 'ENOTFOUND' || code === 'ENODATA') {
211
+ return {
212
+ verified: false,
213
+ error: 'DNS TXT record not found. DNS changes can take up to 48 hours to propagate.',
214
+ };
215
+ }
216
+ return {
217
+ verified: false,
218
+ error: `DNS lookup failed: ${code || 'unknown error'}`,
219
+ };
220
+ }
221
+ }
222
+ /**
223
+ * Activate hosting for a profile (requires verification)
224
+ */
225
+ async function activateHosting(profileId) {
226
+ const db = (0, index_js_1.getDb)();
227
+ const [profile] = await db
228
+ .select()
229
+ .from(schema_js_1.hostedProfiles)
230
+ .where((0, drizzle_orm_1.eq)(schema_js_1.hostedProfiles.id, profileId))
231
+ .limit(1);
232
+ if (!profile)
233
+ throw new Error('Profile not found');
234
+ if (profile.verificationStatus !== 'verified') {
235
+ throw new Error('Domain must be verified before activating hosting');
236
+ }
237
+ const [updated] = await db
238
+ .update(schema_js_1.hostedProfiles)
239
+ .set({ hostingStatus: 'active', updatedAt: new Date() })
240
+ .where((0, drizzle_orm_1.eq)(schema_js_1.hostedProfiles.id, profileId))
241
+ .returning();
242
+ return updated;
243
+ }
244
+ /**
245
+ * Deactivate hosting for a profile
246
+ */
247
+ async function deactivateHosting(profileId) {
248
+ const db = (0, index_js_1.getDb)();
249
+ const [updated] = await db
250
+ .update(schema_js_1.hostedProfiles)
251
+ .set({ hostingStatus: 'inactive', updatedAt: new Date() })
252
+ .where((0, drizzle_orm_1.eq)(schema_js_1.hostedProfiles.id, profileId))
253
+ .returning();
254
+ if (!updated)
255
+ throw new Error('Profile not found');
256
+ return updated;
257
+ }
258
+ /**
259
+ * Update profile JSON
260
+ */
261
+ async function updateProfileJson(profileId, profileJson) {
262
+ // Validate JSON
263
+ try {
264
+ JSON.parse(profileJson);
265
+ }
266
+ catch {
267
+ throw new Error('Invalid JSON: profileJson must be valid JSON');
268
+ }
269
+ const db = (0, index_js_1.getDb)();
270
+ const metadata = extractProfileMetadata(profileJson);
271
+ // Run validation
272
+ let validationScore = null;
273
+ let validationGrade = null;
274
+ try {
275
+ const result = await (0, index_js_2.validateProfile)(JSON.parse(profileJson));
276
+ const scored = scoreFromReport(result);
277
+ validationScore = scored.score;
278
+ validationGrade = scored.grade;
279
+ }
280
+ catch {
281
+ // Non-blocking
282
+ }
283
+ const [updated] = await db
284
+ .update(schema_js_1.hostedProfiles)
285
+ .set({
286
+ profileJson,
287
+ ucpVersion: metadata.ucpVersion,
288
+ transports: metadata.transports,
289
+ capabilitiesCount: metadata.capabilitiesCount,
290
+ lastValidationScore: validationScore,
291
+ lastValidationGrade: validationGrade,
292
+ lastValidatedAt: new Date(),
293
+ updatedAt: new Date(),
294
+ })
295
+ .where((0, drizzle_orm_1.eq)(schema_js_1.hostedProfiles.id, profileId))
296
+ .returning();
297
+ if (!updated)
298
+ throw new Error('Profile not found');
299
+ return updated;
300
+ }
301
+ /**
302
+ * Get hosted profile by merchantId (hot path for serving)
303
+ */
304
+ async function getProfileByMerchantId(merchantId) {
305
+ const db = (0, index_js_1.getDb)();
306
+ const [profile] = await db
307
+ .select()
308
+ .from(schema_js_1.hostedProfiles)
309
+ .where((0, drizzle_orm_1.eq)(schema_js_1.hostedProfiles.merchantId, merchantId))
310
+ .limit(1);
311
+ return profile || null;
312
+ }
313
+ /**
314
+ * Get all hosted profiles for a user
315
+ */
316
+ async function getUserHostedProfiles(userId) {
317
+ const db = (0, index_js_1.getDb)();
318
+ return db
319
+ .select()
320
+ .from(schema_js_1.hostedProfiles)
321
+ .where((0, drizzle_orm_1.eq)(schema_js_1.hostedProfiles.userId, userId))
322
+ .orderBy(schema_js_1.hostedProfiles.createdAt);
323
+ }
324
+ /**
325
+ * Get a single hosted profile by ID (with ownership check)
326
+ */
327
+ async function getHostedProfileById(profileId, userId) {
328
+ const db = (0, index_js_1.getDb)();
329
+ const [profile] = await db
330
+ .select()
331
+ .from(schema_js_1.hostedProfiles)
332
+ .where((0, drizzle_orm_1.and)((0, drizzle_orm_1.eq)(schema_js_1.hostedProfiles.id, profileId), (0, drizzle_orm_1.eq)(schema_js_1.hostedProfiles.userId, userId)))
333
+ .limit(1);
334
+ return profile || null;
335
+ }
336
+ /**
337
+ * Delete a hosted profile (ownership-checked)
338
+ */
339
+ async function deleteHostedProfile(profileId, userId) {
340
+ const db = (0, index_js_1.getDb)();
341
+ const result = await db
342
+ .delete(schema_js_1.hostedProfiles)
343
+ .where((0, drizzle_orm_1.and)((0, drizzle_orm_1.eq)(schema_js_1.hostedProfiles.id, profileId), (0, drizzle_orm_1.eq)(schema_js_1.hostedProfiles.userId, userId)));
344
+ return true;
345
+ }
346
+ /**
347
+ * Validate a hosted profile's stored JSON and update score/grade
348
+ */
349
+ async function validateHostedProfile(profileId) {
350
+ const db = (0, index_js_1.getDb)();
351
+ const [profile] = await db
352
+ .select()
353
+ .from(schema_js_1.hostedProfiles)
354
+ .where((0, drizzle_orm_1.eq)(schema_js_1.hostedProfiles.id, profileId))
355
+ .limit(1);
356
+ if (!profile)
357
+ throw new Error('Profile not found');
358
+ let score = null;
359
+ let grade = null;
360
+ try {
361
+ const result = await (0, index_js_2.validateProfile)(JSON.parse(profile.profileJson));
362
+ const scored = scoreFromReport(result);
363
+ score = scored.score;
364
+ grade = scored.grade;
365
+ }
366
+ catch {
367
+ // Validation failure
368
+ }
369
+ await db
370
+ .update(schema_js_1.hostedProfiles)
371
+ .set({
372
+ lastValidationScore: score,
373
+ lastValidationGrade: grade,
374
+ lastValidatedAt: new Date(),
375
+ updatedAt: new Date(),
376
+ })
377
+ .where((0, drizzle_orm_1.eq)(schema_js_1.hostedProfiles.id, profileId));
378
+ return { score, grade };
379
+ }
380
+ // ============================================================================
381
+ // Cron helpers
382
+ // ============================================================================
383
+ /**
384
+ * Get hosted profiles needing validation (active, not validated in 7+ days)
385
+ */
386
+ async function getProfilesNeedingValidation(maxProfiles = 100) {
387
+ const db = (0, index_js_1.getDb)();
388
+ const sevenDaysAgo = new Date();
389
+ sevenDaysAgo.setDate(sevenDaysAgo.getDate() - 7);
390
+ return db
391
+ .select()
392
+ .from(schema_js_1.hostedProfiles)
393
+ .where((0, drizzle_orm_1.and)((0, drizzle_orm_1.eq)(schema_js_1.hostedProfiles.hostingStatus, 'active'), (0, drizzle_orm_1.or)((0, drizzle_orm_1.isNull)(schema_js_1.hostedProfiles.lastValidatedAt), (0, drizzle_orm_1.lt)(schema_js_1.hostedProfiles.lastValidatedAt, sevenDaysAgo))))
394
+ .limit(maxProfiles);
395
+ }
396
+ /**
397
+ * Get hosted profiles with pending verification
398
+ */
399
+ async function getProfilesPendingVerification(maxProfiles = 50) {
400
+ const db = (0, index_js_1.getDb)();
401
+ return db
402
+ .select()
403
+ .from(schema_js_1.hostedProfiles)
404
+ .where((0, drizzle_orm_1.eq)(schema_js_1.hostedProfiles.verificationStatus, 'pending'))
405
+ .limit(maxProfiles);
406
+ }
407
+ /**
408
+ * Check if a domain is already claimed by another user
409
+ */
410
+ async function isDomainClaimed(domain, excludeUserId) {
411
+ const db = (0, index_js_1.getDb)();
412
+ const cleanDomain = domain.toLowerCase().trim();
413
+ const conditions = [
414
+ (0, drizzle_orm_1.eq)(schema_js_1.hostedProfiles.domain, cleanDomain),
415
+ (0, drizzle_orm_1.eq)(schema_js_1.hostedProfiles.verificationStatus, 'verified'),
416
+ ];
417
+ if (excludeUserId) {
418
+ // Allow the same user to reclaim their own domain
419
+ const profiles = await db
420
+ .select({ userId: schema_js_1.hostedProfiles.userId })
421
+ .from(schema_js_1.hostedProfiles)
422
+ .where((0, drizzle_orm_1.and)(...conditions))
423
+ .limit(1);
424
+ return profiles.length > 0 && profiles[0].userId !== excludeUserId;
425
+ }
426
+ const profiles = await db
427
+ .select({ id: schema_js_1.hostedProfiles.id })
428
+ .from(schema_js_1.hostedProfiles)
429
+ .where((0, drizzle_orm_1.and)(...conditions))
430
+ .limit(1);
431
+ return profiles.length > 0;
432
+ }
433
+ //# sourceMappingURL=hosted-profiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hosted-profiles.js","sourceRoot":"","sources":["../../src/services/hosted-profiles.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAsFH,kDAkEC;AAKD,kEAmBC;AAKD,oDAqDC;AAKD,0CAoBC;AAKD,8CAUC;AAKD,8CA2CC;AAKD,wDAWC;AAKD,sDASC;AAKD,oDAcC;AAKD,kDAYC;AAKD,sDAmCC;AASD,oEAoBC;AAKD,wEASC;AAKD,0CA8BC;AAxfD,6CAAsD;AACtD,6BAAsC;AACtC,6CAAuC;AACvC,+CAIyB;AACzB,mCAAgC;AAChC,oDAAwD;AAGxD,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E;;;GAGG;AACH,SAAS,eAAe,CAAC,MAAwB;IAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;IAC1E,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,GAAG,EAAE,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC;IAC5D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;AACjD,CAAC;AAED,SAAS,cAAc,CAAC,KAAa;IACnC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,GAAG,CAAC;IAC5B,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,GAAG,CAAC;IAC5B,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,GAAG,CAAC;IAC5B,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,GAAG,CAAC;IAC5B,OAAO,GAAG,CAAC;AACb,CAAC;AAED,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E;;;GAGG;AACH,SAAS,kBAAkB,CAAC,MAAc;IACxC,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,WAAmB;IAKjD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,CAAC;QACzB,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;QAE9E,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC;QACvC,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAExF,wCAAwC;QACxC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;QACvC,IAAI,GAAG,CAAC,QAAQ,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACrD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAA8B,EAAE,CAAC;gBAC3E,IAAI,GAAG,CAAC,IAAI;oBAAE,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACvC,IAAI,GAAG,CAAC,GAAG;oBAAE,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACrC,IAAI,GAAG,CAAC,GAAG;oBAAE,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACrC,IAAI,GAAG,CAAC,QAAQ;oBAAE,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QACD,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEtF,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACtE,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,mBAAmB,CAAC,MAKzC;IACC,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IAElD,yBAAyB;IACzB,IAAI,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IAED,8CAA8C;IAC9C,IAAI,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACjE,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,QAAQ,GAAG,MAAM,EAAE;aACtB,MAAM,CAAC,EAAE,EAAE,EAAE,0BAAc,CAAC,EAAE,EAAE,CAAC;aACjC,IAAI,CAAC,0BAAc,CAAC;aACpB,KAAK,CAAC,IAAA,gBAAE,EAAC,0BAAc,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;aAChD,KAAK,CAAC,CAAC,CAAC,CAAC;QACZ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM;QACjC,MAAM,EAAE,CAAC;QACT,UAAU,GAAG,GAAG,kBAAkB,CAAC,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;IACzD,CAAC;IAED,8BAA8B;IAC9B,MAAM,iBAAiB,GAAG,IAAA,eAAM,EAAC,EAAE,CAAC,CAAC;IAErC,mBAAmB;IACnB,MAAM,QAAQ,GAAG,sBAAsB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAE5D,yBAAyB;IACzB,IAAI,eAAe,GAAkB,IAAI,CAAC;IAC1C,IAAI,eAAe,GAAkB,IAAI,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAe,EAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QACvC,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC;QAC/B,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,qCAAqC;IACvC,CAAC;IAED,MAAM,UAAU,GAAqB;QACnC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM;QACN,UAAU;QACV,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;QAC7C,iBAAiB;QACjB,kBAAkB,EAAE,SAAS;QAC7B,aAAa,EAAE,UAAU;QACzB,mBAAmB,EAAE,eAAe;QACpC,mBAAmB,EAAE,eAAe;QACpC,eAAe,EAAE,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;KAC9D,CAAC;IAEF,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,0BAAc,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAC;IACjF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,2BAA2B,CAAC,SAAiB;IAKjE,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,EAAE;SACvB,MAAM,EAAE;SACR,IAAI,CAAC,0BAAc,CAAC;SACpB,KAAK,CAAC,IAAA,gBAAE,EAAC,0BAAc,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;SACvC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEZ,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAEnD,OAAO;QACL,SAAS,EAAE,eAAe,OAAO,CAAC,MAAM,EAAE;QAC1C,QAAQ,EAAE,cAAc,OAAO,CAAC,iBAAiB,EAAE;QACnD,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC;AACJ,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,oBAAoB,CAAC,SAAiB;IAI1D,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,EAAE;SACvB,MAAM,EAAE;SACR,IAAI,CAAC,0BAAc,CAAC;SACpB,KAAK,CAAC,IAAA,gBAAE,EAAC,0BAAc,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;SACvC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEZ,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAErE,IAAI,OAAO,CAAC,kBAAkB,KAAK,UAAU,EAAE,CAAC;QAC9C,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,cAAG,CAAC,UAAU,CAAC,eAAe,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACtE,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACnD,MAAM,aAAa,GAAG,cAAc,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAChE,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC;QAE3D,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,EAAE;iBACL,MAAM,CAAC,0BAAc,CAAC;iBACtB,GAAG,CAAC;gBACH,kBAAkB,EAAE,UAAU;gBAC9B,UAAU,EAAE,IAAI,IAAI,EAAE;gBACtB,SAAS,EAAE,IAAI,IAAI,EAAE;aACtB,CAAC;iBACD,KAAK,CAAC,IAAA,gBAAE,EAAC,0BAAc,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;YAE3C,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC5B,CAAC;QAED,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,6EAA6E;SACrF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,GAAI,GAA6B,CAAC,IAAI,CAAC;QACjD,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC/C,OAAO;gBACL,QAAQ,EAAE,KAAK;gBACf,KAAK,EAAE,6EAA6E;aACrF,CAAC;QACJ,CAAC;QACD,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,sBAAsB,IAAI,IAAI,eAAe,EAAE;SACvD,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,eAAe,CAAC,SAAiB;IACrD,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,EAAE;SACvB,MAAM,EAAE;SACR,IAAI,CAAC,0BAAc,CAAC;SACpB,KAAK,CAAC,IAAA,gBAAE,EAAC,0BAAc,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;SACvC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEZ,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACnD,IAAI,OAAO,CAAC,kBAAkB,KAAK,UAAU,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,EAAE;SACvB,MAAM,CAAC,0BAAc,CAAC;SACtB,GAAG,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;SACvD,KAAK,CAAC,IAAA,gBAAE,EAAC,0BAAc,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;SACvC,SAAS,EAAE,CAAC;IAEf,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,iBAAiB,CAAC,SAAiB;IACvD,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,EAAE;SACvB,MAAM,CAAC,0BAAc,CAAC;SACtB,GAAG,CAAC,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;SACzD,KAAK,CAAC,IAAA,gBAAE,EAAC,0BAAc,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;SACvC,SAAS,EAAE,CAAC;IAEf,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACnD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,iBAAiB,CACrC,SAAiB,EACjB,WAAmB;IAEnB,gBAAgB;IAChB,IAAI,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,MAAM,QAAQ,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC;IAErD,iBAAiB;IACjB,IAAI,eAAe,GAAkB,IAAI,CAAC;IAC1C,IAAI,eAAe,GAAkB,IAAI,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAe,EAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QACvC,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC;QAC/B,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,EAAE;SACvB,MAAM,CAAC,0BAAc,CAAC;SACtB,GAAG,CAAC;QACH,WAAW;QACX,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;QAC7C,mBAAmB,EAAE,eAAe;QACpC,mBAAmB,EAAE,eAAe;QACpC,eAAe,EAAE,IAAI,IAAI,EAAE;QAC3B,SAAS,EAAE,IAAI,IAAI,EAAE;KACtB,CAAC;SACD,KAAK,CAAC,IAAA,gBAAE,EAAC,0BAAc,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;SACvC,SAAS,EAAE,CAAC;IAEf,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACnD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,sBAAsB,CAC1C,UAAkB;IAElB,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,EAAE;SACvB,MAAM,EAAE;SACR,IAAI,CAAC,0BAAc,CAAC;SACpB,KAAK,CAAC,IAAA,gBAAE,EAAC,0BAAc,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;SAChD,KAAK,CAAC,CAAC,CAAC,CAAC;IAEZ,OAAO,OAAO,IAAI,IAAI,CAAC;AACzB,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,qBAAqB,CACzC,MAAc;IAEd,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,OAAO,EAAE;SACN,MAAM,EAAE;SACR,IAAI,CAAC,0BAAc,CAAC;SACpB,KAAK,CAAC,IAAA,gBAAE,EAAC,0BAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SACxC,OAAO,CAAC,0BAAc,CAAC,SAAS,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,oBAAoB,CACxC,SAAiB,EACjB,MAAc;IAEd,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,EAAE;SACvB,MAAM,EAAE;SACR,IAAI,CAAC,0BAAc,CAAC;SACpB,KAAK,CACJ,IAAA,iBAAG,EAAC,IAAA,gBAAE,EAAC,0BAAc,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,IAAA,gBAAE,EAAC,0BAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CACzE;SACA,KAAK,CAAC,CAAC,CAAC,CAAC;IAEZ,OAAO,OAAO,IAAI,IAAI,CAAC;AACzB,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,mBAAmB,CACvC,SAAiB,EACjB,MAAc;IAEd,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,MAAM,MAAM,GAAG,MAAM,EAAE;SACpB,MAAM,CAAC,0BAAc,CAAC;SACtB,KAAK,CACJ,IAAA,iBAAG,EAAC,IAAA,gBAAE,EAAC,0BAAc,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,IAAA,gBAAE,EAAC,0BAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CACzE,CAAC;IAEJ,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,qBAAqB,CAAC,SAAiB;IAI3D,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,EAAE;SACvB,MAAM,EAAE;SACR,IAAI,CAAC,0BAAc,CAAC;SACpB,KAAK,CAAC,IAAA,gBAAE,EAAC,0BAAc,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;SACvC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEZ,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAEnD,IAAI,KAAK,GAAkB,IAAI,CAAC;IAChC,IAAI,KAAK,GAAkB,IAAI,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAe,EAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QACvC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QACrB,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,qBAAqB;IACvB,CAAC;IAED,MAAM,EAAE;SACL,MAAM,CAAC,0BAAc,CAAC;SACtB,GAAG,CAAC;QACH,mBAAmB,EAAE,KAAK;QAC1B,mBAAmB,EAAE,KAAK;QAC1B,eAAe,EAAE,IAAI,IAAI,EAAE;QAC3B,SAAS,EAAE,IAAI,IAAI,EAAE;KACtB,CAAC;SACD,KAAK,CAAC,IAAA,gBAAE,EAAC,0BAAc,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;IAE3C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC1B,CAAC;AAED,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E;;GAEG;AACI,KAAK,UAAU,4BAA4B,CAChD,cAAsB,GAAG;IAEzB,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,MAAM,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC;IAChC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAEjD,OAAO,EAAE;SACN,MAAM,EAAE;SACR,IAAI,CAAC,0BAAc,CAAC;SACpB,KAAK,CACJ,IAAA,iBAAG,EACD,IAAA,gBAAE,EAAC,0BAAc,CAAC,aAAa,EAAE,QAAQ,CAAC,EAC1C,IAAA,gBAAE,EACA,IAAA,oBAAM,EAAC,0BAAc,CAAC,eAAe,CAAC,EACtC,IAAA,gBAAE,EAAC,0BAAc,CAAC,eAAe,EAAE,YAAY,CAAC,CACjD,CACF,CACF;SACA,KAAK,CAAC,WAAW,CAAC,CAAC;AACxB,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,8BAA8B,CAClD,cAAsB,EAAE;IAExB,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,OAAO,EAAE;SACN,MAAM,EAAE;SACR,IAAI,CAAC,0BAAc,CAAC;SACpB,KAAK,CAAC,IAAA,gBAAE,EAAC,0BAAc,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;SACvD,KAAK,CAAC,WAAW,CAAC,CAAC;AACxB,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,eAAe,CACnC,MAAc,EACd,aAAsB;IAEtB,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IAEhD,MAAM,UAAU,GAAG;QACjB,IAAA,gBAAE,EAAC,0BAAc,CAAC,MAAM,EAAE,WAAW,CAAC;QACtC,IAAA,gBAAE,EAAC,0BAAc,CAAC,kBAAkB,EAAE,UAAU,CAAC;KAClD,CAAC;IAEF,IAAI,aAAa,EAAE,CAAC;QAClB,kDAAkD;QAClD,MAAM,QAAQ,GAAG,MAAM,EAAE;aACtB,MAAM,CAAC,EAAE,MAAM,EAAE,0BAAc,CAAC,MAAM,EAAE,CAAC;aACzC,IAAI,CAAC,0BAAc,CAAC;aACpB,KAAK,CAAC,IAAA,iBAAG,EAAC,GAAG,UAAU,CAAC,CAAC;aACzB,KAAK,CAAC,CAAC,CAAC,CAAC;QAEZ,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC;IACrE,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,EAAE;SACtB,MAAM,CAAC,EAAE,EAAE,EAAE,0BAAc,CAAC,EAAE,EAAE,CAAC;SACjC,IAAI,CAAC,0BAAc,CAAC;SACpB,KAAK,CAAC,IAAA,iBAAG,EAAC,GAAG,UAAU,CAAC,CAAC;SACzB,KAAK,CAAC,CAAC,CAAC,CAAC;IAEZ,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Latency Testing Service
3
+ *
4
+ * Measures response times for UCP endpoints and API performance.
5
+ * Part of Issue #47: Latency & Performance Testing
6
+ */
7
+ export interface LatencyMeasurement {
8
+ url: string;
9
+ method: 'GET' | 'POST' | 'HEAD';
10
+ responseTimeMs: number;
11
+ statusCode: number | null;
12
+ success: boolean;
13
+ error?: string;
14
+ timestamp: Date;
15
+ }
16
+ export interface EndpointLatency {
17
+ endpoint: string;
18
+ measurements: LatencyMeasurement[];
19
+ avgResponseTimeMs: number;
20
+ minResponseTimeMs: number;
21
+ maxResponseTimeMs: number;
22
+ successRate: number;
23
+ }
24
+ export interface LatencyReport {
25
+ domain: string;
26
+ ucpProfile: EndpointLatency | null;
27
+ apiEndpoint: EndpointLatency | null;
28
+ homepage: EndpointLatency | null;
29
+ overallAvgMs: number;
30
+ performanceScore: number;
31
+ performanceGrade: 'excellent' | 'good' | 'acceptable' | 'slow' | 'very_slow';
32
+ testedAt: Date;
33
+ }
34
+ declare const THRESHOLDS: {
35
+ excellent: number;
36
+ good: number;
37
+ acceptable: number;
38
+ slow: number;
39
+ };
40
+ /**
41
+ * Calculate performance grade from average latency
42
+ */
43
+ declare function calculatePerformanceGrade(avgMs: number): LatencyReport['performanceGrade'];
44
+ /**
45
+ * Calculate performance score (0-100) from latency
46
+ */
47
+ declare function calculatePerformanceScore(avgMs: number): number;
48
+ /**
49
+ * Measure latency for a domain's UCP endpoints
50
+ */
51
+ export declare function measureDomainLatency(domain: string, profile?: any, options?: {
52
+ sampleCount?: number;
53
+ timeoutMs?: number;
54
+ measureHomepage?: boolean;
55
+ measureApi?: boolean;
56
+ }): Promise<LatencyReport>;
57
+ /**
58
+ * Quick latency check (single sample) for free tier
59
+ */
60
+ export declare function quickLatencyCheck(domain: string): Promise<{
61
+ ucpLatencyMs: number | null;
62
+ homepageLatencyMs: number | null;
63
+ performanceScore: number;
64
+ performanceGrade: LatencyReport['performanceGrade'];
65
+ }>;
66
+ export { THRESHOLDS, calculatePerformanceGrade, calculatePerformanceScore };
67
+ //# sourceMappingURL=latency.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"latency.d.ts","sourceRoot":"","sources":["../../src/services/latency.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,kBAAkB,EAAE,CAAC;IACnC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,eAAe,GAAG,IAAI,CAAC;IACnC,WAAW,EAAE,eAAe,GAAG,IAAI,CAAC;IACpC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,WAAW,GAAG,MAAM,GAAG,YAAY,GAAG,MAAM,GAAG,WAAW,CAAC;IAC7E,QAAQ,EAAE,IAAI,CAAC;CAChB;AAGD,QAAA,MAAM,UAAU;;;;;CAMf,CAAC;AAsHF;;GAEG;AACH,iBAAS,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,kBAAkB,CAAC,CAMnF;AAED;;GAEG;AACH,iBAAS,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAwBxD;AAuBD;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,GAAG,EACb,OAAO,GAAE;IACP,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;CACjB,GACL,OAAO,CAAC,aAAa,CAAC,CAwExB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/D,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;CACrD,CAAC,CAiCD;AAGD,OAAO,EAAE,UAAU,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,CAAC"}