Options
All
  • Public
  • Public/Protected
  • All
Menu

Package @storefront/core

StoreFront Core

npm (scoped with tag) license API Reference

Getting Started

StoreFront's core module can be used to start an instance of StoreFront, mount tags to the DOM and register custom tags. It also contains a number of useful abstractions for the development of custom tags.

Prerequisites

This module is meant to be used in a node environment which is bundled for use in the browser.

Installing

Use npm or yarn to install in a node project that uses webpack, browserify or similar.

npm install --save @storefront/core
# or
yarn add @storefront/core

Usage

This module can be used both to start an entire StoreFront application, or to create a new component that registers with your application.

Start StoreFront

import StoreFront from '@storefront/core';

// start a StoreFront application const app = new StoreFront({ /* config */ });

// mount a component StoreFront.mount('gb-query'); // or app.mount('gb-query');

Configuration

  • customerId: The only required configuration that must be passed to start a StoreFront instance

The rest of the configuration can be found in the generated API reference.

Use with Webpack

The current minimal webpack configuration to load components from @storefront npm packages and link them with @storefront/core.

// app.js
var StoreFront = require('@storefront/core').default;
require('@storefront/structure');
require('@storefront/query');

new StoreFront({ customerId: 'myCustomer' }).mount('*');

// webpack.config.js
module.exports = {
  entry: './app',

  module: {
    rules: [{
      test: /\.html$/,
      loader: 'html-loader'
    }, {
      test: /\.css$/,
      use: [
        'to-string-loader',
        'css-loader'
      ]
    }]
  }
};

Register custom component

Although the supplied development tools do not require ES2015+ to function, the examples will show them with that syntax for cleanliness

import { tag } from '@storefront/core';

const template = '<div>{ someContent }</div>'; // or if storing in separate file const template = require('./my-component.html');

@tag('my-component', template) class MyComponent {

init() { this.someContent = 'hello world!'; } }

Building the package

To build an individual package, run the following command:

yarn build

To build an individual package in response to changes within the src directory, run the following command:

yarn dev

Running tests

To test an individual packages, run the following command:

yarn test

To test an individual package in response to changes within the src and test directories, run the following command:

yarn tdd

Linting

To lint a package, run the following command:

yarn lint

To programmatically fix lint errors within a package, run the following command:

yarn lint:fix

Contributing

Read the contributing file to learn about how to contribute to the StoreFront project.

License

StoreFront and its related packages are MIT licensed.

Upgrade

Upgrade to version 1.40.0

In order to address issues with performance stemming from using aliases to render deeply nested and complex components, a number of changes have been made to that system and components which use it.

The major conceptual change to the way the system works brings it more inline with the <Provider> / <Consumer> pattern used in React's Context API and the language has been changed to match (both for future clarity and to ensure incompatibility with the previous inefficient alias system).

Summary:

  • @alias(aliasName: string) -> @provide(aliasName: string, resolver?: (props, state, aliases) => any)
  • tag.expose(aliasName: string) -> tag.provide(aliasName: string, resolver?: (props, state, aliases) => any)
  • (new!) @consume(aliasName: string)
  • (new!) tag.consume(aliasName: string)
  • (new!) _consumes custom component attribute
  • (new!) _props custom component attribute
  • (new!) <consume> custom component
  • (new!) <provide> custom component
  • (new!) item-props <gb-list> prop
  • (removed!) "state-finalized" tag lifecycle event
  • (removed!) "recalculate-props" tag lifecycle event
  • (removed!) "props-updated" tag lifecycle event

@provide decorator

The @alias decorator has been removed in preference for the new @provide decorator.

By default, both decorators will register an alias under the name provided and the value will be the state of the component.

${version} <= v1.39.X
import { alias } from '@storefront/core';

// in TypeScript @alias('myComponent') class MyComponent { state = { myValue: 'Hello, world!' }; }

// or in ES6
@alias('myComponent')
class MyComponent {
  constructor() {
    this.state = { myValue: 'Hello, world!' };
  }
}
<!-- in a child component -->
<span>{ $myComponent.myValue }</span>
<!-- or -->
<custom-component>
  { $myComponent.myValue }
</custom-component>
<!-- rendered -->
<span>Hello, world!</span>
${version} >= v1.40.0
import { provide } from '@storefront/core';

// in TypeScript @provide('myComponent') class MyComponent { state = { myValue: 'Hello, world!' }; }

// or in ES6
@provide('myComponent')
class MyComponent {
  constructor() {
    this.state = { myValue: 'Hello, world!' };
  }
}

