diff --git a/.babelrc b/.babelrc deleted file mode 100644 index 605b14091c4..00000000000 --- a/.babelrc +++ /dev/null @@ -1,8 +0,0 @@ -{ - "presets": ["es2015", "flow-vue"], - "plugins": ["transform-vue-jsx", "syntax-dynamic-import"], - "ignore": [ - "dist/*.js", - "packages/**/*.js" - ] -} diff --git a/.babelrc.js b/.babelrc.js new file mode 100644 index 00000000000..400866bfa7e --- /dev/null +++ b/.babelrc.js @@ -0,0 +1,23 @@ +const babelPresetFlowVue = { + plugins: [ + require('@babel/plugin-proposal-class-properties'), + // require('@babel/plugin-syntax-flow'), // not needed, included in transform-flow-strip-types + require('@babel/plugin-transform-flow-strip-types') + ] +} + +module.exports = { + presets: [ + require('@babel/preset-env'), + // require('babel-preset-flow-vue') + babelPresetFlowVue + ], + plugins: [ + require('babel-plugin-transform-vue-jsx'), + require('@babel/plugin-syntax-dynamic-import') + ], + ignore: [ + 'dist/*.js', + 'packages/**/*.js' + ] +} diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 00000000000..9075ab237c9 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,131 @@ +version: 2 + +defaults: &defaults + working_directory: ~/project/vue + docker: + - image: vuejs/ci + +jobs: + install: + <<: *defaults + steps: + - checkout + - restore_cache: + keys: + - v1-vue-{{ .Branch }}-{{ checksum "yarn.lock" }} + - v1-vue-{{ .Branch }}- + - v1-vue- + - run: npm install + - save_cache: + key: v1-vue-{{ .Branch }}-{{ checksum "yarn.lock" }} + paths: + - node_modules/ + - persist_to_workspace: + root: ~/project + paths: + - vue + + lint-flow-types: + <<: *defaults + steps: + - attach_workspace: + at: ~/project + - run: npm run lint + - run: npm run flow + - run: npm run test:types + + test-cover: + <<: *defaults + steps: + - attach_workspace: + at: ~/project + - run: npm run test:cover + - run: + name: report coverage stats for non-PRs + command: | + if [[ -z $CI_PULL_REQUEST ]]; then + ./node_modules/.bin/codecov + fi + + test-e2e: + <<: *defaults + steps: + - attach_workspace: + at: ~/project + - run: npm run test:e2e -- --env phantomjs + + test-ssr-weex: + <<: *defaults + steps: + - attach_workspace: + at: ~/project + - run: npm run test:ssr + - run: npm run test:weex + + trigger-regression-test: + <<: *defaults + steps: + - run: + command: | + curl --user ${CIRCLE_TOKEN}: \ + --data build_parameters[CIRCLE_JOB]=update \ + --data build_parameters[VUE_REVISION]=${CIRCLE_SHA1} \ + https://circleci.com/api/v1.1/project/github/vuejs/regression-testing/tree/master + +workflows: + version: 2 + install-and-parallel-test: + jobs: + - install + - test-cover: + requires: + - install + - lint-flow-types: + requires: + - install + - test-e2e: + requires: + - install + - test-ssr-weex: + requires: + - install + - trigger-regression-test: + filters: + branches: + only: + - "2.6" + - regression-test + requires: + - test-cover + - lint-flow-types + - test-e2e + - test-ssr-weex + weekly_regression_test: + triggers: + - schedule: + # At 13:00 UTC (9:00 EDT) on every Monday + cron: "0 13 * * 1" + filters: + branches: + only: + dev + jobs: + - install + - test-cover: + requires: + - install + - lint-flow-types: + requires: + - install + - test-e2e: + requires: + - install + - test-ssr-weex: + requires: + - install + - trigger-regression-test: + requires: + - test-cover + - lint-flow-types + - test-e2e + - test-ssr-weex diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index 523d283e8a4..00000000000 --- a/.eslintrc +++ /dev/null @@ -1,13 +0,0 @@ -{ - "root": true, - "plugins": [ - "flowtype" - ], - "extends": [ - "plugin:vue-libs/recommended", - "plugin:flowtype/recommended" - ], - "globals": { - "__WEEX__": true - } -} diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 00000000000..e27aad552a1 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,29 @@ +module.exports = { + root: true, + parserOptions: { + parser: require.resolve('babel-eslint'), + ecmaVersion: 2018, + sourceType: 'module' + }, + env: { + es6: true, + node: true, + browser: true + }, + plugins: [ + "flowtype" + ], + extends: [ + "eslint:recommended", + "plugin:flowtype/recommended" + ], + globals: { + "__WEEX__": true, + "WXEnvironment": true + }, + rules: { + 'no-console': process.env.NODE_ENV !== 'production' ? 0 : 2, + 'no-useless-escape': 0, + 'no-empty': 0 + } +} diff --git a/.flowconfig b/.flowconfig index b070e08fddb..2d6f9a739ea 100644 --- a/.flowconfig +++ b/.flowconfig @@ -1,7 +1,7 @@ [ignore] .*/node_modules/.* .*/test/.* -.*/build/.* +.*/scripts/.* .*/examples/.* .*/benchmarks/.* diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md index 4ead0e1daf2..b39f08e2d28 100644 --- a/.github/CODE_OF_CONDUCT.md +++ b/.github/CODE_OF_CONDUCT.md @@ -2,7 +2,7 @@ As contributors and maintainers of this project, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities. -We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, age, or religion. +We are committed to making participation in this project a harassment-free experience for everyone, regardless of the level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, age, or religion. Examples of unacceptable behavior by participants include the use of sexual language or imagery, derogatory comments or personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct. diff --git a/.github/COMMIT_CONVENTION.md b/.github/COMMIT_CONVENTION.md index 59e91abe7a8..381bf17baab 100644 --- a/.github/COMMIT_CONVENTION.md +++ b/.github/COMMIT_CONVENTION.md @@ -1,6 +1,14 @@ ## Git Commit Message Convention -> This is adapted from [Angular's commit convention](https://github.com/conventional-changelog/conventional-changelog/blob/master/packages/conventional-changelog-angular/convention.md). +> This is adapted from [Angular's commit convention](https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-changelog-angular). + +#### TL;DR: + +Messages must be matched by the following regex: + +``` js +/^(revert: )?(feat|fix|polish|docs|style|refactor|perf|test|workflow|ci|chore|types)(\(.+\))?: .{1,50}/ +``` #### Examples @@ -50,24 +58,24 @@ The **header** is mandatory and the **scope** of the header is optional. ### Revert -If the commit reverts a previous commit, it should begin with `revert: `, followed by the header of the reverted commit. In the body it should say: `This reverts commit .`, where the hash is the SHA of the commit being reverted. +If the commit reverts a previous commit, it should begin with `revert: `, followed by the header of the reverted commit. In the body, it should say: `This reverts commit .`, where the hash is the SHA of the commit being reverted. ### Type -If the prefix is `feat`, `fix` or `perf`, it will appear in the changelog. However if there is any [BREAKING CHANGE](#footer), the commit will always appear in the changelog. +If the prefix is `feat`, `fix` or `perf`, it will appear in the changelog. However, if there is any [BREAKING CHANGE](#footer), the commit will always appear in the changelog. Other prefixes are up to your discretion. Suggested prefixes are `docs`, `chore`, `style`, `refactor`, and `test` for non-changelog related tasks. ### Scope -The scope could be anything specifying place of the commit change. For example `core`, `compiler`, `ssr`, `v-model`, `transition` etc... +The scope could be anything specifying the place of the commit change. For example `core`, `compiler`, `ssr`, `v-model`, `transition` etc... ### Subject -The subject contains succinct description of the change: +The subject contains a succinct description of the change: * use the imperative, present tense: "change" not "changed" nor "changes" -* don't capitalize first letter +* don't capitalize the first letter * no dot (.) at the end ### Body diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index f903dc0a4c4..3a2082ef646 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -1,6 +1,6 @@ # Vue.js Contributing Guide -Hi! I’m really excited that you are interested in contributing to Vue.js. Before submitting your contribution though, please make sure to take a moment and read through the following guidelines. +Hi! I'm really excited that you are interested in contributing to Vue.js. Before submitting your contribution, please make sure to take a moment and read through the following guidelines: - [Code of Conduct](https://github.com/vuejs/vue/blob/dev/.github/CODE_OF_CONDUCT.md) - [Issue Reporting Guidelines](#issue-reporting-guidelines) @@ -14,44 +14,38 @@ Hi! I’m really excited that you are interested in contributing to Vue.js. Befo ## Pull Request Guidelines -- The `master` branch is basically just a snapshot of the latest stable release. All development should be done in dedicated branches. **Do not submit PRs against the `master` branch.** +- The `master` branch is just a snapshot of the latest stable release. All development should be done in dedicated branches. **Do not submit PRs against the `master` branch.** - Checkout a topic branch from the relevant branch, e.g. `dev`, and merge back against that branch. - Work in the `src` folder and **DO NOT** checkin `dist` in the commits. -- It's OK to have multiple small commits as you work on the PR - we will let GitHub automatically squash it before merging. +- It's OK to have multiple small commits as you work on the PR - GitHub will automatically squash it before merging. - Make sure `npm test` passes. (see [development setup](#development-setup)) -- If adding new feature: +- If adding a new feature: - Add accompanying test case. - - Provide convincing reason to add this feature. Ideally you should open a suggestion issue first and have it greenlighted before working on it. + - Provide a convincing reason to add this feature. Ideally, you should open a suggestion issue first and have it approved before working on it. -- If fixing a bug: - - If you are resolving a special issue, add `(fix #xxxx[,#xxx])` (#xxxx is the issue id) in your PR title for a better release log, e.g. `update entities encoding/decoding (fix #3899)`. - - Provide detailed description of the bug in the PR. Live demo preferred. +- If fixing bug: + - If you are resolving a special issue, add `(fix #xxxx[,#xxxx])` (#xxxx is the issue id) in your PR title for a better release log, e.g. `update entities encoding/decoding (fix #3899)`. + - Provide a detailed description of the bug in the PR. Live demo preferred. - Add appropriate test coverage if applicable. ## Development Setup -You will need [Node.js](http://nodejs.org) **version 6+** and [Java Runtime Environment](http://www.oracle.com/technetwork/java/javase/downloads/index.html) (needed for running Selenium server during e2e tests). +You will need [Node.js](http://nodejs.org) **version 8+**, [Java Runtime Environment](http://www.oracle.com/technetwork/java/javase/downloads/index.html) (for running Selenium server during e2e tests) and [yarn](https://yarnpkg.com/en/docs/install). After cloning the repo, run: ``` bash -$ npm install -& npm run setup +$ yarn # install the dependencies of the project ``` -The `setup` script links two git hooks: +### Committing Changes -- `pre-commit`: runs ESLint on staged files. -- `commit-msg`: validates commit message format (see below). - -### Commiting Changes - -Commit messages should follow the [commit message convention](./COMMIT_CONVENTION.md) so that changelogs can be automatically generated. If git hooks have been properly linked, commit messages will be automatically validated upon commit. It is recommended to use `npm run commit` instead of `git commit`, which provides an interactive CLI for generating proper commit messages. +Commit messages should follow the [commit message convention](./COMMIT_CONVENTION.md) so that changelogs can be automatically generated. Commit messages will be automatically validated upon commit. If you are not familiar with the commit message convention, you can use `npm run commit` instead of `git commit`, which provides an interactive CLI for generating proper commit messages. ### Commonly used NPM scripts @@ -65,21 +59,21 @@ $ npm run dev:test # build all dist files, including npm packages $ npm run build -# run the full test suite, include linting / type checking +# run the full test suite, including linting/type checking $ npm test ``` There are some other scripts available in the `scripts` section of the `package.json` file. -The default test script will do the following: lint with ESLint -> type check with Flow -> unit tests with coverage -> e2e tests. **Please make sure to have this pass successfully before submitting a PR.** Although the same tests will be run against your PR on the CI server, it is better to have it working locally beforehand. +The default test script will do the following: lint with ESLint -> type check with Flow -> unit tests with coverage -> e2e tests. **Please make sure to have this pass successfully before submitting a PR.** Although the same tests will be run against your PR on the CI server, it is better to have it working locally. ## Project Structure -- **`build`**: contains build-related configuration files. In most cases you don't need to touch them. However, it would be helpful to familiarize yourself with the following files: +- **`scripts`**: contains build-related scripts and configuration files. Usually, you don't need to touch them. However, it would be helpful to familiarize yourself with the following files: - - `build/alias.js`: module import aliases used across all source code and tests. + - `scripts/alias.js`: module import aliases used across all source code and tests. - - `build/config.js`: contains the build configurations for all files found in `dist/`. Check this file if you want to find out the entry source file for a dist file. + - `scripts/config.js`: contains the build configurations for all files found in `dist/`. Check this file if you want to find out the entry source file for a dist file. - **`dist`**: contains built files for distribution. Note this directory is only updated when a release happens; they do not reflect the latest changes in development branches. @@ -91,15 +85,15 @@ The default test script will do the following: lint with ESLint -> type check wi - **`test`**: contains all tests. The unit tests are written with [Jasmine](http://jasmine.github.io/2.3/introduction.html) and run with [Karma](http://karma-runner.github.io/0.13/index.html). The e2e tests are written for and run with [Nightwatch.js](http://nightwatchjs.org/). -- **`src`**: contains the source code, obviously. The codebase is written in ES2015 with [Flow](https://flowtype.org/) type annotations. +- **`src`**: contains the source code. The codebase is written in ES2015 with [Flow](https://flowtype.org/) type annotations. - **`compiler`**: contains code for the template-to-render-function compiler. - The compiler consists of a parser (converts template strings to element ASTs), an optimizer (detects static trees for vdom render optimization), and a code generator (generate render function code from element ASTs). Note the codegen directly generates code strings from the element AST - it's done this way for smaller code size because the compiler is shipped to the browser in the standalone build. + The compiler consists of a parser (converts template strings to element ASTs), an optimizer (detects static trees for vdom render optimization), and a code generator (generate render function code from element ASTs). Note that codegen directly generates code strings from the element AST - it's done this way for smaller code size because the compiler is shipped to the browser in the standalone build. - **`core`**: contains universal, platform-agnostic runtime code. - The Vue 2.0 core is platform-agnostic - which means code inside `core` should be able to run in any JavaScript environment, be it the browser, Node.js, or an embedded JavaScript runtime in native applications. + The Vue 2.0 core is platform-agnostic. That is, the code inside `core` is able to be run in any JavaScript environment, be it the browser, Node.js, or an embedded JavaScript runtime in native applications. - **`observer`**: contains code related to the reactivity system. @@ -107,9 +101,9 @@ The default test script will do the following: lint with ESLint -> type check wi - **`instance`**: contains Vue instance constructor and prototype methods. - - **`global-api`**: as the name suggests. + - **`global-api`**: contains Vue global api. - - **`components`**: universal abstract components. Currently `keep-alive` is the only one. + - **`components`**: contains universal abstract components. - **`server`**: contains code related to server-side rendering. @@ -117,9 +111,30 @@ The default test script will do the following: lint with ESLint -> type check wi Entry files for dist builds are located in their respective platform directory. - Each platform module contains three parts: `compiler`, `runtime` and `server`, corresponding to the three directories above. Each part contains platform-specific modules/utilities which are then imported and injected to the core counterparts in platform-specific entry files. For example, the code implementing the logic behind `v-bind:class` is in `platforms/web/runtime/modules/class.js` - which is imported in `entries/web-runtime.js` and used to create the browser-specific vdom patching function. + Each platform module contains three parts: `compiler`, `runtime` and `server`, corresponding to the three directories above. Each part contains platform-specific modules/utilities which are imported and injected to the core counterparts in platform-specific entry files. For example, the code implementing the logic behind `v-bind:class` is in `platforms/web/runtime/modules/class.js` - which is imported in `entries/web-runtime.js` and used to create the browser-specific vdom patching function. - **`sfc`**: contains single-file component (`*.vue` files) parsing logic. This is used in the `vue-template-compiler` package. - **`shared`**: contains utilities shared across the entire codebase. + - **`types`**: contains TypeScript type definitions + + - **`test`**: contains type definitions tests + + +## Financial Contribution + +As a pure community-driven project without major corporate backing, we also welcome financial contributions via Patreon and OpenCollective. + +- [Become a backer or sponsor on Patreon](https://www.patreon.com/evanyou) +- [Become a backer or sponsor on OpenCollective](https://opencollective.com/vuejs) + +### What's the difference between Patreon and OpenCollective funding? + +Funds donated via Patreon go directly to support Evan You's full-time work on Vue.js. Funds donated via OpenCollective are managed with transparent expenses and will be used for compensating work and expenses for core team members or sponsoring community events. Your name/logo will receive proper recognition and exposure by donating on either platform. + +## Credits + +Thank you to all the people who have already contributed to Vue.js! + + diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000000..e69222390dd --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,8 @@ +# These are supported funding model platforms + +github: yyx990803 +patreon: evanyou +open_collective: vuejs +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/vue +custom: # Replace with a single custom sponsorship URL diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 3a9c0b2e35f..cb7f961992c 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -8,3 +8,9 @@ If your issue was not created using the app above, it will be closed immediately 中文用户请注意: 请使用上面的链接来创建新的 issue。如果不是用上述工具创建的 issue 会被自动关闭。 --> + + diff --git a/.gitignore b/.gitignore index 1ee765a0db6..370a6eddbc0 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,4 @@ packages/vue-server-renderer/build.js packages/vue-server-renderer/server-plugin.js packages/vue-server-renderer/client-plugin.js packages/vue-template-compiler/build.js +.vscode diff --git a/BACKERS.md b/BACKERS.md index dcc65e995fd..b89f5d65545 100644 --- a/BACKERS.md +++ b/BACKERS.md @@ -1,265 +1,488 @@ -# Backers +

Sponsors & Backers

-You can join them in supporting Vue.js development by [pledging on Patreon](https://www.patreon.com/evanyou)! Backers in the same pledge level appear in the order of pledge date. +Vue.js is an MIT-licensed open source project. It's an independent project with its ongoing development made possible entirely thanks to the support by these awesome [backers](https://github.com/vuejs/vue/blob/dev/BACKERS.md). If you'd like to join them, please consider: -### $2000 +- [Become a backer or sponsor on Patreon](https://www.patreon.com/evanyou). +- [Become a backer or sponsor on OpenCollective](https://opencollective.com/vuejs). +- [One-time donation via PayPal or crypto-currencies.](https://vuejs.org/support-vuejs/#One-time-Donations) - - - +#### What's the difference between Patreon and OpenCollective? ---- +Funds donated via Patreon go directly to support Evan You's full-time work on Vue.js. Funds donated via OpenCollective are managed with transparent expenses and will be used for compensating work and expenses for core team members or sponsoring community events. Your name/logo will receive proper recognition and exposure by donating on either platform. -### $1000 +

- - - +

Special Sponsors

---- + -### $500 +

+ + + +

+ + - - - -

- - - -

- - - -

- - - -

- - - -

- - - -

- - - -

- - - -

- - - -

- - - -

- - - -

- - - -

- - - +

Platinum via Patreon

---- + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ + + +
+ -### $100 + +

Platinum Sponsors (China)

+ + + + + + +
+ + + +
+ - - - -

- - - -

- - - -

- - - -

- - - -

- - - +

Platinum via OpenCollective

+ + + + +

Gold via Patreon

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + +

Gold via OpenCollective

+ + + + + + + + + + + + + +

Silver via Patreon

+ +- Matt Mullenweg ---- + + + + + + + +
+ + + +
+ -### $50+ +

Silver via OpenCollective

-- No Divide Studio -- James Kyle -- Blake Newman -- Lee Smith -- Adam Dorsey -- Greg McCarvell -- Yoshiya Hinosawa + + + + +

Bronze via Patreon

+ + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ + +

Bronze via OpenCollective

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Generous Backers via Patreon ($50+)

+ + - Wasim Khamlichi - errorrik - Alex Balashov +- Konstantin Levinski +- Blaise Laflamme +- Dilettant +- Sean Ferguson +- Johnny Ray Austin +- IdealCoders + ---- - -### $10+ +

Backers via Patreon

-- Sylvain Pollet-Villard -- Luca Borghini -- Kazuya Kawaguchi + +- Masahiro Tanaka +- Shawn Wildermuth +- Samuel Smith +- donny +- Simon East - Keisuke Kita -- Anirudh Sanjeev -- Guido Bertolino -- Fábio Vedovelli -- Jack Barham -- Stephane Demoote -- Paul R. Dillinger +- kazupon - Sean Washington -- Alun Davey -- Eduardo Kyvenko -- Thijs de Maa -- Joris Noordermeer -- Niklas Lifors -- An Phan -- Richard Wyke -- Roman Kuba -- Tom Conlon -- Matt Pickle -- Simon East -- Bill Columbia -- Hayden Bickerton -- Henry Zhu -- John Smith -- Benjamin Listwon -- Rainer Morgan -- Brian Jorden -- Christopher Dosin - Lars Andreas Ness -- Drew Lustro -- Victor Tolbert -- Jon Pokrzyk -- Frank Dungan III -- Lanes.io -- Anders -- Dexter Miguel +- Benjamin Listwon +- Kirk Lewis - Stephen Michael Hartley +- Victor Tolbert - Wen-Tien Chang -- Ole Støvern -- Valerian Cure -- Dani Ilops -- louisbl -- Yegor Sytnyk -- Guido H. -- Joan Cejudo -- Ian Walter -- Nikola Trifunovic -- Nicolas Mutis Mesa -- Fahed Toumi -- James Brooks -- Kirk Lewis -- Spenser -- Takuya Nishio -- Daniel Diekmeier -- Peter Thaleikis -- Karol Fabjanczuk -- Eduardo -- Lê Chương -- Webber Wang -- Daniel Schmitz -- Bruce Li -- Mohammed -- Sam Wainwright -- TJ Hillard -- Kyle Arrington -- Jason Land -- Miljan Aleksic -- James Ye -- Laurids Duellmann -- Christo Crampton -- Adon Metcalfe -- Paul Straw -- Jake Ingman -- Eduardo Camillo +- Karol +- Phan An +- James J. Ye - Barbara Liau -- Jens Lind -- Yegor Sytnyk -- Benson Wong -- Anthony Tsui -- Karol Fabjanczuk -- Isaac Sant -- Milos Stojanovic +- Luiz - Matsumoto Takamasa -- Douglas Lowder -- Bess Brooks -- Christian Griffith -- Matt Rockwell - Jarek Tkaczyk -- Michael Laccetti -- Jonothan Allen -- Andrew Davis -- Jason Rys -- Sean -- Xiaojie Li -- Joakim Bugge -- Lacey Pevey -- David Hess - Niannian Modisette -- Kim Cuartero -- Luke Sampson -- Dariusz Jastrzębski -- Ivan Sieder -- Jivan Roquet -- Shane -- Stew Heckenberg - Matt Jones -- Dave Chenell -- Frank Baele -- Jack McDade -- Patrick O'Dacre -- Wietse Wind -- Donny Donny - Duncan Kenzie -- Mike Margerum -- Michael Richards -- Eduardo Reveles -- Jan Kremlacek - Guy Gavergun -- Keith Bailey -- Joel Birch +- Shinya Katayama +- Mike Margerum - Bernhard E. Reiter -- Radu Cretu -- Luiz Tanure -- Poamrong Rith - Chengzhi Yin -- Dan Barrett - Zoran Knezevic -- Charles Beaumont -- Jonathan Kent -- James Simpson -- Pascal Germain -- Pierre Vanhulst -- Vincent Gabriel -- Kyovo Digaw -- devneko -- Cheng-Wei Chien -- Michael Mazurczak -- Daniel -- Chris Anderson - Jon Hobbs-Smith -- Chez Tschetter +- Pierre Vanhulst - Akiho Nagao +- Haim Yulzari +- Asaf Yishai +- Anthony Estebe +- Jeremy Tan +- Jim Raden +- IMGNRY +- Tai Shi Ling +- Yong Jun Thong +- Tyler +- Vivekanandhan Natarajan +- Matias Verdier +- Rafael Belvederese +- Chih-Hsuan Fan +- Guilherme S L de Souza +- Daniel Waghorn +- Rob Yedlin +- Mickaël Andrieu +- Jamie McElwain +- Jordan Oroshiba +- Cliff Hess +- Joe Gregory +- Richard Simpson +- Marcos Moura +- Jessie Hernandez +- Ivan Sieder +- Eric +- Aparajita Fishman +- Romain Lienard +- Bohdan Kokotko +- Christo Crampton +- David Ang +- Donald Fischer +- Alexander Weiher +- Oskar Lindgren +- Jere Sjöroos +- Wakana Seki +- David Kaplan +- Ben Hong +- Domenico Gaudioso +- Jaeyoung Lee +- Andy +- Joe Cochran +- Matt Sencenbaugh +- Juan Bermudez +- Hannes Kochniß +- Colt Borg +- Alberto T. Payero Mota +- Daniel Mattingley +- Teon Ooi +- Chris Calo +- Elon Hung +- Soichiro Isshiki +- Milan Zivkovic +- Christopher Bemister +- Ed Linklater +- Garion Herman +- Marko Boskovic +- Rob +- Andrew Willis +- Yusuke Kawabata +- Princeyesuraj Edward +- shimbaco +- 龙腾道 +- 极 蔡 +- Peter Matkovsky +- Nick Dandakis +- Fabien GuySake Ungerer +- Fedor Indutny +- Masato Miura +- Nathan Mallison +- Shapovalov Pavel +- David McGuigan +- Max Fletcher +- Bill Condo +- Kevin Batdorf +- Ivan Buncic +- Pierre Lebrun +- Sheree Peña + + +

Backers via OpenCollective

+ + diff --git a/README.md b/README.md index 47a52bba434..318832d4745 100644 --- a/README.md +++ b/README.md @@ -1,119 +1,356 @@ -

+

Vue logo

- Build Status + Build Status Coverage Status - Downloads + Downloads Version License - Chat + Chat
- Sauce Test Status + Build Status

-## Supporting Vue.js +

Supporting Vue.js

-Vue.js is an MIT-licensed open source project. Its ongoing development is made possible thanks to the support by these awesome [backers](https://github.com/vuejs/vue/blob/dev/BACKERS.md). If you'd like to join them, check out [Vue.js' Patreon campaign](https://www.patreon.com/evanyou). +Vue.js is an MIT-licensed open source project with its ongoing development made possible entirely by the support of these awesome [backers](https://github.com/vuejs/vue/blob/dev/BACKERS.md). If you'd like to join them, please consider: + +- [Become a backer or sponsor on Patreon](https://www.patreon.com/evanyou). +- [Become a backer or sponsor on Open Collective](https://opencollective.com/vuejs). +- [One-time donation via PayPal or crypto-currencies.](https://vuejs.org/support-vuejs/#One-time-Donations) + +#### What's the difference between Patreon and OpenCollective? + +Funds donated via Patreon go directly to support Evan You's full-time work on Vue.js. Funds donated via OpenCollective are managed with transparent expenses and will be used for compensating work and expenses for core team members or sponsoring community events. Your name/logo will receive proper recognition and exposure by donating on either platform. + +

Special Sponsors

+

- Special thanks to the generous sponsorship by: -

- - - -

- - - -

- - - -

- - - -

- - - -

- - - -

- - - -

- - - -

- - - -

- - - -

- - - -

- - - -

- - - -

- - - -

- - + +

+ + + +

Platinum Sponsors

+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ + + +
+ + + +

Platinum Sponsors (China)

+ + + + + + +
+ + + +
+ + +

Gold Sponsors

-## Intro + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ -Vue.js is a library for building interactive web interfaces. It provides data-reactive components with a simple and flexible API. Core features include: +

Sponsors via Open Collective

-- [Declarative rendering with a plain JavaScript object based reactivity system](https://vuejs.org/guide/index.html#Declarative-Rendering) -- [Component-oriented development style with tooling support](https://vuejs.org/guide/index.html#Composing-with-Components) -- Lean and extensible core -- [Flexible transition effect system](https://vuejs.org/guide/transitions.html) -- Fast without the need for complex optimization +

Platinum

-Note that Vue.js only supports [ES5-compliant browsers](http://kangax.github.io/compat-table/es5/) (IE8 and below are not supported). + + + +

Gold

+ + + + + + + +--- + +## Introduction + +Vue (pronounced `/vjuː/`, like view) is a **progressive framework** for building user interfaces. It is designed from the ground up to be incrementally adoptable, and can easily scale between a library and a framework depending on different use cases. It consists of an approachable core library that focuses on the view layer only, and an ecosystem of supporting libraries that helps you tackle complexity in large Single-Page Applications. + +#### Browser Compatibility + +Vue.js supports all browsers that are [ES5-compliant](http://kangax.github.io/compat-table/es5/) (IE8 and below are not supported). + +## Ecosystem + +| Project | Status | Description | +|---------|--------|-------------| +| [vue-router] | [![vue-router-status]][vue-router-package] | Single-page application routing | +| [vuex] | [![vuex-status]][vuex-package] | Large-scale state management | +| [vue-cli] | [![vue-cli-status]][vue-cli-package] | Project scaffolding | +| [vue-loader] | [![vue-loader-status]][vue-loader-package] | Single File Component (`*.vue` file) loader for webpack | +| [vue-server-renderer] | [![vue-server-renderer-status]][vue-server-renderer-package] | Server-side rendering support | +| [vue-class-component] | [![vue-class-component-status]][vue-class-component-package] | TypeScript decorator for a class-based API | +| [vue-rx] | [![vue-rx-status]][vue-rx-package] | RxJS integration | +| [vue-devtools] | [![vue-devtools-status]][vue-devtools-package] | Browser DevTools extension | + +[vue-router]: https://github.com/vuejs/vue-router +[vuex]: https://github.com/vuejs/vuex +[vue-cli]: https://github.com/vuejs/vue-cli +[vue-loader]: https://github.com/vuejs/vue-loader +[vue-server-renderer]: https://github.com/vuejs/vue/tree/dev/packages/vue-server-renderer +[vue-class-component]: https://github.com/vuejs/vue-class-component +[vue-rx]: https://github.com/vuejs/vue-rx +[vue-devtools]: https://github.com/vuejs/vue-devtools + +[vue-router-status]: https://img.shields.io/npm/v/vue-router.svg +[vuex-status]: https://img.shields.io/npm/v/vuex.svg +[vue-cli-status]: https://img.shields.io/npm/v/@vue/cli.svg +[vue-loader-status]: https://img.shields.io/npm/v/vue-loader.svg +[vue-server-renderer-status]: https://img.shields.io/npm/v/vue-server-renderer.svg +[vue-class-component-status]: https://img.shields.io/npm/v/vue-class-component.svg +[vue-rx-status]: https://img.shields.io/npm/v/vue-rx.svg +[vue-devtools-status]: https://img.shields.io/chrome-web-store/v/nhdogjmejiglipccpnnnanhbledajbpd.svg + +[vue-router-package]: https://npmjs.com/package/vue-router +[vuex-package]: https://npmjs.com/package/vuex +[vue-cli-package]: https://npmjs.com/package/@vue/cli +[vue-loader-package]: https://npmjs.com/package/vue-loader +[vue-server-renderer-package]: https://npmjs.com/package/vue-server-renderer +[vue-class-component-package]: https://npmjs.com/package/vue-class-component +[vue-rx-package]: https://npmjs.com/package/vue-rx +[vue-devtools-package]: https://chrome.google.com/webstore/detail/vuejs-devtools/nhdogjmejiglipccpnnnanhbledajbpd ## Documentation -To check out live examples and docs, visit [vuejs.org](https://vuejs.org). +To check out [live examples](https://vuejs.org/v2/examples/) and docs, visit [vuejs.org](https://vuejs.org). ## Questions -For questions and support please use the [the official forum](http://forum.vuejs.org) or [community chat](https://chat.vuejs.org/). The issue list of this repo is **exclusively** for bug reports and feature requests. +For questions and support please use [the official forum](http://forum.vuejs.org) or [community chat](https://chat.vuejs.org/). The issue list of this repo is **exclusively** for bug reports and feature requests. ## Issues Please make sure to read the [Issue Reporting Checklist](https://github.com/vuejs/vue/blob/dev/.github/CONTRIBUTING.md#issue-reporting-guidelines) before opening an issue. Issues not conforming to the guidelines may be closed immediately. -## Contribution - -Please make sure to read the [Contributing Guide](https://github.com/vuejs/vue/blob/dev/.github/CONTRIBUTING.md) before making a pull request. If you have a Vue-related project/component/tool, add it with a pull-request to [this curated list](https://github.com/vuejs/awesome-vue)! - ## Changelog -Details changes for each release are documented in the [release notes](https://github.com/vuejs/vue/releases). +Detailed changes for each release are documented in the [release notes](https://github.com/vuejs/vue/releases). ## Stay In Touch -For the latest releases and announcements, follow on Twitter: [@vuejs](https://twitter.com/vuejs) +- [Twitter](https://twitter.com/vuejs) +- [Blog](https://medium.com/the-vue-point) +- [Job Board](https://vuejobs.com/?ref=vuejs) + +## Contribution + +Please make sure to read the [Contributing Guide](https://github.com/vuejs/vue/blob/dev/.github/CONTRIBUTING.md) before making a pull request. If you have a Vue-related project/component/tool, add it with a pull request to [this curated list](https://github.com/vuejs/awesome-vue)! + +Thank you to all the people who already contributed to Vue! + + + ## License diff --git a/benchmarks/dbmon/lib/memory-stats.js b/benchmarks/dbmon/lib/memory-stats.js index df75fb307fb..03272d897c0 100644 --- a/benchmarks/dbmon/lib/memory-stats.js +++ b/benchmarks/dbmon/lib/memory-stats.js @@ -46,10 +46,7 @@ var MemoryStats = function (){ var perf = window.performance || {}; // polyfill usedJSHeapSize - if (!perf && !perf.memory){ - perf.memory = { usedJSHeapSize : 0 }; - } - if (perf && !perf.memory){ + if (!perf.memory){ perf.memory = { usedJSHeapSize : 0 }; } @@ -57,9 +54,9 @@ var MemoryStats = function (){ if( perf.memory.totalJSHeapSize === 0 ){ console.warn('totalJSHeapSize === 0... performance.memory is only available in Chrome .') } - + // TODO, add a sanity check to see if values are bucketed. - // If so, reminde user to adopt the --enable-precise-memory-info flag. + // If so, remind user to adopt the --enable-precise-memory-info flag. // open -a "/Applications/Google Chrome.app" --args --enable-precise-memory-info var lastTime = Date.now(); @@ -76,16 +73,16 @@ var MemoryStats = function (){ var delta = perf.memory.usedJSHeapSize - lastUsedHeap; lastUsedHeap = perf.memory.usedJSHeapSize; var color = delta < 0 ? '#830' : '#131'; - + var ms = perf.memory.usedJSHeapSize; msMin = Math.min( msMin, ms ); msMax = Math.max( msMax, ms ); msText.textContent = "Mem: " + bytesToSize(ms, 2); - + var normValue = ms / (30*1024*1024); var height = Math.min( 30, 30 - normValue * 30 ); updateGraph( msGraph, height, color); - + function bytesToSize( bytes, nFractDigit ){ var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB']; if (bytes == 0) return 'n/a'; @@ -97,5 +94,5 @@ var MemoryStats = function (){ } } - -}; \ No newline at end of file + +}; diff --git a/benchmarks/reorder-list/index.html b/benchmarks/reorder-list/index.html index 81b5a26d0d8..668160b0719 100644 --- a/benchmarks/reorder-list/index.html +++ b/benchmarks/reorder-list/index.html @@ -15,7 +15,7 @@ diff --git a/examples/commits/mock.js b/examples/commits/mock.js new file mode 100644 index 00000000000..0e22a088686 --- /dev/null +++ b/examples/commits/mock.js @@ -0,0 +1,575 @@ +window.MOCKS = { + master: [ + { + sha: "0948d999f2fddf9f90991956493f976273c5da1f", + node_id: + "MDY6Q29tbWl0MTE3MzAzNDI6MDk0OGQ5OTlmMmZkZGY5ZjkwOTkxOTU2NDkzZjk3NjI3M2M1ZGExZg==", + commit: { + author: { + name: "Evan You", + email: "yyx990803@gmail.com", + date: "2017-10-13T03:07:14Z" + }, + committer: { + name: "Evan You", + email: "yyx990803@gmail.com", + date: "2017-10-13T03:07:14Z" + }, + message: "build: release 2.5.0", + tree: { + sha: "7846816b875eb664ddf718fad04a720efeac72d0", + url: + "https://api.github.com/repos/vuejs/vue/git/trees/7846816b875eb664ddf718fad04a720efeac72d0" + }, + url: + "https://api.github.com/repos/vuejs/vue/git/commits/0948d999f2fddf9f90991956493f976273c5da1f", + comment_count: 0, + verification: { + verified: false, + reason: "unsigned", + signature: null, + payload: null + } + }, + url: + "https://api.github.com/repos/vuejs/vue/commits/0948d999f2fddf9f90991956493f976273c5da1f", + html_url: + "https://github.com/vuejs/vue/commit/0948d999f2fddf9f90991956493f976273c5da1f", + comments_url: + "https://api.github.com/repos/vuejs/vue/commits/0948d999f2fddf9f90991956493f976273c5da1f/comments", + author: { + login: "yyx990803", + id: 499550, + node_id: "MDQ6VXNlcjQ5OTU1MA==", + avatar_url: "https://avatars1.githubusercontent.com/u/499550?v=4", + gravatar_id: "", + url: "https://api.github.com/users/yyx990803", + html_url: "https://github.com/yyx990803", + followers_url: "https://api.github.com/users/yyx990803/followers", + following_url: + "https://api.github.com/users/yyx990803/following{/other_user}", + gists_url: "https://api.github.com/users/yyx990803/gists{/gist_id}", + starred_url: + "https://api.github.com/users/yyx990803/starred{/owner}{/repo}", + subscriptions_url: + "https://api.github.com/users/yyx990803/subscriptions", + organizations_url: "https://api.github.com/users/yyx990803/orgs", + repos_url: "https://api.github.com/users/yyx990803/repos", + events_url: "https://api.github.com/users/yyx990803/events{/privacy}", + received_events_url: + "https://api.github.com/users/yyx990803/received_events", + type: "User", + site_admin: false + }, + committer: { + login: "yyx990803", + id: 499550, + node_id: "MDQ6VXNlcjQ5OTU1MA==", + avatar_url: "https://avatars1.githubusercontent.com/u/499550?v=4", + gravatar_id: "", + url: "https://api.github.com/users/yyx990803", + html_url: "https://github.com/yyx990803", + followers_url: "https://api.github.com/users/yyx990803/followers", + following_url: + "https://api.github.com/users/yyx990803/following{/other_user}", + gists_url: "https://api.github.com/users/yyx990803/gists{/gist_id}", + starred_url: + "https://api.github.com/users/yyx990803/starred{/owner}{/repo}", + subscriptions_url: + "https://api.github.com/users/yyx990803/subscriptions", + organizations_url: "https://api.github.com/users/yyx990803/orgs", + repos_url: "https://api.github.com/users/yyx990803/repos", + events_url: "https://api.github.com/users/yyx990803/events{/privacy}", + received_events_url: + "https://api.github.com/users/yyx990803/received_events", + type: "User", + site_admin: false + }, + parents: [ + { + sha: "bc2918f0e596d0e133a25606cbb66075402ce6c3", + url: + "https://api.github.com/repos/vuejs/vue/commits/bc2918f0e596d0e133a25606cbb66075402ce6c3", + html_url: + "https://github.com/vuejs/vue/commit/bc2918f0e596d0e133a25606cbb66075402ce6c3" + } + ] + }, + { + sha: "bc2918f0e596d0e133a25606cbb66075402ce6c3", + node_id: + "MDY6Q29tbWl0MTE3MzAzNDI6YmMyOTE4ZjBlNTk2ZDBlMTMzYTI1NjA2Y2JiNjYwNzU0MDJjZTZjMw==", + commit: { + author: { + name: "Evan You", + email: "yyx990803@gmail.com", + date: "2017-10-13T03:04:35Z" + }, + committer: { + name: "Evan You", + email: "yyx990803@gmail.com", + date: "2017-10-13T03:04:35Z" + }, + message: "build: build 2.5.0", + tree: { + sha: "5c57af855d76df68ec0782a2d2f4cd0a54e80125", + url: + "https://api.github.com/repos/vuejs/vue/git/trees/5c57af855d76df68ec0782a2d2f4cd0a54e80125" + }, + url: + "https://api.github.com/repos/vuejs/vue/git/commits/bc2918f0e596d0e133a25606cbb66075402ce6c3", + comment_count: 0, + verification: { + verified: false, + reason: "unsigned", + signature: null, + payload: null + } + }, + url: + "https://api.github.com/repos/vuejs/vue/commits/bc2918f0e596d0e133a25606cbb66075402ce6c3", + html_url: + "https://github.com/vuejs/vue/commit/bc2918f0e596d0e133a25606cbb66075402ce6c3", + comments_url: + "https://api.github.com/repos/vuejs/vue/commits/bc2918f0e596d0e133a25606cbb66075402ce6c3/comments", + author: { + login: "yyx990803", + id: 499550, + node_id: "MDQ6VXNlcjQ5OTU1MA==", + avatar_url: "https://avatars1.githubusercontent.com/u/499550?v=4", + gravatar_id: "", + url: "https://api.github.com/users/yyx990803", + html_url: "https://github.com/yyx990803", + followers_url: "https://api.github.com/users/yyx990803/followers", + following_url: + "https://api.github.com/users/yyx990803/following{/other_user}", + gists_url: "https://api.github.com/users/yyx990803/gists{/gist_id}", + starred_url: + "https://api.github.com/users/yyx990803/starred{/owner}{/repo}", + subscriptions_url: + "https://api.github.com/users/yyx990803/subscriptions", + organizations_url: "https://api.github.com/users/yyx990803/orgs", + repos_url: "https://api.github.com/users/yyx990803/repos", + events_url: "https://api.github.com/users/yyx990803/events{/privacy}", + received_events_url: + "https://api.github.com/users/yyx990803/received_events", + type: "User", + site_admin: false + }, + committer: { + login: "yyx990803", + id: 499550, + node_id: "MDQ6VXNlcjQ5OTU1MA==", + avatar_url: "https://avatars1.githubusercontent.com/u/499550?v=4", + gravatar_id: "", + url: "https://api.github.com/users/yyx990803", + html_url: "https://github.com/yyx990803", + followers_url: "https://api.github.com/users/yyx990803/followers", + following_url: + "https://api.github.com/users/yyx990803/following{/other_user}", + gists_url: "https://api.github.com/users/yyx990803/gists{/gist_id}", + starred_url: + "https://api.github.com/users/yyx990803/starred{/owner}{/repo}", + subscriptions_url: + "https://api.github.com/users/yyx990803/subscriptions", + organizations_url: "https://api.github.com/users/yyx990803/orgs", + repos_url: "https://api.github.com/users/yyx990803/repos", + events_url: "https://api.github.com/users/yyx990803/events{/privacy}", + received_events_url: + "https://api.github.com/users/yyx990803/received_events", + type: "User", + site_admin: false + }, + parents: [ + { + sha: "df8f179cfc3b98d6e0f48502cc5071b993d9cdb5", + url: + "https://api.github.com/repos/vuejs/vue/commits/df8f179cfc3b98d6e0f48502cc5071b993d9cdb5", + html_url: + "https://github.com/vuejs/vue/commit/df8f179cfc3b98d6e0f48502cc5071b993d9cdb5" + } + ] + }, + { + sha: "df8f179cfc3b98d6e0f48502cc5071b993d9cdb5", + node_id: + "MDY6Q29tbWl0MTE3MzAzNDI6ZGY4ZjE3OWNmYzNiOThkNmUwZjQ4NTAyY2M1MDcxYjk5M2Q5Y2RiNQ==", + commit: { + author: { + name: "Evan You", + email: "yyx990803@gmail.com", + date: "2017-10-13T00:41:36Z" + }, + committer: { + name: "Evan You", + email: "yyx990803@gmail.com", + date: "2017-10-13T00:41:36Z" + }, + message: "test: make hydration spec more stable for Edge", + tree: { + sha: "b399dba6180378d6a04715a5624599b49b3e6454", + url: + "https://api.github.com/repos/vuejs/vue/git/trees/b399dba6180378d6a04715a5624599b49b3e6454" + }, + url: + "https://api.github.com/repos/vuejs/vue/git/commits/df8f179cfc3b98d6e0f48502cc5071b993d9cdb5", + comment_count: 0, + verification: { + verified: false, + reason: "unsigned", + signature: null, + payload: null + } + }, + url: + "https://api.github.com/repos/vuejs/vue/commits/df8f179cfc3b98d6e0f48502cc5071b993d9cdb5", + html_url: + "https://github.com/vuejs/vue/commit/df8f179cfc3b98d6e0f48502cc5071b993d9cdb5", + comments_url: + "https://api.github.com/repos/vuejs/vue/commits/df8f179cfc3b98d6e0f48502cc5071b993d9cdb5/comments", + author: { + login: "yyx990803", + id: 499550, + node_id: "MDQ6VXNlcjQ5OTU1MA==", + avatar_url: "https://avatars1.githubusercontent.com/u/499550?v=4", + gravatar_id: "", + url: "https://api.github.com/users/yyx990803", + html_url: "https://github.com/yyx990803", + followers_url: "https://api.github.com/users/yyx990803/followers", + following_url: + "https://api.github.com/users/yyx990803/following{/other_user}", + gists_url: "https://api.github.com/users/yyx990803/gists{/gist_id}", + starred_url: + "https://api.github.com/users/yyx990803/starred{/owner}{/repo}", + subscriptions_url: + "https://api.github.com/users/yyx990803/subscriptions", + organizations_url: "https://api.github.com/users/yyx990803/orgs", + repos_url: "https://api.github.com/users/yyx990803/repos", + events_url: "https://api.github.com/users/yyx990803/events{/privacy}", + received_events_url: + "https://api.github.com/users/yyx990803/received_events", + type: "User", + site_admin: false + }, + committer: { + login: "yyx990803", + id: 499550, + node_id: "MDQ6VXNlcjQ5OTU1MA==", + avatar_url: "https://avatars1.githubusercontent.com/u/499550?v=4", + gravatar_id: "", + url: "https://api.github.com/users/yyx990803", + html_url: "https://github.com/yyx990803", + followers_url: "https://api.github.com/users/yyx990803/followers", + following_url: + "https://api.github.com/users/yyx990803/following{/other_user}", + gists_url: "https://api.github.com/users/yyx990803/gists{/gist_id}", + starred_url: + "https://api.github.com/users/yyx990803/starred{/owner}{/repo}", + subscriptions_url: + "https://api.github.com/users/yyx990803/subscriptions", + organizations_url: "https://api.github.com/users/yyx990803/orgs", + repos_url: "https://api.github.com/users/yyx990803/repos", + events_url: "https://api.github.com/users/yyx990803/events{/privacy}", + received_events_url: + "https://api.github.com/users/yyx990803/received_events", + type: "User", + site_admin: false + }, + parents: [ + { + sha: "a85f95c422e0bde6ce4068f5e44e761d4e00ca08", + url: + "https://api.github.com/repos/vuejs/vue/commits/a85f95c422e0bde6ce4068f5e44e761d4e00ca08", + html_url: + "https://github.com/vuejs/vue/commit/a85f95c422e0bde6ce4068f5e44e761d4e00ca08" + } + ] + } + ], + dev: [ + { + sha: "4074104fac219e61e542f4da3a4800975a8063f2", + node_id: + "MDY6Q29tbWl0MTE3MzAzNDI6NDA3NDEwNGZhYzIxOWU2MWU1NDJmNGRhM2E0ODAwOTc1YTgwNjNmMg==", + commit: { + author: { + name: "Evan You", + email: "yyx990803@gmail.com", + date: "2018-12-11T21:51:40Z" + }, + committer: { + name: "Evan You", + email: "yyx990803@gmail.com", + date: "2018-12-11T21:51:40Z" + }, + message: "perf: skip normalization on single child element v-for", + tree: { + sha: "75b999a0562d64a38eb322973c982edfa8d84fda", + url: + "https://api.github.com/repos/vuejs/vue/git/trees/75b999a0562d64a38eb322973c982edfa8d84fda" + }, + url: + "https://api.github.com/repos/vuejs/vue/git/commits/4074104fac219e61e542f4da3a4800975a8063f2", + comment_count: 0, + verification: { + verified: false, + reason: "unsigned", + signature: null, + payload: null + } + }, + url: + "https://api.github.com/repos/vuejs/vue/commits/4074104fac219e61e542f4da3a4800975a8063f2", + html_url: + "https://github.com/vuejs/vue/commit/4074104fac219e61e542f4da3a4800975a8063f2", + comments_url: + "https://api.github.com/repos/vuejs/vue/commits/4074104fac219e61e542f4da3a4800975a8063f2/comments", + author: { + login: "yyx990803", + id: 499550, + node_id: "MDQ6VXNlcjQ5OTU1MA==", + avatar_url: "https://avatars1.githubusercontent.com/u/499550?v=4", + gravatar_id: "", + url: "https://api.github.com/users/yyx990803", + html_url: "https://github.com/yyx990803", + followers_url: "https://api.github.com/users/yyx990803/followers", + following_url: + "https://api.github.com/users/yyx990803/following{/other_user}", + gists_url: "https://api.github.com/users/yyx990803/gists{/gist_id}", + starred_url: + "https://api.github.com/users/yyx990803/starred{/owner}{/repo}", + subscriptions_url: + "https://api.github.com/users/yyx990803/subscriptions", + organizations_url: "https://api.github.com/users/yyx990803/orgs", + repos_url: "https://api.github.com/users/yyx990803/repos", + events_url: "https://api.github.com/users/yyx990803/events{/privacy}", + received_events_url: + "https://api.github.com/users/yyx990803/received_events", + type: "User", + site_admin: false + }, + committer: { + login: "yyx990803", + id: 499550, + node_id: "MDQ6VXNlcjQ5OTU1MA==", + avatar_url: "https://avatars1.githubusercontent.com/u/499550?v=4", + gravatar_id: "", + url: "https://api.github.com/users/yyx990803", + html_url: "https://github.com/yyx990803", + followers_url: "https://api.github.com/users/yyx990803/followers", + following_url: + "https://api.github.com/users/yyx990803/following{/other_user}", + gists_url: "https://api.github.com/users/yyx990803/gists{/gist_id}", + starred_url: + "https://api.github.com/users/yyx990803/starred{/owner}{/repo}", + subscriptions_url: + "https://api.github.com/users/yyx990803/subscriptions", + organizations_url: "https://api.github.com/users/yyx990803/orgs", + repos_url: "https://api.github.com/users/yyx990803/repos", + events_url: "https://api.github.com/users/yyx990803/events{/privacy}", + received_events_url: + "https://api.github.com/users/yyx990803/received_events", + type: "User", + site_admin: false + }, + parents: [ + { + sha: "47487607fbb99339038cf84990ba341c25b5e20d", + url: + "https://api.github.com/repos/vuejs/vue/commits/47487607fbb99339038cf84990ba341c25b5e20d", + html_url: + "https://github.com/vuejs/vue/commit/47487607fbb99339038cf84990ba341c25b5e20d" + } + ] + }, + { + sha: "47487607fbb99339038cf84990ba341c25b5e20d", + node_id: + "MDY6Q29tbWl0MTE3MzAzNDI6NDc0ODc2MDdmYmI5OTMzOTAzOGNmODQ5OTBiYTM0MWMyNWI1ZTIwZA==", + commit: { + author: { + name: "Evan You", + email: "yyx990803@gmail.com", + date: "2018-12-11T21:51:03Z" + }, + committer: { + name: "Evan You", + email: "yyx990803@gmail.com", + date: "2018-12-11T21:51:03Z" + }, + message: "fix: fix v-for component with undefined value\n\nfix #9181", + tree: { + sha: "cc30183c2663cd88a35a4a18f758ad0ca872805a", + url: + "https://api.github.com/repos/vuejs/vue/git/trees/cc30183c2663cd88a35a4a18f758ad0ca872805a" + }, + url: + "https://api.github.com/repos/vuejs/vue/git/commits/47487607fbb99339038cf84990ba341c25b5e20d", + comment_count: 0, + verification: { + verified: false, + reason: "unsigned", + signature: null, + payload: null + } + }, + url: + "https://api.github.com/repos/vuejs/vue/commits/47487607fbb99339038cf84990ba341c25b5e20d", + html_url: + "https://github.com/vuejs/vue/commit/47487607fbb99339038cf84990ba341c25b5e20d", + comments_url: + "https://api.github.com/repos/vuejs/vue/commits/47487607fbb99339038cf84990ba341c25b5e20d/comments", + author: { + login: "yyx990803", + id: 499550, + node_id: "MDQ6VXNlcjQ5OTU1MA==", + avatar_url: "https://avatars1.githubusercontent.com/u/499550?v=4", + gravatar_id: "", + url: "https://api.github.com/users/yyx990803", + html_url: "https://github.com/yyx990803", + followers_url: "https://api.github.com/users/yyx990803/followers", + following_url: + "https://api.github.com/users/yyx990803/following{/other_user}", + gists_url: "https://api.github.com/users/yyx990803/gists{/gist_id}", + starred_url: + "https://api.github.com/users/yyx990803/starred{/owner}{/repo}", + subscriptions_url: + "https://api.github.com/users/yyx990803/subscriptions", + organizations_url: "https://api.github.com/users/yyx990803/orgs", + repos_url: "https://api.github.com/users/yyx990803/repos", + events_url: "https://api.github.com/users/yyx990803/events{/privacy}", + received_events_url: + "https://api.github.com/users/yyx990803/received_events", + type: "User", + site_admin: false + }, + committer: { + login: "yyx990803", + id: 499550, + node_id: "MDQ6VXNlcjQ5OTU1MA==", + avatar_url: "https://avatars1.githubusercontent.com/u/499550?v=4", + gravatar_id: "", + url: "https://api.github.com/users/yyx990803", + html_url: "https://github.com/yyx990803", + followers_url: "https://api.github.com/users/yyx990803/followers", + following_url: + "https://api.github.com/users/yyx990803/following{/other_user}", + gists_url: "https://api.github.com/users/yyx990803/gists{/gist_id}", + starred_url: + "https://api.github.com/users/yyx990803/starred{/owner}{/repo}", + subscriptions_url: + "https://api.github.com/users/yyx990803/subscriptions", + organizations_url: "https://api.github.com/users/yyx990803/orgs", + repos_url: "https://api.github.com/users/yyx990803/repos", + events_url: "https://api.github.com/users/yyx990803/events{/privacy}", + received_events_url: + "https://api.github.com/users/yyx990803/received_events", + type: "User", + site_admin: false + }, + parents: [ + { + sha: "984393fed981c58ad79ed50424f023dcfa6829d0", + url: + "https://api.github.com/repos/vuejs/vue/commits/984393fed981c58ad79ed50424f023dcfa6829d0", + html_url: + "https://github.com/vuejs/vue/commit/984393fed981c58ad79ed50424f023dcfa6829d0" + } + ] + }, + { + sha: "984393fed981c58ad79ed50424f023dcfa6829d0", + node_id: + "MDY6Q29tbWl0MTE3MzAzNDI6OTg0MzkzZmVkOTgxYzU4YWQ3OWVkNTA0MjRmMDIzZGNmYTY4MjlkMA==", + commit: { + author: { + name: "krystal", + email: "krystalnumber@gmail.com", + date: "2018-12-11T16:37:39Z" + }, + committer: { + name: "Evan You", + email: "yyx990803@gmail.com", + date: "2018-12-11T16:37:39Z" + }, + message: "test: change model text's priority case (#9170)", + tree: { + sha: "9af5d03838b964ea98c3173c92c3e6e5263ee9ec", + url: + "https://api.github.com/repos/vuejs/vue/git/trees/9af5d03838b964ea98c3173c92c3e6e5263ee9ec" + }, + url: + "https://api.github.com/repos/vuejs/vue/git/commits/984393fed981c58ad79ed50424f023dcfa6829d0", + comment_count: 0, + verification: { + verified: false, + reason: "unsigned", + signature: null, + payload: null + } + }, + url: + "https://api.github.com/repos/vuejs/vue/commits/984393fed981c58ad79ed50424f023dcfa6829d0", + html_url: + "https://github.com/vuejs/vue/commit/984393fed981c58ad79ed50424f023dcfa6829d0", + comments_url: + "https://api.github.com/repos/vuejs/vue/commits/984393fed981c58ad79ed50424f023dcfa6829d0/comments", + author: { + login: "dejour", + id: 7224044, + node_id: "MDQ6VXNlcjcyMjQwNDQ=", + avatar_url: "https://avatars3.githubusercontent.com/u/7224044?v=4", + gravatar_id: "", + url: "https://api.github.com/users/dejour", + html_url: "https://github.com/dejour", + followers_url: "https://api.github.com/users/dejour/followers", + following_url: + "https://api.github.com/users/dejour/following{/other_user}", + gists_url: "https://api.github.com/users/dejour/gists{/gist_id}", + starred_url: + "https://api.github.com/users/dejour/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/dejour/subscriptions", + organizations_url: "https://api.github.com/users/dejour/orgs", + repos_url: "https://api.github.com/users/dejour/repos", + events_url: "https://api.github.com/users/dejour/events{/privacy}", + received_events_url: + "https://api.github.com/users/dejour/received_events", + type: "User", + site_admin: false + }, + committer: { + login: "yyx990803", + id: 499550, + node_id: "MDQ6VXNlcjQ5OTU1MA==", + avatar_url: "https://avatars1.githubusercontent.com/u/499550?v=4", + gravatar_id: "", + url: "https://api.github.com/users/yyx990803", + html_url: "https://github.com/yyx990803", + followers_url: "https://api.github.com/users/yyx990803/followers", + following_url: + "https://api.github.com/users/yyx990803/following{/other_user}", + gists_url: "https://api.github.com/users/yyx990803/gists{/gist_id}", + starred_url: + "https://api.github.com/users/yyx990803/starred{/owner}{/repo}", + subscriptions_url: + "https://api.github.com/users/yyx990803/subscriptions", + organizations_url: "https://api.github.com/users/yyx990803/orgs", + repos_url: "https://api.github.com/users/yyx990803/repos", + events_url: "https://api.github.com/users/yyx990803/events{/privacy}", + received_events_url: + "https://api.github.com/users/yyx990803/received_events", + type: "User", + site_admin: false + }, + parents: [ + { + sha: "6980035a86cfb79368af77a5040e468177d6b14a", + url: + "https://api.github.com/repos/vuejs/vue/commits/6980035a86cfb79368af77a5040e468177d6b14a", + html_url: + "https://github.com/vuejs/vue/commit/6980035a86cfb79368af77a5040e468177d6b14a" + } + ] + } + ] +}; diff --git a/examples/firebase/index.html b/examples/firebase/index.html index 5b1cf3d4a5e..7bab1a70b55 100644 --- a/examples/firebase/index.html +++ b/examples/firebase/index.html @@ -21,8 +21,8 @@
- - + +