@dropins/mcp 0.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 (103) hide show
  1. package/LICENSE.md +127 -0
  2. package/README.md +314 -0
  3. package/dist/common/project-reader.d.ts +55 -0
  4. package/dist/common/project-reader.js +173 -0
  5. package/dist/common/registry-loader.d.ts +101 -0
  6. package/dist/common/registry-loader.js +386 -0
  7. package/dist/common/response-handling.d.ts +12 -0
  8. package/dist/common/response-handling.js +21 -0
  9. package/dist/common/sanitize.d.ts +8 -0
  10. package/dist/common/sanitize.js +45 -0
  11. package/dist/common/synonyms.d.ts +9 -0
  12. package/dist/common/synonyms.js +127 -0
  13. package/dist/common/telemetry.d.ts +14 -0
  14. package/dist/common/telemetry.js +54 -0
  15. package/dist/common/types.d.ts +308 -0
  16. package/dist/common/types.js +1 -0
  17. package/dist/common/version.d.ts +2 -0
  18. package/dist/common/version.js +14 -0
  19. package/dist/index.d.ts +2 -0
  20. package/dist/index.js +136 -0
  21. package/dist/operations/analyze-project.d.ts +13 -0
  22. package/dist/operations/analyze-project.js +125 -0
  23. package/dist/operations/check-block-health.d.ts +19 -0
  24. package/dist/operations/check-block-health.js +1149 -0
  25. package/dist/operations/check-config.d.ts +13 -0
  26. package/dist/operations/check-config.js +228 -0
  27. package/dist/operations/explain-event-flow.d.ts +16 -0
  28. package/dist/operations/explain-event-flow.js +218 -0
  29. package/dist/operations/get-upgrade-diff.d.ts +13 -0
  30. package/dist/operations/get-upgrade-diff.js +144 -0
  31. package/dist/operations/list-api-functions.d.ts +13 -0
  32. package/dist/operations/list-api-functions.js +53 -0
  33. package/dist/operations/list-containers.d.ts +13 -0
  34. package/dist/operations/list-containers.js +44 -0
  35. package/dist/operations/list-design-tokens.d.ts +13 -0
  36. package/dist/operations/list-design-tokens.js +47 -0
  37. package/dist/operations/list-events.d.ts +16 -0
  38. package/dist/operations/list-events.js +39 -0
  39. package/dist/operations/list-graphql-queries.d.ts +19 -0
  40. package/dist/operations/list-graphql-queries.js +84 -0
  41. package/dist/operations/list-i18n-keys.d.ts +19 -0
  42. package/dist/operations/list-i18n-keys.js +105 -0
  43. package/dist/operations/list-models.d.ts +16 -0
  44. package/dist/operations/list-models.js +80 -0
  45. package/dist/operations/list-slots.d.ts +16 -0
  46. package/dist/operations/list-slots.js +81 -0
  47. package/dist/operations/scaffold-block.d.ts +31 -0
  48. package/dist/operations/scaffold-block.js +331 -0
  49. package/dist/operations/scaffold-extension.d.ts +28 -0
  50. package/dist/operations/scaffold-extension.js +346 -0
  51. package/dist/operations/scaffold-slot.d.ts +22 -0
  52. package/dist/operations/scaffold-slot.js +189 -0
  53. package/dist/operations/search-commerce-docs.d.ts +16 -0
  54. package/dist/operations/search-commerce-docs.js +101 -0
  55. package/dist/operations/search-docs.d.ts +23 -0
  56. package/dist/operations/search-docs.js +298 -0
  57. package/dist/operations/suggest-event-handler.d.ts +16 -0
  58. package/dist/operations/suggest-event-handler.js +175 -0
  59. package/dist/operations/suggest-slot-implementation.d.ts +19 -0
  60. package/dist/operations/suggest-slot-implementation.js +183 -0
  61. package/dist/registry/api-functions.json +3045 -0
  62. package/dist/registry/block-patterns.json +78 -0
  63. package/dist/registry/containers.json +2003 -0
  64. package/dist/registry/design-tokens.json +577 -0
  65. package/dist/registry/docs/boilerplate.json +55 -0
  66. package/dist/registry/docs/dropins-all.json +97 -0
  67. package/dist/registry/docs/dropins-b2b.json +607 -0
  68. package/dist/registry/docs/dropins-cart.json +163 -0
  69. package/dist/registry/docs/dropins-checkout.json +193 -0
  70. package/dist/registry/docs/dropins-order.json +139 -0
  71. package/dist/registry/docs/dropins-payment-services.json +73 -0
  72. package/dist/registry/docs/dropins-personalization.json +67 -0
  73. package/dist/registry/docs/dropins-product-details.json +139 -0
  74. package/dist/registry/docs/dropins-product-discovery.json +85 -0
  75. package/dist/registry/docs/dropins-recommendations.json +67 -0
  76. package/dist/registry/docs/dropins-user-account.json +121 -0
  77. package/dist/registry/docs/dropins-user-auth.json +103 -0
  78. package/dist/registry/docs/dropins-wishlist.json +85 -0
  79. package/dist/registry/docs/get-started.json +85 -0
  80. package/dist/registry/docs/how-tos.json +19 -0
  81. package/dist/registry/docs/index.json +139 -0
  82. package/dist/registry/docs/licensing.json +19 -0
  83. package/dist/registry/docs/merchants.json +523 -0
  84. package/dist/registry/docs/resources.json +13 -0
  85. package/dist/registry/docs/sdk.json +139 -0
  86. package/dist/registry/docs/setup.json +145 -0
  87. package/dist/registry/docs/troubleshooting.json +19 -0
  88. package/dist/registry/events.json +2200 -0
  89. package/dist/registry/examples/index.json +19 -0
  90. package/dist/registry/examples/storefront-checkout.json +377 -0
  91. package/dist/registry/examples/storefront-quote-management.json +49 -0
  92. package/dist/registry/extensions.json +272 -0
  93. package/dist/registry/graphql.json +3469 -0
  94. package/dist/registry/i18n.json +1873 -0
  95. package/dist/registry/models.json +1001 -0
  96. package/dist/registry/sdk.json +2357 -0
  97. package/dist/registry/slots.json +2270 -0
  98. package/dist/registry/tools-components.json +595 -0
  99. package/dist/resources/guides.d.ts +7 -0
  100. package/dist/resources/guides.js +625 -0
  101. package/dist/resources/handlers.d.ts +31 -0
  102. package/dist/resources/handlers.js +322 -0
  103. package/package.json +47 -0
