vanilla | @uirouter/angular
Options
Menu

Module vanilla

Index

Variables

$injector: any = {/** Gets an object from DI based on a string token */get: name => globals[name],/** Returns true if an object named `name` exists in global DI */has: (name) => $injector.get(name) != null,/*** Injects a function** @param fn the function to inject* @param context the function's `this` binding* @param locals An object with additional DI tokens and values, such as `{ someToken: { foo: 1 } }`*/invoke: (fn: IInjectable, context?, locals?) => {let all = extend({}, globals, locals || {});let params = $injector.annotate(fn);let ensureExist = assertPredicate((key: string) => all.hasOwnProperty(key), key => `DI can't find injectable: '${key}'`);let args = params.filter(ensureExist).map(x => all[x]);if (isFunction(fn)) return fn.apply(context, args);else return (fn as any[]).slice(-1)[0].apply(context, args);},/*** Returns a function's dependencies** Analyzes a function (or array) and returns an array of DI tokens that the function requires.* @return an array of `string`s*/annotate: (fn: IInjectable): any[] => {if (!isInjectable(fn)) throw new Error(`Not an injectable function: ${fn}`);if (fn && (fn as any).$inject) return (fn as any).$inject;if (isArray(fn)) return fn.slice(0, -1);let fnStr = fn.toString().replace(STRIP_COMMENTS, '');let result = fnStr.slice(fnStr.indexOf('(') + 1, fnStr.indexOf(')')).match(ARGUMENT_NAMES);return result || [];}} as $InjectorLike

A basic angular1-like injector api

A basic angular1-like injector api

This object implements four methods similar to the angular 1 dependency injector

UI-Router evolved from an angular 1 library to a framework agnostic library. However, some of the @uirouter/core code uses these ng1 style APIs to support ng1 style dependency injection.

This object provides a naive implementation of a globally scoped dependency injection system. It supports the following DI approaches:

Function parameter names

A function's .toString() is called, and the parameter names are parsed. This only works when the parameter names aren't "mangled" by a minifier such as UglifyJS.

function injectedFunction(FooService, BarService) {
  // FooService and BarService are injected
}

Function annotation

A function may be annotated with an array of dependency names as the $inject property.

injectedFunction.$inject = [ 'FooService', 'BarService' ];
function injectedFunction(fs, bs) {
  // FooService and BarService are injected as fs and bs parameters
}

Array notation

An array provides the names of the dependencies to inject (as strings). The function is the last element of the array.

[ 'FooService', 'BarService', function (fs, bs) {
  // FooService and BarService are injected as fs and bs parameters
}]
type

{$InjectorLike}

$q: $QLike = {/** Normalizes a value as a promise */when: (val) => new Promise((resolve, reject) => resolve(val)),/** Normalizes a value as a promise rejection */reject: (val) => new Promise((resolve, reject) => { reject(val); }),/** @returns a deferred object, which has `resolve` and `reject` functions */defer: () => {let deferred: any = {};deferred.promise = new Promise((resolve, reject) => {deferred.resolve = resolve;deferred.reject = reject;});return deferred;},/** Like Promise.all(), but also supports object key/promise notation like $q */all: (promises: { [key: string]: Promise<any> } | Promise<any>[]) => {if (isArray(promises)) {return Promise.all(promises);}if (isObject(promises)) {// Convert promises map to promises array.// When each promise resolves, map it to a tuple { key: key, val: val }let chain = Object.keys(promises).map(key => promises[key].then(val => ({key, val})));// Then wait for all promises to resolve, and convert them back to an objectreturn $q.all(chain).then(values =>values.reduce((acc, tuple) => { acc[tuple.key] = tuple.val; return acc; }, {}));}}} as $QLike

An angular1-like promise api

An angular1-like promise api

This object implements four methods similar to the angular 1 promise api

UI-Router evolved from an angular 1 library to a framework agnostic library. However, some of the @uirouter/core code uses these ng1 style APIs to support ng1 style dependency injection.

This API provides native ES6 promise support wrapped as a $q-like API. Internally, UI-Router uses this $q object to perform promise operations. The angular-ui-router (ui-router for angular 1) uses the $q API provided by angular.

$q-like promise api

ARGUMENT_NAMES: RegExp = /([^\s,]+)/g
STRIP_COMMENTS: RegExp = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg
globals: object

Type declaration

hashLocationPlugin: function = locationPluginFactory('vanilla.hashBangLocation', false, HashLocationService, BrowserLocationConfig)

A UIRouterPlugin uses the browser hash to get/set the current location

A UIRouterPlugin uses the browser hash to get/set the current location

Type declaration

memoryLocationPlugin: function = locationPluginFactory("vanilla.memoryLocation", false, MemoryLocationService, MemoryLocationConfig)

A UIRouterPlugin that gets/sets the current location from an in-memory object

A UIRouterPlugin that gets/sets the current location from an in-memory object

Type declaration

pushStateLocationPlugin: function = locationPluginFactory("vanilla.pushStateLocation", true, PushStateLocationService, BrowserLocationConfig)

A UIRouterPlugin that gets/sets the current location using the browser's location and history apis

A UIRouterPlugin that gets/sets the current location using the browser's location and history apis

Type declaration

splitEqual: (Anonymous function) = beforeAfterSubstr("=")
splitHash: (Anonymous function) = beforeAfterSubstr("#")
splitQuery: (Anonymous function) = beforeAfterSubstr("?")

Functions

  • beforeAfterSubstr(char: string): (Anonymous function)
  • getParams(queryString: string): any
  • keyValsToObjectR(accum: any, __namedParameters: [any, any]): any
  • locationPluginFactory(name: string, isHtml5: boolean, serviceClass: object, configurationClass: object): (Anonymous function)
  • parseUrl(url: string): object
  • trimHashVal(str: any): any

Generated using TypeDoc