function SimpleStore(opts) {
  utils.classCallCheck(this, SimpleStore);
  opts || (opts = {}); // Fill in any missing options with the defaults

  utils.fillIn(opts, SIMPLESTORE_DEFAULTS);
  Container.call(this, opts);
  this.collectionClass = this.collectionClass || Collection$1;
  this._collections = {};
  this._pendingQueries = {};
  this._completedQueries = {};
}
The `SimpleStore` class is an extension of {@link Container}. Not only does
`SimpleStore` manage mappers, but also collections. `SimpleStore` implements the
asynchronous {@link Mapper} methods, such as {@link Mapper#find} and
{@link Mapper#create}. If you use the asynchronous `SimpleStore` methods
instead of calling them directly on the mappers, then the results of the
method calls will be inserted into the store's collections. You can think of
a `SimpleStore` as an [Identity Map](https://en.wikipedia.org/wiki/Identity_map_pattern)
for the [ORM](https://en.wikipedia.org/wiki/Object-relational_mapping)
(the Mappers).

```javascript
import { SimpleStore } from 'js-data';
```

@example
import { SimpleStore } from 'js-data';
import { HttpAdapter } from 'js-data-http';
const store = new SimpleStore();

// SimpleStore#defineMapper returns a direct reference to the newly created
// Mapper.
const UserMapper = store.defineMapper('user');

// SimpleStore#as returns the store scoped to a particular Mapper.
const UserStore = store.as('user');

// Call "find" on "UserMapper" (Stateless ORM)
UserMapper.find(1).then((user) => {
  // retrieved a "user" record via the http adapter, but that's it

  // Call "find" on "store" targeting "user" (Stateful SimpleStore)
  return store.find('user', 1); // same as "UserStore.find(1)"
}).then((user) => {
  // not only was a "user" record retrieved, but it was added to the
  // store's "user" collection
  const cachedUser = store.getCollection('user').get(1);
  console.log(user === cachedUser); // true
});

@class SimpleStore
@extends Container
@param {object} [opts] Configuration options. See {@link Container}.
@param {boolean} [opts.collectionClass={@link Collection}] See {@link SimpleStore#collectionClass}.
@param {boolean} [opts.debug=false] See {@link Component#debug}.
@param {boolean|Function} [opts.usePendingFind=true] See {@link SimpleStore#usePendingFind}.
@param {boolean|Function} [opts.usePendingFindAll=true] See {@link SimpleStore#usePendingFindAll}.
@returns {SimpleStore}
@see Container
@since 3.0.0
@tutorial ["http://www.js-data.io/v3.0/docs/components-of-jsdata#SimpleStore","Components of JSData: SimpleStore"]
@tutorial ["http://www.js-data.io/v3.0/docs/working-with-the-SimpleStore","Working with the SimpleStore"]
@tutorial ["http://www.js-data.io/v3.0/docs/jsdata-and-the-browser","Notes on using JSData in the Browser"]