
Security News
The Changelog Podcast: Practical Steps to Stay Safe on npm
Learn the essential steps every developer should take to stay secure on npm and reduce exposure to supply chain attacks.
@foxford/foxford-js-sdk
Advanced tools
ΠΠ°Π±ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π€ΠΎΠΊΡΡΠΎΡΠ΄
// @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()
}
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π³Π»ΡΠ½ΡΡΡ Π² 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)
}
ΠΠ»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠ·Π΅Ρ ΡΠ²Π΅Π½ΡΠΎΠ² Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ
const sdk = new Foxford()
async function sendUserEvent(event: 'experiment' | 'funnel' | 'conversion'): void {
  await sdk.user.pushEvent(event) // ΠΎΡΠΏΡΠ°Π²ΠΊΠ° ΡΠΎΠ±ΡΡΠΈΡ
}
sendUserEvent('conversion')
Π ΡΠ»ΡΡΠ°Π΅ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄Π΅Π»Π°ΡΡ ΠΏΡΡΠΌΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΡΠ΅ΡΠ΅Π· Π½Π°ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ 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)
ΠΠ·Π½Π°ΠΊΠΎΠΌΡΡΠ΅ΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΏΠ»Π°Π³ΠΈΠ½Ρ.
FAQs
Foxford sdk for external projects
The npm package @foxford/foxford-js-sdk receives a total of 23 weekly downloads. As such, @foxford/foxford-js-sdk popularity was classified as not popular.
We found that @foxford/foxford-js-sdk demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago.Β It has 7 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
Learn the essential steps every developer should take to stay secure on npm and reduce exposure to supply chain attacks.

Security News
Experts push back on new claims about AI-driven ransomware, warning that hype and sponsored research are distorting how the threat is understood.

Security News
Ruby's creator Matz assumes control of RubyGems and Bundler repositories while former maintainers agree to step back and transfer all rights to end the dispute.