var _ = require('./util') var extend = _.extend /** * The exposed Vue constructor. * * API conventions: * - public API methods/properties are prefiexed with `$` * - internal methods/properties are prefixed with `_` * - non-prefixed properties are assumed to be proxied user * data. * * @constructor * @param {Object} [options] * @public */ function Vue (options) { this._init(options) } /** * Mixin global API */ extend(Vue, require('./api/global')) /** * Vue and every constructor that extends Vue has an * associated options object, which can be accessed during * compilation steps as `this.constructor.options`. * * These can be seen as the default options of every * Vue instance. */ Vue.options = { replace: true, directives: require('./directives/public'), elementDirectives: require('./directives/element'), filters: require('./filters'), transitions: {}, components: {}, partials: {} } /** * Build up the prototype */ var p = Vue.prototype /** * $data has a setter which does a bunch of * teardown/setup work */ Object.defineProperty(p, '$data', { get: function () { return this._data }, set: function (newData) { if (newData !== this._data) { this._setData(newData) } } }) /** * Mixin internal instance methods */ extend(p, require('./instance/init')) extend(p, require('./instance/events')) extend(p, require('./instance/state')) extend(p, require('./instance/lifecycle')) extend(p, require('./instance/misc')) /** * Mixin public API methods */ extend(p, require('./api/data')) extend(p, require('./api/dom')) extend(p, require('./api/events')) extend(p, require('./api/lifecycle')) Vue.version = '1.0.3' module.exports = _.Vue = Vue /* istanbul ignore if */ if (process.env.NODE_ENV !== 'production') { if (_.inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__) { window.__VUE_DEVTOOLS_GLOBAL_HOOK__.emit('init', Vue) } }