npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@gofynd/fdk-client-javascript

v1.4.15-beta.2

Published

![GitHub package.json version](https://img.shields.io/github/package-json/v/gofynd/fdk-client-javascript?style=plastic) ![GitHub Workflow Status](https://img.shields.io/github/workflow/status/gofynd/fdk-client-javascript/Node.js%20CI?style=plastic) ![GitH

Downloads

4,922

Readme

FDK Javascript

GitHub package.json version GitHub Workflow Status GitHub Coverage Status

FDK client for Javascript

Getting Started

Get started with the Javascript Development SDK for Fynd Platform

Usage

Node

npm install @gofynd/fdk-client-javascript

Using this method, you can require fdk-client-javascript like so:

const {
  ApplicationConfig,
  ApplicationClient,
} = require("fdk-client-javascript");

Browser

you can load fdk-client-javascript's application browser bundle from CDN; ApplicationConfig, ApplicationClient and ApplicationModels will be attached to browser's window object.

<script src="https://cdn.jsdelivr.net/gh/gofynd/fdk-client-javascript@<version>/dist/application.js"></script>

Install Specific version

<script src="https://cdn.jsdelivr.net/gh/gofynd/[email protected]/dist/application.js"></script>
const { ApplicationConfig, ApplicationClient } = window;

Logging

For logging support user can pass logLevel in ApplicationConfig or PlatformConfig while declaration.

Available logging levels: TRACE, DEBUG, INFO, WARN, ERROR.

Default log level: ERROR

Sample Usage - ApplicationClient

const config = new ApplicationConfig({
  applicationID: "YOUR_APPLICATION_ID",
  applicationToken: "YOUR_APPLICATION_TOKEN",
  locationDetails: "LOCATION_DETAILS_OBJECT"
});

const applicationClient = new ApplicationClient(config);

applicationClient.setLocationDetails({ 
  pincode:"385001",
  country: "India",
  city:  "Ahmedabad",
  location: {longitude: "72.585022", latitude: "23.033863"}
  });


async function getProductDetails() {
  try {
    const product = await applicationClient.catalog.getProductDetailBySlug({
        slug: "product-slug"
      });
    console.log(product.name);
  } catch (err) {
    console.log(err);
  }
}

getProductDetails();

Sample Usage - PlatformClient

const { PlatformConfig, PlatformClient } = require("fdk-client-javascript");

let platformConfig = new PlatformConfig({
  companyId: "COMPANY_ID",
  apiKey: "API_KEY", 
  apiSecret: "API_SECRET", 
  domain: "DOMAIN",
  useAutoRenewTimer: true // Setting `true` will use timer based logic to refresh the access token. With `false` will issue refresh token just before any api call when it is expired. 
});

async function getData() {
  try {
    // TODO: get token using OAuth
    platformConfig.oauthClient.setToken(token.access_token);
    const client = new PlatformClient(platformConfig);

    // API's without application_id
    const tickets = await client.lead.getTickets();
    console.log("tickets", tickets);

    // API's with application_id
    const customers = await client
      .application("APPLICATION_ID")
      .user.getCustomers();
    console.log("customers", customers);
  } catch (err) {
    console.log(err);
  }
}

getData();

Sample Usage - Request function.

The request function allows you to make custom API requests with ease. It is available on both platform and application client.


let auditLog = await client.request({
    url: `/service/platform/audit-trail/v1.0/company/1/logs`,
    method: 'GET',
});

The request function accepts an object with the following possible keys:

  • method (string): The HTTP method to use (e.g., 'GET', 'POST', 'PUT', 'DELETE').
  • url (string): The URL endpoint for the request.
  • query (object): Query parameters to include in the request URL.
  • body (object): The request payload to send.
  • headers (object): Additional headers to include in the request.

Cookie

Following code snippet will read and write cookies on behalf of you Cookies will get appended in subsequent requests.

const { FdkAxios } = require('@gofynd/fdk-client-javascript');
const { wrapper } =  require("axios-cookiejar-support");
const { CookieJar } = require("tough-cookie");


wrapper(FdkAxios);
const cookieJar = new CookieJar();
FdkAxios.defaults.jar = cookieJar;


module.exports = cookieJar

get the stored cookie from the CookieJar instance

const cookieJar = require('path/to/cookieJar') // replace with actual path

let cookies = await cookieJar.getCookies("https://api.fynd.com");

Headers

Adding Request Headers

To include request headers when calling a method, add requestHeaders object in the first argument.

const requestHeaders = {
  "x-api-version": "1.0"
}

const options = {
  responseHeaders: true
}

const [response, headers] = await platformClient.application("<APPLICATION_ID>").theme.getAllPages({theme_id: "<THEME_ID>", requestHeaders: requestHeaders}, options);

get Response Headers

To retrieve the response headers, simply set the responseHeaders option to true when calling the desired method. Below is an example demonstrating how to achieve this:

const options = {
  responseHeaders: true
}
const [response, headers] = await platformClient.application("<APPLICATION_ID>").theme.getAllPages({theme_id: "<THEME_ID>"}, options);

console.log("[API RESPONSE]: ", response);
console.log("[RESPONSE HEADERS]: ", headers);

Log Curl

To print the curl command in the console for all network calls made using applicationClient or platformClient, set the logger level to debug.

const {
  ApplicationClient, ApplicationConfig,
} = require("fdk-client-javascript");

let applicationConfig = new ApplicationConfig({
  applicationID: "YOUR_APPLICATION_ID",
  applicationToken: "YOUR_APPLICATION_TOKEN",
});

applicationConfig.setLogLevel("debug");
let applicationClient = new ApplicationClient(applicationConfig);

let response = await applicationClient.theme.getAppliedTheme(); 
console.log("Active Theme: ", response.information.name);

The above code will log the curl command in the console

curl --request GET "https://api.fynd.com/service/application/theme/v1.0/applied-theme" --header 'authorization: Bearer <authorization-token>' --header 'x-fp-sdk-version: 1.4.15-beta.2' --header 'x-fp-date: 20230222T115108Z' --header 'x-fp-signature: v1.1:1e3ab3b02b5bc626e3c32a37ee844266ade02bbcbaafc28fc7a0e46a76a7a1a8'
Active Theme: Emerge

TypeScript

fdk-client-javascript includes Typescript definitions.

import { ApplicationConfig, ApplicationClient } from "fdk-client-javascript";