@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,144 @@
1
+ "use strict";
2
+ /**
3
+ * Signing Key Generator for UCP Webhook Signing
4
+ * Generates EC or RSA key pairs in JWK format
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.generateSigningKeyPair = generateSigningKeyPair;
41
+ exports.validatePublicKey = validatePublicKey;
42
+ exports.importPublicKey = importPublicKey;
43
+ const jose = __importStar(require("jose"));
44
+ const nanoid_1 = require("nanoid");
45
+ /**
46
+ * Generate a new signing key pair
47
+ */
48
+ async function generateSigningKeyPair(algorithm = 'ES256') {
49
+ const keyId = `ucp-${(0, nanoid_1.nanoid)(12)}`;
50
+ if (algorithm === 'ES256') {
51
+ return generateECKeyPair(keyId);
52
+ }
53
+ else {
54
+ return generateRSAKeyPair(keyId);
55
+ }
56
+ }
57
+ /**
58
+ * Generate EC (P-256) key pair
59
+ */
60
+ async function generateECKeyPair(keyId) {
61
+ const { publicKey, privateKey } = await jose.generateKeyPair('ES256', {
62
+ extractable: true,
63
+ });
64
+ // Export public key as JWK
65
+ const publicJwk = await jose.exportJWK(publicKey);
66
+ // Export private key as PEM
67
+ const privatePem = await jose.exportPKCS8(privateKey);
68
+ return {
69
+ publicKey: {
70
+ kty: 'EC',
71
+ kid: keyId,
72
+ use: 'sig',
73
+ alg: 'ES256',
74
+ crv: publicJwk.crv,
75
+ x: publicJwk.x,
76
+ y: publicJwk.y,
77
+ },
78
+ privateKey: privatePem,
79
+ };
80
+ }
81
+ /**
82
+ * Generate RSA (2048-bit) key pair
83
+ */
84
+ async function generateRSAKeyPair(keyId) {
85
+ const { publicKey, privateKey } = await jose.generateKeyPair('RS256', {
86
+ extractable: true,
87
+ modulusLength: 2048,
88
+ });
89
+ // Export public key as JWK
90
+ const publicJwk = await jose.exportJWK(publicKey);
91
+ // Export private key as PEM
92
+ const privatePem = await jose.exportPKCS8(privateKey);
93
+ return {
94
+ publicKey: {
95
+ kty: 'RSA',
96
+ kid: keyId,
97
+ use: 'sig',
98
+ alg: 'RS256',
99
+ n: publicJwk.n,
100
+ e: publicJwk.e,
101
+ },
102
+ privateKey: privatePem,
103
+ };
104
+ }
105
+ /**
106
+ * Validate a JWK public key structure
107
+ */
108
+ function validatePublicKey(key) {
109
+ const errors = [];
110
+ if (!key.kty) {
111
+ errors.push('Missing required field: kty');
112
+ }
113
+ if (!key.kid) {
114
+ errors.push('Missing required field: kid');
115
+ }
116
+ if (key.kty === 'EC') {
117
+ if (!key.crv)
118
+ errors.push('EC key missing curve (crv)');
119
+ if (!key.x)
120
+ errors.push('EC key missing x coordinate');
121
+ if (!key.y)
122
+ errors.push('EC key missing y coordinate');
123
+ if (key.crv && !['P-256', 'P-384', 'P-521'].includes(key.crv)) {
124
+ errors.push(`Unsupported EC curve: ${key.crv}`);
125
+ }
126
+ }
127
+ else if (key.kty === 'RSA') {
128
+ if (!key.n)
129
+ errors.push('RSA key missing modulus (n)');
130
+ if (!key.e)
131
+ errors.push('RSA key missing exponent (e)');
132
+ }
133
+ else if (key.kty) {
134
+ errors.push(`Unsupported key type: ${key.kty}`);
135
+ }
136
+ return errors;
137
+ }
138
+ /**
139
+ * Import and validate a public key from JWK
140
+ */
141
+ async function importPublicKey(jwk) {
142
+ return jose.importJWK(jwk, jwk.alg);
143
+ }
144
+ //# sourceMappingURL=key-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key-generator.js","sourceRoot":"","sources":["../../src/generator/key-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * UCP Profile Builder
3
+ * Generates valid UCP Business Profiles from configuration inputs
4
+ */
5
+ import type { UcpProfile } from '../types/ucp-profile.js';
6
+ import type { GeneratorInput, GeneratorOutput } from '../types/generator.js';
7
+ /**
8
+ * Build a complete UCP Profile from generator inputs
9
+ */
10
+ export declare function buildProfile(input: GeneratorInput): Promise<GeneratorOutput>;
11
+ /**
12
+ * Generate a minimal starter profile (for quick setup)
13
+ */
14
+ export declare function generateMinimalProfile(endpoint: string, ucpVersion?: string): UcpProfile;
15
+ //# sourceMappingURL=profile-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-builder.d.ts","sourceRoot":"","sources":["../../src/generator/profile-builder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,UAAU,EAMX,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EAGhB,MAAM,uBAAuB,CAAC;AAS/B;;GAEG;AACH,wBAAsB,YAAY,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CAsDlF;AA+RD;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,UAAU,GAAE,MAA4B,GACvC,UAAU,CAwBZ"}
@@ -0,0 +1,338 @@
1
+ "use strict";
2
+ /**
3
+ * UCP Profile Builder
4
+ * Generates valid UCP Business Profiles from configuration inputs
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.buildProfile = buildProfile;
8
+ exports.generateMinimalProfile = generateMinimalProfile;
9
+ const ucp_profile_js_1 = require("../types/ucp-profile.js");
10
+ const key_generator_js_1 = require("./key-generator.js");
11
+ /**
12
+ * Build a complete UCP Profile from generator inputs
13
+ */
14
+ async function buildProfile(input) {
15
+ const ucpVersion = input.ucpVersion || ucp_profile_js_1.CURRENT_UCP_VERSION;
16
+ // Build services
17
+ const services = buildServices(input.transport, ucpVersion);
18
+ // Build capabilities
19
+ const capabilities = buildCapabilities(input.capabilities, ucpVersion);
20
+ // Build the UCP object
21
+ const ucpObject = {
22
+ version: ucpVersion,
23
+ services,
24
+ capabilities,
25
+ };
26
+ // Build the full profile
27
+ const profile = {
28
+ ucp: ucpObject,
29
+ };
30
+ // Handle signing keys if Order capability is enabled
31
+ let signingKeyPair;
32
+ if (input.capabilities.order) {
33
+ if (input.security?.generateSigningKeys !== false) {
34
+ // Generate new signing keys
35
+ const keyPair = await (0, key_generator_js_1.generateSigningKeyPair)(input.security?.signingKeyAlgorithm || 'ES256');
36
+ profile.signing_keys = [keyPair.publicKey];
37
+ signingKeyPair = keyPair;
38
+ }
39
+ else if (input.security?.uploadedPublicKey) {
40
+ // Use uploaded public key
41
+ const publicKey = parsePublicKey(input.security.uploadedPublicKey);
42
+ profile.signing_keys = [publicKey];
43
+ }
44
+ }
45
+ // Format the profile JSON
46
+ const profileJson = JSON.stringify(profile, null, 2);
47
+ // Generate install instructions
48
+ const installInstructions = generateInstallInstructions(input.merchant.primaryDomain, input.merchant.merchantId);
49
+ return {
50
+ profile,
51
+ profileJson,
52
+ installInstructions,
53
+ signingKeyPair,
54
+ };
55
+ }
56
+ /**
57
+ * Build services configuration
58
+ */
59
+ function buildServices(transport, ucpVersion) {
60
+ const services = {};
61
+ // Always include the shopping service for MVP
62
+ const shoppingService = {
63
+ version: ucpVersion,
64
+ spec: `${ucp_profile_js_1.UCP_DEFAULTS.SPEC_BASE}overview/`,
65
+ };
66
+ // Add REST transport (required for MVP)
67
+ if (transport.rest) {
68
+ shoppingService.rest = {
69
+ schema: transport.rest.schemaUrl || ucp_profile_js_1.UCP_DEFAULTS.SHOPPING_REST_SCHEMA,
70
+ endpoint: normalizeEndpoint(transport.rest.endpoint),
71
+ };
72
+ }
73
+ // Add MCP transport (optional)
74
+ if (transport.mcp) {
75
+ shoppingService.mcp = {
76
+ schema: transport.mcp.schemaUrl || `${ucp_profile_js_1.UCP_DEFAULTS.SERVICE_SCHEMA_BASE}shopping/mcp.json`,
77
+ endpoint: normalizeEndpoint(transport.mcp.endpoint),
78
+ };
79
+ }
80
+ // Add A2A transport (optional)
81
+ if (transport.a2a) {
82
+ shoppingService.a2a = {
83
+ agentCard: transport.a2a.agentCardUrl,
84
+ };
85
+ }
86
+ // Add embedded transport (optional)
87
+ if (transport.embedded) {
88
+ shoppingService.embedded = {
89
+ schema: transport.embedded.schemaUrl,
90
+ };
91
+ }
92
+ services[ucp_profile_js_1.KNOWN_SERVICES.SHOPPING] = shoppingService;
93
+ return services;
94
+ }
95
+ /**
96
+ * Build capabilities array based on selection
97
+ */
98
+ function buildCapabilities(selection, ucpVersion) {
99
+ const capabilities = [];
100
+ // Checkout capability (default ON)
101
+ if (selection.checkout !== false) {
102
+ capabilities.push({
103
+ name: ucp_profile_js_1.KNOWN_CAPABILITIES.CHECKOUT,
104
+ version: ucpVersion,
105
+ spec: ucp_profile_js_1.UCP_DEFAULTS.CHECKOUT_SPEC,
106
+ schema: ucp_profile_js_1.UCP_DEFAULTS.CHECKOUT_SCHEMA,
107
+ });
108
+ }
109
+ // Order capability
110
+ if (selection.order) {
111
+ capabilities.push({
112
+ name: ucp_profile_js_1.KNOWN_CAPABILITIES.ORDER,
113
+ version: ucpVersion,
114
+ spec: ucp_profile_js_1.UCP_DEFAULTS.ORDER_SPEC,
115
+ schema: ucp_profile_js_1.UCP_DEFAULTS.ORDER_SCHEMA,
116
+ });
117
+ }
118
+ // Fulfillment capability (extends Order)
119
+ if (selection.fulfillment) {
120
+ capabilities.push({
121
+ name: ucp_profile_js_1.KNOWN_CAPABILITIES.FULFILLMENT,
122
+ version: ucpVersion,
123
+ spec: ucp_profile_js_1.UCP_DEFAULTS.FULFILLMENT_SPEC,
124
+ schema: ucp_profile_js_1.UCP_DEFAULTS.FULFILLMENT_SCHEMA,
125
+ extends: ucp_profile_js_1.KNOWN_CAPABILITIES.ORDER,
126
+ });
127
+ }
128
+ // Discount capability
129
+ if (selection.discount) {
130
+ capabilities.push({
131
+ name: ucp_profile_js_1.KNOWN_CAPABILITIES.DISCOUNT,
132
+ version: ucpVersion,
133
+ spec: ucp_profile_js_1.UCP_DEFAULTS.DISCOUNT_SPEC,
134
+ schema: ucp_profile_js_1.UCP_DEFAULTS.DISCOUNT_SCHEMA,
135
+ });
136
+ }
137
+ // Custom capabilities
138
+ if (selection.customCapabilities) {
139
+ for (const custom of selection.customCapabilities) {
140
+ const capability = {
141
+ name: `${custom.namespace}.${custom.name}`,
142
+ version: custom.version,
143
+ spec: custom.specUrl,
144
+ schema: custom.schemaUrl,
145
+ };
146
+ if (custom.extendsCapability) {
147
+ capability.extends = custom.extendsCapability;
148
+ }
149
+ capabilities.push(capability);
150
+ }
151
+ }
152
+ return capabilities;
153
+ }
154
+ /**
155
+ * Normalize endpoint URL (ensure https, no trailing slash)
156
+ */
157
+ function normalizeEndpoint(endpoint) {
158
+ let normalized = endpoint.trim();
159
+ // Ensure https
160
+ if (!normalized.startsWith('https://')) {
161
+ if (normalized.startsWith('http://')) {
162
+ normalized = normalized.replace('http://', 'https://');
163
+ }
164
+ else {
165
+ normalized = `https://${normalized}`;
166
+ }
167
+ }
168
+ // Remove trailing slash
169
+ if (normalized.endsWith('/')) {
170
+ normalized = normalized.slice(0, -1);
171
+ }
172
+ return normalized;
173
+ }
174
+ /**
175
+ * Parse uploaded public key (PEM or JWK format)
176
+ */
177
+ function parsePublicKey(keyData) {
178
+ // Try to parse as JSON (JWK)
179
+ try {
180
+ const parsed = JSON.parse(keyData);
181
+ if (parsed.kty) {
182
+ return parsed;
183
+ }
184
+ }
185
+ catch {
186
+ // Not JSON, assume PEM format
187
+ }
188
+ // For PEM format, we'll need to convert (simplified for now)
189
+ throw new Error('PEM format not yet supported. Please provide the public key in JWK format.');
190
+ }
191
+ /**
192
+ * Generate installation instructions markdown
193
+ */
194
+ function generateInstallInstructions(merchantDomain, merchantId) {
195
+ return `# UCP Profile Installation Instructions
196
+
197
+ ## Profile Location
198
+
199
+ Your UCP Business Profile must be accessible at:
200
+ \`\`\`
201
+ https://${merchantDomain}/.well-known/ucp
202
+ \`\`\`
203
+
204
+ ## Installation Options
205
+
206
+ ### Option 1: Static File (Recommended for most setups)
207
+
208
+ 1. Save the \`ucp.json\` file to your web server
209
+ 2. Configure your server to serve it at \`/.well-known/ucp\`
210
+
211
+ #### Nginx Configuration
212
+ \`\`\`nginx
213
+ location = /.well-known/ucp {
214
+ alias /path/to/ucp.json;
215
+ default_type application/json;
216
+ add_header Access-Control-Allow-Origin "*";
217
+ add_header Cache-Control "public, max-age=3600";
218
+ }
219
+ \`\`\`
220
+
221
+ #### Apache Configuration
222
+ \`\`\`apache
223
+ <Directory "/path/to/.well-known">
224
+ Options -Indexes
225
+ AllowOverride None
226
+ Require all granted
227
+ </Directory>
228
+
229
+ <Files "ucp">
230
+ ForceType application/json
231
+ Header set Access-Control-Allow-Origin "*"
232
+ Header set Cache-Control "public, max-age=3600"
233
+ </Files>
234
+ \`\`\`
235
+
236
+ #### Vercel (vercel.json)
237
+ \`\`\`json
238
+ {
239
+ "rewrites": [
240
+ { "source": "/.well-known/ucp", "destination": "/ucp.json" }
241
+ ],
242
+ "headers": [
243
+ {
244
+ "source": "/.well-known/ucp",
245
+ "headers": [
246
+ { "key": "Content-Type", "value": "application/json" },
247
+ { "key": "Access-Control-Allow-Origin", "value": "*" }
248
+ ]
249
+ }
250
+ ]
251
+ }
252
+ \`\`\`
253
+
254
+ #### Netlify (_redirects)
255
+ \`\`\`
256
+ /.well-known/ucp /ucp.json 200
257
+ \`\`\`
258
+
259
+ ### Option 2: Edge Worker (Cloudflare)
260
+
261
+ This approach proxies the profile from our hosted service.
262
+
263
+ \`\`\`javascript
264
+ // Cloudflare Worker
265
+ export default {
266
+ async fetch(request, env) {
267
+ const profileUrl = 'https://profiles.ucp.tools/${merchantId}/ucp.json';
268
+
269
+ const response = await fetch(profileUrl, {
270
+ cf: { cacheTtl: 3600, cacheEverything: true }
271
+ });
272
+
273
+ return new Response(response.body, {
274
+ headers: {
275
+ 'Content-Type': 'application/json',
276
+ 'Access-Control-Allow-Origin': '*',
277
+ 'Cache-Control': 'public, max-age=3600'
278
+ }
279
+ });
280
+ }
281
+ };
282
+ \`\`\`
283
+
284
+ Route: \`${merchantDomain}/.well-known/ucp*\`
285
+
286
+ ### Option 3: Reverse Proxy (Nginx)
287
+
288
+ \`\`\`nginx
289
+ location = /.well-known/ucp {
290
+ proxy_pass https://profiles.ucp.tools/${merchantId}/ucp.json;
291
+ proxy_set_header Host profiles.ucp.tools;
292
+ proxy_cache_valid 200 1h;
293
+ add_header Access-Control-Allow-Origin "*";
294
+ }
295
+ \`\`\`
296
+
297
+ ## Verification
298
+
299
+ After installation, verify your profile:
300
+
301
+ 1. Open: https://${merchantDomain}/.well-known/ucp
302
+ 2. Confirm JSON response with correct structure
303
+ 3. Run validation: \`ucp-validate --remote https://${merchantDomain}\`
304
+
305
+ ## Support
306
+
307
+ For help, visit: https://ucp.tools
308
+ `;
309
+ }
310
+ /**
311
+ * Generate a minimal starter profile (for quick setup)
312
+ */
313
+ function generateMinimalProfile(endpoint, ucpVersion = ucp_profile_js_1.CURRENT_UCP_VERSION) {
314
+ return {
315
+ ucp: {
316
+ version: ucpVersion,
317
+ services: {
318
+ [ucp_profile_js_1.KNOWN_SERVICES.SHOPPING]: {
319
+ version: ucpVersion,
320
+ spec: `${ucp_profile_js_1.UCP_DEFAULTS.SPEC_BASE}overview/`,
321
+ rest: {
322
+ schema: ucp_profile_js_1.UCP_DEFAULTS.SHOPPING_REST_SCHEMA,
323
+ endpoint: normalizeEndpoint(endpoint),
324
+ },
325
+ },
326
+ },
327
+ capabilities: [
328
+ {
329
+ name: ucp_profile_js_1.KNOWN_CAPABILITIES.CHECKOUT,
330
+ version: ucpVersion,
331
+ spec: ucp_profile_js_1.UCP_DEFAULTS.CHECKOUT_SPEC,
332
+ schema: ucp_profile_js_1.UCP_DEFAULTS.CHECKOUT_SCHEMA,
333
+ },
334
+ ],
335
+ },
336
+ };
337
+ }
338
+ //# sourceMappingURL=profile-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-builder.js","sourceRoot":"","sources":["../../src/generator/profile-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Hosting Artifacts Generator
3
+ * Generates installation artifacts for different hosting platforms
4
+ */
5
+ import type { HostingConfig, InstallArtifact } from '../types/generator.js';
6
+ /**
7
+ * Generate all installation artifacts for a hosting configuration
8
+ */
9
+ export declare function generateHostingArtifacts(config: HostingConfig, profileJson: string): InstallArtifact[];
10
+ //# sourceMappingURL=artifacts-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifacts-generator.d.ts","sourceRoot":"","sources":["../../src/hosting/artifacts-generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,aAAa,EAGb,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAI/B;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,MAAM,GAClB,eAAe,EAAE,CA4BnB"}