sfcc-dev-mcp 1.0.19 → 1.0.21
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/dist/clients/logs/index.d.ts +13 -0
- package/dist/clients/logs/index.d.ts.map +1 -0
- package/dist/clients/logs/index.js +15 -0
- package/dist/clients/logs/index.js.map +1 -0
- package/dist/clients/logs/log-analyzer.d.ts +55 -0
- package/dist/clients/logs/log-analyzer.d.ts.map +1 -0
- package/dist/clients/logs/log-analyzer.js +228 -0
- package/dist/clients/logs/log-analyzer.js.map +1 -0
- package/dist/clients/logs/log-client.d.ts +87 -0
- package/dist/clients/logs/log-client.d.ts.map +1 -0
- package/dist/clients/logs/log-client.js +418 -0
- package/dist/clients/logs/log-client.js.map +1 -0
- package/dist/clients/logs/log-constants.d.ts +37 -0
- package/dist/clients/logs/log-constants.d.ts.map +1 -0
- package/dist/clients/logs/log-constants.js +37 -0
- package/dist/clients/logs/log-constants.js.map +1 -0
- package/dist/clients/logs/log-file-discovery.d.ts +64 -0
- package/dist/clients/logs/log-file-discovery.d.ts.map +1 -0
- package/dist/clients/logs/log-file-discovery.js +249 -0
- package/dist/clients/logs/log-file-discovery.js.map +1 -0
- package/dist/clients/logs/log-file-reader.d.ts +55 -0
- package/dist/clients/logs/log-file-reader.d.ts.map +1 -0
- package/dist/clients/logs/log-file-reader.js +207 -0
- package/dist/clients/logs/log-file-reader.js.map +1 -0
- package/dist/clients/logs/log-formatter.d.ts +90 -0
- package/dist/clients/logs/log-formatter.d.ts.map +1 -0
- package/dist/clients/logs/log-formatter.js +189 -0
- package/dist/clients/logs/log-formatter.js.map +1 -0
- package/dist/clients/logs/log-processor.d.ts +91 -0
- package/dist/clients/logs/log-processor.d.ts.map +1 -0
- package/dist/clients/logs/log-processor.js +328 -0
- package/dist/clients/logs/log-processor.js.map +1 -0
- package/dist/clients/logs/log-types.d.ts +58 -0
- package/dist/clients/logs/log-types.d.ts.map +1 -0
- package/dist/clients/logs/log-types.js +8 -0
- package/dist/clients/logs/log-types.js.map +1 -0
- package/dist/clients/logs/webdav-client-manager.d.ts +28 -0
- package/dist/clients/logs/webdav-client-manager.d.ts.map +1 -0
- package/dist/clients/logs/webdav-client-manager.js +77 -0
- package/dist/clients/logs/webdav-client-manager.js.map +1 -0
- package/dist/docs/dw_customer/CustomerMgr.md +3 -3
- package/dist/docs/dw_customer/Wallet.md +25 -0
- package/dist/docs/dw_extensions.payments/SalesforceAdyenPaymentIntent.md +156 -0
- package/dist/docs/dw_extensions.payments/SalesforceAdyenSavedPaymentMethod.md +258 -0
- package/dist/docs/dw_extensions.payments/SalesforcePayPalOrder.md +36 -0
- package/dist/docs/dw_extensions.payments/SalesforcePaymentIntent.md +1 -1
- package/dist/docs/dw_extensions.payments/SalesforcePaymentsHooks.md +68 -1
- package/dist/docs/dw_extensions.payments/SalesforcePaymentsMerchantAccount.md +154 -0
- package/dist/docs/dw_extensions.payments/SalesforcePaymentsMerchantAccountPaymentMethod.md +96 -0
- package/dist/docs/dw_extensions.payments/SalesforcePaymentsMgr.md +311 -2
- package/dist/docs/dw_extensions.payments/SalesforcePaymentsSiteConfiguration.md +26 -0
- package/dist/docs/dw_extensions.payments/SalesforcePaymentsZone.md +458 -0
- package/dist/docs/dw_order/OrderMgr.md +3 -3
- package/dist/docs/dw_order.hooks/BasketMergeHooks.md +4 -4
- package/dist/docs/dw_order.hooks/CheckoutHooks.md +42 -0
- package/dist/utils/path-resolver.d.ts +5 -0
- package/dist/utils/path-resolver.d.ts.map +1 -1
- package/dist/utils/path-resolver.js +27 -5
- package/dist/utils/path-resolver.js.map +1 -1
- package/package.json +9 -3
- package/.github/ISSUE_TEMPLATE/bug_report.yml +0 -131
- package/.github/ISSUE_TEMPLATE/config.yml +0 -9
- package/.github/ISSUE_TEMPLATE/documentation.yml +0 -117
- package/.github/ISSUE_TEMPLATE/feature_request.yml +0 -151
- package/.github/ISSUE_TEMPLATE/question.yml +0 -102
- package/.github/PULL_REQUEST_TEMPLATE/bug_fix.md +0 -59
- package/.github/PULL_REQUEST_TEMPLATE/documentation.md +0 -48
- package/.github/PULL_REQUEST_TEMPLATE/new_tool.md +0 -55
- package/.github/agents/official-docs-researcher.agent.md +0 -56
- package/.github/dependabot.yml +0 -65
- package/.github/instructions/mcp-node-tests.instructions.md +0 -30
- package/.github/instructions/mcp-yml-tests.instructions.md +0 -27
- package/.github/pull_request_template.md +0 -103
- package/.github/skills/agent-authoring/SKILL.md +0 -66
- package/.github/skills/mcp-log-debugging/SKILL.md +0 -69
- package/.github/skills/mcp-programmatic-testing/SKILL.md +0 -142
- package/.github/skills/mcp-yaml-testing/SKILL.md +0 -136
- package/.github/skills/salesforce-developer-site-scraper/SKILL.md +0 -102
- package/.github/skills/salesforce-developer-site-scraper/scripts/scrape-to-markdown.js +0 -205
- package/.github/skills/salesforce-help-site-scraper/SKILL.md +0 -84
- package/.github/skills/salesforce-help-site-scraper/scripts/scrape-help-to-markdown.js +0 -212
- package/.github/skills/skill-authoring/SKILL.md +0 -228
- package/.github/skills/skill-authoring/references/PATTERNS.md +0 -384
- package/.github/workflows/ci.yml +0 -103
- package/.github/workflows/deploy-pages.yml +0 -59
- package/.github/workflows/publish.yml +0 -112
- package/.github/workflows/update-docs.yml +0 -182
- package/.husky/pre-commit +0 -2
- package/AGENTS.md +0 -638
- package/CONTRIBUTING.md +0 -323
- package/SECURITY.md +0 -148
- package/aegis.config.docs-only.json +0 -9
- package/aegis.config.json +0 -12
- package/aegis.config.with-dw.json +0 -15
- package/ai-instructions/AGENTS.md +0 -628
- package/ai-instructions/skills/sfcc-caching/SKILL.md +0 -89
- package/ai-instructions/skills/sfcc-cartridge-development/SKILL.md +0 -240
- package/ai-instructions/skills/sfcc-forms-development/SKILL.md +0 -261
- package/ai-instructions/skills/sfcc-forms-development/references/ARCHITECTURE-SGJC-SFRA.md +0 -143
- package/ai-instructions/skills/sfcc-forms-development/references/FORM-XML-CHEATSHEET.md +0 -127
- package/ai-instructions/skills/sfcc-fraud-prevention/SKILL.md +0 -95
- package/ai-instructions/skills/sfcc-hooks-registration/SKILL.md +0 -39
- package/ai-instructions/skills/sfcc-isml-development/SKILL.md +0 -370
- package/ai-instructions/skills/sfcc-isml-development/references/REMOTE-INCLUDES.md +0 -116
- package/ai-instructions/skills/sfcc-isml-development/references/SFRA-LAYOUTS.md +0 -50
- package/ai-instructions/skills/sfcc-isml-development/references/SFRA-PAGES-CART-ACCOUNT-AUTH.md +0 -45
- package/ai-instructions/skills/sfcc-isml-development/references/SFRA-PAGES-CATALOG.md +0 -85
- package/ai-instructions/skills/sfcc-isml-development/references/SFRA-STRUCTURE-COMPONENTS.md +0 -63
- package/ai-instructions/skills/sfcc-isml-development/references/UTILITIES-EXPRESSIONS.md +0 -159
- package/ai-instructions/skills/sfcc-isml-development/references/sfra-base-templates-architecture.md +0 -13
- package/ai-instructions/skills/sfcc-job-development/SKILL.md +0 -334
- package/ai-instructions/skills/sfcc-job-development/references/CHUNK-ORIENTED.md +0 -393
- package/ai-instructions/skills/sfcc-job-development/references/STEPTYPES-JSON.md +0 -271
- package/ai-instructions/skills/sfcc-job-development/references/TASK-ORIENTED.md +0 -257
- package/ai-instructions/skills/sfcc-localization/SKILL.md +0 -92
- package/ai-instructions/skills/sfcc-localization/references/CONTROLLERS.md +0 -63
- package/ai-instructions/skills/sfcc-localization/references/FORMATTING.md +0 -29
- package/ai-instructions/skills/sfcc-localization/references/FORMS-LOCALIZATION.md +0 -33
- package/ai-instructions/skills/sfcc-localization/references/JAVASCRIPT-LOCALIZATION.md +0 -41
- package/ai-instructions/skills/sfcc-localization/references/LOCALE-SWITCHING.md +0 -35
- package/ai-instructions/skills/sfcc-localization/references/PATTERNS.md +0 -740
- package/ai-instructions/skills/sfcc-localization/references/PROPERTIES-ENCODING.md +0 -25
- package/ai-instructions/skills/sfcc-localization/references/RESOURCE-BUNDLES.md +0 -67
- package/ai-instructions/skills/sfcc-localization/references/STATIC-FILES.md +0 -23
- package/ai-instructions/skills/sfcc-localization/references/TESTING.md +0 -21
- package/ai-instructions/skills/sfcc-localserviceregistry/SKILL.md +0 -374
- package/ai-instructions/skills/sfcc-logging/SKILL.md +0 -352
- package/ai-instructions/skills/sfcc-logging/references/LOG-FILES.md +0 -282
- package/ai-instructions/skills/sfcc-ocapi-hooks/SKILL.md +0 -350
- package/ai-instructions/skills/sfcc-ocapi-scapi-slas/SKILL.md +0 -108
- package/ai-instructions/skills/sfcc-page-designer/SKILL.md +0 -353
- package/ai-instructions/skills/sfcc-page-designer/references/ATTRIBUTE-TYPES.md +0 -436
- package/ai-instructions/skills/sfcc-page-designer/references/META-DEFINITIONS.md +0 -322
- package/ai-instructions/skills/sfcc-performance/SKILL.md +0 -424
- package/ai-instructions/skills/sfcc-platform-limits/SKILL.md +0 -89
- package/ai-instructions/skills/sfcc-scapi-custom-endpoints/SKILL.md +0 -237
- package/ai-instructions/skills/sfcc-scapi-custom-endpoints/references/AUTHENTICATION.md +0 -214
- package/ai-instructions/skills/sfcc-scapi-custom-endpoints/references/URL-MAPPING.md +0 -253
- package/ai-instructions/skills/sfcc-scapi-hooks/SKILL.md +0 -341
- package/ai-instructions/skills/sfcc-script-evaluation/SKILL.md +0 -380
- package/ai-instructions/skills/sfcc-security/SKILL.md +0 -394
- package/ai-instructions/skills/sfcc-sfra-client-side-js/SKILL.md +0 -270
- package/ai-instructions/skills/sfcc-sfra-client-side-js/references/AJAX-CSRF-VALIDATION.md +0 -285
- package/ai-instructions/skills/sfcc-sfra-client-side-js/references/BASE-MODULE-INDEX.md +0 -206
- package/ai-instructions/skills/sfcc-sfra-client-side-js/references/EXTENSION-PATTERNS.md +0 -165
- package/ai-instructions/skills/sfcc-sfra-client-side-js/references/PLUGIN-PATTERNS.md +0 -185
- package/ai-instructions/skills/sfcc-sfra-controllers/SKILL.md +0 -347
- package/ai-instructions/skills/sfcc-sfra-controllers/references/MIDDLEWARE-REFERENCE.md +0 -257
- package/ai-instructions/skills/sfcc-sfra-controllers/references/REMOTE-INCLUDES.md +0 -193
- package/ai-instructions/skills/sfcc-sfra-controllers/references/standard-sfra-controllers.md +0 -814
- package/ai-instructions/skills/sfcc-sfra-models/SKILL.md +0 -322
- package/ai-instructions/skills/sfcc-sfra-models/references/MODEL-PATTERNS.md +0 -530
- package/ai-instructions/skills/sfcc-sfra-models/references/MODEL-STRUCTURE.md +0 -234
- package/ai-instructions/skills/sfcc-sfra-models/references/TESTING-SECURITY.md +0 -417
- package/ai-instructions/skills/sfcc-sfra-scss/SKILL.md +0 -393
- package/ai-instructions/skills/sfcc-webdav-workflows/SKILL.md +0 -111
- package/docs/TopLevel/APIException.md +0 -68
- package/docs/TopLevel/Array.md +0 -897
- package/docs/TopLevel/ArrayBuffer.md +0 -79
- package/docs/TopLevel/BigInt.md +0 -132
- package/docs/TopLevel/Boolean.md +0 -62
- package/docs/TopLevel/ConversionError.md +0 -23
- package/docs/TopLevel/DataView.md +0 -352
- package/docs/TopLevel/Date.md +0 -924
- package/docs/TopLevel/ES6Iterator.md +0 -33
- package/docs/TopLevel/Error.md +0 -88
- package/docs/TopLevel/EvalError.md +0 -23
- package/docs/TopLevel/Fault.md +0 -87
- package/docs/TopLevel/Float32Array.md +0 -130
- package/docs/TopLevel/Float64Array.md +0 -130
- package/docs/TopLevel/Function.md +0 -105
- package/docs/TopLevel/Generator.md +0 -78
- package/docs/TopLevel/IOError.md +0 -62
- package/docs/TopLevel/Int16Array.md +0 -130
- package/docs/TopLevel/Int32Array.md +0 -130
- package/docs/TopLevel/Int8Array.md +0 -130
- package/docs/TopLevel/InternalError.md +0 -23
- package/docs/TopLevel/Iterable.md +0 -41
- package/docs/TopLevel/Iterator.md +0 -48
- package/docs/TopLevel/JSON.md +0 -162
- package/docs/TopLevel/Map.md +0 -216
- package/docs/TopLevel/Math.md +0 -913
- package/docs/TopLevel/Module.md +0 -45
- package/docs/TopLevel/Namespace.md +0 -96
- package/docs/TopLevel/Number.md +0 -417
- package/docs/TopLevel/Object.md +0 -641
- package/docs/TopLevel/QName.md +0 -96
- package/docs/TopLevel/RangeError.md +0 -23
- package/docs/TopLevel/ReferenceError.md +0 -23
- package/docs/TopLevel/RegExp.md +0 -109
- package/docs/TopLevel/Set.md +0 -165
- package/docs/TopLevel/StopIteration.md +0 -20
- package/docs/TopLevel/String.md +0 -1299
- package/docs/TopLevel/Symbol.md +0 -78
- package/docs/TopLevel/SyntaxError.md +0 -23
- package/docs/TopLevel/SystemError.md +0 -62
- package/docs/TopLevel/TypeError.md +0 -23
- package/docs/TopLevel/URIError.md +0 -23
- package/docs/TopLevel/Uint16Array.md +0 -130
- package/docs/TopLevel/Uint32Array.md +0 -130
- package/docs/TopLevel/Uint8Array.md +0 -130
- package/docs/TopLevel/Uint8ClampedArray.md +0 -130
- package/docs/TopLevel/WeakMap.md +0 -137
- package/docs/TopLevel/WeakSet.md +0 -92
- package/docs/TopLevel/XML.md +0 -937
- package/docs/TopLevel/XMLList.md +0 -484
- package/docs/TopLevel/XMLStreamError.md +0 -74
- package/docs/TopLevel/arguments.md +0 -34
- package/docs/TopLevel/global.md +0 -474
- package/docs/dw_campaign/ABTest.md +0 -47
- package/docs/dw_campaign/ABTestMgr.md +0 -70
- package/docs/dw_campaign/ABTestSegment.md +0 -96
- package/docs/dw_campaign/AmountDiscount.md +0 -51
- package/docs/dw_campaign/ApproachingDiscount.md +0 -124
- package/docs/dw_campaign/BonusChoiceDiscount.md +0 -146
- package/docs/dw_campaign/BonusDiscount.md +0 -48
- package/docs/dw_campaign/Campaign.md +0 -365
- package/docs/dw_campaign/CampaignMgr.md +0 -395
- package/docs/dw_campaign/CampaignStatusCodes.md +0 -48
- package/docs/dw_campaign/Coupon.md +0 -310
- package/docs/dw_campaign/CouponMgr.md +0 -144
- package/docs/dw_campaign/CouponRedemption.md +0 -94
- package/docs/dw_campaign/CouponStatusCodes.md +0 -86
- package/docs/dw_campaign/Discount.md +0 -226
- package/docs/dw_campaign/DiscountPlan.md +0 -282
- package/docs/dw_campaign/FixedPriceDiscount.md +0 -52
- package/docs/dw_campaign/FixedPriceShippingDiscount.md +0 -52
- package/docs/dw_campaign/FreeDiscount.md +0 -17
- package/docs/dw_campaign/FreeShippingDiscount.md +0 -17
- package/docs/dw_campaign/PercentageDiscount.md +0 -52
- package/docs/dw_campaign/PercentageOptionDiscount.md +0 -48
- package/docs/dw_campaign/PriceBookPriceDiscount.md +0 -47
- package/docs/dw_campaign/Promotion.md +0 -874
- package/docs/dw_campaign/PromotionMgr.md +0 -386
- package/docs/dw_campaign/PromotionPlan.md +0 -330
- package/docs/dw_campaign/SlotContent.md +0 -144
- package/docs/dw_campaign/SourceCodeGroup.md +0 -72
- package/docs/dw_campaign/SourceCodeInfo.md +0 -144
- package/docs/dw_campaign/SourceCodeStatusCodes.md +0 -36
- package/docs/dw_campaign/TotalFixedPriceDiscount.md +0 -47
- package/docs/dw_catalog/Catalog.md +0 -122
- package/docs/dw_catalog/CatalogMgr.md +0 -182
- package/docs/dw_catalog/Category.md +0 -1308
- package/docs/dw_catalog/CategoryAssignment.md +0 -192
- package/docs/dw_catalog/CategoryLink.md +0 -126
- package/docs/dw_catalog/PriceBook.md +0 -242
- package/docs/dw_catalog/PriceBookMgr.md +0 -204
- package/docs/dw_catalog/Product.md +0 -2593
- package/docs/dw_catalog/ProductActiveData.md +0 -1275
- package/docs/dw_catalog/ProductAttributeModel.md +0 -277
- package/docs/dw_catalog/ProductAvailabilityLevels.md +0 -142
- package/docs/dw_catalog/ProductAvailabilityModel.md +0 -380
- package/docs/dw_catalog/ProductInventoryList.md +0 -140
- package/docs/dw_catalog/ProductInventoryMgr.md +0 -117
- package/docs/dw_catalog/ProductInventoryRecord.md +0 -563
- package/docs/dw_catalog/ProductLink.md +0 -144
- package/docs/dw_catalog/ProductMgr.md +0 -138
- package/docs/dw_catalog/ProductOption.md +0 -214
- package/docs/dw_catalog/ProductOptionModel.md +0 -246
- package/docs/dw_catalog/ProductOptionValue.md +0 -123
- package/docs/dw_catalog/ProductPriceInfo.md +0 -172
- package/docs/dw_catalog/ProductPriceModel.md +0 -745
- package/docs/dw_catalog/ProductPriceTable.md +0 -134
- package/docs/dw_catalog/ProductSearchHit.md +0 -581
- package/docs/dw_catalog/ProductSearchModel.md +0 -2018
- package/docs/dw_catalog/ProductSearchRefinementDefinition.md +0 -97
- package/docs/dw_catalog/ProductSearchRefinementValue.md +0 -73
- package/docs/dw_catalog/ProductSearchRefinements.md +0 -216
- package/docs/dw_catalog/ProductVariationAttribute.md +0 -100
- package/docs/dw_catalog/ProductVariationAttributeValue.md +0 -238
- package/docs/dw_catalog/ProductVariationModel.md +0 -849
- package/docs/dw_catalog/Recommendation.md +0 -314
- package/docs/dw_catalog/SearchModel.md +0 -901
- package/docs/dw_catalog/SearchRefinementDefinition.md +0 -146
- package/docs/dw_catalog/SearchRefinementValue.md +0 -185
- package/docs/dw_catalog/SearchRefinements.md +0 -180
- package/docs/dw_catalog/SortingOption.md +0 -120
- package/docs/dw_catalog/SortingRule.md +0 -47
- package/docs/dw_catalog/Store.md +0 -562
- package/docs/dw_catalog/StoreGroup.md +0 -96
- package/docs/dw_catalog/StoreInventoryFilter.md +0 -74
- package/docs/dw_catalog/StoreInventoryFilterValue.md +0 -74
- package/docs/dw_catalog/StoreMgr.md +0 -236
- package/docs/dw_catalog/Variant.md +0 -859
- package/docs/dw_catalog/VariationGroup.md +0 -792
- package/docs/dw_content/Content.md +0 -534
- package/docs/dw_content/ContentMgr.md +0 -166
- package/docs/dw_content/ContentSearchModel.md +0 -682
- package/docs/dw_content/ContentSearchRefinementDefinition.md +0 -49
- package/docs/dw_content/ContentSearchRefinementValue.md +0 -17
- package/docs/dw_content/ContentSearchRefinements.md +0 -208
- package/docs/dw_content/Folder.md +0 -467
- package/docs/dw_content/Library.md +0 -121
- package/docs/dw_content/MarkupText.md +0 -88
- package/docs/dw_content/MediaFile.md +0 -317
- package/docs/dw_crypto/CertificateRef.md +0 -42
- package/docs/dw_crypto/CertificateUtils.md +0 -187
- package/docs/dw_crypto/Cipher.md +0 -530
- package/docs/dw_crypto/Encoding.md +0 -220
- package/docs/dw_crypto/JWE.md +0 -224
- package/docs/dw_crypto/JWEHeader.md +0 -172
- package/docs/dw_crypto/JWS.md +0 -264
- package/docs/dw_crypto/JWSHeader.md +0 -148
- package/docs/dw_crypto/KeyRef.md +0 -44
- package/docs/dw_crypto/Mac.md +0 -139
- package/docs/dw_crypto/MessageDigest.md +0 -175
- package/docs/dw_crypto/SecureRandom.md +0 -148
- package/docs/dw_crypto/Signature.md +0 -252
- package/docs/dw_crypto/WeakCipher.md +0 -538
- package/docs/dw_crypto/WeakMac.md +0 -121
- package/docs/dw_crypto/WeakMessageDigest.md +0 -163
- package/docs/dw_crypto/WeakSignature.md +0 -242
- package/docs/dw_crypto/X509Certificate.md +0 -193
- package/docs/dw_customer/AddressBook.md +0 -163
- package/docs/dw_customer/AgentUserMgr.md +0 -83
- package/docs/dw_customer/AgentUserStatusCodes.md +0 -96
- package/docs/dw_customer/AuthenticationStatus.md +0 -138
- package/docs/dw_customer/Credentials.md +0 -494
- package/docs/dw_customer/Customer.md +0 -571
- package/docs/dw_customer/CustomerActiveData.md +0 -552
- package/docs/dw_customer/CustomerAddress.md +0 -852
- package/docs/dw_customer/CustomerCDPData.md +0 -70
- package/docs/dw_customer/CustomerContextMgr.md +0 -64
- package/docs/dw_customer/CustomerGroup.md +0 -134
- package/docs/dw_customer/CustomerList.md +0 -71
- package/docs/dw_customer/CustomerMgr.md +0 -735
- package/docs/dw_customer/CustomerPasswordConstraints.md +0 -142
- package/docs/dw_customer/CustomerPaymentInstrument.md +0 -125
- package/docs/dw_customer/CustomerStatusCodes.md +0 -30
- package/docs/dw_customer/EncryptedObject.md +0 -18
- package/docs/dw_customer/ExternalProfile.md +0 -160
- package/docs/dw_customer/OrderHistory.md +0 -111
- package/docs/dw_customer/ProductList.md +0 -1000
- package/docs/dw_customer/ProductListItem.md +0 -504
- package/docs/dw_customer/ProductListItemPurchase.md +0 -145
- package/docs/dw_customer/ProductListMgr.md +0 -234
- package/docs/dw_customer/ProductListRegistrant.md +0 -193
- package/docs/dw_customer/Profile.md +0 -1128
- package/docs/dw_customer/Wallet.md +0 -118
- package/docs/dw_extensions.applepay/ApplePayHookResult.md +0 -209
- package/docs/dw_extensions.applepay/ApplePayHooks.md +0 -255
- package/docs/dw_extensions.facebook/FacebookFeedHooks.md +0 -47
- package/docs/dw_extensions.facebook/FacebookProduct.md +0 -1621
- package/docs/dw_extensions.paymentrequest/PaymentRequestHookResult.md +0 -159
- package/docs/dw_extensions.paymentrequest/PaymentRequestHooks.md +0 -160
- package/docs/dw_extensions.payments/SalesforceBancontactPaymentDetails.md +0 -79
- package/docs/dw_extensions.payments/SalesforceCardPaymentDetails.md +0 -103
- package/docs/dw_extensions.payments/SalesforceEpsPaymentDetails.md +0 -51
- package/docs/dw_extensions.payments/SalesforceIdealPaymentDetails.md +0 -51
- package/docs/dw_extensions.payments/SalesforceKlarnaPaymentDetails.md +0 -51
- package/docs/dw_extensions.payments/SalesforcePayPalOrder.md +0 -246
- package/docs/dw_extensions.payments/SalesforcePayPalOrderAddress.md +0 -191
- package/docs/dw_extensions.payments/SalesforcePayPalOrderPayer.md +0 -118
- package/docs/dw_extensions.payments/SalesforcePayPalPaymentDetails.md +0 -79
- package/docs/dw_extensions.payments/SalesforcePaymentDetails.md +0 -57
- package/docs/dw_extensions.payments/SalesforcePaymentIntent.md +0 -281
- package/docs/dw_extensions.payments/SalesforcePaymentMethod.md +0 -346
- package/docs/dw_extensions.payments/SalesforcePaymentRequest.md +0 -784
- package/docs/dw_extensions.payments/SalesforcePaymentsHooks.md +0 -45
- package/docs/dw_extensions.payments/SalesforcePaymentsMgr.md +0 -634
- package/docs/dw_extensions.payments/SalesforcePaymentsSiteConfiguration.md +0 -95
- package/docs/dw_extensions.payments/SalesforceSepaDebitPaymentDetails.md +0 -51
- package/docs/dw_extensions.payments/SalesforceVenmoPaymentDetails.md +0 -79
- package/docs/dw_extensions.pinterest/PinterestAvailability.md +0 -86
- package/docs/dw_extensions.pinterest/PinterestFeedHooks.md +0 -69
- package/docs/dw_extensions.pinterest/PinterestOrder.md +0 -232
- package/docs/dw_extensions.pinterest/PinterestOrderHooks.md +0 -45
- package/docs/dw_extensions.pinterest/PinterestProduct.md +0 -850
- package/docs/dw_io/CSVStreamReader.md +0 -80
- package/docs/dw_io/CSVStreamWriter.md +0 -60
- package/docs/dw_io/File.md +0 -614
- package/docs/dw_io/FileReader.md +0 -41
- package/docs/dw_io/FileWriter.md +0 -103
- package/docs/dw_io/InputStream.md +0 -34
- package/docs/dw_io/OutputStream.md +0 -34
- package/docs/dw_io/PrintWriter.md +0 -71
- package/docs/dw_io/RandomAccessFileReader.md +0 -173
- package/docs/dw_io/Reader.md +0 -274
- package/docs/dw_io/StringWriter.md +0 -81
- package/docs/dw_io/Writer.md +0 -92
- package/docs/dw_io/XMLIndentingStreamWriter.md +0 -112
- package/docs/dw_io/XMLStreamConstants.md +0 -114
- package/docs/dw_io/XMLStreamReader.md +0 -1043
- package/docs/dw_io/XMLStreamWriter.md +0 -572
- package/docs/dw_job/JobExecution.md +0 -107
- package/docs/dw_job/JobStepExecution.md +0 -151
- package/docs/dw_net/FTPClient.md +0 -699
- package/docs/dw_net/FTPFileInfo.md +0 -122
- package/docs/dw_net/HTTPClient.md +0 -831
- package/docs/dw_net/HTTPClientLoggingConfig.md +0 -296
- package/docs/dw_net/HTTPRequestPart.md +0 -206
- package/docs/dw_net/Mail.md +0 -551
- package/docs/dw_net/SFTPClient.md +0 -591
- package/docs/dw_net/SFTPFileInfo.md +0 -122
- package/docs/dw_net/WebDAVClient.md +0 -715
- package/docs/dw_net/WebDAVFileInfo.md +0 -184
- package/docs/dw_object/ActiveData.md +0 -75
- package/docs/dw_object/CustomAttributes.md +0 -16
- package/docs/dw_object/CustomObject.md +0 -73
- package/docs/dw_object/CustomObjectMgr.md +0 -291
- package/docs/dw_object/Extensible.md +0 -64
- package/docs/dw_object/ExtensibleObject.md +0 -68
- package/docs/dw_object/Note.md +0 -121
- package/docs/dw_object/ObjectAttributeDefinition.md +0 -481
- package/docs/dw_object/ObjectAttributeGroup.md +0 -170
- package/docs/dw_object/ObjectAttributeValueDefinition.md +0 -72
- package/docs/dw_object/ObjectTypeDefinition.md +0 -216
- package/docs/dw_object/PersistentObject.md +0 -94
- package/docs/dw_object/SimpleExtensible.md +0 -46
- package/docs/dw_object/SystemObjectMgr.md +0 -153
- package/docs/dw_order/AbstractItem.md +0 -244
- package/docs/dw_order/AbstractItemCtnr.md +0 -240
- package/docs/dw_order/Appeasement.md +0 -367
- package/docs/dw_order/AppeasementItem.md +0 -90
- package/docs/dw_order/Basket.md +0 -362
- package/docs/dw_order/BasketMgr.md +0 -418
- package/docs/dw_order/BonusDiscountLineItem.md +0 -248
- package/docs/dw_order/CouponLineItem.md +0 -272
- package/docs/dw_order/CreateAgentBasketLimitExceededException.md +0 -18
- package/docs/dw_order/CreateBasketFromOrderException.md +0 -26
- package/docs/dw_order/CreateCouponLineItemException.md +0 -26
- package/docs/dw_order/CreateOrderException.md +0 -18
- package/docs/dw_order/CreateTemporaryBasketLimitExceededException.md +0 -18
- package/docs/dw_order/GiftCertificate.md +0 -569
- package/docs/dw_order/GiftCertificateLineItem.md +0 -324
- package/docs/dw_order/GiftCertificateMgr.md +0 -197
- package/docs/dw_order/GiftCertificateStatusCodes.md +0 -60
- package/docs/dw_order/Invoice.md +0 -418
- package/docs/dw_order/InvoiceItem.md +0 -222
- package/docs/dw_order/LineItem.md +0 -532
- package/docs/dw_order/LineItemCtnr.md +0 -2431
- package/docs/dw_order/Order.md +0 -2567
- package/docs/dw_order/OrderAddress.md +0 -807
- package/docs/dw_order/OrderItem.md +0 -536
- package/docs/dw_order/OrderMgr.md +0 -535
- package/docs/dw_order/OrderPaymentInstrument.md +0 -220
- package/docs/dw_order/OrderProcessStatusCodes.md +0 -84
- package/docs/dw_order/PaymentCard.md +0 -217
- package/docs/dw_order/PaymentInstrument.md +0 -1462
- package/docs/dw_order/PaymentMethod.md +0 -242
- package/docs/dw_order/PaymentMgr.md +0 -117
- package/docs/dw_order/PaymentProcessor.md +0 -70
- package/docs/dw_order/PaymentStatusCodes.md +0 -42
- package/docs/dw_order/PaymentTransaction.md +0 -328
- package/docs/dw_order/PriceAdjustment.md +0 -640
- package/docs/dw_order/PriceAdjustmentLimitTypes.md +0 -38
- package/docs/dw_order/ProductLineItem.md +0 -1821
- package/docs/dw_order/ProductShippingCost.md +0 -96
- package/docs/dw_order/ProductShippingLineItem.md +0 -326
- package/docs/dw_order/ProductShippingModel.md +0 -125
- package/docs/dw_order/Return.md +0 -360
- package/docs/dw_order/ReturnCase.md +0 -400
- package/docs/dw_order/ReturnCaseItem.md +0 -373
- package/docs/dw_order/ReturnItem.md +0 -362
- package/docs/dw_order/Shipment.md +0 -1251
- package/docs/dw_order/ShipmentShippingCost.md +0 -46
- package/docs/dw_order/ShipmentShippingModel.md +0 -146
- package/docs/dw_order/ShippingLineItem.md +0 -278
- package/docs/dw_order/ShippingLocation.md +0 -366
- package/docs/dw_order/ShippingMethod.md +0 -266
- package/docs/dw_order/ShippingMgr.md +0 -158
- package/docs/dw_order/ShippingOrder.md +0 -561
- package/docs/dw_order/ShippingOrderItem.md +0 -355
- package/docs/dw_order/SumItem.md +0 -147
- package/docs/dw_order/TaxGroup.md +0 -143
- package/docs/dw_order/TaxItem.md +0 -74
- package/docs/dw_order/TaxMgr.md +0 -227
- package/docs/dw_order/TrackingInfo.md +0 -312
- package/docs/dw_order/TrackingRef.md +0 -113
- package/docs/dw_order.hooks/BasketMergeHooks.md +0 -42
- package/docs/dw_order.hooks/CalculateHooks.md +0 -77
- package/docs/dw_order.hooks/OrderHooks.md +0 -41
- package/docs/dw_order.hooks/PaymentHooks.md +0 -180
- package/docs/dw_order.hooks/ReturnHooks.md +0 -135
- package/docs/dw_order.hooks/ShippingOrderHooks.md +0 -245
- package/docs/dw_rpc/SOAPUtil.md +0 -465
- package/docs/dw_rpc/Stub.md +0 -289
- package/docs/dw_rpc/WebReference.md +0 -83
- package/docs/dw_suggest/BrandSuggestions.md +0 -17
- package/docs/dw_suggest/CategorySuggestions.md +0 -53
- package/docs/dw_suggest/ContentSuggestions.md +0 -53
- package/docs/dw_suggest/CustomSuggestions.md +0 -17
- package/docs/dw_suggest/ProductSuggestions.md +0 -53
- package/docs/dw_suggest/SearchPhraseSuggestions.md +0 -117
- package/docs/dw_suggest/SuggestModel.md +0 -403
- package/docs/dw_suggest/SuggestedCategory.md +0 -46
- package/docs/dw_suggest/SuggestedContent.md +0 -46
- package/docs/dw_suggest/SuggestedPhrase.md +0 -70
- package/docs/dw_suggest/SuggestedProduct.md +0 -47
- package/docs/dw_suggest/SuggestedTerm.md +0 -143
- package/docs/dw_suggest/SuggestedTerms.md +0 -132
- package/docs/dw_suggest/Suggestions.md +0 -179
- package/docs/dw_svc/FTPService.md +0 -118
- package/docs/dw_svc/FTPServiceDefinition.md +0 -69
- package/docs/dw_svc/HTTPFormService.md +0 -18
- package/docs/dw_svc/HTTPFormServiceDefinition.md +0 -18
- package/docs/dw_svc/HTTPService.md +0 -415
- package/docs/dw_svc/HTTPServiceDefinition.md +0 -303
- package/docs/dw_svc/LocalServiceRegistry.md +0 -43
- package/docs/dw_svc/Result.md +0 -303
- package/docs/dw_svc/SOAPService.md +0 -115
- package/docs/dw_svc/SOAPServiceDefinition.md +0 -17
- package/docs/dw_svc/Service.md +0 -295
- package/docs/dw_svc/ServiceCallback.md +0 -268
- package/docs/dw_svc/ServiceConfig.md +0 -120
- package/docs/dw_svc/ServiceCredential.md +0 -156
- package/docs/dw_svc/ServiceDefinition.md +0 -176
- package/docs/dw_svc/ServiceProfile.md +0 -168
- package/docs/dw_svc/ServiceRegistry.md +0 -109
- package/docs/dw_system/AgentUserStatusCodes.md +0 -21
- package/docs/dw_system/Cache.md +0 -102
- package/docs/dw_system/CacheMgr.md +0 -42
- package/docs/dw_system/HookMgr.md +0 -66
- package/docs/dw_system/InternalObject.md +0 -56
- package/docs/dw_system/JobProcessMonitor.md +0 -124
- package/docs/dw_system/Log.md +0 -237
- package/docs/dw_system/LogNDC.md +0 -88
- package/docs/dw_system/Logger.md +0 -263
- package/docs/dw_system/OrganizationPreferences.md +0 -18
- package/docs/dw_system/Pipeline.md +0 -73
- package/docs/dw_system/PipelineDictionary.md +0 -16
- package/docs/dw_system/RESTErrorResponse.md +0 -66
- package/docs/dw_system/RESTResponseMgr.md +0 -258
- package/docs/dw_system/RESTSuccessResponse.md +0 -39
- package/docs/dw_system/RemoteInclude.md +0 -74
- package/docs/dw_system/Request.md +0 -839
- package/docs/dw_system/RequestHooks.md +0 -59
- package/docs/dw_system/Response.md +0 -522
- package/docs/dw_system/SearchStatus.md +0 -151
- package/docs/dw_system/Session.md +0 -476
- package/docs/dw_system/Site.md +0 -585
- package/docs/dw_system/SitePreferences.md +0 -49
- package/docs/dw_system/Status.md +0 -273
- package/docs/dw_system/StatusItem.md +0 -273
- package/docs/dw_system/System.md +0 -200
- package/docs/dw_system/Transaction.md +0 -84
- package/docs/dw_util/ArrayList.md +0 -50
- package/docs/dw_util/Assert.md +0 -391
- package/docs/dw_util/BigInteger.md +0 -326
- package/docs/dw_util/Bytes.md +0 -252
- package/docs/dw_util/Calendar.md +0 -921
- package/docs/dw_util/Collection.md +0 -338
- package/docs/dw_util/Currency.md +0 -163
- package/docs/dw_util/DateUtils.md +0 -86
- package/docs/dw_util/Decimal.md +0 -438
- package/docs/dw_util/FilteringCollection.md +0 -93
- package/docs/dw_util/Geolocation.md +0 -271
- package/docs/dw_util/HashMap.md +0 -43
- package/docs/dw_util/HashSet.md +0 -46
- package/docs/dw_util/Iterator.md +0 -97
- package/docs/dw_util/LinkedHashMap.md +0 -43
- package/docs/dw_util/LinkedHashSet.md +0 -46
- package/docs/dw_util/List.md +0 -519
- package/docs/dw_util/Locale.md +0 -267
- package/docs/dw_util/Map.md +0 -313
- package/docs/dw_util/MapEntry.md +0 -70
- package/docs/dw_util/MappingKey.md +0 -76
- package/docs/dw_util/MappingMgr.md +0 -122
- package/docs/dw_util/PropertyComparator.md +0 -51
- package/docs/dw_util/SecureEncoder.md +0 -350
- package/docs/dw_util/SecureFilter.md +0 -350
- package/docs/dw_util/SeekableIterator.md +0 -176
- package/docs/dw_util/Set.md +0 -19
- package/docs/dw_util/SortedMap.md +0 -148
- package/docs/dw_util/SortedSet.md +0 -151
- package/docs/dw_util/StringUtils.md +0 -753
- package/docs/dw_util/Template.md +0 -88
- package/docs/dw_util/UUIDUtils.md +0 -38
- package/docs/dw_value/EnumValue.md +0 -92
- package/docs/dw_value/MimeEncodedText.md +0 -103
- package/docs/dw_value/Money.md +0 -610
- package/docs/dw_value/Quantity.md +0 -376
- package/docs/dw_web/CSRFProtection.md +0 -83
- package/docs/dw_web/ClickStream.md +0 -157
- package/docs/dw_web/ClickStreamEntry.md +0 -289
- package/docs/dw_web/Cookie.md +0 -396
- package/docs/dw_web/Cookies.md +0 -46
- package/docs/dw_web/Form.md +0 -74
- package/docs/dw_web/FormAction.md +0 -199
- package/docs/dw_web/FormElement.md +0 -220
- package/docs/dw_web/FormElementValidationResult.md +0 -157
- package/docs/dw_web/FormField.md +0 -603
- package/docs/dw_web/FormFieldOption.md +0 -238
- package/docs/dw_web/FormFieldOptions.md +0 -42
- package/docs/dw_web/FormGroup.md +0 -199
- package/docs/dw_web/FormList.md +0 -126
- package/docs/dw_web/FormListItem.md +0 -48
- package/docs/dw_web/Forms.md +0 -16
- package/docs/dw_web/HttpParameter.md +0 -513
- package/docs/dw_web/HttpParameterMap.md +0 -185
- package/docs/dw_web/LoopIterator.md +0 -261
- package/docs/dw_web/PageMetaData.md +0 -230
- package/docs/dw_web/PageMetaTag.md +0 -142
- package/docs/dw_web/PagingModel.md +0 -389
- package/docs/dw_web/Resource.md +0 -126
- package/docs/dw_web/URL.md +0 -213
- package/docs/dw_web/URLAction.md +0 -26
- package/docs/dw_web/URLParameter.md +0 -22
- package/docs/dw_web/URLRedirect.md +0 -71
- package/docs/dw_web/URLRedirectMgr.md +0 -73
- package/docs/dw_web/URLUtils.md +0 -1264
- package/docs/isml/isactivedatacontext.md +0 -382
- package/docs/isml/isactivedatahead.md +0 -566
- package/docs/isml/isanalyticsoff.md +0 -537
- package/docs/isml/isapplepay.md +0 -667
- package/docs/isml/isbreak.md +0 -687
- package/docs/isml/isbuynow.md +0 -682
- package/docs/isml/iscache.md +0 -802
- package/docs/isml/iscomment.md +0 -794
- package/docs/isml/iscomponent.md +0 -797
- package/docs/isml/iscontent.md +0 -594
- package/docs/isml/iscontinue.md +0 -563
- package/docs/isml/iscookie.md +0 -798
- package/docs/isml/isdecorate.md +0 -818
- package/docs/isml/isif.md +0 -737
- package/docs/isml/isinclude.md +0 -874
- package/docs/isml/isloop.md +0 -377
- package/docs/isml/ismodule.md +0 -844
- package/docs/isml/isnext.md +0 -672
- package/docs/isml/isobject.md +0 -760
- package/docs/isml/ispayment.md +0 -577
- package/docs/isml/ispaymentmessages.md +0 -664
- package/docs/isml/isprint.md +0 -875
- package/docs/isml/isredirect.md +0 -716
- package/docs/isml/isremove.md +0 -725
- package/docs/isml/isreplace.md +0 -783
- package/docs/isml/isscript.md +0 -859
- package/docs/isml/isselect.md +0 -908
- package/docs/isml/isset.md +0 -585
- package/docs/isml/isslot.md +0 -824
- package/docs/isml/isstatus.md +0 -711
- package/docs/sfra/account.md +0 -145
- package/docs/sfra/address.md +0 -84
- package/docs/sfra/billing.md +0 -90
- package/docs/sfra/cart.md +0 -134
- package/docs/sfra/categories.md +0 -124
- package/docs/sfra/content.md +0 -133
- package/docs/sfra/locale.md +0 -126
- package/docs/sfra/order.md +0 -219
- package/docs/sfra/payment.md +0 -131
- package/docs/sfra/price-default.md +0 -118
- package/docs/sfra/price-range.md +0 -77
- package/docs/sfra/price-tiered.md +0 -117
- package/docs/sfra/product-bundle.md +0 -164
- package/docs/sfra/product-full.md +0 -179
- package/docs/sfra/product-line-items.md +0 -147
- package/docs/sfra/product-search.md +0 -245
- package/docs/sfra/product-tile.md +0 -95
- package/docs/sfra/querystring.md +0 -240
- package/docs/sfra/render.md +0 -354
- package/docs/sfra/request.md +0 -210
- package/docs/sfra/response.md +0 -391
- package/docs/sfra/server.md +0 -375
- package/docs/sfra/shipping.md +0 -181
- package/docs/sfra/store.md +0 -145
- package/docs/sfra/stores.md +0 -190
- package/docs/sfra/totals.md +0 -184
- package/docs-site-v2/.vitepress/config.mts +0 -190
- package/docs-site-v2/.vitepress/theme/components/AssistantTabs.vue +0 -96
- package/docs-site-v2/.vitepress/theme/components/Callout.vue +0 -10
- package/docs-site-v2/.vitepress/theme/components/Collapsible.vue +0 -14
- package/docs-site-v2/.vitepress/theme/components/DwJsonBuilder.vue +0 -82
- package/docs-site-v2/.vitepress/theme/components/HomeSections.vue +0 -552
- package/docs-site-v2/.vitepress/theme/components/InstructionFilesTabs.vue +0 -87
- package/docs-site-v2/.vitepress/theme/components/ModeTabs.vue +0 -70
- package/docs-site-v2/.vitepress/theme/components/NewcomerCTA.vue +0 -14
- package/docs-site-v2/.vitepress/theme/components/QuickStartCards.vue +0 -20
- package/docs-site-v2/.vitepress/theme/components/QuickStartHero.vue +0 -20
- package/docs-site-v2/.vitepress/theme/components/SkillsList.vue +0 -48
- package/docs-site-v2/.vitepress/theme/components/ToolExplorer.vue +0 -85
- package/docs-site-v2/.vitepress/theme/custom.css +0 -1373
- package/docs-site-v2/.vitepress/theme/index.ts +0 -39
- package/docs-site-v2/data/skills.ts +0 -147
- package/docs-site-v2/data/tools.ts +0 -490
- package/docs-site-v2/development/index.md +0 -151
- package/docs-site-v2/examples/index.md +0 -333
- package/docs-site-v2/features/index.md +0 -144
- package/docs-site-v2/guide/ai-interfaces.md +0 -58
- package/docs-site-v2/guide/configuration.md +0 -208
- package/docs-site-v2/guide/index.md +0 -50
- package/docs-site-v2/index.md +0 -32
- package/docs-site-v2/package-lock.json +0 -2511
- package/docs-site-v2/package.json +0 -15
- package/docs-site-v2/public/404.html +0 -15
- 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/explain-product-pricing-methods-no-mcp.png +0 -0
- package/docs-site-v2/public/explain-product-pricing-methods.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 +0 -4174
- package/docs-site-v2/public/llms.txt +0 -44
- package/docs-site-v2/public/logo-dark.svg +0 -8
- package/docs-site-v2/public/logo.svg +0 -8
- package/docs-site-v2/public/robots.txt +0 -20
- package/docs-site-v2/public/site.webmanifest +0 -50
- package/docs-site-v2/public/sitemap.xml +0 -90
- package/docs-site-v2/script-debugger/index.md +0 -105
- package/docs-site-v2/scripts/generate-llms.js +0 -71
- package/docs-site-v2/scripts/generate-sitemap.js +0 -97
- package/docs-site-v2/security/index.md +0 -115
- package/docs-site-v2/skills/index.md +0 -40
- package/docs-site-v2/tools/index.md +0 -36
- package/docs-site-v2/troubleshooting/index.md +0 -204
- package/eslint.config.js +0 -139
- package/jest.config.js +0 -27
- package/memories/repo/docs-site-v2-build.json +0 -11
- package/scripts/convert-docs.js +0 -633
- package/scripts/validate-server-json.js +0 -68
- package/server.json +0 -20
- package/src/clients/agent-instructions-client.ts +0 -370
- package/src/clients/base/abstract-documentation-client.ts +0 -405
- package/src/clients/base/http-client.ts +0 -152
- package/src/clients/base/oauth-token.ts +0 -164
- package/src/clients/base/ocapi-auth-client.ts +0 -133
- package/src/clients/cartridge/cartridge-generation-client.ts +0 -302
- package/src/clients/cartridge/cartridge-structure.ts +0 -37
- package/src/clients/cartridge/cartridge-templates.ts +0 -246
- package/src/clients/cartridge/index.ts +0 -6
- package/src/clients/docs/class-content-parser.ts +0 -308
- package/src/clients/docs/class-name-resolver.ts +0 -99
- package/src/clients/docs/documentation-scanner.ts +0 -255
- package/src/clients/docs/index.ts +0 -16
- package/src/clients/docs/referenced-types-extractor.ts +0 -92
- package/src/clients/docs-client.ts +0 -393
- package/src/clients/isml-client.ts +0 -353
- package/src/clients/log-client.ts +0 -19
- package/src/clients/ocapi/code-versions-client.ts +0 -54
- package/src/clients/ocapi/site-preferences-client.ts +0 -106
- package/src/clients/ocapi/system-objects-client.ts +0 -148
- package/src/clients/ocapi-client.ts +0 -53
- package/src/clients/script-debugger/index.ts +0 -5
- package/src/clients/script-debugger/script-debugger-client.ts +0 -754
- package/src/clients/sfra-client.ts +0 -339
- package/src/config/configuration-factory.ts +0 -201
- package/src/config/dw-json-loader.ts +0 -248
- package/src/config/workspace-roots.ts +0 -540
- package/src/constants/index.ts +0 -1
- package/src/core/handlers/abstract-client-handler.ts +0 -85
- package/src/core/handlers/agent-instructions-handler.ts +0 -48
- package/src/core/handlers/base-handler.ts +0 -172
- package/src/core/handlers/cartridge-handler.ts +0 -38
- package/src/core/handlers/client-factory.ts +0 -140
- package/src/core/handlers/code-version-handler.ts +0 -43
- package/src/core/handlers/docs-handler.ts +0 -19
- package/src/core/handlers/isml-handler.ts +0 -19
- package/src/core/handlers/job-log-handler.ts +0 -39
- package/src/core/handlers/log-handler.ts +0 -39
- package/src/core/handlers/script-debugger-handler.ts +0 -46
- package/src/core/handlers/sfra-handler.ts +0 -23
- package/src/core/handlers/simple-client-handler.ts +0 -78
- package/src/core/handlers/system-object-handler.ts +0 -43
- package/src/core/handlers/validation-helpers.ts +0 -206
- package/src/core/instruction-advisor.ts +0 -122
- package/src/core/server.ts +0 -374
- package/src/core/tool-definitions.ts +0 -30
- package/src/core/tool-schemas/agent-instruction-tools.ts +0 -72
- package/src/core/tool-schemas/cartridge-tools.ts +0 -29
- package/src/core/tool-schemas/code-version-tools.ts +0 -28
- package/src/core/tool-schemas/documentation-tools.ts +0 -104
- package/src/core/tool-schemas/index.ts +0 -27
- package/src/core/tool-schemas/isml-tools.ts +0 -89
- package/src/core/tool-schemas/log-tools.ts +0 -196
- package/src/core/tool-schemas/script-debugger-tools.ts +0 -83
- package/src/core/tool-schemas/sfra-tools.ts +0 -65
- package/src/core/tool-schemas/shared-schemas.ts +0 -158
- package/src/core/tool-schemas/system-object-tools.ts +0 -127
- package/src/index.ts +0 -20
- package/src/main.ts +0 -161
- package/src/services/file-system-service.ts +0 -117
- package/src/services/index.ts +0 -11
- package/src/services/path-service.ts +0 -124
- package/src/tool-configs/agent-instructions-tool-config.ts +0 -83
- package/src/tool-configs/cartridge-tool-config.ts +0 -41
- package/src/tool-configs/code-version-tool-config.ts +0 -37
- package/src/tool-configs/docs-tool-config.ts +0 -103
- package/src/tool-configs/isml-tool-config.ts +0 -87
- package/src/tool-configs/job-log-tool-config.ts +0 -119
- package/src/tool-configs/log-tool-config.ts +0 -110
- package/src/tool-configs/script-debugger-tool-config.ts +0 -69
- package/src/tool-configs/sfra-tool-config.ts +0 -74
- package/src/tool-configs/system-object-tool-config.ts +0 -142
- package/src/types/types.ts +0 -125
- package/src/utils/cache.ts +0 -291
- package/src/utils/category-utils.ts +0 -70
- package/src/utils/log-tool-constants.ts +0 -95
- package/src/utils/logger.ts +0 -260
- package/src/utils/markdown-utils.ts +0 -280
- package/src/utils/ocapi-url-builder.ts +0 -48
- package/src/utils/path-resolver.ts +0 -69
- package/src/utils/path-validation.ts +0 -113
- package/src/utils/query-builder.ts +0 -84
- package/src/utils/utils.ts +0 -139
- package/src/utils/validator.ts +0 -162
- package/tests/__mocks__/docs-client.ts +0 -8
- package/tests/__mocks__/src/clients/base/http-client.js +0 -43
- package/tests/__mocks__/webdav.js +0 -14
- package/tests/base-handler.test.ts +0 -527
- package/tests/base-http-client.test.ts +0 -311
- package/tests/cache.test.ts +0 -453
- package/tests/cartridge-handler.test.ts +0 -290
- package/tests/class-content-parser.test.ts +0 -629
- package/tests/class-name-resolver.test.ts +0 -365
- package/tests/client-factory.test.ts +0 -280
- package/tests/code-version-handler.test.ts +0 -291
- package/tests/code-versions-client.test.ts +0 -156
- package/tests/config.test.ts +0 -285
- package/tests/configuration-factory.test.ts +0 -233
- package/tests/docs-handler.test.ts +0 -359
- package/tests/documentation-scanner.test.ts +0 -755
- package/tests/file-system-service.test.ts +0 -111
- package/tests/isml-client.test.ts +0 -463
- package/tests/isml-handler.test.ts +0 -375
- package/tests/job-log-handler.test.ts +0 -283
- package/tests/log-client.test.ts +0 -768
- package/tests/log-handler.test.ts +0 -365
- package/tests/log-processor.test.ts +0 -243
- package/tests/log-validation.test.ts +0 -149
- package/tests/logger.test.ts +0 -303
- package/tests/mcp/AGENTS.md +0 -162
- package/tests/mcp/README.md +0 -237
- package/tests/mcp/node/activate-code-version-advanced.full-mode.programmatic.test.js +0 -669
- package/tests/mcp/node/code-versions.full-mode.programmatic.test.js +0 -605
- package/tests/mcp/node/evaluate-script.full-mode.programmatic.test.js +0 -387
- package/tests/mcp/node/generate-cartridge-structure.docs-only.programmatic.test.js +0 -644
- package/tests/mcp/node/get-available-sfra-documents.programmatic.test.js +0 -274
- package/tests/mcp/node/get-isml-categories.programmatic.test.js +0 -278
- package/tests/mcp/node/get-isml-element.programmatic.test.js +0 -278
- package/tests/mcp/node/get-isml-elements-by-category.programmatic.test.js +0 -363
- package/tests/mcp/node/get-job-execution-summary.full-mode.programmatic.test.js +0 -432
- package/tests/mcp/node/get-job-log-entries.full-mode.programmatic.test.js +0 -488
- package/tests/mcp/node/get-latest-debug.full-mode.programmatic.test.js +0 -338
- package/tests/mcp/node/get-latest-error.full-mode.programmatic.test.js +0 -255
- package/tests/mcp/node/get-latest-info.full-mode.programmatic.test.js +0 -347
- package/tests/mcp/node/get-latest-job-log-files.full-mode.programmatic.test.js +0 -460
- package/tests/mcp/node/get-latest-warn.full-mode.programmatic.test.js +0 -454
- package/tests/mcp/node/get-log-file-contents.full-mode.programmatic.test.js +0 -381
- package/tests/mcp/node/get-sfcc-class-documentation.docs-only.programmatic.test.js +0 -371
- package/tests/mcp/node/get-sfcc-class-info.docs-only.programmatic.test.js +0 -1032
- package/tests/mcp/node/get-sfra-categories.docs-only.programmatic.test.js +0 -369
- package/tests/mcp/node/get-sfra-document.programmatic.test.js +0 -473
- package/tests/mcp/node/get-sfra-documents-by-category.docs-only.programmatic.test.js +0 -510
- package/tests/mcp/node/get-system-object-definition.full-mode.programmatic.test.js +0 -389
- package/tests/mcp/node/get-system-object-definitions.docs-only.programmatic.test.js +0 -300
- package/tests/mcp/node/get-system-object-definitions.full-mode.programmatic.test.js +0 -387
- package/tests/mcp/node/list-isml-elements.programmatic.test.js +0 -311
- package/tests/mcp/node/list-log-files.full-mode.programmatic.test.js +0 -150
- package/tests/mcp/node/list-sfcc-classes.docs-only.programmatic.test.js +0 -612
- package/tests/mcp/node/search-custom-object-attribute-definitions.full-mode.programmatic.test.js +0 -875
- package/tests/mcp/node/search-isml-elements.programmatic.test.js +0 -325
- package/tests/mcp/node/search-job-logs-by-name.full-mode.programmatic.test.js +0 -330
- package/tests/mcp/node/search-job-logs.full-mode.programmatic.test.js +0 -526
- package/tests/mcp/node/search-logs.full-mode.programmatic.test.js +0 -478
- package/tests/mcp/node/search-sfcc-classes.docs-only.programmatic.test.js +0 -334
- package/tests/mcp/node/search-sfcc-methods.docs-only.programmatic.test.js +0 -487
- package/tests/mcp/node/search-sfra-documentation.docs-only.programmatic.test.js +0 -563
- package/tests/mcp/node/search-site-preferences.full-mode.programmatic.test.js +0 -556
- package/tests/mcp/node/search-system-object-attribute-definitions.full-mode.programmatic.test.js +0 -744
- package/tests/mcp/node/search-system-object-attribute-groups.full-mode.programmatic.test.js +0 -657
- package/tests/mcp/node/summarize-logs.full-mode.programmatic.test.js +0 -357
- package/tests/mcp/node/tools.docs-only.programmatic.test.js +0 -515
- package/tests/mcp/node/tools.full-mode.programmatic.test.js +0 -154
- package/tests/mcp/test-fixtures/dw.json +0 -10
- package/tests/mcp/yaml/activate-code-version.docs-only.test.mcp.yml +0 -318
- package/tests/mcp/yaml/activate-code-version.full-mode.test.mcp.yml +0 -507
- package/tests/mcp/yaml/evaluate-script.full-mode.test.mcp.yml +0 -281
- package/tests/mcp/yaml/get-available-sfra-documents.docs-only.test.mcp.yml +0 -684
- package/tests/mcp/yaml/get-available-sfra-documents.full-mode.test.mcp.yml +0 -684
- package/tests/mcp/yaml/get-code-versions.docs-only.test.mcp.yml +0 -196
- package/tests/mcp/yaml/get-code-versions.full-mode.test.mcp.yml +0 -273
- package/tests/mcp/yaml/get-isml-categories.docs-only.test.mcp.yml +0 -330
- package/tests/mcp/yaml/get-isml-element.docs-only.test.mcp.yml +0 -294
- package/tests/mcp/yaml/get-isml-elements-by-category.docs-only.test.mcp.yml +0 -334
- package/tests/mcp/yaml/get-job-execution-summary.full-mode.test.mcp.yml +0 -148
- package/tests/mcp/yaml/get-job-log-entries.full-mode.test.mcp.yml +0 -284
- package/tests/mcp/yaml/get-latest-debug.full-mode.test.mcp.yml +0 -191
- package/tests/mcp/yaml/get-latest-error.full-mode.test.mcp.yml +0 -195
- package/tests/mcp/yaml/get-latest-info.full-mode.test.mcp.yml +0 -242
- package/tests/mcp/yaml/get-latest-job-log-files.full-mode.test.mcp.yml +0 -189
- package/tests/mcp/yaml/get-latest-warn.full-mode.test.mcp.yml +0 -182
- package/tests/mcp/yaml/get-log-file-contents.full-mode.test.mcp.yml +0 -256
- package/tests/mcp/yaml/get-sfcc-class-documentation.docs-only.test.mcp.yml +0 -2416
- package/tests/mcp/yaml/get-sfcc-class-documentation.full-mode.test.mcp.yml +0 -2416
- package/tests/mcp/yaml/get-sfcc-class-info.docs-only.test.mcp.yml +0 -1225
- package/tests/mcp/yaml/get-sfcc-class-info.full-mode.test.mcp.yml +0 -1225
- package/tests/mcp/yaml/get-sfra-categories.docs-only.test.mcp.yml +0 -452
- package/tests/mcp/yaml/get-sfra-categories.full-mode.test.mcp.yml +0 -452
- package/tests/mcp/yaml/get-sfra-document.docs-only.test.mcp.yml +0 -525
- package/tests/mcp/yaml/get-sfra-document.full-mode.test.mcp.yml +0 -525
- package/tests/mcp/yaml/get-sfra-documents-by-category.docs-only.test.mcp.yml +0 -507
- package/tests/mcp/yaml/get-sfra-documents-by-category.full-mode.test.mcp.yml +0 -507
- package/tests/mcp/yaml/get-system-object-definition.docs-only.test.mcp.yml +0 -208
- package/tests/mcp/yaml/get-system-object-definition.full-mode.test.mcp.yml +0 -191
- package/tests/mcp/yaml/get-system-object-definitions.docs-only.test.mcp.yml +0 -257
- package/tests/mcp/yaml/get-system-object-definitions.full-mode.test.mcp.yml +0 -517
- package/tests/mcp/yaml/get_latest_error.test.mcp.yml +0 -472
- package/tests/mcp/yaml/list-isml-elements.docs-only.test.mcp.yml +0 -212
- package/tests/mcp/yaml/list-log-files.full-mode.test.mcp.yml +0 -89
- package/tests/mcp/yaml/list-sfcc-classes.docs-only.test.mcp.yml +0 -511
- package/tests/mcp/yaml/list-sfcc-classes.full-mode.test.mcp.yml +0 -511
- package/tests/mcp/yaml/search-custom-object-attribute-definitions.docs-only.test.mcp.yml +0 -82
- package/tests/mcp/yaml/search-custom-object-attribute-definitions.test.mcp.yml +0 -387
- package/tests/mcp/yaml/search-isml-elements.docs-only.test.mcp.yml +0 -312
- package/tests/mcp/yaml/search-job-logs-by-name.full-mode.test.mcp.yml +0 -169
- package/tests/mcp/yaml/search-job-logs.full-mode.test.mcp.yml +0 -174
- package/tests/mcp/yaml/search-logs.full-mode.test.mcp.yml +0 -207
- package/tests/mcp/yaml/search-sfcc-classes.docs-only.test.mcp.yml +0 -1157
- package/tests/mcp/yaml/search-sfcc-classes.full-mode.test.mcp.yml +0 -1157
- package/tests/mcp/yaml/search-sfcc-methods.docs-only.test.mcp.yml +0 -723
- package/tests/mcp/yaml/search-sfcc-methods.full-mode.test.mcp.yml +0 -723
- package/tests/mcp/yaml/search-sfra-documentation.docs-only.test.mcp.yml +0 -427
- package/tests/mcp/yaml/search-sfra-documentation.full-mode.test.mcp.yml +0 -427
- package/tests/mcp/yaml/search-site-preferences.docs-only.test.mcp.yml +0 -295
- package/tests/mcp/yaml/search-site-preferences.full-mode.test.mcp.yml +0 -574
- package/tests/mcp/yaml/search-system-object-attribute-definitions.docs-only.test.mcp.yml +0 -168
- package/tests/mcp/yaml/search-system-object-attribute-definitions.full-mode.test.mcp.yml +0 -500
- package/tests/mcp/yaml/search-system-object-attribute-groups.docs-only.test.mcp.yml +0 -278
- package/tests/mcp/yaml/search-system-object-attribute-groups.full-mode.test.mcp.yml +0 -612
- package/tests/mcp/yaml/summarize-logs.full-mode.test.mcp.yml +0 -173
- package/tests/mcp/yaml/tools.docs-only.test.mcp.yml +0 -535
- package/tests/mcp/yaml/tools.full-mode.test.mcp.yml +0 -378
- package/tests/oauth-token.test.ts +0 -725
- package/tests/ocapi-auth-client.test.ts +0 -276
- package/tests/ocapi-client.test.ts +0 -242
- package/tests/path-service.test.ts +0 -96
- package/tests/query-builder.test.ts +0 -281
- package/tests/referenced-types-extractor.test.ts +0 -814
- package/tests/script-debugger-client.test.ts +0 -430
- package/tests/servers/sfcc-mock-server/README.md +0 -208
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/code-versions.json +0 -247
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/custom-object-attributes-customapi.json +0 -128
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/custom-object-attributes-globalsettings.json +0 -92
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/custom-object-attributes-versionhistory.json +0 -256
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/site-preferences-ccv.json +0 -275
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/site-preferences-fastforward.json +0 -123
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/site-preferences-sfra.json +0 -224
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/site-preferences-storefront.json +0 -447
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/site-preferences-system.json +0 -171
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-attribute-groups-campaign.json +0 -13
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-attribute-groups-category.json +0 -50
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-attribute-groups-order.json +0 -32
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-attribute-groups-product.json +0 -224
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-attribute-groups-sitepreferences.json +0 -62
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-attributes-customeraddress.json +0 -109
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-attributes-product-expanded.json +0 -183
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-attributes-product.json +0 -139
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-definition-category.json +0 -26
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-definition-customer.json +0 -26
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-definition-customeraddress.json +0 -26
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-definition-order.json +0 -26
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-definition-product.json +0 -26
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-definitions-old.json +0 -354
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-definitions.json +0 -172
- package/tests/servers/sfcc-mock-server/package-lock.json +0 -879
- package/tests/servers/sfcc-mock-server/package.json +0 -39
- package/tests/servers/sfcc-mock-server/scripts/setup-logs.js +0 -224
- package/tests/servers/sfcc-mock-server/server.js +0 -280
- package/tests/servers/sfcc-mock-server/src/app.js +0 -182
- package/tests/servers/sfcc-mock-server/src/config/server-config.js +0 -124
- package/tests/servers/sfcc-mock-server/src/middleware/auth.js +0 -101
- package/tests/servers/sfcc-mock-server/src/middleware/cors.js +0 -39
- package/tests/servers/sfcc-mock-server/src/middleware/logging.js +0 -124
- package/tests/servers/sfcc-mock-server/src/routes/cartridge-webdav.js +0 -258
- package/tests/servers/sfcc-mock-server/src/routes/ocapi/code-versions-handler.js +0 -184
- package/tests/servers/sfcc-mock-server/src/routes/ocapi/debugger-handler.js +0 -396
- package/tests/servers/sfcc-mock-server/src/routes/ocapi/oauth-handler.js +0 -36
- package/tests/servers/sfcc-mock-server/src/routes/ocapi/ocapi-error-utils.js +0 -221
- package/tests/servers/sfcc-mock-server/src/routes/ocapi/ocapi-utils.js +0 -440
- package/tests/servers/sfcc-mock-server/src/routes/ocapi/site-preferences-handler.js +0 -332
- package/tests/servers/sfcc-mock-server/src/routes/ocapi/system-objects-handler.js +0 -572
- package/tests/servers/sfcc-mock-server/src/routes/ocapi.js +0 -58
- package/tests/servers/sfcc-mock-server/src/routes/storefront.js +0 -86
- package/tests/servers/sfcc-mock-server/src/routes/webdav.js +0 -240
- package/tests/servers/sfcc-mock-server/src/utils/mock-data-loader.js +0 -84
- package/tests/servers/sfcc-mock-server/src/utils/webdav-xml.js +0 -121
- package/tests/servers/sfcc-mock-server-manager.ts +0 -280
- package/tests/sfcc-mock-server.test.ts +0 -423
- package/tests/site-preferences-client.test.ts +0 -358
- package/tests/system-objects-client.test.ts +0 -310
- package/tests/utils.test.ts +0 -477
- package/tests/validation-helpers.test.ts +0 -325
- package/tests/validator.test.ts +0 -416
- package/tests/workspace-roots.test.ts +0 -227
- package/tsconfig.json +0 -20
- package/tsconfig.test.json +0 -20
package/docs/isml/isscript.md
DELETED
|
@@ -1,859 +0,0 @@
|
|
|
1
|
-
# ISML isscript Element
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
The `<isscript>` element enables server-side JavaScript execution within ISML templates. It provides a way to perform calculations, manipulate data, call API methods, and set variables using the full power of JavaScript and the Salesforce B2C Commerce Script API (dw.* namespace).
|
|
6
|
-
|
|
7
|
-
**Key Features:** Server-side JavaScript execution, access to B2C Commerce APIs, variable manipulation, shared execution context across multiple script blocks, integration with inline expressions using `${}` syntax.
|
|
8
|
-
|
|
9
|
-
**Important:** Scripts execute on the server during template rendering, not in the browser.
|
|
10
|
-
|
|
11
|
-
## Syntax
|
|
12
|
-
|
|
13
|
-
```isml
|
|
14
|
-
<isscript>
|
|
15
|
-
// JavaScript code here
|
|
16
|
-
</isscript>
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
## Attributes
|
|
20
|
-
|
|
21
|
-
**None** - This tag has no attributes. JavaScript code is placed between the opening and closing tags.
|
|
22
|
-
|
|
23
|
-
## Purpose
|
|
24
|
-
|
|
25
|
-
The `<isscript>` element serves to:
|
|
26
|
-
|
|
27
|
-
1. **Server-Side Logic:** Execute JavaScript business logic during template rendering
|
|
28
|
-
2. **Data Manipulation:** Transform, calculate, or process data before display
|
|
29
|
-
3. **API Access:** Call B2C Commerce Script API methods (dw.* namespace)
|
|
30
|
-
4. **Variable Assignment:** Create and set variables for use in templates
|
|
31
|
-
5. **Complex Operations:** Perform operations too complex for inline expressions
|
|
32
|
-
6. **Code Organization:** Group related logic in dedicated script blocks
|
|
33
|
-
|
|
34
|
-
## Top-Level Variables
|
|
35
|
-
|
|
36
|
-
The following variables are automatically available in all `<isscript>` blocks:
|
|
37
|
-
|
|
38
|
-
| Variable | Type | Description | Scope |
|
|
39
|
-
|----------|------|-------------|-------|
|
|
40
|
-
| `session` | `dw.system.Session` | Current internal B2C Commerce session | Session-wide |
|
|
41
|
-
| `request` | `dw.system.Request` | Current internal B2C Commerce request | Request-wide |
|
|
42
|
-
| `pdict` | `dw.system.PipelineDictionary` | Pipeline Dictionary (request parameters and data) | Request-wide |
|
|
43
|
-
| `out` | `dw.io.PrintWriter` | PrintWriter for direct HTML output | Page-wide |
|
|
44
|
-
|
|
45
|
-
**Example:**
|
|
46
|
-
```isml
|
|
47
|
-
<isscript>
|
|
48
|
-
// Access session
|
|
49
|
-
var customerId = session.customer.ID;
|
|
50
|
-
|
|
51
|
-
// Access request
|
|
52
|
-
var httpMethod = request.httpMethod;
|
|
53
|
-
|
|
54
|
-
// Access pipeline dictionary
|
|
55
|
-
var product = pdict.Product;
|
|
56
|
-
|
|
57
|
-
// Write directly to output (uncommon)
|
|
58
|
-
out.print("<p>Hello World</p>");
|
|
59
|
-
</isscript>
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
## Variable Scopes
|
|
63
|
-
|
|
64
|
-
Variables created in `<isscript>` blocks have different scopes based on how they're declared:
|
|
65
|
-
|
|
66
|
-
### Page Scope Variables
|
|
67
|
-
|
|
68
|
-
**Definition:** Variables set using `var`, `let`, or `const` in scriptlets, or well-known variables set by the template at runtime.
|
|
69
|
-
|
|
70
|
-
**Availability:** Available throughout template execution context and can be referenced from multiple scriptlets or expressions in the template or its local includes.
|
|
71
|
-
|
|
72
|
-
**Persistence:** Lasts for the duration of the current page/template execution.
|
|
73
|
-
|
|
74
|
-
```isml
|
|
75
|
-
<isscript>
|
|
76
|
-
var userName = pdict.customer.firstName; // Page scope
|
|
77
|
-
var orderTotal = pdict.basket.totalGrossPrice.value; // Page scope
|
|
78
|
-
</isscript>
|
|
79
|
-
|
|
80
|
-
<!-- Variables available in expressions -->
|
|
81
|
-
<h1>Welcome, ${userName}</h1>
|
|
82
|
-
<p>Total: ${orderTotal}</p>
|
|
83
|
-
|
|
84
|
-
<!-- Variables available in other script blocks -->
|
|
85
|
-
<isscript>
|
|
86
|
-
var greeting = "Hello, " + userName; // userName from previous block
|
|
87
|
-
</isscript>
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
### Tag Scope Variables
|
|
91
|
-
|
|
92
|
-
**Definition:** Variables defined within certain ISML tags (e.g., loop status variables).
|
|
93
|
-
|
|
94
|
-
**Availability:** Only available within the context of that specific tag.
|
|
95
|
-
|
|
96
|
-
**Example:**
|
|
97
|
-
```isml
|
|
98
|
-
<isloop items="${pdict.products}" var="product" status="loopStatus">
|
|
99
|
-
<!-- loopStatus is tag-scoped, only available inside this loop -->
|
|
100
|
-
<isif condition="${loopStatus.first}">
|
|
101
|
-
<p>First product!</p>
|
|
102
|
-
</isif>
|
|
103
|
-
</isloop>
|
|
104
|
-
<!-- loopStatus NOT available here -->
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
## Shared Execution Context
|
|
108
|
-
|
|
109
|
-
**Important:** Multiple `<isscript>` blocks in the same template share the same execution context. Variables declared in one block are available in subsequent blocks.
|
|
110
|
-
|
|
111
|
-
```isml
|
|
112
|
-
<!-- First script block -->
|
|
113
|
-
<isscript>
|
|
114
|
-
var user = pdict.User;
|
|
115
|
-
var firstName = user.firstName;
|
|
116
|
-
</isscript>
|
|
117
|
-
|
|
118
|
-
<!-- Some HTML content -->
|
|
119
|
-
<div class="header">
|
|
120
|
-
<h1>Welcome</h1>
|
|
121
|
-
</div>
|
|
122
|
-
|
|
123
|
-
<!-- Second script block - can access variables from first block -->
|
|
124
|
-
<isscript>
|
|
125
|
-
var fullName = firstName + " " + user.lastName; // firstName and user available
|
|
126
|
-
var welcomeMessage = "Hello, " + fullName;
|
|
127
|
-
</isscript>
|
|
128
|
-
|
|
129
|
-
<!-- Use variables in expressions -->
|
|
130
|
-
<p><isprint value="${welcomeMessage}"/></p>
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
## Common Use Cases
|
|
134
|
-
|
|
135
|
-
### Data Transformation and Calculation
|
|
136
|
-
|
|
137
|
-
```isml
|
|
138
|
-
<isscript>
|
|
139
|
-
var product = pdict.Product;
|
|
140
|
-
|
|
141
|
-
// Calculate discount percentage
|
|
142
|
-
var listPrice = product.price.list.value;
|
|
143
|
-
var salesPrice = product.price.sales.value;
|
|
144
|
-
var discount = listPrice - salesPrice;
|
|
145
|
-
var discountPercent = (discount / listPrice) * 100;
|
|
146
|
-
|
|
147
|
-
// Format for display
|
|
148
|
-
var discountDisplay = Math.round(discountPercent) + "% OFF";
|
|
149
|
-
</isscript>
|
|
150
|
-
|
|
151
|
-
<div class="product-price">
|
|
152
|
-
<span class="original">${listPrice}</span>
|
|
153
|
-
<span class="sale">${salesPrice}</span>
|
|
154
|
-
<span class="discount">${discountDisplay}</span>
|
|
155
|
-
</div>
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
### API Method Calls
|
|
159
|
-
|
|
160
|
-
```isml
|
|
161
|
-
<isscript>
|
|
162
|
-
var ProductMgr = require('dw/catalog/ProductMgr');
|
|
163
|
-
var URLUtils = require('dw/web/URLUtils');
|
|
164
|
-
var StringUtils = require('dw/util/StringUtils');
|
|
165
|
-
|
|
166
|
-
// Get product by ID
|
|
167
|
-
var productID = request.httpParameterMap.pid.stringValue;
|
|
168
|
-
var product = ProductMgr.getProduct(productID);
|
|
169
|
-
|
|
170
|
-
// Generate URLs
|
|
171
|
-
var productURL = URLUtils.url('Product-Show', 'pid', productID);
|
|
172
|
-
|
|
173
|
-
// String manipulation
|
|
174
|
-
var productName = StringUtils.trim(product.name);
|
|
175
|
-
</isscript>
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
### Complex Conditional Logic
|
|
179
|
-
|
|
180
|
-
```isml
|
|
181
|
-
<isscript>
|
|
182
|
-
var customer = session.customer;
|
|
183
|
-
var basket = pdict.basket;
|
|
184
|
-
|
|
185
|
-
// Determine eligibility for free shipping
|
|
186
|
-
var freeShippingThreshold = 50;
|
|
187
|
-
var basketTotal = basket ? basket.totalGrossPrice.value : 0;
|
|
188
|
-
var isFreeShipping = basketTotal >= freeShippingThreshold;
|
|
189
|
-
var amountToFreeShipping = isFreeShipping ? 0 : freeShippingThreshold - basketTotal;
|
|
190
|
-
|
|
191
|
-
// Determine customer tier
|
|
192
|
-
var customerTier = "bronze";
|
|
193
|
-
if (customer.authenticated) {
|
|
194
|
-
var orderHistory = customer.orderHistory;
|
|
195
|
-
var totalSpent = 0;
|
|
196
|
-
var orders = orderHistory.getOrders();
|
|
197
|
-
while (orders.hasNext()) {
|
|
198
|
-
var order = orders.next();
|
|
199
|
-
totalSpent += order.totalGrossPrice.value;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
if (totalSpent > 1000) {
|
|
203
|
-
customerTier = "gold";
|
|
204
|
-
} else if (totalSpent > 500) {
|
|
205
|
-
customerTier = "silver";
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
</isscript>
|
|
209
|
-
|
|
210
|
-
<div class="shipping-message">
|
|
211
|
-
<isif condition="${isFreeShipping}">
|
|
212
|
-
<p>You qualify for FREE shipping!</p>
|
|
213
|
-
<iselse>
|
|
214
|
-
<p>Add <isprint value="${amountToFreeShipping}" style="MONEY_LONG"/> for FREE shipping</p>
|
|
215
|
-
</isif>
|
|
216
|
-
</div>
|
|
217
|
-
|
|
218
|
-
<div class="customer-tier ${customerTier}">
|
|
219
|
-
<p>Your tier: ${customerTier.toUpperCase()}</p>
|
|
220
|
-
</div>
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
### Array and Collection Processing
|
|
224
|
-
|
|
225
|
-
```isml
|
|
226
|
-
<isscript>
|
|
227
|
-
var products = pdict.products;
|
|
228
|
-
|
|
229
|
-
// Filter products on sale
|
|
230
|
-
var saleProducts = [];
|
|
231
|
-
for (var i = 0; i < products.length; i++) {
|
|
232
|
-
var product = products[i];
|
|
233
|
-
if (product.price.sales.value < product.price.list.value) {
|
|
234
|
-
saleProducts.push(product);
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
// Sort by price (low to high)
|
|
239
|
-
saleProducts.sort(function(a, b) {
|
|
240
|
-
return a.price.sales.value - b.price.sales.value;
|
|
241
|
-
});
|
|
242
|
-
|
|
243
|
-
// Get top 5 cheapest sale items
|
|
244
|
-
var topDeals = saleProducts.slice(0, 5);
|
|
245
|
-
</isscript>
|
|
246
|
-
|
|
247
|
-
<div class="top-deals">
|
|
248
|
-
<h2>Top Deals</h2>
|
|
249
|
-
<isloop items="${topDeals}" var="deal">
|
|
250
|
-
<div class="deal-item">
|
|
251
|
-
<h3>${deal.name}</h3>
|
|
252
|
-
<p><isprint value="${deal.price.sales}" style="MONEY_LONG"/></p>
|
|
253
|
-
</div>
|
|
254
|
-
</isloop>
|
|
255
|
-
</div>
|
|
256
|
-
```
|
|
257
|
-
|
|
258
|
-
### Date and Time Manipulation
|
|
259
|
-
|
|
260
|
-
```isml
|
|
261
|
-
<isscript>
|
|
262
|
-
var Calendar = require('dw/util/Calendar');
|
|
263
|
-
var StringUtils = require('dw/util/StringUtils');
|
|
264
|
-
|
|
265
|
-
var now = new Calendar();
|
|
266
|
-
var currentDate = now.time;
|
|
267
|
-
|
|
268
|
-
// Calculate shipping estimate (3 business days)
|
|
269
|
-
var shippingEstimate = new Calendar(now);
|
|
270
|
-
shippingEstimate.add(Calendar.DAY_OF_MONTH, 3);
|
|
271
|
-
|
|
272
|
-
// Format dates
|
|
273
|
-
var orderDate = StringUtils.formatCalendar(now, "MMMM d, yyyy");
|
|
274
|
-
var deliveryDate = StringUtils.formatCalendar(shippingEstimate, "MMMM d, yyyy");
|
|
275
|
-
</isscript>
|
|
276
|
-
|
|
277
|
-
<div class="order-info">
|
|
278
|
-
<p>Order Date: ${orderDate}</p>
|
|
279
|
-
<p>Estimated Delivery: ${deliveryDate}</p>
|
|
280
|
-
</div>
|
|
281
|
-
```
|
|
282
|
-
|
|
283
|
-
### Session and Cookie Management
|
|
284
|
-
|
|
285
|
-
```isml
|
|
286
|
-
<isscript>
|
|
287
|
-
var Cookie = require('dw/web/Cookie');
|
|
288
|
-
|
|
289
|
-
// Read cookie
|
|
290
|
-
var cookies = request.httpCookies;
|
|
291
|
-
var viewedProducts = cookies['recentlyViewed'];
|
|
292
|
-
|
|
293
|
-
// Set session custom property
|
|
294
|
-
if (!session.custom.pageViews) {
|
|
295
|
-
session.custom.pageViews = 0;
|
|
296
|
-
}
|
|
297
|
-
session.custom.pageViews++;
|
|
298
|
-
|
|
299
|
-
var pageViewCount = session.custom.pageViews;
|
|
300
|
-
var isFirstVisit = pageViewCount === 1;
|
|
301
|
-
</isscript>
|
|
302
|
-
|
|
303
|
-
<isif condition="${isFirstVisit}">
|
|
304
|
-
<div class="welcome-modal">
|
|
305
|
-
<h2>Welcome to our store!</h2>
|
|
306
|
-
<p>First time here? Get 10% off your first order.</p>
|
|
307
|
-
</div>
|
|
308
|
-
</isif>
|
|
309
|
-
```
|
|
310
|
-
|
|
311
|
-
### Form Validation and Processing
|
|
312
|
-
|
|
313
|
-
```isml
|
|
314
|
-
<isscript>
|
|
315
|
-
var form = pdict.CurrentForms.registration;
|
|
316
|
-
var errors = [];
|
|
317
|
-
|
|
318
|
-
// Validate email
|
|
319
|
-
var email = form.email.value;
|
|
320
|
-
if (!email || email.indexOf('@') === -1) {
|
|
321
|
-
errors.push({
|
|
322
|
-
field: 'email',
|
|
323
|
-
message: 'Please enter a valid email address'
|
|
324
|
-
});
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
// Validate password
|
|
328
|
-
var password = form.password.value;
|
|
329
|
-
var confirmPassword = form.confirmPassword.value;
|
|
330
|
-
if (password !== confirmPassword) {
|
|
331
|
-
errors.push({
|
|
332
|
-
field: 'password',
|
|
333
|
-
message: 'Passwords do not match'
|
|
334
|
-
});
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
var hasErrors = errors.length > 0;
|
|
338
|
-
</isscript>
|
|
339
|
-
|
|
340
|
-
<isif condition="${hasErrors}">
|
|
341
|
-
<div class="error-messages">
|
|
342
|
-
<isloop items="${errors}" var="error">
|
|
343
|
-
<p class="error">${error.message}</p>
|
|
344
|
-
</isloop>
|
|
345
|
-
</div>
|
|
346
|
-
</isif>
|
|
347
|
-
```
|
|
348
|
-
|
|
349
|
-
### Custom Object Access
|
|
350
|
-
|
|
351
|
-
```isml
|
|
352
|
-
<isscript>
|
|
353
|
-
var CustomObjectMgr = require('dw/object/CustomObjectMgr');
|
|
354
|
-
|
|
355
|
-
// Retrieve custom object
|
|
356
|
-
var storeConfig = CustomObjectMgr.getCustomObject('StoreConfig', 'main');
|
|
357
|
-
|
|
358
|
-
if (storeConfig) {
|
|
359
|
-
var storeName = storeConfig.custom.storeName;
|
|
360
|
-
var storeHours = storeConfig.custom.hours;
|
|
361
|
-
var storePhone = storeConfig.custom.phone;
|
|
362
|
-
} else {
|
|
363
|
-
var storeName = "Our Store";
|
|
364
|
-
var storeHours = "9 AM - 5 PM";
|
|
365
|
-
var storePhone = "1-800-555-0123";
|
|
366
|
-
}
|
|
367
|
-
</isscript>
|
|
368
|
-
|
|
369
|
-
<div class="store-info">
|
|
370
|
-
<h3>${storeName}</h3>
|
|
371
|
-
<p>Hours: ${storeHours}</p>
|
|
372
|
-
<p>Phone: ${storePhone}</p>
|
|
373
|
-
</div>
|
|
374
|
-
```
|
|
375
|
-
|
|
376
|
-
### SFRA-Style Module Imports
|
|
377
|
-
|
|
378
|
-
```isml
|
|
379
|
-
<isscript>
|
|
380
|
-
// Import modules
|
|
381
|
-
var ProductFactory = require('*/cartridge/scripts/factories/product');
|
|
382
|
-
var collections = require('*/cartridge/scripts/util/collections');
|
|
383
|
-
var URLUtils = require('dw/web/URLUtils');
|
|
384
|
-
|
|
385
|
-
// Use imported modules
|
|
386
|
-
var productDetails = ProductFactory.get(pdict.product);
|
|
387
|
-
|
|
388
|
-
var productImages = collections.map(productDetails.images.large, function(image) {
|
|
389
|
-
return {
|
|
390
|
-
url: image.url,
|
|
391
|
-
alt: image.alt,
|
|
392
|
-
title: image.title
|
|
393
|
-
};
|
|
394
|
-
});
|
|
395
|
-
|
|
396
|
-
var addToCartUrl = URLUtils.url('Cart-AddProduct');
|
|
397
|
-
</isscript>
|
|
398
|
-
```
|
|
399
|
-
|
|
400
|
-
### JSON Data Preparation
|
|
401
|
-
|
|
402
|
-
```isml
|
|
403
|
-
<isscript>
|
|
404
|
-
var product = pdict.Product;
|
|
405
|
-
|
|
406
|
-
// Prepare JSON data for client-side JavaScript
|
|
407
|
-
var productData = {
|
|
408
|
-
id: product.ID,
|
|
409
|
-
name: product.name,
|
|
410
|
-
price: product.price.sales.value,
|
|
411
|
-
currency: product.price.sales.currencyCode,
|
|
412
|
-
available: product.available,
|
|
413
|
-
inStock: product.availabilityModel.inStock,
|
|
414
|
-
images: []
|
|
415
|
-
};
|
|
416
|
-
|
|
417
|
-
// Build images array
|
|
418
|
-
var images = product.getImages('large');
|
|
419
|
-
for (var i = 0; i < images.length; i++) {
|
|
420
|
-
productData.images.push({
|
|
421
|
-
url: images[i].getURL().toString(),
|
|
422
|
-
alt: images[i].getAlt()
|
|
423
|
-
});
|
|
424
|
-
}
|
|
425
|
-
|
|
426
|
-
var productJSON = JSON.stringify(productData);
|
|
427
|
-
</isscript>
|
|
428
|
-
|
|
429
|
-
<script>
|
|
430
|
-
window.productData = ${productJSON};
|
|
431
|
-
</script>
|
|
432
|
-
```
|
|
433
|
-
|
|
434
|
-
## Best Practices
|
|
435
|
-
|
|
436
|
-
### 1. Keep Scripts Focused and Small
|
|
437
|
-
|
|
438
|
-
Break large scripts into smaller, focused blocks:
|
|
439
|
-
|
|
440
|
-
```isml
|
|
441
|
-
<!-- Good: Small, focused script blocks -->
|
|
442
|
-
<isscript>
|
|
443
|
-
var product = pdict.Product;
|
|
444
|
-
var price = product.price.sales.value;
|
|
445
|
-
</isscript>
|
|
446
|
-
|
|
447
|
-
<!-- Display product info -->
|
|
448
|
-
<div class="product">${product.name}</div>
|
|
449
|
-
|
|
450
|
-
<isscript>
|
|
451
|
-
var discount = calculateDiscount(price);
|
|
452
|
-
</isscript>
|
|
453
|
-
|
|
454
|
-
<!-- Avoid: One large script block with everything -->
|
|
455
|
-
<isscript>
|
|
456
|
-
// 100 lines of mixed logic
|
|
457
|
-
</isscript>
|
|
458
|
-
```
|
|
459
|
-
|
|
460
|
-
### 2. Use require() for API Access
|
|
461
|
-
|
|
462
|
-
Always use `require()` to import B2C Commerce API classes:
|
|
463
|
-
|
|
464
|
-
```isml
|
|
465
|
-
<!-- Good: Explicit require statements -->
|
|
466
|
-
<isscript>
|
|
467
|
-
var ProductMgr = require('dw/catalog/ProductMgr');
|
|
468
|
-
var URLUtils = require('dw/web/URLUtils');
|
|
469
|
-
|
|
470
|
-
var product = ProductMgr.getProduct(productID);
|
|
471
|
-
</isscript>
|
|
472
|
-
|
|
473
|
-
<!-- Avoid: Assuming classes are globally available -->
|
|
474
|
-
<isscript>
|
|
475
|
-
var product = ProductMgr.getProduct(productID); // May not work
|
|
476
|
-
</isscript>
|
|
477
|
-
```
|
|
478
|
-
|
|
479
|
-
### 3. Minimize Business Logic in Templates
|
|
480
|
-
|
|
481
|
-
Move complex business logic to controllers or scripts:
|
|
482
|
-
|
|
483
|
-
```isml
|
|
484
|
-
<!-- Good: Simple data access in template -->
|
|
485
|
-
<isscript>
|
|
486
|
-
var productHelper = require('*/cartridge/scripts/helpers/productHelper');
|
|
487
|
-
var productData = productHelper.getProductData(pdict.Product);
|
|
488
|
-
</isscript>
|
|
489
|
-
|
|
490
|
-
<!-- Avoid: Complex business logic in template -->
|
|
491
|
-
<isscript>
|
|
492
|
-
// 50 lines of complex pricing calculations
|
|
493
|
-
// Discount rules
|
|
494
|
-
// Inventory checks
|
|
495
|
-
// etc.
|
|
496
|
-
</isscript>
|
|
497
|
-
```
|
|
498
|
-
|
|
499
|
-
### 4. Use Descriptive Variable Names
|
|
500
|
-
|
|
501
|
-
Choose clear, meaningful variable names:
|
|
502
|
-
|
|
503
|
-
```isml
|
|
504
|
-
<!-- Good: Descriptive names -->
|
|
505
|
-
<isscript>
|
|
506
|
-
var currentProduct = pdict.Product;
|
|
507
|
-
var discountPercentage = calculateDiscount(currentProduct);
|
|
508
|
-
var formattedPrice = formatCurrency(currentProduct.price);
|
|
509
|
-
</isscript>
|
|
510
|
-
|
|
511
|
-
<!-- Avoid: Unclear names -->
|
|
512
|
-
<isscript>
|
|
513
|
-
var p = pdict.Product;
|
|
514
|
-
var d = calc(p);
|
|
515
|
-
var f = fmt(p.price);
|
|
516
|
-
</isscript>
|
|
517
|
-
```
|
|
518
|
-
|
|
519
|
-
### 5. Handle Null and Undefined Safely
|
|
520
|
-
|
|
521
|
-
Always check for null/undefined before accessing properties:
|
|
522
|
-
|
|
523
|
-
```isml
|
|
524
|
-
<isscript>
|
|
525
|
-
var product = pdict.Product;
|
|
526
|
-
var productName = product ? product.name : "Product Unavailable";
|
|
527
|
-
|
|
528
|
-
var basket = pdict.basket;
|
|
529
|
-
var itemCount = basket && basket.productLineItems ? basket.productLineItems.size() : 0;
|
|
530
|
-
|
|
531
|
-
// Or use optional chaining if available
|
|
532
|
-
var manufacturer = product?.manufacturer?.name || "Unknown";
|
|
533
|
-
</isscript>
|
|
534
|
-
```
|
|
535
|
-
|
|
536
|
-
### 6. Avoid Direct HTML Output with out.print()
|
|
537
|
-
|
|
538
|
-
Use ISML elements instead of `out.print()`:
|
|
539
|
-
|
|
540
|
-
```isml
|
|
541
|
-
<!-- Good: Use ISML elements -->
|
|
542
|
-
<isscript>
|
|
543
|
-
var message = "Welcome, " + customer.firstName;
|
|
544
|
-
</isscript>
|
|
545
|
-
<p>${message}</p>
|
|
546
|
-
|
|
547
|
-
<!-- Avoid: Direct HTML output -->
|
|
548
|
-
<isscript>
|
|
549
|
-
out.print("<p>Welcome, " + customer.firstName + "</p>");
|
|
550
|
-
</isscript>
|
|
551
|
-
```
|
|
552
|
-
|
|
553
|
-
### 7. Comment Complex Logic
|
|
554
|
-
|
|
555
|
-
Add comments to explain non-obvious logic:
|
|
556
|
-
|
|
557
|
-
```isml
|
|
558
|
-
<isscript>
|
|
559
|
-
// Calculate loyalty discount based on customer tier and purchase history
|
|
560
|
-
var loyaltyDiscount = 0;
|
|
561
|
-
if (customer.authenticated) {
|
|
562
|
-
var tier = customer.custom.loyaltyTier;
|
|
563
|
-
var purchaseCount = customer.orderHistory.orderCount;
|
|
564
|
-
|
|
565
|
-
// Gold tier: 15% discount, Silver: 10%, Bronze: 5%
|
|
566
|
-
if (tier === 'gold' && purchaseCount > 10) {
|
|
567
|
-
loyaltyDiscount = 0.15;
|
|
568
|
-
} else if (tier === 'silver' && purchaseCount > 5) {
|
|
569
|
-
loyaltyDiscount = 0.10;
|
|
570
|
-
} else {
|
|
571
|
-
loyaltyDiscount = 0.05;
|
|
572
|
-
}
|
|
573
|
-
}
|
|
574
|
-
</isscript>
|
|
575
|
-
```
|
|
576
|
-
|
|
577
|
-
### 8. Use Modern JavaScript Features
|
|
578
|
-
|
|
579
|
-
Leverage ES6+ features when appropriate:
|
|
580
|
-
|
|
581
|
-
```isml
|
|
582
|
-
<isscript>
|
|
583
|
-
// Use const/let instead of var when appropriate
|
|
584
|
-
const TAX_RATE = 0.08;
|
|
585
|
-
let totalWithTax = subtotal * (1 + TAX_RATE);
|
|
586
|
-
|
|
587
|
-
// Use arrow functions
|
|
588
|
-
const activeProducts = products.filter(p => p.online && p.available);
|
|
589
|
-
|
|
590
|
-
// Use template literals
|
|
591
|
-
const greeting = `Welcome, ${customer.firstName} ${customer.lastName}!`;
|
|
592
|
-
|
|
593
|
-
// Use destructuring
|
|
594
|
-
const { firstName, lastName, email } = customer.profile;
|
|
595
|
-
</isscript>
|
|
596
|
-
```
|
|
597
|
-
|
|
598
|
-
## Integration with Inline Expressions
|
|
599
|
-
|
|
600
|
-
Variables created in `<isscript>` blocks are available in inline expressions `${}`:
|
|
601
|
-
|
|
602
|
-
```isml
|
|
603
|
-
<isscript>
|
|
604
|
-
var userName = pdict.customer.firstName + " " + pdict.customer.lastName;
|
|
605
|
-
var currentYear = new Date().getFullYear();
|
|
606
|
-
var copyrightText = "© " + currentYear + " Our Company";
|
|
607
|
-
</isscript>
|
|
608
|
-
|
|
609
|
-
<!-- Use variables in inline expressions -->
|
|
610
|
-
<h1>Welcome, ${userName}</h1>
|
|
611
|
-
<footer>
|
|
612
|
-
<p>${copyrightText}</p>
|
|
613
|
-
</footer>
|
|
614
|
-
|
|
615
|
-
<!-- Use in attributes -->
|
|
616
|
-
<div class="user-${userName.toLowerCase().replace(' ', '-')}">
|
|
617
|
-
Content
|
|
618
|
-
</div>
|
|
619
|
-
|
|
620
|
-
<!-- Use in isprint -->
|
|
621
|
-
<isprint value="${userName}" encoding="on"/>
|
|
622
|
-
```
|
|
623
|
-
|
|
624
|
-
## Script Expression Support
|
|
625
|
-
|
|
626
|
-
Script expressions using `${}` syntax are supported in various contexts:
|
|
627
|
-
|
|
628
|
-
### In HTML Content
|
|
629
|
-
|
|
630
|
-
```isml
|
|
631
|
-
<p>Hello, ${customer.firstName}!</p>
|
|
632
|
-
<h2>${product.name}</h2>
|
|
633
|
-
```
|
|
634
|
-
|
|
635
|
-
### In Tag Attributes
|
|
636
|
-
|
|
637
|
-
```isml
|
|
638
|
-
<div class="${pdict.cssClass}">
|
|
639
|
-
<img src="${product.imageURL}" alt="${product.name}">
|
|
640
|
-
<a href="${URLUtils.url('Product-Show', 'pid', product.ID)}">
|
|
641
|
-
```
|
|
642
|
-
|
|
643
|
-
### In ISML Tag Attributes
|
|
644
|
-
|
|
645
|
-
```isml
|
|
646
|
-
<isif condition="${product.available}">
|
|
647
|
-
<isprint value="${product.price}" style="MONEY_LONG"/>
|
|
648
|
-
<isloop items="${pdict.products}" var="product">
|
|
649
|
-
```
|
|
650
|
-
|
|
651
|
-
## Performance Considerations
|
|
652
|
-
|
|
653
|
-
### 1. Minimize Script Execution Time
|
|
654
|
-
|
|
655
|
-
Keep scripts efficient to avoid slow page rendering:
|
|
656
|
-
|
|
657
|
-
```isml
|
|
658
|
-
<!-- Good: Efficient operations -->
|
|
659
|
-
<isscript>
|
|
660
|
-
var productCount = products.length; // Fast
|
|
661
|
-
var firstProduct = products[0]; // Fast
|
|
662
|
-
</isscript>
|
|
663
|
-
|
|
664
|
-
<!-- Avoid: Expensive operations in templates -->
|
|
665
|
-
<isscript>
|
|
666
|
-
// Expensive database queries
|
|
667
|
-
// Complex calculations
|
|
668
|
-
// Large loops processing thousands of items
|
|
669
|
-
</isscript>
|
|
670
|
-
```
|
|
671
|
-
|
|
672
|
-
### 2. Cache Expensive Calculations
|
|
673
|
-
|
|
674
|
-
Store results of expensive calculations:
|
|
675
|
-
|
|
676
|
-
```isml
|
|
677
|
-
<isscript>
|
|
678
|
-
// Cache result in session for reuse
|
|
679
|
-
if (!session.custom.cachedData) {
|
|
680
|
-
session.custom.cachedData = expensiveCalculation();
|
|
681
|
-
}
|
|
682
|
-
var data = session.custom.cachedData;
|
|
683
|
-
</isscript>
|
|
684
|
-
```
|
|
685
|
-
|
|
686
|
-
### 3. Avoid Nested Loops
|
|
687
|
-
|
|
688
|
-
Minimize nested iterations:
|
|
689
|
-
|
|
690
|
-
```isml
|
|
691
|
-
<!-- Less efficient: Nested loops -->
|
|
692
|
-
<isscript>
|
|
693
|
-
for (var i = 0; i < products.length; i++) {
|
|
694
|
-
for (var j = 0; j < categories.length; j++) {
|
|
695
|
-
// O(n²) complexity
|
|
696
|
-
}
|
|
697
|
-
}
|
|
698
|
-
</isscript>
|
|
699
|
-
|
|
700
|
-
<!-- Better: Pre-process data -->
|
|
701
|
-
<isscript>
|
|
702
|
-
var categoryMap = {};
|
|
703
|
-
categories.forEach(function(cat) {
|
|
704
|
-
categoryMap[cat.ID] = cat;
|
|
705
|
-
});
|
|
706
|
-
|
|
707
|
-
products.forEach(function(prod) {
|
|
708
|
-
var category = categoryMap[prod.categoryID]; // O(1) lookup
|
|
709
|
-
});
|
|
710
|
-
</isscript>
|
|
711
|
-
```
|
|
712
|
-
|
|
713
|
-
## Security Considerations
|
|
714
|
-
|
|
715
|
-
### 1. Sanitize User Input
|
|
716
|
-
|
|
717
|
-
Never trust user input in scripts:
|
|
718
|
-
|
|
719
|
-
```isml
|
|
720
|
-
<isscript>
|
|
721
|
-
var searchQuery = request.httpParameterMap.q.stringValue;
|
|
722
|
-
|
|
723
|
-
// Sanitize before use
|
|
724
|
-
var StringUtils = require('dw/util/StringUtils');
|
|
725
|
-
var safeQuery = StringUtils.trim(searchQuery || '');
|
|
726
|
-
|
|
727
|
-
// Validate
|
|
728
|
-
if (safeQuery.length > 100) {
|
|
729
|
-
safeQuery = safeQuery.substring(0, 100);
|
|
730
|
-
}
|
|
731
|
-
</isscript>
|
|
732
|
-
```
|
|
733
|
-
|
|
734
|
-
### 2. Avoid Exposing Sensitive Data
|
|
735
|
-
|
|
736
|
-
Don't expose sensitive information to client-side:
|
|
737
|
-
|
|
738
|
-
```isml
|
|
739
|
-
<!-- Bad: Exposing sensitive data -->
|
|
740
|
-
<isscript>
|
|
741
|
-
var customerData = {
|
|
742
|
-
email: customer.email,
|
|
743
|
-
password: customer.password, // NEVER DO THIS
|
|
744
|
-
creditCard: customer.creditCard // NEVER DO THIS
|
|
745
|
-
};
|
|
746
|
-
</isscript>
|
|
747
|
-
<script>
|
|
748
|
-
window.customer = ${JSON.stringify(customerData)};
|
|
749
|
-
</script>
|
|
750
|
-
|
|
751
|
-
<!-- Good: Only expose safe data -->
|
|
752
|
-
<isscript>
|
|
753
|
-
var customerData = {
|
|
754
|
-
firstName: customer.firstName,
|
|
755
|
-
loyaltyPoints: customer.loyaltyPoints
|
|
756
|
-
};
|
|
757
|
-
</isscript>
|
|
758
|
-
```
|
|
759
|
-
|
|
760
|
-
### 3. Use Proper Encoding
|
|
761
|
-
|
|
762
|
-
Encode output to prevent XSS:
|
|
763
|
-
|
|
764
|
-
```isml
|
|
765
|
-
<isscript>
|
|
766
|
-
var userComment = request.httpParameterMap.comment.stringValue;
|
|
767
|
-
</isscript>
|
|
768
|
-
|
|
769
|
-
<!-- Good: Use encoding -->
|
|
770
|
-
<p><isprint value="${userComment}" encoding="on"/></p>
|
|
771
|
-
|
|
772
|
-
<!-- Bad: Direct output without encoding -->
|
|
773
|
-
<p>${userComment}</p> <!-- Potential XSS -->
|
|
774
|
-
```
|
|
775
|
-
|
|
776
|
-
## Common Errors and Troubleshooting
|
|
777
|
-
|
|
778
|
-
### Script Syntax Errors
|
|
779
|
-
|
|
780
|
-
**Symptom:** Template fails to render with JavaScript error.
|
|
781
|
-
|
|
782
|
-
**Solution:** Check JavaScript syntax carefully:
|
|
783
|
-
|
|
784
|
-
```isml
|
|
785
|
-
<!-- Bad: Syntax error -->
|
|
786
|
-
<isscript>
|
|
787
|
-
var product = pdict.Product
|
|
788
|
-
var price = product.price // Missing semicolon
|
|
789
|
-
</isscript>
|
|
790
|
-
|
|
791
|
-
<!-- Good: Correct syntax -->
|
|
792
|
-
<isscript>
|
|
793
|
-
var product = pdict.Product;
|
|
794
|
-
var price = product.price;
|
|
795
|
-
</isscript>
|
|
796
|
-
```
|
|
797
|
-
|
|
798
|
-
### Variable Not Defined
|
|
799
|
-
|
|
800
|
-
**Symptom:** ReferenceError - variable is not defined.
|
|
801
|
-
|
|
802
|
-
**Solution:** Ensure variable is declared before use:
|
|
803
|
-
|
|
804
|
-
```isml
|
|
805
|
-
<!-- Bad: Using undeclared variable -->
|
|
806
|
-
<isscript>
|
|
807
|
-
var fullName = firstName + " " + lastName; // firstName not defined
|
|
808
|
-
</isscript>
|
|
809
|
-
|
|
810
|
-
<!-- Good: Declare variables -->
|
|
811
|
-
<isscript>
|
|
812
|
-
var firstName = pdict.customer.firstName;
|
|
813
|
-
var lastName = pdict.customer.lastName;
|
|
814
|
-
var fullName = firstName + " " + lastName;
|
|
815
|
-
</isscript>
|
|
816
|
-
```
|
|
817
|
-
|
|
818
|
-
### Null Pointer Errors
|
|
819
|
-
|
|
820
|
-
**Symptom:** TypeError - cannot read property of null/undefined.
|
|
821
|
-
|
|
822
|
-
**Solution:** Check for null/undefined:
|
|
823
|
-
|
|
824
|
-
```isml
|
|
825
|
-
<!-- Bad: No null check -->
|
|
826
|
-
<isscript>
|
|
827
|
-
var productName = pdict.Product.name; // Error if Product is null
|
|
828
|
-
</isscript>
|
|
829
|
-
|
|
830
|
-
<!-- Good: Null check -->
|
|
831
|
-
<isscript>
|
|
832
|
-
var product = pdict.Product;
|
|
833
|
-
var productName = product ? product.name : "Unknown Product";
|
|
834
|
-
</isscript>
|
|
835
|
-
```
|
|
836
|
-
|
|
837
|
-
## Related Elements
|
|
838
|
-
|
|
839
|
-
- **`<isset>`** - Set variables (alternative to isscript for simple assignments)
|
|
840
|
-
- **`<isprint>`** - Output script variables with formatting
|
|
841
|
-
- **`<isif>`** - Use script variables in conditions
|
|
842
|
-
- **`<isloop>`** - Iterate over collections created in scripts
|
|
843
|
-
|
|
844
|
-
## Related APIs
|
|
845
|
-
|
|
846
|
-
- **`dw.*` packages** - All B2C Commerce Script API classes
|
|
847
|
-
- **`require()`** - Module import function
|
|
848
|
-
- **`session`** - Session object
|
|
849
|
-
- **`request`** - Request object
|
|
850
|
-
- **`pdict`** - Pipeline Dictionary
|
|
851
|
-
|
|
852
|
-
## See Also
|
|
853
|
-
|
|
854
|
-
- [B2C Commerce Script API Documentation](../dw_system/)
|
|
855
|
-
- [ISML Expressions](./expressions.md)
|
|
856
|
-
- [isset Element](./isset.md)
|
|
857
|
-
- [SFRA Client-side JS Skill](../../ai-instructions/skills/sfcc-sfra-client-side-js/SKILL.md)
|
|
858
|
-
- [Security Skill](../../ai-instructions/skills/sfcc-security/SKILL.md)
|
|
859
|
-
- [Performance Skill](../../ai-instructions/skills/sfcc-performance/SKILL.md)
|