@@ -0,0 +1,78 @@
1
+ {
2
+ "version": "1.0.0",
3
+ "description": "Common AEM block patterns for rendering dropin containers. Each block is a folder under blocks/ with a JS and CSS file. The JS file exports a default decorate(block) function.",
4
+ "blockLifecycle": "1. decorateBlocks() finds block divs by class name\n2. loadBlock() loads blocks/{name}/{name}.css and blocks/{name}/{name}.js\n3. The module's default export (decorate) is called with the block element\n4. decorate() renders dropin containers into the block element via provider.render(Container, props)(element)",
5
+ "initializerPattern": "Each dropin has an initializer at scripts/initializers/{name}.js that:\n1. Calls setEndpoint(CORE_FETCH_GRAPHQL)\n2. Fetches placeholders from placeholders/{name}.json\n3. Calls initializers.mountImmediately(initialize, { langDefinitions })\n\nBlocks import the initializer to ensure the dropin is initialized before rendering.",
6
+ "patterns": [
7
+ {
8
+ "name": "basic-single-container",
9
+ "description": "Simplest block pattern: render a single dropin container",
10
+ "template": "import '../../scripts/initializers/{{initializer}}.js';\nimport { render as provider } from '@dropins/storefront-{{dropin}}/render.js';\nimport {{Container}} from '@dropins/storefront-{{dropin}}/containers/{{Container}}.js';\n\nexport default async function decorate(block) {\n provider.render({{Container}}, {\n // props\n })(block);\n}",
11
+ "requiredImports": ["initializer", "render (as provider)", "container"],
12
+ "examples": [
13
+ "commerce-customer-information",
14
+ "commerce-order-status",
15
+ "commerce-shipping-status"
16
+ ]
17
+ },
18
+ {
19
+ "name": "container-with-slots",
20
+ "description": "Block that renders a container with custom slot implementations",
21
+ "template": "import '../../scripts/initializers/{{initializer}}.js';\nimport { render as provider } from '@dropins/storefront-{{dropin}}/render.js';\nimport {{Container}} from '@dropins/storefront-{{dropin}}/containers/{{Container}}.js';\n\nexport default async function decorate(block) {\n provider.render({{Container}}, {\n slots: {\n {{SlotName}}: (ctx) => {\n // ctx contains slot-specific context\n // ctx.replaceWith(element) — replace slot content\n // ctx.appendChild(element) — append to slot\n // ctx.prependChild(element) — prepend to slot\n // ctx.remove() — remove slot\n // ctx.onRender(callback) — run on each re-render\n },\n },\n })(block);\n}",
22
+ "requiredImports": ["initializer", "render (as provider)", "container"],
23
+ "examples": [
24
+ "commerce-cart",
25
+ "commerce-mini-cart",
26
+ "commerce-orders-list"
27
+ ]
28
+ },
29
+ {
30
+ "name": "multi-container-layout",
31
+ "description": "Block that creates a layout (main + aside) and renders multiple containers",
32
+ "template": "import '../../scripts/initializers/{{initializer}}.js';\nimport { render as provider } from '@dropins/storefront-{{dropin}}/render.js';\nimport {{Container1}} from '@dropins/storefront-{{dropin}}/containers/{{Container1}}.js';\nimport {{Container2}} from '@dropins/storefront-{{dropin}}/containers/{{Container2}}.js';\n\nexport default async function decorate(block) {\n const main = document.createElement('div');\n main.classList.add('{{blockName}}__main');\n\n const aside = document.createElement('div');\n aside.classList.add('{{blockName}}__aside');\n\n block.replaceChildren(main, aside);\n\n provider.render({{Container1}}, { /* props */ })(main);\n provider.render({{Container2}}, { /* props */ })(aside);\n}",
33
+ "requiredImports": [
34
+ "initializer",
35
+ "render (as provider)",
36
+ "multiple containers"
37
+ ],
38
+ "examples": ["commerce-checkout", "commerce-checkout-success"]
39
+ },
40
+ {
41
+ "name": "block-with-config",
42
+ "description": "Block that reads metadata configuration from the AEM block table",
43
+ "template": "import { readBlockConfig } from '../../scripts/aem.js';\nimport '../../scripts/initializers/{{initializer}}.js';\nimport { render as provider } from '@dropins/storefront-{{dropin}}/render.js';\nimport {{Container}} from '@dropins/storefront-{{dropin}}/containers/{{Container}}.js';\n\nexport default async function decorate(block) {\n const config = readBlockConfig(block);\n block.innerHTML = '';\n\n provider.render({{Container}}, {\n // Use config values as props\n routeCheckout: () => config['checkout-url'] || '/checkout',\n enableUpdateItemQuantity: config['enable-updating-product'] !== 'false',\n })(block);\n}",
44
+ "requiredImports": [
45
+ "readBlockConfig from scripts/aem.js",
46
+ "initializer",
47
+ "render (as provider)",
48
+ "container"
49
+ ],
50
+ "examples": ["commerce-cart", "commerce-addresses"]
51
+ },
52
+ {
53
+ "name": "block-with-events",
54
+ "description": "Block that listens to dropin events for cross-dropin communication",
55
+ "template": "import { events } from '@dropins/tools/event-bus.js';\nimport '../../scripts/initializers/{{initializer}}.js';\nimport { render as provider } from '@dropins/storefront-{{dropin}}/render.js';\nimport {{Container}} from '@dropins/storefront-{{dropin}}/containers/{{Container}}.js';\n\nexport default async function decorate(block) {\n // Listen for events\n events.on('{{eventName}}', (payload) => {\n // React to the event\n });\n\n provider.render({{Container}}, {\n // props\n })(block);\n}",
56
+ "requiredImports": [
57
+ "events from @dropins/tools/event-bus.js",
58
+ "initializer",
59
+ "render (as provider)",
60
+ "container"
61
+ ],
62
+ "examples": ["commerce-order-header", "commerce-checkout"]
63
+ },
64
+ {
65
+ "name": "block-with-extensions",
66
+ "description": "Checkout block with the extension system for custom payment methods, validation, and order placement",
67
+ "template": "import { getExtensionManager } from './extensions.js';\nimport '../../scripts/initializers/checkout.js';\nimport { render as CheckoutProvider } from '@dropins/storefront-checkout/render.js';\nimport PaymentMethods from '@dropins/storefront-checkout/containers/PaymentMethods.js';\nimport PlaceOrder from '@dropins/storefront-checkout/containers/PlaceOrder.js';\n\nexport default async function decorate(block) {\n const extensionManager = await getExtensionManager();\n\n // Handle payment redirects\n const redirectContext = { block, shouldExit: false };\n await extensionManager.executeHook('checkout/payment-response', redirectContext);\n if (redirectContext.shouldExit) return;\n\n // Get custom payment methods from extensions\n const paymentMethodsContext = { paymentMethods: {} };\n await extensionManager.executeHook('checkout/payment-methods', paymentMethodsContext);\n\n // Render with custom payment methods\n CheckoutProvider.render(PaymentMethods, {\n slots: {\n Methods: {\n ...paymentMethodsContext.paymentMethods,\n },\n },\n })(paymentMethodsContainer);\n\n // Place order with extension hooks\n CheckoutProvider.render(PlaceOrder, {\n handleValidation: async () => {\n const validationContext = { code, isValid: true };\n await extensionManager.executeHook('checkout/validate', validationContext);\n return validationContext.isValid;\n },\n handlePlaceOrder: async ({ cartId, code }) => {\n const placeOrderContext = { cartId, code, preventDefault: false };\n await extensionManager.executeHook('checkout/place-order', placeOrderContext);\n if (placeOrderContext.preventDefault) return;\n await orderApi.placeOrder(cartId);\n },\n })(placeOrderContainer);\n}",
68
+ "requiredImports": [
69
+ "getExtensionManager from ./extensions.js",
70
+ "checkout initializer",
71
+ "checkout render (as CheckoutProvider)",
72
+ "checkout containers",
73
+ "order API (for placeOrder)"
74
+ ],
75
+ "examples": ["commerce-checkout-with-extensions"]
76
+ }
77
+ ]
78
+ }