UNPKG

react-native

Version:

A framework for building native apps using React

48 lines (39 loc) 1.19 kB
/** * Copyright 2013-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * * @providesModule accumulate * @flow */ 'use strict'; var invariant = require('fbjs/lib/invariant'); /** * Accumulates items that must not be null or undefined. * * This is used to conserve memory by avoiding array allocations. * * @return {*|array<*>} An accumulation of items. */ function accumulate<T>(current: ?(T | Array<T>), next: T | Array<T>): T | Array<T> { invariant( next != null, 'accumulate(...): Accumulated items must be not be null or undefined.' ); if (current == null) { return next; } // Both are not empty. Warning: Never call x.concat(y) when you are not // certain that x is an Array (x could be a string with concat method). if (Array.isArray(current)) { return current.concat(next); } if (Array.isArray(next)) { return [current].concat(next); } return [current, next]; } module.exports = accumulate;