@ucptools/validator 1.0.0 → 1.1.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 (330) 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.d.ts +6 -0
  18. package/dist/cli/index.d.ts.map +1 -0
  19. package/dist/cli/index.js +375 -0
  20. package/dist/cli/index.js.map +1 -0
  21. package/dist/cli/mock-server.d.ts +20 -0
  22. package/dist/cli/mock-server.d.ts.map +1 -0
  23. package/dist/cli/mock-server.js +261 -0
  24. package/dist/cli/mock-server.js.map +1 -0
  25. package/dist/compliance/compliance-generator.d.ts +34 -0
  26. package/dist/compliance/compliance-generator.d.ts.map +1 -0
  27. package/dist/compliance/compliance-generator.js +320 -0
  28. package/dist/compliance/compliance-generator.js.map +1 -0
  29. package/dist/compliance/index.d.ts +8 -0
  30. package/dist/compliance/index.d.ts.map +1 -0
  31. package/dist/compliance/index.js +17 -0
  32. package/dist/compliance/index.js.map +1 -0
  33. package/dist/compliance/templates.d.ts +34 -0
  34. package/dist/compliance/templates.d.ts.map +1 -0
  35. package/{src/compliance/templates.ts → dist/compliance/templates.js} +117 -155
  36. package/dist/compliance/templates.js.map +1 -0
  37. package/dist/compliance/types.d.ts +64 -0
  38. package/dist/compliance/types.d.ts.map +1 -0
  39. package/dist/compliance/types.js +64 -0
  40. package/dist/compliance/types.js.map +1 -0
  41. package/dist/db/index.d.ts +17 -0
  42. package/dist/db/index.d.ts.map +1 -0
  43. package/dist/db/index.js +80 -0
  44. package/dist/db/index.js.map +1 -0
  45. package/dist/db/schema.d.ts +3886 -0
  46. package/dist/db/schema.d.ts.map +1 -0
  47. package/dist/db/schema.js +425 -0
  48. package/dist/db/schema.js.map +1 -0
  49. package/dist/db/utils.d.ts +252 -0
  50. package/dist/db/utils.d.ts.map +1 -0
  51. package/dist/db/utils.js +295 -0
  52. package/dist/db/utils.js.map +1 -0
  53. package/dist/feed-analyzer/feed-analyzer.d.ts +26 -0
  54. package/dist/feed-analyzer/feed-analyzer.d.ts.map +1 -0
  55. package/{src/feed-analyzer/feed-analyzer.ts → dist/feed-analyzer/feed-analyzer.js} +856 -726
  56. package/dist/feed-analyzer/feed-analyzer.js.map +1 -0
  57. package/dist/feed-analyzer/index.d.ts +8 -0
  58. package/dist/feed-analyzer/index.d.ts.map +1 -0
  59. package/dist/feed-analyzer/index.js +19 -0
  60. package/dist/feed-analyzer/index.js.map +1 -0
  61. package/dist/feed-analyzer/types.d.ts +285 -0
  62. package/dist/feed-analyzer/types.d.ts.map +1 -0
  63. package/dist/feed-analyzer/types.js +175 -0
  64. package/dist/feed-analyzer/types.js.map +1 -0
  65. package/{src/generator/index.ts → dist/generator/index.d.ts} +1 -1
  66. package/dist/generator/index.d.ts.map +1 -0
  67. package/dist/generator/index.js +13 -0
  68. package/dist/generator/index.js.map +1 -0
  69. package/dist/generator/key-generator.d.ts +24 -0
  70. package/dist/generator/key-generator.d.ts.map +1 -0
  71. package/dist/generator/key-generator.js +144 -0
  72. package/dist/generator/key-generator.js.map +1 -0
  73. package/dist/generator/profile-builder.d.ts +15 -0
  74. package/dist/generator/profile-builder.d.ts.map +1 -0
  75. package/dist/generator/profile-builder.js +338 -0
  76. package/dist/generator/profile-builder.js.map +1 -0
  77. package/dist/hosting/artifacts-generator.d.ts +10 -0
  78. package/dist/hosting/artifacts-generator.d.ts.map +1 -0
  79. package/{src/hosting/artifacts-generator.ts → dist/hosting/artifacts-generator.js} +191 -241
  80. package/dist/hosting/artifacts-generator.js.map +1 -0
  81. package/{src/hosting/index.ts → dist/hosting/index.d.ts} +1 -1
  82. package/dist/hosting/index.d.ts.map +1 -0
  83. package/dist/hosting/index.js +10 -0
  84. package/dist/hosting/index.js.map +1 -0
  85. package/dist/index.d.ts +18 -0
  86. package/dist/index.d.ts.map +1 -0
  87. package/dist/index.js +78 -0
  88. package/dist/index.js.map +1 -0
  89. package/dist/lib/analytics.d.ts +337 -0
  90. package/dist/lib/analytics.d.ts.map +1 -0
  91. package/dist/lib/analytics.js +188 -0
  92. package/dist/lib/analytics.js.map +1 -0
  93. package/{src/security/index.ts → dist/security/index.d.ts} +8 -15
  94. package/dist/security/index.d.ts.map +1 -0
  95. package/dist/security/index.js +12 -0
  96. package/dist/security/index.js.map +1 -0
  97. package/dist/security/security-scanner.d.ts +10 -0
  98. package/dist/security/security-scanner.d.ts.map +1 -0
  99. package/dist/security/security-scanner.js +669 -0
  100. package/dist/security/security-scanner.js.map +1 -0
  101. package/dist/security/types.d.ts +80 -0
  102. package/dist/security/types.d.ts.map +1 -0
  103. package/dist/security/types.js +21 -0
  104. package/dist/security/types.js.map +1 -0
  105. package/dist/services/analytics.d.ts +114 -0
  106. package/dist/services/analytics.d.ts.map +1 -0
  107. package/dist/services/analytics.js +862 -0
  108. package/dist/services/analytics.js.map +1 -0
  109. package/dist/services/badge.d.ts +31 -0
  110. package/dist/services/badge.d.ts.map +1 -0
  111. package/dist/services/badge.js +152 -0
  112. package/dist/services/badge.js.map +1 -0
  113. package/dist/services/cron.d.ts +125 -0
  114. package/dist/services/cron.d.ts.map +1 -0
  115. package/dist/services/cron.js +613 -0
  116. package/dist/services/cron.js.map +1 -0
  117. package/dist/services/directory.d.ts +106 -0
  118. package/dist/services/directory.d.ts.map +1 -0
  119. package/dist/services/directory.js +351 -0
  120. package/dist/services/directory.js.map +1 -0
  121. package/dist/services/email.d.ts +112 -0
  122. package/dist/services/email.d.ts.map +1 -0
  123. package/dist/services/email.js +772 -0
  124. package/dist/services/email.js.map +1 -0
  125. package/dist/services/hosted-profiles.d.ts +77 -0
  126. package/dist/services/hosted-profiles.d.ts.map +1 -0
  127. package/dist/services/hosted-profiles.js +433 -0
  128. package/dist/services/hosted-profiles.js.map +1 -0
  129. package/dist/services/latency.d.ts +67 -0
  130. package/dist/services/latency.d.ts.map +1 -0
  131. package/dist/services/latency.js +274 -0
  132. package/dist/services/latency.js.map +1 -0
  133. package/dist/services/manifest-compliance.d.ts +64 -0
  134. package/dist/services/manifest-compliance.d.ts.map +1 -0
  135. package/dist/services/manifest-compliance.js +271 -0
  136. package/dist/services/manifest-compliance.js.map +1 -0
  137. package/dist/services/monitoring-diff.d.ts +31 -0
  138. package/dist/services/monitoring-diff.d.ts.map +1 -0
  139. package/dist/services/monitoring-diff.js +189 -0
  140. package/dist/services/monitoring-diff.js.map +1 -0
  141. package/dist/services/notifications.d.ts +46 -0
  142. package/dist/services/notifications.d.ts.map +1 -0
  143. package/dist/services/notifications.js +88 -0
  144. package/dist/services/notifications.js.map +1 -0
  145. package/dist/services/stripe.d.ts +93 -0
  146. package/dist/services/stripe.d.ts.map +1 -0
  147. package/dist/services/stripe.js +490 -0
  148. package/dist/services/stripe.js.map +1 -0
  149. package/dist/services/validation-history.d.ts +99 -0
  150. package/dist/services/validation-history.d.ts.map +1 -0
  151. package/dist/services/validation-history.js +344 -0
  152. package/dist/services/validation-history.js.map +1 -0
  153. package/dist/services/validation-logging.d.ts +103 -0
  154. package/dist/services/validation-logging.d.ts.map +1 -0
  155. package/dist/services/validation-logging.js +210 -0
  156. package/dist/services/validation-logging.js.map +1 -0
  157. package/dist/services/validation.d.ts +119 -0
  158. package/dist/services/validation.d.ts.map +1 -0
  159. package/dist/services/validation.js +1185 -0
  160. package/dist/services/validation.js.map +1 -0
  161. package/dist/simulator/agent-simulator.d.ts +69 -0
  162. package/dist/simulator/agent-simulator.d.ts.map +1 -0
  163. package/dist/simulator/agent-simulator.js +870 -0
  164. package/dist/simulator/agent-simulator.js.map +1 -0
  165. package/{src/simulator/index.ts → dist/simulator/index.d.ts} +7 -7
  166. package/dist/simulator/index.d.ts.map +1 -0
  167. package/dist/simulator/index.js +23 -0
  168. package/dist/simulator/index.js.map +1 -0
  169. package/{src/simulator/types.ts → dist/simulator/types.d.ts} +171 -170
  170. package/dist/simulator/types.d.ts.map +1 -0
  171. package/dist/simulator/types.js +18 -0
  172. package/dist/simulator/types.js.map +1 -0
  173. package/dist/types/acp-validation.d.ts +87 -0
  174. package/dist/types/acp-validation.d.ts.map +1 -0
  175. package/dist/types/acp-validation.js +40 -0
  176. package/dist/types/acp-validation.js.map +1 -0
  177. package/dist/types/analytics.d.ts +182 -0
  178. package/dist/types/analytics.d.ts.map +1 -0
  179. package/dist/types/analytics.js +7 -0
  180. package/dist/types/analytics.js.map +1 -0
  181. package/dist/types/generator.d.ts +106 -0
  182. package/dist/types/generator.d.ts.map +1 -0
  183. package/dist/types/generator.js +6 -0
  184. package/dist/types/generator.js.map +1 -0
  185. package/{src/types/index.ts → dist/types/index.d.ts} +1 -1
  186. package/dist/types/index.d.ts.map +1 -0
  187. package/dist/types/index.js +23 -0
  188. package/dist/types/index.js.map +1 -0
  189. package/dist/types/ucp-profile.d.ts +111 -0
  190. package/dist/types/ucp-profile.d.ts.map +1 -0
  191. package/dist/types/ucp-profile.js +45 -0
  192. package/dist/types/ucp-profile.js.map +1 -0
  193. package/dist/types/validation.d.ts +76 -0
  194. package/dist/types/validation.d.ts.map +1 -0
  195. package/dist/types/validation.js +42 -0
  196. package/dist/types/validation.js.map +1 -0
  197. package/dist/validator/acp/index.d.ts +31 -0
  198. package/dist/validator/acp/index.d.ts.map +1 -0
  199. package/dist/validator/acp/index.js +574 -0
  200. package/dist/validator/acp/index.js.map +1 -0
  201. package/dist/validator/index.d.ts +26 -0
  202. package/dist/validator/index.d.ts.map +1 -0
  203. package/dist/validator/index.js +161 -0
  204. package/dist/validator/index.js.map +1 -0
  205. package/dist/validator/network-validator.d.ts +28 -0
  206. package/dist/validator/network-validator.d.ts.map +1 -0
  207. package/dist/validator/network-validator.js +319 -0
  208. package/dist/validator/network-validator.js.map +1 -0
  209. package/dist/validator/rules-validator.d.ts +19 -0
  210. package/dist/validator/rules-validator.d.ts.map +1 -0
  211. package/dist/validator/rules-validator.js +306 -0
  212. package/dist/validator/rules-validator.js.map +1 -0
  213. package/dist/validator/sdk-validator.d.ts +58 -0
  214. package/dist/validator/sdk-validator.d.ts.map +1 -0
  215. package/{src/validator/sdk-validator.ts → dist/validator/sdk-validator.js} +273 -330
  216. package/dist/validator/sdk-validator.js.map +1 -0
  217. package/dist/validator/structural-validator.d.ts +11 -0
  218. package/dist/validator/structural-validator.d.ts.map +1 -0
  219. package/dist/validator/structural-validator.js +549 -0
  220. package/dist/validator/structural-validator.js.map +1 -0
  221. package/dist/validator/utils.d.ts +51 -0
  222. package/dist/validator/utils.d.ts.map +1 -0
  223. package/dist/validator/utils.js +132 -0
  224. package/dist/validator/utils.js.map +1 -0
  225. package/package.json +44 -12
  226. package/CLAUDE.md +0 -109
  227. package/api/analyze-feed.js +0 -140
  228. package/api/badge.js +0 -185
  229. package/api/benchmark.js +0 -177
  230. package/api/directory-stats.ts +0 -29
  231. package/api/directory.ts +0 -73
  232. package/api/generate-compliance.js +0 -143
  233. package/api/generate-schema.js +0 -457
  234. package/api/generate.js +0 -132
  235. package/api/security-scan.js +0 -133
  236. package/api/simulate.js +0 -187
  237. package/api/tsconfig.json +0 -10
  238. package/api/validate.js +0 -1351
  239. package/apify-actor/.actor/actor.json +0 -68
  240. package/apify-actor/.actor/input_schema.json +0 -32
  241. package/apify-actor/APIFY-STORE-LISTING.md +0 -412
  242. package/apify-actor/Dockerfile +0 -8
  243. package/apify-actor/README.md +0 -166
  244. package/apify-actor/main.ts +0 -111
  245. package/apify-actor/package.json +0 -17
  246. package/apify-actor/src/main.js +0 -199
  247. package/docs/BRAND-IDENTITY.md +0 -238
  248. package/docs/BRAND-STYLE-GUIDE.md +0 -356
  249. package/drizzle/0000_black_king_cobra.sql +0 -39
  250. package/drizzle/meta/0000_snapshot.json +0 -309
  251. package/drizzle/meta/_journal.json +0 -13
  252. package/drizzle.config.ts +0 -10
  253. package/public/.well-known/ucp +0 -25
  254. package/public/android-chrome-192x192.png +0 -0
  255. package/public/android-chrome-512x512.png +0 -0
  256. package/public/apple-touch-icon.png +0 -0
  257. package/public/brand.css +0 -321
  258. package/public/directory.html +0 -701
  259. package/public/favicon-16x16.png +0 -0
  260. package/public/favicon-32x32.png +0 -0
  261. package/public/favicon.ico +0 -0
  262. package/public/guides/bigcommerce.html +0 -743
  263. package/public/guides/fastucp.html +0 -838
  264. package/public/guides/magento.html +0 -779
  265. package/public/guides/shopify.html +0 -726
  266. package/public/guides/squarespace.html +0 -749
  267. package/public/guides/wix.html +0 -747
  268. package/public/guides/woocommerce.html +0 -733
  269. package/public/index.html +0 -3835
  270. package/public/learn.html +0 -396
  271. package/public/logo.jpeg +0 -0
  272. package/public/og-image-icon.png +0 -0
  273. package/public/og-image.png +0 -0
  274. package/public/robots.txt +0 -6
  275. package/public/site.webmanifest +0 -31
  276. package/public/sitemap.xml +0 -69
  277. package/public/social/linkedin-banner-1128x191.png +0 -0
  278. package/public/social/temp.PNG +0 -0
  279. package/public/social/x-header-1500x500.png +0 -0
  280. package/public/verify.html +0 -410
  281. package/scripts/generate-favicons.js +0 -44
  282. package/scripts/generate-ico.js +0 -23
  283. package/scripts/generate-og-image.js +0 -45
  284. package/scripts/reset-db.ts +0 -77
  285. package/scripts/seed-db.ts +0 -71
  286. package/scripts/setup-benchmark-db.js +0 -70
  287. package/src/api/server.ts +0 -266
  288. package/src/cli/index.ts +0 -302
  289. package/src/compliance/compliance-generator.ts +0 -452
  290. package/src/compliance/index.ts +0 -28
  291. package/src/compliance/types.ts +0 -170
  292. package/src/db/index.ts +0 -28
  293. package/src/db/schema.ts +0 -84
  294. package/src/feed-analyzer/index.ts +0 -34
  295. package/src/feed-analyzer/types.ts +0 -354
  296. package/src/generator/key-generator.ts +0 -124
  297. package/src/generator/profile-builder.ts +0 -402
  298. package/src/index.ts +0 -105
  299. package/src/security/security-scanner.ts +0 -604
  300. package/src/security/types.ts +0 -55
  301. package/src/services/directory.ts +0 -434
  302. package/src/simulator/agent-simulator.ts +0 -941
  303. package/src/types/generator.ts +0 -140
  304. package/src/types/ucp-profile.ts +0 -140
  305. package/src/types/validation.ts +0 -89
  306. package/src/validator/index.ts +0 -194
  307. package/src/validator/network-validator.ts +0 -417
  308. package/src/validator/rules-validator.ts +0 -297
  309. package/src/validator/structural-validator.ts +0 -476
  310. package/tests/fixtures/non-compliant-profile.json +0 -25
  311. package/tests/fixtures/official-sample-profile.json +0 -75
  312. package/tests/integration/benchmark.test.ts +0 -207
  313. package/tests/integration/database.test.ts +0 -163
  314. package/tests/integration/directory-api.test.ts +0 -268
  315. package/tests/integration/simulate-api.test.ts +0 -230
  316. package/tests/integration/validate-api.test.ts +0 -269
  317. package/tests/setup.ts +0 -15
  318. package/tests/unit/agent-simulator.test.ts +0 -575
  319. package/tests/unit/compliance-generator.test.ts +0 -374
  320. package/tests/unit/directory-service.test.ts +0 -272
  321. package/tests/unit/feed-analyzer.test.ts +0 -517
  322. package/tests/unit/lint-suggestions.test.ts +0 -423
  323. package/tests/unit/official-samples.test.ts +0 -211
  324. package/tests/unit/pdf-report.test.ts +0 -390
  325. package/tests/unit/sdk-validator.test.ts +0 -531
  326. package/tests/unit/security-scanner.test.ts +0 -410
  327. package/tests/unit/validation.test.ts +0 -390
  328. package/tsconfig.json +0 -20
  329. package/vercel.json +0 -34
  330. package/vitest.config.ts +0 -22
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email.js","sourceRoot":"","sources":["../../src/services/email.ts"],"names":[],"mappings":"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"}
@@ -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":"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"}
@@ -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"}