Notice that the @alias decorator has been replaced with a @provide decorator which, when provided only a single parameter, works the exact same way as the @alias decorator.

<!-- in a child component -->
<span data-is="gb-container" _consumes="myComponent">
  { $myComponent.myValue }
</span>
<!-- or -->
<custom-component _consumes="myComponent">
  { $myComponent.myValue }
</custom-component>

Two changes are made to the "consuming" component:

  1. if it's not already wrapped in a custom component, any element can be turned into a simple component with data-is="gb-container"
  2. a _consumes attribute is added which declares the alias dependencies of the associated component scope
<!-- rendered -->
<span>Hello, world!</span>
alias resolver

In order to allow aliases to change based on the state of the providing component, the passed either using the @provide decorator or the tag.provide() method must be a function with the following signature:

function (props: object, state: object, aliases: object) {
  return 'my value';
}

This function is called with the props, state and aliases of the providing component every time a new value is required by a consuming component.

@consume() decorator

When creating components using a class, the @consume() decorator can be used to statically declare a dependency on an alias. This is similar to using the _consumes attribute on that component within a template or calling this.consume() within that component's init() method.

${version} <= v1.39.0
class CustomComponent {}
<!-- in the component's template -->
<span>{ $myAlias }</span>
${version} >= v1.40.0
@consumes('myAlias')
class CustomComponent {}
<!-- in the component's template -->
<span>{ $myAlias }</span>

Note: The important change here is that only components that explicitly "consume" an alias will be able to access the alias value within their template. Because riot's scope is tied only to the direct ancestor component this may mean that a complex component with multiple accesses to an alias may need to be re-thought so that only a single "consumer" is used and then distributed by passing to child components as props or accessing from nested templates using tag.parent (also sparingly).

${version} <= v1.39.0
<!-- inner-component.tag.html -->
<inner-component><yield/></inner-component>

<!-- inner-component.tag.html --> <inner-component><yield/></inner-component>

<!-- app.tag.html --> <app> <some-component> <inner-component someProp="{ $x }"> This is my innermost content: "{ $y }" </inner-component> </some-component>

<script> this.expose('x', 'outer value'); this.expose('y', 'inner value'); </script> </app>

${version} >= v1.40.0
<!-- inner-component.tag.html -->
<inner-component><yield/></inner-component>

<!-- inner-component.tag.html --> <inner-component> <label>{ props.someProp }</label> <yield/> </inner-component>

<!-- app.tag.html -->

<!-- broken implementation --> <app> <some-component _consumes="x,y"> <inner-component some-prop="{ $x }"> <!-- NOTE: $y is unavailable in this context --> This is my innermost content: "{ $y }" </inner-component> <!-- although it IS available in this context --> </some-component>

<script> this.provide('x', () => 'outer value'); this.provide('y', () => 'inner value'); </script> </app>

<!-- working implementation --> <app> <some-component consumes="x"> <inner-component some-prop="{ $x }" consumes="y"> This is my innermost content: "{ $y }" </inner-component> </some-component>

<script> this.provide('x', () => 'outer value'); this.provide('y', () => 'inner value'); </script> </app>

<!-- alternative implementation --> <app> <some-component _consumes="x,y"> <inner-component some-prop="{ $x }"> This is my innermost content: "{ parent.$y }" </inner-component> </some-component>

<script> this.provide('x', () => 'outer value'); this.provide('y', () => 'inner value'); </script> </app>

tag.provide() and tag.consume()

These methods can be called from within the component's init() method only to provide and consume aliases.

