#

API Docs for: v2.11.1
Show: Inherited Protected Private Deprecated

# File: packages/ember-application/lib/utils/validate-type.js

    /**
    @module ember
    @submodule ember-application
    */

    import { assert, deprecate } from 'ember-metal';

    const VALIDATED_TYPES = {
      route:     ['assert',    'isRouteFactory',     'Ember.Route'],
      component: ['deprecate', 'isComponentFactory', 'Ember.Component'],
      view:      ['deprecate', 'isViewFactory',      'Ember.View'],
      service:   ['deprecate', 'isServiceFactory',   'Ember.Service']
    };

    export default function validateType(resolvedType, parsedName) {
      let validationAttributes = VALIDATED_TYPES[parsedName.type];

      if (!validationAttributes) {
        return;
      }

      let [action, factoryFlag, expectedType] = validationAttributes;

      if (action === 'deprecate') {
        deprecate(
          `In Ember 2.0 ${parsedName.type} factories must have an \`${factoryFlag}\` ` +
          `property set to true. You registered ${resolvedType} as a ${parsedName.type} ` +
          `factory. Either add the \`${factoryFlag}\` property to this factory or ` +
          `extend from ${expectedType}.`,
          !!resolvedType[factoryFlag],
          { id: 'ember-application.validate-type', until: '3.0.0' }
        );
      } else {
        assert(
          `Expected ${parsedName.fullName} to resolve to an ${expectedType} but ` +
          `instead it was ${resolvedType}.`,
          !!resolvedType[factoryFlag]
        );
      }
    }