define('@cardstack/tools/adapters/cardstack-generic', ['exports', 'ember-resource-metadata/adapter-mixin', 'ember-data'], function (exports, _adapterMixin, _emberData) {
  'use strict';

  Object.defineProperty(exports, "__esModule", {
    value: true
  });

  var _slicedToArray = function () {
    function sliceIterator(arr, i) {
      var _arr = [];
      var _n = true;
      var _d = false;
      var _e = undefined;

      try {
        for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
          _arr.push(_s.value);

          if (i && _arr.length === i) break;
        }
      } catch (err) {
        _d = true;
        _e = err;
      } finally {
        try {
          if (!_n && _i["return"]) _i["return"]();
        } finally {
          if (_d) throw _e;
        }
      }

      return _arr;
    }

    return function (arr, i) {
      if (Array.isArray(arr)) {
        return arr;
      } else if (Symbol.iterator in Object(arr)) {
        return sliceIterator(arr, i);
      } else {
        throw new TypeError("Invalid attempt to destructure non-iterable instance");
      }
    };
  }();

  exports.default = _emberData.default.JSONAPIAdapter.extend({
    findRecord: function findRecord(store, type, id /*, snapshot */) {
      var _id$split = id.split('/'),
          _id$split2 = _slicedToArray(_id$split, 3),
          branch = _id$split2[0],
          realType = _id$split2[1],
          realId = _id$split2[2];

      var adapter = store.adapterFor(realType);
      return adapter.queryRecord(store, store.modelFor(realType), {
        filter: { id: realId },
        branch: branch,
        disableResourceMetadata: true
      }).then(function (response) {
        return {
          data: {
            id: id,
            type: type.modelName,
            attributes: {
              'real-id': realId,
              'real-type': realType,
              attributes: response.data.attributes,
              realtionships: response.data.relationships
            },
            meta: response.data.meta
          }
        };
      });
    }
  }, _adapterMixin.default);
});