πŸš€ DAY 5 OF LAUNCH WEEK: Introducing Socket Firewall Enterprise.Learn more β†’
Socket
Book a DemoInstallSign in
Socket

@foxford/foxford-js-sdk

Package Overview
Dependencies
Maintainers
7
Versions
402
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@foxford/foxford-js-sdk

Foxford sdk for external projects

latest
npmnpm
Version
3.4.12
Version published
Weekly downloads
26
-97.86%
Maintainers
7
Weekly downloads
Β 
Created
Source

Foxford-js-sdk

Набор ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ѐоксфорд

ИспользованиС

// @flow
import { Foxford } from '@foxford/foxford-js-sdk'
import type { User } from '@foxford/foxford-js-sdk'

const foxSdk = new Foxford()

const getUser = async function () {
  const user: User = await foxSdk.user.getUser()
}

БСрвисы

  • user - для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΡŽΠ·Π΅Ρ€ΠΎΠΌ фокса
  • promo - для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΡ€ΠΎΠΌΠΎΠΊΠΎΠ΄Π°ΠΌΠΈ
  • tag - для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с тэгами
  • cart - для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠΎΡ€Π·ΠΈΠ½ΠΎΠΉ
  • course - для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с курсами
  • widgets - для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°ΠΌΠΈ
  • productPack - для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚-ΠΏΠ°ΠΊΠ°ΠΌΠΈ
  • leadrequest - для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с лидрСквСстами
  • api, foxApi, staticApi - для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с HTTP-запросами
  • captcha - для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠ°ΠΏΡ‡Π΅ΠΉ
  • analytics - для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΎΠΉ

ОписаниС интСрфСйсов ΠΌΠΎΠΆΠ½ΠΎ Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π² index.d.ts ΠΈΠ»ΠΈ index.js.flow

Π’ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° сама сходит Π½Π° скриптом ΠΏΠΎ Π½ΡƒΠΆΠ½ΠΎΠΌΡƒ адрСсу ΠΈ вставит Π΅Π³ΠΎ Π² ваш DOM. ПослС Ρ‡Π΅Π³ΠΎ ΠΏΡ€ΠΎΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΎΠΌ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅Ρ‚ нСобходимости ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ²

const WIDGETS_CONFIG = Object.freeze({
  analyticContext: { prefix: 'app', module: '' },
  widgets: [
    {
      name: 'menu',
      options: {
        header: true,
        footer: true,
        headerContainer: document.getElementById(HEADER_CONTAINER_NAME),
        footerContainer: document.getElementById(FOOTER_CONTAINER_NAME),
      },
    },
  ],
})

const sdk = new Foxford()

sdk.widgets.create(WIDGETS_CONFIG)

ΠšΠΎΡ€Π·ΠΈΠ½Π°

Π‘Π°Π·Π΄Π°Π΅ΠΌ cartItem ΠΈ добавляСм Π΅Π³ΠΎ Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ

const sdk = new Foxford()

async function addCourseToCart(id: number) {
  try {
    const course = await sdk.course.getCourse(id)
    // создаСм cart-item
    const cartItem = sdk.cart.createCartItem(course.id, course.cartItem.type)
    // добавляСм cart-item Π² ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ
    await sdk.cart.addCartItemToCart(cartItem)
    // redirect
  } catch (error) {
    // error
  }
}

ΠšΡƒΡ€Ρ

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎ курсу

const sdk = new Foxford()

async function getCourse(id: number): Course {
  const course = await sdk.course.getCourse(id)
  return course
}

ЛидрССквСст

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ лидрСквСст ΠΈ отсылаСм Π΅Π³ΠΎ

const sdk = new Foxford()

async function sendLeadRequest({ email, phone, name }) {
  const lrData = {
    email: email,
    phone_number: phone,
    name: name,
  }

  const leadRequest = sdk.leadrequest.createLeadRequest(LEAD_REQUEST_TYPE, 'express.foxford.ru | offer', lrData)

  await sdk.leadrequest.send(leadRequest, search)
}

User identity event

Для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΡŽΠ·Π΅Ρ€ эвСнтов Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ

const sdk = new Foxford()

async function sendUserEvent(event: 'experiment' | 'funnel' | 'conversion'): void {
  await sdk.user.pushEvent(event) // ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° события
}

sendUserEvent('conversion')

Api

Π’ случаС ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ нСобходимости Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄Π΅Π»Π°Ρ‚ΡŒ прямыС запросы Ρ‡Π΅Ρ€Π΅Π· настроСнный api ΠΊΠ»ΠΈΠ΅Π½Ρ‚.

const sdk = new Foxford()
const api = sdk.api
const foxApi = sdk.foxApi
const api = sdk.api
const staticApi = sdk.staticApi

foxApi.post(`/api/${endpoint}`, { data })

// ---------------------------------------------------------------------------------------- //

// ВыполняСм запрос ΠΊ Π²Π½Π΅ΡˆΠ½Π΅ΠΌΡƒ рСсурсу
api.get(`https://some.external.source`).then(({ data }) => data)

// ---------------------------------------------------------------------------------------- //

/*
    `staticApi` ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для доступа ΠΊ статичным ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ ΠΈ свойствам Π°ΠΏΠΈ

    * staticApi.create() - для создания Π½ΠΎΠ²ΠΎΠ³ΠΎ инстанса
    * staticApi.isCancel() - для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π±Ρ‹Π» Π»ΠΈ запрос ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ
    * staticApi.CancelToken - для ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ запросов
  */

// ΠžΡ‚ΠΌΠ΅Π½Π° запроса
const CancelToken = staticApi.CancelToken
const source = CancelToken.source()

staticApi
  .get('/user/12345', {
    cancelToken: source.token,
  })
  .catch(function (thrown) {
    if (staticApi.isCancel(thrown)) {
      console.log('Request canceled', thrown.message)
    } else {
      // ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибки
    }
  })

staticApi.post(
  '/user/12345',
  {
    name: 'new name',
  },
  {
    cancelToken: source.token,
  }
)

// ΠžΡ‚ΠΌΠ΅Π½Π° запроса (ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ сообщСния ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ)
source.cancel('Operation canceled by the user.')

// Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ инстанса
const customClient = staticApi.create({
  baseURL: someCustomURL,
  responseType: 'text',
})

ΠŸΠ»Π°Π³ΠΈΠ½Ρ‹

Π”Π°Π½Π½Ρ‹Π΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π² любой экосистСмС(react, vanilla js)

ΠžΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΏΠ»Π°Π³ΠΈΠ½Ρƒ.

  • Email Autocomplete

FAQs

Package last updated on 01 Oct 2025

Did you know?

Socket

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.

Install

Related posts