UNPKG

sfcc-dts

Version:

> High quality Salesforce Commerce Cloud type definitions. A dw-api-types "done right"

73 lines (43 loc) 3.38 kB
# Salesforce Commerce Cloud type definitions > High quality Salesforce Commerce Cloud type definitions. A dw-api-types "done right" ## Features `sfcc-dts` provides full typeScript definitions for Salesforce Commerce Cloud apis, plus a typescript plugin for resolving requires using "*" cartridge path and a fancy wizard for setting up your project. The aim of the project is to provide *fully working typescript compilation of commerce cloud server side javascript*. > Wait, why is this better than the official dw-api from salesforce? Well, tons of reasons: * dw-api definitions are largerly incomplete * dw-api definitions are often wrongly defined in terms of static properties/methods * dw-api are not documented. sfcc-dts has *full documentation for classes, methods, properties, parameters and return types* * dw-api is not actively updated when new API gets released. Instead, sfcc-dts definitions are *automatically generated by parsing the public salesforce documentation*, so they can easily be kept up to date ## Installation Using the wizard: ```bash $ npm i -g sfcc-dts ``` From your sfcc project root directory type: ```bash $ sfcc-dts-setup ``` The wizard will guide you for adding required dependencies to `package.json`, setup a working `tsconfig.json` and configure a customizable dw types entry point for your project. ## VSCode setup Vscode will fully benefit from the typescript configuration from `tsconfig.json` only when is configured for using the workspace version of typescript. For enabling it press [cmd]+[shift]+P -> "TypeScript: Select TypeScript version" and select "Use workspace version" with the version pointing to the node_modules/typescript dir in the workspace. <img width="641" src="https://raw.githubusercontent.com/openmindlab/sfcc-dts/HEAD/media/vscode-select.png" alt="vscode selection of typescript version"> If the "TypeScript: Select TypeScript version" option or the expected directory dooesn't show up, just open the node_modules/typescript/bin/tsc file inside vscode and retry, this is usually enough to make vscode detect the available typescript installation. ## Type definitions for custom attributes sfcc-dts can generate definitions for project-specific system object extensions by parsing a `system-objecttype-extensions.xml` file. Custom attribute definitions are automatically generated by the `sfcc-dts-setup` wizard, assuming a `system-objecttype-extensions.xml` file is available (the default location is `sites/site_template/meta/system-objecttype-extensions.xml` but the wizard will allow you to choose a different path) and saved to `@types/dw/attrs.d.ts`. Definitions can be updated by running `sfcc-dts-updateattrs` ## Usage If everything goes well you will see autocomplete and validation working in your existing javascript files. Typescript will fully detect: * requires using `dw/system/Site` syntax * cartridge requires using `*/cartridge/somefile` or `~/cartridge/somefile` * fully qualified class names such as `dw.system.Site` * dw globals such as `request` <img width="730" src="https://raw.githubusercontent.com/openmindlab/sfcc-dts/HEAD/media/vscode-autocomplete.png" alt="vscode example ofworking setup"> ## Todo Still in the checklist: * Find a proper way to define module.superModule augmenting the standard NodeModule definition ## License Released under the MIT license.