sfcc-dev-mcp 1.0.15 → 1.0.19
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.
- package/.github/ISSUE_TEMPLATE/bug_report.yml +3 -1
- package/.github/ISSUE_TEMPLATE/documentation.yml +2 -2
- package/.github/ISSUE_TEMPLATE/question.yml +1 -1
- package/.github/PULL_REQUEST_TEMPLATE/documentation.md +1 -1
- package/.github/PULL_REQUEST_TEMPLATE/new_tool.md +1 -1
- package/.github/agents/official-docs-researcher.agent.md +56 -0
- package/.github/instructions/mcp-node-tests.instructions.md +12 -916
- package/.github/instructions/mcp-yml-tests.instructions.md +14 -742
- package/.github/pull_request_template.md +1 -1
- package/.github/skills/agent-authoring/SKILL.md +66 -0
- package/.github/skills/mcp-log-debugging/SKILL.md +69 -0
- package/.github/skills/mcp-programmatic-testing/SKILL.md +142 -0
- package/.github/skills/mcp-yaml-testing/SKILL.md +136 -0
- package/.github/skills/salesforce-developer-site-scraper/SKILL.md +102 -0
- package/.github/skills/salesforce-developer-site-scraper/scripts/scrape-to-markdown.js +205 -0
- package/.github/skills/salesforce-help-site-scraper/SKILL.md +84 -0
- package/.github/skills/salesforce-help-site-scraper/scripts/scrape-help-to-markdown.js +212 -0
- package/.github/skills/skill-authoring/SKILL.md +228 -0
- package/.github/skills/skill-authoring/references/PATTERNS.md +384 -0
- package/.github/workflows/ci.yml +3 -3
- package/.github/workflows/deploy-pages.yml +9 -19
- package/.github/workflows/publish.yml +5 -2
- package/.github/workflows/update-docs.yml +1 -1
- package/AGENTS.md +140 -286
- package/CONTRIBUTING.md +10 -22
- package/README.md +48 -16
- package/ai-instructions/{github-copilot/copilot-instructions.md → AGENTS.md} +99 -127
- package/ai-instructions/skills/sfcc-caching/SKILL.md +89 -0
- package/{dist/docs/best-practices/cartridge_creation.md → ai-instructions/skills/sfcc-cartridge-development/SKILL.md} +31 -7
- package/ai-instructions/skills/sfcc-forms-development/SKILL.md +261 -0
- package/ai-instructions/skills/sfcc-forms-development/references/ARCHITECTURE-SGJC-SFRA.md +143 -0
- package/ai-instructions/skills/sfcc-forms-development/references/FORM-XML-CHEATSHEET.md +127 -0
- package/ai-instructions/skills/sfcc-fraud-prevention/SKILL.md +95 -0
- package/ai-instructions/skills/sfcc-hooks-registration/SKILL.md +39 -0
- package/ai-instructions/skills/sfcc-isml-development/SKILL.md +370 -0
- package/ai-instructions/skills/sfcc-isml-development/references/REMOTE-INCLUDES.md +116 -0
- package/ai-instructions/skills/sfcc-isml-development/references/SFRA-LAYOUTS.md +50 -0
- package/ai-instructions/skills/sfcc-isml-development/references/SFRA-PAGES-CART-ACCOUNT-AUTH.md +45 -0
- package/ai-instructions/skills/sfcc-isml-development/references/SFRA-PAGES-CATALOG.md +85 -0
- package/ai-instructions/skills/sfcc-isml-development/references/SFRA-STRUCTURE-COMPONENTS.md +63 -0
- package/ai-instructions/skills/sfcc-isml-development/references/UTILITIES-EXPRESSIONS.md +159 -0
- package/ai-instructions/skills/sfcc-isml-development/references/sfra-base-templates-architecture.md +13 -0
- package/ai-instructions/skills/sfcc-job-development/SKILL.md +334 -0
- package/ai-instructions/skills/sfcc-job-development/references/CHUNK-ORIENTED.md +393 -0
- package/ai-instructions/skills/sfcc-job-development/references/STEPTYPES-JSON.md +271 -0
- package/ai-instructions/skills/sfcc-job-development/references/TASK-ORIENTED.md +257 -0
- package/ai-instructions/skills/sfcc-localization/SKILL.md +92 -0
- package/ai-instructions/skills/sfcc-localization/references/CONTROLLERS.md +63 -0
- package/ai-instructions/skills/sfcc-localization/references/FORMATTING.md +29 -0
- package/ai-instructions/skills/sfcc-localization/references/FORMS-LOCALIZATION.md +33 -0
- package/ai-instructions/skills/sfcc-localization/references/JAVASCRIPT-LOCALIZATION.md +41 -0
- package/ai-instructions/skills/sfcc-localization/references/LOCALE-SWITCHING.md +35 -0
- package/ai-instructions/skills/sfcc-localization/references/PATTERNS.md +740 -0
- package/ai-instructions/skills/sfcc-localization/references/PROPERTIES-ENCODING.md +25 -0
- package/ai-instructions/skills/sfcc-localization/references/RESOURCE-BUNDLES.md +67 -0
- package/ai-instructions/skills/sfcc-localization/references/STATIC-FILES.md +23 -0
- package/ai-instructions/skills/sfcc-localization/references/TESTING.md +21 -0
- package/{docs/best-practices/localserviceregistry.md → ai-instructions/skills/sfcc-localserviceregistry/SKILL.md} +65 -31
- package/ai-instructions/skills/sfcc-logging/SKILL.md +352 -0
- package/ai-instructions/skills/sfcc-logging/references/LOG-FILES.md +282 -0
- package/{docs/best-practices/ocapi_hooks.md → ai-instructions/skills/sfcc-ocapi-hooks/SKILL.md} +51 -16
- package/ai-instructions/skills/sfcc-ocapi-scapi-slas/SKILL.md +108 -0
- package/ai-instructions/skills/sfcc-page-designer/SKILL.md +353 -0
- package/ai-instructions/skills/sfcc-page-designer/references/ATTRIBUTE-TYPES.md +436 -0
- package/ai-instructions/skills/sfcc-page-designer/references/META-DEFINITIONS.md +322 -0
- package/{dist/docs/best-practices/performance.md → ai-instructions/skills/sfcc-performance/SKILL.md} +35 -3
- package/ai-instructions/skills/sfcc-platform-limits/SKILL.md +89 -0
- package/ai-instructions/skills/sfcc-scapi-custom-endpoints/SKILL.md +237 -0
- package/ai-instructions/skills/sfcc-scapi-custom-endpoints/references/AUTHENTICATION.md +214 -0
- package/ai-instructions/skills/sfcc-scapi-custom-endpoints/references/URL-MAPPING.md +253 -0
- package/{docs/best-practices/scapi_hooks.md → ai-instructions/skills/sfcc-scapi-hooks/SKILL.md} +44 -17
- package/ai-instructions/skills/sfcc-script-evaluation/SKILL.md +380 -0
- package/{docs/best-practices/security.md → ai-instructions/skills/sfcc-security/SKILL.md} +12 -3
- package/ai-instructions/skills/sfcc-sfra-client-side-js/SKILL.md +270 -0
- package/ai-instructions/skills/sfcc-sfra-client-side-js/references/AJAX-CSRF-VALIDATION.md +285 -0
- package/ai-instructions/skills/sfcc-sfra-client-side-js/references/BASE-MODULE-INDEX.md +206 -0
- package/ai-instructions/skills/sfcc-sfra-client-side-js/references/EXTENSION-PATTERNS.md +165 -0
- package/ai-instructions/skills/sfcc-sfra-client-side-js/references/PLUGIN-PATTERNS.md +185 -0
- package/ai-instructions/skills/sfcc-sfra-controllers/SKILL.md +347 -0
- package/ai-instructions/skills/sfcc-sfra-controllers/references/MIDDLEWARE-REFERENCE.md +257 -0
- package/ai-instructions/skills/sfcc-sfra-controllers/references/REMOTE-INCLUDES.md +193 -0
- package/{dist/docs/best-practices/sfra_controllers.md → ai-instructions/skills/sfcc-sfra-controllers/references/standard-sfra-controllers.md} +0 -670
- package/ai-instructions/skills/sfcc-sfra-models/SKILL.md +322 -0
- package/ai-instructions/skills/sfcc-sfra-models/references/MODEL-PATTERNS.md +530 -0
- package/ai-instructions/skills/sfcc-sfra-models/references/MODEL-STRUCTURE.md +234 -0
- package/ai-instructions/skills/sfcc-sfra-models/references/TESTING-SECURITY.md +417 -0
- package/{dist/docs/best-practices/sfra_scss.md → ai-instructions/skills/sfcc-sfra-scss/SKILL.md} +5 -0
- package/ai-instructions/skills/sfcc-webdav-workflows/SKILL.md +111 -0
- package/dist/ai-instructions/AGENTS.md +628 -0
- package/dist/ai-instructions/skills/sfcc-caching/SKILL.md +89 -0
- package/{docs/best-practices/cartridge_creation.md → dist/ai-instructions/skills/sfcc-cartridge-development/SKILL.md} +31 -7
- package/dist/ai-instructions/skills/sfcc-forms-development/SKILL.md +261 -0
- package/dist/ai-instructions/skills/sfcc-forms-development/references/ARCHITECTURE-SGJC-SFRA.md +143 -0
- package/dist/ai-instructions/skills/sfcc-forms-development/references/FORM-XML-CHEATSHEET.md +127 -0
- package/dist/ai-instructions/skills/sfcc-fraud-prevention/SKILL.md +95 -0
- package/dist/ai-instructions/skills/sfcc-hooks-registration/SKILL.md +39 -0
- package/dist/ai-instructions/skills/sfcc-isml-development/SKILL.md +370 -0
- package/dist/ai-instructions/skills/sfcc-isml-development/references/REMOTE-INCLUDES.md +116 -0
- package/dist/ai-instructions/skills/sfcc-isml-development/references/SFRA-LAYOUTS.md +50 -0
- package/dist/ai-instructions/skills/sfcc-isml-development/references/SFRA-PAGES-CART-ACCOUNT-AUTH.md +45 -0
- package/dist/ai-instructions/skills/sfcc-isml-development/references/SFRA-PAGES-CATALOG.md +85 -0
- package/dist/ai-instructions/skills/sfcc-isml-development/references/SFRA-STRUCTURE-COMPONENTS.md +63 -0
- package/dist/ai-instructions/skills/sfcc-isml-development/references/UTILITIES-EXPRESSIONS.md +159 -0
- package/dist/ai-instructions/skills/sfcc-isml-development/references/sfra-base-templates-architecture.md +13 -0
- package/dist/ai-instructions/skills/sfcc-job-development/SKILL.md +334 -0
- package/dist/ai-instructions/skills/sfcc-job-development/references/CHUNK-ORIENTED.md +393 -0
- package/dist/ai-instructions/skills/sfcc-job-development/references/STEPTYPES-JSON.md +271 -0
- package/dist/ai-instructions/skills/sfcc-job-development/references/TASK-ORIENTED.md +257 -0
- package/dist/ai-instructions/skills/sfcc-localization/SKILL.md +92 -0
- package/dist/ai-instructions/skills/sfcc-localization/references/CONTROLLERS.md +63 -0
- package/dist/ai-instructions/skills/sfcc-localization/references/FORMATTING.md +29 -0
- package/dist/ai-instructions/skills/sfcc-localization/references/FORMS-LOCALIZATION.md +33 -0
- package/dist/ai-instructions/skills/sfcc-localization/references/JAVASCRIPT-LOCALIZATION.md +41 -0
- package/dist/ai-instructions/skills/sfcc-localization/references/LOCALE-SWITCHING.md +35 -0
- package/dist/ai-instructions/skills/sfcc-localization/references/PATTERNS.md +740 -0
- package/dist/ai-instructions/skills/sfcc-localization/references/PROPERTIES-ENCODING.md +25 -0
- package/dist/ai-instructions/skills/sfcc-localization/references/RESOURCE-BUNDLES.md +67 -0
- package/dist/ai-instructions/skills/sfcc-localization/references/STATIC-FILES.md +23 -0
- package/dist/ai-instructions/skills/sfcc-localization/references/TESTING.md +21 -0
- package/dist/{docs/best-practices/localserviceregistry.md → ai-instructions/skills/sfcc-localserviceregistry/SKILL.md} +65 -31
- package/dist/ai-instructions/skills/sfcc-logging/SKILL.md +352 -0
- package/dist/ai-instructions/skills/sfcc-logging/references/LOG-FILES.md +282 -0
- package/dist/{docs/best-practices/ocapi_hooks.md → ai-instructions/skills/sfcc-ocapi-hooks/SKILL.md} +51 -16
- package/dist/ai-instructions/skills/sfcc-ocapi-scapi-slas/SKILL.md +108 -0
- package/dist/ai-instructions/skills/sfcc-page-designer/SKILL.md +353 -0
- package/dist/ai-instructions/skills/sfcc-page-designer/references/ATTRIBUTE-TYPES.md +436 -0
- package/dist/ai-instructions/skills/sfcc-page-designer/references/META-DEFINITIONS.md +322 -0
- package/{docs/best-practices/performance.md → dist/ai-instructions/skills/sfcc-performance/SKILL.md} +35 -3
- package/dist/ai-instructions/skills/sfcc-platform-limits/SKILL.md +89 -0
- package/dist/ai-instructions/skills/sfcc-scapi-custom-endpoints/SKILL.md +237 -0
- package/dist/ai-instructions/skills/sfcc-scapi-custom-endpoints/references/AUTHENTICATION.md +214 -0
- package/dist/ai-instructions/skills/sfcc-scapi-custom-endpoints/references/URL-MAPPING.md +253 -0
- package/dist/{docs/best-practices/scapi_hooks.md → ai-instructions/skills/sfcc-scapi-hooks/SKILL.md} +44 -17
- package/dist/ai-instructions/skills/sfcc-script-evaluation/SKILL.md +380 -0
- package/dist/{docs/best-practices/security.md → ai-instructions/skills/sfcc-security/SKILL.md} +12 -3
- package/dist/ai-instructions/skills/sfcc-sfra-client-side-js/SKILL.md +270 -0
- package/dist/ai-instructions/skills/sfcc-sfra-client-side-js/references/AJAX-CSRF-VALIDATION.md +285 -0
- package/dist/ai-instructions/skills/sfcc-sfra-client-side-js/references/BASE-MODULE-INDEX.md +206 -0
- package/dist/ai-instructions/skills/sfcc-sfra-client-side-js/references/EXTENSION-PATTERNS.md +165 -0
- package/dist/ai-instructions/skills/sfcc-sfra-client-side-js/references/PLUGIN-PATTERNS.md +185 -0
- package/dist/ai-instructions/skills/sfcc-sfra-controllers/SKILL.md +347 -0
- package/dist/ai-instructions/skills/sfcc-sfra-controllers/references/MIDDLEWARE-REFERENCE.md +257 -0
- package/dist/ai-instructions/skills/sfcc-sfra-controllers/references/REMOTE-INCLUDES.md +193 -0
- package/{docs/best-practices/sfra_controllers.md → dist/ai-instructions/skills/sfcc-sfra-controllers/references/standard-sfra-controllers.md} +0 -670
- package/dist/ai-instructions/skills/sfcc-sfra-models/SKILL.md +322 -0
- package/dist/ai-instructions/skills/sfcc-sfra-models/references/MODEL-PATTERNS.md +530 -0
- package/dist/ai-instructions/skills/sfcc-sfra-models/references/MODEL-STRUCTURE.md +234 -0
- package/dist/ai-instructions/skills/sfcc-sfra-models/references/TESTING-SECURITY.md +417 -0
- package/{docs/best-practices/sfra_scss.md → dist/ai-instructions/skills/sfcc-sfra-scss/SKILL.md} +5 -0
- package/dist/ai-instructions/skills/sfcc-webdav-workflows/SKILL.md +111 -0
- package/dist/clients/agent-instructions-client.d.ts +66 -0
- package/dist/clients/agent-instructions-client.d.ts.map +1 -0
- package/dist/clients/agent-instructions-client.js +277 -0
- package/dist/clients/agent-instructions-client.js.map +1 -0
- package/dist/clients/base/abstract-documentation-client.d.ts +146 -0
- package/dist/clients/base/abstract-documentation-client.d.ts.map +1 -0
- package/dist/clients/base/abstract-documentation-client.js +265 -0
- package/dist/clients/base/abstract-documentation-client.js.map +1 -0
- package/dist/clients/base/oauth-token.d.ts +18 -0
- package/dist/clients/base/oauth-token.d.ts.map +1 -1
- package/dist/clients/base/oauth-token.js +45 -2
- package/dist/clients/base/oauth-token.js.map +1 -1
- package/dist/clients/cartridge/cartridge-generation-client.d.ts +59 -0
- package/dist/clients/cartridge/cartridge-generation-client.d.ts.map +1 -0
- package/dist/clients/cartridge/cartridge-generation-client.js +224 -0
- package/dist/clients/cartridge/cartridge-generation-client.js.map +1 -0
- package/dist/clients/cartridge/cartridge-structure.d.ts +17 -0
- package/dist/clients/cartridge/cartridge-structure.d.ts.map +1 -0
- package/dist/clients/cartridge/cartridge-structure.js +33 -0
- package/dist/clients/cartridge/cartridge-structure.js.map +1 -0
- package/dist/clients/cartridge/cartridge-templates.d.ts +22 -0
- package/dist/clients/cartridge/cartridge-templates.d.ts.map +1 -0
- package/dist/clients/cartridge/cartridge-templates.js +225 -0
- package/dist/clients/cartridge/cartridge-templates.js.map +1 -0
- package/dist/clients/cartridge/index.d.ts +7 -0
- package/dist/clients/cartridge/index.d.ts.map +1 -0
- package/dist/clients/cartridge/index.js +7 -0
- package/dist/clients/cartridge/index.js.map +1 -0
- package/dist/clients/docs/documentation-scanner.d.ts +5 -2
- package/dist/clients/docs/documentation-scanner.d.ts.map +1 -1
- package/dist/clients/docs/documentation-scanner.js +38 -23
- package/dist/clients/docs/documentation-scanner.js.map +1 -1
- package/dist/clients/docs-client.d.ts +13 -4
- package/dist/clients/docs-client.d.ts.map +1 -1
- package/dist/clients/docs-client.js +44 -11
- package/dist/clients/docs-client.js.map +1 -1
- package/dist/clients/isml-client.d.ts +71 -0
- package/dist/clients/isml-client.d.ts.map +1 -0
- package/dist/clients/isml-client.js +252 -0
- package/dist/clients/isml-client.js.map +1 -0
- package/dist/clients/ocapi/code-versions-client.d.ts.map +1 -1
- package/dist/clients/ocapi/code-versions-client.js +6 -1
- package/dist/clients/ocapi/code-versions-client.js.map +1 -1
- package/dist/clients/ocapi-client.d.ts +9 -101
- package/dist/clients/ocapi-client.d.ts.map +1 -1
- package/dist/clients/ocapi-client.js +11 -93
- package/dist/clients/ocapi-client.js.map +1 -1
- package/dist/clients/script-debugger/index.d.ts +5 -0
- package/dist/clients/script-debugger/index.d.ts.map +1 -0
- package/dist/clients/script-debugger/index.js +5 -0
- package/dist/clients/script-debugger/index.js.map +1 -0
- package/dist/clients/script-debugger/script-debugger-client.d.ts +147 -0
- package/dist/clients/script-debugger/script-debugger-client.d.ts.map +1 -0
- package/dist/clients/script-debugger/script-debugger-client.js +591 -0
- package/dist/clients/script-debugger/script-debugger-client.js.map +1 -0
- package/dist/clients/sfra-client.d.ts +13 -62
- package/dist/clients/sfra-client.d.ts.map +1 -1
- package/dist/clients/sfra-client.js +105 -326
- package/dist/clients/sfra-client.js.map +1 -1
- package/dist/config/configuration-factory.d.ts +1 -1
- package/dist/config/configuration-factory.d.ts.map +1 -1
- package/dist/config/configuration-factory.js +5 -1
- package/dist/config/configuration-factory.js.map +1 -1
- package/dist/config/dw-json-loader.d.ts +7 -0
- package/dist/config/dw-json-loader.d.ts.map +1 -1
- package/dist/config/dw-json-loader.js +92 -15
- package/dist/config/dw-json-loader.js.map +1 -1
- package/dist/config/workspace-roots.d.ts +143 -0
- package/dist/config/workspace-roots.d.ts.map +1 -0
- package/dist/config/workspace-roots.js +448 -0
- package/dist/config/workspace-roots.js.map +1 -0
- package/dist/constants/index.d.ts +1 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +3 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/core/handlers/abstract-client-handler.d.ts +52 -0
- package/dist/core/handlers/abstract-client-handler.d.ts.map +1 -0
- package/dist/core/handlers/abstract-client-handler.js +51 -0
- package/dist/core/handlers/abstract-client-handler.js.map +1 -0
- package/dist/core/handlers/agent-instructions-handler.d.ts +17 -0
- package/dist/core/handlers/agent-instructions-handler.d.ts.map +1 -0
- package/dist/core/handlers/agent-instructions-handler.js +38 -0
- package/dist/core/handlers/agent-instructions-handler.js.map +1 -0
- package/dist/core/handlers/base-handler.d.ts +3 -68
- package/dist/core/handlers/base-handler.d.ts.map +1 -1
- package/dist/core/handlers/base-handler.js +11 -84
- package/dist/core/handlers/base-handler.js.map +1 -1
- package/dist/core/handlers/cartridge-handler.d.ts +10 -11
- package/dist/core/handlers/cartridge-handler.d.ts.map +1 -1
- package/dist/core/handlers/cartridge-handler.js +10 -28
- package/dist/core/handlers/cartridge-handler.js.map +1 -1
- package/dist/core/handlers/client-factory.d.ts +12 -2
- package/dist/core/handlers/client-factory.d.ts.map +1 -1
- package/dist/core/handlers/client-factory.js +28 -1
- package/dist/core/handlers/client-factory.js.map +1 -1
- package/dist/core/handlers/code-version-handler.d.ts +11 -11
- package/dist/core/handlers/code-version-handler.d.ts.map +1 -1
- package/dist/core/handlers/code-version-handler.js +13 -27
- package/dist/core/handlers/code-version-handler.js.map +1 -1
- package/dist/core/handlers/docs-handler.d.ts +6 -12
- package/dist/core/handlers/docs-handler.d.ts.map +1 -1
- package/dist/core/handlers/docs-handler.js +11 -36
- package/dist/core/handlers/docs-handler.js.map +1 -1
- package/dist/core/handlers/isml-handler.d.ts +11 -0
- package/dist/core/handlers/isml-handler.d.ts.map +1 -0
- package/dist/core/handlers/isml-handler.js +18 -0
- package/dist/core/handlers/isml-handler.js.map +1 -0
- package/dist/core/handlers/job-log-handler.d.ts +8 -7
- package/dist/core/handlers/job-log-handler.d.ts.map +1 -1
- package/dist/core/handlers/job-log-handler.js +14 -5
- package/dist/core/handlers/job-log-handler.js.map +1 -1
- package/dist/core/handlers/log-handler.d.ts +8 -7
- package/dist/core/handlers/log-handler.d.ts.map +1 -1
- package/dist/core/handlers/log-handler.js +14 -5
- package/dist/core/handlers/log-handler.js.map +1 -1
- package/dist/core/handlers/script-debugger-handler.d.ts +18 -0
- package/dist/core/handlers/script-debugger-handler.d.ts.map +1 -0
- package/dist/core/handlers/script-debugger-handler.js +31 -0
- package/dist/core/handlers/script-debugger-handler.js.map +1 -0
- package/dist/core/handlers/sfra-handler.d.ts +6 -12
- package/dist/core/handlers/sfra-handler.d.ts.map +1 -1
- package/dist/core/handlers/sfra-handler.js +11 -36
- package/dist/core/handlers/sfra-handler.js.map +1 -1
- package/dist/core/handlers/simple-client-handler.d.ts +41 -0
- package/dist/core/handlers/simple-client-handler.d.ts.map +1 -0
- package/dist/core/handlers/simple-client-handler.js +49 -0
- package/dist/core/handlers/simple-client-handler.js.map +1 -0
- package/dist/core/handlers/system-object-handler.d.ts +11 -11
- package/dist/core/handlers/system-object-handler.d.ts.map +1 -1
- package/dist/core/handlers/system-object-handler.js +13 -27
- package/dist/core/handlers/system-object-handler.js.map +1 -1
- package/dist/core/handlers/validation-helpers.d.ts +22 -24
- package/dist/core/handlers/validation-helpers.d.ts.map +1 -1
- package/dist/core/handlers/validation-helpers.js +89 -39
- package/dist/core/handlers/validation-helpers.js.map +1 -1
- package/dist/core/instruction-advisor.d.ts +28 -0
- package/dist/core/instruction-advisor.d.ts.map +1 -0
- package/dist/core/instruction-advisor.js +114 -0
- package/dist/core/instruction-advisor.js.map +1 -0
- package/dist/core/server.d.ts +25 -0
- package/dist/core/server.d.ts.map +1 -1
- package/dist/core/server.js +151 -11
- package/dist/core/server.js.map +1 -1
- package/dist/core/tool-definitions.d.ts +6 -854
- package/dist/core/tool-definitions.d.ts.map +1 -1
- package/dist/core/tool-definitions.js +8 -1064
- package/dist/core/tool-definitions.js.map +1 -1
- package/dist/core/tool-schemas/agent-instruction-tools.d.ts +77 -0
- package/dist/core/tool-schemas/agent-instruction-tools.d.ts.map +1 -0
- package/dist/core/tool-schemas/agent-instruction-tools.js +72 -0
- package/dist/core/tool-schemas/agent-instruction-tools.js.map +1 -0
- package/dist/core/tool-schemas/cartridge-tools.d.ts +27 -0
- package/dist/core/tool-schemas/cartridge-tools.d.ts.map +1 -0
- package/dist/core/tool-schemas/cartridge-tools.js +29 -0
- package/dist/core/tool-schemas/cartridge-tools.js.map +1 -0
- package/dist/core/tool-schemas/code-version-tools.d.ts +28 -0
- package/dist/core/tool-schemas/code-version-tools.d.ts.map +1 -0
- package/dist/core/tool-schemas/code-version-tools.js +28 -0
- package/dist/core/tool-schemas/code-version-tools.js.map +1 -0
- package/dist/core/tool-schemas/documentation-tools.d.ts +139 -0
- package/dist/core/tool-schemas/documentation-tools.d.ts.map +1 -0
- package/dist/core/tool-schemas/documentation-tools.js +104 -0
- package/dist/core/tool-schemas/documentation-tools.js.map +1 -0
- package/dist/core/tool-schemas/index.d.ts +17 -0
- package/dist/core/tool-schemas/index.d.ts.map +1 -0
- package/dist/core/tool-schemas/index.js +19 -0
- package/dist/core/tool-schemas/index.js.map +1 -0
- package/dist/core/tool-schemas/isml-tools.d.ts +98 -0
- package/dist/core/tool-schemas/isml-tools.d.ts.map +1 -0
- package/dist/core/tool-schemas/isml-tools.js +89 -0
- package/dist/core/tool-schemas/isml-tools.js.map +1 -0
- package/dist/core/tool-schemas/log-tools.d.ts +221 -0
- package/dist/core/tool-schemas/log-tools.d.ts.map +1 -0
- package/dist/core/tool-schemas/log-tools.js +180 -0
- package/dist/core/tool-schemas/log-tools.js.map +1 -0
- package/dist/core/tool-schemas/script-debugger-tools.d.ts +44 -0
- package/dist/core/tool-schemas/script-debugger-tools.d.ts.map +1 -0
- package/dist/core/tool-schemas/script-debugger-tools.js +83 -0
- package/dist/core/tool-schemas/script-debugger-tools.js.map +1 -0
- package/dist/core/tool-schemas/sfra-tools.d.ts +63 -0
- package/dist/core/tool-schemas/sfra-tools.d.ts.map +1 -0
- package/dist/core/tool-schemas/sfra-tools.js +65 -0
- package/dist/core/tool-schemas/sfra-tools.js.map +1 -0
- package/dist/core/tool-schemas/shared-schemas.d.ts +350 -0
- package/dist/core/tool-schemas/shared-schemas.d.ts.map +1 -0
- package/dist/core/tool-schemas/shared-schemas.js +153 -0
- package/dist/core/tool-schemas/shared-schemas.js.map +1 -0
- package/dist/core/tool-schemas/system-object-tools.d.ts +511 -0
- package/dist/core/tool-schemas/system-object-tools.d.ts.map +1 -0
- package/dist/core/tool-schemas/system-object-tools.js +126 -0
- package/dist/core/tool-schemas/system-object-tools.js.map +1 -0
- package/dist/docs/dw_net/HTTPClient.md +46 -2
- package/dist/docs/dw_net/HTTPClientLoggingConfig.md +296 -0
- package/dist/docs/dw_order/Basket.md +7 -7
- package/dist/docs/dw_order/BasketMgr.md +22 -6
- package/dist/docs/dw_order.hooks/BasketMergeHooks.md +42 -0
- package/dist/docs/dw_svc/ServiceCallback.md +2 -2
- package/dist/docs/isml/isactivedatacontext.md +382 -0
- package/dist/docs/isml/isactivedatahead.md +566 -0
- package/dist/docs/isml/isanalyticsoff.md +537 -0
- package/dist/docs/isml/isapplepay.md +667 -0
- package/dist/docs/isml/isbreak.md +687 -0
- package/dist/docs/isml/isbuynow.md +682 -0
- package/dist/docs/isml/iscache.md +802 -0
- package/dist/docs/isml/iscomment.md +794 -0
- package/dist/docs/isml/iscomponent.md +797 -0
- package/dist/docs/isml/iscontent.md +594 -0
- package/dist/docs/isml/iscontinue.md +563 -0
- package/dist/docs/isml/iscookie.md +798 -0
- package/dist/docs/isml/isdecorate.md +818 -0
- package/dist/docs/isml/isif.md +737 -0
- package/dist/docs/isml/isinclude.md +874 -0
- package/dist/docs/isml/isloop.md +377 -0
- package/dist/docs/isml/ismodule.md +844 -0
- package/dist/docs/isml/isnext.md +672 -0
- package/dist/docs/isml/isobject.md +760 -0
- package/dist/docs/isml/ispayment.md +577 -0
- package/dist/docs/isml/ispaymentmessages.md +664 -0
- package/dist/docs/isml/isprint.md +875 -0
- package/dist/docs/isml/isredirect.md +716 -0
- package/dist/docs/isml/isremove.md +725 -0
- package/dist/docs/isml/isreplace.md +783 -0
- package/dist/docs/isml/isscript.md +859 -0
- package/dist/docs/isml/isselect.md +908 -0
- package/dist/docs/isml/isset.md +585 -0
- package/dist/docs/isml/isslot.md +824 -0
- package/dist/docs/isml/isstatus.md +711 -0
- package/dist/main.d.ts +16 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +60 -28
- package/dist/main.js.map +1 -1
- package/dist/services/index.d.ts +4 -2
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +2 -2
- package/dist/services/index.js.map +1 -1
- package/dist/tool-configs/agent-instructions-tool-config.d.ts +6 -0
- package/dist/tool-configs/agent-instructions-tool-config.d.ts.map +1 -0
- package/dist/tool-configs/agent-instructions-tool-config.js +74 -0
- package/dist/tool-configs/agent-instructions-tool-config.js.map +1 -0
- package/dist/tool-configs/code-version-tool-config.d.ts.map +1 -1
- package/dist/tool-configs/code-version-tool-config.js +0 -5
- package/dist/tool-configs/code-version-tool-config.js.map +1 -1
- package/dist/tool-configs/docs-tool-config.d.ts.map +1 -1
- package/dist/tool-configs/docs-tool-config.js +0 -7
- package/dist/tool-configs/docs-tool-config.js.map +1 -1
- package/dist/tool-configs/isml-tool-config.d.ts +11 -0
- package/dist/tool-configs/isml-tool-config.d.ts.map +1 -0
- package/dist/tool-configs/isml-tool-config.js +77 -0
- package/dist/tool-configs/isml-tool-config.js.map +1 -0
- package/dist/tool-configs/job-log-tool-config.d.ts +1 -2
- package/dist/tool-configs/job-log-tool-config.d.ts.map +1 -1
- package/dist/tool-configs/job-log-tool-config.js +11 -15
- package/dist/tool-configs/job-log-tool-config.js.map +1 -1
- package/dist/tool-configs/log-tool-config.d.ts +1 -2
- package/dist/tool-configs/log-tool-config.d.ts.map +1 -1
- package/dist/tool-configs/log-tool-config.js +35 -51
- package/dist/tool-configs/log-tool-config.js.map +1 -1
- package/dist/tool-configs/script-debugger-tool-config.d.ts +11 -0
- package/dist/tool-configs/script-debugger-tool-config.d.ts.map +1 -0
- package/dist/tool-configs/script-debugger-tool-config.js +35 -0
- package/dist/tool-configs/script-debugger-tool-config.js.map +1 -0
- package/dist/tool-configs/sfra-tool-config.d.ts.map +1 -1
- package/dist/tool-configs/sfra-tool-config.js +0 -11
- package/dist/tool-configs/sfra-tool-config.js.map +1 -1
- package/dist/tool-configs/system-object-tool-config.d.ts.map +1 -1
- package/dist/tool-configs/system-object-tool-config.js +0 -5
- package/dist/tool-configs/system-object-tool-config.js.map +1 -1
- package/dist/types/types.d.ts +2 -0
- package/dist/types/types.d.ts.map +1 -1
- package/dist/utils/cache.d.ts +12 -10
- package/dist/utils/cache.d.ts.map +1 -1
- package/dist/utils/cache.js +47 -47
- package/dist/utils/cache.js.map +1 -1
- package/dist/utils/category-utils.d.ts +31 -0
- package/dist/utils/category-utils.d.ts.map +1 -0
- package/dist/utils/category-utils.js +45 -0
- package/dist/utils/category-utils.js.map +1 -0
- package/dist/utils/log-tool-constants.d.ts +16 -13
- package/dist/utils/log-tool-constants.d.ts.map +1 -1
- package/dist/utils/log-tool-constants.js +10 -11
- package/dist/utils/log-tool-constants.js.map +1 -1
- package/dist/utils/logger.d.ts +11 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +35 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/markdown-utils.d.ts +60 -0
- package/dist/utils/markdown-utils.d.ts.map +1 -0
- package/dist/utils/markdown-utils.js +206 -0
- package/dist/utils/markdown-utils.js.map +1 -0
- package/dist/utils/path-resolver.d.ts +12 -4
- package/dist/utils/path-resolver.d.ts.map +1 -1
- package/dist/utils/path-resolver.js +22 -8
- package/dist/utils/path-resolver.js.map +1 -1
- package/dist/utils/path-validation.d.ts +40 -0
- package/dist/utils/path-validation.d.ts.map +1 -0
- package/dist/utils/path-validation.js +84 -0
- package/dist/utils/path-validation.js.map +1 -0
- package/docs/dw_net/HTTPClient.md +46 -2
- package/docs/dw_net/HTTPClientLoggingConfig.md +296 -0
- package/docs/dw_order/Basket.md +7 -7
- package/docs/dw_order/BasketMgr.md +22 -6
- package/docs/dw_order.hooks/BasketMergeHooks.md +42 -0
- package/docs/dw_svc/ServiceCallback.md +2 -2
- package/docs/isml/isactivedatacontext.md +382 -0
- package/docs/isml/isactivedatahead.md +566 -0
- package/docs/isml/isanalyticsoff.md +537 -0
- package/docs/isml/isapplepay.md +667 -0
- package/docs/isml/isbreak.md +687 -0
- package/docs/isml/isbuynow.md +682 -0
- package/docs/isml/iscache.md +802 -0
- package/docs/isml/iscomment.md +794 -0
- package/docs/isml/iscomponent.md +797 -0
- package/docs/isml/iscontent.md +594 -0
- package/docs/isml/iscontinue.md +563 -0
- package/docs/isml/iscookie.md +798 -0
- package/docs/isml/isdecorate.md +818 -0
- package/docs/isml/isif.md +737 -0
- package/docs/isml/isinclude.md +874 -0
- package/docs/isml/isloop.md +377 -0
- package/docs/isml/ismodule.md +844 -0
- package/docs/isml/isnext.md +672 -0
- package/docs/isml/isobject.md +760 -0
- package/docs/isml/ispayment.md +577 -0
- package/docs/isml/ispaymentmessages.md +664 -0
- package/docs/isml/isprint.md +875 -0
- package/docs/isml/isredirect.md +716 -0
- package/docs/isml/isremove.md +725 -0
- package/docs/isml/isreplace.md +783 -0
- package/docs/isml/isscript.md +859 -0
- package/docs/isml/isselect.md +908 -0
- package/docs/isml/isset.md +585 -0
- package/docs/isml/isslot.md +824 -0
- package/docs/isml/isstatus.md +711 -0
- package/docs-site-v2/.vitepress/config.mts +190 -0
- package/docs-site-v2/.vitepress/theme/components/AssistantTabs.vue +96 -0
- package/docs-site-v2/.vitepress/theme/components/Callout.vue +10 -0
- package/docs-site-v2/.vitepress/theme/components/Collapsible.vue +14 -0
- package/docs-site-v2/.vitepress/theme/components/DwJsonBuilder.vue +82 -0
- package/docs-site-v2/.vitepress/theme/components/HomeSections.vue +552 -0
- package/docs-site-v2/.vitepress/theme/components/InstructionFilesTabs.vue +87 -0
- package/docs-site-v2/.vitepress/theme/components/ModeTabs.vue +70 -0
- package/docs-site-v2/.vitepress/theme/components/NewcomerCTA.vue +14 -0
- package/docs-site-v2/.vitepress/theme/components/QuickStartCards.vue +20 -0
- package/docs-site-v2/.vitepress/theme/components/QuickStartHero.vue +20 -0
- package/docs-site-v2/.vitepress/theme/components/SkillsList.vue +48 -0
- package/docs-site-v2/.vitepress/theme/components/ToolExplorer.vue +85 -0
- package/docs-site-v2/.vitepress/theme/custom.css +1373 -0
- package/docs-site-v2/.vitepress/theme/index.ts +39 -0
- package/docs-site-v2/data/skills.ts +147 -0
- package/docs-site-v2/data/tools.ts +490 -0
- package/docs-site-v2/development/index.md +151 -0
- package/docs-site-v2/examples/index.md +333 -0
- package/docs-site-v2/features/index.md +144 -0
- package/docs-site-v2/guide/ai-interfaces.md +58 -0
- package/docs-site-v2/guide/configuration.md +208 -0
- package/docs-site-v2/guide/index.md +50 -0
- package/docs-site-v2/index.md +32 -0
- package/docs-site-v2/package-lock.json +2511 -0
- package/docs-site-v2/package.json +15 -0
- package/docs-site-v2/public/android-chrome-192x192.png +0 -0
- package/docs-site-v2/public/android-chrome-512x512.png +0 -0
- package/docs-site-v2/public/apple-touch-icon.png +0 -0
- package/docs-site-v2/public/favicon-16x16.png +0 -0
- package/docs-site-v2/public/favicon-32x32.png +0 -0
- package/docs-site-v2/public/favicon.ico +0 -0
- package/docs-site-v2/public/index.css +4174 -0
- package/docs-site-v2/public/llms.txt +44 -0
- package/docs-site-v2/public/logo-dark.svg +8 -0
- package/docs-site-v2/public/logo.svg +8 -0
- package/{docs-site → docs-site-v2}/public/robots.txt +1 -6
- package/{docs-site → docs-site-v2}/public/site.webmanifest +1 -1
- package/{docs-site → docs-site-v2}/public/sitemap.xml +33 -12
- package/docs-site-v2/script-debugger/index.md +105 -0
- package/docs-site-v2/scripts/generate-llms.js +71 -0
- package/docs-site-v2/scripts/generate-sitemap.js +97 -0
- package/docs-site-v2/security/index.md +115 -0
- package/docs-site-v2/skills/index.md +40 -0
- package/docs-site-v2/tools/index.md +36 -0
- package/docs-site-v2/troubleshooting/index.md +204 -0
- package/eslint.config.js +3 -1
- package/memories/repo/docs-site-v2-build.json +11 -0
- package/package.json +18 -14
- package/scripts/validate-server-json.js +68 -0
- package/server.json +4 -6
- package/src/clients/agent-instructions-client.ts +370 -0
- package/src/clients/base/abstract-documentation-client.ts +405 -0
- package/src/clients/base/oauth-token.ts +52 -2
- package/src/clients/cartridge/cartridge-generation-client.ts +302 -0
- package/src/clients/cartridge/cartridge-structure.ts +37 -0
- package/src/clients/cartridge/cartridge-templates.ts +246 -0
- package/src/clients/cartridge/index.ts +6 -0
- package/src/clients/docs/documentation-scanner.ts +44 -28
- package/src/clients/docs-client.ts +54 -14
- package/src/clients/isml-client.ts +353 -0
- package/src/clients/ocapi/code-versions-client.ts +7 -1
- package/src/clients/ocapi-client.ts +11 -166
- package/src/clients/script-debugger/index.ts +5 -0
- package/src/clients/script-debugger/script-debugger-client.ts +754 -0
- package/src/clients/sfra-client.ts +134 -397
- package/src/config/configuration-factory.ts +6 -1
- package/src/config/dw-json-loader.ts +96 -15
- package/src/config/workspace-roots.ts +540 -0
- package/src/constants/index.ts +1 -0
- package/src/core/handlers/abstract-client-handler.ts +85 -0
- package/src/core/handlers/agent-instructions-handler.ts +48 -0
- package/src/core/handlers/base-handler.ts +17 -127
- package/src/core/handlers/cartridge-handler.ts +13 -33
- package/src/core/handlers/client-factory.ts +32 -2
- package/src/core/handlers/code-version-handler.ts +17 -32
- package/src/core/handlers/docs-handler.ts +12 -44
- package/src/core/handlers/isml-handler.ts +19 -0
- package/src/core/handlers/job-log-handler.ts +19 -8
- package/src/core/handlers/log-handler.ts +19 -8
- package/src/core/handlers/script-debugger-handler.ts +46 -0
- package/src/core/handlers/sfra-handler.ts +12 -44
- package/src/core/handlers/simple-client-handler.ts +78 -0
- package/src/core/handlers/system-object-handler.ts +17 -32
- package/src/core/handlers/validation-helpers.ts +87 -47
- package/src/core/instruction-advisor.ts +122 -0
- package/src/core/server.ts +178 -13
- package/src/core/tool-definitions.ts +25 -1071
- package/src/core/tool-schemas/agent-instruction-tools.ts +72 -0
- package/src/core/tool-schemas/cartridge-tools.ts +29 -0
- package/src/core/tool-schemas/code-version-tools.ts +28 -0
- package/src/core/tool-schemas/documentation-tools.ts +104 -0
- package/src/core/tool-schemas/index.ts +27 -0
- package/src/core/tool-schemas/isml-tools.ts +89 -0
- package/src/core/tool-schemas/log-tools.ts +196 -0
- package/src/core/tool-schemas/script-debugger-tools.ts +83 -0
- package/src/core/tool-schemas/sfra-tools.ts +65 -0
- package/src/core/tool-schemas/shared-schemas.ts +158 -0
- package/src/core/tool-schemas/system-object-tools.ts +127 -0
- package/src/main.ts +63 -30
- package/src/services/index.ts +4 -10
- package/src/tool-configs/agent-instructions-tool-config.ts +83 -0
- package/src/tool-configs/cartridge-tool-config.ts +1 -1
- package/src/tool-configs/code-version-tool-config.ts +0 -5
- package/src/tool-configs/docs-tool-config.ts +0 -7
- package/src/tool-configs/isml-tool-config.ts +87 -0
- package/src/tool-configs/job-log-tool-config.ts +18 -17
- package/src/tool-configs/log-tool-config.ts +49 -64
- package/src/tool-configs/script-debugger-tool-config.ts +69 -0
- package/src/tool-configs/sfra-tool-config.ts +0 -11
- package/src/tool-configs/system-object-tool-config.ts +0 -5
- package/src/types/types.ts +2 -0
- package/src/utils/cache.ts +49 -54
- package/src/utils/category-utils.ts +70 -0
- package/src/utils/log-tool-constants.ts +25 -17
- package/src/utils/logger.ts +38 -1
- package/src/utils/markdown-utils.ts +280 -0
- package/src/utils/path-resolver.ts +25 -9
- package/src/utils/path-validation.ts +113 -0
- package/tests/base-handler.test.ts +1 -1
- package/tests/cache.test.ts +2 -2
- package/tests/cartridge-handler.test.ts +4 -4
- package/tests/client-factory.test.ts +1 -1
- package/tests/code-version-handler.test.ts +3 -3
- package/tests/docs-handler.test.ts +2 -2
- package/tests/documentation-scanner.test.ts +4 -4
- package/tests/isml-client.test.ts +463 -0
- package/tests/isml-handler.test.ts +375 -0
- package/tests/job-log-handler.test.ts +1 -1
- package/tests/log-handler.test.ts +8 -8
- package/tests/log-validation.test.ts +149 -0
- package/tests/mcp/README.md +22 -18
- package/tests/mcp/node/activate-code-version-advanced.full-mode.programmatic.test.js +30 -12
- package/tests/mcp/node/evaluate-script.full-mode.programmatic.test.js +387 -0
- package/tests/mcp/node/generate-cartridge-structure.docs-only.programmatic.test.js +14 -8
- package/tests/mcp/node/get-isml-categories.programmatic.test.js +278 -0
- package/tests/mcp/node/get-isml-element.programmatic.test.js +278 -0
- package/tests/mcp/node/get-isml-elements-by-category.programmatic.test.js +363 -0
- package/tests/mcp/node/get-sfra-categories.docs-only.programmatic.test.js +24 -24
- package/tests/mcp/node/get-sfra-document.programmatic.test.js +4 -2
- package/tests/mcp/node/list-isml-elements.programmatic.test.js +311 -0
- package/tests/mcp/node/list-sfcc-classes.docs-only.programmatic.test.js +2 -33
- package/tests/mcp/node/search-isml-elements.programmatic.test.js +325 -0
- package/tests/mcp/node/search-sfcc-classes.docs-only.programmatic.test.js +5 -9
- package/tests/mcp/node/search-sfcc-methods.docs-only.programmatic.test.js +7 -9
- package/tests/mcp/node/tools.docs-only.programmatic.test.js +42 -65
- package/tests/mcp/node/tools.full-mode.programmatic.test.js +7 -8
- package/tests/mcp/yaml/activate-code-version.full-mode.test.mcp.yml +2 -2
- package/tests/mcp/yaml/evaluate-script.full-mode.test.mcp.yml +281 -0
- package/tests/mcp/yaml/get-isml-categories.docs-only.test.mcp.yml +330 -0
- package/tests/mcp/yaml/get-isml-element.docs-only.test.mcp.yml +294 -0
- package/tests/mcp/yaml/get-isml-elements-by-category.docs-only.test.mcp.yml +334 -0
- package/tests/mcp/yaml/get-sfcc-class-info.docs-only.test.mcp.yml +2 -2
- package/tests/mcp/yaml/get-sfra-categories.docs-only.test.mcp.yml +13 -13
- package/tests/mcp/yaml/get-sfra-categories.full-mode.test.mcp.yml +13 -13
- package/tests/mcp/yaml/get-system-object-definitions.docs-only.test.mcp.yml +1 -16
- package/tests/mcp/yaml/list-isml-elements.docs-only.test.mcp.yml +212 -0
- package/tests/mcp/yaml/search-isml-elements.docs-only.test.mcp.yml +312 -0
- package/tests/mcp/yaml/search-sfcc-classes.docs-only.test.mcp.yml +1 -1
- package/tests/mcp/yaml/search-sfcc-classes.full-mode.test.mcp.yml +1 -1
- package/tests/mcp/yaml/search-site-preferences.docs-only.test.mcp.yml +1 -1
- package/tests/mcp/yaml/tools.docs-only.test.mcp.yml +3 -57
- package/tests/mcp/yaml/tools.full-mode.test.mcp.yml +3 -3
- package/tests/oauth-token.test.ts +107 -12
- package/tests/ocapi-client.test.ts +53 -106
- package/tests/script-debugger-client.test.ts +430 -0
- package/tests/servers/sfcc-mock-server/src/app.js +15 -0
- package/tests/servers/sfcc-mock-server/src/routes/cartridge-webdav.js +258 -0
- package/tests/servers/sfcc-mock-server/src/routes/ocapi/debugger-handler.js +396 -0
- package/tests/servers/sfcc-mock-server/src/routes/ocapi.js +5 -0
- package/tests/servers/sfcc-mock-server/src/routes/storefront.js +86 -0
- package/tests/servers/sfcc-mock-server/src/routes/webdav.js +6 -4
- package/tests/validation-helpers.test.ts +0 -31
- package/tests/workspace-roots.test.ts +227 -0
- package/ai-instructions/claude-desktop/claude_custom_instructions.md +0 -321
- package/ai-instructions/cursor/.cursor/rules/debugging-workflows.mdc +0 -171
- package/ai-instructions/cursor/.cursor/rules/hooks-development.mdc +0 -168
- package/ai-instructions/cursor/.cursor/rules/isml-templates.mdc +0 -209
- package/ai-instructions/cursor/.cursor/rules/job-framework.mdc +0 -379
- package/ai-instructions/cursor/.cursor/rules/performance-optimization.mdc +0 -215
- package/ai-instructions/cursor/.cursor/rules/scapi-endpoints.mdc +0 -98
- package/ai-instructions/cursor/.cursor/rules/security-patterns.mdc +0 -375
- package/ai-instructions/cursor/.cursor/rules/sfcc-development.mdc +0 -144
- package/ai-instructions/cursor/.cursor/rules/sfra-controllers.mdc +0 -376
- package/ai-instructions/cursor/.cursor/rules/sfra-models.mdc +0 -412
- package/ai-instructions/cursor/.cursor/rules/system-objects.mdc +0 -383
- package/ai-instructions/cursor/.cursor/rules/testing-patterns.mdc +0 -418
- package/dist/clients/best-practices-client.d.ts +0 -57
- package/dist/clients/best-practices-client.d.ts.map +0 -1
- package/dist/clients/best-practices-client.js +0 -288
- package/dist/clients/best-practices-client.js.map +0 -1
- package/dist/clients/cartridge-generation-client.d.ts +0 -57
- package/dist/clients/cartridge-generation-client.d.ts.map +0 -1
- package/dist/clients/cartridge-generation-client.js +0 -384
- package/dist/clients/cartridge-generation-client.js.map +0 -1
- package/dist/clients/logs/index.d.ts +0 -13
- package/dist/clients/logs/index.d.ts.map +0 -1
- package/dist/clients/logs/index.js +0 -15
- package/dist/clients/logs/index.js.map +0 -1
- package/dist/clients/logs/log-analyzer.d.ts +0 -55
- package/dist/clients/logs/log-analyzer.d.ts.map +0 -1
- package/dist/clients/logs/log-analyzer.js +0 -228
- package/dist/clients/logs/log-analyzer.js.map +0 -1
- package/dist/clients/logs/log-client.d.ts +0 -87
- package/dist/clients/logs/log-client.d.ts.map +0 -1
- package/dist/clients/logs/log-client.js +0 -418
- package/dist/clients/logs/log-client.js.map +0 -1
- package/dist/clients/logs/log-constants.d.ts +0 -37
- package/dist/clients/logs/log-constants.d.ts.map +0 -1
- package/dist/clients/logs/log-constants.js +0 -37
- package/dist/clients/logs/log-constants.js.map +0 -1
- package/dist/clients/logs/log-file-discovery.d.ts +0 -62
- package/dist/clients/logs/log-file-discovery.d.ts.map +0 -1
- package/dist/clients/logs/log-file-discovery.js +0 -238
- package/dist/clients/logs/log-file-discovery.js.map +0 -1
- package/dist/clients/logs/log-file-reader.d.ts +0 -53
- package/dist/clients/logs/log-file-reader.d.ts.map +0 -1
- package/dist/clients/logs/log-file-reader.js +0 -194
- package/dist/clients/logs/log-file-reader.js.map +0 -1
- package/dist/clients/logs/log-formatter.d.ts +0 -90
- package/dist/clients/logs/log-formatter.d.ts.map +0 -1
- package/dist/clients/logs/log-formatter.js +0 -189
- package/dist/clients/logs/log-formatter.js.map +0 -1
- package/dist/clients/logs/log-processor.d.ts +0 -91
- package/dist/clients/logs/log-processor.d.ts.map +0 -1
- package/dist/clients/logs/log-processor.js +0 -328
- package/dist/clients/logs/log-processor.js.map +0 -1
- package/dist/clients/logs/log-types.d.ts +0 -69
- package/dist/clients/logs/log-types.d.ts.map +0 -1
- package/dist/clients/logs/log-types.js +0 -5
- package/dist/clients/logs/log-types.js.map +0 -1
- package/dist/clients/logs/webdav-client-manager.d.ts +0 -28
- package/dist/clients/logs/webdav-client-manager.d.ts.map +0 -1
- package/dist/clients/logs/webdav-client-manager.js +0 -77
- package/dist/clients/logs/webdav-client-manager.js.map +0 -1
- package/dist/core/handlers/abstract-log-tool-handler.d.ts +0 -35
- package/dist/core/handlers/abstract-log-tool-handler.d.ts.map +0 -1
- package/dist/core/handlers/abstract-log-tool-handler.js +0 -46
- package/dist/core/handlers/abstract-log-tool-handler.js.map +0 -1
- package/dist/core/handlers/best-practices-handler.d.ts +0 -17
- package/dist/core/handlers/best-practices-handler.d.ts.map +0 -1
- package/dist/core/handlers/best-practices-handler.js +0 -43
- package/dist/core/handlers/best-practices-handler.js.map +0 -1
- package/dist/core/handlers/job-log-tool-config.d.ts +0 -8
- package/dist/core/handlers/job-log-tool-config.d.ts.map +0 -1
- package/dist/core/handlers/job-log-tool-config.js +0 -76
- package/dist/core/handlers/job-log-tool-config.js.map +0 -1
- package/dist/core/handlers/log-tool-config.d.ts +0 -8
- package/dist/core/handlers/log-tool-config.d.ts.map +0 -1
- package/dist/core/handlers/log-tool-config.js +0 -73
- package/dist/core/handlers/log-tool-config.js.map +0 -1
- package/dist/docs/best-practices/isml_templates.md +0 -1933
- package/dist/docs/best-practices/job_framework.md +0 -1173
- package/dist/docs/best-practices/scapi_custom_endpoint.md +0 -963
- package/dist/docs/best-practices/sfra_client_side_js.md +0 -736
- package/dist/docs/best-practices/sfra_models.md +0 -1142
- package/dist/tool-configs/best-practices-tool-config.d.ts +0 -11
- package/dist/tool-configs/best-practices-tool-config.d.ts.map +0 -1
- package/dist/tool-configs/best-practices-tool-config.js +0 -59
- package/dist/tool-configs/best-practices-tool-config.js.map +0 -1
- package/dist/utils/job-log-tool-config.d.ts +0 -8
- package/dist/utils/job-log-tool-config.d.ts.map +0 -1
- package/dist/utils/job-log-tool-config.js +0 -76
- package/dist/utils/job-log-tool-config.js.map +0 -1
- package/dist/utils/job-log-utils.d.ts +0 -34
- package/dist/utils/job-log-utils.d.ts.map +0 -1
- package/dist/utils/job-log-utils.js +0 -60
- package/dist/utils/job-log-utils.js.map +0 -1
- package/dist/utils/log-cache.d.ts +0 -53
- package/dist/utils/log-cache.d.ts.map +0 -1
- package/dist/utils/log-cache.js +0 -114
- package/dist/utils/log-cache.js.map +0 -1
- package/dist/utils/log-tool-config.d.ts +0 -8
- package/dist/utils/log-tool-config.d.ts.map +0 -1
- package/dist/utils/log-tool-config.js +0 -73
- package/dist/utils/log-tool-config.js.map +0 -1
- package/dist/utils/log-tool-utils.d.ts +0 -39
- package/dist/utils/log-tool-utils.d.ts.map +0 -1
- package/dist/utils/log-tool-utils.js +0 -94
- package/dist/utils/log-tool-utils.js.map +0 -1
- package/docs/best-practices/isml_templates.md +0 -1933
- package/docs/best-practices/job_framework.md +0 -1173
- package/docs/best-practices/scapi_custom_endpoint.md +0 -963
- package/docs/best-practices/sfra_client_side_js.md +0 -736
- package/docs/best-practices/sfra_models.md +0 -1142
- package/docs-site/App.tsx +0 -103
- package/docs-site/README.md +0 -113
- package/docs-site/components/Badge.tsx +0 -38
- package/docs-site/components/BreadcrumbSchema.tsx +0 -34
- package/docs-site/components/CodeBlock.tsx +0 -132
- package/docs-site/components/Collapsible.tsx +0 -40
- package/docs-site/components/ConfigBuilder.tsx +0 -118
- package/docs-site/components/ConfigHero.tsx +0 -19
- package/docs-site/components/ConfigModeTabs.tsx +0 -42
- package/docs-site/components/Layout.tsx +0 -174
- package/docs-site/components/LightCodeContainer.tsx +0 -44
- package/docs-site/components/NewcomerCTA.tsx +0 -57
- package/docs-site/components/NextStepsStrip.tsx +0 -23
- package/docs-site/components/OnThisPage.tsx +0 -91
- package/docs-site/components/SEO.tsx +0 -79
- package/docs-site/components/Search.tsx +0 -207
- package/docs-site/components/Sidebar.tsx +0 -96
- package/docs-site/components/StructuredData.tsx +0 -72
- package/docs-site/components/ToolCard.tsx +0 -84
- package/docs-site/components/ToolFilters.tsx +0 -39
- package/docs-site/components/Typography.tsx +0 -30
- package/docs-site/components/VersionBadge.tsx +0 -18
- package/docs-site/components/icons.tsx +0 -37
- package/docs-site/constants.tsx +0 -34
- package/docs-site/index.html +0 -62
- package/docs-site/main.tsx +0 -16
- package/docs-site/metadata.json +0 -5
- package/docs-site/package-lock.json +0 -3966
- package/docs-site/package.json +0 -35
- package/docs-site/pages/AIInterfacesPage.tsx +0 -610
- package/docs-site/pages/ConfigurationPage.tsx +0 -315
- package/docs-site/pages/DevelopmentPage.tsx +0 -607
- package/docs-site/pages/ExamplesPage.tsx +0 -558
- package/docs-site/pages/FeaturesPage.tsx +0 -353
- package/docs-site/pages/HomePage.tsx +0 -1046
- package/docs-site/pages/SecurityPage.tsx +0 -372
- package/docs-site/pages/ToolsPage.tsx +0 -205
- package/docs-site/pages/TroubleshootingPage.tsx +0 -590
- package/docs-site/postcss.config.js +0 -6
- package/docs-site/public/.well-known/security.txt +0 -6
- package/docs-site/public/android-chrome-192x192.png +0 -0
- package/docs-site/public/android-chrome-512x512.png +0 -0
- package/docs-site/public/apple-touch-icon.png +0 -0
- package/docs-site/public/favicon-16x16.png +0 -0
- package/docs-site/public/favicon-32x32.png +0 -0
- package/docs-site/public/favicon.ico +0 -0
- package/docs-site/public/llms.txt +0 -47
- package/docs-site/scripts/generate-search-index.js +0 -323
- package/docs-site/scripts/generate-sitemap.js +0 -156
- package/docs-site/scripts/search-dev.js +0 -112
- package/docs-site/src/styles/input.css +0 -248
- package/docs-site/src/styles/prism-theme.css +0 -124
- package/docs-site/tailwind.config.js +0 -70
- package/docs-site/tsconfig.json +0 -29
- package/docs-site/types.ts +0 -16
- package/docs-site/utils/search.ts +0 -132
- package/docs-site/utils/toolsData.ts +0 -116
- package/docs-site/vite.config.ts +0 -63
- package/src/clients/best-practices-client.ts +0 -332
- package/src/clients/cartridge-generation-client.ts +0 -507
- package/src/clients/logs/index.ts +0 -18
- package/src/clients/logs/log-analyzer.ts +0 -289
- package/src/clients/logs/log-client.ts +0 -540
- package/src/clients/logs/log-constants.ts +0 -53
- package/src/clients/logs/log-file-discovery.ts +0 -299
- package/src/clients/logs/log-file-reader.ts +0 -227
- package/src/clients/logs/log-formatter.ts +0 -258
- package/src/clients/logs/log-processor.ts +0 -402
- package/src/clients/logs/log-types.ts +0 -80
- package/src/clients/logs/webdav-client-manager.ts +0 -93
- package/src/core/handlers/abstract-log-tool-handler.ts +0 -64
- package/src/core/handlers/best-practices-handler.ts +0 -55
- package/src/core/handlers/job-log-tool-config.ts +0 -89
- package/src/core/handlers/log-tool-config.ts +0 -98
- package/src/tool-configs/best-practices-tool-config.ts +0 -68
- package/src/utils/job-log-tool-config.ts +0 -89
- package/src/utils/job-log-utils.ts +0 -78
- package/src/utils/log-cache.ts +0 -134
- package/src/utils/log-tool-config.ts +0 -98
- package/src/utils/log-tool-utils.ts +0 -122
- package/tests/best-practices-handler.test.ts +0 -236
- package/tests/job-log-utils.test.ts +0 -182
- package/tests/mcp/node/get-available-best-practice-guides.docs-only.programmatic.test.js +0 -516
- package/tests/mcp/node/get-best-practice-guide.docs-only.programmatic.test.js +0 -733
- package/tests/mcp/node/get-hook-reference.docs-only.programmatic.test.js +0 -185
- package/tests/mcp/node/search-best-practices.docs-only.programmatic.test.js +0 -836
- package/tests/mcp/yaml/get-available-best-practice-guides.docs-only.test.mcp.yml +0 -885
- package/tests/mcp/yaml/get-available-best-practice-guides.full-mode.test.mcp.yml +0 -885
- package/tests/mcp/yaml/get-best-practice-guide.docs-only.test.mcp.yml +0 -462
- package/tests/mcp/yaml/get-best-practice-guide.full-mode.test.mcp.yml +0 -462
- package/tests/mcp/yaml/get-hook-reference.docs-only.test.mcp.yml +0 -321
- package/tests/mcp/yaml/get-hook-reference.full-mode.test.mcp.yml +0 -321
- package/tests/mcp/yaml/search-best-practices.docs-only.test.mcp.yml +0 -655
- package/tests/mcp/yaml/search-best-practices.full-mode.test.mcp.yml +0 -655
- /package/{docs-site → docs-site-v2}/public/404.html +0 -0
- /package/{docs-site → docs-site-v2}/public/explain-product-pricing-methods-no-mcp.png +0 -0
- /package/{docs-site → docs-site-v2}/public/explain-product-pricing-methods.png +0 -0
|
@@ -0,0 +1,794 @@
|
|
|
1
|
+
# ISML iscomment Element
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
The `<iscomment>` element allows you to add documentation, reminders, and instructions within ISML templates that are completely removed during template processing. Unlike HTML comments, content within `<iscomment>` tags is never sent to the browser and cannot be viewed in page source, making it ideal for internal documentation, sensitive notes, and developer comments that should remain private.
|
|
6
|
+
|
|
7
|
+
**Key Difference from HTML Comments:** `<iscomment>` content is stripped during server-side processing; HTML comments (`<!-- -->`) are sent to the browser and visible in page source.
|
|
8
|
+
|
|
9
|
+
## Syntax
|
|
10
|
+
|
|
11
|
+
```isml
|
|
12
|
+
<iscomment>
|
|
13
|
+
... your comments here ...
|
|
14
|
+
</iscomment>
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
### Deprecated Syntax
|
|
18
|
+
|
|
19
|
+
⚠️ **DEPRECATED (since March 6, 2009):**
|
|
20
|
+
```isml
|
|
21
|
+
<!--- your comments here --->
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
**Note:** While this deprecated syntax doesn't cause failures, the standard `<iscomment>` syntax is strongly recommended.
|
|
25
|
+
|
|
26
|
+
## Attributes
|
|
27
|
+
|
|
28
|
+
**None** - This element has no attributes.
|
|
29
|
+
|
|
30
|
+
## Purpose
|
|
31
|
+
|
|
32
|
+
The `<iscomment>` element serves several critical purposes:
|
|
33
|
+
|
|
34
|
+
1. **Internal Documentation:** Document template logic, business rules, and implementation details
|
|
35
|
+
2. **Developer Notes:** Leave reminders and instructions for yourself and team members
|
|
36
|
+
3. **Confidentiality:** Hide sensitive information that should never reach the browser
|
|
37
|
+
4. **Code Organization:** Add section headers and explanatory notes
|
|
38
|
+
5. **Debugging Aids:** Temporarily comment out code or add debug notes
|
|
39
|
+
6. **Maintenance Instructions:** Document why specific code exists and how to maintain it
|
|
40
|
+
|
|
41
|
+
### Processing Behavior
|
|
42
|
+
|
|
43
|
+
**Server-Side Removal:**
|
|
44
|
+
- Content is **not parsed** by the template processor
|
|
45
|
+
- Content **does not appear** in the generated HTML sent to browser
|
|
46
|
+
- Content **cannot be viewed** using "View Source" in browsers
|
|
47
|
+
- No performance impact on client-side rendering
|
|
48
|
+
|
|
49
|
+
**Security Benefit:** Unlike HTML comments, `<iscomment>` prevents information leakage to end users.
|
|
50
|
+
|
|
51
|
+
## Comparison: iscomment vs HTML Comments
|
|
52
|
+
|
|
53
|
+
| Feature | `<iscomment>` | `<!-- HTML Comment -->` |
|
|
54
|
+
|---------|---------------|-------------------------|
|
|
55
|
+
| **Visible in Page Source** | ❌ No | ✅ Yes |
|
|
56
|
+
| **Sent to Browser** | ❌ No | ✅ Yes |
|
|
57
|
+
| **Server-Side Processing** | Removed | Passed through |
|
|
58
|
+
| **Confidentiality** | ✅ High | ❌ None |
|
|
59
|
+
| **Use Case** | Internal docs, sensitive notes | Public documentation, SEO |
|
|
60
|
+
| **Security** | ✅ Safe for internal notes | ⚠️ Never put sensitive data |
|
|
61
|
+
|
|
62
|
+
```isml
|
|
63
|
+
<!-- HTML comment: visible in page source -->
|
|
64
|
+
<div>This is content</div>
|
|
65
|
+
|
|
66
|
+
<iscomment>
|
|
67
|
+
ISML comment: NOT visible in page source
|
|
68
|
+
Never sent to browser
|
|
69
|
+
</iscomment>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Common Use Cases
|
|
73
|
+
|
|
74
|
+
### Template Documentation
|
|
75
|
+
|
|
76
|
+
```isml
|
|
77
|
+
<iscomment>
|
|
78
|
+
Template: product/productDetails.isml
|
|
79
|
+
Purpose: Display product detail page with pricing, availability, and add-to-cart
|
|
80
|
+
Author: Development Team
|
|
81
|
+
Last Updated: 2025-10-03
|
|
82
|
+
|
|
83
|
+
Dependencies:
|
|
84
|
+
- Product model from controller
|
|
85
|
+
- URLUtils helper
|
|
86
|
+
- Product availability service
|
|
87
|
+
</iscomment>
|
|
88
|
+
|
|
89
|
+
<div class="product-detail">
|
|
90
|
+
<h1>${pdict.Product.name}</h1>
|
|
91
|
+
<!-- Product details -->
|
|
92
|
+
</div>
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Business Logic Explanation
|
|
96
|
+
|
|
97
|
+
```isml
|
|
98
|
+
<iscomment>
|
|
99
|
+
Complex pricing logic:
|
|
100
|
+
1. Start with base price
|
|
101
|
+
2. Apply customer-specific price book
|
|
102
|
+
3. Apply active promotions
|
|
103
|
+
4. Calculate volume discounts
|
|
104
|
+
5. Apply employee discount if applicable
|
|
105
|
+
|
|
106
|
+
DO NOT change this order - promotions must apply before employee discount
|
|
107
|
+
</iscomment>
|
|
108
|
+
|
|
109
|
+
<div class="pricing">
|
|
110
|
+
<span class="price">${pdict.Product.price}</span>
|
|
111
|
+
</div>
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Developer Reminders
|
|
115
|
+
|
|
116
|
+
```isml
|
|
117
|
+
<iscomment>
|
|
118
|
+
TODO: Refactor this section to use product factory
|
|
119
|
+
FIXME: This logic duplicates code in productTile.isml - consolidate
|
|
120
|
+
NOTE: Be careful with performance - this loops through all variants
|
|
121
|
+
</iscomment>
|
|
122
|
+
|
|
123
|
+
<isloop items="${pdict.Product.variants}" var="variant">
|
|
124
|
+
<div>${variant.name}</div>
|
|
125
|
+
</isloop>
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Code Sections and Organization
|
|
129
|
+
|
|
130
|
+
```isml
|
|
131
|
+
<iscomment>
|
|
132
|
+
========================================
|
|
133
|
+
SECTION: Product Images
|
|
134
|
+
========================================
|
|
135
|
+
</iscomment>
|
|
136
|
+
|
|
137
|
+
<div class="product-images">
|
|
138
|
+
<!-- Image gallery code -->
|
|
139
|
+
</div>
|
|
140
|
+
|
|
141
|
+
<iscomment>
|
|
142
|
+
========================================
|
|
143
|
+
SECTION: Product Pricing
|
|
144
|
+
========================================
|
|
145
|
+
</iscomment>
|
|
146
|
+
|
|
147
|
+
<div class="product-pricing">
|
|
148
|
+
<!-- Pricing code -->
|
|
149
|
+
</div>
|
|
150
|
+
|
|
151
|
+
<iscomment>
|
|
152
|
+
========================================
|
|
153
|
+
SECTION: Add to Cart
|
|
154
|
+
========================================
|
|
155
|
+
</iscomment>
|
|
156
|
+
|
|
157
|
+
<div class="add-to-cart">
|
|
158
|
+
<!-- Add to cart code -->
|
|
159
|
+
</div>
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Sensitive Configuration Notes
|
|
163
|
+
|
|
164
|
+
```isml
|
|
165
|
+
<iscomment>
|
|
166
|
+
Payment Integration Notes:
|
|
167
|
+
- Payment processor: XYZ Payments
|
|
168
|
+
- Merchant ID stored in site preferences
|
|
169
|
+
- Test mode enabled in sandbox environments
|
|
170
|
+
- Production credentials in Business Manager
|
|
171
|
+
|
|
172
|
+
IMPORTANT: Never hardcode credentials in templates
|
|
173
|
+
</iscomment>
|
|
174
|
+
|
|
175
|
+
<div class="payment-options">
|
|
176
|
+
<!-- Payment integration code -->
|
|
177
|
+
</div>
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### Debugging Information
|
|
181
|
+
|
|
182
|
+
```isml
|
|
183
|
+
<iscomment>
|
|
184
|
+
Debug info:
|
|
185
|
+
- pdict.Product type: ${typeof pdict.Product}
|
|
186
|
+
- Product ID: ${pdict.Product.ID}
|
|
187
|
+
- Available: ${pdict.Product.available}
|
|
188
|
+
- In Stock: ${pdict.Product.availabilityModel.inStock}
|
|
189
|
+
|
|
190
|
+
This output only visible in ISML file, never in browser
|
|
191
|
+
</iscomment>
|
|
192
|
+
|
|
193
|
+
<div class="product">
|
|
194
|
+
${pdict.Product.name}
|
|
195
|
+
</div>
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### Commenting Out Code Blocks
|
|
199
|
+
|
|
200
|
+
```isml
|
|
201
|
+
<div class="product-actions">
|
|
202
|
+
<button type="submit" class="add-to-cart">Add to Cart</button>
|
|
203
|
+
|
|
204
|
+
<iscomment>
|
|
205
|
+
Temporarily disabled for A/B test - re-enable after test completes
|
|
206
|
+
|
|
207
|
+
<isapplepay
|
|
208
|
+
sku="${pdict.Product.ID}"
|
|
209
|
+
class="dw-apple-pay-logo-black"
|
|
210
|
+
/>
|
|
211
|
+
</iscomment>
|
|
212
|
+
</div>
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
### Version History and Change Log
|
|
216
|
+
|
|
217
|
+
```isml
|
|
218
|
+
<iscomment>
|
|
219
|
+
Change Log:
|
|
220
|
+
|
|
221
|
+
2025-10-03 - Added Einstein recommendations section
|
|
222
|
+
2025-09-15 - Refactored pricing logic for promotion stacking
|
|
223
|
+
2025-08-20 - Implemented lazy loading for product images
|
|
224
|
+
2025-07-10 - Initial implementation
|
|
225
|
+
</iscomment>
|
|
226
|
+
|
|
227
|
+
<div class="product-detail-page">
|
|
228
|
+
<!-- Page content -->
|
|
229
|
+
</div>
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
### API and Integration Notes
|
|
233
|
+
|
|
234
|
+
```isml
|
|
235
|
+
<iscomment>
|
|
236
|
+
Inventory Service Integration:
|
|
237
|
+
|
|
238
|
+
Endpoint: /inventory/check
|
|
239
|
+
Method: GET
|
|
240
|
+
Params: productId, storeId
|
|
241
|
+
Response: { available: boolean, quantity: number }
|
|
242
|
+
|
|
243
|
+
Error Handling:
|
|
244
|
+
- Service timeout: Show "Check in Store" message
|
|
245
|
+
- Service unavailable: Fall back to default availability
|
|
246
|
+
- Invalid product: Show out of stock
|
|
247
|
+
</iscomment>
|
|
248
|
+
|
|
249
|
+
<div class="availability">
|
|
250
|
+
<isif condition="${pdict.Product.available}">
|
|
251
|
+
<span class="in-stock">In Stock</span>
|
|
252
|
+
</isif>
|
|
253
|
+
</div>
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
### Data Structure Documentation
|
|
257
|
+
|
|
258
|
+
```isml
|
|
259
|
+
<iscomment>
|
|
260
|
+
Expected pdict structure:
|
|
261
|
+
|
|
262
|
+
pdict.Product = {
|
|
263
|
+
ID: String,
|
|
264
|
+
name: String,
|
|
265
|
+
price: Money,
|
|
266
|
+
available: Boolean,
|
|
267
|
+
images: {
|
|
268
|
+
large: [{ url: String, alt: String }],
|
|
269
|
+
small: [{ url: String, alt: String }]
|
|
270
|
+
},
|
|
271
|
+
variants: Array<Variant>
|
|
272
|
+
}
|
|
273
|
+
</iscomment>
|
|
274
|
+
|
|
275
|
+
<h1>${pdict.Product.name}</h1>
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
### Maintenance Instructions
|
|
279
|
+
|
|
280
|
+
```isml
|
|
281
|
+
<iscomment>
|
|
282
|
+
IMPORTANT MAINTENANCE NOTE:
|
|
283
|
+
|
|
284
|
+
This template uses a custom product availability service.
|
|
285
|
+
If availability checks fail:
|
|
286
|
+
1. Check service status in Business Manager
|
|
287
|
+
2. Verify service credentials in site preferences
|
|
288
|
+
3. Review service logs in Operations > Services
|
|
289
|
+
4. Contact Platform team if issues persist
|
|
290
|
+
|
|
291
|
+
Escalation: platform-team@company.com
|
|
292
|
+
</iscomment>
|
|
293
|
+
|
|
294
|
+
<div class="product-info">
|
|
295
|
+
<!-- Product information -->
|
|
296
|
+
</div>
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
## Best Practices
|
|
300
|
+
|
|
301
|
+
1. **Use for Internal Documentation:**
|
|
302
|
+
```isml
|
|
303
|
+
<iscomment>
|
|
304
|
+
Internal note: This section implements custom pricing logic
|
|
305
|
+
approved by Business team on 2025-09-01
|
|
306
|
+
</iscomment>
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
2. **Never Use for Public Content:**
|
|
310
|
+
```isml
|
|
311
|
+
<!-- Good: Public documentation using HTML comments -->
|
|
312
|
+
<!-- Product carousel - 4 items per slide -->
|
|
313
|
+
|
|
314
|
+
<iscomment>
|
|
315
|
+
Good: Internal documentation using iscomment
|
|
316
|
+
Carousel implementation uses Slick library v1.8.1
|
|
317
|
+
Custom configuration in product.js
|
|
318
|
+
</iscomment>
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
3. **Document Complex Logic:**
|
|
322
|
+
```isml
|
|
323
|
+
<iscomment>
|
|
324
|
+
Promotion stacking logic:
|
|
325
|
+
1. Order-level promotions apply first
|
|
326
|
+
2. Product-level promotions apply second
|
|
327
|
+
3. If conflict, best discount wins
|
|
328
|
+
4. Maximum 3 promotions per order
|
|
329
|
+
</iscomment>
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
4. **Add TODO/FIXME Notes:**
|
|
333
|
+
```isml
|
|
334
|
+
<iscomment>
|
|
335
|
+
TODO: Optimize this loop - currently iterates all variants
|
|
336
|
+
FIXME: Race condition when multiple users add last item
|
|
337
|
+
NOTE: This code will be refactored in next sprint
|
|
338
|
+
</iscomment>
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
5. **Explain "Why" Not Just "What":**
|
|
342
|
+
```isml
|
|
343
|
+
<iscomment>
|
|
344
|
+
Bad: Loops through products
|
|
345
|
+
|
|
346
|
+
Good: Loops through products in reverse order because
|
|
347
|
+
newest products should display first per Marketing requirements
|
|
348
|
+
(Jira ticket: STORE-1234)
|
|
349
|
+
</iscomment>
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
6. **Use for Temporary Debugging:**
|
|
353
|
+
```isml
|
|
354
|
+
<iscomment>
|
|
355
|
+
Debug: Product object structure
|
|
356
|
+
${JSON.stringify(pdict.Product)}
|
|
357
|
+
|
|
358
|
+
Remove before deploying to production
|
|
359
|
+
</iscomment>
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
7. **Document Template Dependencies:**
|
|
363
|
+
```isml
|
|
364
|
+
<iscomment>
|
|
365
|
+
This template depends on:
|
|
366
|
+
- Product model from Product-Show controller
|
|
367
|
+
- URLUtils for link generation
|
|
368
|
+
- Resource bundle: product.properties
|
|
369
|
+
- CSS: product.css
|
|
370
|
+
- JS: productDetail.js
|
|
371
|
+
</iscomment>
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
8. **Add Section Dividers for Long Templates:**
|
|
375
|
+
```isml
|
|
376
|
+
<iscomment>
|
|
377
|
+
================================================
|
|
378
|
+
PRODUCT IMAGES SECTION
|
|
379
|
+
================================================
|
|
380
|
+
</iscomment>
|
|
381
|
+
|
|
382
|
+
<!-- Image code -->
|
|
383
|
+
|
|
384
|
+
<iscomment>
|
|
385
|
+
================================================
|
|
386
|
+
PRODUCT DETAILS SECTION
|
|
387
|
+
================================================
|
|
388
|
+
</iscomment>
|
|
389
|
+
|
|
390
|
+
<!-- Details code -->
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
## When to Use iscomment vs HTML Comments
|
|
394
|
+
|
|
395
|
+
### Use `<iscomment>` for:
|
|
396
|
+
|
|
397
|
+
- ✅ Internal developer notes
|
|
398
|
+
- ✅ Business logic explanations
|
|
399
|
+
- ✅ Sensitive information references
|
|
400
|
+
- ✅ TODO/FIXME/NOTE annotations
|
|
401
|
+
- ✅ Code that's temporarily disabled
|
|
402
|
+
- ✅ Debugging information
|
|
403
|
+
- ✅ Maintenance instructions
|
|
404
|
+
- ✅ API documentation
|
|
405
|
+
- ✅ Version history
|
|
406
|
+
|
|
407
|
+
### Use HTML Comments `<!-- -->` for:
|
|
408
|
+
|
|
409
|
+
- ✅ Public documentation
|
|
410
|
+
- ✅ SEO-related notes
|
|
411
|
+
- ✅ Browser compatibility notes
|
|
412
|
+
- ✅ Content sectioning visible to frontend developers
|
|
413
|
+
- ✅ Conditional IE comments
|
|
414
|
+
- ✅ Third-party integration documentation
|
|
415
|
+
|
|
416
|
+
```isml
|
|
417
|
+
<iscomment>
|
|
418
|
+
Internal: This section implements Einstein recommendations
|
|
419
|
+
Service endpoint: /einstein/recommendations
|
|
420
|
+
Fallback: Show best sellers if service unavailable
|
|
421
|
+
</iscomment>
|
|
422
|
+
|
|
423
|
+
<!-- Einstein Product Recommendations Section -->
|
|
424
|
+
<div class="recommendations">
|
|
425
|
+
<!-- Public HTML comment for frontend developers -->
|
|
426
|
+
<h2>You May Also Like</h2>
|
|
427
|
+
<!-- Recommendation tiles render here -->
|
|
428
|
+
</div>
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
## Multi-Line Comments
|
|
432
|
+
|
|
433
|
+
```isml
|
|
434
|
+
<iscomment>
|
|
435
|
+
Long, detailed explanation spanning multiple lines.
|
|
436
|
+
|
|
437
|
+
This can include:
|
|
438
|
+
- Bullet points
|
|
439
|
+
- Code examples (in comments)
|
|
440
|
+
- Complex explanations
|
|
441
|
+
- References to documentation
|
|
442
|
+
|
|
443
|
+
Everything within the iscomment tags is removed
|
|
444
|
+
during template processing and never sent to browser.
|
|
445
|
+
</iscomment>
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
## Nested Comments (Not Supported)
|
|
449
|
+
|
|
450
|
+
⚠️ **Warning:** You cannot nest `<iscomment>` tags:
|
|
451
|
+
|
|
452
|
+
```isml
|
|
453
|
+
<!-- Bad: Nested comments not supported -->
|
|
454
|
+
<iscomment>
|
|
455
|
+
Outer comment
|
|
456
|
+
<iscomment>
|
|
457
|
+
Inner comment - THIS WON'T WORK
|
|
458
|
+
</iscomment>
|
|
459
|
+
</iscomment>
|
|
460
|
+
|
|
461
|
+
<!-- Good: Single level comments -->
|
|
462
|
+
<iscomment>
|
|
463
|
+
First comment
|
|
464
|
+
</iscomment>
|
|
465
|
+
|
|
466
|
+
<div>Some content</div>
|
|
467
|
+
|
|
468
|
+
<iscomment>
|
|
469
|
+
Second comment
|
|
470
|
+
</iscomment>
|
|
471
|
+
```
|
|
472
|
+
|
|
473
|
+
## Commenting Out Large Blocks
|
|
474
|
+
|
|
475
|
+
```isml
|
|
476
|
+
<iscomment>
|
|
477
|
+
Entire section commented out for testing
|
|
478
|
+
|
|
479
|
+
<div class="promotional-banner">
|
|
480
|
+
<h2>Special Offer</h2>
|
|
481
|
+
<p>Save 20% on all items</p>
|
|
482
|
+
<isloop items="${pdict.promotions}" var="promo">
|
|
483
|
+
<div class="promo">${promo.name}</div>
|
|
484
|
+
</isloop>
|
|
485
|
+
</div>
|
|
486
|
+
</iscomment>
|
|
487
|
+
```
|
|
488
|
+
|
|
489
|
+
**Note:** All ISML tags within `<iscomment>` are ignored and not processed.
|
|
490
|
+
|
|
491
|
+
## Security Considerations
|
|
492
|
+
|
|
493
|
+
### Safe in iscomment (Not Sent to Browser)
|
|
494
|
+
|
|
495
|
+
```isml
|
|
496
|
+
<iscomment>
|
|
497
|
+
API Configuration:
|
|
498
|
+
Service name: InventoryService
|
|
499
|
+
Endpoint: https://api.internal.company.com/inventory
|
|
500
|
+
Timeout: 5000ms
|
|
501
|
+
Retry: 3 times
|
|
502
|
+
|
|
503
|
+
This internal documentation never reaches the browser
|
|
504
|
+
</iscomment>
|
|
505
|
+
```
|
|
506
|
+
|
|
507
|
+
### Never in HTML Comments (Visible in Page Source)
|
|
508
|
+
|
|
509
|
+
```isml
|
|
510
|
+
<!--
|
|
511
|
+
DANGEROUS: Never put sensitive info in HTML comments
|
|
512
|
+
API Key: abc123xyz (ANYONE CAN SEE THIS IN PAGE SOURCE!)
|
|
513
|
+
-->
|
|
514
|
+
```
|
|
515
|
+
|
|
516
|
+
## Performance Impact
|
|
517
|
+
|
|
518
|
+
- **Server-Side:** Minimal - comments removed during template processing
|
|
519
|
+
- **Client-Side:** None - content never sent to browser
|
|
520
|
+
- **Network:** None - reduces HTML size slightly (no comment in output)
|
|
521
|
+
- **Cache:** No impact - comments removed before caching
|
|
522
|
+
|
|
523
|
+
```isml
|
|
524
|
+
<iscomment>
|
|
525
|
+
This comment adds zero bytes to the HTML sent to browser
|
|
526
|
+
Template processing removes it completely
|
|
527
|
+
No performance impact on page load
|
|
528
|
+
</iscomment>
|
|
529
|
+
```
|
|
530
|
+
|
|
531
|
+
## Debugging Use Cases
|
|
532
|
+
|
|
533
|
+
### Temporary Debug Output
|
|
534
|
+
|
|
535
|
+
```isml
|
|
536
|
+
<iscomment>
|
|
537
|
+
Debug output (remove before production):
|
|
538
|
+
|
|
539
|
+
Product ID: ${pdict.Product.ID}
|
|
540
|
+
Product Type: ${pdict.Product.type}
|
|
541
|
+
Available: ${pdict.Product.available}
|
|
542
|
+
Price: ${pdict.Product.price}
|
|
543
|
+
|
|
544
|
+
This debug info is only visible in ISML file
|
|
545
|
+
</iscomment>
|
|
546
|
+
```
|
|
547
|
+
|
|
548
|
+
### A/B Test Documentation
|
|
549
|
+
|
|
550
|
+
```isml
|
|
551
|
+
<iscomment>
|
|
552
|
+
A/B Test: Checkout Button Color
|
|
553
|
+
Test ID: AB-2025-Q4-001
|
|
554
|
+
Start: 2025-10-01
|
|
555
|
+
End: 2025-10-31
|
|
556
|
+
|
|
557
|
+
Variant A: Blue button (control)
|
|
558
|
+
Variant B: Green button (test)
|
|
559
|
+
|
|
560
|
+
Hypothesis: Green button increases conversion by 5%
|
|
561
|
+
</iscomment>
|
|
562
|
+
|
|
563
|
+
<isif condition="${pdict.abTestVariant == 'B'}">
|
|
564
|
+
<button class="checkout-btn green">Checkout</button>
|
|
565
|
+
<iselse>
|
|
566
|
+
<button class="checkout-btn blue">Checkout</button>
|
|
567
|
+
</isif>
|
|
568
|
+
```
|
|
569
|
+
|
|
570
|
+
### Feature Flags
|
|
571
|
+
|
|
572
|
+
```isml
|
|
573
|
+
<iscomment>
|
|
574
|
+
Feature Flag: express-checkout-v2
|
|
575
|
+
Status: In development
|
|
576
|
+
Expected Launch: 2025-11-15
|
|
577
|
+
|
|
578
|
+
When enabled, shows new express checkout flow
|
|
579
|
+
Controlled in Business Manager > Site Preferences > Custom > Features
|
|
580
|
+
</iscomment>
|
|
581
|
+
|
|
582
|
+
<isif condition="${pdict.features.expressCheckoutV2}">
|
|
583
|
+
<isinclude template="checkout/expressV2" />
|
|
584
|
+
<iselse>
|
|
585
|
+
<isinclude template="checkout/expressV1" />
|
|
586
|
+
</isif>
|
|
587
|
+
```
|
|
588
|
+
|
|
589
|
+
## Common Patterns
|
|
590
|
+
|
|
591
|
+
### Template Header Documentation
|
|
592
|
+
|
|
593
|
+
```isml
|
|
594
|
+
<iscomment>
|
|
595
|
+
============================================================
|
|
596
|
+
Template: cart/cart.isml
|
|
597
|
+
Description: Shopping cart page with line items and totals
|
|
598
|
+
============================================================
|
|
599
|
+
|
|
600
|
+
Author: Frontend Team
|
|
601
|
+
Created: 2025-01-15
|
|
602
|
+
Last Modified: 2025-10-03
|
|
603
|
+
|
|
604
|
+
Requirements:
|
|
605
|
+
- Basket must exist in pdict
|
|
606
|
+
- Promotions applied before rendering
|
|
607
|
+
- Shipping estimates calculated
|
|
608
|
+
|
|
609
|
+
Related Files:
|
|
610
|
+
- Controller: Cart.js
|
|
611
|
+
- Model: CartModel.js
|
|
612
|
+
- Styles: cart.scss
|
|
613
|
+
- Scripts: cart.js
|
|
614
|
+
============================================================
|
|
615
|
+
</iscomment>
|
|
616
|
+
|
|
617
|
+
<div class="cart-page">
|
|
618
|
+
<!-- Cart content -->
|
|
619
|
+
</div>
|
|
620
|
+
```
|
|
621
|
+
|
|
622
|
+
### Code Block Comments
|
|
623
|
+
|
|
624
|
+
```isml
|
|
625
|
+
<iscomment> ===== START: Product Images ===== </iscomment>
|
|
626
|
+
|
|
627
|
+
<div class="product-images">
|
|
628
|
+
<!-- Image gallery -->
|
|
629
|
+
</div>
|
|
630
|
+
|
|
631
|
+
<iscomment> ===== END: Product Images ===== </iscomment>
|
|
632
|
+
|
|
633
|
+
|
|
634
|
+
<iscomment> ===== START: Product Details ===== </iscomment>
|
|
635
|
+
|
|
636
|
+
<div class="product-details">
|
|
637
|
+
<!-- Product information -->
|
|
638
|
+
</div>
|
|
639
|
+
|
|
640
|
+
<iscomment> ===== END: Product Details ===== </iscomment>
|
|
641
|
+
```
|
|
642
|
+
|
|
643
|
+
### Conditional Logic Documentation
|
|
644
|
+
|
|
645
|
+
```isml
|
|
646
|
+
<iscomment>
|
|
647
|
+
Display logic:
|
|
648
|
+
1. If product has master, show variant selector
|
|
649
|
+
2. If product is simple, show add-to-cart directly
|
|
650
|
+
3. If product is set, show set items
|
|
651
|
+
4. If product is bundle, show bundle components
|
|
652
|
+
</iscomment>
|
|
653
|
+
|
|
654
|
+
<isif condition="${pdict.Product.master}">
|
|
655
|
+
<isinclude template="product/variantSelector" />
|
|
656
|
+
<iselseif condition="${pdict.Product.productSet}">
|
|
657
|
+
<isinclude template="product/productSet" />
|
|
658
|
+
<iselseif condition="${pdict.Product.bundle}">
|
|
659
|
+
<isinclude template="product/bundleComponents" />
|
|
660
|
+
<iselse>
|
|
661
|
+
<isinclude template="product/simpleProduct" />
|
|
662
|
+
</isif>
|
|
663
|
+
```
|
|
664
|
+
|
|
665
|
+
## Related Elements
|
|
666
|
+
|
|
667
|
+
- HTML comments `<!-- -->` - Visible in page source (use for public documentation)
|
|
668
|
+
- `<isscript>` - Server-side code execution (can include JavaScript comments)
|
|
669
|
+
- `<isdecorate>` - Template decoration (use `<iscomment>` to document decorators)
|
|
670
|
+
|
|
671
|
+
## Notes
|
|
672
|
+
|
|
673
|
+
- Content within `<iscomment>` is completely removed during template processing
|
|
674
|
+
- Not sent to browser and not visible in page source
|
|
675
|
+
- Provides true confidentiality unlike HTML comments
|
|
676
|
+
- No attributes supported
|
|
677
|
+
- Cannot be nested
|
|
678
|
+
- Deprecated syntax (`<!--- --->`) still works but not recommended
|
|
679
|
+
- No performance impact on client-side rendering
|
|
680
|
+
- Ideal for internal documentation and sensitive notes
|
|
681
|
+
- Can contain any content including ISML tags (all ignored)
|
|
682
|
+
|
|
683
|
+
## Migration from HTML Comments
|
|
684
|
+
|
|
685
|
+
### Before (Insecure)
|
|
686
|
+
|
|
687
|
+
```isml
|
|
688
|
+
<!--
|
|
689
|
+
Internal note: This uses custom pricing service
|
|
690
|
+
Service URL: https://pricing-api.internal.company.com
|
|
691
|
+
Credentials stored in site preferences
|
|
692
|
+
-->
|
|
693
|
+
<div class="pricing">
|
|
694
|
+
${pdict.Product.price}
|
|
695
|
+
</div>
|
|
696
|
+
```
|
|
697
|
+
|
|
698
|
+
### After (Secure)
|
|
699
|
+
|
|
700
|
+
```isml
|
|
701
|
+
<iscomment>
|
|
702
|
+
Internal note: This uses custom pricing service
|
|
703
|
+
Service URL: https://pricing-api.internal.company.com
|
|
704
|
+
Credentials stored in site preferences
|
|
705
|
+
</iscomment>
|
|
706
|
+
|
|
707
|
+
<!-- Pricing Section -->
|
|
708
|
+
<div class="pricing">
|
|
709
|
+
${pdict.Product.price}
|
|
710
|
+
</div>
|
|
711
|
+
```
|
|
712
|
+
|
|
713
|
+
## Recommended Comment Structure
|
|
714
|
+
|
|
715
|
+
```isml
|
|
716
|
+
<iscomment>
|
|
717
|
+
[COMPONENT NAME]
|
|
718
|
+
|
|
719
|
+
Purpose: [Brief description]
|
|
720
|
+
|
|
721
|
+
Dependencies:
|
|
722
|
+
- [Dependency 1]
|
|
723
|
+
- [Dependency 2]
|
|
724
|
+
|
|
725
|
+
Important Notes:
|
|
726
|
+
- [Note 1]
|
|
727
|
+
- [Note 2]
|
|
728
|
+
|
|
729
|
+
Last Updated: [Date]
|
|
730
|
+
Author: [Name/Team]
|
|
731
|
+
</iscomment>
|
|
732
|
+
|
|
733
|
+
<!-- Component HTML Code -->
|
|
734
|
+
```
|
|
735
|
+
|
|
736
|
+
## Example: Complete Template Documentation
|
|
737
|
+
|
|
738
|
+
```isml
|
|
739
|
+
<iscomment>
|
|
740
|
+
============================================================
|
|
741
|
+
PRODUCT DETAIL PAGE TEMPLATE
|
|
742
|
+
============================================================
|
|
743
|
+
|
|
744
|
+
File: product/productDetails.isml
|
|
745
|
+
Purpose: Display complete product information including
|
|
746
|
+
images, pricing, variants, and add-to-cart
|
|
747
|
+
|
|
748
|
+
Controller: Product-Show
|
|
749
|
+
Model: Product (SFRA)
|
|
750
|
+
|
|
751
|
+
Dependencies:
|
|
752
|
+
- URLUtils helper
|
|
753
|
+
- Resource bundles (product.properties)
|
|
754
|
+
- Product availability service
|
|
755
|
+
- Image transformation service
|
|
756
|
+
|
|
757
|
+
pdict Structure:
|
|
758
|
+
{
|
|
759
|
+
Product: Object, // Product model
|
|
760
|
+
category: Object, // Primary category
|
|
761
|
+
reviews: Array, // Product reviews
|
|
762
|
+
recommendations: Array // Related products
|
|
763
|
+
}
|
|
764
|
+
|
|
765
|
+
Features:
|
|
766
|
+
- Image zoom on hover
|
|
767
|
+
- Variant selection (size, color)
|
|
768
|
+
- Quantity selection
|
|
769
|
+
- Add to cart / Add to wishlist
|
|
770
|
+
- Social sharing
|
|
771
|
+
- Product reviews display
|
|
772
|
+
- Einstein recommendations
|
|
773
|
+
|
|
774
|
+
Performance Notes:
|
|
775
|
+
- Template is cached for 1 hour
|
|
776
|
+
- Images lazy-loaded
|
|
777
|
+
- Reviews loaded via AJAX
|
|
778
|
+
|
|
779
|
+
A/B Tests Active:
|
|
780
|
+
- Checkout button color (AB-2025-Q4-001)
|
|
781
|
+
- Product image layout (AB-2025-Q4-002)
|
|
782
|
+
|
|
783
|
+
Last Updated: 2025-10-03
|
|
784
|
+
Author: Frontend Team
|
|
785
|
+
============================================================
|
|
786
|
+
</iscomment>
|
|
787
|
+
|
|
788
|
+
<iscache type="relative" hour="1"/>
|
|
789
|
+
|
|
790
|
+
<!DOCTYPE html>
|
|
791
|
+
<html>
|
|
792
|
+
<!-- Template content -->
|
|
793
|
+
</html>
|
|
794
|
+
```
|