class MyComponent {
  init() {
    this.consume('parentAlias');
    this.provide('myAlias', ({ label }, { currentValue }) => ({ label, currentValue }));
    // note that aliases passed to the resolver do not include the dollar sign ($) prefix
    this.provide('other', (props, state, { parentAlias }) => ({ label, currentValue, ...parentAlias }));
  }

onBeforeMount() { // this will throw an exception if called outside of the <span class="javascript">init()</span> method this.provide('myAlias', ({ label }, { currentValue }) => ({ label, currentValue })); } }

class NestedComponent {
  init() {
    this.consume('myAlias');
  }

  onBeforeMount() {
    // this will throw an exception if called outside of the `init()` method
    this.consume('myAlias');
  }
}

_consumes custom component attribute

This attribute marks a component as a consumer of one or multiple aliases.

<!-- consume a single alias -->
<gb-button _consumes="someAlias">{ $someAlias }</gb-button>

<!-- consume multiple aliases --> <gb-button _consumes="someAlias,otherAlias">{ $someAlias } and { $otherAlias }</gb-button>

_props custom component attribute

In lieu of being able to spread props onto a component (such as in JSX) the _props attribute has been added. The object passed will be spread as the props of the component and are overridden by any explicitly passed props.

<!-- spread props -->
<simple-tag _props="{{ a: 'b', c: 'd', e: 'f' }}"></simple-tag>

<!-- spread props and override --> <simple-tag c="d2" _props="{{ a: 'b', c: 'd', e: 'f' }}"></simple-tag> <!-- results in props: { a: 'b', c: 'd2', e: 'f' } -->

<consume> and <provide>

These components have been added to allow for declarative aliasing but are still rough around the edges as they still introduce a scope and a custom tag into the DOM.

For now, the most useful pattern is to use the data-is property on a <virtual> tag in order to avoid the additional DOM node.

<outer-component>
  <virtual data-is="provide" data="{ someData }" as="someAlias">
    <inner-component>
      <virtual data-is="consume" alias="someAlias">
        <child-component>{ $someAlias }</child-component>
      </virtual>
    </inner-component>
  </virtual>
</outer-component>

<!-- alternative syntax --> <outer-component> <virtual data-is="provide" data="{ someData }" as="someAlias"> <inner-component> <child-component _consumes="someAlias">{ $someAlias }</child-component> </inner-component> </virtual> </outer-component>

<!-- consume multiple --> <virtual data-is="consume" aliases="firstAlias,secondAlias"> { ... } </virtual>

<!-- provide multiple --> <virtual data-is="provide" data="{ someData }" as="firstAlias"> <virtual data-is="provide" data="{ otherData }" as="secondAlias"> { ... } </virtual> </virtual>

<gb-list> item-props attribute

In order to provide props directly to the <gb-list-item> components within <gb-list> the item-props attribute has been added. This props is passed into the _props prop of the <gb-list-item> tags.

<gb-list items="{ [1, 2, 3] }" item-props="{{ a: 'b' }}">
  { props.a } { item }
</gb-list>

<!-- rendered --> <ul> <li>b 1</li> <li>b 2</li> <li>b 3</li> </ul>

Upgrade to version 1.39.1

In order to address memory usage concerns a new utility method has been added to tag instances which automates the cleanup of flux event listeners when the tag is unmounted.

${version} <= v1.39.0
class MyComponent {
  init() {
    this.flux.on('some_event', this.eventHandler);
    // usually no cleanup necessary (only executes once)
    this.flux.one('some_event', this.eventHandler);
  }

onUnmount() { this.flux.off('some_event', this.eventHandler); } }

${version} >= v1.39.1
class MyComponent {
  init() {
    // automatically removed on "unmount"
    this.subscribe('some_event', this.eventHandler);
    // alias for this.flux.one()
    this.subscribeOnce('some_event', this.eventHandler);
  }
}

Index

Modules

Classes

Interfaces

Type aliases

Variables

Functions

Object literals

Type aliases

Override

Override: function

Type declaration

    • (payload: S | T, event: T): T
    • Parameters

      • payload: S | T
      • event: T

      Returns T

ShouldUpdateFunction

ShouldUpdateFunction: function

The type of the shouldUpdate function. This function is used to determine if a component should perform an update.

param

An object with a property called state that contains the component's state.

param

An object that contains the component's props.

returns

true if the component should update, false otherwise.

Type declaration

    • (data: object, nextOpts: object): boolean
    • Parameters

      • data: object
      • nextOpts: object

      Returns boolean

SystemServices

SystemServices: CoreServices & Map

TagConstructor

TagConstructor: object

Type declaration

Variables

Const ALIAS_DESCRIPTION

ALIAS_DESCRIPTION: unique symbol = Symbol.for('alias_description')

Const ARRAY_SEPARATOR

ARRAY_SEPARATOR: "," = ","

Const ARRAY_TO_DOT_NOTATION_REGEX

ARRAY_TO_DOT_NOTATION_REGEX: RegExp = /\[(\d+)\]/g

Const CONFIGURABLE_KEY

CONFIGURABLE_KEY: "configurable" = "configurable"

Const CONSUMES_KEY

CONSUMES_KEY: "consumes" = "consumes"

Const CORE

CORE: unique symbol = Symbol.for('storfront_core_service')

Const DEFAULT_VARIANT_FIELD

DEFAULT_VARIANT_FIELD: "variants" = "variants"

Const ESCAPE_CHAR

ESCAPE_CHAR: "\" = "\"

Const GBI

GBI: "gbi" = "gbi"

Const GBI_EXPERIENCE

GBI_EXPERIENCE: "gbi_experience" = "gbi_experience"

Const GBI_METADATA

GBI_METADATA: GbTracker.Metadata[] = [{key: GBI,value: 'true'},{key: GBI_EXPERIENCE,value: 'storefront'}]

Const GLOBALS

GLOBALS: object = (typeof global === 'undefined' ? window : global) || {}

Type declaration

Const LOG_PHASES

LOG_PHASES: string[] = [Phase.INITIALIZE,Phase.BEFORE_MOUNT,Phase.MOUNT,Phase.UPDATE,Phase.UPDATED,Phase.BEFORE_UNMOUNT,Phase.UNMOUNT,]

Const LOG_STYLE

LOG_STYLE: "font-weight: bold" = "font-weight: bold"

Const ORIGIN_KEY

ORIGIN_KEY: "origin" = "origin"

Const PAIR_SEPARATOR

PAIR_SEPARATOR: ":" = ":"

Const PROVIDES_KEY

PROVIDES_KEY: "provides" = "provides"

Const RANGE_SEPARATOR

RANGE_SEPARATOR: ".." = ".."

Const RE_RENDER_MESSAGE

RE_RENDER_MESSAGE: "%ctag is preparing to re-render:" = "%ctag is preparing to re-render:"

Const RIOT

RIOT: unique symbol = Symbol.for('storefront_riot_instance')

Const SEPARATORS

SEPARATORS: string[] = [RANGE_SEPARATOR, ARRAY_SEPARATOR, PAIR_SEPARATOR]

Const STORAGE_KEY

STORAGE_KEY: string = "gb-previous-search-terms"

Const STYLISH_CLASS

STYLISH_CLASS: "gb-stylish" = "gb-stylish"

Const STYLISH_CLASS

STYLISH_CLASS: "gb-stylish" = "gb-stylish"

Const SUGAR_EVENTS

SUGAR_EVENTS: string[] = [Phase.BEFORE_MOUNT,Phase.MOUNT,Phase.UPDATE,Phase.UPDATED,Phase.BEFORE_UNMOUNT,Phase.UNMOUNT,]

Const TAGS

TAGS: unique symbol = Symbol.for('storefront_tags')

Const TAG_DESC

TAG_DESC: unique symbol = Symbol.for('tag_description')

Const TAG_META

TAG_META: unique symbol = Symbol.for('tag_metadata')

Const TRACKER_EVENT

TRACKER_EVENT: "tracker:send_event" = "tracker:send_event"

Const UI_CLASS

UI_CLASS: "gb-ui" = "gb-ui"

Const UI_CLASS

UI_CLASS: "gb-ui" = "gb-ui"

Const mixin

mixin: provideConsumeMixin = ProvideConsume.provideConsumeMixin

Functions

Const DEFAULT_TRANSFORM

  • DEFAULT_TRANSFORM(data: any): object

Const WINDOW

  • WINDOW(): Window

addActions

  • addActions(tag: Tag): void

addMetadata

  • addMetadata(tag: Tag): void

addStyles

  • addStyles(tag: Tag): void

alias

  • alias<P, S, A>(name: string): (Anonymous function)

aliasingMixin

  • aliasingMixin(this: Tag): void

applyMixin

  • applyMixin(tag: TagInstance, mixin: function): void

Const arrayToDotNotation

  • arrayToDotNotation(input: string): string

augmentAction

  • augmentAction(action: Action | Action[] | Thunk<any>, metadata: object): any

augmentMeta

  • augmentMeta(action: Action, metadata: object): object

configurable

consume

  • consume(name: string): (Anonymous function)

Const core

  • core(target: any): void

css

  • css(style: string): (Anonymous function)

debounce

  • debounce(fn: function, delay?: number, context?: any): (Anonymous function)
  • Parameters

    • fn: function
        • (...args: any[]): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    • Default value delay: number = 0
    • Optional context: any

    Returns (Anonymous function)

debugMixin

  • debugMixin(this: Tag): void

decodeArray

  • decodeArray(input: string): any[]

decodeChars

  • decodeChars(input: string): string

decodePair

  • decodePair(input: string): any[]

encodeArray

  • encodeArray(arr: Array<[string, any[]]>): string

encodeChars

  • encodeChars(input: string): string

encodePair

  • encodePair(input: string[]): string

escapeSeparators

  • escapeSeparators(input: string): string

fluxActionsMixin

  • fluxActionsMixin(this: Tag): void

lifecycleMixin

  • lifecycleMixin(this: Tag): void

Const logStyle

  • logStyle(color: string): string

loggingMixin

  • loggingMixin(this: Tag): void

mapToSearchActions

  • mapToSearchActions(values: string[], actions: ActionCreators): object[]

metadataMixin

  • metadataMixin(this: Tag): void

origin

  • origin(name: string): (Anonymous function)

primeTagActions

  • primeTagActions(tag: Tag): any

propsMixin

  • propsMixin(this: Tag): void

provide

  • provide<P, S, A>(name: string, resolver?: function): (Anonymous function)
  • Type parameters

    • P: object

    • S: object

    • A: object

    Parameters

    • name: string
    • Default value resolver: function = (_, state) => state
        • (props: P, state: S, aliases: A): any
        • Parameters

          • props: P
          • state: S
          • aliases: A

          Returns any

    Returns (Anonymous function)

Const rayify

  • rayify<T>(values: T | T[]): T[]

removeAliases

  • removeAliases(tag: Tag): void

runInitializePhase

  • runInitializePhase(tag: Tag): void

simpleResolve

  • simpleResolve(__namedParameters: object): any

splitExceptEscaped

  • splitExceptEscaped(input: string, separator: string): any[]

stylishMixin

  • stylishMixin(this: Tag): void

sugarMixin

  • sugarMixin(this: Tag): void

tag

  • tag(name: string, template: string, cssVal?: string): (Anonymous function)

updateAliases

  • updateAliases(tag: Tag): object

updateProps

  • updateProps(tag: Tag): void

view

  • view(name: string, template: string, cssVal?: string): void

wrapActionCreator

  • wrapActionCreator(actionCreator: ActionCreator, metadata: object, dispatch: function): (Anonymous function)
  • Parameters

    • actionCreator: ActionCreator
    • metadata: object
    • dispatch: function
        • (action: any): any
        • Parameters

          • action: any

          Returns any

    Returns (Anonymous function)

wrapActionCreators

  • wrapActionCreators(actionCreators: object, metadata: object, dispatch: function): object
  • Parameters

    • actionCreators: object
      • [key: string]: ActionCreator
    • metadata: object
    • dispatch: function
        • (action: any): any
        • Parameters

          • action: any

          Returns any

    Returns object

wrapThunk

  • wrapThunk(thunk: Thunk<any>, metadata: object): (Anonymous function)

Object literals

Const ALIASING_COLOURS

ALIASING_COLOURS: object

added

added: string = "#306895"

inherited

inherited: string = "#cd4f10"

removed

removed: string = "#a11d10"

updated

updated: string = "#1378a3"

Const DEFAULTS

DEFAULTS: object

area

area: string = DEFAULT_AREA

collection

collection: string = DEFAULT_COLLECTION

tags

tags: object

Type declaration

autocomplete

autocomplete: object

debounceThreshold

debounceThreshold: number = -1

hoverAutoFill

hoverAutoFill: true = true

navigationCount

navigationCount: number = 5

navigations

navigations: object

Type declaration

searchCharMinLimit

searchCharMinLimit: number = 1

showCategoryValuesForFirstMatch

showCategoryValuesForFirstMatch: false = false

suggestionCount

suggestionCount: number = 5

overrides

overrides: object

products

products: object

Type declaration

suggestions

suggestions: object

Type declaration

products

products: object

count

count: number = 4

recommendations

recommendations: object

suggestionCount

suggestionCount: number = 2

suggestionMode

suggestionMode: "popular" = "popular"

collections

collections: object

overrides

overrides: object

Type declaration

details

details: object

overrides

overrides: object

Type declaration

history

history: object

length

length: number = 1

mixins

mixins: object

custom

custom: object

Type declaration

global

global: object

shouldUpdate

shouldUpdate: false = false

navigations

navigations: object

type

type: object

Type declaration

network

network: object

https

https: boolean = typeof window !== 'undefined' && window.location.protocol === 'https:'

options

options: object

globalMixin

globalMixin: true = true

initialSearch

initialSearch: false = false

legacyAliasing

legacyAliasing: false = false

stylish

stylish: false = false

ui

ui: true = true

personalization

personalization: object

realTimeBiasing

realTimeBiasing: object

attributeMaxBiases

attributeMaxBiases: number = 3

autocomplete

autocomplete: true = true

expiry

expiry: number = 14

maxBiases

maxBiases: number = 25

strength

strength: "Medium_Increase" = "Medium_Increase"

recommendations

recommendations: object

idField

idField: string = "productId"

location

location: false = false

iNav

iNav: object

size

size: number = 10

window

window: "day" = "day"

navigations

navigations: object

sort

sort: false = false

refinements

refinements: object

sort

sort: false = false

overrides

overrides: object

autocompleteSuggestions

autocompleteSuggestions: object

Type declaration

ids

ids: object

Type declaration

navigations

navigations: object

Type declaration

products

products: object

Type declaration

pastPurchases

pastPurchases: object

biasCount

biasCount: number = 0

biasInfluence

biasInfluence: number = 5

biasStrength

biasStrength: "Medium_Increase" = "Medium_Increase"

enabled

enabled: false = false

maxRefinements

maxRefinements: number = 20

productCount

productCount: number = 0

securedPayload

securedPayload: null = null

overrides

overrides: object

autocomplete

autocomplete: object

Type declaration

products

products: object

Type declaration

productSuggestions

productSuggestions: object

mode

mode: "trending" = "trending"

productCount

productCount: number = 0

refinements

refinements: object

overrides

overrides: object

Type declaration

search

search: object

maxRefinements

maxRefinements: number = 20

overrides

overrides: object

Type declaration

redirectSingleResult

redirectSingleResult: false = false

useDefaultCollection

useDefaultCollection: false = false

services

services: object

autocomplete

autocomplete: object

useFirstResult

useFirstResult: boolean = false

logging

logging: object

level

level: string = "debug"

search

search: object

maxPastSearchTerms

maxPastSearchTerms: number = 0

storeDuplicateSearchTerms

storeDuplicateSearchTerms: false = false

tracker

tracker: object

warnings

warnings: true = true

url

url: object

redirects

redirects: object

Type declaration

beautifier

beautifier: object

navigations

navigations: object

Type declaration

queryToken

queryToken: string = "q"

refinementMapping

refinementMapping: undefined[] = []

suffix

suffix: string = ""

useReferenceKeys

useReferenceKeys: true = true

variantMapping

variantMapping: undefined[] = []

details

details: object

params

params: object

area

area: string = "area"

collection

collection: string = "collection"

params

params: object

collection

collection: string = "collection"

page

page: string = "page"

pageSize

pageSize: string = "page_size"

refinements

refinements: string = "refinements"

sort

sort: string = "sort"

routes

routes: object

details

details: string = `/${Routes.DETAILS}`

navigation

navigation: string = `/${Routes.NAVIGATION}`

pastpurchase

pastpurchase: string = `/${Routes.PAST_PURCHASE}`

search

search: string = `/${Routes.SEARCH}`

structure

structure: object

id

id: string = "id"

price

price: string = "price"

title

title: string = "title"

Const DEFAULT_ORIGINS

DEFAULT_ORIGINS: object

autosearch

autosearch: boolean = false

collectionSwitcher

collectionSwitcher: boolean = false

dym

dym: boolean = false

navigation

navigation: boolean = false

recommendations

recommendations: boolean = false

sayt

sayt: boolean = false

Const DOMEXCEPTION_NAMES

DOMEXCEPTION_NAMES: object

SECURITY_ERROR

SECURITY_ERROR: string = "SecurityError"

Const KEYS

KEYS: object

DOWN

DOWN: string = "ArrowDown"

ENTER

ENTER: string = "Enter"

ESCAPE

ESCAPE: string = "Escape"

IE_DOWN

IE_DOWN: string = "Down"

IE_ESCAPE

IE_ESCAPE: string = "Esc"

IE_LEFT

IE_LEFT: string = "Left"

IE_RIGHT

IE_RIGHT: string = "Right"

IE_UP

IE_UP: string = "Up"

UP

UP: string = "ArrowUp"

Const LIFECYCLE_COLOURS

LIFECYCLE_COLOURS: object

__computed

__computed: string = "#f04141"

Const SERVICES

SERVICES: object

autocomplete

autocomplete: AutocompleteService

collections

collections: CollectionsService

cookie

details

logging

pastPurchases

pastPurchases: PastPurchaseService

recommendations

recommendations: RecommendationsService

redirect

redirect: RedirectService

search

tracker

url

Const dot

dot: object

get

  • get(obj: any, path: string, defaultValue?: any): any

Generated using TypeDoc