Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
commerce-sdk
Advanced tools
The Salesforce Commerce SDK allows easy interaction with the Salesforce B2C Commerce platform APIs on the Node.js runtime.
Visit the Commerce Cloud Developer Center to learn more about Salesforce Commerce. The developer center has API documentation, getting started guides, community forums, and more.
Download and install Node.js and npm here.
Note: Only Node.js version 10 and 12 LTS are supported. Other versions can cause unexpected results. To use a different version of Node.js for other projects, you can manage multiple versions of Node.js with nvm.
Use npm to install the Commerce SDK.
npm install commerce-sdk
To use an SDK client, instantiate an object of that client and configure these parameters.
Note: These are optional parameters.
Parameter | Description |
---|---|
baseUri | URL of the service with which the SDK interacts. If the baseUri isn't provided, the default baseUri for the relevant RAML file is used. |
clientId | ID of the client account created with Salesforce Commerce. |
organizationId | The unique identifier for your Salesforce identity. |
shortCode | Region specific merchant ID. |
siteId | A unique site ID (for example, RefArch or SiteGenesis). |
/**
* Sample TypeScript code that shows how Commerce SDK can access Salesforce Commerce
* APIs.
*/
// Import the SDK in TypeScript
import * as CommerceSdk from "commerce-sdk";
// For Javascript, use:
// import as CommerceSdk from "commerce-sdk";
const { ClientConfig, helpers, Search } = CommerceSdk;
// Older Node.js versions can instead use:
// const { ClientConfig, helpers, Search } = require("commerce-sdk");
// Create a configuration to use when creating API clients
// In TypeScript, let config = new ClientConfig();
const config = {
parameters: {
clientId: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
organizationId: "f_ecom_bblx_stg",
shortCode: "0dnz6oep",
siteId: "RefArch"
}
}
// Get a JWT to use with Shopper API clients, a guest token in this case
helpers.getShopperToken(config, { type: "guest" }).then(async (token) => {
try {
// Add the token to the client configuration
config.headers.authorization = token.getBearerHeader();
// Create a new ShopperSearch API client
const searchClient = new Search.ShopperSearch(config);
// Search for dresses
const searchResults = await searchClient.productSearch({
parameters: {
q: "dress"
}
});
if (searchResults.total) {
const firstResult = searchResults.hits[0];
console.log(`${firstResult.productId} ${firstResult.productName}`);
} else {
console.log("No results for search");
}
return searchResults;
} catch (e) {
console.error(e);
console.error(await e.response.text());
}
}).catch(async (e) => {
console.error(e);
console.error(await e.response.text());
});
When using an IDE such as VSCode, the autocomplete feature lets you view the available method and class definitions, including parameters.
To view the details of a method or a variable, hover over methods and variables.
Autocomplete will also show the available properties of the data returned by SDK methods.
The SDK currently supports two types of caches - In-memory and Redis. Both the implementations respect standard cache headers. If you would like to use another type of cache, you can write your own implementation of the CacheManager
In-memory caching of responses is enabled by default. To disable caching for a client, set cacheManager to 'null'.
const config = {
cacheManager: null,
parameters: {
clientId: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
organizationId: "f_ecom_bblx_stg",
shortCode: "0dnz6oep",
siteId: "RefArch"
}
}
To use a Redis cache, instantiate a CacheManagerRedis object with your Redis URL and put it in your client config object.
import { CacheManagerRedis } from "@commerce-apps/core"
const cacheManager = new CacheManagerRedis({ connection: "redis://localhost:6379" });
const config = {
cacheManager: cacheManager,
parameters: {
clientId: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
organizationId: "f_ecom_bblx_stg",
shortCode: "0dnz6oep",
siteId: "RefArch"
}
}
When the specified amount of memory is reached, Redis can be configured to apply an eviction policy. Refer to this article to setup Redis as an LRU cache and to learn more about supported eviction policies.
Default log level of the SDK is WARN (warning). SDK uses loglevel npm package. All the log levels supported by loglevel package are supported in SDK.
To change the loglevel, set the desired level on the SDK logger.
import { sdkLogger } from "commerce-sdk";
sdkLogger.setLevel(sdkLogger.levels.INFO);
INFO level logging will enable brief request and response logging. DEBUG level logging will enable logging of
Note: Debug level logging may expose sensitive data in the logs
The Commerce SDK is licensed under BSD-3-Clause license. See the license for details.
v1.4.1-beta.0
Customer API
BREAKING: Removed endpoint method changes
Removed:
Product API
BREAKING: Endpoint method name changes
Changed:
| Existing Method Name | New Method Name | | ------------- |-------------| | deleteVariationGroupForMaster | unassignVariationGroupFromMasterProduct | | updateVariationGroupInMasterProduct | updateVariationGroupForMasterProduct | | assignVariationGroupForMasterProduct | assignVariationGroupToMasterProduct | | deleteVariationForMaster | unassignVariationFromMasterProduct | | updateVariationsInMasterProduct | updateVariationForMasterProduct | | createVariationForMasterProduct | assignVariationForMasterProduct |
Shopper Customer API
BREAKING: Removed endpoint method changes
Removed:
getCustomerAddresses
getCustomerPaymentInstruments
getCustomerProductListItems
Changed:
| Existing Method Name | New Method Name | | ------------- |-------------| | postResetPasswordToken | getResetPasswordToken |
FAQs
Salesforce Commerce Cloud SDK
The npm package commerce-sdk receives a total of 6,418 weekly downloads. As such, commerce-sdk popularity was classified as popular.
We found that commerce-sdk demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.