util~ PropMap

A basic map-like object.

This object includes some utility functions that make it well suited to using as an API query object. For example, the module:util~PropMap#toUriEncoding method provides a way to serialize this object into URL query parameters.

Constructor

new PropMap(props)

Constructor.

Parameters:
NameTypeDescription
propsPropMap | object

the initial properties; if a PropMap instance is provided, the properties of that object will be copied into this one; otherwise the object will be used directly to hold property values

Members

props :object

The object that all properties are stored on.

Type:
  • object

Methods

prop(key, newValueopt) → {*}

Get, set, or remove a property value.

Parameters:
NameTypeAttributesDescription
keystring

the key to get or set the value for

newValue*<optional>

if defined, the new value to set for the given key; if null then the key property will be removed

Returns:

if called as a getter, the associated value for the given key, otherwise this object

Type: 
*

properties(newPropsopt) → {object}

Get, set, or remove multiple properties.

Parameters:
NameTypeAttributesDescription
newPropsobject<optional>

the new values to set; if any value is null that property will be deleted

Returns:

if called as a getter, all properties of this object copied into a simple object; otherwise this object

Type: 
object

toUriEncoding(propertyNameopt, callbackFnopt) → {string}

Get this object as a standard URI encoded (query parameters) string value.

All enumerable properties of the props property will be added to the result. If any property value is an array, the values of the array will be joined by a comma. Any module:util~Enum values will have their name property used. Any value that has a toUriEncoding() function property will have that function invoked, passing the associated property name as the first argument, and the returned value will be used.

Parameters:
NameTypeAttributesDescription
propertyNamestring<optional>

an optional object property prefix to add to all properties

callbackFnfunction<optional>

An optional function that will be called for each property. The function will be passed property name and value arguments, and must return either null to skip the property, a 2 or 3-element array with the property name and value to use, and an optional boolean to force array values to use mutliple parameter keys. Any other return value causes the property to be used as- is.

Returns:

the URI encoded string

Type: 
string

toUriEncodingWithSorting(sortsopt, paginationopt, propertyNameopt, callbackFnopt) → {string}

Get this object as a standard URI encoded (query parameters) string value with sorting and pagination parameters.

This calls module:util~PropMap#toUriEncoding first, then encodes the `sorts` and `pagination` parameters, if provided.

Parameters:
NameTypeAttributesDescription
sortsArray.<module:domain~SortDescriptor><optional>

optional sort settings to use

paginationmodule:domain~Pagination<optional>

optional pagination settings to use

propertyNamestring<optional>

an optional object property prefix to add to all properties

callbackFnfunction<optional>

An optional function that will be called for each property. The function will be passed property name and value arguments, and must return either null to skip the property, a 2-element array with the property name and value to use, or anything else to use the property as- is.

Returns:

the URI encoded string

Type: 
string