diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 000000000..10c53f1c5 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,143 @@ +version: 2.1 + +executors: + node_latest_browser: + docker: + - image: circleci/node:latest-browsers + node_latest: + docker: + - image: circleci/node:13 + node_lts_12: + docker: + - image: circleci/node:12 + default_executor: node_latest + +aliases: + - &repo_path + ~/verdaccio + - &defaults + working_directory: *repo_path + - &yarn_cache_key + yarn-sha-{{ checksum "yarn.lock" }} + - &coverage_key + coverage-{{ .Branch }}-{{ .Revision }} + - &ignore_non_dev_branches + filters: + tags: + only: /.*/ + branches: + ignore: + - gh-pages + - /release\/.*/ + +commands: + restore_repo: + description: Restore repository from workspace + steps: + - attach_workspace: + at: *repo_path + run_test: + description: Run test and functional test + steps: + - run: + name: Test + command: yarn run test + - store_test_results: + path: reports/ + +jobs: + prepare: + <<: *defaults + executor: default_executor + steps: + - checkout + - restore_cache: + key: *yarn_cache_key + - run: + name: Install dependencies + command: yarn + - run: + name: Install dependencies + command: yarn bootstrap + - run: + name: Prepare CI + command: yarn lint + - run: + name: Clean project + command: yarn clean + - run: + name: Build project + command: yarn build + - save_cache: + key: *yarn_cache_key + paths: + - ~/.yarn + - ~/.cache/yarn + - node_modules + - persist_to_workspace: + root: *repo_path + paths: + - ./* + + test_node_latest: + <<: *defaults + executor: node_latest + steps: + - restore_repo + - run_test + - save_cache: + key: *coverage_key + paths: + - coverage + test_node_lts_12: + <<: *defaults + executor: node_lts_12 + steps: + - restore_repo + - run_test +# test_e2e_cli: +# <<: *defaults +# executor: node_latest +# steps: +# - restore_repo +# - run: +# name: Test End-to-End ClI +# command: yarn run test:e2e:cli + + coverage: + <<: *defaults + executor: default_executor + steps: + - restore_repo + - restore_cache: + key: *coverage_key + - run: + name: Publish coverage + command: yarn run coverage:publish + - store_artifacts: + path: coverage + +workflows: + version: 2 + workflow: + jobs: + - prepare: + <<: *ignore_non_dev_branches + - test_node_latest: + requires: + - prepare + <<: *ignore_non_dev_branches + - test_node_lts_12: + requires: + - prepare + <<: *ignore_non_dev_branches +# - test_e2e_cli: +# requires: +# - prepare +# - test_node_latest +# - test_node_lts_12 +# <<: *ignore_non_dev_branches +# - coverage: +# requires: +# - test_e2e_cli +# <<: *ignore_non_dev_branches diff --git a/.eslintignore b/.eslintignore index a7aa536e2..6a0f1134b 100644 --- a/.eslintignore +++ b/.eslintignore @@ -15,8 +15,7 @@ Dockerfile *.png *.jpg *.sh -*.ico -test/unit/partials/ +**/partials/** +**/fixtures/** types/custom.d.ts -docker-examples/ -LICENSE +**/mock/store/** diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 81c7cbaf3..9e3c047f5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,21 +9,25 @@ jobs: strategy: fail-fast: false matrix: - node_version: [12, 14, 15] + node_version: [8, 10, 12, 13] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2.3.3 + - uses: actions/checkout@v2.3.1 - name: Use Node ${{ matrix.node_version }} - uses: actions/setup-node@v2.1.5 + uses: actions/setup-node@v2.1.1 with: - node-version: ${{ matrix.node_version }} + node_version: ${{ matrix.node_version }} - name: Install - run: yarn install --immutable - - name: Build - run: yarn code:build + run: yarn + - name: Bootstrap Lerna + run: yarn bootstrap - name: Lint run: yarn lint + - name: Clean + run: yarn clean + - name: Build + run: yarn build - name: Test run: yarn test diff --git a/.github/workflows/docker-publish-pre-check.yml b/.github/workflows/docker-publish-pre-check.yml index a42ece31d..1c0d89a0a 100644 --- a/.github/workflows/docker-publish-pre-check.yml +++ b/.github/workflows/docker-publish-pre-check.yml @@ -9,7 +9,7 @@ jobs: steps: - uses: actions/checkout@v2.3.3 - name: Build - run: docker build . + run: yarn docker env: VERDACCIO_BUILD_REGISTRY: https://registry.verdaccio.org diff --git a/.github/workflows/release-canary.yml b/.github/workflows/release-canary.yml new file mode 100644 index 000000000..3fee1737c --- /dev/null +++ b/.github/workflows/release-canary.yml @@ -0,0 +1,29 @@ +name: Canary Release to Verdaccio + +on: [push] + +jobs: + release: + name: Release + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - name: Use Node (latest) + uses: actions/setup-node@v1 + with: + node_version: 13 + - name: Install + run: yarn install --no-lockfile + - name: Lint + run: yarn lint + - name: Clean + run: yarn clean + - name: Build + run: yarn build + - name: Test + run: yarn test + - name: Publish + run: | + echo "//registry.verdaccio.org/:_authToken=${{ secrets.VERDACCIO_TOKEN }}" > .npmrc + git update-index --assume-unchanged .npmrc + yarn publish:canary diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f520fe1c6..e69de29bb 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,32 +0,0 @@ -name: Release - -on: - push: - tags: - - '*' - -jobs: - release: - name: Release - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2.3.3 - - name: Use Node (latest) - uses: actions/setup-node@v2.1.5 - with: - node-version: 14 - - name: Install - run: yarn install - - name: Build - run: yarn code:build - - name: Lint - run: yarn lint - - name: Publish - run: sh scripts/publish.sh - env: - REGISTRY_AUTH_TOKEN: ${{ secrets.REGISTRY_AUTH_TOKEN }} - REGISTRY_URL: registry.npmjs.org - - name: Create release notes - run: sh scripts/github-release.sh - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index 977ed83b2..a453ccfdd 100644 --- a/.gitignore +++ b/.gitignore @@ -5,41 +5,22 @@ build/ ### Test -test/unit/partials/store/test-*-storage/* -test/unit/partials/store/*-storage/* -test/unit/partials/store/storage_default_storage/* .verdaccio-db.json .sinopia-db.json ### -!bin/verdaccio test-storage* -access-storage* .verdaccio_test_env node_modules package-lock.json -npm_test-fails-add-tarball* yarn-error.log -# Istanbul + +# jest reports/ coverage/ -.nyc* .idea/ - -# React -bundle.js -bundle.js.map -__tests__ - # Compiled script -static/* - -# This is the Yarn build state; it's local to each clone -/.yarn/build-state.yml - -# This is the Yarn install state cache, it can be rebuilt anytime -/.yarn/install-state.gz -.history +packages/partials diff --git a/.stylelintrc b/.stylelintrc deleted file mode 100644 index afc8dce1c..000000000 --- a/.stylelintrc +++ /dev/null @@ -1,41 +0,0 @@ -{ - "processors": ["stylelint-processor-styled-components"], - "extends": [ - "stylelint-config-recommended" - ], - "rules": { - "at-rule-no-unknown": true, - "block-no-empty": true, - "color-named": "always-where-possible", - "comment-no-empty": true, - "declaration-block-no-duplicate-properties": [ - true, - { - ignore: ["consecutive-duplicates-with-different-values"] - } - ], - "declaration-block-no-shorthand-property-overrides": true, - "font-family-no-duplicate-names": true, - "color-no-invalid-hex": true, - "font-family-no-missing-generic-family-keyword": true, - "function-calc-no-unspaced-operator": true, - "function-linear-gradient-no-nonstandard-direction": true, - "keyframe-declaration-no-important": true, - "property-no-vendor-prefix": true, - "media-feature-name-no-unknown": true, - "no-descending-specificity": [true, { "severity": "warning" }], - "no-duplicate-at-import-rules": true, - "no-duplicate-selectors": true, - "no-empty-source": true, - "no-extra-semicolons": true, - "no-invalid-double-slash-comments": true, - "property-no-unknown": true, - "selector-pseudo-class-no-unknown": true, - "selector-pseudo-element-no-unknown": true, - "selector-type-no-unknown": [true, { "severity": "warning" }], - "string-no-newline": true, - "unit-no-unknown": true - } - -} - diff --git a/.vscode/settings.json b/.vscode/settings.json index a7c10e12e..91a26086d 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -7,4 +7,4 @@ "**/coverage": true }, "typescript.tsdk": "node_modules/typescript/lib" -} +} \ No newline at end of file diff --git a/.yarnrc b/.yarnrc new file mode 100644 index 000000000..f8dde3017 --- /dev/null +++ b/.yarnrc @@ -0,0 +1,2 @@ +save-prefix "" +registry "https://registry.verdaccio.org" diff --git a/Dockerfile b/Dockerfile index fdeae6377..9a5cebe28 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM --platform=${BUILDPLATFORM:-linux/amd64} node:14.16.1-alpine as builder +FROM node:12.18.3-alpine as builder ENV NODE_ENV=production \ VERDACCIO_BUILD_REGISTRY=https://registry.verdaccio.org @@ -12,18 +12,14 @@ RUN apk --no-cache add openssl ca-certificates wget && \ WORKDIR /opt/verdaccio-build COPY . . -RUN yarn config set npmRegistryServer $VERDACCIO_BUILD_REGISTRY && \ - yarn config set enableProgressBars false && \ - yarn config set enableTelemetry false && \ - yarn install && \ +RUN yarn config set registry $VERDACCIO_BUILD_REGISTRY && \ + yarn install --production=false && \ + yarn build && \ yarn lint && \ - yarn code:docker-build && \ yarn cache clean && \ - yarn workspaces focus --production + yarn install --production=true - - -FROM node:14.16.1-alpine +FROM node:12.18.3-alpine LABEL maintainer="https://github.com/verdaccio/verdaccio" ENV VERDACCIO_APPDIR=/opt/verdaccio \ @@ -42,10 +38,11 @@ RUN mkdir -p /verdaccio/storage /verdaccio/plugins /verdaccio/conf COPY --from=builder /opt/verdaccio-build . -ADD conf/docker.yaml /verdaccio/conf/config.yaml +RUN ls packages/config/src/conf +ADD packages/config/src/conf/docker.yaml /verdaccio/conf/config.yaml RUN adduser -u $VERDACCIO_USER_UID -S -D -h $VERDACCIO_APPDIR -g "$VERDACCIO_USER_NAME user" -s /sbin/nologin $VERDACCIO_USER_NAME && \ - chmod -R +x $VERDACCIO_APPDIR/bin $VERDACCIO_APPDIR/docker-bin && \ + chmod -R +x $VERDACCIO_APPDIR/packages/verdaccio/bin $VERDACCIO_APPDIR/docker-bin && \ chown -R $VERDACCIO_USER_UID:root /verdaccio/storage && \ chmod -R g=u /verdaccio/storage /etc/passwd @@ -57,4 +54,4 @@ VOLUME /verdaccio/storage ENTRYPOINT ["uid_entrypoint"] -CMD $VERDACCIO_APPDIR/bin/verdaccio --config /verdaccio/conf/config.yaml --listen $VERDACCIO_PROTOCOL://0.0.0.0:$VERDACCIO_PORT +CMD $VERDACCIO_APPDIR/packages/verdaccio/bin/verdaccio --config /verdaccio/conf/config.yaml --listen $VERDACCIO_PROTOCOL://0.0.0.0:$VERDACCIO_PORT diff --git a/bin/verdaccio b/bin/verdaccio deleted file mode 100755 index b6e051fb8..000000000 --- a/bin/verdaccio +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env node - -require('../build/lib/cli'); diff --git a/debug/.babelrc b/debug/.babelrc new file mode 100644 index 000000000..9c3626dfd --- /dev/null +++ b/debug/.babelrc @@ -0,0 +1,4 @@ +{ + "presets": [["@verdaccio"]], + "debug": true +} diff --git a/debug/bootstrap.js b/debug/bootstrap.js index 4ac9630fe..1bcb31f89 100644 --- a/debug/bootstrap.js +++ b/debug/bootstrap.js @@ -3,4 +3,4 @@ require('@babel/register')({ extensions: [".ts", ".js"] }); -require('../src/lib/cli'); +require('../packages/cli/src/index'); diff --git a/debug/debug.js b/debug/debug.js new file mode 100644 index 000000000..ccecdf94b --- /dev/null +++ b/debug/debug.js @@ -0,0 +1 @@ +require('@verdaccio/cli'); diff --git a/debug/package.json b/debug/package.json new file mode 100644 index 000000000..421ee1561 --- /dev/null +++ b/debug/package.json @@ -0,0 +1,9 @@ +{ + "name": "debug", + "private": true, + "version": "1.0.0", + "dependencies": { + "@verdaccio/babel-preset": "^8.2.0", + "@verdaccio/eslint-config": "^8.2.0" + } +} diff --git a/lerna.json b/lerna.json new file mode 100644 index 000000000..f0c526445 --- /dev/null +++ b/lerna.json @@ -0,0 +1,14 @@ +{ + "version": "5.0.0-alpha.0", + "packages": [ + "packages/*" + ], + "npmClient": "yarn", + "useWorkspaces": true, + "stream": true, + "command": { + "publish": { + "message": "chore: publish release %s" + } + } +} diff --git a/package.json b/package.json index 1f1f2f550..a0586d06b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,4 @@ { - "name": "verdaccio", - "version": "5.0.0", - "description": "A lightweight private npm proxy registry", "author": { "name": "Verdaccio Maintainers", "email": "verdaccio.npm@gmail.com" @@ -11,205 +8,80 @@ "url": "git://github.com/verdaccio/verdaccio" }, "homepage": "https://verdaccio.org", - "main": "build/index.js", - "bin": "./bin/verdaccio", + "private": true, + "workspaces": [ + "packages/*" + ], "funding": { "type": "opencollective", "url": "https://opencollective.com/verdaccio" }, - "dependencies": { - "@verdaccio/commons-api": "10.0.0", - "@verdaccio/local-storage": "10.0.1", - "@verdaccio/readme": "10.0.0", - "@verdaccio/streams": "10.0.0", - "@verdaccio/ui-theme": "3.0.1", - "JSONStream": "1.3.5", - "async": "3.2.0", - "body-parser": "1.19.0", - "clipanion": "3.0.0-rc.11", - "compression": "1.7.4", - "cookies": "0.8.0", - "cors": "2.8.5", - "dayjs": "1.10.4", - "debug": "^4.3.1", - "envinfo": "7.7.4", - "express": "4.17.1", - "fast-safe-stringify": "^2.0.7", - "handlebars": "4.7.7", - "http-errors": "1.8.0", - "js-yaml": "4.0.0", - "jsonwebtoken": "8.5.1", - "kleur": "4.1.4", - "lodash": "4.17.21", - "lru-cache": "6.0.0", - "lunr-mutable-indexes": "2.3.2", - "marked": "2.0.1", - "memoizee": "0.4.15", - "mime": "2.5.2", - "minimatch": "3.0.4", - "mkdirp": "1.0.4", - "mv": "2.1.1", - "pino": "6.11.2", - "pkginfo": "0.4.1", - "prettier-bytes": "^1.0.3", - "pretty-ms": "^5.0.0", - "request": "2.88.0", - "semver": "7.3.4", - "validator": "13.5.2", - "verdaccio-audit": "10.0.0", - "verdaccio-htpasswd": "10.0.0" - }, "devDependencies": { - "@babel/cli": "7.13.0", - "@babel/core": "7.13.8", - "@babel/node": "7.13.0", - "@babel/plugin-proposal-class-properties": "7.13.0", - "@babel/plugin-proposal-decorators": "7.13.5", - "@babel/plugin-proposal-export-namespace-from": "7.12.13", - "@babel/plugin-proposal-function-sent": "7.12.13", - "@babel/plugin-proposal-json-strings": "7.13.8", - "@babel/plugin-proposal-numeric-separator": "7.12.13", - "@babel/plugin-proposal-object-rest-spread": "7.13.8", - "@babel/plugin-proposal-throw-expressions": "7.12.13", - "@babel/plugin-syntax-dynamic-import": "7.8.3", - "@babel/plugin-syntax-import-meta": "7.10.4", - "@babel/plugin-transform-async-to-generator": "7.13.0", - "@babel/plugin-transform-classes": "7.13.0", - "@babel/plugin-transform-runtime": "7.13.9", - "@babel/polyfill": "^7.12.1", - "@babel/preset-env": "7.13.9", - "@babel/preset-typescript": "7.13.0", - "@babel/register": "7.13.8", - "@babel/runtime": "7.13.9", - "@commitlint/cli": "12.0.1", - "@commitlint/config-conventional": "12.0.1", - "@octokit/rest": "16.43.2", - "@types/async": "3.2.4", + "@commitlint/cli": "8.3.5", + "@commitlint/config-conventional": "8.2.0", + "@octokit/rest": "16.28.9", + "@types/async": "3.0.3", "@types/bunyan": "1.8.6", - "@types/express": "4.17.6", - "@types/http-errors": "1.8.0", - "@types/jest": "26.0.14", - "@types/lodash": "4.14.167", + "@types/express": "4.17.1", + "@types/http-errors": "1.6.3", + "@types/jest": "24.0.25", + "@types/lodash": "4.14.149", "@types/mime": "2.0.1", "@types/minimatch": "3.0.3", - "@types/node": "14.14.37", - "@types/pino": "6.3.6", - "@types/request": "2.48.5", - "@types/semver": "7.3.4", - "@typescript-eslint/eslint-plugin": "4.13.0", - "@typescript-eslint/parser": "4.13.0", - "@verdaccio/eslint-config": "^8.5.0", - "@verdaccio/types": "^9.7.2", - "all-contributors-cli": "6.20.0", - "babel-eslint": "10.1.0", - "babel-jest": "26.6.3", - "babel-loader": "^8.2.2", - "babel-plugin-dynamic-import-node": "2.3.3", - "codecov": "3.8.1", - "cross-env": "7.0.3", - "detect-secrets": "1.0.6", - "eslint": "7.19.0", - "eslint-config-google": "0.14.0", - "eslint-config-prettier": "7.2.0", - "eslint-plugin-babel": "5.3.1", - "eslint-plugin-import": "2.22.1", - "eslint-plugin-jest": "24.1.3", - "eslint-plugin-jsx-a11y": "6.4.1", - "eslint-plugin-react": "7.22.0", - "eslint-plugin-react-hooks": "4.2.0", - "eslint-plugin-simple-import-sort": "7.0.0", - "eslint-plugin-verdaccio": "9.6.1", - "fs-extra": "9.1.0", - "get-stdin": "8.0.0", + "@types/node": "12.12.21", + "@types/request": "2.48.3", + "@types/semver": "6.2.0", + "@types/express-serve-static-core": "4.17.1", + "@verdaccio/babel-preset": "^8.5.0", + "@verdaccio/eslint-config": "^9.0.0", + "@verdaccio/types": "^9.0.0", + "codecov": "3.6.1", + "cross-env": "6.0.3", + "detect-secrets": "1.0.5", + "eslint": "6.8.0", + "fs-extra": "8.1.0", + "get-stdin": "7.0.0", + "kleur": "3.0.3", "husky": "2.7.0", - "in-publish": "2.0.1", - "jest": "25.5.4", - "jest-environment-node": "25.5.0", - "jest-junit": "9.0.0", + "in-publish": "2.0.0", + "jest": "^24.9.0", + "jest-environment-node": "^24.9.0", + "jest-junit": "^9.0.0", + "lerna": "^3.18.4", "lint-staged": "8.2.1", - "lockfile-lint": "4.3.7", - "nock": "12.0.3", - "node-mocks-http": "^1.10.1", - "prettier": "2.2.1", - "puppeteer": "5.5.0", - "rimraf": "3.0.2", - "selfsigned": "1.10.8", - "standard-version": "9.1.1", - "supertest": "6.1.1", - "typescript": "4.1.3", - "verdaccio-auth-memory": "10.0.0", - "verdaccio-memory": "10.0.0" + "nock": "^11.7.2", + "prettier": "^1.19.1", + "rimraf": "3.0.0", + "selfsigned": "1.10.7", + "standard-version": "^7.0.1", + "supertest": "^4.0.2", + "typescript": "^3.7.5", + "verdaccio-auth-memory": "^8.5.0", + "verdaccio-memory": "^8.5.0", + "verdaccio": "^4.4.0" }, - "keywords": [ - "private", - "package", - "repository", - "registry", - "enterprise", - "modules", - "proxy", - "server", - "verdaccio" - ], "scripts": { - "release": "standard-version -a -s", - "prepublish": "in-publish && yarn run code:build || not-in-publish", - "type-check": "tsc --noEmit", - "type-check:watch": "yarn run type-check -- --watch", - "pretest": "yarn run code:build", - "format": "prettier --single-quote --trailing-comma none --write \"{src,test}/**/*.ts\"", - "format:check": "prettier --check \"**/*.{js,jsx,ts,tsx,json,yml,yaml,md}\" --debug-check", - "test": "yarn run test:unit", - "test:clean": "npx jest --clearCache", - "test:unit": "cross-env NODE_ENV=test TZ=UTC FORCE_COLOR=1 jest --config ./jest.config.js --maxWorkers 2 --passWithNoTests", - "test:functional": "cross-env NODE_ENV=test jest --config ./test/jest.config.functional.js --testPathPattern ./test/functional/index* --passWithNoTests", - "test:e2e:cli": "cross-env NODE_ENV=test jest --config ./test/e2e-cli/jest.config.e2e.cli.js --passWithNoTests", - "test:e2e": "yarn jest --config ./test/jest.config.e2e.js", - "test:all": "yarn run test && yarn run test:functional && yarn run test:e2e & yarn run test:e2e:pkg", - "pre:ci": "yarn run lint", - "coverage:publish": "codecov", - "lint": "yarn run type-check && yarn run lint:ts", - "lint:ts": "eslint \"**/*.{js,jsx,ts,tsx}\"", - "lint:lockfile": "lockfile-lint --path yarn.lock --type yarn --validate-https --allowed-hosts verdaccio npm yarn", - "start": "yarn babel-node --extensions \".ts,.tsx\" src/lib/cli", - "start:debug": "yarn node debug/bootstrap.js", - "code:build": "yarn babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps inline", - "code:docker-build": "yarn babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\"", - "docker": "docker build -t verdaccio/verdaccio:pr-2122 . --no-cache", - "docker:run": "docker run -it --rm -p 4873:4873 verdaccio/verdaccio:local" - }, - "engines": { - "node": ">=12", - "npm": ">=6" - }, - "preferGlobal": true, - "husky": { - "hooks": { - "pre-commit": "lint-staged", - "commit-msg": "commitlint -e $GIT_PARAMS" - } - }, - "lint-staged": { - "relative": true, - "linters": { - "*": [ - "eslint .", - "git add" - ] - }, - "ignore": [ - "*.json" - ] + "bootstrap": "lerna bootstrap", + "debug": "node debug/bootstrap.js", + "dev": "cross-env BABEL_ENV=registry babel-node --extensions \".ts,.tsx\" packages/cli/src", + "clean": "lerna run clean", + "build": "lerna run build", + "docker": "docker build -t verdaccio/verdaccio:local . --no-cache", + "release": "lerna version --conventional-commits", + "version:canary": "lerna version --conventional-commits --conventional-prerelease --no-commit-hooks --exact --no-changelog --yes --preid alpha", + "publish:canary": "lerna publish from-package --canary --yes --no-git-reset --no-git-tag-version --no-push --force-publish --concurrency 1", + "release:from-prerelease": "lerna version --conventional-commits --conventional-graduate", + "release:prerelease": "lerna version --conventional-commits --conventional-prerelease --preid next --registry http://localhost:4873", + "release:publish": "lerna publish from-git", + "release:publish-prerelease": "lerna publish from-git --pre-dist-tag next", + "lint": "eslint \"packages/**/@(src|tests)/**\"", + "test": "lerna run test --concurrency 1", + "test:e2e:cli": "cross-env NODE_ENV=test jest --config ./test/e2e-cli/jest.config.e2e.cli.js --passWithNoTests" }, "license": "MIT", "commitlint": { "extends": [ "@commitlint/config-conventional" ] - }, - "collective": { - "type": "opencollective", - "url": "https://opencollective.com/verdaccio", - "logo": "https://opencollective.com/verdaccio/logo.txt" } } diff --git a/src/lib/.eslintrc b/packages/.eslintrc similarity index 100% rename from src/lib/.eslintrc rename to packages/.eslintrc diff --git a/packages/api/.babelrc b/packages/api/.babelrc new file mode 100644 index 000000000..28397a1bd --- /dev/null +++ b/packages/api/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": [["@verdaccio"]] +} diff --git a/src/api/.eslintrc b/packages/api/.eslintrc similarity index 100% rename from src/api/.eslintrc rename to packages/api/.eslintrc diff --git a/packages/api/jest.config.js b/packages/api/jest.config.js new file mode 100644 index 000000000..45146c37f --- /dev/null +++ b/packages/api/jest.config.js @@ -0,0 +1,9 @@ +module.exports = { + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'], + transform: { + '^.+\\.(js|jsx|ts|tsx)$': 'babel-jest', + }, + verbose: true, + collectCoverage: true, + coveragePathIgnorePatterns: ['node_modules', 'fixtures'], +}; diff --git a/packages/api/package.json b/packages/api/package.json new file mode 100644 index 000000000..ad3271b01 --- /dev/null +++ b/packages/api/package.json @@ -0,0 +1,43 @@ +{ + "name": "@verdaccio/api", + "version": "5.0.0-alpha.0", + "description": "loaders logic", + "main": "./build/index.js", + "types": "build/index.d.ts", + "author": { + "name": "Juan Picado", + "email": "juanpicado19@gmail.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/verdaccio/verdaccio" + }, + "homepage": "https://verdaccio.org", + "scripts": { + "clean": "rimraf ./build", + "test": "cross-env NODE_ENV=test BABEL_ENV=test jest", + "type-check": "tsc --noEmit", + "build:types": "tsc --emitDeclarationOnly --declaration true", + "build:js": "cross-env BABEL_ENV=registry babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "build": "npm run build:js && npm run build:types" + }, + "license": "MIT", + "dependencies": { + "@verdaccio/commons-api": "^9.0.0", + "@verdaccio/dev-commons": "5.0.0-alpha.0", + "@verdaccio/hooks": "5.0.0-alpha.0", + "@verdaccio/logger": "5.0.0-alpha.0", + "@verdaccio/middleware": "5.0.0-alpha.0", + "@verdaccio/utils": "5.0.0-alpha.0", + "body-parser": "^1.19.0", + "cookies": "^0.8.0", + "express": "4.17.1", + "lodash": "^4.17.15", + "mime": "^2.4.4" + }, + "devDependencies": { + "@verdaccio/dev-types": "5.0.0-alpha.0", + "@verdaccio/types": "^9.0.0" + }, + "gitHead": "7c246ede52ff717707fcae66dd63fc4abd536982" +} diff --git a/packages/api/src/dist-tags.ts b/packages/api/src/dist-tags.ts new file mode 100644 index 000000000..160845c5a --- /dev/null +++ b/packages/api/src/dist-tags.ts @@ -0,0 +1,78 @@ +import mime from 'mime'; +import _ from 'lodash'; +import{ Router } from 'express'; + +import { media, allow } from '@verdaccio/middleware'; +import { API_MESSAGE, HTTP_STATUS, DIST_TAGS } from '@verdaccio/dev-commons'; +import { VerdaccioError } from '@verdaccio/commons-api'; +import { Package } from '@verdaccio/types'; + +// @ts-ignore +import{ IAuth, $ResponseExtend, $RequestExtend, $NextFunctionVer, IStorageHandler } from '@verdaccio/dev-types'; + +export default function(route: Router, auth: IAuth, storage: IStorageHandler): void { + const can = allow(auth); + const tag_package_version = function(req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): $NextFunctionVer { + if (_.isString(req.body) === false) { + return next('route'); + } + + const tags = {}; + tags[req.params.tag] = req.body; + storage.mergeTags(req.params.package, tags, function(err: Error): $NextFunctionVer { + if (err) { + return next(err); + } + res.status(HTTP_STATUS.CREATED); + return next({ ok: API_MESSAGE.TAG_ADDED }); + }); + }; + + // tagging a package + route.put('/:package/:tag', can('publish'), media(mime.getType('json')), tag_package_version); + + route.post('/-/package/:package/dist-tags/:tag', can('publish'), media(mime.getType('json')), tag_package_version); + + route.put('/-/package/:package/dist-tags/:tag', can('publish'), media(mime.getType('json')), tag_package_version); + + route.delete('/-/package/:package/dist-tags/:tag', can('publish'), function(req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { + const tags = {}; + tags[req.params.tag] = null; + storage.mergeTags(req.params.package, tags, function(err: VerdaccioError): $NextFunctionVer { + if (err) { + return next(err); + } + res.status(HTTP_STATUS.CREATED); + return next({ + ok: API_MESSAGE.TAG_REMOVED, + }); + }); + }); + + route.get('/-/package/:package/dist-tags', can('access'), function(req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { + storage.getPackage({ + name: req.params.package, + uplinksLook: true, + req, + callback: function(err: VerdaccioError, info: Package): $NextFunctionVer { + if (err) { + return next(err); + } + + next(info[DIST_TAGS]); + }, + }); + }); + + route.post('/-/package/:package/dist-tags', can('publish'), function(req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { + storage.mergeTags(req.params.package, req.body, function(err: VerdaccioError): $NextFunctionVer { + if (err) { + return next(err); + } + res.status(HTTP_STATUS.CREATED); + return next({ + ok: API_MESSAGE.TAG_UPDATED, + }); + }); + }); +} diff --git a/src/api/endpoint/index.ts b/packages/api/src/index.ts similarity index 67% rename from src/api/endpoint/index.ts rename to packages/api/src/index.ts index d317c4ba6..eaaafefec 100644 --- a/src/api/endpoint/index.ts +++ b/packages/api/src/index.ts @@ -1,31 +1,26 @@ -import { Config } from '@verdaccio/types'; import _ from 'lodash'; - import express from 'express'; + +import { match, validateName, validatePackage, encodeScopePackage, antiLoop } from '@verdaccio/middleware'; +import { IAuth, IStorageHandler } from '@verdaccio/dev-types'; +import { Config } from '@verdaccio/types'; import bodyParser from 'body-parser'; -import { IAuth, IStorageHandler } from '../../../types'; -import whoami from './api/whoami'; -import ping from './api/ping'; -import user from './api/user'; -import distTags from './api/dist-tags'; -import publish from './api/publish'; -import search from './api/search'; -import pkg from './api/package'; -import stars from './api/stars'; -import profile from './api/v1/profile'; -import token from './api/v1/token'; -import v1Search from './api/v1/search'; +import whoami from './whoami'; +import ping from './ping'; +import user from './user'; +import distTags from './dist-tags'; +import publish from './publish'; +import search from './search'; +import pkg from './package'; +import stars from './stars'; +import profile from './v1/profile'; +import token from './v1/token'; +import v1Search from './api/v1/search' -const { - match, - validateName, - validatePackage, - encodeScopePackage, - antiLoop -} = require('../middleware'); +const { match, validateName, validatePackage, encodeScopePackage, antiLoop } = require('../middleware'); -export default function (config: Config, auth: IAuth, storage: IStorageHandler) { +export default function(config: Config, auth: IAuth, storage: IStorageHandler) { /* eslint new-cap:off */ const app = express.Router(); /* eslint new-cap:off */ @@ -49,6 +44,7 @@ export default function (config: Config, auth: IAuth, storage: IStorageHandler) app.use(auth.apiJWTmiddleware()); app.use(bodyParser.json({ strict: false, limit: config.max_body_size || '10mb' })); + // @ts-ignore app.use(antiLoop(config)); // encode / in a scoped package name to be matched as a single parameter in routes app.use(encodeScopePackage); @@ -64,7 +60,7 @@ export default function (config: Config, auth: IAuth, storage: IStorageHandler) stars(app, storage); if (_.get(config, 'experiments.search') === true) { - v1Search(app, auth, storage); + v1Search(app, auth, storage) } if (_.get(config, 'experiments.token') === true) { diff --git a/packages/api/src/package.ts b/packages/api/src/package.ts new file mode 100644 index 000000000..dd358c289 --- /dev/null +++ b/packages/api/src/package.ts @@ -0,0 +1,74 @@ +import _ from 'lodash'; +import { Router } from 'express'; + +import { allow } from '@verdaccio/middleware'; +import { convertDistRemoteToLocalTarballUrls, getVersion, ErrorCode } from '@verdaccio/utils'; +import { HEADERS, DIST_TAGS, API_ERROR } from '@verdaccio/dev-commons'; +import { Config, Package } from '@verdaccio/types'; +import { IAuth, $ResponseExtend, $RequestExtend, $NextFunctionVer, IStorageHandler } from '@verdaccio/dev-types'; + +const downloadStream = (packageName: string, filename: string, storage: any, req: $RequestExtend, res: $ResponseExtend): void => { + const stream = storage.getTarball(packageName, filename); + + stream.on('content-length', function(content): void { + res.header('Content-Length', content); + }); + + stream.on('error', function(err): void { + return res.report_error(err); + }); + + res.header(HEADERS.CONTENT_TYPE, HEADERS.OCTET_STREAM); + stream.pipe(res); +}; + +export default function(route: Router, auth: IAuth, storage: IStorageHandler, config: Config): void { + const can = allow(auth); + // TODO: anonymous user? + route.get('/:package/:version?', can('access'), function(req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { + const getPackageMetaCallback = function(err, metadata: Package): void { + if (err) { + return next(err); + } + metadata = convertDistRemoteToLocalTarballUrls(metadata, req, config.url_prefix); + + let queryVersion = req.params.version; + if (_.isNil(queryVersion)) { + return next(metadata); + } + + let version = getVersion(metadata, queryVersion); + if (_.isNil(version) === false) { + return next(version); + } + + if (_.isNil(metadata[DIST_TAGS]) === false) { + if (_.isNil(metadata[DIST_TAGS][queryVersion]) === false) { + queryVersion = metadata[DIST_TAGS][queryVersion]; + version = getVersion(metadata, queryVersion); + if (_.isNil(version) === false) { + return next(version); + } + } + } + return next(ErrorCode.getNotFound(`${API_ERROR.VERSION_NOT_EXIST}: ${req.params.version}`)); + }; + + storage.getPackage({ + name: req.params.package, + uplinksLook: true, + req, + callback: getPackageMetaCallback, + }); + }); + + route.get('/:scopedPackage/-/:scope/:filename', can('access'), function(req: $RequestExtend, res: $ResponseExtend): void { + const { scopedPackage, filename } = req.params; + + downloadStream(scopedPackage, filename, storage, req, res); + }); + + route.get('/:package/-/:filename', can('access'), function(req: $RequestExtend, res: $ResponseExtend): void { + downloadStream(req.params.package, req.params.filename, storage, req, res); + }); +} diff --git a/src/api/endpoint/api/ping.ts b/packages/api/src/ping.ts similarity index 84% rename from src/api/endpoint/api/ping.ts rename to packages/api/src/ping.ts index 0633c2e8a..4ff4f323e 100644 --- a/src/api/endpoint/api/ping.ts +++ b/packages/api/src/ping.ts @@ -1,10 +1,5 @@ -/** - * @prettier - * @flow - */ - import { Router } from 'express'; -import { $RequestExtend, $ResponseExtend, $NextFunctionVer } from '../../../../types'; +import { $RequestExtend, $ResponseExtend, $NextFunctionVer } from '@verdaccio/dev-types'; export default function (route: Router): void { route.get( diff --git a/src/api/endpoint/api/publish.ts b/packages/api/src/publish.ts similarity index 78% rename from src/api/endpoint/api/publish.ts rename to packages/api/src/publish.ts index b41bff5c5..3712cf301 100644 --- a/src/api/endpoint/api/publish.ts +++ b/packages/api/src/publish.ts @@ -1,21 +1,18 @@ -import Path from 'path'; import _ from 'lodash'; -import buildDebug from 'debug'; +import Path from 'path'; import mime from 'mime'; - import { Router } from 'express'; + +import { IAuth, $ResponseExtend, $RequestExtend, $NextFunctionVer, IStorageHandler } from '@verdaccio/dev-types'; +import { API_MESSAGE, HEADERS, DIST_TAGS, API_ERROR, HTTP_STATUS } from '@verdaccio/dev-commons'; +import {validateMetadata, isObject, ErrorCode, hasDiffOneKey, isRelatedToDeprecation} from '@verdaccio/utils'; +import { media, expectJson, allow } from '@verdaccio/middleware'; +import { notify } from '@verdaccio/hooks'; import { Config, Callback, MergeTags, Version, Package } from '@verdaccio/types'; -import { API_MESSAGE, HEADERS, DIST_TAGS, API_ERROR, HTTP_STATUS } from '../../../lib/constants'; -import { validateMetadata, isObject, ErrorCode, hasDiffOneKey, isRelatedToDeprecation } from '../../../lib/utils'; -import { media, expectJson, allow } from '../../middleware'; -import { notify } from '../../../lib/notify'; +import { logger } from '@verdaccio/logger'; -import { IAuth, $ResponseExtend, $RequestExtend, $NextFunctionVer, IStorageHandler } from '../../../../types'; -import { logger } from '../../../lib/logger'; -import { isPublishablePackage } from '../../../lib/storage-utils'; import star from './star'; - -const debug = buildDebug('verdaccio:publish'); +import {isPublishablePackage} from "./utils"; export default function publish(router: Router, auth: IAuth, storage: IStorageHandler, config: Config): void { const can = allow(auth); @@ -106,18 +103,20 @@ export default function publish(router: Router, auth: IAuth, storage: IStorageHa */ export function publishPackage(storage: IStorageHandler, config: Config, auth: IAuth): any { const starApi = star(storage); - return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { + return function(req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { const packageName = req.params.package; - debug('publishing or updating a new version for %o', packageName); + + logger.debug({packageName} , `publishing or updating a new version for @{packageName}`); + /** * Write tarball of stream data from package clients. */ - const createTarball = function (filename: string, data, cb: Callback): void { + const createTarball = function(filename: string, data, cb: Callback): void { const stream = storage.addTarball(packageName, filename); - stream.on('error', function (err) { + stream.on('error', function(err) { cb(err); }); - stream.on('success', function () { + stream.on('success', function() { cb(); }); // this is dumb and memory-consuming, but what choices do we have? @@ -129,18 +128,18 @@ export function publishPackage(storage: IStorageHandler, config: Config, auth: I /** * Add new package version in storage */ - const createVersion = function (version: string, metadata: Version, cb: Callback): void { + const createVersion = function(version: string, metadata: Version, cb: Callback): void { storage.addVersion(packageName, version, metadata, null, cb); }; /** * Add new tags in storage */ - const addTags = function (tags: MergeTags, cb: Callback): void { + const addTags = function(tags: MergeTags, cb: Callback): void { storage.mergeTags(packageName, tags, cb); }; - const afterChange = function (error, okMessage, metadata): void { + const afterChange = function(error, okMessage, metadata): void { const metadataCopy: Package = { ...metadata }; const { _attachments, versions } = metadataCopy; @@ -161,7 +160,8 @@ export function publishPackage(storage: IStorageHandler, config: Config, auth: I // npm-registry-client 0.3+ embeds tarball into the json upload // https://github.com/isaacs/npm-registry-client/commit/e9fbeb8b67f249394f735c74ef11fe4720d46ca0 // issue https://github.com/rlidwka/sinopia/issues/31, dealing with it here: - const isInvalidBodyFormat = isObject(_attachments) === false || hasDiffOneKey(_attachments) || isObject(versions) === false || hasDiffOneKey(versions); + const isInvalidBodyFormat = isObject(_attachments) === false || hasDiffOneKey(_attachments) || + isObject(versions) === false || hasDiffOneKey(versions); if (isInvalidBodyFormat) { // npm is doing something strange again @@ -177,7 +177,7 @@ export function publishPackage(storage: IStorageHandler, config: Config, auth: I // at this point document is either created or existed before const [firstAttachmentKey] = Object.keys(_attachments); - createTarball(Path.basename(firstAttachmentKey), _attachments[firstAttachmentKey], function (error) { + createTarball(Path.basename(firstAttachmentKey), _attachments[firstAttachmentKey], function(error) { if (error) { return next(error); } @@ -187,12 +187,12 @@ export function publishPackage(storage: IStorageHandler, config: Config, auth: I versionMetadataToPublish.readme = _.isNil(versionMetadataToPublish.readme) === false ? String(versionMetadataToPublish.readme) : ''; - createVersion(versionToPublish, versionMetadataToPublish, function (error) { + createVersion(versionToPublish, versionMetadataToPublish, function(error) { if (error) { return next(error); } - addTags(metadataCopy[DIST_TAGS], async function (error) { + addTags(metadataCopy[DIST_TAGS], async function(error) { if (error) { return next(error); } @@ -218,26 +218,27 @@ export function publishPackage(storage: IStorageHandler, config: Config, auth: I const metadata = validateMetadata(req.body, packageName); // treating deprecation as updating a package if (req.params._rev || isRelatedToDeprecation(req.body)) { - debug('updating a new version for %o', packageName); + logger.debug({packageName} , `updating a new version for @{packageName}`); // we check unpublish permissions, an update is basically remove versions const remote = req.remote_user; - auth.allow_unpublish({ packageName }, remote, (error) => { + auth.allow_unpublish({packageName}, remote, (error) => { if (error) { - logger.error({ packageName }, `not allowed to unpublish a version for @{packageName}`); + logger.debug({packageName} , `not allowed to unpublish a version for @{packageName}`); return next(error); } - storage.changePackage(packageName, metadata, req.params.revision, function (error) { + + storage.changePackage(packageName, metadata, req.params.revision, function(error) { afterChange(error, API_MESSAGE.PKG_CHANGED, metadata); }); }); } else { - debug('adding a new version for %o', packageName); - storage.addPackage(packageName, metadata, function (error) { + logger.debug({packageName} , `adding a new version for @{packageName}`); + storage.addPackage(packageName, metadata, function(error) { afterChange(error, API_MESSAGE.PKG_CREATED, metadata); }); } } catch (error) { - logger.error({ packageName }, 'error on publish, bad package data for @{packageName}'); + logger.error({packageName}, 'error on publish, bad package data for @{packageName}'); return next(ErrorCode.getBadData(API_ERROR.BAD_PACKAGE_DATA)); } }; @@ -247,10 +248,11 @@ export function publishPackage(storage: IStorageHandler, config: Config, auth: I * un-publish a package */ export function unPublishPackage(storage: IStorageHandler) { - return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { + return function(req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { const packageName = req.params.package; - debug('unpublishing %o', packageName); - storage.removePackage(packageName, function (err) { + + logger.debug({packageName} , `unpublishing @{packageName}`); + storage.removePackage(packageName, function(err) { if (err) { return next(err); } @@ -264,16 +266,18 @@ export function unPublishPackage(storage: IStorageHandler) { * Delete tarball */ export function removeTarball(storage: IStorageHandler) { - return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { + return function(req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { const packageName = req.params.package; - const { filename, revision } = req.params; - debug('removing a tarball for %o-%o-%o', packageName, filename, revision); - storage.removeTarball(packageName, filename, revision, function (err) { + const {filename, revision} = req.params; + + logger.debug({packageName, filename, revision} , `removing a tarball for @{packageName}-@{tarballName}-@{revision}`); + storage.removeTarball(packageName, filename, revision, function(err) { if (err) { return next(err); } res.status(HTTP_STATUS.CREATED); - debug('success remove tarball for %o-%o-%o', packageName, filename, revision); + + logger.debug({packageName, filename, revision} , `success remove tarball for @{packageName}-@{tarballName}-@{revision}`); return next({ ok: API_MESSAGE.TARBALL_REMOVED }); }); }; @@ -282,11 +286,11 @@ export function removeTarball(storage: IStorageHandler) { * Adds a new version */ export function addVersion(storage: IStorageHandler) { - return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { + return function(req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { const { version, tag } = req.params; const packageName = req.params.package; - storage.addVersion(packageName, version, req.body, tag, function (error) { + storage.addVersion(packageName, version, req.body, tag, function(error) { if (error) { return next(error); } @@ -303,29 +307,29 @@ export function addVersion(storage: IStorageHandler) { * uploadPackageTarball */ export function uploadPackageTarball(storage: IStorageHandler) { - return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { + return function(req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { const packageName = req.params.package; const stream = storage.addTarball(packageName, req.params.filename); req.pipe(stream); // checking if end event came before closing let complete = false; - req.on('end', function () { + req.on('end', function() { complete = true; stream.done(); }); - req.on('close', function () { + req.on('close', function() { if (!complete) { stream.abort(); } }); - stream.on('error', function (err) { - return res.locals.report_error(err); + stream.on('error', function(err) { + return res.report_error(err); }); - stream.on('success', function () { + stream.on('success', function() { res.status(HTTP_STATUS.CREATED); return next({ ok: API_MESSAGE.TARBALL_UPLOADED, diff --git a/src/api/endpoint/api/search.ts b/packages/api/src/search.ts similarity index 87% rename from src/api/endpoint/api/search.ts rename to packages/api/src/search.ts index a2ef24bcc..11ed57e15 100644 --- a/src/api/endpoint/api/search.ts +++ b/packages/api/src/search.ts @@ -1,19 +1,15 @@ -import { HEADERS } from '../../../lib/constants'; +import { HEADERS } from '@verdaccio/dev-commons'; -/** - * @prettier - */ - -export default function (route, auth, storage): void { +export default function(route, auth, storage): void { // searching packages - route.get('/-/all(/since)?', function (req, res) { + route.get('/-/all(/since)?', function(req, res) { let received_end = false; let response_finished = false; let processing_pkgs = 0; let firstPackage = true; res.status(200); - res.set(HEADERS.CONTENT_TYPE, HEADERS.JSON_CHARSET); + res.set(HEADERS.CONTENT_TYPE, HEADERS.JSON_CHARSET) /* * Offical NPM registry (registry.npmjs.org) no longer return whole database, @@ -37,7 +33,7 @@ export default function (route, auth, storage): void { if (!respShouldBeArray) { res.set('Date', 'Mon, 10 Oct 1983 00:12:48 GMT'); } - const check_finish = function (): void { + const check_finish = function(): void { if (!received_end) { return; } @@ -66,7 +62,7 @@ export default function (route, auth, storage): void { stream.on('data', function each(pkg) { processing_pkgs++; - auth.allow_access({ packageName: pkg.name }, req.remote_user, function (err, allowed) { + auth.allow_access({ packageName: pkg.name }, req.remote_user, function(err, allowed) { processing_pkgs--; if (err) { @@ -94,11 +90,11 @@ export default function (route, auth, storage): void { }); }); - stream.on('error', function () { + stream.on('error', function() { res.socket.destroy(); }); - stream.on('end', function () { + stream.on('end', function() { received_end = true; check_finish(); }); diff --git a/src/api/endpoint/api/star.ts b/packages/api/src/star.ts similarity index 54% rename from src/api/endpoint/api/star.ts rename to packages/api/src/star.ts index 9b8d8d0cb..5bf2639c5 100644 --- a/src/api/endpoint/api/star.ts +++ b/packages/api/src/star.ts @@ -1,14 +1,11 @@ -// @flow - -import { Response } from 'express'; +import { USERS, HTTP_STATUS } from '@verdaccio/dev-commons'; +import {Response} from 'express'; import _ from 'lodash'; -import buildDebug from 'debug'; -import { USERS, HTTP_STATUS } from '../../../lib/constants'; -import { $RequestExtend, $NextFunctionVer, IStorageHandler } from '../../../../types'; -import { logger } from '../../../lib/logger'; +import { logger } from '@verdaccio/logger'; -const debug = buildDebug('verdaccio:star'); -export default function (storage: IStorageHandler): (req: $RequestExtend, res: Response, next: $NextFunctionVer) => void { +import {$RequestExtend, $NextFunctionVer, IStorageHandler} from '@verdaccio/dev-types'; + +export default function(storage: IStorageHandler): (req: $RequestExtend, res: Response, next: $NextFunctionVer) => void { const validateInputs = (newUsers, localUsers, username, isStar): boolean => { const isExistlocalUsers = _.isNil(localUsers[username]) === false; if (isStar && isExistlocalUsers && localUsers[username]) { @@ -23,8 +20,8 @@ export default function (storage: IStorageHandler): (req: $RequestExtend, res: R return (req: $RequestExtend, res: Response, next: $NextFunctionVer): void => { const name = req.params.package; - debug('starring a package for %o', name); - const afterChangePackage = function (err?: Error) { + logger.debug({name}, 'starring a package for @{name}'); + const afterChangePackage = function(err?: Error) { if (err) { return next(err); } @@ -37,7 +34,7 @@ export default function (storage: IStorageHandler): (req: $RequestExtend, res: R storage.getPackage({ name, req, - callback: function (err, info) { + callback: function(err, info) { if (err) { return next(err); } @@ -49,22 +46,16 @@ export default function (storage: IStorageHandler): (req: $RequestExtend, res: R if (_.isNil(localStarUsers) === false && validateInputs(newStarUser, localStarUsers, remoteUsername, isStar)) { return afterChangePackage(); } - const users = isStar - ? { - ...localStarUsers, - [remoteUsername]: true, - } - : _.reduce( - localStarUsers, - (users, value, key) => { - if (key !== remoteUsername) { - users[key] = value; - } - return users; - }, - {} - ); - storage.changePackage(name, { ...info, users }, req.body._rev, function (err) { + const users = isStar ? { + ...localStarUsers, + [remoteUsername]: true, + } : _.reduce(localStarUsers, (users, value, key) => { + if (key !== remoteUsername) { + users[key] = value; + } + return users; + }, {}); + storage.changePackage(name, { ...info, users}, req.body._rev, function(err) { afterChangePackage(err); }); }, diff --git a/packages/api/src/stars.ts b/packages/api/src/stars.ts new file mode 100644 index 000000000..f7e5e7896 --- /dev/null +++ b/packages/api/src/stars.ts @@ -0,0 +1,32 @@ +import _ from 'lodash'; +import { Response, Router } from 'express'; + +import { USERS, HTTP_STATUS } from '@verdaccio/dev-commons'; +import { Package } from '@verdaccio/types'; + +import { $RequestExtend, $NextFunctionVer, IStorageHandler } from '@verdaccio/dev-types'; + +type Packages = Package[]; + +export default function(route: Router, storage: IStorageHandler): void { + route.get('/-/_view/starredByUser', (req: $RequestExtend, res: Response, next: $NextFunctionVer): void => { + const remoteUsername = req.remote_user.name; + + storage.getLocalDatabase((err, localPackages: Packages) => { + if (err) { + return next(err); + } + + const filteredPackages: Packages = localPackages.filter((localPackage: Package) => + _.keys(localPackage[USERS]).includes(remoteUsername) + ); + + res.status(HTTP_STATUS.OK); + next({ + rows: filteredPackages.map((filteredPackage: Package) => ({ + value: filteredPackage.name, + })), + }); + }); + }); +} diff --git a/src/api/endpoint/api/user.ts b/packages/api/src/user.ts similarity index 73% rename from src/api/endpoint/api/user.ts rename to packages/api/src/user.ts index 39f24dcc6..0f9dd5389 100644 --- a/src/api/endpoint/api/user.ts +++ b/packages/api/src/user.ts @@ -1,31 +1,30 @@ import _ from 'lodash'; import Cookies from 'cookies'; +import { Response, Router } from 'express'; + +import { createRemoteUser, createSessionToken, getApiToken, getAuthenticatedMessage, validatePassword, ErrorCode } from '@verdaccio/utils'; +import { logger } from '@verdaccio/logger'; import { Config, RemoteUser } from '@verdaccio/types'; -import { Response, Router } from 'express'; -import { ErrorCode } from '../../../lib/utils'; -import { API_ERROR, API_MESSAGE, HTTP_STATUS } from '../../../lib/constants'; -import { createRemoteUser, createSessionToken, getApiToken, getAuthenticatedMessage, validatePassword } from '../../../lib/auth-utils'; -import { logger } from '../../../lib/logger'; +import { $RequestExtend, $ResponseExtend, $NextFunctionVer, IAuth } from '@verdaccio/dev-types'; +import { API_ERROR, API_MESSAGE, HTTP_STATUS } from '@verdaccio/dev-commons'; -import { $RequestExtend, $ResponseExtend, $NextFunctionVer, IAuth } from '../../../../types'; - -export default function (route: Router, auth: IAuth, config: Config): void { - route.get('/-/user/:org_couchdb_user', function (req: $RequestExtend, res: Response, next: $NextFunctionVer): void { +export default function(route: Router, auth: IAuth, config: Config): void { + route.get('/-/user/:org_couchdb_user', function(req: $RequestExtend, res: Response, next: $NextFunctionVer): void { res.status(HTTP_STATUS.OK); next({ ok: getAuthenticatedMessage(req.remote_user.name), }); }); - route.put('/-/user/:org_couchdb_user/:_rev?/:revision?', function (req: $RequestExtend, res: Response, next: $NextFunctionVer): void { + route.put('/-/user/:org_couchdb_user/:_rev?/:revision?', function(req: $RequestExtend, res: Response, next: $NextFunctionVer): void { const { name, password } = req.body; const remoteName = req.remote_user.name; if (_.isNil(remoteName) === false && _.isNil(name) === false && remoteName === name) { auth.authenticate(name, password, async function callbackAuthenticate(err, user): Promise { if (err) { - logger.error({ name, err }, 'authenticating for user @{username} failed. Error: @{err.message}'); + logger.trace({ name, err }, 'authenticating for user @{username} failed. Error: @{err.message}'); return next(ErrorCode.getCode(HTTP_STATUS.UNAUTHORIZED, API_ERROR.BAD_USERNAME_PASSWORD)); } @@ -45,7 +44,7 @@ export default function (route: Router, auth: IAuth, config: Config): void { return next(ErrorCode.getCode(HTTP_STATUS.BAD_REQUEST, API_ERROR.PASSWORD_SHORT())); } - auth.add_user(name, password, async function (err, user): Promise { + auth.add_user(name, password, async function(err, user): Promise { if (err) { if (err.status >= HTTP_STATUS.BAD_REQUEST && err.status < HTTP_STATUS.INTERNAL_ERROR) { // With npm registering is the same as logging in, @@ -68,7 +67,7 @@ export default function (route: Router, auth: IAuth, config: Config): void { } }); - route.delete('/-/user/token/*', function (req: $RequestExtend, res: Response, next: $NextFunctionVer): void { + route.delete('/-/user/token/*', function(req: $RequestExtend, res: Response, next: $NextFunctionVer): void { res.status(HTTP_STATUS.OK); next({ ok: API_MESSAGE.LOGGED_OUT, @@ -77,7 +76,7 @@ export default function (route: Router, auth: IAuth, config: Config): void { // placeholder 'cause npm require to be authenticated to publish // we do not do any real authentication yet - route.post('/_session', Cookies.express(), function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { + route.post('/_session', Cookies.express(), function(req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { res.cookies.set('AuthSession', String(Math.random()), createSessionToken()); next({ diff --git a/packages/api/src/utils.ts b/packages/api/src/utils.ts new file mode 100644 index 000000000..d4dc51a9f --- /dev/null +++ b/packages/api/src/utils.ts @@ -0,0 +1,13 @@ +import {Package} from '@verdaccio/types'; +import _ from 'lodash'; + +/** + * Check whether the package metadta has enough data to be published + * @param pkg metadata + */ + +export function isPublishablePackage(pkg: Package): boolean { + const keys: string[] = Object.keys(pkg); + + return _.includes(keys, 'versions'); +} diff --git a/packages/api/src/v1/profile.ts b/packages/api/src/v1/profile.ts new file mode 100644 index 000000000..bb7280086 --- /dev/null +++ b/packages/api/src/v1/profile.ts @@ -0,0 +1,83 @@ +import _ from 'lodash'; +import { Response, Router } from 'express'; + +import { API_ERROR, APP_ERROR, HTTP_STATUS, SUPPORT_ERRORS } from '@verdaccio/dev-commons'; +import { ErrorCode, validatePassword } from '@verdaccio/utils'; +import { $NextFunctionVer, $RequestExtend, IAuth } from '@verdaccio/dev-types'; + +export interface Profile { + tfa: boolean; + name: string; + email: string; + email_verified: boolean; + created: string; + updated: string; + cidr_whitelist: string[] | null; + fullname: string; +} + +export default function(route: Router, auth: IAuth): void { + function buildProfile(name: string): Profile { + return { + tfa: false, + name, + email: '', + email_verified: false, + created: '', + updated: '', + cidr_whitelist: null, + fullname: '', + }; + } + + route.get('/-/npm/v1/user', function(req: $RequestExtend, res: Response, next: $NextFunctionVer): void { + if (_.isNil(req.remote_user.name) === false) { + return next(buildProfile(req.remote_user.name)); + } + + res.status(HTTP_STATUS.UNAUTHORIZED); + return next({ + message: API_ERROR.MUST_BE_LOGGED, + }); + }); + + route.post('/-/npm/v1/user', function(req: $RequestExtend, res: Response, next: $NextFunctionVer): void { + if (_.isNil(req.remote_user.name)) { + res.status(HTTP_STATUS.UNAUTHORIZED); + return next({ + message: API_ERROR.MUST_BE_LOGGED, + }); + } + + const { password, tfa } = req.body; + const { name } = req.remote_user; + + if (_.isNil(password) === false) { + if (validatePassword(password.new) === false) { + /* eslint new-cap:off */ + return next(ErrorCode.getCode(HTTP_STATUS.UNAUTHORIZED, API_ERROR.PASSWORD_SHORT())); + /* eslint new-cap:off */ + } + + auth.changePassword( + name, + password.old, + password.new, + (err, isUpdated): $NextFunctionVer => { + if (_.isNull(err) === false) { + return next(ErrorCode.getCode(err.status, err.message) || ErrorCode.getConflict(err.message)); + } + + if (isUpdated) { + return next(buildProfile(req.remote_user.name)); + } + return next(ErrorCode.getInternalError(API_ERROR.INTERNAL_SERVER_ERROR)); + } + ); + } else if (_.isNil(tfa) === false) { + return next(ErrorCode.getCode(HTTP_STATUS.SERVICE_UNAVAILABLE, SUPPORT_ERRORS.TFA_DISABLED)); + } else { + return next(ErrorCode.getCode(HTTP_STATUS.INTERNAL_ERROR, APP_ERROR.PROFILE_ERROR)); + } + }); +} diff --git a/src/api/endpoint/api/v1/search.ts b/packages/api/src/v1/search.ts similarity index 100% rename from src/api/endpoint/api/v1/search.ts rename to packages/api/src/v1/search.ts diff --git a/packages/api/src/v1/token.ts b/packages/api/src/v1/token.ts new file mode 100644 index 000000000..edf2ba3fb --- /dev/null +++ b/packages/api/src/v1/token.ts @@ -0,0 +1,121 @@ +import _ from 'lodash'; +import { HTTP_STATUS, SUPPORT_ERRORS } from '@verdaccio/dev-commons'; +import {ErrorCode, stringToMD5, mask, getApiToken } from '@verdaccio/utils'; +import { logger } from '@verdaccio/logger'; +import { Response, Router } from 'express'; + +import {$NextFunctionVer, $RequestExtend, IAuth, IStorageHandler} from '../../../types'; +import { Config, RemoteUser, Token } from '@verdaccio/types'; + +export type NormalizeToken = Token & { + created: string; +}; + +function normalizeToken(token: Token): NormalizeToken { + return { + ...token, + created: new Date(token.created).toISOString(), + }; +}; + +// https://github.com/npm/npm-profile/blob/latest/lib/index.js +export default function(route: Router, auth: IAuth, storage: IStorageHandler, config: Config): void { + route.get('/-/npm/v1/tokens', async function(req: $RequestExtend, res: Response, next: $NextFunctionVer) { + const { name } = req.remote_user; + + if (_.isNil(name) === false) { + try { + const tokens = await storage.readTokens({user: name}); + const totalTokens = tokens.length; + logger.debug({totalTokens}, 'token list retrieved: @{totalTokens}'); + + res.status(HTTP_STATUS.OK); + return next({ + objects: tokens.map(normalizeToken), + urls: { + next: '', // TODO: pagination? + }, + }); + } catch (error) { + logger.error({ error: error.msg }, 'token list has failed: @{error}'); + return next(ErrorCode.getCode(HTTP_STATUS.INTERNAL_ERROR, error.message)); + } + } + return next(ErrorCode.getUnauthorized()); + }); + + route.post('/-/npm/v1/tokens', function(req: $RequestExtend, res: Response, next: $NextFunctionVer) { + const { password, readonly, cidr_whitelist } = req.body; + const { name } = req.remote_user; + + if (!_.isBoolean(readonly) || !_.isArray(cidr_whitelist)) { + return next(ErrorCode.getCode(HTTP_STATUS.BAD_DATA, SUPPORT_ERRORS.PARAMETERS_NOT_VALID)); + } + + auth.authenticate(name, password, async (err, user: RemoteUser) => { + if (err) { + const errorCode = err.message ? HTTP_STATUS.UNAUTHORIZED : HTTP_STATUS.INTERNAL_ERROR; + return next(ErrorCode.getCode(errorCode, err.message)); + } + + req.remote_user = user; + + if (!_.isFunction(storage.saveToken)) { + return next(ErrorCode.getCode(HTTP_STATUS.NOT_IMPLEMENTED, SUPPORT_ERRORS.STORAGE_NOT_IMPLEMENT)); + } + + try { + const token = await getApiToken(auth, config, user, password); + const key = stringToMD5(token); + // TODO: use a utility here + const maskedToken = mask(token, 5); + const created = new Date().getTime(); + + /** + * cidr_whitelist: is not being used, we pass it through + * token: we do not store the real token (it is generated once and retrieved to the user), just a mask of it. + */ + const saveToken: Token = { + user: name, + token: maskedToken, + key, + cidr: cidr_whitelist, + readonly, + created, + }; + + await storage.saveToken(saveToken); + logger.debug({ key, name }, 'token @{key} was created for user @{name}'); + return next(normalizeToken({ + token, + user: name, + key: saveToken.key, + cidr: cidr_whitelist, + readonly, + created: saveToken.created, + })); + } catch (error) { + logger.error({ error: error.msg }, 'token creation has failed: @{error}'); + return next(ErrorCode.getCode(HTTP_STATUS.INTERNAL_ERROR, error.message)); + } + }); + }); + + route.delete('/-/npm/v1/tokens/token/:tokenKey', async (req: $RequestExtend, res: Response, next: $NextFunctionVer) => { + const { params: { tokenKey }} = req; + const { name } = req.remote_user; + + if (_.isNil(name) === false) { + logger.debug({name}, '@{name} has requested remove a token'); + try { + await storage.deleteToken(name, tokenKey); + logger.info({ tokenKey, name }, 'token id @{tokenKey} was revoked for user @{name}'); + return next({}); + } catch(error) { + logger.error({ error: error.msg }, 'token creation has failed: @{error}'); + return next(ErrorCode.getCode(HTTP_STATUS.INTERNAL_ERROR, error.message)); + } + } + return next(ErrorCode.getUnauthorized()); + }); +} diff --git a/src/api/endpoint/api/whoami.ts b/packages/api/src/whoami.ts similarity index 86% rename from src/api/endpoint/api/whoami.ts rename to packages/api/src/whoami.ts index e84b18e94..14fd804e7 100644 --- a/src/api/endpoint/api/whoami.ts +++ b/packages/api/src/whoami.ts @@ -1,5 +1,5 @@ import { Response, Router } from 'express'; -import { $RequestExtend, $NextFunctionVer } from '../../../../types'; +import { $RequestExtend, $NextFunctionVer } from '@verdaccio/dev-types'; export default function (route: Router): void { route.get('/whoami', (req: $RequestExtend, res: Response, next: $NextFunctionVer): void => { diff --git a/test/unit/modules/api/__snapshots__/publish.spec.ts.snap b/packages/api/test/__snapshots__/publish.spec.ts.snap similarity index 100% rename from test/unit/modules/api/__snapshots__/publish.spec.ts.snap rename to packages/api/test/__snapshots__/publish.spec.ts.snap diff --git a/test/unit/modules/api/publish.spec.ts b/packages/api/test/publish.spec.ts similarity index 80% rename from test/unit/modules/api/publish.spec.ts rename to packages/api/test/publish.spec.ts index 58c1e6236..f535770c9 100644 --- a/test/unit/modules/api/publish.spec.ts +++ b/packages/api/test/publish.spec.ts @@ -1,15 +1,11 @@ -import { - addVersion, - uploadPackageTarball, - removeTarball, - unPublishPackage, - publishPackage -} from '../../../../src/api/endpoint/api/publish'; -import { HTTP_STATUS, API_ERROR } from '../../../../src/lib/constants'; +import { addVersion, uploadPackageTarball, removeTarball, unPublishPackage, publishPackage } from '../src/publish'; +import { HTTP_STATUS, API_ERROR } from '@verdaccio/dev-commons'; const REVISION_MOCK = '15-e53a77096b0ee33e'; -require('../../../../src/lib/logger').setup([{ type: 'stdout', format: 'pretty', level: 'info' }]); +require('@verdaccio/logger').setup([ + { type: 'stdout', format: 'pretty', level: 'info' } +]); describe('Publish endpoints - add a tag', () => { let req; @@ -21,18 +17,18 @@ describe('Publish endpoints - add a tag', () => { params: { version: '1.0.0', tag: 'tag', - package: 'verdaccio' + package: 'verdaccio', }, - body: '' + body: '', }; res = { - status: jest.fn() + status: jest.fn(), }; next = jest.fn(); }); - test('should add a version', (done) => { + test('should add a version', done => { const storage = { addVersion: (packageName, version, body, tag, cb) => { expect(packageName).toEqual(req.params.package); @@ -41,7 +37,7 @@ describe('Publish endpoints - add a tag', () => { expect(tag).toEqual(req.params.tag); cb(); done(); - } + }, }; // @ts-ignore @@ -51,15 +47,15 @@ describe('Publish endpoints - add a tag', () => { expect(next).toHaveBeenLastCalledWith({ ok: 'package published' }); }); - test('when failed to add a version', (done) => { + test('when failed to add a version', done => { const storage = { addVersion: (packageName, version, body, tag, cb) => { const error = { - message: 'failure' + message: 'failure', }; cb(error); done(); - } + }, }; // @ts-ignore @@ -81,10 +77,10 @@ describe('Publish endpoints - upload package tarball', () => { req = { params: { filename: 'verdaccio.gzip', - package: 'verdaccio' + package: 'verdaccio', }, pipe: jest.fn(), - on: jest.fn() + on: jest.fn(), }; res = { status: jest.fn(), report_error: jest.fn() }; next = jest.fn(); @@ -94,14 +90,14 @@ describe('Publish endpoints - upload package tarball', () => { const stream = { done: jest.fn(), abort: jest.fn(), - on: jest.fn(() => (status, cb) => cb()) + on: jest.fn(() => (status, cb) => cb()), }; const storage = { addTarball(packageName, filename) { expect(packageName).toEqual(req.params.package); expect(filename).toEqual(req.params.filename); return stream; - } + }, }; // @ts-ignore @@ -124,14 +120,14 @@ describe('Publish endpoints - delete tarball', () => { params: { filename: 'verdaccio.gzip', package: 'verdaccio', - revision: REVISION_MOCK - } + revision: REVISION_MOCK, + }, }; res = { status: jest.fn() }; next = jest.fn(); }); - test('should delete tarball successfully', (done) => { + test('should delete tarball successfully', done => { const storage = { removeTarball(packageName, filename, revision, cb) { expect(packageName).toEqual(req.params.package); @@ -139,7 +135,7 @@ describe('Publish endpoints - delete tarball', () => { expect(revision).toEqual(req.params.revision); cb(); done(); - } + }, }; // @ts-ignore @@ -148,15 +144,15 @@ describe('Publish endpoints - delete tarball', () => { expect(next).toHaveBeenCalledWith({ ok: 'tarball removed' }); }); - test('failed while deleting the tarball', (done) => { + test('failed while deleting the tarball', done => { const error = { - message: 'deletion failed' + message: 'deletion failed', }; const storage = { removeTarball(packageName, filename, revision, cb) { cb(error); done(); - } + }, }; // @ts-ignore @@ -176,20 +172,20 @@ describe('Publish endpoints - un-publish package', () => { beforeEach(() => { req = { params: { - package: 'verdaccio' - } + package: 'verdaccio', + }, }; res = { status: jest.fn() }; next = jest.fn(); }); - test('should un-publish package successfully', (done) => { + test('should un-publish package successfully', done => { const storage = { removePackage(packageName, cb) { expect(packageName).toEqual(req.params.package); cb(); done(); - } + }, }; // @ts-ignore @@ -198,15 +194,15 @@ describe('Publish endpoints - un-publish package', () => { expect(next).toHaveBeenCalledWith({ ok: 'package removed' }); }); - test('un-publish failed', (done) => { + test('un-publish failed', done => { const error = { - message: 'un-publish failed' + message: 'un-publish failed', }; const storage = { removePackage(packageName, cb) { cb(error); done(); - } + }, }; // @ts-ignore @@ -226,11 +222,11 @@ describe('Publish endpoints - publish package', () => { beforeEach(() => { req = { body: { - name: 'verdaccio' + name: 'verdaccio', }, params: { - package: 'verdaccio' - } + package: 'verdaccio', + }, }; res = { status: jest.fn() }; next = jest.fn(); @@ -238,7 +234,7 @@ describe('Publish endpoints - publish package', () => { test('should change the existing package', () => { const storage = { - changePackage: jest.fn() + changePackage: jest.fn(), }; req.params._rev = REVISION_MOCK; @@ -250,7 +246,7 @@ describe('Publish endpoints - publish package', () => { test('should publish a new a new package', () => { const storage = { - addPackage: jest.fn() + addPackage: jest.fn(), }; // @ts-ignore @@ -262,7 +258,7 @@ describe('Publish endpoints - publish package', () => { const storage = { addPackage() { throw new Error(); - } + }, }; // @ts-ignore @@ -276,23 +272,23 @@ describe('Publish endpoints - publish package', () => { changePackage: jest.fn(), getPackage({ callback }) { callback(null, { - users: {} + users: {}, }); - } + }, }; req = { params: { - package: 'verdaccio' + package: 'verdaccio', }, body: { _rev: REVISION_MOCK, users: { - verdaccio: true - } + verdaccio: true, + }, }, remote_user: { - name: 'verdaccio' - } + name: 'verdaccio', + }, }; // @ts-ignore diff --git a/test/unit/modules/api/validate.api.params.middleware.spec.ts b/packages/api/test/validate.api.params.middleware.spec.ts similarity index 88% rename from test/unit/modules/api/validate.api.params.middleware.spec.ts rename to packages/api/test/validate.api.params.middleware.spec.ts index e99dbd037..d0387155a 100644 --- a/test/unit/modules/api/validate.api.params.middleware.spec.ts +++ b/packages/api/test/validate.api.params.middleware.spec.ts @@ -12,9 +12,8 @@ import fs from 'fs'; app.param('token', validate_name); */ describe('api endpoint app.param()', () => { - const file = '../endpoint/index.ts'; let m; - const requirePath = path.normalize(path.join(__dirname + '/../../../../src/api/web/', file)); + const requirePath = path.normalize(path.join(__dirname, '../src/index.ts')); const source = fs.readFileSync(requirePath, 'utf8'); const very_scary_regexp = /\n\s*app\.(\w+)\s*\(\s*(("[^"]*")|('[^']*'))\s*,/g; const appParams = {}; diff --git a/packages/api/tsconfig.json b/packages/api/tsconfig.json new file mode 100644 index 000000000..2be65b934 --- /dev/null +++ b/packages/api/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./build" + }, + "include": ["src/**/*", "types/*.d.ts"], + "exclude": ["src/**/*.test.ts"] +} diff --git a/types/custom.d.ts b/packages/api/types/custom.d.ts similarity index 100% rename from types/custom.d.ts rename to packages/api/types/custom.d.ts diff --git a/packages/auth/.babelrc b/packages/auth/.babelrc new file mode 100644 index 000000000..28397a1bd --- /dev/null +++ b/packages/auth/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": [["@verdaccio"]] +} diff --git a/packages/auth/jest.config.js b/packages/auth/jest.config.js new file mode 100644 index 000000000..45146c37f --- /dev/null +++ b/packages/auth/jest.config.js @@ -0,0 +1,9 @@ +module.exports = { + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'], + transform: { + '^.+\\.(js|jsx|ts|tsx)$': 'babel-jest', + }, + verbose: true, + collectCoverage: true, + coveragePathIgnorePatterns: ['node_modules', 'fixtures'], +}; diff --git a/packages/auth/package.json b/packages/auth/package.json new file mode 100644 index 000000000..f4ef972bf --- /dev/null +++ b/packages/auth/package.json @@ -0,0 +1,39 @@ +{ + "name": "@verdaccio/auth", + "version": "5.0.0-alpha.0", + "description": "logger", + "main": "./build/index.js", + "types": "build/index.d.ts", + "author": { + "name": "Juan Picado", + "email": "juanpicado19@gmail.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/verdaccio/verdaccio" + }, + "homepage": "https://verdaccio.org", + "scripts": { + "clean": "rimraf ./build", + "test": "cross-env NODE_ENV=test BABEL_ENV=test jest", + "type-check": "tsc --noEmit", + "build:types": "tsc --emitDeclarationOnly --declaration true", + "build:js": "cross-env BABEL_ENV=registry babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "build": "npm run build:js && npm run build:types" + }, + "license": "MIT", + "dependencies": { + "@verdaccio/commons-api": "^9.0.0", + "@verdaccio/dev-commons": "5.0.0-alpha.0", + "@verdaccio/loaders": "5.0.0-alpha.0", + "@verdaccio/utils": "5.0.0-alpha.0", + "bunyan": "1.8.12", + "express": "^4.17.1", + "lodash": "^4.17.15" + }, + "devDependencies": { + "@types/bunyan": "1.8.6", + "@verdaccio/dev-types": "5.0.0-alpha.0" + }, + "gitHead": "7c246ede52ff717707fcae66dd63fc4abd536982" +} diff --git a/src/lib/auth.ts b/packages/auth/src/auth.ts similarity index 66% rename from src/lib/auth.ts rename to packages/auth/src/auth.ts index fe34332ca..682e47d13 100644 --- a/src/lib/auth.ts +++ b/packages/auth/src/auth.ts @@ -1,13 +1,10 @@ import _ from 'lodash'; -import { VerdaccioError } from '@verdaccio/commons-api'; -import buildDebug from 'debug'; -import { Config, Logger, Callback, IPluginAuth, RemoteUser, JWTSignOptions, Security, AuthPluginPackage, AllowAccess, PackageAccess } from '@verdaccio/types'; import { NextFunction } from 'express'; -import loadPlugin from '../lib/plugin-loader'; -import { $RequestExtend, $ResponseExtend, IAuth, AESPayload } from '../../types'; -import { API_ERROR, SUPPORT_ERRORS, TOKEN_BASIC, TOKEN_BEARER } from './constants'; -import { aesEncrypt, signPayload } from './crypto-utils'; -import { logger } from './logger'; + +import { VerdaccioError } from '@verdaccio/commons-api'; +import {API_ERROR, SUPPORT_ERRORS, TOKEN_BASIC, TOKEN_BEARER} from '@verdaccio/dev-commons'; +import { loadPlugin } from '@verdaccio/loaders'; +import { aesEncrypt, signPayload } from '@verdaccio/utils'; import { getDefaultPlugins, getMiddlewareCredentials, @@ -16,24 +13,29 @@ import { isAuthHeaderValid, getSecurity, isAESLegacy, + convertPayloadToBase64, + ErrorCode, parseAuthTokenHeader, parseBasicPayload, createRemoteUser, -} from './auth-utils'; -import { convertPayloadToBase64, ErrorCode } from './utils'; -import { getMatchedPackagesSpec } from './config-utils'; +} from '@verdaccio/utils'; -const debug = buildDebug('verdaccio:auth'); +import { getMatchedPackagesSpec } from '@verdaccio/utils'; +import { Config, Logger, Callback, IPluginAuth, RemoteUser, JWTSignOptions, Security, AuthPluginPackage, AllowAccess, PackageAccess } from '@verdaccio/types'; +import { $RequestExtend, $ResponseExtend, IAuth, AESPayload } from '@verdaccio/dev-types'; + +/* eslint-disable @typescript-eslint/no-var-requires */ +const LoggerApi = require('@verdaccio/logger'); class Auth implements IAuth { public config: Config; public logger: Logger; - public secret: string; // pragma: allowlist secret + public secret: string; public plugins: IPluginAuth[]; public constructor(config: Config) { this.config = config; - this.logger = logger; + this.logger = LoggerApi.logger.child({ sub: 'auth' }); this.secret = config.secret; this.plugins = this._loadPlugin(config); this._applyDefaultPlugins(); @@ -45,49 +47,56 @@ class Auth implements IAuth { logger: this.logger, }; - return loadPlugin>(config, config.auth, pluginOptions, (plugin: IPluginAuth): boolean => { - const { authenticate, allow_access, allow_publish } = plugin; - // @ts-ignore - return authenticate || allow_access || allow_publish; - }); + return loadPlugin>( + config, + config.auth, + pluginOptions, + (plugin: IPluginAuth): boolean => { + const { authenticate, allow_access, allow_publish } = plugin; + + // @ts-ignore + return authenticate || allow_access || allow_publish; + } + ); } private _applyDefaultPlugins(): void { - this.plugins.push(getDefaultPlugins(this.logger)); + this.plugins.push(getDefaultPlugins()); } - public changePassword( - username: string, - password: string, // pragma: allowlist secret - newPassword: string, // pragma: allowlist secret - cb: Callback - ): void { - const validPlugins = _.filter(this.plugins, (plugin) => _.isFunction(plugin.changePassword)); + public changePassword(username: string, password: string, newPassword: string, cb: Callback): void { + const validPlugins = _.filter(this.plugins, plugin => _.isFunction(plugin.changePassword)); - if (_.isEmpty(validPlugins)) { - return cb(ErrorCode.getInternalError(SUPPORT_ERRORS.PLUGIN_MISSING_INTERFACE)); - } + if (_.isEmpty(validPlugins)) { + return cb(ErrorCode.getInternalError(SUPPORT_ERRORS.PLUGIN_MISSING_INTERFACE)); + } - for (const plugin of validPlugins) { - if (_.isNil(plugin) || _.isFunction(plugin.changePassword) === false) { - debug('auth plugin does not implement changePassword, trying next one'); - continue; - } else { - debug('updating password for %o', username); - plugin.changePassword!(username, password, newPassword, (err, profile): void => { - if (err) { - this.logger.error( - { username, err }, - `An error has been produced + for (const plugin of validPlugins) { + if (_.isNil(plugin) || _.isFunction(plugin.changePassword) === false) { + this.logger.trace('auth plugin does not implement changePassword, trying next one'); + continue; + } else { + this.logger.trace({username}, 'updating password for @{username}'); + plugin.changePassword!( + username, + password, + newPassword, + (err, profile): void => { + if (err) { + this.logger.error( + {username, err}, + `An error has been produced updating the password for @{username}. Error: @{err.message}` - ); - return cb(err); - } - this.logger.info({ username }, 'updated password for @{username} was successful'); - return cb(null, profile); - }); - } - } + ); + return cb(err); + } + + this.logger.trace({username}, 'updated password for @{username} was successful'); + return cb(null, profile); + } + ); + } + } } public authenticate(username: string, password: string, cb: Callback): void { @@ -95,13 +104,15 @@ class Auth implements IAuth { const self = this; (function next(): void { const plugin = plugins.shift() as IPluginAuth; + if (_.isFunction(plugin.authenticate) === false) { return next(); } - debug('authenticating %o', username); - plugin.authenticate(username, password, function (err, groups): void { + + self.logger.trace({ username }, 'authenticating @{username}'); + plugin.authenticate(username, password, function(err, groups): void { if (err) { - self.logger.error({ username, err }, 'authenticating for user @{username} failed. Error: @{err.message}'); + self.logger.trace({ username, err }, 'authenticating for user @{username} failed. Error: @{err.message}'); return cb(err); } @@ -121,7 +132,8 @@ class Auth implements IAuth { if (!isGroupValid) { throw new TypeError(API_ERROR.BAD_FORMAT_USER_GROUP); } - debug('authentication for user %o was successfully. Groups: %o', username, groups); + + self.logger.trace({ username, groups }, 'authentication for user @{username} was successfully. Groups: @{groups}'); return cb(err, createRemoteUser(username, groups)); } next(); @@ -132,7 +144,8 @@ class Auth implements IAuth { public add_user(user: string, password: string, cb: Callback): void { const self = this; const plugins = this.plugins.slice(0); - debug('add user %o', user); + this.logger.trace({ user }, 'add user @{user}'); + (function next(): void { const plugin = plugins.shift() as IPluginAuth; let method = 'adduser'; @@ -145,13 +158,13 @@ class Auth implements IAuth { next(); } else { // p.add_user() execution - plugin[method](user, password, function (err, ok): void { + plugin[method](user, password, function(err, ok): void { if (err) { - self.logger.error({ user, err: err.message }, 'the user @{user} could not being added. Error: @{err}'); + self.logger.trace({ user, err: err.message }, 'the user @{user} could not being added. Error: @{err}'); return cb(err); } if (ok) { - self.logger.info({ user }, 'the user @{user} has been added'); + self.logger.trace({ user }, 'the user @{user} has been added'); return self.authenticate(user, password, cb); } next(); @@ -165,10 +178,10 @@ class Auth implements IAuth { */ public allow_access({ packageName, packageVersion }: AuthPluginPackage, user: RemoteUser, callback: Callback): void { const plugins = this.plugins.slice(0); - const self = this; const pkgAllowAcces: AllowAccess = { name: packageName, version: packageVersion }; const pkg = Object.assign({}, pkgAllowAcces, getMatchedPackagesSpec(packageName, this.config.packages)) as AllowAccess & PackageAccess; - debug('allow access for %o', packageName); + const self = this; + this.logger.trace({ packageName }, 'allow access for @{packageName}'); (function next(): void { const plugin: IPluginAuth = plugins.shift() as IPluginAuth; @@ -177,14 +190,14 @@ class Auth implements IAuth { return next(); } - plugin.allow_access!(user, pkg, function (err, ok: boolean): void { + plugin.allow_access!(user, pkg, function(err, ok: boolean): void { if (err) { - self.logger.error({ packageName, err }, 'forbidden access for @{packageName}. Error: @{err.message}'); + self.logger.trace({ packageName, err }, 'forbidden access for @{packageName}. Error: @{err.message}'); return callback(err); } if (ok) { - self.logger.info({ packageName }, 'allowed access for @{packageName}'); + self.logger.trace({ packageName }, 'allowed access for @{packageName}'); return callback(null, ok); } @@ -195,30 +208,35 @@ class Auth implements IAuth { public allow_unpublish({ packageName, packageVersion }: AuthPluginPackage, user: RemoteUser, callback: Callback): void { const pkg = Object.assign({ name: packageName, version: packageVersion }, getMatchedPackagesSpec(packageName, this.config.packages)); - debug('allow unpublish for %o', packageName); + this.logger.trace({ packageName }, 'allow unpublish for @{packageName}'); + for (const plugin of this.plugins) { if (_.isNil(plugin) || _.isFunction(plugin.allow_unpublish) === false) { - debug('allow unpublish for %o plugin does not implement allow_unpublish', packageName); + this.logger.trace({ packageName }, 'allow unpublish for @{packageName} plugin does not implement allow_unpublish'); continue; } else { - plugin.allow_unpublish!(user, pkg, (err, ok: boolean): void => { - if (err) { - this.logger.error({ packageName, user: user?.name }, '@{user} forbidden publish for @{packageName}, it will fallback on unpublish permissions'); - return callback(err); - } + plugin.allow_unpublish!( + user, + pkg, + (err, ok: boolean): void => { + if (err) { + this.logger.trace({ packageName }, 'forbidden publish for @{packageName}, it will fallback on unpublish permissions'); + return callback(err); + } - if (_.isNil(ok) === true) { - debug('we bypass unpublish for %o, publish will handle the access', packageName); - // @ts-ignore - // eslint-disable-next-line - return this.allow_publish(...arguments); - } + if (_.isNil(ok) === true) { + this.logger.trace({ packageName }, 'we bypass unpublish for @{packageName}, publish will handle the access'); + // @ts-ignore + // eslint-disable-next-line + return this.allow_publish(...arguments); + } - if (ok) { - this.logger.info({ packageName, user: user?.name }, '@{user} allowed unpublish for @{packageName}'); - return callback(null, ok); + if (ok) { + this.logger.trace({ packageName }, 'allowed unpublish for @{packageName}'); + return callback(null, ok); + } } - }); + ); } } } @@ -230,29 +248,36 @@ class Auth implements IAuth { const plugins = this.plugins.slice(0); const self = this; const pkg = Object.assign({ name: packageName, version: packageVersion }, getMatchedPackagesSpec(packageName, this.config.packages)); - debug('allow publish for %o init | plugins: %o', packageName, plugins); + this.logger.trace({ packageName, plugins: this.plugins.length }, 'allow publish for @{packageName} init | plugins: @{plugins}'); + (function next(): void { const plugin = plugins.shift(); if (_.isNil(plugin) || _.isFunction(plugin.allow_publish) === false) { - debug('allow publish for %o plugin does not implement allow_publish', packageName); + self.logger.trace({ packageName }, 'allow publish for @{packageName} plugin does not implement allow_publish'); return next(); } // @ts-ignore - plugin.allow_publish(user, pkg, (err: VerdaccioError, ok: boolean): void => { - if (_.isNil(err) === false && _.isError(err)) { - self.logger.error({ packageName, user: user?.name }, '@{user} is forbidden publish for @{packageName}'); - return callback(err); - } + plugin.allow_publish( + user, + pkg, + // @ts-ignore + (err: VerdaccioError, ok: boolean): void => { + if (_.isNil(err) === false && _.isError(err)) { + self.logger.trace({ packageName }, 'forbidden publish for @{packageName}'); + return callback(err); + } - if (ok) { - self.logger.info({ packageName, user: user?.name }, '@{user} is allowed publish for @{packageName}'); - return callback(null, ok); + if (ok) { + self.logger.trace({ packageName }, 'allowed publish for @{packageName}'); + return callback(null, ok); + } + + self.logger.trace({ packageName }, 'allow publish skip validation for @{packageName}'); + next(); // cb(null, false) causes next plugin to roll } - debug('allow publish skip validation for %o', packageName); - next(); // cb(null, false) causes next plugin to roll - }); + ); })(); } @@ -268,7 +293,7 @@ class Auth implements IAuth { return (req: $RequestExtend, res: $ResponseExtend, _next: NextFunction): void => { req.pause(); - const next = function (err: VerdaccioError | void): void { + const next = function(err: VerdaccioError | void): void { req.resume(); // uncomment this to reject users with bad auth headers // return _next.apply(null, arguments) @@ -293,7 +318,7 @@ class Auth implements IAuth { } if (!isAuthHeaderValid(authorization)) { - debug('api middleware auth heather is not valid'); + this.logger.trace('api middleware auth heather is not valid'); return next(ErrorCode.getBadRequest(API_ERROR.BAD_AUTH_HEADER)); } @@ -301,10 +326,10 @@ class Auth implements IAuth { const { secret } = this.config; if (isAESLegacy(security)) { - debug('api middleware using legacy auth token'); + this.logger.trace('api middleware using legacy auth token'); this._handleAESMiddleware(req, security, secret, authorization, next); } else { - debug('api middleware using JWT auth token'); + this.logger.trace('api middleware using JWT auth token'); this._handleJWTAPIMiddleware(req, security, secret, authorization, next); } }; @@ -316,15 +341,19 @@ class Auth implements IAuth { // this should happen when client tries to login with an existing user const credentials = convertPayloadToBase64(token).toString(); const { user, password } = parseBasicPayload(credentials) as AESPayload; - this.authenticate(user, password, (err, user): void => { - if (!err) { - req.remote_user = user; - next(); - } else { - req.remote_user = createAnonymousRemoteUser(); - next(err); + this.authenticate( + user, + password, + (err, user): void => { + if (!err) { + req.remote_user = user; + next(); + } else { + req.remote_user = createAnonymousRemoteUser(); + next(err); + } } - }); + ); } else { // jwt handler const credentials: any = getMiddlewareCredentials(security, secret, authorization); @@ -343,15 +372,19 @@ class Auth implements IAuth { const credentials: any = getMiddlewareCredentials(security, secret, authorization); if (credentials) { const { user, password } = credentials; - this.authenticate(user, password, (err, user): void => { - if (!err) { - req.remote_user = user; - next(); - } else { - req.remote_user = createAnonymousRemoteUser(); - next(err); + this.authenticate( + user, + password, + (err, user): void => { + if (!err) { + req.remote_user = user; + next(); + } else { + req.remote_user = createAnonymousRemoteUser(); + next(err); + } } - }); + ); } else { // we force npm client to ask again with basic authentication return next(ErrorCode.getBadRequest(API_ERROR.BAD_AUTH_HEADER)); @@ -438,4 +471,4 @@ class Auth implements IAuth { } } -export default Auth; +export { Auth }; diff --git a/packages/auth/src/index.ts b/packages/auth/src/index.ts new file mode 100644 index 000000000..7804136f1 --- /dev/null +++ b/packages/auth/src/index.ts @@ -0,0 +1 @@ +export { Auth } from './auth' diff --git a/test/unit/modules/auth/auth-utils.spec.ts b/packages/auth/test/auth-utils.spec.ts similarity index 64% rename from test/unit/modules/auth/auth-utils.spec.ts rename to packages/auth/test/auth-utils.spec.ts index 97e532101..ada60b1e9 100644 --- a/test/unit/modules/auth/auth-utils.spec.ts +++ b/packages/auth/test/auth-utils.spec.ts @@ -1,27 +1,35 @@ import _ from 'lodash'; -import Auth from '../../../../src/lib/auth'; -import { CHARACTER_ENCODING, TOKEN_BEARER } from '../../../../src/lib/constants'; -// $FlowFixMe -import configExample from '../../partials/config'; -import AppConfig from '../../../../src/lib/config'; -import { setup } from '../../../../src/lib/logger'; +import { Auth } from '@verdaccio/auth'; +import {CHARACTER_ENCODING, TOKEN_BEARER} from '@verdaccio/dev-commons'; + +import { configExample } from '@verdaccio/mock'; +import {Config as AppConfig } from '@verdaccio/config'; +import {setup} from '@verdaccio/logger'; -import { buildToken, convertPayloadToBase64, parseConfigFile } from '../../../../src/lib/utils'; import { buildUserBuffer, getApiToken, getAuthenticatedMessage, getMiddlewareCredentials, - getSecurity -} from '../../../../src/lib/auth-utils'; -import { aesDecrypt, verifyPayload } from '../../../../src/lib/crypto-utils'; -import { parseConfigurationFile } from '../../__helper'; + getSecurity, + aesDecrypt, verifyPayload, + buildToken, convertPayloadToBase64, parseConfigFile +} from '@verdaccio/utils'; -import { IAuth } from '../../../../types'; -import { Config, Security, RemoteUser } from '@verdaccio/types'; +import { IAuth } from '@verdaccio/dev-types'; +import {Config, Security, RemoteUser} from '@verdaccio/types'; +import path from "path"; setup([]); +const parseConfigurationFile = (conf) => { + const { name, ext } = path.parse(conf); + const format = ext.startsWith('.') ? ext.substring(1) : 'yaml'; + + return path.join(__dirname, `./partials/config/${format}/security/${name}.${format}`); +}; + + describe('Auth utilities', () => { jest.setTimeout(20000); @@ -31,7 +39,7 @@ describe('Auth utilities', () => { function getConfig(configFileName: string, secret: string) { const conf = parseConfigFile(parseConfigurationSecurityFile(configFileName)); - const secConf = _.merge(configExample(), conf); + const secConf= _.merge(configExample(), conf); secConf.secret = secret; const config: Config = new AppConfig(secConf); @@ -44,8 +52,7 @@ describe('Auth utilities', () => { password: string, secret = '12345', methodToSpy: string, - methodNotBeenCalled: string - ): Promise { + methodNotBeenCalled: string): Promise { const config: Config = getConfig(configFileName, secret); const auth: IAuth = new Auth(config); // @ts-ignore @@ -74,9 +81,7 @@ describe('Auth utilities', () => { }; const verifyAES = (token: string, user: string, password: string, secret: string) => { - const payload = aesDecrypt(convertPayloadToBase64(token), secret).toString( - CHARACTER_ENCODING.UTF8 - ); + const payload = aesDecrypt(convertPayloadToBase64(token), secret).toString(CHARACTER_ENCODING.UTF8); const content = payload.split(':'); expect(content[0]).toBe(user); @@ -85,98 +90,56 @@ describe('Auth utilities', () => { describe('getApiToken test', () => { test('should sign token with aes and security missing', async () => { - const token = await signCredentials( - 'security-missing', - 'test', - 'test', - '1234567', - 'aesEncrypt', - 'jwtEncrypt' - ); + const token = await signCredentials('security-missing', + 'test', 'test', '1234567', 'aesEncrypt', 'jwtEncrypt'); verifyAES(token, 'test', 'test', '1234567'); expect(_.isString(token)).toBeTruthy(); }); test('should sign token with aes and security empty', async () => { - const token = await signCredentials( - 'security-empty', - 'test', - 'test', - '123456', - 'aesEncrypt', - 'jwtEncrypt' - ); + const token = await signCredentials('security-empty', + 'test', 'test', '123456', 'aesEncrypt', 'jwtEncrypt'); verifyAES(token, 'test', 'test', '123456'); expect(_.isString(token)).toBeTruthy(); }); test('should sign token with aes', async () => { - const token = await signCredentials( - 'security-basic', - 'test', - 'test', - '123456', - 'aesEncrypt', - 'jwtEncrypt' - ); + const token = await signCredentials('security-basic', + 'test', 'test', '123456', 'aesEncrypt', 'jwtEncrypt'); verifyAES(token, 'test', 'test', '123456'); expect(_.isString(token)).toBeTruthy(); }); test('should sign token with legacy and jwt disabled', async () => { - const token = await signCredentials( - 'security-no-legacy', - 'test', - 'test', - 'x8T#ZCx=2t', - 'aesEncrypt', - 'jwtEncrypt' - ); + const token = await signCredentials('security-no-legacy', + 'test', 'test', 'x8T#ZCx=2t', 'aesEncrypt', 'jwtEncrypt'); expect(_.isString(token)).toBeTruthy(); verifyAES(token, 'test', 'test', 'x8T#ZCx=2t'); }); test('should sign token with legacy enabled and jwt enabled', async () => { - const token = await signCredentials( - 'security-jwt-legacy-enabled', - 'test', - 'test', - 'secret', - 'jwtEncrypt', - 'aesEncrypt' - ); + const token = await signCredentials('security-jwt-legacy-enabled', + 'test', 'test', 'secret', 'jwtEncrypt', 'aesEncrypt'); verifyJWT(token, 'test', 'test', 'secret'); expect(_.isString(token)).toBeTruthy(); }); test('should sign token with jwt enabled', async () => { - const token = await signCredentials( - 'security-jwt', - 'test', - 'test', - 'secret', - 'jwtEncrypt', - 'aesEncrypt' - ); + const token = await signCredentials('security-jwt', + 'test', 'test', 'secret', 'jwtEncrypt', 'aesEncrypt'); expect(_.isString(token)).toBeTruthy(); verifyJWT(token, 'test', 'test', 'secret'); }); test('should sign with jwt whether legacy is disabled', async () => { - const token = await signCredentials( - 'security-legacy-disabled', - 'test', - 'test', - 'secret', - 'jwtEncrypt', - 'aesEncrypt' - ); + const token = await signCredentials('security-legacy-disabled', + 'test', 'test', 'secret', 'jwtEncrypt', 'aesEncrypt'); expect(_.isString(token)).toBeTruthy(); verifyJWT(token, 'test', 'test', 'secret'); @@ -185,7 +148,7 @@ describe('Auth utilities', () => { describe('getAuthenticatedMessage test', () => { test('should sign token with jwt enabled', () => { - expect(getAuthenticatedMessage('test')).toBe("you are authenticated as 'test'"); + expect(getAuthenticatedMessage('test')).toBe('you are authenticated as \'test\''); }); }); @@ -195,14 +158,8 @@ describe('Auth utilities', () => { const secret = 'secret'; const user = 'test'; const pass = 'test'; - const token = await signCredentials( - 'security-legacy', - user, - pass, - secret, - 'aesEncrypt', - 'jwtEncrypt' - ); + const token = await signCredentials('security-legacy', + user, pass, secret, 'aesEncrypt', 'jwtEncrypt'); const config: Config = getConfig('security-legacy', secret); const security: Security = getSecurity(config); const credentials = getMiddlewareCredentials(security, secret, `Bearer ${token}`); @@ -230,41 +187,21 @@ describe('Auth utilities', () => { test.concurrent('should return empty credential wrong secret key', async () => { const secret = 'secret'; - const token = await signCredentials( - 'security-legacy', - 'test', - 'test', - secret, - 'aesEncrypt', - 'jwtEncrypt' - ); + const token = await signCredentials('security-legacy', + 'test', 'test', secret, 'aesEncrypt', 'jwtEncrypt'); const config: Config = getConfig('security-legacy', secret); const security: Security = getSecurity(config); - const credentials = getMiddlewareCredentials( - security, - 'BAD_SECRET', - buildToken(TOKEN_BEARER, token) - ); + const credentials = getMiddlewareCredentials(security, 'BAD_SECRET', buildToken(TOKEN_BEARER, token)); expect(credentials).not.toBeDefined(); }); test.concurrent('should return empty credential wrong scheme', async () => { const secret = 'secret'; - const token = await signCredentials( - 'security-legacy', - 'test', - 'test', - secret, - 'aesEncrypt', - 'jwtEncrypt' - ); + const token = await signCredentials('security-legacy', + 'test', 'test', secret, 'aesEncrypt', 'jwtEncrypt'); const config: Config = getConfig('security-legacy', secret); const security: Security = getSecurity(config); - const credentials = getMiddlewareCredentials( - security, - secret, - buildToken('BAD_SCHEME', token) - ); + const credentials = getMiddlewareCredentials(security, secret, buildToken('BAD_SCHEME', token)); expect(credentials).not.toBeDefined(); }); @@ -274,11 +211,7 @@ describe('Auth utilities', () => { const auth: IAuth = new Auth(config); const token = auth.aesEncrypt(Buffer.from(`corruptedBuffer`)).toString('base64'); const security: Security = getSecurity(config); - const credentials = getMiddlewareCredentials( - security, - secret, - buildToken(TOKEN_BEARER, token) - ); + const credentials = getMiddlewareCredentials(security, secret, buildToken(TOKEN_BEARER, token)); expect(credentials).not.toBeDefined(); }); }); @@ -287,11 +220,7 @@ describe('Auth utilities', () => { test('should return anonymous whether token is corrupted', () => { const config: Config = getConfig('security-jwt', '12345'); const security: Security = getSecurity(config); - const credentials = getMiddlewareCredentials( - security, - '12345', - buildToken(TOKEN_BEARER, 'fakeToken') - ); + const credentials = getMiddlewareCredentials(security, '12345', buildToken(TOKEN_BEARER, 'fakeToken')); expect(credentials).toBeDefined(); // @ts-ignore @@ -305,11 +234,7 @@ describe('Auth utilities', () => { test('should return anonymous whether token and scheme are corrupted', () => { const config: Config = getConfig('security-jwt', '12345'); const security: Security = getSecurity(config); - const credentials = getMiddlewareCredentials( - security, - '12345', - buildToken('FakeScheme', 'fakeToken') - ); + const credentials = getMiddlewareCredentials(security, '12345', buildToken('FakeScheme', 'fakeToken')); expect(credentials).not.toBeDefined(); }); @@ -318,20 +243,10 @@ describe('Auth utilities', () => { const secret = 'secret'; const user = 'test'; const config: Config = getConfig('security-jwt', secret); - const token = await signCredentials( - 'security-jwt', - user, - 'secretTest', - secret, - 'jwtEncrypt', - 'aesEncrypt' - ); + const token = await signCredentials('security-jwt', + user, 'secretTest', secret, 'jwtEncrypt', 'aesEncrypt'); const security: Security = getSecurity(config); - const credentials = getMiddlewareCredentials( - security, - secret, - buildToken(TOKEN_BEARER, token) - ); + const credentials = getMiddlewareCredentials(security, secret, buildToken(TOKEN_BEARER, token)); expect(credentials).toBeDefined(); // @ts-ignore expect(credentials.name).toEqual(user); diff --git a/packages/auth/test/crypto-utils.spec.ts b/packages/auth/test/crypto-utils.spec.ts new file mode 100644 index 000000000..0575627da --- /dev/null +++ b/packages/auth/test/crypto-utils.spec.ts @@ -0,0 +1,14 @@ +import {aesDecrypt, aesEncrypt, convertPayloadToBase64} from "@verdaccio/utils"; + +describe('test crypto utils', () => { + describe('default encryption', () => { + test('decrypt payload flow', () => { + const payload = 'juan'; + const token = aesEncrypt(Buffer.from(payload), '12345').toString('base64'); + + const data = aesDecrypt(convertPayloadToBase64(token), '12345').toString('utf8'); + + expect(payload).toEqual(data); + }); + }); +}); diff --git a/test/unit/partials/config/yaml/security/security-basic.yaml b/packages/auth/test/partials/config/yaml/security/security-basic.yaml similarity index 100% rename from test/unit/partials/config/yaml/security/security-basic.yaml rename to packages/auth/test/partials/config/yaml/security/security-basic.yaml diff --git a/test/unit/partials/config/yaml/security/security-empty.yaml b/packages/auth/test/partials/config/yaml/security/security-empty.yaml similarity index 100% rename from test/unit/partials/config/yaml/security/security-empty.yaml rename to packages/auth/test/partials/config/yaml/security/security-empty.yaml diff --git a/test/unit/partials/config/yaml/security/security-jwt-legacy-enabled.yaml b/packages/auth/test/partials/config/yaml/security/security-jwt-legacy-enabled.yaml similarity index 100% rename from test/unit/partials/config/yaml/security/security-jwt-legacy-enabled.yaml rename to packages/auth/test/partials/config/yaml/security/security-jwt-legacy-enabled.yaml diff --git a/test/unit/partials/config/yaml/security/security-jwt.yaml b/packages/auth/test/partials/config/yaml/security/security-jwt.yaml similarity index 100% rename from test/unit/partials/config/yaml/security/security-jwt.yaml rename to packages/auth/test/partials/config/yaml/security/security-jwt.yaml diff --git a/test/unit/partials/config/yaml/security/security-legacy-disabled.yaml b/packages/auth/test/partials/config/yaml/security/security-legacy-disabled.yaml similarity index 100% rename from test/unit/partials/config/yaml/security/security-legacy-disabled.yaml rename to packages/auth/test/partials/config/yaml/security/security-legacy-disabled.yaml diff --git a/test/unit/partials/config/yaml/security/security-legacy.yaml b/packages/auth/test/partials/config/yaml/security/security-legacy.yaml similarity index 100% rename from test/unit/partials/config/yaml/security/security-legacy.yaml rename to packages/auth/test/partials/config/yaml/security/security-legacy.yaml diff --git a/test/unit/partials/config/yaml/security/security-missing.yaml b/packages/auth/test/partials/config/yaml/security/security-missing.yaml similarity index 100% rename from test/unit/partials/config/yaml/security/security-missing.yaml rename to packages/auth/test/partials/config/yaml/security/security-missing.yaml diff --git a/test/unit/partials/config/yaml/security/security-no-legacy.yaml b/packages/auth/test/partials/config/yaml/security/security-no-legacy.yaml similarity index 100% rename from test/unit/partials/config/yaml/security/security-no-legacy.yaml rename to packages/auth/test/partials/config/yaml/security/security-no-legacy.yaml diff --git a/packages/auth/tsconfig.json b/packages/auth/tsconfig.json new file mode 100644 index 000000000..6531bd3e4 --- /dev/null +++ b/packages/auth/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./build" + }, + "include": ["src/**/*"], + "exclude": ["src/**/*.test.ts"] +} diff --git a/packages/cli/.babelrc b/packages/cli/.babelrc new file mode 100644 index 000000000..28397a1bd --- /dev/null +++ b/packages/cli/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": [["@verdaccio"]] +} diff --git a/packages/cli/bin/verdaccio b/packages/cli/bin/verdaccio new file mode 100755 index 000000000..fd70bc7c3 --- /dev/null +++ b/packages/cli/bin/verdaccio @@ -0,0 +1,3 @@ +#!/usr/bin/env node + +require('../build'); diff --git a/packages/cli/jest.config.js b/packages/cli/jest.config.js new file mode 100644 index 000000000..45146c37f --- /dev/null +++ b/packages/cli/jest.config.js @@ -0,0 +1,9 @@ +module.exports = { + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'], + transform: { + '^.+\\.(js|jsx|ts|tsx)$': 'babel-jest', + }, + verbose: true, + collectCoverage: true, + coveragePathIgnorePatterns: ['node_modules', 'fixtures'], +}; diff --git a/packages/cli/package.json b/packages/cli/package.json new file mode 100644 index 000000000..33ac6769e --- /dev/null +++ b/packages/cli/package.json @@ -0,0 +1,40 @@ +{ + "name": "@verdaccio/cli", + "version": "5.0.0-alpha.0", + "author": { + "name": "Juan Picado", + "email": "juanpicado19@gmail.com" + }, + "bin": { + "verdaccio": "./bin/verdaccio", + "verdaccio-cli": "./bin/verdaccio" + }, + "repository": { + "type": "git", + "url": "git://github.com/verdaccio/verdaccio" + }, + "homepage": "https://verdaccio.org", + "description": "verdaccio CLI", + "license": "MIT", + "main": "./build/index.js", + "types": "build/index.d.ts", + "scripts": { + "clean": "rimraf ./build", + "test": "cross-env NODE_ENV=test BABEL_ENV=test jest", + "type-check": "tsc --noEmit", + "build:types": "tsc --emitDeclarationOnly --declaration true", + "build:js": "cross-env BABEL_ENV=registry babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "build": "npm run build:js && npm run build:types", + "bundle": "cross-env BABEL_ENV=registry webpack --config scripts/bundle.js --profile --json > compilation-stats.json" + }, + "dependencies": { + "@verdaccio/config": "5.0.0-alpha.0", + "@verdaccio/node-api": "5.0.0-alpha.0", + "@verdaccio/utils": "5.0.0-alpha.0", + "commander": "3.0.2", + "envinfo": "7.4.0", + "kleur": "3.0.3", + "semver": "7.1.2" + }, + "gitHead": "7c246ede52ff717707fcae66dd63fc4abd536982" +} diff --git a/packages/cli/src/.eslintrc b/packages/cli/src/.eslintrc new file mode 100644 index 000000000..7753f32e7 --- /dev/null +++ b/packages/cli/src/.eslintrc @@ -0,0 +1,5 @@ +{ + "rules": { + "no-console": 0 + } +} diff --git a/packages/cli/src/cli.ts b/packages/cli/src/cli.ts new file mode 100644 index 000000000..a96e4aa6f --- /dev/null +++ b/packages/cli/src/cli.ts @@ -0,0 +1,60 @@ +/* eslint no-sync:0 */ +/* eslint no-empty:0 */ + +import commander from 'commander'; +import { bgYellow, bgRed } from 'kleur'; + +import { setup, logger } from '@verdaccio/logger'; + +import infoCommand from "./commands/info"; +import initProgram from "./commands/init"; +import {isVersionValid, MIN_NODE_VERSION} from "./utils"; + +const isRootUser = process.getuid && process.getuid() === 0; + +if (isRootUser) { + global.console.warn(bgYellow().red('*** WARNING: Verdaccio doesn\'t need superuser privileges. Don\'t run it under root! ***')); +} + +if (isVersionValid()) { + global.console.error(bgRed(`Verdaccio requires at least Node.js ${MIN_NODE_VERSION} or higher, please upgrade your Node.js distribution`)); + process.exit(1); +} + +process.title = 'verdaccio'; + +// default setup +setup(null, {logStart: false}); + +const pkgVersion = '5.0.0'; +const pkgName = 'verdaccio'; + +commander + .option('-i, --info', 'prints debugging information about the local environment') + .option('-l, --listen <[host:]port>', 'host:port number to listen on (default: localhost:4873)') + .option('-c, --config ', 'use this configuration file (default: ./config.yaml)') + .version(pkgVersion) + .parse(process.argv); + +const fallbackConfig = commander.args.length == 1 && !commander.config; +const isHelp = commander.args.length !== 0; + +if (commander.info) { + infoCommand(); +} else if (fallbackConfig) { + // handling "verdaccio [config]" case if "-c" is missing in command line + commander.config = commander.args.pop(); + initProgram(commander, pkgVersion, pkgName); +} else if (isHelp) { + commander.help(); +} else { + initProgram(commander, pkgVersion, pkgName); +} + +process.on('uncaughtException', function(err) { + logger.fatal( { + err: err, + }, + 'uncaught exception, please report (https://github.com/verdaccio/verdaccio/issues) this: \n@{err.stack}' ); + process.exit(255); +}); diff --git a/packages/cli/src/commands/info.ts b/packages/cli/src/commands/info.ts new file mode 100644 index 000000000..9fa17bb40 --- /dev/null +++ b/packages/cli/src/commands/info.ts @@ -0,0 +1,18 @@ +import envinfo from 'envinfo'; + +export default function infoCommand() { + // eslint-disable-next-line no-console + console.log('\nEnvironment Info:'); + (async () => { + const data = await envinfo.run({ + System: ['OS', 'CPU'], + Binaries: ['Node', 'Yarn', 'npm'], + Virtualization: ['Docker'], + Browsers: ['Chrome', 'Edge', 'Firefox', 'Safari'], + npmGlobalPackages: ['verdaccio'], + }); + // eslint-disable-next-line no-console + console.log(data); + process.exit(0); + })(); +} diff --git a/packages/cli/src/commands/init.ts b/packages/cli/src/commands/init.ts new file mode 100644 index 000000000..d439a9646 --- /dev/null +++ b/packages/cli/src/commands/init.ts @@ -0,0 +1,42 @@ +import path from "path"; +import _ from 'lodash'; + +import { parseConfigFile} from "@verdaccio/utils"; +import { findConfigFile } from "@verdaccio/config"; +import { logger } from '@verdaccio/logger'; +import {startVerdaccio, listenDefaultCallback} from "@verdaccio/node-api"; + +export const DEFAULT_PROCESS_NAME: string = 'verdaccio'; + +export default function initProgram(commander, pkgVersion, pkgName) { + const cliListener = commander.listen; + let configPathLocation; + let verdaccioConfiguration; + try { + configPathLocation = findConfigFile(commander.config); + verdaccioConfiguration = parseConfigFile(configPathLocation); + const { web, https, self_path } = verdaccioConfiguration; + + process.title = web && web.title || DEFAULT_PROCESS_NAME; + + // note: self_path is only being used by @verdaccio/storage , not really useful and migth be removed soon + if (!self_path) { + verdaccioConfiguration = _.assign({}, verdaccioConfiguration, { + self_path: path.resolve(configPathLocation) + }); + } + + if (!https) { + verdaccioConfiguration = _.assign({}, verdaccioConfiguration, { + https: {enable: false} + }); + } + + logger.warn({file: configPathLocation}, 'config file - @{file}'); + + startVerdaccio(verdaccioConfiguration, cliListener, configPathLocation, pkgVersion, pkgName, listenDefaultCallback); + } catch (err) { + logger.fatal({file: configPathLocation, err: err}, 'cannot open config file @{file}: @{!err.message}'); + process.exit(1); + } +} diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts new file mode 100644 index 000000000..74bbb99e5 --- /dev/null +++ b/packages/cli/src/index.ts @@ -0,0 +1 @@ +require('./cli'); diff --git a/packages/cli/src/utils.ts b/packages/cli/src/utils.ts new file mode 100644 index 000000000..c4d12d663 --- /dev/null +++ b/packages/cli/src/utils.ts @@ -0,0 +1,5 @@ +import semver from "semver"; + +export const MIN_NODE_VERSION = '6.9.0'; + +export const isVersionValid = () => semver.satisfies(process.version, `>=${MIN_NODE_VERSION}`) === false diff --git a/packages/cli/test/cli-test.spec.ts b/packages/cli/test/cli-test.spec.ts new file mode 100644 index 000000000..d07cd0e06 --- /dev/null +++ b/packages/cli/test/cli-test.spec.ts @@ -0,0 +1,3 @@ +describe('cli test', () => { + test.todo('write some test for this module'); +}); diff --git a/packages/cli/tsconfig.json b/packages/cli/tsconfig.json new file mode 100644 index 000000000..6531bd3e4 --- /dev/null +++ b/packages/cli/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./build" + }, + "include": ["src/**/*"], + "exclude": ["src/**/*.test.ts"] +} diff --git a/packages/commons/.babelrc b/packages/commons/.babelrc new file mode 100644 index 000000000..28397a1bd --- /dev/null +++ b/packages/commons/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": [["@verdaccio"]] +} diff --git a/packages/commons/package.json b/packages/commons/package.json new file mode 100644 index 000000000..3312e18af --- /dev/null +++ b/packages/commons/package.json @@ -0,0 +1,25 @@ +{ + "name": "@verdaccio/dev-commons", + "version": "5.0.0-alpha.0", + "description": "loaders logic", + "main": "./build/index.js", + "types": "build/index.d.ts", + "author": { + "name": "Juan Picado", + "email": "juanpicado19@gmail.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/verdaccio/verdaccio" + }, + "homepage": "https://verdaccio.org", + "license": "MIT", + "scripts": { + "clean": "rimraf ./build", + "type-check": "tsc --noEmit", + "build:types": "tsc --emitDeclarationOnly --declaration true", + "build:js": "cross-env BABEL_ENV=registry babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "build": "npm run build:js && npm run build:types" + }, + "gitHead": "7c246ede52ff717707fcae66dd63fc4abd536982" +} diff --git a/src/lib/constants.ts b/packages/commons/src/constants.ts similarity index 99% rename from src/lib/constants.ts rename to packages/commons/src/constants.ts index 96495fd19..b6e5a26a3 100644 --- a/src/lib/constants.ts +++ b/packages/commons/src/constants.ts @@ -1,9 +1,3 @@ -/** - * @prettier - */ - -// @flow - export const DEFAULT_PORT = '4873'; export const DEFAULT_PROTOCOL = 'http'; export const DEFAULT_DOMAIN = 'localhost'; diff --git a/packages/commons/src/index.ts b/packages/commons/src/index.ts new file mode 100644 index 000000000..c94f80f84 --- /dev/null +++ b/packages/commons/src/index.ts @@ -0,0 +1 @@ +export * from './constants'; diff --git a/packages/commons/tsconfig.json b/packages/commons/tsconfig.json new file mode 100644 index 000000000..6531bd3e4 --- /dev/null +++ b/packages/commons/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./build" + }, + "include": ["src/**/*"], + "exclude": ["src/**/*.test.ts"] +} diff --git a/packages/config/.babelrc b/packages/config/.babelrc new file mode 100644 index 000000000..28397a1bd --- /dev/null +++ b/packages/config/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": [["@verdaccio"]] +} diff --git a/packages/config/jest.config.js b/packages/config/jest.config.js new file mode 100644 index 000000000..45146c37f --- /dev/null +++ b/packages/config/jest.config.js @@ -0,0 +1,9 @@ +module.exports = { + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'], + transform: { + '^.+\\.(js|jsx|ts|tsx)$': 'babel-jest', + }, + verbose: true, + collectCoverage: true, + coveragePathIgnorePatterns: ['node_modules', 'fixtures'], +}; diff --git a/packages/config/package.json b/packages/config/package.json new file mode 100644 index 000000000..d4bd8c5c0 --- /dev/null +++ b/packages/config/package.json @@ -0,0 +1,32 @@ +{ + "name": "@verdaccio/config", + "version": "5.0.0-alpha.0", + "description": "logger", + "main": "./build/index.js", + "types": "build/index.d.ts", + "author": { + "name": "Juan Picado", + "email": "juanpicado19@gmail.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/verdaccio/verdaccio" + }, + "license": "MIT", + "homepage": "https://verdaccio.org", + "scripts": { + "clean": "rimraf ./build", + "test": "cross-env NODE_ENV=test BABEL_ENV=test jest", + "type-check": "tsc --noEmit", + "build:types": "tsc --emitDeclarationOnly --declaration true", + "build:js": "cross-env BABEL_ENV=registry babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "build": "npm run build:js && npm run build:types" + }, + "dependencies": { + "@verdaccio/utils": "5.0.0-alpha.0" + }, + "devDependencies": { + "@types/bunyan": "1.8.6" + }, + "gitHead": "7c246ede52ff717707fcae66dd63fc4abd536982" +} diff --git a/conf/README.md b/packages/config/src/conf/README.md similarity index 100% rename from conf/README.md rename to packages/config/src/conf/README.md diff --git a/conf/default.yaml b/packages/config/src/conf/default.yaml similarity index 100% rename from conf/default.yaml rename to packages/config/src/conf/default.yaml diff --git a/conf/docker.yaml b/packages/config/src/conf/docker.yaml similarity index 100% rename from conf/docker.yaml rename to packages/config/src/conf/docker.yaml diff --git a/conf/full.yaml b/packages/config/src/conf/full.yaml similarity index 100% rename from conf/full.yaml rename to packages/config/src/conf/full.yaml diff --git a/src/lib/config-path.ts b/packages/config/src/config-path.ts similarity index 73% rename from src/lib/config-path.ts rename to packages/config/src/config-path.ts index 2e47f9596..9ab9bfa62 100644 --- a/src/lib/config-path.ts +++ b/packages/config/src/config-path.ts @@ -1,22 +1,23 @@ import fs from 'fs'; -import Path from 'path'; +import path from 'path'; import _ from 'lodash'; +import Path from 'path'; +import { logger } from '@verdaccio/logger'; import mkdirp from 'mkdirp'; -import { logger } from './logger'; -import { folderExists, fileExists } from './utils'; -import { CHARACTER_ENCODING } from './constants'; +import { folderExists, fileExists } from '@verdaccio/utils'; +import { CHARACTER_ENCODING } from '@verdaccio/dev-commons'; const CONFIG_FILE = 'config.yaml'; const XDG = 'xdg'; const WIN = 'win'; const WIN32 = 'win32'; // eslint-disable-next-line -const pkgJSON = require('../../package.json'); +const pkgJSON = require('../package.json'); export type SetupDirectory = { path: string; - type: string; + type: string }; /** @@ -34,9 +35,7 @@ function findConfigFile(configPath: string): string { throw new Error('no configuration files can be processed'); } - const primaryConf: any = _.find(configPaths, (configLocation: any) => - fileExists(configLocation.path) - ); + const primaryConf: any = _.find(configPaths, (configLocation: any) => fileExists(configLocation.path)); if (_.isNil(primaryConf) === false) { return primaryConf.path; } @@ -54,8 +53,11 @@ function createConfigFile(configLocation: any): SetupDirectory { return configLocation; } -function readDefaultConfig(): string { - return fs.readFileSync(require.resolve('../../conf/default.yaml'), 'utf-8'); +export function readDefaultConfig(): Buffer { + const pathDefaultConf: string = path.resolve(__dirname, 'conf/default.yaml'); + + // @ts-ignore + return fs.readFileSync(pathDefaultConf, CHARACTER_ENCODING.UTF8); } function createConfigFolder(configLocation): void { @@ -71,8 +73,7 @@ function updateStorageLinks(configLocation, defaultConfig): string { // $XDG_DATA_HOME defines the base directory relative to which user specific data files should be stored, // If $XDG_DATA_HOME is either not set or empty, a default equal to $HOME/.local/share should be used. // $FlowFixMe - let dataDir = - process.env.XDG_DATA_HOME || Path.join(process.env.HOME as string, '.local', 'share'); + let dataDir = process.env.XDG_DATA_HOME || Path.join(process.env.HOME as string, '.local', 'share'); if (folderExists(dataDir)) { dataDir = Path.resolve(Path.join(dataDir, pkgJSON.name, 'storage')); return defaultConfig.replace(/^storage: .\/storage$/m, `storage: ${dataDir}`); @@ -81,17 +82,13 @@ function updateStorageLinks(configLocation, defaultConfig): string { } function getConfigPaths(): SetupDirectory[] { - const listPaths: SetupDirectory[] = [ - getXDGDirectory(), - getWindowsDirectory(), - getRelativeDefaultDirectory(), - getOldDirectory() - ].reduce(function (acc, currentValue: any): SetupDirectory[] { - if (_.isUndefined(currentValue) === false) { - acc.push(currentValue); - } - return acc; - }, [] as SetupDirectory[]); + const listPaths: SetupDirectory[] = [getXDGDirectory(), getWindowsDirectory(), getRelativeDefaultDirectory(), getOldDirectory()].reduce( + function(acc, currentValue: any): SetupDirectory[] { + if (_.isUndefined(currentValue) === false) { + acc.push(currentValue); + } + return acc; + }, [] as SetupDirectory[]); return listPaths; } @@ -102,7 +99,7 @@ const getXDGDirectory = (): SetupDirectory | void => { if (XDGConfig && folderExists(XDGConfig)) { return { path: Path.join(XDGConfig, pkgJSON.name, CONFIG_FILE), - type: XDG + type: XDG, }; } }; @@ -113,7 +110,7 @@ const getWindowsDirectory = (): SetupDirectory | void => { if (process.platform === WIN32 && process.env.APPDATA && folderExists(process.env.APPDATA)) { return { path: Path.resolve(Path.join(process.env.APPDATA, pkgJSON.name, CONFIG_FILE)), - type: WIN + type: WIN, }; } }; @@ -121,15 +118,15 @@ const getWindowsDirectory = (): SetupDirectory | void => { const getRelativeDefaultDirectory = (): SetupDirectory => { return { path: Path.resolve(Path.join('.', pkgJSON.name, CONFIG_FILE)), - type: 'def' + type: 'def', }; }; const getOldDirectory = (): SetupDirectory => { return { path: Path.resolve(Path.join('.', CONFIG_FILE)), - type: 'old' + type: 'old', }; }; -export default findConfigFile; +export { findConfigFile }; diff --git a/src/lib/config.ts b/packages/config/src/config.ts similarity index 83% rename from src/lib/config.ts rename to packages/config/src/config.ts index dc067da5f..43e0e52a1 100644 --- a/src/lib/config.ts +++ b/packages/config/src/config.ts @@ -1,19 +1,23 @@ -import assert from 'assert'; import _ from 'lodash'; +import assert from 'assert'; -import { PackageList, Config as AppConfig, Security, Logger } from '@verdaccio/types'; -import { MatchedPackage, StartUpConfig } from '../../types'; -import { generateRandomHexString } from './crypto-utils'; import { getMatchedPackagesSpec, normalisePackageAccess, sanityCheckUplinksProps, - uplinkSanityCheck -} from './config-utils'; -import { getUserAgent, isObject } from './utils'; -import { APP_ERROR } from './constants'; + uplinkSanityCheck, + generateRandomHexString, + getUserAgent, + isObject +} from '@verdaccio/utils'; +import { APP_ERROR } from '@verdaccio/dev-commons'; + +import { PackageList, Config as AppConfig, Security, Logger } from '@verdaccio/types'; + +import { MatchedPackage, StartUpConfig } from '@verdaccio/dev-types'; + +const LoggerApi = require('@verdaccio/logger'); -const LoggerApi = require('./logger'); const strategicConfigProps = ['uplinks', 'packages']; const allowedEnvConfig = ['http_proxy', 'https_proxy', 'no_proxy']; @@ -57,7 +61,7 @@ class Config implements AppConfig { assert(_.isObject(config), APP_ERROR.CONFIG_NOT_VALID); // sanity check for strategic config properties - strategicConfigProps.forEach(function (x): void { + strategicConfigProps.forEach(function(x): void { if (self[x] == null) { self[x] = {}; } @@ -75,11 +79,13 @@ class Config implements AppConfig { this.packages = normalisePackageAccess(self.packages); // loading these from ENV if aren't in config - allowedEnvConfig.forEach((envConf): void => { - if (!(envConf in self)) { - self[envConf] = process.env[envConf] || process.env[envConf.toUpperCase()]; + allowedEnvConfig.forEach( + (envConf): void => { + if (!(envConf in self)) { + self[envConf] = process.env[envConf] || process.env[envConf.toUpperCase()]; + } } - }); + ); // unique identifier of self server (or a cluster), used to avoid loops // @ts-ignore @@ -110,4 +116,4 @@ class Config implements AppConfig { } } -export default Config; +export { Config }; diff --git a/packages/config/src/index.ts b/packages/config/src/index.ts new file mode 100644 index 000000000..6f216aca0 --- /dev/null +++ b/packages/config/src/index.ts @@ -0,0 +1,2 @@ +export * from './config' +export * from './config-path' diff --git a/test/unit/modules/config/config.spec.ts b/packages/config/test/config.spec.ts similarity index 86% rename from test/unit/modules/config/config.spec.ts rename to packages/config/test/config.spec.ts index 52f83ad93..e09618028 100644 --- a/test/unit/modules/config/config.spec.ts +++ b/packages/config/test/config.spec.ts @@ -1,18 +1,20 @@ import path from 'path'; import _ from 'lodash'; -import Config from '../../../../src/lib/config'; -import { parseConfigFile } from '../../../../src/lib/utils'; -import { DEFAULT_REGISTRY, DEFAULT_UPLINK, ROLES, WEB_TITLE } from '../../../../src/lib/constants'; -import { setup } from '../../../../src/lib/logger'; +import { Config, readDefaultConfig } from '@verdaccio/config'; +import { setup } from '@verdaccio/logger'; +import {DEFAULT_REGISTRY, DEFAULT_UPLINK, ROLES, WEB_TITLE} from '@verdaccio/dev-commons'; + +import {parseConfigFile} from '@verdaccio/utils'; setup([]); const resolveConf = (conf) => { const { name, ext } = path.parse(conf); - return path.join(__dirname, `../../../../conf/${name}${ext.startsWith('.') ? ext : '.yaml'}`); + return path.join(__dirname, `../src/conf/${name}${ext.startsWith('.') ? ext : '.yaml'}`); }; + const checkDefaultUplink = (config) => { expect(_.isObject(config.uplinks[DEFAULT_UPLINK])).toBeTruthy(); expect(config.uplinks[DEFAULT_UPLINK].url).toMatch(DEFAULT_REGISTRY); @@ -43,7 +45,7 @@ const checkDefaultConfPackages = (config) => { expect(config.packages['**'].publish).toBeDefined(); expect(config.packages['**'].publish).toContainEqual(ROLES.$AUTH); expect(config.packages['**'].proxy).toBeDefined(); - expect(config.packages['**'].proxy).toContainEqual(DEFAULT_UPLINK); + expect(config.packages['**'].proxy,).toContainEqual(DEFAULT_UPLINK); // uplinks expect(config.uplinks[DEFAULT_UPLINK]).toBeDefined(); expect(config.uplinks[DEFAULT_UPLINK].url).toEqual(DEFAULT_REGISTRY); @@ -67,7 +69,7 @@ const checkDefaultConfPackages = (config) => { }; describe('Config file', () => { - beforeAll(function () { + beforeAll(function() { /* eslint no-invalid-this: 0 */ // @ts-ignore this.config = new Config(parseConfigFile(resolveConf('default'))); @@ -93,5 +95,9 @@ describe('Config file', () => { }); }); - describe('Config file', () => {}); + describe('Config file', () => { + + }); + }); + diff --git a/packages/config/tsconfig.json b/packages/config/tsconfig.json new file mode 100644 index 000000000..6531bd3e4 --- /dev/null +++ b/packages/config/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./build" + }, + "include": ["src/**/*"], + "exclude": ["src/**/*.test.ts"] +} diff --git a/packages/hooks/.babelrc b/packages/hooks/.babelrc new file mode 100644 index 000000000..28397a1bd --- /dev/null +++ b/packages/hooks/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": [["@verdaccio"]] +} diff --git a/packages/hooks/jest.config.js b/packages/hooks/jest.config.js new file mode 100644 index 000000000..45146c37f --- /dev/null +++ b/packages/hooks/jest.config.js @@ -0,0 +1,9 @@ +module.exports = { + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'], + transform: { + '^.+\\.(js|jsx|ts|tsx)$': 'babel-jest', + }, + verbose: true, + collectCoverage: true, + coveragePathIgnorePatterns: ['node_modules', 'fixtures'], +}; diff --git a/packages/hooks/package.json b/packages/hooks/package.json new file mode 100644 index 000000000..60fa20c9e --- /dev/null +++ b/packages/hooks/package.json @@ -0,0 +1,36 @@ +{ + "name": "@verdaccio/hooks", + "version": "5.0.0-alpha.0", + "description": "loaders logic", + "main": "./build/index.js", + "types": "build/index.d.ts", + "author": { + "name": "Juan Picado", + "email": "juanpicado19@gmail.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/verdaccio/verdaccio" + }, + "license": "MIT", + "homepage": "https://verdaccio.org", + "dependencies": { + "@verdaccio/commons-api": "^9.0.0", + "@verdaccio/logger": "5.0.0-alpha.0", + "handlebars": "^4.5.3", + "request": "2.87.0" + }, + "devDependencies": { + "@verdaccio/dev-commons": "5.0.0-alpha.0", + "@verdaccio/types": "^8.5.2" + }, + "scripts": { + "clean": "rimraf ./build", + "test": "cross-env NODE_ENV=test BABEL_ENV=test jest", + "type-check": "tsc --noEmit", + "build:types": "tsc --emitDeclarationOnly --declaration true", + "build:js": "cross-env BABEL_ENV=registry babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "build": "npm run build:js && npm run build:types" + }, + "gitHead": "7c246ede52ff717707fcae66dd63fc4abd536982" +} diff --git a/packages/hooks/src/index.ts b/packages/hooks/src/index.ts new file mode 100644 index 000000000..71b6acdbd --- /dev/null +++ b/packages/hooks/src/index.ts @@ -0,0 +1 @@ +export {handleNotify, notify, sendNotification } from './notify'; diff --git a/packages/hooks/src/notify-request.ts b/packages/hooks/src/notify-request.ts new file mode 100644 index 000000000..6bd49c609 --- /dev/null +++ b/packages/hooks/src/notify-request.ts @@ -0,0 +1,25 @@ +import isNil from 'lodash/isNil'; +import request, { RequiredUriUrl } from 'request'; + +import { logger } from '@verdaccio/logger'; +import { HTTP_STATUS } from '@verdaccio/commons-api'; + +export function notifyRequest(options: RequiredUriUrl, content): Promise { + return new Promise( + (resolve, reject): void => { + request(options, function(err, response, body): void { + if (err || response.statusCode >= HTTP_STATUS.BAD_REQUEST) { + const errorMessage = isNil(err) ? response.body : err.message; + logger.error({ errorMessage }, 'notify service has thrown an error: @{errorMessage}'); + reject(errorMessage); + } + logger.info({ content }, 'A notification has been shipped: @{content}'); + if (isNil(body) === false) { + logger.debug({ body }, ' body: @{body}'); + resolve(body); + } + reject(Error('body is missing')); + }); + } + ); +} diff --git a/src/lib/notify/index.ts b/packages/hooks/src/notify.ts similarity index 100% rename from src/lib/notify/index.ts rename to packages/hooks/src/notify.ts diff --git a/test/unit/__helper/index.ts b/packages/hooks/test/__helper/index.ts similarity index 100% rename from test/unit/__helper/index.ts rename to packages/hooks/test/__helper/index.ts diff --git a/test/unit/modules/notifications/notify.spec.ts b/packages/hooks/test/notify.spec.ts similarity index 53% rename from test/unit/modules/notifications/notify.spec.ts rename to packages/hooks/test/notify.spec.ts index f1df3066e..464c06b9e 100644 --- a/test/unit/modules/notifications/notify.spec.ts +++ b/packages/hooks/test/notify.spec.ts @@ -1,14 +1,13 @@ -import { parseConfigurationFile } from '../../__helper'; -import { parseConfigFile } from '../../../../src/lib/utils'; -import { notify } from '../../../../src/lib/notify'; +import {parseConfigFile} from '@verdaccio/utils'; +import { setup } from '@verdaccio/logger'; -import { notifyRequest } from '../../../../src/lib/notify/notify-request'; - -import { setup } from '../../../../src/lib/logger'; +import {notify} from '../src'; +import {notifyRequest} from '../src/notify-request'; +import {parseConfigurationFile} from './__helper'; setup([]); -jest.mock('./../../../../src/lib/notify/notify-request', () => ({ +jest.mock('../src/notify-request', () => ({ notifyRequest: jest.fn((options, content) => Promise.resolve([options, content])) })); @@ -16,32 +15,29 @@ const parseConfigurationNotifyFile = (name) => { return parseConfigurationFile(`notify/${name}`); }; const singleNotificationConfig = parseConfigFile(parseConfigurationNotifyFile('single.notify')); -const singleHeaderNotificationConfig = parseConfigFile( - parseConfigurationNotifyFile('single.header.notify') -); -const packagePatternNotificationConfig = parseConfigFile( - parseConfigurationNotifyFile('single.packagePattern.notify') -); +const singleHeaderNotificationConfig = parseConfigFile(parseConfigurationNotifyFile('single.header.notify')); +const packagePatternNotificationConfig = parseConfigFile(parseConfigurationNotifyFile('single.packagePattern.notify')); const multiNotificationConfig = parseConfigFile(parseConfigurationNotifyFile('multiple.notify')); describe('Notifications:: Notify', () => { + beforeEach(() => { jest.clearAllMocks(); }); // FUTURE: we should add some sort of health check of all props, (not implemented yet) - test('should not fails if config is not provided', async () => { + test("should not fails if config is not provided", async () => { // @ts-ignore await notify({}, {}); expect(notifyRequest).toHaveBeenCalledTimes(0); }); - test('should send notification', async () => { + test("should send notification", async () => { const name = 'package'; // @ts-ignore - const response = await notify({ name }, singleNotificationConfig, { name: 'foo' }, 'bar'); + const response = await notify({name}, singleNotificationConfig, { name: 'foo'}, 'bar'); const [options, content] = response; expect(options.headers).toBeDefined(); @@ -52,36 +48,39 @@ describe('Notifications:: Notify', () => { expect(notifyRequest).toHaveBeenCalledTimes(1); }); - test('should send single header notification', async () => { + test("should send single header notification", async () => { // @ts-ignore - await notify({}, singleHeaderNotificationConfig, { name: 'foo' }, 'bar'); + await notify({}, singleHeaderNotificationConfig, { name: 'foo'}, 'bar'); expect(notifyRequest).toHaveBeenCalledTimes(1); }); - test('should send multiple notification', async () => { + test("should send multiple notification", async () => { // @ts-ignore - await notify({ name }, multiNotificationConfig, { name: 'foo' }, 'bar'); + await notify({name}, multiNotificationConfig, { name: 'foo'}, 'bar'); expect(notifyRequest).toHaveBeenCalled(); expect(notifyRequest).toHaveBeenCalledTimes(3); }); describe('packagePatternFlags', () => { - test('should send single notification with packagePatternFlags', async () => { + test("should send single notification with packagePatternFlags", async () => { const name = 'package'; // @ts-ignore - await notify({ name }, packagePatternNotificationConfig, { name: 'foo' }, 'bar'); + await notify({name}, packagePatternNotificationConfig, { name: 'foo'}, 'bar'); + expect(notifyRequest).toHaveBeenCalledTimes(1); }); - test('should not match on send single notification with packagePatternFlags', async () => { + test("should not match on send single notification with packagePatternFlags", async () => { const name = 'no-mach-name'; // @ts-ignore - await notify({ name }, packagePatternNotificationConfig, { name: 'foo' }, 'bar'); + await notify({name}, packagePatternNotificationConfig, { name: 'foo'}, 'bar'); expect(notifyRequest).toHaveBeenCalledTimes(0); }); - }); + }) + + }); diff --git a/test/unit/partials/config/yaml/notify/multiple.notify.yaml b/packages/hooks/test/partials/config/yaml/notify/multiple.notify.yaml similarity index 100% rename from test/unit/partials/config/yaml/notify/multiple.notify.yaml rename to packages/hooks/test/partials/config/yaml/notify/multiple.notify.yaml diff --git a/test/unit/partials/config/yaml/notify/single.header.notify.yaml b/packages/hooks/test/partials/config/yaml/notify/single.header.notify.yaml similarity index 100% rename from test/unit/partials/config/yaml/notify/single.header.notify.yaml rename to packages/hooks/test/partials/config/yaml/notify/single.header.notify.yaml diff --git a/test/unit/partials/config/yaml/notify/single.notify.yaml b/packages/hooks/test/partials/config/yaml/notify/single.notify.yaml similarity index 100% rename from test/unit/partials/config/yaml/notify/single.notify.yaml rename to packages/hooks/test/partials/config/yaml/notify/single.notify.yaml diff --git a/test/unit/partials/config/yaml/notify/single.packagePattern.notify.yaml b/packages/hooks/test/partials/config/yaml/notify/single.packagePattern.notify.yaml similarity index 100% rename from test/unit/partials/config/yaml/notify/single.packagePattern.notify.yaml rename to packages/hooks/test/partials/config/yaml/notify/single.packagePattern.notify.yaml diff --git a/test/unit/modules/notifications/request.spec.ts b/packages/hooks/test/request.spec.ts similarity index 70% rename from test/unit/modules/notifications/request.spec.ts rename to packages/hooks/test/request.spec.ts index d7f0ff752..002af544f 100644 --- a/test/unit/modules/notifications/request.spec.ts +++ b/packages/hooks/test/request.spec.ts @@ -1,4 +1,4 @@ -import { HTTP_STATUS, API_ERROR } from '../../../../src/lib/constants'; +import { HTTP_STATUS, API_ERROR } from '@verdaccio/dev-commons'; /* eslint-disable @typescript-eslint/no-var-requires */ /** @@ -8,16 +8,16 @@ const logger = { logger: { error: jest.fn(), debug: jest.fn(), - info: jest.fn() - } + info: jest.fn(), + }, }; -jest.doMock('../../../../src/lib/logger', () => logger); +jest.doMock('@verdaccio/logger', () => logger); /** * Test Data */ const options = { - url: 'http://slack-service' + url: 'http://slack-service', }; const content = 'Verdaccio@x.x.x successfully published'; @@ -29,19 +29,16 @@ describe('Notifications:: notifyRequest', () => { test('when notification service throws error', async () => { jest.doMock('request', () => (options, resolver) => { const response = { - statusCode: HTTP_STATUS.BAD_REQUEST + statusCode: HTTP_STATUS.BAD_REQUEST, }; const error = { - message: API_ERROR.BAD_DATA + message: API_ERROR.BAD_DATA, }; resolver(error, response); }); - const notification = require('../../../../src/lib/notify/notify-request'); - const args = [ - { errorMessage: 'bad data' }, - 'notify service has thrown an error: @{errorMessage}' - ]; + const notification = require('../src/notify-request'); + const args = [{ errorMessage: 'bad data' }, 'notify service has thrown an error: @{errorMessage}']; await expect(notification.notifyRequest(options, content)).rejects.toEqual(API_ERROR.BAD_DATA); expect(logger.logger.error).toHaveBeenCalledWith(...args); @@ -51,17 +48,14 @@ describe('Notifications:: notifyRequest', () => { jest.doMock('request', () => (options, resolver) => { const response = { statusCode: HTTP_STATUS.BAD_REQUEST, - body: API_ERROR.BAD_DATA + body: API_ERROR.BAD_DATA, }; resolver(null, response); }); - const notification = require('../../../../src/lib/notify/notify-request'); - const args = [ - { errorMessage: 'bad data' }, - 'notify service has thrown an error: @{errorMessage}' - ]; + const notification = require('../src/notify-request'); + const args = [{ errorMessage: 'bad data' }, 'notify service has thrown an error: @{errorMessage}']; await expect(notification.notifyRequest(options, content)).rejects.toEqual(API_ERROR.BAD_DATA); expect(logger.logger.error).toHaveBeenCalledWith(...args); @@ -71,19 +65,17 @@ describe('Notifications:: notifyRequest', () => { jest.doMock('request', () => (options, resolver) => { const response = { statusCode: HTTP_STATUS.OK, - body: 'Successfully delivered' + body: 'Successfully delivered', }; resolver(null, response, response.body); }); - const notification = require('../../../../src/lib/notify/notify-request'); + const notification = require('../src/notify-request'); const infoArgs = [{ content }, 'A notification has been shipped: @{content}']; const debugArgs = [{ body: 'Successfully delivered' }, ' body: @{body}']; - await expect(notification.notifyRequest(options, content)).resolves.toEqual( - 'Successfully delivered' - ); + await expect(notification.notifyRequest(options, content)).resolves.toEqual('Successfully delivered'); expect(logger.logger.info).toHaveBeenCalledWith(...infoArgs); expect(logger.logger.debug).toHaveBeenCalledWith(...debugArgs); }); @@ -91,13 +83,13 @@ describe('Notifications:: notifyRequest', () => { test('when notification is successfully delivered but body is undefined/null', async () => { jest.doMock('request', () => (options, resolver) => { const response = { - statusCode: HTTP_STATUS.OK + statusCode: HTTP_STATUS.OK, }; resolver(null, response); }); - const notification = require('../../../../src/lib/notify/notify-request'); + const notification = require('../src/notify-request'); const infoArgs = [{ content }, 'A notification has been shipped: @{content}']; await expect(notification.notifyRequest(options, content)).rejects.toThrow('body is missing'); diff --git a/packages/hooks/tsconfig.json b/packages/hooks/tsconfig.json new file mode 100644 index 000000000..6531bd3e4 --- /dev/null +++ b/packages/hooks/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./build" + }, + "include": ["src/**/*"], + "exclude": ["src/**/*.test.ts"] +} diff --git a/packages/loaders/.babelrc b/packages/loaders/.babelrc new file mode 100644 index 000000000..28397a1bd --- /dev/null +++ b/packages/loaders/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": [["@verdaccio"]] +} diff --git a/packages/loaders/jest.config.js b/packages/loaders/jest.config.js new file mode 100644 index 000000000..b8eccba20 --- /dev/null +++ b/packages/loaders/jest.config.js @@ -0,0 +1,9 @@ +module.exports = { + moduleFileExtensions: ['ts', 'js'], + transform: { + '^.+\\.(js|ts)$': 'babel-jest', + }, + verbose: true, + // FIXME: the coverage returns an error here + collectCoverage: false +}; diff --git a/packages/loaders/package.json b/packages/loaders/package.json new file mode 100644 index 000000000..090b7496e --- /dev/null +++ b/packages/loaders/package.json @@ -0,0 +1,34 @@ +{ + "name": "@verdaccio/loaders", + "version": "5.0.0-alpha.0", + "description": "loaders logic", + "main": "./build/index.js", + "types": "build/index.d.ts", + "author": { + "name": "Juan Picado", + "email": "juanpicado19@gmail.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/verdaccio/verdaccio" + }, + "dependencies": { + "@verdaccio/dev-commons": "5.0.0-alpha.0", + "@verdaccio/logger": "5.0.0-alpha.0", + "lodash": "^4.17.15" + }, + "devDependencies": { + "@verdaccio/types": "9.3.0" + }, + "homepage": "https://verdaccio.org", + "license": "MIT", + "scripts": { + "clean": "rimraf ./build", + "test": "cross-env NODE_ENV=test BABEL_ENV=test jest", + "type-check": "tsc --noEmit", + "build:types": "tsc --emitDeclarationOnly --declaration true", + "build:js": "cross-env BABEL_ENV=registry babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "build": "npm run build:js && npm run build:types" + }, + "gitHead": "7c246ede52ff717707fcae66dd63fc4abd536982" +} diff --git a/packages/loaders/src/index.ts b/packages/loaders/src/index.ts new file mode 100644 index 000000000..e3a9df4e8 --- /dev/null +++ b/packages/loaders/src/index.ts @@ -0,0 +1 @@ +export * from './plugin-loader'; diff --git a/src/lib/plugin-loader.ts b/packages/loaders/src/plugin-loader.ts similarity index 76% rename from src/lib/plugin-loader.ts rename to packages/loaders/src/plugin-loader.ts index dd96371c6..ab99a2fd6 100644 --- a/src/lib/plugin-loader.ts +++ b/packages/loaders/src/plugin-loader.ts @@ -1,8 +1,8 @@ import Path from 'path'; import _ from 'lodash'; +import { logger } from '@verdaccio/logger'; import { Config, IPlugin } from '@verdaccio/types'; -import { logger } from './logger'; -import { MODULE_NOT_FOUND } from './constants'; +import { MODULE_NOT_FOUND } from '@verdaccio/dev-commons'; /** * Requires a module. @@ -46,7 +46,7 @@ function isES6(plugin): boolean { * @param {*} sanityCheck callback that check the shape that should fulfill the plugin * @return {Array} list of plugins */ -export default function loadPlugin>( +export function loadPlugin>( config: Config, pluginConfigs: any = {}, params: any, @@ -96,45 +96,31 @@ export default function loadPlugin>( } if (plugin === null) { - logger.error( - { content: pluginId, prefix }, - 'plugin not found. try npm install @{prefix}-@{content}' - ); + logger.error({ content: pluginId, prefix }, 'plugin not found. try npm install @{prefix}-@{content}'); throw Error(` ${prefix}-${pluginId} plugin not found. try "npm install ${prefix}-${pluginId}"`); } if (!isValid(plugin)) { - logger.error( - { content: pluginId }, - '@{prefix}-@{content} plugin does not have the right code structure' - ); + logger.error({ content: pluginId }, "@{prefix}-@{content} plugin does not have the right code structure"); throw Error(`"${pluginId}" plugin does not have the right code structure`); } /* eslint new-cap:off */ - try { - plugin = isES6(plugin) - ? new plugin.default(mergeConfig(config, pluginConfigs[pluginId]), params) - : plugin(pluginConfigs[pluginId], params); - } catch (error) { - plugin = null; - logger.error({ error, pluginId }, 'error loading a plugin @{pluginId}: @{error}'); - } + try { + plugin = isES6(plugin) ? new plugin.default(mergeConfig(config, pluginConfigs[pluginId]), params) : plugin(pluginConfigs[pluginId], params); + } catch (error) { + plugin = null; + logger.error({ error, pluginId }, "error loading a plugin @{pluginId}: @{error}"); + } /* eslint new-cap:off */ if (plugin === null || !sanityCheck(plugin)) { - logger.error( - { content: pluginId, prefix }, - "@{prefix}-@{content} doesn't look like a valid plugin" - ); + logger.error({ content: pluginId, prefix }, "@{prefix}-@{content} doesn't look like a valid plugin"); throw Error(`sanity check has failed, "${pluginId}" is not a valid plugin`); } - logger.warn( - { content: pluginId, prefix }, - 'Plugin successfully loaded: @{prefix}-@{content}' - ); + logger.warn({ content: pluginId, prefix }, 'Plugin successfully loaded: @{prefix}-@{content}'); return plugin; } ); diff --git a/test/unit/modules/plugin/auth.spec.ts b/packages/loaders/test/auth.spec.ts similarity index 80% rename from test/unit/modules/plugin/auth.spec.ts rename to packages/loaders/test/auth.spec.ts index 26fb474b5..3a259b9cf 100644 --- a/test/unit/modules/plugin/auth.spec.ts +++ b/packages/loaders/test/auth.spec.ts @@ -1,14 +1,14 @@ import _ from 'lodash'; -import Auth from '../../../../src/lib/auth'; -import { authProfileConf, authPluginFailureConf, authPluginPassThrougConf } from './helper/plugin'; -import AppConfig from '../../../../src/lib/config'; -import { setup } from '../../../../src/lib/logger'; - -import { IAuth } from '../../../../types'; -import { Config } from '@verdaccio/types'; -import { ROLES } from '../../../../src/lib/constants'; +import { Auth } from '@verdaccio/auth'; +import {Config as AppConfig } from '@verdaccio/config'; +import {setup} from '@verdaccio/logger'; +import {IAuth} from '@verdaccio/dev-types'; +import {Config} from '@verdaccio/types'; +import { ROLES } from '@verdaccio/dev-commons'; import { getInternalError } from '@verdaccio/commons-api'; +import { authProfileConf, authPluginFailureConf, authPluginPassThrougConf } from './helper/plugin'; + setup([]); describe('AuthTest', () => { @@ -28,23 +28,18 @@ describe('AuthTest', () => { expect(auth).toBeDefined(); const callback = jest.fn(); - const groups = ['test']; + const groups = [ "test" ]; auth.authenticate('foo', 'bar', callback); expect(callback).toHaveBeenCalledTimes(1); - expect(callback).toHaveBeenCalledWith(null, { - groups: [ - 'test', - ROLES.$ALL, - ROLES.$AUTH, - ROLES.DEPRECATED_ALL, - ROLES.DEPRECATED_AUTH, - ROLES.ALL - ], - name: 'foo', - real_groups: groups - }); + expect(callback).toHaveBeenCalledWith(null, + {"groups": + [ + "test", ROLES.$ALL, ROLES.$AUTH, ROLES.DEPRECATED_ALL, ROLES.DEPRECATED_AUTH, ROLES.ALL], + "name": 'foo', + "real_groups": groups + }); }); test('should be a fail on login', () => { @@ -75,7 +70,7 @@ describe('AuthTest', () => { let index = 0; // as defined by https://developer.mozilla.org/en-US/docs/Glossary/Falsy - for (const value of [false, 0, '', null, undefined, NaN]) { + for (const value of [ false, 0, "", null, undefined, NaN ]) { // @ts-ignore auth.authenticate(null, value, callback); const call = callback.mock.calls[index++]; @@ -92,8 +87,8 @@ describe('AuthTest', () => { const callback = jest.fn(); - for (const value of [true, 1, 'test', {}]) { - expect(function () { + for (const value of [ true, 1, "test", { } ]) { + expect(function ( ) { // @ts-ignore auth.authenticate(null, value, callback); }).toThrow(TypeError); @@ -108,7 +103,7 @@ describe('AuthTest', () => { expect(auth).toBeDefined(); const callback = jest.fn(); - const value = []; + const value = [ ]; // @ts-ignore auth.authenticate(null, value, callback); @@ -126,7 +121,7 @@ describe('AuthTest', () => { const callback = jest.fn(); let index = 0; - for (const value of [[''], ['1'], ['0'], ['000']]) { + for (const value of [ [ "" ], [ "1" ], [ "0" ], ["000"] ]) { // @ts-ignore auth.authenticate(null, value, callback); const call = callback.mock.calls[index++]; @@ -135,5 +130,5 @@ describe('AuthTest', () => { } }); }); - }); + }) }); diff --git a/packages/loaders/test/helper/plugin.ts b/packages/loaders/test/helper/plugin.ts new file mode 100644 index 000000000..608256f9f --- /dev/null +++ b/packages/loaders/test/helper/plugin.ts @@ -0,0 +1,20 @@ +import path from 'path'; +import { configExample as config }from '@verdaccio/mock'; + +export const authProfileConf = config({ + auth: { + [`${path.join(__dirname, '../partials/plugin/authenticate.success')}`]: { } + } +}); + +export const authPluginFailureConf = config({ + auth: { + [`${path.join(__dirname, '../partials/plugin/authenticate.fail')}`]: { } + } +}); + +export const authPluginPassThrougConf = config({ + auth: { + [`${path.join(__dirname, '../partials/plugin/authenticate.passthroug')}`]: { } + } +}); diff --git a/test/unit/partials/plugin/authenticate.fail.js b/packages/loaders/test/partials/plugin/authenticate.fail.js similarity index 100% rename from test/unit/partials/plugin/authenticate.fail.js rename to packages/loaders/test/partials/plugin/authenticate.fail.js diff --git a/test/unit/partials/plugin/authenticate.passthroug.js b/packages/loaders/test/partials/plugin/authenticate.passthroug.js similarity index 100% rename from test/unit/partials/plugin/authenticate.passthroug.js rename to packages/loaders/test/partials/plugin/authenticate.passthroug.js diff --git a/test/unit/partials/plugin/authenticate.success.js b/packages/loaders/test/partials/plugin/authenticate.success.js similarity index 100% rename from test/unit/partials/plugin/authenticate.success.js rename to packages/loaders/test/partials/plugin/authenticate.success.js diff --git a/test/unit/modules/plugin/partials/test-plugin-storage/.eslintrc b/packages/loaders/test/partials/test-plugin-storage/.eslintrc similarity index 100% rename from test/unit/modules/plugin/partials/test-plugin-storage/.eslintrc rename to packages/loaders/test/partials/test-plugin-storage/.eslintrc diff --git a/test/unit/modules/plugin/partials/test-plugin-storage/invalid-package/package.json b/packages/loaders/test/partials/test-plugin-storage/invalid-package/package.json similarity index 100% rename from test/unit/modules/plugin/partials/test-plugin-storage/invalid-package/package.json rename to packages/loaders/test/partials/test-plugin-storage/invalid-package/package.json diff --git a/test/unit/modules/plugin/partials/test-plugin-storage/invalid-plugin-sanity/index.js b/packages/loaders/test/partials/test-plugin-storage/invalid-plugin-sanity/index.js similarity index 100% rename from test/unit/modules/plugin/partials/test-plugin-storage/invalid-plugin-sanity/index.js rename to packages/loaders/test/partials/test-plugin-storage/invalid-plugin-sanity/index.js diff --git a/test/unit/modules/plugin/partials/test-plugin-storage/invalid-plugin-sanity/package.json b/packages/loaders/test/partials/test-plugin-storage/invalid-plugin-sanity/package.json similarity index 100% rename from test/unit/modules/plugin/partials/test-plugin-storage/invalid-plugin-sanity/package.json rename to packages/loaders/test/partials/test-plugin-storage/invalid-plugin-sanity/package.json diff --git a/test/unit/modules/plugin/partials/test-plugin-storage/invalid-plugin/index.js b/packages/loaders/test/partials/test-plugin-storage/invalid-plugin/index.js similarity index 100% rename from test/unit/modules/plugin/partials/test-plugin-storage/invalid-plugin/index.js rename to packages/loaders/test/partials/test-plugin-storage/invalid-plugin/index.js diff --git a/test/unit/modules/plugin/partials/test-plugin-storage/invalid-plugin/package.json b/packages/loaders/test/partials/test-plugin-storage/invalid-plugin/package.json similarity index 100% rename from test/unit/modules/plugin/partials/test-plugin-storage/invalid-plugin/package.json rename to packages/loaders/test/partials/test-plugin-storage/invalid-plugin/package.json diff --git a/test/unit/modules/plugin/partials/test-plugin-storage/verdaccio-es6-plugin/dummy.js b/packages/loaders/test/partials/test-plugin-storage/verdaccio-es6-plugin/dummy.js similarity index 100% rename from test/unit/modules/plugin/partials/test-plugin-storage/verdaccio-es6-plugin/dummy.js rename to packages/loaders/test/partials/test-plugin-storage/verdaccio-es6-plugin/dummy.js diff --git a/test/unit/modules/plugin/partials/test-plugin-storage/verdaccio-es6-plugin/index.js b/packages/loaders/test/partials/test-plugin-storage/verdaccio-es6-plugin/index.js similarity index 100% rename from test/unit/modules/plugin/partials/test-plugin-storage/verdaccio-es6-plugin/index.js rename to packages/loaders/test/partials/test-plugin-storage/verdaccio-es6-plugin/index.js diff --git a/test/unit/modules/plugin/partials/test-plugin-storage/verdaccio-plugin/index.js b/packages/loaders/test/partials/test-plugin-storage/verdaccio-plugin/index.js similarity index 100% rename from test/unit/modules/plugin/partials/test-plugin-storage/verdaccio-plugin/index.js rename to packages/loaders/test/partials/test-plugin-storage/verdaccio-plugin/index.js diff --git a/test/unit/modules/plugin/partials/test-plugin-storage/verdaccio-plugin/package.json b/packages/loaders/test/partials/test-plugin-storage/verdaccio-plugin/package.json similarity index 100% rename from test/unit/modules/plugin/partials/test-plugin-storage/verdaccio-plugin/package.json rename to packages/loaders/test/partials/test-plugin-storage/verdaccio-plugin/package.json diff --git a/test/unit/modules/plugin/plugin_loader.spec.ts b/packages/loaders/test/plugin_loader.spec.ts similarity index 81% rename from test/unit/modules/plugin/plugin_loader.spec.ts rename to packages/loaders/test/plugin_loader.spec.ts index 8a1ec6026..a90e8398c 100644 --- a/test/unit/modules/plugin/plugin_loader.spec.ts +++ b/packages/loaders/test/plugin_loader.spec.ts @@ -1,12 +1,13 @@ import path from 'path'; -import loadPlugin from '../../../../src/lib/plugin-loader'; -import { setup } from '../../../../src/lib/logger'; +import { setup } from '@verdaccio/logger'; + +import { loadPlugin } from '../src/plugin-loader'; setup([]); describe('plugin loader', () => { const relativePath = path.join(__dirname, './partials/test-plugin-storage'); - const buildConf = (name) => { + const buildConf = name => { return { self_path: path.join(__dirname, './'), max_users: 0, @@ -44,10 +45,8 @@ describe('plugin loader', () => { loadPlugin(_config, _config.auth, {}, function (p) { return p.authenticate || p.allow_access || p.allow_publish; }); - } catch (e) { - expect(e.message).toEqual( - `"${relativePath}/invalid-plugin" plugin does not have the right code structure` - ); + } catch(e) { + expect(e.message).toEqual(`"${relativePath}/invalid-plugin" plugin does not have the right code structure`); } }); @@ -58,10 +57,8 @@ describe('plugin loader', () => { loadPlugin(_config, _config.auth, {}, function (plugin) { return plugin.authenticate || plugin.allow_access || plugin.allow_publish; }); - } catch (err) { - expect(err.message).toEqual( - `sanity check has failed, "${relativePath}/invalid-plugin-sanity" is not a valid plugin` - ); + } catch(err) { + expect(err.message).toEqual(`sanity check has failed, "${relativePath}/invalid-plugin-sanity" is not a valid plugin`); } }); @@ -72,7 +69,7 @@ describe('plugin loader', () => { loadPlugin(_config, _config.auth, {}, function (plugin) { return plugin.authenticate || plugin.allow_access || plugin.allow_publish; }); - } catch (e) { + } catch(e) { expect(e.message).toMatch('plugin not found'); expect(e.message).toMatch('/partials/test-plugin-storage/invalid-package'); } @@ -81,4 +78,5 @@ describe('plugin loader', () => { test.todo('test middleware plugins'); test.todo('test storage plugins'); }); + }); diff --git a/packages/loaders/tsconfig.json b/packages/loaders/tsconfig.json new file mode 100644 index 000000000..6531bd3e4 --- /dev/null +++ b/packages/loaders/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./build" + }, + "include": ["src/**/*"], + "exclude": ["src/**/*.test.ts"] +} diff --git a/packages/logger/.babelrc b/packages/logger/.babelrc new file mode 100644 index 000000000..28397a1bd --- /dev/null +++ b/packages/logger/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": [["@verdaccio"]] +} diff --git a/packages/logger/jest.config.js b/packages/logger/jest.config.js new file mode 100644 index 000000000..9c48852a3 --- /dev/null +++ b/packages/logger/jest.config.js @@ -0,0 +1,9 @@ +module.exports = { + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'], + transform: { + '^.+\\.(js|jsx|ts|tsx)$': 'babel-jest', + }, + verbose: true, + collectCoverage: false, + coveragePathIgnorePatterns: ['node_modules', 'fixtures'], +}; diff --git a/packages/logger/package.json b/packages/logger/package.json new file mode 100644 index 000000000..f63029773 --- /dev/null +++ b/packages/logger/package.json @@ -0,0 +1,35 @@ +{ + "name": "@verdaccio/logger", + "version": "5.0.0-alpha.0", + "description": "logger", + "main": "./build/index.js", + "types": "build/index.d.ts", + "author": { + "name": "Juan Picado", + "email": "juanpicado19@gmail.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/verdaccio/verdaccio" + }, + "license": "MIT", + "homepage": "https://verdaccio.org", + "scripts": { + "clean": "rimraf ./build", + "test": "cross-env NODE_ENV=test BABEL_ENV=test jest", + "type-check": "tsc --noEmit", + "build:types": "tsc --emitDeclarationOnly --declaration true", + "build:js": "cross-env BABEL_ENV=registry babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "build": "npm run build:js && npm run build:types" + }, + "dependencies": { + "bunyan": "1.8.12", + "dayjs": "1.8.19", + "http-errors": "1.7.3", + "kleur": "3.0.3" + }, + "devDependencies": { + "@types/bunyan": "1.8.6" + }, + "gitHead": "7c246ede52ff717707fcae66dd63fc4abd536982" +} diff --git a/packages/logger/src/format/json.ts b/packages/logger/src/format/json.ts new file mode 100644 index 000000000..2177843f6 --- /dev/null +++ b/packages/logger/src/format/json.ts @@ -0,0 +1,9 @@ +import { fillInMsgTemplate } from '../formatter'; + +const Logger = require('bunyan'); + +export function jsonFormat(obj, hasColors): string { + const msg = fillInMsgTemplate(obj.msg, obj, hasColors); + + return `${JSON.stringify({ ...obj, msg }, Logger.safeCycles())}\n`; +} diff --git a/packages/logger/src/format/pretty-timestamped.ts b/packages/logger/src/format/pretty-timestamped.ts new file mode 100644 index 000000000..6ee7fa64a --- /dev/null +++ b/packages/logger/src/format/pretty-timestamped.ts @@ -0,0 +1,6 @@ +import { formatLoggingDate } from '../utils'; +import { printMessage } from '../formatter'; + +export function prettyTimestamped(obj, hasColors): string { + return `[${formatLoggingDate(obj.time)}] ${printMessage(obj.level, obj.msg, obj, hasColors)}\n`; +} diff --git a/packages/logger/src/format/pretty.ts b/packages/logger/src/format/pretty.ts new file mode 100644 index 000000000..e4bd27bb7 --- /dev/null +++ b/packages/logger/src/format/pretty.ts @@ -0,0 +1,5 @@ +import { printMessage } from '../formatter'; + +export function pretty(obj, hasColors): string { + return `${printMessage(obj.level, obj.msg, obj, hasColors)}\n`; +} diff --git a/packages/logger/src/formatter.ts b/packages/logger/src/formatter.ts new file mode 100644 index 000000000..83c67b1e1 --- /dev/null +++ b/packages/logger/src/formatter.ts @@ -0,0 +1,68 @@ +import { inspect } from 'util'; + +import { white, red, green } from 'kleur'; +import {calculateLevel, levels, subsystems} from "./levels"; + +import { isObject, pad } from './utils'; + +let LEVEL_VALUE_MAX = 0; +for (const l in levels) { + if (Object.prototype.hasOwnProperty.call(levels, l)) { + LEVEL_VALUE_MAX = Math.max(LEVEL_VALUE_MAX, l.length); + } +} + +/** + * Apply colors to a string based on level parameters. + * @param {*} type + * @param {*} msg + * @param {*} templateObjects + * @param {*} hasColors + * @return {String} + */ +export function printMessage(type, msg, templateObjects, hasColors) { + if (typeof type === 'number') { + type = calculateLevel(type); + } + + const finalMessage = fillInMsgTemplate(msg, templateObjects, hasColors); + + const sub = subsystems[hasColors ? 0 : 1][templateObjects.sub] || subsystems[+!hasColors].default; + if (hasColors) { + return ` ${levels[type](pad(type, LEVEL_VALUE_MAX))}${white(`${sub} ${finalMessage}`)}`; + } + return ` ${pad(type, LEVEL_VALUE_MAX)}${sub} ${finalMessage}`; +} + +export function fillInMsgTemplate(msg, obj: unknown, colors): string { + return msg.replace(/@{(!?[$A-Za-z_][$0-9A-Za-z\._]*)}/g, (_, name): string => { + + let str = obj; + let is_error; + if (name[0] === '!') { + name = name.substr(1); + is_error = true; + } + + const _ref = name.split('.'); + for (let _i = 0; _i < _ref.length; _i++) { + const id = _ref[_i]; + if (isObject(str)) { + // @ts-ignore + str = str[id]; + } else { + str = undefined; + } + } + + if (typeof str === 'string') { + if (!colors || (str as string).includes('\n')) { + return str; + } else if (is_error) { + return red(str); + } + return green(str); + } + return inspect(str, undefined, null, colors); + }); +} diff --git a/packages/logger/src/index.ts b/packages/logger/src/index.ts new file mode 100644 index 000000000..4445c47a1 --- /dev/null +++ b/packages/logger/src/index.ts @@ -0,0 +1 @@ +export { setup, logger } from './logger'; diff --git a/src/lib/logger/levels.ts b/packages/logger/src/levels.ts similarity index 100% rename from src/lib/logger/levels.ts rename to packages/logger/src/levels.ts diff --git a/packages/logger/src/logger.ts b/packages/logger/src/logger.ts new file mode 100644 index 000000000..bece6ca6a --- /dev/null +++ b/packages/logger/src/logger.ts @@ -0,0 +1,167 @@ +/* eslint-disable */ + +const cluster = require('cluster'); +const Logger = require('bunyan'); +const Error = require('http-errors'); +const Stream = require('stream'); +const _ = require('lodash'); +const dayjs = require('dayjs'); + +const pkgJSON = require('../package.json'); + + +import {prettyTimestamped} from "./format/pretty-timestamped"; +import {pretty} from "./format/pretty"; +import {jsonFormat} from "./format/json"; + +/** + * A RotatingFileStream that modifies the message first + */ +class VerdaccioRotatingFileStream extends Logger.RotatingFileStream { + // We depend on mv so that this is there + write(obj) { + super.write(jsonFormat(obj, false)); + } + + rotate(): void { + super.rotate(); + this.emit('rotated'); + } +} + +let logger; + +export interface LoggerTarget { + type?: string; + format?: string; + level?: string; + options?: any; + path?: string; +} + +const DEFAULT_LOGGER_CONF = [{ type: 'stdout', format: 'pretty', level: 'http' }]; + +/** + * Setup the Buyan logger + * @param {*} logs list of log configuration + */ +function setup(logs, { logStart } = { logStart: true }) { + const streams: any = []; + if (logs == null) { + logs = DEFAULT_LOGGER_CONF; + } + + logs.forEach(function(target: LoggerTarget) { + let level = target.level || 35; + if (level === 'http') { + level = 35; + } + + // create a stream for each log configuration + if (target.type === 'rotating-file') { + if (target.format !== 'json') { + throw new Error('Rotating file streams only work with JSON!'); + } + if (cluster.isWorker) { + // https://github.com/trentm/node-bunyan#stream-type-rotating-file + throw new Error('Cluster mode is not supported for rotating-file!'); + } + + const stream = new VerdaccioRotatingFileStream( + // @ts-ignore + _.merge( + {}, + // Defaults can be found here: https://github.com/trentm/node-bunyan#stream-type-rotating-file + target.options || {}, + { path: target.path, level } + ) + ); + + const rotateStream = { + type: 'raw', + level, + stream, + }; + + if (logStart) { + stream.on('rotated', () => logger.warn('Start of logfile')); + } + + streams.push(rotateStream); + } else { + const stream = new Stream(); + stream.writable = true; + + let destination; + let destinationIsTTY = false; + if (target.type === 'file') { + // destination stream + destination = require('fs').createWriteStream(target.path, { flags: 'a', encoding: 'utf8' }); + destination.on('error', function(err) { + stream.emit('error', err); + }); + } else if (target.type === 'stdout' || target.type === 'stderr') { + destination = target.type === 'stdout' ? process.stdout : process.stderr; + destinationIsTTY = destination.isTTY; + } else { + throw Error('wrong target type for a log'); + } + + if (target.format === 'pretty') { + // making fake stream for pretty printing + stream.write = obj => { + destination.write(pretty(obj, destinationIsTTY)); + }; + } else if (target.format === 'pretty-timestamped') { + // making fake stream for pretty printing + stream.write = obj => { + destination.write(prettyTimestamped(obj, destinationIsTTY)); + }; + } else { + stream.write = obj => { + destination.write(jsonFormat(obj, destinationIsTTY)); + }; + } + + streams.push({ + // @ts-ignore + type: 'raw', + // @ts-ignore + level, + // @ts-ignore + stream: stream, + }); + } + }); + + // buyan default configuration + logger = new Logger({ + name: pkgJSON.name, + streams: streams, + serializers: { + err: Logger.stdSerializers.err, + req: Logger.stdSerializers.req, + res: Logger.stdSerializers.res, + }, + }); + + // In case of an empty log file, we ensure there is always something logged. This also helps see if the server + // was restarted in any cases + if (logStart) { + logger.warn('Verdaccio started'); + } + + process.on('SIGUSR2', function() { + // https://github.com/trentm/node-bunyan#stream-type-rotating-file + if (logger) { + /** + * Note on log rotation: Often you may be using external log rotation utilities like logrotate on Linux or logadm + * on SmartOS/Illumos. In those cases, unless your are ensuring "copy and truncate" semantics + * (via copytruncate with logrotate or -c with logadm) then the fd for your 'file' stream will change. + */ + logger.reopenFileStreams(); + } + }); +} + +export { setup, logger }; diff --git a/packages/logger/src/utils.ts b/packages/logger/src/utils.ts new file mode 100644 index 000000000..742b42f7e --- /dev/null +++ b/packages/logger/src/utils.ts @@ -0,0 +1,29 @@ +import dayjs from 'dayjs'; +import _ from 'lodash'; + +export const FORMAT_DATE = 'YYYY-MM-DD HH:mm:ss'; + +export function formatLoggingDate(time: string): string { + return dayjs(time).format(FORMAT_DATE); +} + +/** + * Check whether an element is an Object + * @param {*} obj the element + * @return {Boolean} + */ +export function isObject(obj: any): boolean { + return _.isObject(obj) && _.isNull(obj) === false && _.isArray(obj) === false; +} + +/** + * Apply whitespaces based on the length + * @param {*} str the log message + * @return {String} + */ +export function pad(str, max): string { + if (str.length < max) { + return str + ' '.repeat(max - str.length); + } + return str; +} diff --git a/packages/logger/test/parser.spec.ts b/packages/logger/test/parser.spec.ts new file mode 100644 index 000000000..69c65d73d --- /dev/null +++ b/packages/logger/test/parser.spec.ts @@ -0,0 +1,121 @@ +import { fillInMsgTemplate } from "../src/formatter"; +import {LOG_VERDACCIO_ERROR, LOG_VERDACCIO_BYTES} from "@verdaccio/middleware"; +import { HTTP_STATUS } from "@verdaccio/commons-api"; + +// the following mocks avoid use colors, thus the strings can be matched + +jest.mock('kleur', () => { + // we emulate colors with this pattern color[msg] + return { + green: r => `g[${r}]`, + yellow: r => `y[${r}]`, + black: r => `b[${r}]`, + blue: r => `bu[${r}]`, + red: r => `r[${r}]`, + cyan: r => `c[${r}]`, + magenta: r => `m[${r}]`, + white: r => `w[${r}]`, + } +}); + +jest.mock('util', () => { + // we need to override only one method, but still we need others + const originalModule = jest.requireActual('util'); + return { + ...originalModule, + inspect: r => r, + } +}); + + +describe('Logger Parser', () => { + describe('basic messages', () => { + test('number object property', () => { + expect(fillInMsgTemplate('foo:@{foo}', {foo: 1}, false)).toEqual('foo:1'); + }); + + test('string object property', () => { + expect(fillInMsgTemplate('foo:@{foo}', {foo: 'bar'}, false)).toEqual('foo:bar'); + }); + + test('empty message no object property', () => { + expect(fillInMsgTemplate('foo', undefined, false)).toEqual('foo'); + }); + + test('string no object property', () => { + expect(fillInMsgTemplate('foo', null, false)).toEqual('foo'); + }); + + test('string no object property with break line ', () => { + expect(fillInMsgTemplate('foo \n bar', null, false)).toEqual('foo \n bar'); + }); + + test('string no object property with colors', () => { + expect(fillInMsgTemplate('foo', null, true)).toEqual('foo'); + }); + + test('string object property with colors', () => { + expect(fillInMsgTemplate('foo:@{foo}', {foo: 'bar'}, true)).toEqual(`foo:${'g[bar]'}`); + }); + }) + + describe('middleware log messages', () => { + describe('test errors log', () => { + const middlewareObject = { name: 'verdaccio', + request: { + method: 'POST', + url: '/-/npm/v1/user' + }, + user: 'userTest2001', + remoteIP: '::ffff:127.0.0.1', + status: HTTP_STATUS.UNAUTHORIZED, + error: 'some error', + msg: '@{status}, user: @{user}(@{remoteIP}), req: \'@{request.method} @{request.url}\', error: @{!error}' + }; + + test('should display error log', () => { + const expectedErrorMessage = `401, user: userTest2001(::ffff:127.0.0.1), req: 'POST /-/npm/v1/user', error: some error`; + expect(fillInMsgTemplate(LOG_VERDACCIO_ERROR, middlewareObject, false)) + .toEqual(expectedErrorMessage); + }); + + test('should display error log with colors', () => { + const expectedErrorMessage = `401, user: g[userTest2001](g[::ffff:127.0.0.1]), req: 'g[POST] g[/-/npm/v1/user]', error: r[some error]`; + expect(fillInMsgTemplate(LOG_VERDACCIO_ERROR, middlewareObject, true)) + .toEqual(expectedErrorMessage); + }); + }); + + describe('test bytes log', () => { + const middlewareObject = { name: 'verdaccio', + hostname: 'macbook-touch', + pid: 85621, + sub: 'in', + level: 35, + request: { + method: 'PUT', + url: '/-/user/org.couchdb.user:userTest2002' + }, + user: 'userTest2002', + remoteIP: '::ffff:127.0.0.1', + status: 201, + error: undefined, + bytes: { in: 50, out: 405 }, + msg: + '@{status}, user: @{user}(@{remoteIP}), req: \'@{request.method} @{request.url}\', bytes: @{bytes.in}/@{bytes.out}', + time: '2019-07-20T11:31:49.939Z', + v: 0 + } + + test('should display log with bytes', () => { + expect(fillInMsgTemplate(LOG_VERDACCIO_BYTES, middlewareObject, false)) + .toEqual(`201, user: userTest2002(::ffff:127.0.0.1), req: 'PUT /-/user/org.couchdb.user:userTest2002', bytes: 50/405`); + }); + + test('should display log with bytes with colors', () => { + expect(fillInMsgTemplate(LOG_VERDACCIO_BYTES, middlewareObject, true)) + .toEqual(`201, user: g[userTest2002](g[::ffff:127.0.0.1]), req: 'g[PUT] g[/-/user/org.couchdb.user:userTest2002]', bytes: 50/405`); + }); + }); + }); +}); diff --git a/packages/logger/tsconfig.json b/packages/logger/tsconfig.json new file mode 100644 index 000000000..6531bd3e4 --- /dev/null +++ b/packages/logger/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./build" + }, + "include": ["src/**/*"], + "exclude": ["src/**/*.test.ts"] +} diff --git a/packages/middleware/.babelrc b/packages/middleware/.babelrc new file mode 100644 index 000000000..28397a1bd --- /dev/null +++ b/packages/middleware/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": [["@verdaccio"]] +} diff --git a/packages/middleware/package.json b/packages/middleware/package.json new file mode 100644 index 000000000..a4e55a978 --- /dev/null +++ b/packages/middleware/package.json @@ -0,0 +1,35 @@ +{ + "name": "@verdaccio/middleware", + "version": "5.0.0-alpha.0", + "description": "loaders logic", + "main": "./build/index.js", + "types": "build/index.d.ts", + "author": { + "name": "Juan Picado", + "email": "juanpicado19@gmail.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/verdaccio/verdaccio" + }, + "license": "MIT", + "homepage": "https://verdaccio.org", + "scripts": { + "clean": "rimraf ./build", + "type-check": "tsc --noEmit", + "build:types": "tsc --emitDeclarationOnly --declaration true", + "build:js": "cross-env BABEL_ENV=registry babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "build": "npm run build:js && npm run build:types" + }, + "dependencies": { + "@verdaccio/commons-api": "^9.0.0", + "@verdaccio/dev-commons": "5.0.0-alpha.0", + "@verdaccio/logger": "5.0.0-alpha.0", + "@verdaccio/utils": "5.0.0-alpha.0", + "lodash": "^4.17.15" + }, + "devDependencies": { + "@verdaccio/dev-types": "5.0.0-alpha.0" + }, + "gitHead": "7c246ede52ff717707fcae66dd63fc4abd536982" +} diff --git a/packages/middleware/src/index.ts b/packages/middleware/src/index.ts new file mode 100644 index 000000000..2d3c0f4ef --- /dev/null +++ b/packages/middleware/src/index.ts @@ -0,0 +1 @@ +export * from './middleware'; diff --git a/src/api/middleware.ts b/packages/middleware/src/middleware.ts similarity index 71% rename from src/api/middleware.ts rename to packages/middleware/src/middleware.ts index fc43dce48..c9cd78aa5 100644 --- a/src/api/middleware.ts +++ b/packages/middleware/src/middleware.ts @@ -1,21 +1,21 @@ -import fs from 'fs'; -import path from 'path'; import _ from 'lodash'; -import buildDebug from 'debug'; -import validator from 'validator'; +import { + validateName as utilValidateName, + validatePackage as utilValidatePackage, + getVersionFromTarball, + isObject, + stringToMD5, + ErrorCode +} from '@verdaccio/utils'; +import { API_ERROR, HEADER_TYPE, HEADERS, HTTP_STATUS, TOKEN_BASIC, TOKEN_BEARER } from '@verdaccio/dev-commons'; +import { $ResponseExtend, $RequestExtend, $NextFunctionVer, IAuth } from '@verdaccio/dev-types'; import { Config, Package, RemoteUser } from '@verdaccio/types'; +import { logger } from '@verdaccio/logger'; import { VerdaccioError } from '@verdaccio/commons-api'; -import { validateName as utilValidateName, validatePackage as utilValidatePackage, getVersionFromTarball, isObject, ErrorCode } from '../lib/utils'; -import { API_ERROR, HEADER_TYPE, HEADERS, HTTP_STATUS, TOKEN_BASIC, TOKEN_BEARER } from '../lib/constants'; -import { stringToMD5 } from '../lib/crypto-utils'; -import { $ResponseExtend, $RequestExtend, $NextFunctionVer, IAuth } from '../../types'; -import { logger } from '../lib/logger'; - -const debug = buildDebug('verdaccio'); export function match(regexp: RegExp): any { - return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer, value: string): void { + return function(req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer, value: string): void { if (regexp.exec(value)) { next(); } else { @@ -24,51 +24,6 @@ export function match(regexp: RegExp): any { }; } -export function serveFavicon(config: Config) { - return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer) { - try { - // @ts-ignore - const logoConf: string = config?.web?.logo as string; - if (logoConf === '') { - debug('favicon disabled'); - res.status(404); - } else if (!_.isEmpty(logoConf)) { - debug('custom favicon'); - if ( - validator.isURL(logoConf, { - require_host: true, - require_valid_protocol: true, - }) - ) { - debug('redirect to %o', logoConf); - res.redirect(logoConf); - } else { - const faviconPath = path.normalize(logoConf); - debug('serving favicon from %o', faviconPath); - fs.access(faviconPath, fs.constants.R_OK, (err) => { - if (err) { - debug('no read permissions to read: %o, reason:', logoConf, err?.message); - return res.status(HTTP_STATUS.NOT_FOUND).end(); - } else { - res.setHeader('Content-Type', 'image/x-icon'); - fs.createReadStream(faviconPath).pipe(res); - return; - } - }); - } - return next(); - } else { - res.setHeader('Content-Type', 'image/x-icon'); - fs.createReadStream(path.join(__dirname, './web/html/favicon.ico')).pipe(res); - debug('rendered ico'); - } - } catch (err) { - debug('error triggered, favicon not found'); - res.status(HTTP_STATUS.NOT_FOUND).end(); - } - }; -} - export function setSecurityWebHeaders(req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { // disable loading in frames (clickjacking, etc.) res.header(HEADERS.FRAMES_OPTIONS, 'deny'); @@ -108,7 +63,7 @@ export function validatePackage(req: $RequestExtend, res: $ResponseExtend, next: } export function media(expect: string | null): any { - return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { + return function(req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { if (req.headers[HEADER_TYPE.CONTENT_TYPE] !== expect) { next(ErrorCode.getCode(HTTP_STATUS.UNSUPPORTED_MEDIA, 'wrong content-type, expect: ' + expect + ', got: ' + req.headers[HEADER_TYPE.CONTENT_TYPE])); } else { @@ -133,7 +88,7 @@ export function expectJson(req: $RequestExtend, res: $ResponseExtend, next: $Nex } export function antiLoop(config: Config): Function { - return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { + return function(req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { if (req.headers.via != null) { const arr = req.headers.via.split(','); @@ -149,14 +104,15 @@ export function antiLoop(config: Config): Function { } export function allow(auth: IAuth): Function { - return function (action: string): Function { - return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { + return function(action: string): Function { + return function(req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { req.pause(); const packageName = req.params.scope ? `@${req.params.scope}/${req.params.package}` : req.params.package; const packageVersion = req.params.filename ? getVersionFromTarball(req.params.filename) : undefined; const remote: RemoteUser = req.remote_user; - debug('[middleware/allow][%o] allow for %o', action, remote?.name); - auth['allow_' + action]({ packageName, packageVersion }, remote, function (error, allowed): void { + logger.trace({ action, user: remote.name }, `[middleware/allow][@{action}] allow for @{user}`); + + auth['allow_' + action]({ packageName, packageVersion }, remote, function(error, allowed): void { req.resume(); if (error) { next(error); @@ -192,7 +148,7 @@ export function final(body: FinalBody, req: $RequestExtend, res: $ResponseExtend if (typeof body === 'object' && _.isNil(body) === false) { if (typeof (body as MiddlewareError).error === 'string') { - res.locals._verdaccio_error = (body as MiddlewareError).error; + res._verdaccio_error = (body as MiddlewareError).error; } body = JSON.stringify(body, undefined, ' ') + '\n'; } @@ -210,7 +166,6 @@ export function final(body: FinalBody, req: $RequestExtend, res: $ResponseExtend // and should just close socket if (err.message.match(/set headers after they are sent/)) { if (_.isNil(res.socket) === false) { - // @ts-ignore res.socket.destroy(); } return; @@ -227,6 +182,9 @@ export const LOG_VERDACCIO_BYTES = `${LOG_STATUS_MESSAGE}, bytes: @{bytes.in}/@{ export function log(config: Config) { return function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { + // logger + req.log = logger.child({ sub: 'in' }); + const _auth = req.headers.authorization; if (_.isNil(_auth) === false) { req.headers.authorization = ''; @@ -240,7 +198,7 @@ export function log(config: Config) { req.url = req.originalUrl; // avoid log noise data from static content if (req.originalUrl.match(/static/) === null) { - logger.http({ req: req, ip: req.ip }, "@{ip} requested '@{req.method} @{req.url}'"); + req.log.info({req: req, ip: req.ip}, "@{ip} requested '@{req.method} @{req.url}'"); } req.originalUrl = req.url; @@ -254,7 +212,7 @@ export function log(config: Config) { let bytesin = 0; if (config?.experiments?.bytesin_off !== true) { - req.on('data', function (chunk): void { + req.on('data', function(chunk): void { bytesin += chunk.length; }); } @@ -263,7 +221,7 @@ export function log(config: Config) { const _write = res.write; // FIXME: res.write should return boolean // @ts-ignore - res.write = function (buf): boolean { + res.write = function(buf): boolean { bytesout += buf.length; /* eslint prefer-rest-params: "off" */ // @ts-ignore @@ -271,7 +229,7 @@ export function log(config: Config) { }; let logHasBeenCalled = false; - const log = function (): void { + const log = function(): void { if (logHasBeenCalled) { return; } @@ -281,7 +239,7 @@ export function log(config: Config) { const remoteAddress = req.connection.remoteAddress; const remoteIP = forwardedFor ? `${forwardedFor} via ${remoteAddress}` : remoteAddress; let message; - if (res.locals._verdaccio_error) { + if (res._verdaccio_error) { message = LOG_VERDACCIO_ERROR; } else { message = LOG_VERDACCIO_BYTES; @@ -290,33 +248,34 @@ export function log(config: Config) { req.url = req.originalUrl; // avoid log noise data from static content if (req.url.match(/static/) === null) { - logger.http( - { - request: { - method: req.method, - url: req.url, + req.log.warn( + { + request: { + method: req.method, + url: req.url, + }, + level: 35, // http + user: (req.remote_user && req.remote_user.name) || null, + remoteIP, + status: res.statusCode, + error: res._verdaccio_error, + bytes: { + in: bytesin, + out: bytesout, + }, }, - user: (req.remote_user && req.remote_user.name) || null, - remoteIP, - status: res.statusCode, - error: res.locals._verdaccio_error, - bytes: { - in: bytesin, - out: bytesout, - }, - }, - message + message ); req.originalUrl = req.url; } - }; + } - req.on('close', function (): void { + req.on('close', function(): void { log(); }); const _end = res.end; - res.end = function (buf): void { + res.end = function(buf): void { if (buf) { bytesout += buf.length; } @@ -326,14 +285,14 @@ export function log(config: Config) { log(); }; next(); - }; + } } // Middleware export function errorReportingMiddleware(req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { - res.locals.report_error = - res.locals.report_error || - function (err: VerdaccioError): void { + res.report_error = + res.report_error || + function(err: VerdaccioError): void { if (err.status && err.status >= HTTP_STATUS.BAD_REQUEST && err.status < 600) { if (!res.headersSent) { res.status(err.status); diff --git a/packages/middleware/tsconfig.json b/packages/middleware/tsconfig.json new file mode 100644 index 000000000..2be65b934 --- /dev/null +++ b/packages/middleware/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./build" + }, + "include": ["src/**/*", "types/*.d.ts"], + "exclude": ["src/**/*.test.ts"] +} diff --git a/packages/middleware/types/custom.d.ts b/packages/middleware/types/custom.d.ts new file mode 100644 index 000000000..733e88c70 --- /dev/null +++ b/packages/middleware/types/custom.d.ts @@ -0,0 +1,16 @@ +import { Logger, RemoteUser } from "@verdaccio/types"; + +declare global { + namespace Express { + export interface Request { + remote_user: RemoteUser; + log: Logger; + } + + export interface Response { + report_error: any; + _verdaccio_error: any; + socket?: any; + } + } +} diff --git a/packages/mock/.babelrc b/packages/mock/.babelrc new file mode 100644 index 000000000..28397a1bd --- /dev/null +++ b/packages/mock/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": [["@verdaccio"]] +} diff --git a/packages/mock/.eslintrc b/packages/mock/.eslintrc new file mode 100644 index 000000000..7753f32e7 --- /dev/null +++ b/packages/mock/.eslintrc @@ -0,0 +1,5 @@ +{ + "rules": { + "no-console": 0 + } +} diff --git a/packages/mock/jest.config.js b/packages/mock/jest.config.js new file mode 100644 index 000000000..45146c37f --- /dev/null +++ b/packages/mock/jest.config.js @@ -0,0 +1,9 @@ +module.exports = { + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'], + transform: { + '^.+\\.(js|jsx|ts|tsx)$': 'babel-jest', + }, + verbose: true, + collectCoverage: true, + coveragePathIgnorePatterns: ['node_modules', 'fixtures'], +}; diff --git a/packages/mock/package.json b/packages/mock/package.json new file mode 100644 index 000000000..bcabb98f0 --- /dev/null +++ b/packages/mock/package.json @@ -0,0 +1,38 @@ +{ + "name": "@verdaccio/mock", + "version": "5.0.0-alpha.0", + "author": { + "name": "Juan Picado", + "email": "juanpicado19@gmail.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/verdaccio/verdaccio" + }, + "license": "MIT", + "homepage": "https://verdaccio.org", + "description": "mock server for testing", + "main": "./build/index.js", + "types": "build/index.d.ts", + "scripts": { + "clean": "rimraf ./build", + "test": "cross-env NODE_ENV=test BABEL_ENV=test jest", + "type-check": "tsc --noEmit", + "build:types": "tsc --emitDeclarationOnly --declaration true", + "build:js": "cross-env BABEL_ENV=registry babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "build": "npm run build:js && npm run build:types" + }, + "dependencies": { + "@verdaccio/utils": "5.0.0-alpha.0", + "fs-extra": "^8.1.0", + "lodash": "^4.17.15", + "request": "2.87.0", + "supertest": "^4.0.2", + "verdaccio": "^4.4.0" + }, + "devDependencies": { + "@verdaccio/dev-types": "5.0.0-alpha.0", + "@verdaccio/types": "^9.3.0" + }, + "gitHead": "7c246ede52ff717707fcae66dd63fc4abd536982" +} diff --git a/packages/mock/src/config.ts b/packages/mock/src/config.ts new file mode 100644 index 000000000..43be800b0 --- /dev/null +++ b/packages/mock/src/config.ts @@ -0,0 +1,21 @@ + +import _ from 'lodash'; +import path from 'path'; + +import {parseConfigFile} from '@verdaccio/utils'; + +/** + * Override the default.yaml configuration file with any new config provided. + */ +function configExample(externalConfig, configFile: string = 'default.yaml', location: string) { + const locationFile = location ? path.join(location, configFile) : + path.join(__dirname, `./config/yaml/${configFile}`); + const config = parseConfigFile(locationFile); + + return _.assign({}, _.cloneDeep(config), externalConfig); +} + + +export { + configExample +} diff --git a/test/unit/partials/config/yaml/default.yaml b/packages/mock/src/config/yaml/default.yaml similarity index 100% rename from test/unit/partials/config/yaml/default.yaml rename to packages/mock/src/config/yaml/default.yaml diff --git a/test/unit/partials/config-unit-mock-server-test.yaml b/packages/mock/src/config/yaml/mock-server-test.yaml similarity index 89% rename from test/unit/partials/config-unit-mock-server-test.yaml rename to packages/mock/src/config/yaml/mock-server-test.yaml index 8e54b1fe8..621776e52 100644 --- a/test/unit/partials/config-unit-mock-server-test.yaml +++ b/packages/mock/src/config/yaml/mock-server-test.yaml @@ -18,8 +18,10 @@ packages: '@*/*': access: $all publish: none + unpublish: none '**': access: $all publish: none + unpublish: none _debug: true diff --git a/packages/mock/src/constants.ts b/packages/mock/src/constants.ts new file mode 100644 index 000000000..d038a04b8 --- /dev/null +++ b/packages/mock/src/constants.ts @@ -0,0 +1,11 @@ +export const DOMAIN_SERVERS = '0.0.0.0'; +export const CREDENTIALS = { + user: 'test', + password: 'test' +}; + +export const TARBALL = 'tarball-blahblah-file.name'; +export const PORT_SERVER_APP = '55550'; +export const PORT_SERVER_1 = '55551'; +export const PORT_SERVER_2 = '55552'; +export const PORT_SERVER_3 = '55553'; diff --git a/test/unit/partials/mock-store/@jquery/jquery/jquery-1.5.1.tgz b/packages/mock/src/fixtures/mock-store/jquery/jquery-1.5.1.tgz similarity index 100% rename from test/unit/partials/mock-store/@jquery/jquery/jquery-1.5.1.tgz rename to packages/mock/src/fixtures/mock-store/jquery/jquery-1.5.1.tgz diff --git a/test/unit/partials/mock-store/jquery/package.json b/packages/mock/src/fixtures/mock-store/jquery/package.json similarity index 100% rename from test/unit/partials/mock-store/jquery/package.json rename to packages/mock/src/fixtures/mock-store/jquery/package.json diff --git a/packages/mock/src/fixtures/package.ts b/packages/mock/src/fixtures/package.ts new file mode 100644 index 000000000..51430da99 --- /dev/null +++ b/packages/mock/src/fixtures/package.ts @@ -0,0 +1,14 @@ +import {DOMAIN_SERVERS, PORT_SERVER_1, TARBALL} from '../constants'; + +export default function(name, version = '0.0.0', port = PORT_SERVER_1, domain= `http://${DOMAIN_SERVERS}:${port}`, + fileName = TARBALL, readme = 'this is a readme'): any { + return { + name, + version, + readme, + dist: { + shasum: 'fake', + tarball: `${domain}/${encodeURIComponent(name)}/-/${fileName}`, + } + }; +} diff --git a/packages/mock/src/index.ts b/packages/mock/src/index.ts new file mode 100644 index 000000000..7abf8a30b --- /dev/null +++ b/packages/mock/src/index.ts @@ -0,0 +1,10 @@ +export * from './constants'; +export * from './server_process'; +export * from './request'; +export * from './utils-test'; +export * from './verdaccio-server'; +export * from './fixtures/package'; +export * from './server'; +export * from './config'; +export * from './mock'; +export * from './mock-api'; diff --git a/packages/mock/src/mock-api.ts b/packages/mock/src/mock-api.ts new file mode 100644 index 000000000..cade57176 --- /dev/null +++ b/packages/mock/src/mock-api.ts @@ -0,0 +1,198 @@ +import _ from 'lodash'; +import request from 'supertest'; + +import {DIST_TAGS, LATEST, HEADER_TYPE, HEADERS, HTTP_STATUS, TOKEN_BEARER} from '@verdaccio/dev-commons'; +import {buildToken, encodeScopedUri} from '@verdaccio/utils'; +import {generateRandomHexString} from "@verdaccio/utils"; +import { Package } from '@verdaccio/types'; + +// API Helpers + +// This file should contain utilities to avoid repeated task over API unit testing, +// Please, comply with the following: +// - Promisify everything +// - Encourage using constants or create new ones if it's needed +// - // @ts-ignore or any is fine if there is no other way + +export function getTaggedVersionFromPackage(pkg, pkgName, tag: string = LATEST, version: string) { + // extract the tagged version + const taggedVersion = pkg[DIST_TAGS][tag]; + expect(taggedVersion).toBeDefined(); + expect(taggedVersion).toEqual(version); + + // the version must exist + const latestPkg = pkg.versions[taggedVersion]; + expect(latestPkg).toBeDefined(); + // the name must match + expect(latestPkg.name).toEqual(pkgName); + + return latestPkg; +} + + +export function putPackage( + request: any, + pkgName: string, + publishMetadata: Package, + token?: string): Promise { + return new Promise((resolve) => { + const put = request.put(pkgName) + .set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON) + .send(JSON.stringify(publishMetadata)); + + if (_.isEmpty(token) === false ) { + expect(token).toBeDefined(); + put.set(HEADERS.AUTHORIZATION, buildToken(TOKEN_BEARER, token as string)) + } + + put.set('accept', 'gzip') + .set('accept-encoding', HEADERS.JSON) + .expect(HTTP_STATUS.CREATED) + .end(function(err, res) { + resolve([err, res]); + }); + }); +} + +export function deletePackage( + request: any, + pkgName: string, + token?: string +): Promise { + return new Promise((resolve) => { + const del = request.put(`/${encodeScopedUri(pkgName)}/-rev/${generateRandomHexString(8)}`) + .set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON); + + if (_.isNil(token) === false ) { + del.set(HEADERS.AUTHORIZATION, buildToken(TOKEN_BEARER, token as string)) + } + + del.set('accept-encoding', HEADERS.JSON) + .expect(HTTP_STATUS.CREATED) + .end(function(err, res) { + resolve([err, res]); + }); + }); +} + +export function getPackage( + request: any, + token: string, + pkgName: string, + statusCode: number = HTTP_STATUS.OK): Promise { + return new Promise((resolve) => { + const getRequest = request.get(`/${pkgName}`); + + if (_.isNil(token) === false || _.isEmpty(token) === false) { + getRequest.set(HEADERS.AUTHORIZATION, buildToken(TOKEN_BEARER, token)); + } + + getRequest + .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) + .expect(statusCode) + .end(function(err, res) { + resolve([err, res]); + }); + }); +} + +export function loginUserToken(request: any, + user: string, + credentials: any, + token: string, + statusCode: number = HTTP_STATUS.CREATED): Promise { + // $FlowFixMe + return new Promise((resolve) => { + request.put(`/-/user/org.couchdb.user:${user}`) + .send(credentials) + .set('authorization', buildToken(TOKEN_BEARER, token)) + .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) + .expect(statusCode) + .end(function(err, res) { + return resolve([err, res]); + }); + }); +} + +export function addUser(request: any, user: string, credentials: any, + statusCode: number = HTTP_STATUS.CREATED): Promise { + // $FlowFixMe + return new Promise((resolve) => { + request.put(`/-/user/org.couchdb.user:${user}`) + .send(credentials) + .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) + .expect(statusCode) + .end(function(err, res) { + return resolve([err, res]); + }); + }); +} + +export async function getNewToken(request: any, credentials: any): Promise { + /* eslint no-async-promise-executor: 0 */ + return new Promise(async (resolve) => { + const [err, res] = await addUser(request, credentials.name, credentials); + expect(err).toBeNull(); + const {token, ok} = res.body; + expect(ok).toBeDefined(); + expect(token).toBeDefined(); + expect(typeof token).toBe('string'); + resolve(token); + }); +} + +export function getProfile(request: any, token: string, statusCode: number = HTTP_STATUS.OK): Promise { + // $FlowFixMe + return new Promise((resolve) => { + request.get(`/-/npm/v1/user`) + .set('authorization', buildToken(TOKEN_BEARER, token)) + .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) + .expect(statusCode) + .end(function(err, res) { + return resolve([err, res]); + }); + }); +} + +export function postProfile(request: any, body: any, token: string, statusCode: number = HTTP_STATUS.OK): Promise { + // $FlowFixMe + return new Promise((resolve) => { + request.post(`/-/npm/v1/user`) + .send(body) + .set(HEADERS.AUTHORIZATION, `Bearer ${token}`) + .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) + .expect(statusCode) + .end(function(err, res) { + return resolve([err, res]); + }); + }); +} + +export async function fetchPackageByVersionAndTag(app, encodedPkgName, pkgName, version, tag = 'latest') { + // we retrieve the package to verify + const [err, resp]= await getPackage(request(app), '', encodedPkgName); + + expect(err).toBeNull(); + + // we check whether the latest version match with the previous published one + return getTaggedVersionFromPackage(resp.body, pkgName, tag, version); +} + +export async function isExistPackage(app, packageName) { + const [err]= await getPackage(request(app), '', encodeScopedUri(packageName), HTTP_STATUS.OK); + + return _.isNull(err); +} + +export async function verifyPackageVersionDoesExist(app, packageName, version, token?: string) { + const [, res]= await getPackage(request(app), token as string, encodeScopedUri(packageName), HTTP_STATUS.OK); + + const { versions } = res.body; + const versionsKeys = Object.keys(versions); + + return versionsKeys.includes(version) === false; +} + +export function generateUnPublishURI(pkgName) { + return `/${encodeScopedUri(pkgName)}/-rev/${generateRandomHexString(8)}`; +} diff --git a/packages/mock/src/mock.ts b/packages/mock/src/mock.ts new file mode 100644 index 000000000..1e5fbfa54 --- /dev/null +++ b/packages/mock/src/mock.ts @@ -0,0 +1,98 @@ +import path from 'path'; +import fs from 'fs'; +import * as fsExtra from 'fs-extra'; +import os from 'os'; +import {DOMAIN_SERVERS} from './constants'; +import VerdaccioProcess from './server_process'; +import {VerdaccioConfig} from './verdaccio-server'; +import Server from './server'; +import {IServerBridge} from './types'; + + +/** + * Fork a Verdaccio process with a custom configuration. + * + * Usage: + * + * - Fork the process within the beforeAll body. + * - Define a storage (use a specific name) + * - Define a unique port (be careful with conflicts) + * - Set a configuration + * - await / mockServer + * - call done(); + * + * beforeAll(function(done) { + const store = path.join(__dirname, '../partials/store/test-profile-storage'); + const mockServerPort = 55544; + rimraf(store, async () => { + const parsedConfig = parseConfigFile(parseConfigurationProfile()); + const configForTest = _.assign({}, _.cloneDeep(parsedConfig), { + storage: store, + auth: { + htpasswd: { + file: './test-profile-storage/.htpasswd' + } + }, + self_path: store + }); + app = await endPointAPI(configForTest); + mockRegistry = await mockServer(mockServerPort).init(); + done(); + }); + + On finish the test we must close the server + + afterAll(function(done) { + mockRegistry[0].stop(); + done(); + }); + + * + * + * @param port + * @returns {VerdaccioProcess} + */ +export function mockServer(port: number, options: MockRegistryOptions = {}) { + const tempRoot = fs.mkdtempSync(path.join(os.tmpdir(), '/verdaccio-test')); + // console.log("-->tempRoot", tempRoot); + + // default locations + const configPath = path.join(__dirname, './config/yaml', '/mock-server-test.yaml'); + const mockStorePath = path.join(__dirname, '/fixtures/mock-store'); + + // default options + const localOptions: MockRegistryOptions = { + port, + configPath, + storePath: mockStorePath, + rootFolder: tempRoot, + silence: true, + debug: false + }; + + // mix external options + const finalOptions: MockRegistryOptions = Object.assign({}, localOptions, options); + + // console.log('--->finalOptions=>', finalOptions); + + // final locations + const tempConfigFile = path.join(tempRoot, 'verdaccio.yaml'); + const storePath = path.join(tempRoot, '/mock-store'); + + fs.copyFileSync(finalOptions.configPath!, tempConfigFile); + fsExtra.copySync(finalOptions.storePath!, storePath); + + const verdaccioConfig = new VerdaccioConfig(storePath, tempConfigFile, `http://${DOMAIN_SERVERS}:${port}/`, port); + const server: IServerBridge = new Server(verdaccioConfig.domainPath); + + return new VerdaccioProcess(verdaccioConfig, server, finalOptions.silence, finalOptions.debug); +} + +export interface MockRegistryOptions { + rootFolder?: string; + configPath?: string; + port?: number; + storePath?: string; + silence?: boolean + debug?: boolean; +} diff --git a/test/lib/request.ts b/packages/mock/src/request.ts similarity index 51% rename from test/lib/request.ts rename to packages/mock/src/request.ts index 6340f68d4..bd5b40e23 100644 --- a/test/lib/request.ts +++ b/packages/mock/src/request.ts @@ -1,11 +1,12 @@ import _ from 'lodash'; import assert from 'assert'; import request from 'request'; -import { IRequestPromise } from '../types'; +import { IRequestPromise } from './types'; const requestData = Symbol('smart_request_data'); export class PromiseAssert extends Promise implements IRequestPromise { + public constructor(options: any) { super(options); } @@ -13,64 +14,56 @@ export class PromiseAssert extends Promise implements IRequestPromise { public status(expected: number) { const selfData = this[requestData]; - return injectResponse( - this, - this.then(function (body) { - try { - assert.equal(selfData.response.statusCode, expected); - } catch (err) { - selfData.error.message = err.message; - throw selfData.error; - } - return body; - }) - ); + return injectResponse(this, this.then(function(body) { + try { + assert.equal(selfData.response.statusCode, expected); + } catch(err) { + selfData.error.message = err.message; + throw selfData.error; + } + return body; + })); } public body_ok(expected: any) { const selfData = this[requestData]; - return injectResponse( - this, - this.then(function (body) { - try { - if (_.isRegExp(expected)) { - assert(body.ok.match(expected), "'" + body.ok + "' doesn't match " + expected); - } else { - assert.equal(body.ok, expected); - } - assert.equal(body.error, null); - } catch (err) { - selfData.error.message = err.message; - throw selfData.error; + return injectResponse(this, this.then(function(body) { + try { + if (_.isRegExp(expected)) { + assert(body.ok.match(expected), '\'' + body.ok + '\' doesn\'t match ' + expected); + } else { + assert.equal(body.ok, expected); } + assert.equal(body.error, null); + } catch(err) { + selfData.error.message = err.message; + throw selfData.error; + } - return body; - }) - ); + return body; + })); } + public body_error(expected: any) { - // $FlowFixMe + const selfData = this[requestData]; - return injectResponse( - this, - this.then(function (body) { - try { - if (_.isRegExp(expected)) { - assert(body.error.match(expected), body.error + " doesn't match " + expected); - } else { - assert.equal(body.error, expected); - } - assert.equal(body.ok, null); - } catch (err) { - selfData.error.message = err.message; - throw selfData.error; + return injectResponse(this, this.then(function(body) { + try { + if (_.isRegExp(expected)) { + assert(body.error.match(expected), body.error + ' doesn\'t match ' + expected); + } else { + assert.equal(body.error, expected); } - return body; - }) - ); + assert.equal(body.ok, null); + } catch(err) { + selfData.error.message = err.message; + throw selfData.error; + } + return body; + })); } public request(callback: any) { @@ -81,27 +74,26 @@ export class PromiseAssert extends Promise implements IRequestPromise { public response(cb: any) { const selfData = this[requestData]; - return injectResponse( - this, - this.then(function (body) { - cb(selfData.response); - return body; - }) - ); + return injectResponse(this, this.then(function(body) { + cb(selfData.response); + return body; + })); } public send(data: any) { this[requestData].request.end(data); return this; } + } function injectResponse(smartObject: any, promise: Promise): Promise { - // $FlowFixMe + promise[requestData] = smartObject[requestData]; return promise; } + function smartRequest(options: any): Promise { const smartObject: any = {}; @@ -109,9 +101,9 @@ function smartRequest(options: any): Promise { smartObject[requestData].error = Error(); Error.captureStackTrace(smartObject[requestData].error, smartRequest); - const promiseResult: Promise = new PromiseAssert(function (resolve, reject) { + const promiseResult: Promise = new PromiseAssert(function(resolve, reject) { // store request reference on symbol - smartObject[requestData].request = request(options, function (err, res, body) { + smartObject[requestData].request = request(options, function(err, res, body) { if (err) { return reject(err); } @@ -126,3 +118,4 @@ function smartRequest(options: any): Promise { } export default smartRequest; + diff --git a/test/lib/server.ts b/packages/mock/src/server.ts similarity index 76% rename from test/lib/server.ts rename to packages/mock/src/server.ts index 7479f57f7..7f1421d4b 100644 --- a/test/lib/server.ts +++ b/packages/mock/src/server.ts @@ -1,11 +1,13 @@ import _ from 'lodash'; import assert from 'assert'; import smartRequest from './request'; -import { IServerBridge } from '../types'; -import { API_MESSAGE, HEADERS, HTTP_STATUS, TOKEN_BASIC } from '../../src/lib/constants'; -import { buildToken } from '../../src/lib/utils'; -import { CREDENTIALS } from '../functional/config.functional'; -import getPackage from '../functional/fixtures/package'; +import {IServerBridge} from './types'; + +import {API_MESSAGE, HEADERS, HTTP_STATUS, TOKEN_BASIC} from '@verdaccio/dev-commons'; +import {buildToken} from "@verdaccio/utils"; + +import {CREDENTIALS} from "./constants" +import getPackage from './fixtures/package'; const buildAuthHeader = (user, pass): string => { return buildToken(TOKEN_BASIC, Buffer.from(`${user}:${pass}`).toString('base64')); @@ -35,7 +37,7 @@ export default class Server implements IServerBridge { method: options.method || 'GET', headers: headers, encoding: options.encoding, - json: _.isNil(options.json) === false ? options.json : true + json: _.isNil(options.json) === false ? options.json : true, }); } @@ -51,22 +53,23 @@ export default class Server implements IServerBridge { _id: `org.couchdb.user:${name}`, type: 'user', roles: [], - date: new Date() - } + date: new Date(), + }, }); } public logout(token: string) { return this.request({ uri: `/-/user/token/${encodeURIComponent(token)}`, - method: 'DELETE' + method: 'DELETE', }); } + public getPackage(name: string) { return this.request({ uri: `/${encodeURIComponent(name)}`, - method: 'GET' + method: 'GET', }); } @@ -79,8 +82,8 @@ export default class Server implements IServerBridge { uri: `/${encodeURIComponent(name)}`, method: 'PUT', headers: { - [HEADERS.CONTENT_TYPE]: HEADERS.JSON - } + [HEADERS.CONTENT_TYPE]: HEADERS.JSON, + }, }).send(data); } @@ -93,8 +96,8 @@ export default class Server implements IServerBridge { uri: `/${encodeURIComponent(name)}/${encodeURIComponent(version)}/-tag/latest`, method: 'PUT', headers: { - [HEADERS.CONTENT_TYPE]: HEADERS.JSON - } + [HEADERS.CONTENT_TYPE]: HEADERS.JSON, + }, }).send(data); } @@ -102,7 +105,7 @@ export default class Server implements IServerBridge { return this.request({ uri: `/${encodeURIComponent(name)}/-/${encodeURIComponent(filename)}`, method: 'GET', - encoding: null + encoding: null, }); } @@ -111,8 +114,8 @@ export default class Server implements IServerBridge { uri: `/${encodeURIComponent(name)}/-/${encodeURIComponent(filename)}/whatever`, method: 'PUT', headers: { - [HEADERS.CONTENT_TYPE]: HEADERS.OCTET_STREAM - } + [HEADERS.CONTENT_TYPE]: HEADERS.OCTET_STREAM, + }, }).send(data); } @@ -121,8 +124,8 @@ export default class Server implements IServerBridge { uri: `/${encodeURIComponent(name)}/-rev/whatever`, method: 'DELETE', headers: { - [HEADERS.CONTENT_TYPE]: HEADERS.JSON_CHARSET - } + [HEADERS.CONTENT_TYPE]: HEADERS.JSON_CHARSET, + }, }); } @@ -131,51 +134,47 @@ export default class Server implements IServerBridge { uri: `/${encodeURIComponent(name)}/-/${filename}/-rev/whatever`, method: 'DELETE', headers: { - [HEADERS.CONTENT_TYPE]: HEADERS.JSON_CHARSET - } + [HEADERS.CONTENT_TYPE]: HEADERS.JSON_CHARSET, + }, }); } + public addTag(name: string, tag: string, version: string) { return this.request({ uri: `/${encodeURIComponent(name)}/${encodeURIComponent(tag)}`, method: 'PUT', headers: { - [HEADERS.CONTENT_TYPE]: HEADERS.JSON - } + [HEADERS.CONTENT_TYPE]: HEADERS.JSON, + }, }).send(JSON.stringify(version)); } - public putTarballIncomplete( - pkgName: string, - filename: string, - data: any, - headerContentSize: number - ): Promise { - let promise = this.request({ + public putTarballIncomplete(pkgName: string, filename: string, data: any, headerContentSize: number): Promise { + const promise = this.request({ uri: `/${encodeURIComponent(pkgName)}/-/${encodeURIComponent(filename)}/whatever`, method: 'PUT', headers: { [HEADERS.CONTENT_TYPE]: HEADERS.OCTET_STREAM, - [HEADERS.CONTENT_LENGTH]: headerContentSize + [HEADERS.CONTENT_LENGTH]: headerContentSize, }, - timeout: 1000 + timeout: 1000, }); - promise.request(function (req) { + promise.request(function(req) { req.write(data); // it auto abort the request - setTimeout(function () { + setTimeout(function() { req.req.abort(); }, 20); }); - return new Promise(function (resolve, reject) { + return new Promise(function(resolve, reject) { promise - .then(function () { + .then(function() { reject(Error('no error')); }) - .catch(function (err) { + .catch(function(err) { if (err.code === 'ECONNRESET') { // @ts-ignore resolve(); @@ -195,9 +194,8 @@ export default class Server implements IServerBridge { public whoami() { return this.request({ uri: '/-/whoami' - }) - .status(HTTP_STATUS.OK) - .then(function (body) { + }).status(HTTP_STATUS.OK) + .then(function(body) { return body.username; }); } @@ -205,9 +203,8 @@ export default class Server implements IServerBridge { public ping() { return this.request({ uri: '/-/ping' - }) - .status(HTTP_STATUS.OK) - .then(function (body) { + }).status(HTTP_STATUS.OK) + .then(function(body) { return body; }); } @@ -217,8 +214,8 @@ export default class Server implements IServerBridge { uri: '/-/_debug', method: 'GET', headers: { - [HEADERS.CONTENT_TYPE]: HEADERS.JSON - } - }); + [HEADERS.CONTENT_TYPE]: HEADERS.JSON, + }, + }) } } diff --git a/packages/mock/src/server_process.ts b/packages/mock/src/server_process.ts new file mode 100644 index 000000000..9d17d6fba --- /dev/null +++ b/packages/mock/src/server_process.ts @@ -0,0 +1,82 @@ +import assert from 'assert'; +import {fork} from 'child_process'; + +import {HTTP_STATUS} from '@verdaccio/dev-commons'; + +import {CREDENTIALS} from './constants'; +import {IVerdaccioConfig, IServerBridge, IServerProcess} from './types'; +const defaultBinPath = require.resolve('verdaccio/bin/verdaccio'); + +export default class VerdaccioProcess implements IServerProcess { + + private bridge: IServerBridge; + private config: IVerdaccioConfig; + private childFork: any; + private isDebug: boolean; + private silence: boolean; + + public constructor(config: IVerdaccioConfig, + bridge: IServerBridge, + silence = true, + isDebug = false) { + this.config = config; + this.bridge = bridge; + this.silence = silence; + this.isDebug = isDebug; + } + + public init(verdaccioPath: string = defaultBinPath): Promise { + assert(typeof verdaccioPath === 'string', 'verdaccio bin path string is required.'); + return new Promise((resolve, reject) => { + this._start(verdaccioPath, resolve, reject); + }); + } + + private _start(verdaccioPath: string, resolve: Function, reject: Function) { + let childOptions = { + silent: this.silence + }; + + if (this.isDebug) { + // @ts-ignore + const debugPort = parseInt(this.config.port, 10) + 5; + + childOptions = Object.assign({}, childOptions, { + execArgv: [`--inspect=${debugPort}`], + env: { + "NODE_DEBUG": 'request' + } + }); + } + + const {configPath, port} = this.config; + this.childFork = fork(verdaccioPath, ['-c', configPath, '-l', port as string], childOptions); + + this.childFork.on('message', (msg) => { + // verdaccio_started is a message that comes from verdaccio in debug mode that notify has been started + if ('verdaccio_started' in msg) { + this.bridge.debug().status(HTTP_STATUS.OK).then((body) => { + this.bridge.auth(CREDENTIALS.user, CREDENTIALS.password) + .status(HTTP_STATUS.CREATED) + .body_ok(new RegExp(CREDENTIALS.user)) + .then(() => resolve([this, body.pid]), reject) + }, reject); + } + }); + + this.childFork.on('error', (err) => { + reject([err, this]) + }); + this.childFork.on('disconnect', (err) => { + reject([err, this]) + }); + this.childFork.on('exit', (err) => { + reject([err, this]) + }); + } + + public stop(): void { + return this.childFork.kill('SIGINT'); + } + +} diff --git a/test/types/index.ts b/packages/mock/src/types/index.ts similarity index 97% rename from test/types/index.ts rename to packages/mock/src/types/index.ts index 9985e2726..47a22c4ae 100644 --- a/test/types/index.ts +++ b/packages/mock/src/types/index.ts @@ -15,7 +15,7 @@ export interface IRequestPromise { } export interface IServerProcess { - init(): Promise; + init(binPath: string): Promise; stop(): void; } diff --git a/packages/mock/src/utils-test.ts b/packages/mock/src/utils-test.ts new file mode 100644 index 000000000..456f4934e --- /dev/null +++ b/packages/mock/src/utils-test.ts @@ -0,0 +1,41 @@ +import { Version } from "@verdaccio/types"; +import fs from "fs"; +import path from "path"; +import os from "os"; +import { pseudoRandomBytes } from 'crypto'; + +export function generateRamdonStorage() { + const tempStorage = pseudoRandomBytes(5).toString('hex'); + const tempRoot = fs.mkdtempSync(path.join(os.tmpdir(), '/verdaccio-test')); + + return path.join(tempRoot, tempStorage); +} + +export function generateNewVersion( + pkgName: string, + version: string, + shashum = '238e7641e59508dc9c20eb4ad37a8aa57ab777b4'): Version { + // $FlowFixMe + return { + "name": pkgName, + "version": version, + "description": "", + "main": "index.js", + "dependencies": { + "test": "^1.4.1" + }, + "author": "", + "license": "ISC", + "readme": "ERROR: No README data found!", + "_id": `${pkgName}@${version}`, + "_npmVersion": "5.5.1", + "_npmUser": { + "name": "Foo" + }, + "dist": { + "integrity": "sha512-zVEqt1JUCOPsash9q4wMkJEDPD+QCx95TRhQII+JnoS31uBUKoZxhzvvUJCcLVy2CQG4QdwXARU7dYWPnrwhGg==", + "shasum": shashum, + "tarball": `http:\/\/localhost:4873\/${pkgName}\/-\/${pkgName}-${version}.tgz` + } + } +} diff --git a/test/lib/verdaccio-server.ts b/packages/mock/src/verdaccio-server.ts similarity index 89% rename from test/lib/verdaccio-server.ts rename to packages/mock/src/verdaccio-server.ts index adad98fd8..279f603ff 100644 --- a/test/lib/verdaccio-server.ts +++ b/packages/mock/src/verdaccio-server.ts @@ -1,6 +1,7 @@ -import { IVerdaccioConfig } from '../types'; +import {IVerdaccioConfig} from './types'; export class VerdaccioConfig implements IVerdaccioConfig { + public storagePath: string; public configPath: string; public domainPath: string; diff --git a/packages/mock/test/config/yaml/default.yaml b/packages/mock/test/config/yaml/default.yaml new file mode 100644 index 000000000..e5b81f678 --- /dev/null +++ b/packages/mock/test/config/yaml/default.yaml @@ -0,0 +1,38 @@ +storage: ./storage_default_storage + +uplinks: + npmjs: + url: http://localhost:4873/ +packages: + '@*/*': + access: $all + publish: $all + proxy: npmjs + 'forbidden-place': + access: nobody + publish: $all + 'react': + access: $all + publish: $all + proxy: npmjs + 'corrupted-package': + access: $all + publish: $all + proxy: npmjs + 'jquery': + access: $all + publish: $all + proxy: npmjs + 'auth-package': + access: $authenticated + publish: $authenticated + 'vue': + access: $authenticated + publish: $authenticated + proxy: npmjs + '*': + access: $all + publish: $all + proxy: npmjs +logs: + - { type: stdout, format: pretty, level: warn } diff --git a/packages/mock/test/request.spec.ts b/packages/mock/test/request.spec.ts new file mode 100644 index 000000000..1b811745a --- /dev/null +++ b/packages/mock/test/request.spec.ts @@ -0,0 +1,100 @@ +import _ from 'lodash'; +import {HTTP_STATUS} from '@verdaccio/dev-commons'; +import { VerdaccioError } from '@verdaccio/commons-api'; + +import smartRequest, {PromiseAssert} from '../src/request'; +import {mockServer} from '../src/mock'; +import { IRequestPromise } from '../src/types'; + +describe('Request Functional', () => { + jest.setTimeout(20000); + const mockServerPort = 55547; + const domainTest = `http://localhost:${55547}`; + const restTest = `${domainTest}/jquery`; + let mockRegistry; + + describe('Request Functional', () => { + test('PromiseAssert', () => { + expect(_.isFunction(smartRequest)).toBeTruthy(); + }); + + test('basic resolve', (done) => { + const requestPromise: IRequestPromise = new PromiseAssert(resolve => { + resolve(1); + }); + // @ts-ignore + requestPromise.then((result) => { + expect(result).toBe(1); + done(); + }); + }); + }); + + describe('smartRequest Rest', () => { + beforeAll(async () => { + const binPath = require.resolve('verdaccio/bin/verdaccio'); + mockRegistry = await mockServer(mockServerPort).init(binPath); + }); + + afterAll(function(done) { + const [registry, pid] = mockRegistry; + registry.stop(); + console.log(`registry ${pid} has been stopped`); + + done(); + }); + + test('basic rest', (done) => { + const options: any = { + url: restTest, + method: 'GET' + }; + + smartRequest(options).then((result)=> { + expect(_.isString(result)).toBeTruthy(); + done(); + }) + }); + + describe('smartRequest Status', () => { + + test('basic check status 200', (done) => { + const options: any = { + url: restTest, + method: 'GET' + }; + // @ts-ignore + smartRequest(options).status(HTTP_STATUS.OK).then((result)=> { + expect(JSON.parse(result).name).toBe('jquery'); + done(); + }) + }); + + test('basic ping status and empty response', (done) => { + const options: any = { + url: `${domainTest}/-/ping`, + method: 'GET' + }; + // @ts-ignore + smartRequest(options).status(HTTP_STATUS.OK).then((result)=> { + expect(JSON.parse((result))).toEqual({}); + done(); + }) + }); + + test('basic check status 404', (done) => { + const options: any = { + url: 'http://www.google.fake', + method: 'GET' + }; + // @ts-ignore + smartRequest(options).status(HTTP_STATUS.NOT_FOUND).then(() => { + // we do not intent to resolve this + }, (error: VerdaccioError) => { + expect(error.code).toBe('ENOTFOUND'); + done(); + }) + }); + }); + }); +}); diff --git a/packages/mock/tsconfig.json b/packages/mock/tsconfig.json new file mode 100644 index 000000000..6531bd3e4 --- /dev/null +++ b/packages/mock/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./build" + }, + "include": ["src/**/*"], + "exclude": ["src/**/*.test.ts"] +} diff --git a/packages/node-api/.babelrc b/packages/node-api/.babelrc new file mode 100644 index 000000000..28397a1bd --- /dev/null +++ b/packages/node-api/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": [["@verdaccio"]] +} diff --git a/packages/node-api/jest.config.js b/packages/node-api/jest.config.js new file mode 100644 index 000000000..45146c37f --- /dev/null +++ b/packages/node-api/jest.config.js @@ -0,0 +1,9 @@ +module.exports = { + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'], + transform: { + '^.+\\.(js|jsx|ts|tsx)$': 'babel-jest', + }, + verbose: true, + collectCoverage: true, + coveragePathIgnorePatterns: ['node_modules', 'fixtures'], +}; diff --git a/packages/node-api/package.json b/packages/node-api/package.json new file mode 100644 index 000000000..f7c59c891 --- /dev/null +++ b/packages/node-api/package.json @@ -0,0 +1,35 @@ +{ + "name": "@verdaccio/node-api", + "version": "5.0.0-alpha.0", + "description": "node API", + "main": "build/index.js", + "types": "build/index.d.ts", + "author": { + "name": "Juan Picado", + "email": "juanpicado19@gmail.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/verdaccio/verdaccio" + }, + "homepage": "https://verdaccio.org", + "scripts": { + "clean": "rimraf ./build", + "type-check": "tsc --noEmit", + "build:types": "tsc --emitDeclarationOnly --declaration true", + "build:js": "cross-env BABEL_ENV=registry babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "build": "npm run build:js && npm run build:types", + "test": "cross-env NODE_ENV=test BABEL_ENV=test jest" + }, + "license": "MIT", + "dependencies": { + "@verdaccio/dev-commons": "5.0.0-alpha.0", + "@verdaccio/logger": "5.0.0-alpha.0", + "@verdaccio/server": "5.0.0-alpha.0", + "@verdaccio/utils": "5.0.0-alpha.0" + }, + "publishConfig": { + "access": "public" + }, + "gitHead": "7c246ede52ff717707fcae66dd63fc4abd536982" +} diff --git a/packages/node-api/src/bootstrap.d.ts b/packages/node-api/src/bootstrap.d.ts new file mode 100644 index 000000000..e19e54ed1 --- /dev/null +++ b/packages/node-api/src/bootstrap.d.ts @@ -0,0 +1,13 @@ +import { Application } from 'express'; +import { Callback } from '@verdaccio/types'; +/** + * Trigger the server after configuration has been loaded. + * @param {Object} config + * @param {Object} cliArguments + * @param {String} configPath + * @param {String} pkgVersion + * @param {String} pkgName + */ +declare function startVerdaccio(config: any, cliListen: string, configPath: string, pkgVersion: string, pkgName: string, callback: Callback): void; +declare function listenDefaultCallback(webServer: Application, addr: any, pkgName: string, pkgVersion: string): void; +export { startVerdaccio, listenDefaultCallback }; diff --git a/src/lib/bootstrap.ts b/packages/node-api/src/bootstrap.ts similarity index 61% rename from src/lib/bootstrap.ts rename to packages/node-api/src/bootstrap.ts index b49f427b1..c89549437 100644 --- a/src/lib/bootstrap.ts +++ b/packages/node-api/src/bootstrap.ts @@ -1,27 +1,34 @@ +import { assign, isObject, isFunction } from 'lodash'; import URL from 'url'; import fs from 'fs'; import http from 'http'; import https from 'https'; -import constants from 'constants'; -import express from 'express'; -import { assign, isObject, isFunction } from 'lodash'; - -import { Callback, ConfigWithHttps, HttpsConfKeyCert, HttpsConfPfx } from '@verdaccio/types'; import { Application } from 'express'; -import endPointAPI from '../api/index'; -import { API_ERROR, certPem, csrPem, keyPem } from './constants'; -import { getListListenAddresses, resolveConfigPath } from './cli/utils'; +import constants from 'constants'; -const logger = require('./logger'); +import { Callback, ConfigWithHttps, HttpsConfKeyCert, HttpsConfPfx } from '@verdaccio/types'; +import { API_ERROR, certPem, csrPem, keyPem } from '@verdaccio/dev-commons'; +import endPointAPI from '@verdaccio/server'; +import { logger} from '@verdaccio/logger'; -function displayExperimentsInfoBox(experiments) { - const experimentList = Object.keys(experiments); - if (experimentList.length >= 1) { - logger.logger.warn('⚠️ experiments are enabled, we recommend do not use experiments in production, comment out this section to disable it'); - experimentList.forEach((experiment) => { - logger.logger.warn(` - support for ${experiment} ${experiments[experiment] ? 'is enabled' : ' is disabled'}`); - }); +import { getListListenAddresses, resolveConfigPath } from './cli-utils'; +import {displayExperimentsInfoBox} from "./experiments"; + +function launchServer(app, cliListen: string, configPath: string, pkgVersion: string, pkgName: string, callback: Callback): void { + let webServer; + if (addr.proto === 'https') { + webServer = handleHTTPS(app, configPath, config); + } else { + // http + webServer = http.createServer(app); } + if (config.server && typeof config.server.keepAliveTimeout !== 'undefined' && config.server.keepAliveTimeout !== 'null') { + // library definition for node is not up to date (doesn't contain recent 8.0 changes) + webServer.keepAliveTimeout = config.server.keepAliveTimeout * 1000; + } + unlinkAddressPath(addr); + + callback(webServer, addr, pkgName, pkgVersion); } /** @@ -42,25 +49,11 @@ function startVerdaccio(config: any, cliListen: string, configPath: string, pkgV } endPointAPI(config).then((app): void => { - const addresses = getListListenAddresses(cliListen, config.listen); + const addresses = getListListenAddresses(cliListen, config.listen); - addresses.forEach(function (addr): void { - let webServer; - if (addr.proto === 'https') { - webServer = handleHTTPS(app, configPath, config); - } else { - // http - webServer = http.createServer(app); - } - if (config.server && typeof config.server.keepAliveTimeout !== 'undefined' && config.server.keepAliveTimeout !== 'null') { - // library definition for node is not up to date (doesn't contain recent 8.0 changes) - webServer.keepAliveTimeout = config.server.keepAliveTimeout * 1000; - } - unlinkAddressPath(addr); - - callback(webServer, addr, pkgName, pkgVersion); - }); - }); + addresses.forEach(addr =>launchServer(app, addr, config, configPath, pkgName, pkgVersion, callback)); + } + ); } function unlinkAddressPath(addr) { @@ -70,7 +63,7 @@ function unlinkAddressPath(addr) { } function logHTTPSWarning(storageLocation) { - logger.logger.fatal( + logger.fatal( [ 'You have enabled HTTPS and need to specify either ', ' "https.key" and "https.cert" or ', @@ -130,42 +123,31 @@ function handleHTTPS(app: express.Application, configPath: string, config: Confi return https.createServer(httpsOptions, app); } catch (err) { // catch errors related to certificate loading - logger.logger.fatal({ err: err }, 'cannot create server: @{err.message}'); + logger.fatal({ err: err }, 'cannot create server: @{err.message}'); process.exit(2); } } function listenDefaultCallback(webServer: Application, addr: any, pkgName: string, pkgVersion: string): void { - const server = webServer - .listen(addr.port || addr.path, addr.host, (): void => { - // send a message for tests - if (isFunction(process.send)) { - process.send({ - verdaccio_started: true, - }); + webServer + .listen( + addr.port || addr.path, + addr.host, + (): void => { + // send a message for tests + if (isFunction(process.send)) { + process.send({ + verdaccio_started: true, + }); + } } - }) - .on('error', function (err): void { - logger.logger.fatal({ err: err }, 'cannot create server: @{err.message}'); + ) + .on('error', function(err): void { + logger.fatal({ err: err }, 'cannot create server: @{err.message}'); process.exit(2); }); - function handleShutdownGracefully() { - logger.logger.fatal('received shutdown signal - closing server gracefully...'); - server.close(() => { - logger.logger.info('server closed.'); - process.exit(0); - }); - } - - // handle shutdown signals nicely when environment says so - if (process.env.VERDACCIO_HANDLE_KILL_SIGNALS === 'true') { - process.on('SIGINT', handleShutdownGracefully); - process.on('SIGTERM', handleShutdownGracefully); - process.on('SIGHUP', handleShutdownGracefully); - } - - logger.logger.warn( + logger.warn( { addr: addr.path ? URL.format({ diff --git a/src/lib/cli/utils.ts b/packages/node-api/src/cli-utils.ts similarity index 91% rename from src/lib/cli/utils.ts rename to packages/node-api/src/cli-utils.ts index 7c61e4d46..2d7f4c4e7 100644 --- a/src/lib/cli/utils.ts +++ b/packages/node-api/src/cli-utils.ts @@ -1,10 +1,10 @@ import path from 'path'; import semver from 'semver'; -import { parseAddress } from '../utils'; -import { DEFAULT_PORT } from '../constants'; +import { parseAddress } from '@verdaccio/utils'; +import { DEFAULT_PORT } from '@verdaccio/dev-commons'; -const logger = require('../logger'); +const logger = require('@verdaccio/logger'); export const resolveConfigPath = function (storageLocation: string, file: string) { return path.resolve(path.dirname(storageLocation), file); diff --git a/packages/node-api/src/experiments.ts b/packages/node-api/src/experiments.ts new file mode 100644 index 000000000..7e31f619c --- /dev/null +++ b/packages/node-api/src/experiments.ts @@ -0,0 +1,11 @@ +const logger = require('@verdaccio/logger'); + +export function displayExperimentsInfoBox(experiments) { + const experimentList = Object.keys(experiments); + if (experimentList.length >= 1) { + logger.logger.warn('⚠️ experiments are enabled, we recommend do not use experiments in production, comment out this section to disable it'); + experimentList.forEach(experiment => { + logger.logger.warn(` - support for ${experiment} ${experiments[experiment] ? 'is enabled' : ' is disabled'}`); + }); + } +} diff --git a/packages/node-api/src/https.ts b/packages/node-api/src/https.ts new file mode 100644 index 000000000..d1cfe61c5 --- /dev/null +++ b/packages/node-api/src/https.ts @@ -0,0 +1,34 @@ +import { API_ERROR, certPem, csrPem, keyPem } from '@verdaccio/dev-commons'; + +import {resolveConfigPath} from "./cli-utils"; + +const logger = require('@verdaccio/logger'); + +export function logHTTPSWarning(storageLocation) { + logger.logger.fatal( + [ + 'You have enabled HTTPS and need to specify either ', + ' "https.key", "https.cert" and "https.ca" or ', + ' "https.pfx" and optionally "https.passphrase" ', + 'to run https server', + '', + // commands are borrowed from node.js docs + 'To quickly create self-signed certificate, use:', + ' $ openssl genrsa -out ' + resolveConfigPath(storageLocation, keyPem) + ' 2048', + ' $ openssl req -new -sha256 -key ' + resolveConfigPath(storageLocation, keyPem) + ' -out ' + resolveConfigPath(storageLocation, csrPem), + ' $ openssl x509 -req -in ' + + resolveConfigPath(storageLocation, csrPem) + + ' -signkey ' + + resolveConfigPath(storageLocation, keyPem) + + ' -out ' + + resolveConfigPath(storageLocation, certPem), + '', + 'And then add to config file (' + storageLocation + '):', + ' https:', + ` key: ${resolveConfigPath(storageLocation, keyPem)}`, + ` cert: ${resolveConfigPath(storageLocation, certPem)}`, + ` ca: ${resolveConfigPath(storageLocation, csrPem)}`, + ].join('\n') + ); + process.exit(2); +} diff --git a/packages/node-api/src/index.ts b/packages/node-api/src/index.ts new file mode 100644 index 000000000..af022c1b9 --- /dev/null +++ b/packages/node-api/src/index.ts @@ -0,0 +1 @@ +export { listenDefaultCallback, startVerdaccio } from './bootstrap'; diff --git a/test/unit/modules/cli/cli.spec.ts b/packages/node-api/test/node-api.spec.ts similarity index 52% rename from test/unit/modules/cli/cli.spec.ts rename to packages/node-api/test/node-api.spec.ts index eaadc5986..0753d4aa3 100644 --- a/test/unit/modules/cli/cli.spec.ts +++ b/packages/node-api/test/node-api.spec.ts @@ -4,14 +4,16 @@ import selfsigned from 'selfsigned'; import os from 'os'; import fs from 'fs'; -import startServer from '../../../../src'; -import config from '../../partials/config'; -import { DEFAULT_DOMAIN, DEFAULT_PORT, DEFAULT_PROTOCOL } from '../../../../src/lib/constants'; -import { getListListenAddresses } from '../../../../src/lib/cli/utils'; -import { parseConfigFile } from '../../../../src/lib/utils'; -import { logger } from '../../../../src/lib/logger'; +import { configExample } from '@verdaccio/mock'; +import {DEFAULT_DOMAIN, DEFAULT_PORT, DEFAULT_PROTOCOL} from '@verdaccio/dev-commons'; +import {parseConfigFile} from '@verdaccio/utils'; -jest.mock('../../../../src/lib/logger', () => ({ +import { getListListenAddresses } from '../src/cli-utils'; +import { logger } from '@verdaccio/logger'; + +import { startVerdaccio } from '../src'; + +jest.mock('@verdaccio/logger', () => ({ setup: jest.fn(), logger: { child: jest.fn(), @@ -19,13 +21,14 @@ jest.mock('../../../../src/lib/logger', () => ({ trace: jest.fn(), warn: jest.fn(), error: jest.fn(), - fatal: jest.fn(), - }, + fatal: jest.fn() + } })); describe('startServer via API', () => { + const parseConfigurationFile = (name) => { - return parseConfigFile(path.join(__dirname, `../../partials/config/yaml/${name}.yaml`)); + return parseConfigFile(path.join(__dirname, `./partials/config/yaml/${name}.yaml`)); }; describe('startServer launcher', () => { @@ -35,18 +38,19 @@ describe('startServer via API', () => { const version = '1.0.0'; const port = '6000'; - await startServer(config(), port, store, version, serverName, (webServer, addrs, pkgName, pkgVersion) => { - expect(webServer).toBeDefined(); - expect(addrs).toBeDefined(); - expect(addrs.proto).toBe(DEFAULT_PROTOCOL); - expect(addrs.host).toBe(DEFAULT_DOMAIN); - expect(addrs.port).toBe(port); - expect(pkgName).toBeDefined(); - expect(pkgVersion).toBeDefined(); - expect(pkgVersion).toBe(version); - expect(pkgName).toBe(serverName); - done(); - }); + await startVerdaccio(configExample(), port, store, version, serverName, + (webServer, addrs, pkgName, pkgVersion) => { + expect(webServer).toBeDefined(); + expect(addrs).toBeDefined(); + expect(addrs.proto).toBe(DEFAULT_PROTOCOL); + expect(addrs.host).toBe(DEFAULT_DOMAIN); + expect(addrs.port).toBe(port); + expect(pkgName).toBeDefined(); + expect(pkgVersion).toBeDefined(); + expect(pkgVersion).toBe(version); + expect(pkgName).toBe(serverName); + done(); + }); }); test('should set keepAliveTimeout to 0 seconds', async (done) => { @@ -55,19 +59,20 @@ describe('startServer via API', () => { const version = '1.0.0'; const port = '6100'; - await startServer(config(parseConfigurationFile('server/keepalivetimeout-0')), port, store, version, serverName, (webServer, addrs, pkgName, pkgVersion) => { - expect(webServer).toBeDefined(); - expect(webServer.keepAliveTimeout).toBeDefined(); - expect(webServer.keepAliveTimeout).toBe(0); - expect(addrs).toBeDefined(); - expect(addrs.proto).toBe(DEFAULT_PROTOCOL); - expect(addrs.host).toBe(DEFAULT_DOMAIN); - expect(addrs.port).toBe(port); - expect(pkgName).toBeDefined(); - expect(pkgVersion).toBeDefined(); - expect(pkgVersion).toBe(version); - expect(pkgName).toBe(serverName); - done(); + await startVerdaccio(configExample(parseConfigurationFile('server/keepalivetimeout-0')), port, store, version, serverName, + (webServer, addrs, pkgName, pkgVersion) => { + expect(webServer).toBeDefined(); + expect(webServer.keepAliveTimeout).toBeDefined(); + expect(webServer.keepAliveTimeout).toBe(0); + expect(addrs).toBeDefined(); + expect(addrs.proto).toBe(DEFAULT_PROTOCOL); + expect(addrs.host).toBe(DEFAULT_DOMAIN); + expect(addrs.port).toBe(port); + expect(pkgName).toBeDefined(); + expect(pkgVersion).toBeDefined(); + expect(pkgVersion).toBe(version); + expect(pkgName).toBe(serverName); + done(); }); }); @@ -77,19 +82,20 @@ describe('startServer via API', () => { const version = '1.0.0'; const port = '6200'; - await startServer(config(parseConfigurationFile('server/keepalivetimeout-60')), port, store, version, serverName, (webServer, addrs, pkgName, pkgVersion) => { - expect(webServer).toBeDefined(); - expect(webServer.keepAliveTimeout).toBeDefined(); - expect(webServer.keepAliveTimeout).toBe(60000); - expect(addrs).toBeDefined(); - expect(addrs.proto).toBe(DEFAULT_PROTOCOL); - expect(addrs.host).toBe(DEFAULT_DOMAIN); - expect(addrs.port).toBe(port); - expect(pkgName).toBeDefined(); - expect(pkgVersion).toBeDefined(); - expect(pkgVersion).toBe(version); - expect(pkgName).toBe(serverName); - done(); + await startVerdaccio(configExample(parseConfigurationFile('server/keepalivetimeout-60')), port, store, version, serverName, + (webServer, addrs, pkgName, pkgVersion) => { + expect(webServer).toBeDefined(); + expect(webServer.keepAliveTimeout).toBeDefined(); + expect(webServer.keepAliveTimeout).toBe(60000); + expect(addrs).toBeDefined(); + expect(addrs.proto).toBe(DEFAULT_PROTOCOL); + expect(addrs.host).toBe(DEFAULT_DOMAIN); + expect(addrs.port).toBe(port); + expect(pkgName).toBeDefined(); + expect(pkgVersion).toBeDefined(); + expect(pkgVersion).toBe(version); + expect(pkgName).toBe(serverName); + done(); }); }); @@ -99,38 +105,44 @@ describe('startServer via API', () => { const version = '1.0.0'; const port = '6300'; - await startServer(config(parseConfigurationFile('server/keepalivetimeout-undefined')), port, store, version, serverName, (webServer, addrs, pkgName, pkgVersion) => { - expect(webServer).toBeDefined(); - expect(webServer.keepAliveTimeout).toBeDefined(); - expect(webServer.keepAliveTimeout).toBe(5000); - expect(addrs).toBeDefined(); - expect(addrs.proto).toBe(DEFAULT_PROTOCOL); - expect(addrs.host).toBe(DEFAULT_DOMAIN); - expect(addrs.port).toBe(port); - expect(pkgName).toBeDefined(); - expect(pkgVersion).toBeDefined(); - expect(pkgVersion).toBe(version); - expect(pkgName).toBe(serverName); - done(); + await startVerdaccio(configExample(parseConfigurationFile('server/keepalivetimeout-undefined')), port, store, version, serverName, + (webServer, addrs, pkgName, pkgVersion) => { + expect(webServer).toBeDefined(); + expect(webServer.keepAliveTimeout).toBeDefined(); + expect(webServer.keepAliveTimeout).toBe(5000); + expect(addrs).toBeDefined(); + expect(addrs.proto).toBe(DEFAULT_PROTOCOL); + expect(addrs.host).toBe(DEFAULT_DOMAIN); + expect(addrs.port).toBe(port); + expect(pkgName).toBeDefined(); + expect(pkgVersion).toBeDefined(); + expect(pkgVersion).toBe(version); + expect(pkgName).toBe(serverName); + done(); }); }); - test('should provide all HTTPS server fails', async () => { + test('should provide all HTTPS server fails', async (done) => { const store = path.join(__dirname, 'partials/store'); const serverName = 'verdaccio-test'; const version = '1.0.0'; const address = 'https://www.domain.com:443'; - // @ts-ignore - jest.spyOn(process, 'exit').mockImplementation(() => {}); + const realProcess = process; - const conf = config(); + const conf = configExample(); conf.https = {}; // save process to catch exist - - startServer(conf, address, store, version, serverName, () => { + const exitMock = jest.fn(); + // @ts-ignore + global.process = { ...realProcess, exit: exitMock }; + await startVerdaccio(conf, address, store, version, serverName, () => { expect(logger.fatal).toHaveBeenCalled(); expect(logger.fatal).toHaveBeenCalledTimes(2); + done(); }); + expect(exitMock).toHaveBeenCalledWith(2); + // restore process + global.process = realProcess; }); test('should start a https server with key and cert', async (done) => { @@ -150,28 +162,31 @@ describe('startServer via API', () => { cert: certPath, }; - await startServer(conf, address, store, version, serverName, (webServer, addrs) => { - expect(webServer).toBeDefined(); - expect(addrs).toBeDefined(); - expect(addrs.proto).toBe('https'); - done(); + await startServer(conf, address, store, version, serverName, + (webServer, addrs) => { + expect(webServer).toBeDefined(); + expect(addrs).toBeDefined(); + expect(addrs.proto).toBe('https'); + done(); }); - }); + }) test('should fails if config is missing', async () => { try { // @ts-ignore - await startServer(); + await startVerdaccio(); } catch (e) { expect(e.message).toEqual('config file must be an object'); } }); + }); describe('getListListenAddresses test', () => { + test('should return no address if a single address is wrong', () => { // @ts-ignore - const addrs = getListListenAddresses('wrong'); + const addrs = getListListenAddresses("wrong"); expect(_.isArray(addrs)).toBeTruthy(); expect(addrs).toHaveLength(0); @@ -179,7 +194,7 @@ describe('startServer via API', () => { test('should return no address if a two address are wrong', () => { // @ts-ignore - const addrs = getListListenAddresses(['wrong', 'same-wrong']); + const addrs = getListListenAddresses(["wrong", "same-wrong"]); expect(_.isArray(addrs)).toBeTruthy(); expect(addrs).toHaveLength(0); @@ -225,5 +240,7 @@ describe('startServer via API', () => { // @ts-ignore expect(addrs.port).toEqual(initPort); }); + }); + }); diff --git a/test/unit/partials/config/yaml/server/keepalivetimeout-0.yaml b/packages/node-api/test/partials/config/yaml/server/keepalivetimeout-0.yaml similarity index 100% rename from test/unit/partials/config/yaml/server/keepalivetimeout-0.yaml rename to packages/node-api/test/partials/config/yaml/server/keepalivetimeout-0.yaml diff --git a/test/unit/partials/config/yaml/server/keepalivetimeout-60.yaml b/packages/node-api/test/partials/config/yaml/server/keepalivetimeout-60.yaml similarity index 100% rename from test/unit/partials/config/yaml/server/keepalivetimeout-60.yaml rename to packages/node-api/test/partials/config/yaml/server/keepalivetimeout-60.yaml diff --git a/test/unit/partials/config/yaml/server/keepalivetimeout-undefined.yaml b/packages/node-api/test/partials/config/yaml/server/keepalivetimeout-undefined.yaml similarity index 100% rename from test/unit/partials/config/yaml/server/keepalivetimeout-undefined.yaml rename to packages/node-api/test/partials/config/yaml/server/keepalivetimeout-undefined.yaml diff --git a/packages/node-api/tsconfig.json b/packages/node-api/tsconfig.json new file mode 100644 index 000000000..6531bd3e4 --- /dev/null +++ b/packages/node-api/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./build" + }, + "include": ["src/**/*"], + "exclude": ["src/**/*.test.ts"] +} diff --git a/packages/proxy/.babelrc b/packages/proxy/.babelrc new file mode 100644 index 000000000..28397a1bd --- /dev/null +++ b/packages/proxy/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": [["@verdaccio"]] +} diff --git a/packages/proxy/jest.config.js b/packages/proxy/jest.config.js new file mode 100644 index 000000000..45146c37f --- /dev/null +++ b/packages/proxy/jest.config.js @@ -0,0 +1,9 @@ +module.exports = { + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'], + transform: { + '^.+\\.(js|jsx|ts|tsx)$': 'babel-jest', + }, + verbose: true, + collectCoverage: true, + coveragePathIgnorePatterns: ['node_modules', 'fixtures'], +}; diff --git a/packages/proxy/package.json b/packages/proxy/package.json new file mode 100644 index 000000000..153550ad0 --- /dev/null +++ b/packages/proxy/package.json @@ -0,0 +1,39 @@ +{ + "name": "@verdaccio/proxy", + "version": "5.0.0-alpha.0", + "description": "verdaccio proxy fetcher", + "main": "./build/index.js", + "types": "build/index.d.ts", + "author": { + "name": "Juan Picado", + "email": "juanpicado19@gmail.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/verdaccio/verdaccio" + }, + "license": "MIT", + "homepage": "https://verdaccio.org", + "scripts": { + "clean": "rimraf ./build", + "test": "cross-env NODE_ENV=test BABEL_ENV=test jest", + "type-check": "tsc --noEmit", + "build:types": "tsc --emitDeclarationOnly --declaration true", + "build:js": "cross-env BABEL_ENV=registry babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "build": "npm run build:js && npm run build:types" + }, + "dependencies": { + "@verdaccio/dev-commons": "5.0.0-alpha.0", + "@verdaccio/local-storage": "^9.0.0", + "@verdaccio/logger": "5.0.0-alpha.0", + "@verdaccio/streams": "^9.3.0", + "@verdaccio/utils": "5.0.0-alpha.0", + "JSONStream": "1.3.5", + "request": "2.87.0" + }, + "devDependencies": { + "@verdaccio/dev-types": "5.0.0-alpha.0", + "@verdaccio/types": "^8.5.2" + }, + "gitHead": "7c246ede52ff717707fcae66dd63fc4abd536982" +} diff --git a/packages/proxy/src/index.ts b/packages/proxy/src/index.ts new file mode 100644 index 000000000..53ec7d028 --- /dev/null +++ b/packages/proxy/src/index.ts @@ -0,0 +1,2 @@ +export * from './up-storage'; +export * from './uplink-util'; diff --git a/src/lib/up-storage.ts b/packages/proxy/src/up-storage.ts similarity index 86% rename from src/lib/up-storage.ts rename to packages/proxy/src/up-storage.ts index 904ccc867..7cb9335f5 100644 --- a/src/lib/up-storage.ts +++ b/packages/proxy/src/up-storage.ts @@ -1,20 +1,17 @@ import zlib from 'zlib'; -import Stream from 'stream'; -import URL, { UrlWithStringQuery } from 'url'; import JSONStream from 'JSONStream'; -import buildDebug from 'debug'; import _ from 'lodash'; import request from 'request'; +import Stream, { Readable } from 'stream'; +import URL, {UrlWithStringQuery} from 'url'; +import { parseInterval, isObject, ErrorCode, buildToken } from '@verdaccio/utils'; import { ReadTarball } from '@verdaccio/streams'; +import { ERROR_CODE, TOKEN_BASIC, TOKEN_BEARER, HEADERS, HTTP_STATUS, API_ERROR, HEADER_TYPE, CHARACTER_ENCODING } from '@verdaccio/dev-commons'; import { Config, Callback, Headers, Logger, Package } from '@verdaccio/types'; -import { IProxy, UpLinkConfLocal } from '../../types'; -import { parseInterval, isObject, ErrorCode, buildToken } from './utils'; -import { logger } from './logger'; -import { ERROR_CODE, TOKEN_BASIC, TOKEN_BEARER, HEADERS, HTTP_STATUS, API_ERROR, HEADER_TYPE, CHARACTER_ENCODING } from './constants'; +import { IProxy, UpLinkConfLocal } from '@verdaccio/dev-types'; +const LoggerApi = require('@verdaccio/logger'); -const debug = buildDebug('verdaccio:up-storage'); - -const encode = function (thing): string { +const encode = function(thing): string { return encodeURIComponent(thing).replace(/^%40/, '@'); }; @@ -65,7 +62,7 @@ class ProxyStorage implements IProxy { this.failed_requests = 0; this.userAgent = mainConfig.user_agent; this.ca = config.ca; - this.logger = logger; + this.logger = LoggerApi.logger.child({ sub: 'out' }); this.server_id = mainConfig.server_id; this.url = URL.parse(this.config.url); @@ -94,7 +91,7 @@ class ProxyStorage implements IProxy { this.agent_options = setConfig(this.config, 'agent_options', { keepAlive: true, maxSockets: 40, - maxFreeSockets: 10, + maxFreeSockets: 10 }); } @@ -110,16 +107,16 @@ class ProxyStorage implements IProxy { if (this._statusCheck() === false) { const streamRead = new Stream.Readable(); - process.nextTick(function (): void { + process.nextTick(function(): void { if (cb) { cb(ErrorCode.getInternalError(API_ERROR.UPLINK_OFFLINE)); } streamRead.emit('error', ErrorCode.getInternalError(API_ERROR.UPLINK_OFFLINE)); }); // $FlowFixMe - streamRead._read = function (): void {}; + streamRead._read = function(): void {}; // preventing 'Uncaught, unspecified "error" event' - streamRead.on('error', function (): void {}); + streamRead.on('error', function(): void {}); return streamRead; } @@ -146,64 +143,63 @@ class ProxyStorage implements IProxy { headers['Content-Type'] = headers['Content-Type'] || HEADERS.JSON; } - const requestCallback = cb - ? function (err, res, body): void { - let error; - const responseLength = err ? 0 : body.length; - // $FlowFixMe - processBody(); - logActivity(); - // $FlowFixMe - cb(err, res, body); + const requestCallback = cb ? function(err, res, body): void { + let error; + const responseLength = err ? 0 : body.length; + // $FlowFixMe + processBody(); + logActivity(); + // $FlowFixMe + cb(err, res, body); - /** - * Perform a decode. - */ - function processBody(): void { - if (err) { - error = err.message; - return; - } + /** + * Perform a decode. + */ + function processBody(): void { + if (err) { + error = err.message; + return; + } - if (options.json && res.statusCode < 300) { - try { - // $FlowFixMe - body = JSON.parse(body.toString(CHARACTER_ENCODING.UTF8)); - } catch (_err) { - body = {}; - err = _err; - error = err.message; - } - } - - if (!err && isObject(body)) { - if (_.isString(body.error)) { - error = body.error; - } - } - } - /** - * Perform a log. - */ - function logActivity(): void { - let message = "@{!status}, req: '@{request.method} @{request.url}'"; - message += error ? ', error: @{!error}' : ', bytes: @{bytes.in}/@{bytes.out}'; - self.logger.http( - { - err: err || undefined, // if error is null/false change this to undefined so it wont log - request: { method: method, url: uri }, - status: res != null ? res.statusCode : 'ERR', - error: error, - bytes: { - in: json ? json.length : 0, - out: responseLength || 0, - }, - }, - message - ); + if (options.json && res.statusCode < 300) { + try { + // $FlowFixMe + body = JSON.parse(body.toString(CHARACTER_ENCODING.UTF8)); + } catch (_err) { + body = {}; + err = _err; + error = err.message; } } - : undefined; + + if (!err && isObject(body)) { + if (_.isString(body.error)) { + error = body.error; + } + } + } + /** + * Perform a log. + */ + function logActivity(): void { + let message = "@{!status}, req: '@{request.method} @{request.url}'"; + message += error ? ', error: @{!error}' : ', bytes: @{bytes.in}/@{bytes.out}'; + self.logger.warn( + { + err: err || undefined, // if error is null/false change this to undefined so it wont log + request: { method: method, url: uri }, + level: 35, // http + status: res != null ? res.statusCode : 'ERR', + error: error, + bytes: { + in: json ? json.length : 0, + out: responseLength || 0, + }, + }, + message + ); + } + } : undefined; let requestOptions = { url: uri, @@ -220,14 +216,14 @@ class ProxyStorage implements IProxy { if (this.ca) { requestOptions = Object.assign({}, requestOptions, { - ca: this.ca, + ca: this.ca }); } const req = request(requestOptions, requestCallback); let statusCalled = false; - req.on('response', function (res): void { + req.on('response', function(res): void { // FIXME: _verdaccio_aborted seems not used // @ts-ignore if (!req._verdaccio_aborted && !statusCalled) { @@ -238,12 +234,13 @@ class ProxyStorage implements IProxy { if (_.isNil(requestCallback) === false) { (function do_log(): void { const message = "@{!status}, req: '@{request.method} @{request.url}' (streaming)"; - self.logger.http( + self.logger.warn( { request: { method: method, url: uri, }, + level: 35, // http status: _.isNull(res) === false ? res.statusCode : 'ERR', }, message @@ -251,7 +248,7 @@ class ProxyStorage implements IProxy { })(); } }); - req.on('error', function (_err): void { + req.on('error', function(_err): void { // FIXME: _verdaccio_aborted seems not used // @ts-ignore if (!req._verdaccio_aborted && !statusCalled) { @@ -467,7 +464,7 @@ class ProxyStorage implements IProxy { }, }); - readStream.on('response', function (res: any) { + readStream.on('response', function(res: any) { if (res.statusCode === HTTP_STATUS.NOT_FOUND) { return stream.emit('error', ErrorCode.getNotFound(API_ERROR.NOT_FILE_UPLINK)); } @@ -482,13 +479,13 @@ class ProxyStorage implements IProxy { readStream.pipe(stream); }); - readStream.on('error', function (err) { + readStream.on('error', function(err) { stream.emit('error', err); }); - readStream.on('data', function (data) { + readStream.on('data', function(data) { current_length += data.length; }); - readStream.on('end', function (data) { + readStream.on('end', function(data) { if (data) { current_length += data.length; } @@ -666,7 +663,7 @@ class ProxyStorage implements IProxy { } if (hostname.lastIndexOf(noProxyItem) === hostname.length - noProxyItem.length) { if (this.proxy) { - debug('not using proxy for %o, excluded by %o rule', this.url.href, noProxyItem); + this.logger.debug({ url: this.url.href, rule: noProxyItem }, 'not using proxy for @{url}, excluded by @{rule} rule'); // @ts-ignore this.proxy = false; } @@ -677,12 +674,11 @@ class ProxyStorage implements IProxy { // if it's non-string (i.e. "false"), don't use it if (_.isString(this.proxy) === false) { - // @ts-ignore delete this.proxy; } else { - debug('using proxy %o for %o', this.url.href, this.proxy); + this.logger.debug({ url: this.url.href, proxy: this.proxy }, 'using proxy @{proxy} for @{url}'); } } } -export default ProxyStorage; +export { ProxyStorage }; diff --git a/src/lib/uplink-util.ts b/packages/proxy/src/uplink-util.ts similarity index 89% rename from src/lib/uplink-util.ts rename to packages/proxy/src/uplink-util.ts index 40edf88be..51d06b566 100644 --- a/src/lib/uplink-util.ts +++ b/packages/proxy/src/uplink-util.ts @@ -1,6 +1,7 @@ import { Versions, Config } from '@verdaccio/types'; -import { IProxy, ProxyList } from '../../types'; -import ProxyStorage from './up-storage'; +import { IProxy, ProxyList } from '@verdaccio/dev-types'; + +import { ProxyStorage } from './up-storage'; /** * Set up the Up Storage for each link. diff --git a/test/unit/modules/uplinks/headers.auth.spec.ts b/packages/proxy/test/headers.auth.spec.ts similarity index 77% rename from test/unit/modules/uplinks/headers.auth.spec.ts rename to packages/proxy/test/headers.auth.spec.ts index 7efd6feaa..3d0d81bab 100644 --- a/test/unit/modules/uplinks/headers.auth.spec.ts +++ b/packages/proxy/test/headers.auth.spec.ts @@ -1,13 +1,9 @@ -import ProxyStorage from '../../../../src/lib/up-storage'; -import { - ERROR_CODE, - TOKEN_BASIC, - TOKEN_BEARER, - DEFAULT_REGISTRY, - HEADERS -} from '../../../../src/lib/constants'; -import { buildToken } from '../../../../src/lib/utils'; -import { setup } from '../../../../src/lib/logger'; +import {buildToken} from "@verdaccio/utils"; + +import {ERROR_CODE, TOKEN_BASIC, TOKEN_BEARER, DEFAULT_REGISTRY, HEADERS} from "@verdaccio/dev-commons"; +import {setup} from '@verdaccio/logger'; + +import { ProxyStorage } from '../src/up-storage'; setup([]); @@ -15,7 +11,7 @@ function createUplink(config) { const defaultConfig = { url: DEFAULT_REGISTRY }; - let mergeConfig = Object.assign({}, defaultConfig, config); + const mergeConfig = Object.assign({}, defaultConfig, config); // @ts-ignore return new ProxyStorage(mergeConfig, {}); } @@ -29,6 +25,7 @@ function setHeaders(config: unknown = {}, headers: unknown = {}) { } describe('uplink headers auth test', () => { + test('if set headers empty should return default headers', () => { const headers = setHeaders(); const keys = Object.keys(headers); @@ -45,38 +42,35 @@ describe('uplink headers auth test', () => { }); }; - expect(function () { + expect(function ( ) { fnError(); }).toThrow(Error('Auth invalid')); }); test('if assigns the header authorization', () => { - const headers = setHeaders( - {}, - { - [HEADERS.AUTHORIZATION]: buildToken(TOKEN_BASIC, 'Zm9vX2Jhcg==') - } - ); + const headers = setHeaders({}, { + [HEADERS.AUTHORIZATION]: buildToken(TOKEN_BASIC, 'Zm9vX2Jhcg==') + }); expect(Object.keys(headers)).toHaveLength(4); expect(headers[HEADERS.AUTHORIZATION]).toEqual(buildToken(TOKEN_BASIC, 'Zm9vX2Jhcg==')); }); - test('if assigns headers authorization and token the header precedes', () => { - const headers = setHeaders( - { + test( + 'if assigns headers authorization and token the header precedes', + () => { + const headers = setHeaders({ auth: { type: TOKEN_BEARER, token: 'tokenBearer' } - }, - { + }, { [HEADERS.AUTHORIZATION]: buildToken(TOKEN_BASIC, 'tokenBasic') - } - ); + }); - expect(headers[HEADERS.AUTHORIZATION]).toEqual(buildToken(TOKEN_BASIC, 'tokenBasic')); - }); + expect(headers[HEADERS.AUTHORIZATION]).toEqual(buildToken(TOKEN_BASIC, 'tokenBasic')); + } + ); test('set type auth basic', () => { const headers = setHeaders({ @@ -103,16 +97,16 @@ describe('uplink headers auth test', () => { }); test('set auth type invalid', () => { - const fnError = function () { + const fnError = function() { setHeaders({ auth: { type: 'null', token: 'Zm9vX2Jhcf===' } - }); + }) }; - expect(function () { + expect(function ( ) { fnError(); }).toThrow(Error(`Auth type 'null' not allowed`)); }); @@ -142,8 +136,9 @@ describe('uplink headers auth test', () => { delete process.env.NPM_TOKEN_TEST; }); + test('if token not set', () => { - const fnError = function () { + const fnError = function() { setHeaders({ auth: { type: TOKEN_BASIC @@ -151,7 +146,7 @@ describe('uplink headers auth test', () => { }); }; - expect(function () { + expect(function( ) { fnError(); }).toThrow(ERROR_CODE.token_required); }); diff --git a/packages/proxy/test/noProxy.spec.ts b/packages/proxy/test/noProxy.spec.ts new file mode 100644 index 000000000..dee7b9917 --- /dev/null +++ b/packages/proxy/test/noProxy.spec.ts @@ -0,0 +1,96 @@ +import { ProxyStorage } from '../src/up-storage'; + +require('@verdaccio/logger').setup([]); + +function setupProxy(host, uplinkConf, appConfig) { + uplinkConf.url = host; + + return new ProxyStorage(uplinkConf, appConfig); +} + +describe('Use proxy', () => { + test('should work fine without proxy', () => { + const x = setupProxy('http://x/x', {}, {}); + + expect(x.proxy).toEqual(undefined); + }); + + test('local config should take priority', () => { + const x = setupProxy('http://x/x', {http_proxy: '123'}, {http_proxy: '456'}); + expect(x.proxy).toEqual('123'); + }); + + test('no_proxy is invalid', () => { + let x = setupProxy('http://x/x', {http_proxy: '123', no_proxy: false}, {}); + + expect(x.proxy).toEqual('123'); + x = setupProxy('http://x/x', {http_proxy: '123', no_proxy: null}, {}); + expect(x.proxy).toEqual('123'); + x = setupProxy('http://x/x', {http_proxy: '123', no_proxy: []}, {}); + expect(x.proxy).toEqual('123'); + x = setupProxy('http://x/x', {http_proxy: '123', no_proxy: ''}, {}); + expect(x.proxy).toEqual('123'); + }); + + test('no_proxy - simple/include', () => { + let x = setupProxy('http://localhost', {http_proxy: '123'}, {no_proxy: 'localhost'}); + + expect(x.proxy).toEqual(undefined); + }); + + test('no_proxy - simple/not', () => { + let x = setupProxy('http://localhost', {http_proxy: '123'}, {no_proxy: 'blah'}); + + expect(x.proxy).toEqual('123'); + }); + + test('no_proxy - various, single string', () => { + let x = setupProxy('http://blahblah', {http_proxy: '123'}, {no_proxy: 'blah'}); + + expect(x.proxy).toEqual('123'); + x = setupProxy('http://blah.blah', {}, {http_proxy: '123', no_proxy: 'blah'}); + expect(x.proxy).toEqual(undefined); + x = setupProxy('http://blahblah', {}, {http_proxy: '123', no_proxy: '.blah'}); + expect(x.proxy).toEqual('123'); + x = setupProxy('http://blah.blah', {http_proxy: '123', no_proxy: '.blah'}, {}); + expect(x.proxy).toEqual(undefined); + x = setupProxy('http://blah', {http_proxy: '123', no_proxy: '.blah'}, {}); + expect(x.proxy).toEqual(undefined); + x = setupProxy('http://blahh', {http_proxy: '123', no_proxy: 'blah'}, {}); + expect(x.proxy).toEqual('123'); + }); + + test('no_proxy - various, array', () => { + let x = setupProxy('http://blahblah', {http_proxy: '123'}, {no_proxy: 'foo,bar,blah'}); + + expect(x.proxy).toEqual('123'); + x = setupProxy('http://blah.blah', {http_proxy: '123'}, {no_proxy: 'foo,bar,blah'}); + expect(x.proxy).toEqual(undefined); + x = setupProxy('http://blah.foo', {http_proxy: '123'}, {no_proxy: 'foo,bar,blah'}); + expect(x.proxy).toEqual(undefined); + x = setupProxy('http://foo.baz', {http_proxy: '123'}, {no_proxy: 'foo,bar,blah'}); + expect(x.proxy).toEqual('123'); + x = setupProxy('http://blahblah', {http_proxy: '123'}, {no_proxy: ['foo', 'bar', 'blah']}); + expect(x.proxy).toEqual('123'); + x = setupProxy('http://blah.blah', {http_proxy: '123'}, {no_proxy: ['foo', 'bar', 'blah']}); + expect(x.proxy).toEqual(undefined); + }); + + test('no_proxy - hostport', () => { + let x = setupProxy('http://localhost:80', {http_proxy: '123'}, {no_proxy: 'localhost'}); + + expect(x.proxy).toEqual(undefined); + x = setupProxy('http://localhost:8080', {http_proxy: '123'}, {no_proxy: 'localhost'}); + expect(x.proxy).toEqual(undefined); + }); + + test('no_proxy - secure', () => { + let x = setupProxy('https://something', {http_proxy: '123'}, {}); + + expect(x.proxy).toEqual(undefined); + x = setupProxy('https://something', {https_proxy: '123'}, {}); + expect(x.proxy).toEqual('123'); + x = setupProxy('https://something', {http_proxy: '456', https_proxy: '123'}, {}); + expect(x.proxy).toEqual('123'); + }); +}); diff --git a/packages/proxy/tsconfig.json b/packages/proxy/tsconfig.json new file mode 100644 index 000000000..6531bd3e4 --- /dev/null +++ b/packages/proxy/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./build" + }, + "include": ["src/**/*"], + "exclude": ["src/**/*.test.ts"] +} diff --git a/packages/server/.babelrc b/packages/server/.babelrc new file mode 100644 index 000000000..28397a1bd --- /dev/null +++ b/packages/server/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": [["@verdaccio"]] +} diff --git a/packages/server/jest.config.js b/packages/server/jest.config.js new file mode 100644 index 000000000..ba98cff55 --- /dev/null +++ b/packages/server/jest.config.js @@ -0,0 +1,10 @@ +module.exports = { + moduleFileExtensions: ['ts', 'js'], + transform: { + '^.+\\.(js|ts)$': 'babel-jest', + }, + verbose: true, + setupFilesAfterEnv: ['./jest.setup.js'], + // FIXME: coverage fails here + collectCoverage: false +}; diff --git a/packages/server/jest.setup.js b/packages/server/jest.setup.js new file mode 100644 index 000000000..cb96a9f51 --- /dev/null +++ b/packages/server/jest.setup.js @@ -0,0 +1 @@ +jest.setTimeout(20000); diff --git a/packages/server/package.json b/packages/server/package.json new file mode 100644 index 000000000..c813a578c --- /dev/null +++ b/packages/server/package.json @@ -0,0 +1,49 @@ +{ + "name": "@verdaccio/server", + "version": "5.0.0-alpha.0", + "description": "verdaccio server logic", + "main": "./build/index.js", + "types": "build/index.d.ts", + "author": { + "name": "Juan Picado", + "email": "juanpicado19@gmail.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/verdaccio/verdaccio" + }, + "license": "MIT", + "homepage": "https://verdaccio.org", + "dependencies": { + "@verdaccio/api": "5.0.0-alpha.0", + "@verdaccio/auth": "5.0.0-alpha.0", + "@verdaccio/config": "5.0.0-alpha.0", + "@verdaccio/dev-commons": "5.0.0-alpha.0", + "@verdaccio/loaders": "5.0.0-alpha.0", + "@verdaccio/logger": "5.0.0-alpha.0", + "@verdaccio/middleware": "5.0.0-alpha.0", + "@verdaccio/store": "5.0.0-alpha.0", + "@verdaccio/utils": "5.0.0-alpha.0", + "@verdaccio/web": "5.0.0-alpha.0", + "compression": "^1.7.4", + "cors": "2.8.5", + "express": "^4.17.1", + "lodash": "^4.17.15" + }, + "devDependencies": { + "@verdaccio/dev-types": "5.0.0-alpha.0", + "@verdaccio/mock": "5.0.0-alpha.0", + "http-errors": "^1.7.3", + "request": "2.87.0", + "verdaccio": "~4.4.0" + }, + "scripts": { + "clean": "rimraf ./build", + "test": "cross-env NODE_ENV=test BABEL_ENV=test jest", + "type-check": "tsc --noEmit", + "build:types": "tsc --emitDeclarationOnly --declaration true", + "build:js": "cross-env BABEL_ENV=registry babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "build": "npm run build:js && npm run build:types" + }, + "gitHead": "7c246ede52ff717707fcae66dd63fc4abd536982" +} diff --git a/packages/server/partials/store/htpasswd b/packages/server/partials/store/htpasswd new file mode 100644 index 000000000..d10d73141 --- /dev/null +++ b/packages/server/partials/store/htpasswd @@ -0,0 +1,4 @@ +JotaJWT:$6V.OzhCA9jFk:autocreated 2020-01-05T19:30:24.861Z +userTest2000:$6JZevb9Sewsg:autocreated 2020-01-05T19:30:24.901Z +userTest2001:$6V.OzhCA9jFk:autocreated 2020-01-05T19:30:24.924Z +userTest2002:$6V.OzhCA9jFk:autocreated 2020-01-05T19:30:24.942Z diff --git a/src/api/debug/index.ts b/packages/server/src/debug/index.ts similarity index 96% rename from src/api/debug/index.ts rename to packages/server/src/debug/index.ts index 2627ea2fd..f02e016d1 100644 --- a/src/api/debug/index.ts +++ b/packages/server/src/debug/index.ts @@ -1,6 +1,6 @@ import _ from 'lodash'; import { Application } from 'express'; -import { $ResponseExtend, $RequestExtend, $NextFunctionVer } from '../../../types'; +import { $ResponseExtend, $RequestExtend, $NextFunctionVer } from '@verdaccio/dev-types'; export default (app: Application, selfPath: string): void => { // Hook for tests only diff --git a/packages/server/src/env.ts b/packages/server/src/env.ts new file mode 100644 index 000000000..1271c4b2c --- /dev/null +++ b/packages/server/src/env.ts @@ -0,0 +1,8 @@ +// const path = require('path'); +// +// const APP_ROOT = path.resolve(__dirname, '../../'); +// +// module.exports = { +// APP_ROOT, +// SRC_ROOT: path.resolve(APP_ROOT, 'src/') +// }; diff --git a/packages/server/src/index.ts b/packages/server/src/index.ts new file mode 100644 index 000000000..7ddad5814 --- /dev/null +++ b/packages/server/src/index.ts @@ -0,0 +1 @@ +export { default } from './server'; diff --git a/src/api/index.ts b/packages/server/src/server.ts similarity index 63% rename from src/api/index.ts rename to packages/server/src/server.ts index c2115f9e8..d4232a6f3 100644 --- a/src/api/index.ts +++ b/packages/server/src/server.ts @@ -3,25 +3,27 @@ import express, { Application } from 'express'; import compression from 'compression'; import cors from 'cors'; import { HttpError } from 'http-errors'; -import { Config as IConfig, IPluginMiddleware, IPluginStorageFilter } from '@verdaccio/types'; -import Storage from '../lib/storage'; -import loadPlugin from '../lib/plugin-loader'; -import Auth from '../lib/auth'; -import { ErrorCode } from '../lib/utils'; -import { API_ERROR, HTTP_STATUS } from '../lib/constants'; -import AppConfig from '../lib/config'; -import { $ResponseExtend, $RequestExtend, $NextFunctionVer, IStorageHandler, IAuth } from '../../types'; -import { setup, logger } from '../lib/logger'; -import webAPI from './web/api'; -import web from './web'; -import apiEndpoint from './endpoint'; -import hookDebug from './debug'; -import { log, final, errorReportingMiddleware, serveFavicon } from './middleware'; -const defineAPI = function (config: IConfig, storage: IStorageHandler): any { +import { Storage } from '@verdaccio/store'; +import { loadPlugin } from '@verdaccio/loaders'; +import { Auth } from '@verdaccio/auth'; +import apiEndpoint from '@verdaccio/api'; +import { ErrorCode } from '@verdaccio/utils'; +import { API_ERROR, HTTP_STATUS } from '@verdaccio/dev-commons'; +import { Config as AppConfig } from '@verdaccio/config'; + +import { webAPI, renderWebMiddleware } from '@verdaccio/web'; + +import { $ResponseExtend, $RequestExtend, $NextFunctionVer, IStorageHandler, IAuth } from '@verdaccio/dev-types'; +import { Config as IConfig, IPluginMiddleware, IPluginStorageFilter } from '@verdaccio/types'; +import { setup, logger } from '@verdaccio/logger'; +import { log, final, errorReportingMiddleware } from '@verdaccio/middleware'; + +import hookDebug from './debug'; + +const defineAPI = function(config: IConfig, storage: IStorageHandler): any { const auth: IAuth = new Auth(config); const app: Application = express(); - // run in production mode by default, just in case // it shouldn't make any difference anyway app.set('env', process.env.NODE_ENV || 'production'); @@ -30,14 +32,17 @@ const defineAPI = function (config: IConfig, storage: IStorageHandler): any { // Router setup app.use(log(config)); app.use(errorReportingMiddleware); - app.use(function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { + app.use(function(req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { res.setHeader('X-Powered-By', config.user_agent); next(); }); app.use(compression()); - app.get('/-/static/favicon.ico', serveFavicon(config)); + app.get('/favicon.ico', function(req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { + req.url = '/-/static/favicon.png'; + next(); + }); // Hook for tests only if (config._debug) { @@ -50,7 +55,7 @@ const defineAPI = function (config: IConfig, storage: IStorageHandler): any { logger: logger, }; - const plugins: IPluginMiddleware[] = loadPlugin(config, config.middlewares, plugin_params, function (plugin: IPluginMiddleware) { + const plugins: IPluginMiddleware[] = loadPlugin(config, config.middlewares, plugin_params, function(plugin: IPluginMiddleware) { return plugin.register_middlewares; }); plugins.forEach((plugin: IPluginMiddleware) => { @@ -62,30 +67,30 @@ const defineAPI = function (config: IConfig, storage: IStorageHandler): any { // For WebUI & WebUI API if (_.get(config, 'web.enable', true)) { - app.use('/', web(config, auth, storage)); + app.use('/', renderWebMiddleware(config, auth, storage)); app.use('/-/verdaccio/', webAPI(config, auth, storage)); } else { - app.get('/', function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer) { + app.get('/', function(req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer) { next(ErrorCode.getNotFound(API_ERROR.WEB_DISABLED)); }); } // Catch 404 - app.get('/*', function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer) { + app.get('/*', function(req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer) { next(ErrorCode.getNotFound(API_ERROR.FILE_NOT_FOUND)); }); - app.use(function (err: HttpError, req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer) { + app.use(function(err: HttpError, req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer) { if (_.isError(err)) { if (err.code === 'ECONNABORT' && res.statusCode === HTTP_STATUS.NOT_MODIFIED) { return next(); } - if (_.isFunction(res.locals.report_error) === false) { + if (_.isFunction(res.report_error) === false) { // in case of very early error this middleware may not be loaded before error is generated // fixing that errorReportingMiddleware(req, res, _.noop); } - res.locals.report_error(err); + res.report_error(err); } else { // Fall to Middleware.final return next(err); @@ -97,7 +102,7 @@ const defineAPI = function (config: IConfig, storage: IStorageHandler): any { return app; }; -export default (async function (configHash: any): Promise { +export default (async function(configHash: any): Promise { setup(configHash.logs); const config: IConfig = new AppConfig(_.cloneDeep(configHash)); // register middleware plugins diff --git a/packages/server/test/README.md b/packages/server/test/README.md new file mode 100644 index 000000000..ff6493620 --- /dev/null +++ b/packages/server/test/README.md @@ -0,0 +1,13 @@ +## Testing + +The test are structured by feature following this shape: + +```bash + test + --- feat + --- config.yaml + --- spec.test.ts + --- mock (storage folder) optional + --- partials (optional) +``` + diff --git a/test/unit/partials/config/yaml/api.spec.yaml b/packages/server/test/api/api.spec.yaml similarity index 95% rename from test/unit/partials/config/yaml/api.spec.yaml rename to packages/server/test/api/api.spec.yaml index 64bd3ccb1..f60e39609 100644 --- a/test/unit/partials/config/yaml/api.spec.yaml +++ b/packages/server/test/api/api.spec.yaml @@ -1,7 +1,10 @@ storage: ./storage_default_storage -uplinks: - npmjs: - url: http://localhost:4873/ +plugins: ./plugins + +auth: + htpasswd: + file: ./htpasswd + packages: '@public-anyone-can-publish/*': access: $anonymous jota_unpublish @@ -86,4 +89,4 @@ packages: unpublish: xxx proxy: npmjs logs: - - { type: stdout, format: pretty, level: trace } + - { type: stdout, format: pretty, level: error } diff --git a/test/unit/partials/publish-api.js b/packages/server/test/api/helpers/publish-api.js similarity index 100% rename from test/unit/partials/publish-api.js rename to packages/server/test/api/helpers/publish-api.js diff --git a/packages/server/test/api/helpers/utils.ts b/packages/server/test/api/helpers/utils.ts new file mode 100644 index 000000000..6f8a90504 --- /dev/null +++ b/packages/server/test/api/helpers/utils.ts @@ -0,0 +1,132 @@ +import { Package } from "@verdaccio/types"; + + +export function generateVersion(pkgName, version) { + return { + "name": pkgName, + "version": version, + "description": "some foo dependency", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": { + "name": "User NPM", + "email": "user@domain.com" + }, + "license": "ISC", + "dependencies": { + "verdaccio": "^4.0.0" + }, + "readme": "# test", + "readmeFilename": "README.md", + "_id": `${pkgName}@${version}`, + "_npmVersion": "5.5.1", + "_npmUser": { + 'name': 'foo', + }, + "dist": { + "integrity": "sha512-6gHiERpiDgtb3hjqpQH5\/i7zRmvYi9pmCjQf2ZMy3QEa9wVk9RgdZaPWUt7ZOnWUPFjcr9cmE6dUBf+XoPoH4g==", + "shasum": "2c03764f651a9f016ca0b7620421457b619151b9", // pragma: allowlist secret + "tarball": `http:\/\/localhost:5555\/${pkgName}\/-\/${pkgName}-${version}.tgz` + } + } +} + +/** + * The metadata that comes from npm unpublish only contains the versions won't be removed and + * also does not includes any _attachment. + * @param pkgName + * @param _versions + */ +export function generatePackageUnpublish(pkgName: string, _versions: string[] = ['1.0.0']): Package { + const latest: string = _versions[_versions.length - 1]; + const versions = _versions.reduce((cat, version) => { + cat[version] = generateVersion(pkgName, version); + return cat; + }, {}); + + // @ts-ignore + return { + "_id": pkgName, + "name": pkgName, + "readme": "# test", + // users usually is present when run npm star [pkg] + "users": {}, + "dist-tags": { + "latest": latest + }, + "versions": versions, + } +} + +export function generateStarMedatada(pkgName: string, users): any { + return { + "_id": pkgName, + "_rev": "3-b0cdaefc9bdb77c8", + "users": users + } +} + +export function generatePackageMetadata(pkgName: string, version = '1.0.0'): Package { + // @ts-ignore + return { + "_id": pkgName, + "name": pkgName, + "dist-tags": { + "latest": version + }, + "versions": { + [version]: { + "name": pkgName, + "version": version, + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [ + + ], + "author": { + "name": "User NPM", + "email": "user@domain.com" + }, + "license": "ISC", + "dependencies": { + "verdaccio": "^2.7.2" + }, + "readme": "# test", + "readmeFilename": "README.md", + "_id": `${pkgName}@${version}`, + "_npmVersion": "5.5.1", + "_npmUser": { + 'name': 'foo', + }, + "dist": { + "integrity": "sha512-6gHiERpiDgtb3hjqpQH5\/i7zRmvYi9pmCjQf2ZMy3QEa9wVk9RgdZaPWUt7ZOnWUPFjcr9cmE6dUBf+XoPoH4g==", + "shasum": "2c03764f651a9f016ca0b7620421457b619151b9", // pragma: allowlist secret + "tarball": `http:\/\/localhost:5555\/${pkgName}\/-\/${pkgName}-${version}.tgz` + } + } + }, + "readme": "# test", + "_attachments": { + [`${pkgName}-${version}.tgz`]: { + "content_type": "application\/octet-stream", + "data": "H4sIAAAAAAAAE+2W32vbMBDH85y\/QnjQp9qxLEeBMsbGlocNBmN7bFdQ5WuqxJaEpGQdo\/\/79KPeQsnIw5KUDX\/9IOvurLuz\/DHSjK\/YAiY6jcXSKjk6sMqypHWNdtmD6hlBI0wqQmo8nVbVqMR4OsNoVB66kF1aW8eML+Vv10m9oF\/jP6IfY4QyyTrILlD2eqkcm+gVzpdrJrPz4NuAsULJ4MZFWdBkbcByI7R79CRjx0ScCdnAvf+SkjUFWu8IubzBgXUhDPidQlfZ3BhlLpBUKDiQ1cDFrYDmKkNnZwjuhUM4808+xNVW8P2bMk1Y7vJrtLC1u1MmLPjBF40+Cc4ahV6GDmI\/DWygVRpMwVX3KtXUCg7Sxp7ff3nbt6TBFy65gK1iffsN41yoEHtdFbOiisWMH8bPvXUH0SP3k+KG3UBr+DFy7OGfEJr4x5iWVeS\/pLQe+D+FIv\/agIWI6GX66kFuIhT+1gDjrp\/4d7WAvAwEJPh0u14IufWkM0zaW2W6nLfM2lybgJ4LTJ0\/jWiAK8OcMjt8MW3OlfQppcuhhQ6k+2OgkK2Q8DssFPi\/IHpU9fz3\/+xj5NjDf8QFE39VmE4JDfzPCBn4P4X6\/f88f\/Pu47zomiPk2Lv\/dOv8h+P\/34\/D\/p9CL+Kp67mrGDRo0KBBp9ZPsETQegASAAA=", + "length": 512 + } + } + } +} + +export function generateDeprecateMetadata(pkgName: string, version = '1.0.0', deprecated:string = ''): Package { + const res = { + ...generatePackageMetadata(pkgName, version), + _attachments: {}, + }; + res.versions[version].deprecated = deprecated; + return res; +} diff --git a/test/unit/modules/api/api.spec.ts b/packages/server/test/api/index.spec.ts similarity index 69% rename from test/unit/modules/api/api.spec.ts rename to packages/server/test/api/index.spec.ts index 3d5a21e7d..aa8fcfe3e 100644 --- a/test/unit/modules/api/api.spec.ts +++ b/packages/server/test/api/index.spec.ts @@ -1,47 +1,37 @@ import request from 'supertest'; import _ from 'lodash'; import path from 'path'; -import rimraf from 'rimraf'; -import nock from 'nock'; -import { Readable } from 'stream'; - -import configDefault from '../../partials/config'; -import publishMetadata from '../../partials/publish-api'; -import endPointAPI from '../../../../src/api'; +import endPointAPI from '@verdaccio/server'; import { HEADERS, API_ERROR, HTTP_STATUS, HEADER_TYPE, API_MESSAGE, - TOKEN_BEARER -} from '../../../../src/lib/constants'; -import { mockServer } from '../../__helper/mock'; -import { DOMAIN_SERVERS } from '../../../functional/config.functional'; -import { buildToken, encodeScopedUri } from '../../../../src/lib/utils'; + TOKEN_BEARER, +} from '@verdaccio/dev-commons'; +import {buildToken, encodeScopedUri} from '@verdaccio/utils'; +import {setup, logger} from '@verdaccio/logger'; + +import {mockServer} from '@verdaccio/mock'; + import { + configExample, DOMAIN_SERVERS, getNewToken, getPackage, putPackage, + generateRamdonStorage, verifyPackageVersionDoesExist, - generateUnPublishURI -} from '../../__helper/api'; -import { - generatePackageMetadata, - generatePackageUnpublish, - generateStarMedatada, + generateUnPublishURI, generateDeprecateMetadata, - generateVersion -} from '../../__helper/utils'; + generateVersion, +} from '@verdaccio/mock'; -const sleep = (delay) => { - return new Promise((resolve) => { - setTimeout(resolve, delay); - }); -}; +import publishMetadata from './helpers/publish-api'; +import {generatePackageMetadata, generatePackageUnpublish, generateStarMedatada} from './helpers/utils'; -require('../../../../src/lib/logger').setup([{ type: 'stdout', format: 'pretty', level: 'warn' }]); +setup([]); const credentials = { name: 'jota', password: 'secretPass' }; @@ -58,66 +48,51 @@ const putVersion = (app, name, publishMetadata) => { describe('endpoint unit test', () => { let app; - const mockServerPort = 55549; let mockRegistry; - beforeAll(function (done) { - const store = path.join(__dirname, '../../partials/store/test-storage-api-spec'); - rimraf(store, async () => { - const configForTest = configDefault( - { - auth: { - htpasswd: { - file: './test-storage-api-spec/.htpasswd' - } - }, - filters: { - '../../modules/api/partials/plugin/filter': { - pkg: 'npm_test', - version: '2.0.0' - } - }, - storage: store, - self_path: store, - uplinks: { - npmjs: { - url: `http://${DOMAIN_SERVERS}:${mockServerPort}` - }, - socketTimeout: { - url: `http://some.registry.timeout.com`, - max_fails: 2, - timeout: '1s', - fail_timeout: '1s' - } - }, - logs: [{ type: 'stdout', format: 'pretty', level: 'warn' }] - }, - 'api.spec.yaml' - ); + beforeAll(async function(done) { + const store = generateRamdonStorage(); + const mockServerPort = 55549; + const configForTest = configExample({ + filters: { + [path.join(__dirname, './plugin/filter')]: { + pkg: 'npm_test', + version: '2.0.0' + } + }, + storage: store, + self_path: store, + uplinks: { + npmjs: { + url: `http://${DOMAIN_SERVERS}:${mockServerPort}` + } + } + }, 'api.spec.yaml', __dirname); - app = await endPointAPI(configForTest); - mockRegistry = await mockServer(mockServerPort).init(); - done(); - }); - }); - - afterAll(function (done) { - mockRegistry[0].stop(); + app = await endPointAPI(configForTest); + const binPath = require.resolve('verdaccio/bin/verdaccio'); + const storePath = path.join(__dirname, '/mock/store'); + mockRegistry = await mockServer(mockServerPort, { storePath, silence: true }).init(binPath); done(); }); - afterEach(() => { - nock.cleanAll(); + afterAll(function(done) { + const [registry, pid] = mockRegistry; + registry.stop(); + logger.info(`registry ${pid} has been stopped`); + + done(); }); describe('Registry API Endpoints', () => { + describe('should test ping api', () => { test('should test endpoint /-/ping', (done) => { request(app) .get('/-/ping') .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(HTTP_STATUS.OK) - .end(function (err) { + .end(function(err) { if (err) { return done(err); } @@ -128,11 +103,18 @@ describe('endpoint unit test', () => { describe('should test whoami api', () => { test('should test referer /whoami endpoint', (done) => { - request(app).get('/whoami').set('referer', 'whoami').expect(HTTP_STATUS.OK).end(done); + request(app) + .get('/whoami') + .set('referer', 'whoami') + .expect(HTTP_STATUS.OK) + .end(done); }); test('should test no referer /whoami endpoint', (done) => { - request(app).get('/whoami').expect(HTTP_STATUS.NOT_FOUND).end(done); + request(app) + .get('/whoami') + .expect(HTTP_STATUS.NOT_FOUND) + .end(done); }); test('should test /-/whoami endpoint', (done) => { @@ -140,7 +122,7 @@ describe('endpoint unit test', () => { .get('/-/whoami') .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(HTTP_STATUS.OK) - .end(function (err) { + .end(function(err) { if (err) { return done(err); } @@ -153,7 +135,7 @@ describe('endpoint unit test', () => { .get('/-/whoami') .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(HTTP_STATUS.OK) - .end(function (err) { + .end(function(err) { if (err) { return done(err); } @@ -163,6 +145,7 @@ describe('endpoint unit test', () => { }); describe('should test user api', () => { + describe('should test authorization headers with tokens only errors', () => { test('should fails on protected endpoint /-/auth-package bad format', (done) => { request(app) @@ -170,11 +153,9 @@ describe('endpoint unit test', () => { .set(HEADERS.AUTHORIZATION, 'FakeHader') .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON) .expect(HTTP_STATUS.FORBIDDEN) - .end(function (err, res) { + .end(function(err, res) { expect(res.body.error).toBeDefined(); - expect(res.body.error).toMatch( - /authorization required to access package auth-package/ - ); + expect(res.body.error).toMatch(/authorization required to access package auth-package/); done(); }); }); @@ -185,11 +166,9 @@ describe('endpoint unit test', () => { .set(HEADERS.AUTHORIZATION, TOKEN_BEARER) .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON) .expect(HTTP_STATUS.FORBIDDEN) - .end(function (err, res) { + .end(function(err, res) { expect(res.body.error).toBeDefined(); - expect(res.body.error).toMatch( - /authorization required to access package auth-package/ - ); + expect(res.body.error).toMatch(/authorization required to access package auth-package/); done(); }); }); @@ -200,23 +179,22 @@ describe('endpoint unit test', () => { .set(HEADERS.AUTHORIZATION, buildToken(TOKEN_BEARER, '12345')) .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON) .expect(HTTP_STATUS.FORBIDDEN) - .end(function (err, res) { + .end(function(err, res) { expect(res.body.error).toBeDefined(); - expect(res.body.error).toMatch( - /authorization required to access package auth-package/ - ); + expect(res.body.error).toMatch(/authorization required to access package auth-package/); done(); }); }); }); + test('should test add a new user', (done) => { request(app) .put(`/-/user/org.couchdb.user:${credentials.name}`) .send(credentials) .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(HTTP_STATUS.CREATED) - .end(function (err, res) { + .end(function(err, res) { if (err) { return done(err); } @@ -233,7 +211,7 @@ describe('endpoint unit test', () => { .set(HEADERS.AUTHORIZATION, buildToken(TOKEN_BEARER, token)) .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(HTTP_STATUS.OK) - .end(function (err, res) { + .end(function(err, res) { expect(err).toBeNull(); expect(res.body).toBeDefined(); expect(res.body.name).toMatch(/vue/); @@ -243,6 +221,7 @@ describe('endpoint unit test', () => { }); test('should test fails add a new user with missing name', (done) => { + const credentialsShort = _.cloneDeep(credentials); delete credentialsShort.name; @@ -251,7 +230,7 @@ describe('endpoint unit test', () => { .send(credentialsShort) .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(HTTP_STATUS.BAD_REQUEST) - .end(function (err, res) { + .end(function(err, res) { if (err) { return done(err); } @@ -263,6 +242,7 @@ describe('endpoint unit test', () => { }); test('should test fails add a new user with missing password', (done) => { + const credentialsShort = _.cloneDeep(credentials); delete credentialsShort.password; @@ -271,7 +251,7 @@ describe('endpoint unit test', () => { .send(credentialsShort) .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(HTTP_STATUS.BAD_REQUEST) - .end(function (err, res) { + .end(function(err, res) { if (err) { return done(err); } @@ -293,7 +273,7 @@ describe('endpoint unit test', () => { .send(newCredentials) .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(HTTP_STATUS.CREATED) - .end(function (err, res) { + .end(function(err, res) { if (err) { return done(err); } @@ -308,7 +288,7 @@ describe('endpoint unit test', () => { .send(credentials) .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(HTTP_STATUS.CONFLICT) - .end(function (err, res) { + .end(function(err, res) { if (err) { return done(err); } @@ -319,6 +299,7 @@ describe('endpoint unit test', () => { }); test('should test fails add a new user with wrong password', (done) => { + const credentialsShort = _.cloneDeep(credentials); credentialsShort.password = 'failPassword'; @@ -327,7 +308,7 @@ describe('endpoint unit test', () => { .send(credentialsShort) .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(HTTP_STATUS.UNAUTHORIZED) - .end(function (err, res) { + .end(function(err, res) { if (err) { return done(err); } @@ -337,6 +318,7 @@ describe('endpoint unit test', () => { done(); }); }); + }); describe('should test package api', () => { @@ -348,12 +330,13 @@ describe('endpoint unit test', () => { // proxy: npmjs test('should fetch jquery package from remote uplink', (done) => { + request(app) .get('/jquery') .set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(HTTP_STATUS.OK) - .end(function (err, res) { + .end(function(err, res) { if (err) { return done(err); } @@ -364,45 +347,14 @@ describe('endpoint unit test', () => { }); }); - test('should fails with socket time out fetch tarball timeout package from remote uplink', async () => { - const timeOutPkg = generatePackageMetadata('timeout', '1.5.1'); - const responseText = 'fooooooooooooooooo'; - const readable = Readable.from([responseText]); - timeOutPkg.versions['1.5.1'].dist.tarball = - 'http://some.registry.timeout.com/timeout/-/timeout-1.5.1.tgz'; - nock('http://some.registry.timeout.com').get('/timeout').reply(200, timeOutPkg); - nock('http://some.registry.timeout.com') - .get('/timeout/-/timeout-1.5.1.tgz') - .twice() - .socketDelay(50000) - .reply(200); - nock('http://some.registry.timeout.com') - .get('/timeout/-/timeout-1.5.1.tgz') - .reply(200, () => readable); - const agent = request.agent(app); - await agent - .get('/timeout/-/timeout-1.5.1.tgz') - .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.OCTET_STREAM) - .expect(HTTP_STATUS.INTERNAL_ERROR); - await agent - .get('/timeout/-/timeout-1.5.1.tgz') - .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.OCTET_STREAM) - .expect(HTTP_STATUS.INTERNAL_ERROR); - await sleep(2000); - // await agent - await agent - .get('/timeout/-/timeout-1.5.1.tgz') - .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.OCTET_STREAM) - .expect(HTTP_STATUS.OK); - }, 10000); - test('should fetch jquery specific version package from remote uplink', (done) => { + request(app) .get('/jquery/1.5.1') .set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(HTTP_STATUS.OK) - .end(function (err, res) { + .end(function(err, res) { if (err) { return done(err); } @@ -414,12 +366,13 @@ describe('endpoint unit test', () => { }); test('should fetch jquery specific tag package from remote uplink', (done) => { + request(app) .get('/jquery/latest') .set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(HTTP_STATUS.OK) - .end(function (err, res) { + .end(function(err, res) { if (err) { return done(err); } @@ -431,12 +384,13 @@ describe('endpoint unit test', () => { }); test('should fails on fetch jquery specific tag package from remote uplink', (done) => { + request(app) .get('/jquery/never-will-exist-this-tag') .set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(HTTP_STATUS.NOT_FOUND) - .end(function (err) { + .end(function(err) { if (err) { return done(err); } @@ -445,12 +399,13 @@ describe('endpoint unit test', () => { }); test('should not found a unexisting remote package under scope', (done) => { + request(app) .get('/@verdaccio/not-found') .set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(HTTP_STATUS.NOT_FOUND) - .end(function (err) { + .end(function(err) { if (err) { return done(err); } @@ -465,7 +420,7 @@ describe('endpoint unit test', () => { .set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(HTTP_STATUS.OK) - .end(function (err, res) { + .end(function(err, res) { if (err) { return done(err); } @@ -477,12 +432,12 @@ describe('endpoint unit test', () => { test('should not found when a filter fails', (done) => { request(app) - // Filter errors look like other uplink errors + // Filter errors look like other uplink errors .get('/trigger-filter-failure') .set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(HTTP_STATUS.NOT_FOUND) - .end(function (err) { + .end(function(err) { if (err) { return done(err); } @@ -492,12 +447,13 @@ describe('endpoint unit test', () => { }); test('should forbid access to remote package', (done) => { + request(app) .get('/forbidden-place') .set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(HTTP_STATUS.UNAUTHORIZED) - .end(function (err) { + .end(function(err) { if (err) { return done(err); } @@ -506,11 +462,12 @@ describe('endpoint unit test', () => { }); test('should fetch a tarball from remote uplink', (done) => { + request(app) .get('/jquery/-/jquery-1.5.1.tgz') .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.OCTET_STREAM) .expect(HTTP_STATUS.OK) - .end(function (err, res) { + .end(function(err, res) { if (err) { return done(err); } @@ -521,11 +478,12 @@ describe('endpoint unit test', () => { }); test('should fetch a scoped tarball from remote uplink', (done) => { + request(app) .get('/@jquery/jquery/-/@jquery/jquery-1.5.1.tgz') .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.OCTET_STREAM) .expect(HTTP_STATUS.OK) - .end(function (err, res) { + .end(function(err, res) { if (err) { return done(err); } @@ -536,11 +494,12 @@ describe('endpoint unit test', () => { }); test('should fails fetch a tarball from remote uplink', (done) => { + request(app) .get('/jquery/-/jquery-not-found-tarball-0.0.1.tgz') .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.OCTET_STREAM) .expect(HTTP_STATUS.NOT_FOUND) - .end(function (err) { + .end(function(err) { if (err) { expect(err).not.toBeNull(); return done(err); @@ -549,19 +508,20 @@ describe('endpoint unit test', () => { done(); }); }); + }); describe('should test dist-tag api', () => { const jqueryVersion = '2.1.2'; const jqueryUpdatedVersion = { - beta: '3.0.0', - jota: '1.6.3' + 'beta': '3.0.0', + 'jota': '1.6.3' }; test('should set a new tag on jquery', (done) => { putVersion(app, '/jquery/verdaccio-tag', jqueryVersion) .expect(HTTP_STATUS.CREATED) - .end(function (err, res) { + .end(function(err, res) { if (err) { expect(err).toBeNull(); return done(err); @@ -574,12 +534,13 @@ describe('endpoint unit test', () => { }); test('should fetch all tag for jquery', (done) => { + request(app) .get('/-/package/jquery/dist-tags') .set('accept-encoding', HEADERS.JSON) .set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON) .expect(HTTP_STATUS.OK) - .end(function (err, res) { + .end(function(err, res) { if (err) { expect(err).toBeNull(); return done(err); @@ -592,12 +553,13 @@ describe('endpoint unit test', () => { }); test('should update a new tag on jquery', (done) => { + request(app) .post('/-/package/jquery/dist-tags') .send(JSON.stringify(jqueryUpdatedVersion)) .set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON) .expect(HTTP_STATUS.CREATED) - .end(function (err, res) { + .end(function(err, res) { if (err) { expect(err).toBeNull(); return done(err); @@ -610,12 +572,13 @@ describe('endpoint unit test', () => { }); test('should fetch all tags for jquery and ccheck previous update', (done) => { + request(app) .get('/-/package/jquery/dist-tags') .set('accept-encoding', HEADERS.JSON) .set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON) .expect(HTTP_STATUS.OK) - .end(function (err, res) { + .end(function(err, res) { if (err) { expect(err).toBeNull(); return done(err); @@ -628,13 +591,14 @@ describe('endpoint unit test', () => { }); test('should set a remove a tag on jquery', (done) => { + request(app) .del('/-/package/jquery/dist-tags/verdaccio-tag') .set('accept-encoding', HEADERS.JSON) .set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON) // .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(HTTP_STATUS.CREATED) - .end(function (err, res) { + .end(function(err, res) { if (err) { expect(err).toBeNull(); return done(err); @@ -645,6 +609,7 @@ describe('endpoint unit test', () => { done(); }); }); + }); describe('should test search api', () => { @@ -657,7 +622,7 @@ describe('endpoint unit test', () => { // .set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON) .expect(HEADERS.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(HTTP_STATUS.OK) - .end(function (err) { + .end(function(err) { if (err) { expect(err).toBeNull(); return done(err); @@ -667,6 +632,7 @@ describe('endpoint unit test', () => { done(); }); }); + }); describe('should test publish/unpublish api', () => { @@ -685,24 +651,15 @@ describe('endpoint unit test', () => { } const newVersion = '2.0.1'; - const [newErr] = await putPackage( - request(app), - `/${encodeScopedUri(pkgName)}`, - generatePackageMetadata(pkgName, newVersion), - token - ); + const [newErr] = await putPackage(request(app), `/${encodeScopedUri(pkgName)}`, + generatePackageMetadata(pkgName, newVersion), token); if (newErr) { expect(newErr).toBeNull(); return done(newErr); } - const deletePayload = generatePackageUnpublish(pkgName, ['2.0.0']); - const [err2, res2] = await putPackage( - request(app), - generateUnPublishURI(pkgName), - deletePayload, - token - ); + const deletePayload = generatePackageUnpublish(pkgName, ['2.0.0']); + const [err2, res2] = await putPackage(request(app), generateUnPublishURI(pkgName), deletePayload, token); expect(err2).toBeNull(); expect(res2.body.ok).toMatch(API_MESSAGE.PKG_CHANGED); @@ -751,29 +708,18 @@ describe('endpoint unit test', () => { const newVersion = '1.0.0'; const token = await getNewToken(request(app), credentials); - const [newErr] = await putPackage( - request(app), - `/${encodeScopedUri(pkgName)}`, - generatePackageMetadata(pkgName, newVersion), - token - ); + const [newErr] = await putPackage(request(app), `/${encodeScopedUri(pkgName)}`, + generatePackageMetadata(pkgName, newVersion), token); if (newErr) { expect(newErr).toBeNull(); return done(newErr); } - const deletePayload = generatePackageUnpublish(pkgName, ['2.0.0']); - const [err2, res2] = await putPackage( - request(app), - generateUnPublishURI(pkgName), - deletePayload, - token - ); + const deletePayload = generatePackageUnpublish(pkgName, ['2.0.0']); + const [err2, res2] = await putPackage(request(app), generateUnPublishURI(pkgName), deletePayload, token); expect(err2).not.toBeNull(); - expect(res2.body.error).toMatch( - /user jota_unpublish_fail is not allowed to unpublish package non-unpublish/ - ); + expect(res2.body.error).toMatch(/user jota_unpublish_fail is not allowed to unpublish package non-unpublish/); done(); }); @@ -799,17 +745,11 @@ describe('endpoint unit test', () => { const newVersion = '1.0.0'; const token = await getNewToken(request(app), credentials); - const [newErr, resp] = await putPackage( - request(app), - `/${encodeScopedUri(pkgName)}`, - generatePackageMetadata(pkgName, newVersion), - token - ); + const [newErr, resp] = await putPackage(request(app), `/${encodeScopedUri(pkgName)}`, + generatePackageMetadata(pkgName, newVersion), token); expect(newErr).not.toBeNull(); - expect(resp.body.error).toMatch( - /user jota_only_unpublish_fail is not allowed to publish package only-unpublish/ - ); + expect(resp.body.error).toMatch(/user jota_only_unpublish_fail is not allowed to publish package only-unpublish/); done(); }); }); @@ -821,15 +761,11 @@ describe('endpoint unit test', () => { .put('/super-admin-can-unpublish') .set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON) .set(HEADERS.AUTHORIZATION, buildToken(TOKEN_BEARER, token)) - .send( - JSON.stringify( - _.assign({}, publishMetadata, { - name: 'super-admin-can-unpublish' - }) - ) - ) + .send(JSON.stringify(_.assign({}, publishMetadata, { + name: 'super-admin-can-unpublish' + }))) .expect(HTTP_STATUS.CREATED) - .end(function (err, res) { + .end(function(err, res) { if (err) { expect(err).toBeNull(); return done(err); @@ -843,7 +779,7 @@ describe('endpoint unit test', () => { .set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON) .set(HEADERS.AUTHORIZATION, buildToken(TOKEN_BEARER, token)) .expect(HTTP_STATUS.CREATED) - .end(function (err, res) { + .end(function(err, res) { expect(err).toBeNull(); expect(res.body.ok).toBeDefined(); expect(res.body.ok).toMatch(API_MESSAGE.PKG_REMOVED); @@ -859,15 +795,11 @@ describe('endpoint unit test', () => { .put('/all-can-unpublish') .set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON) .set(HEADERS.AUTHORIZATION, buildToken(TOKEN_BEARER, token)) - .send( - JSON.stringify( - _.assign({}, publishMetadata, { - name: 'all-can-unpublish' - }) - ) - ) + .send(JSON.stringify(_.assign({}, publishMetadata, { + name: 'all-can-unpublish' + }))) .expect(HTTP_STATUS.CREATED) - .end(function (err, res) { + .end(function(err, res) { if (err) { expect(err).toBeNull(); return done(err); @@ -881,7 +813,7 @@ describe('endpoint unit test', () => { .set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON) .set(HEADERS.AUTHORIZATION, buildToken(TOKEN_BEARER, token)) .expect(HTTP_STATUS.CREATED) - .end(function (err, res) { + .end(function(err, res) { expect(err).toBeNull(); expect(res.body.ok).toBeDefined(); expect(res.body.ok).toMatch(API_MESSAGE.PKG_REMOVED); @@ -892,105 +824,93 @@ describe('endpoint unit test', () => { }); describe('should test star and stars api', () => { - const pkgName = '@scope/starPackage'; - const credentials = { name: 'jota_star', password: 'secretPass' }; - let token = ''; - beforeAll(async (done) => { - token = await getNewToken(request(app), credentials); - await putPackage(request(app), `/${pkgName}`, generatePackageMetadata(pkgName), token); - done(); - }); - - test('should star a package', (done) => { - request(app) - .put(`/${pkgName}`) - .set(HEADERS.AUTHORIZATION, buildToken(TOKEN_BEARER, token)) - .set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON) - .send( - JSON.stringify( - generateStarMedatada(pkgName, { - [credentials.name]: true - }) - ) - ) - .expect(HTTP_STATUS.OK) - .end(function (err, res) { - if (err) { - expect(err).toBeNull(); - return done(err); - } - expect(res.body.success).toBeDefined(); - expect(res.body.success).toBeTruthy(); + const pkgName = '@scope/starPackage'; + const credentials = { name: 'jota_star', password: 'secretPass' }; + let token = ''; + beforeAll(async (done) =>{ + token = await getNewToken(request(app), credentials); + await putPackage(request(app), `/${pkgName}`, generatePackageMetadata(pkgName), token); done(); - }); - }); + }); - test('should unstar a package', (done) => { - request(app) - .put(`/${pkgName}`) - .set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON) - .set(HEADERS.AUTHORIZATION, buildToken(TOKEN_BEARER, token)) - .send(JSON.stringify(generateStarMedatada(pkgName, {}))) - .expect(HTTP_STATUS.OK) - .end(function (err, res) { - if (err) { - expect(err).toBeNull(); - return done(err); - } - expect(res.body.success).toBeDefined(); - expect(res.body.success).toBeTruthy(); - done(); - }); - }); - - test('should retrieve stars list with credentials', async (done) => { - request(app) - .put(`/${pkgName}`) - .set(HEADERS.AUTHORIZATION, buildToken(TOKEN_BEARER, token)) - .set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON) - .send(generateStarMedatada(pkgName, { [credentials.name]: true })) - .expect(HTTP_STATUS.OK) - .end(function (err) { - if (err) { - expect(err).toBeNull(); - return done(err); - } + test('should star a package', (done) => { request(app) - .get('/-/_view/starredByUser') - .set(HEADERS.AUTHORIZATION, buildToken(TOKEN_BEARER, token)) - .set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON) - .send( - JSON.stringify({ - key: [credentials.name] - }) - ) - .expect(HTTP_STATUS.OK) - .end(function (err, res) { + .put(`/${pkgName}`) + .set(HEADERS.AUTHORIZATION, buildToken(TOKEN_BEARER, token)) + .set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON) + .send(JSON.stringify(generateStarMedatada(pkgName, { + [credentials.name]: true + }))) + .expect(HTTP_STATUS.OK) + .end(function(err, res) { + if (err) { + expect(err).toBeNull(); + return done(err); + } + expect(res.body.success).toBeDefined(); + expect(res.body.success).toBeTruthy(); + done(); + }); + }); + + test('should unstar a package', (done) => { + request(app) + .put(`/${pkgName}`) + .set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON) + .set(HEADERS.AUTHORIZATION, buildToken(TOKEN_BEARER, token)) + .send(JSON.stringify(generateStarMedatada(pkgName, {}))) + .expect(HTTP_STATUS.OK) + .end(function(err, res) { + if (err) { + expect(err).toBeNull(); + return done(err); + } + expect(res.body.success).toBeDefined(); + expect(res.body.success).toBeTruthy(); + done(); + }); + }); + + test('should retrieve stars list with credentials', async (done) => { + request(app) + .put(`/${pkgName}`) + .set(HEADERS.AUTHORIZATION, buildToken(TOKEN_BEARER, token)) + .set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON) + .send(generateStarMedatada(pkgName, {[credentials.name]: true})) + .expect(HTTP_STATUS.OK).end(function(err) { if (err) { - expect(err).toBeNull(); - return done(err); + expect(err).toBeNull(); + return done(err); } - expect(res.body.rows).toBeDefined(); - expect(res.body.rows).toHaveLength(1); - done(); - }); - }); - }); + request(app) + .get('/-/_view/starredByUser') + .set(HEADERS.AUTHORIZATION, buildToken(TOKEN_BEARER, token)) + .set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON) + .send(JSON.stringify({ + key: [credentials.name] + })) + .expect(HTTP_STATUS.OK) + .end(function(err, res) { + if (err) { + expect(err).toBeNull(); + return done(err); + } + expect(res.body.rows).toBeDefined(); + expect(res.body.rows).toHaveLength(1); + done(); + }); + }); + }); }); describe('should test (un)deprecate api', () => { const pkgName = '@scope/deprecate'; const credentials = { name: 'jota_deprecate', password: 'secretPass' }; - const version = '1.0.0'; + const version = '1.0.0' let token = ''; - beforeAll(async (done) => { + beforeAll(async (done) =>{ token = await getNewToken(request(app), credentials); - await putPackage( - request(app), - `/${pkgName}`, - generatePackageMetadata(pkgName, version), - token - ); + await putPackage(request(app), `/${pkgName}`, generatePackageMetadata(pkgName, version), token); done(); }); @@ -1001,7 +921,7 @@ describe('endpoint unit test', () => { expect(err).toBeNull(); return done(err); } - const [, res] = await getPackage(request(app), '', pkgName); + const [,res] = await getPackage(request(app), '', pkgName); expect(res.body.versions[version].deprecated).toEqual('get deprecated'); done(); }); @@ -1015,7 +935,7 @@ describe('endpoint unit test', () => { expect(err).toBeNull(); return done(err); } - const [, res] = await getPackage(request(app), '', pkgName); + const [,res] = await getPackage(request(app), '', pkgName); expect(res.body.versions[version].deprecated).not.toBeDefined(); done(); }); @@ -1024,50 +944,31 @@ describe('endpoint unit test', () => { let credentials = { name: 'only_publish', password: 'secretPass' }; let token = await getNewToken(request(app), credentials); const pkg = generateDeprecateMetadata(pkgName, version, 'get deprecated'); - const [err, res] = await putPackage( - request(app), - `/${encodeScopedUri(pkgName)}`, - pkg, - token - ); + const [err, res] = await putPackage(request(app), `/${encodeScopedUri(pkgName)}`, pkg, token); expect(err).not.toBeNull(); expect(res.body.error).toBeDefined(); - expect(res.body.error).toMatch( - /user only_publish is not allowed to unpublish package @scope\/deprecate/ - ); + expect(res.body.error).toMatch(/user only_publish is not allowed to unpublish package @scope\/deprecate/); credentials = { name: 'only_unpublish', password: 'secretPass' }; token = await getNewToken(request(app), credentials); - const [err2, res2] = await putPackage( - request(app), - `/${encodeScopedUri(pkgName)}`, - pkg, - token - ); + const [err2, res2] = await putPackage(request(app), `/${encodeScopedUri(pkgName)}`, pkg, token); expect(err2).not.toBeNull(); expect(res2.body.error).toBeDefined(); - expect(res2.body.error).toMatch( - /user only_unpublish is not allowed to publish package @scope\/deprecate/ - ); - }); + expect(res2.body.error).toMatch(/user only_unpublish is not allowed to publish package @scope\/deprecate/); + }) test('should deprecate multiple packages', async (done) => { - await putPackage( - request(app), - `/${pkgName}`, - generatePackageMetadata(pkgName, '1.0.1'), - token - ); + await putPackage(request(app), `/${pkgName}`, generatePackageMetadata(pkgName, '1.0.1'), token); const pkg = generateDeprecateMetadata(pkgName, version, 'get deprecated'); pkg.versions['1.0.1'] = { ...generateVersion(pkgName, '1.0.1'), - deprecated: 'get deprecated' + deprecated: 'get deprecated', }; await putPackage(request(app), `/${encodeScopedUri(pkgName)}`, pkg, token); - const [, res] = await getPackage(request(app), '', pkgName); + const [,res] = await getPackage(request(app), '', pkgName); expect(res.body.versions[version].deprecated).toEqual('get deprecated'); expect(res.body.versions['1.0.1'].deprecated).toEqual('get deprecated'); - done(); - }); + done() + }) }); }); }); diff --git a/test/unit/partials/mock-store/jquery/jquery-1.5.1.tgz b/packages/server/test/api/mock/store/@jquery/jquery/jquery-1.5.1.tgz similarity index 100% rename from test/unit/partials/mock-store/jquery/jquery-1.5.1.tgz rename to packages/server/test/api/mock/store/@jquery/jquery/jquery-1.5.1.tgz diff --git a/test/unit/partials/mock-store/@jquery/jquery/package.json b/packages/server/test/api/mock/store/@jquery/jquery/package.json similarity index 100% rename from test/unit/partials/mock-store/@jquery/jquery/package.json rename to packages/server/test/api/mock/store/@jquery/jquery/package.json diff --git a/test/unit/partials/mock-store/corrupted-package/package.json b/packages/server/test/api/mock/store/corrupted-package/package.json similarity index 100% rename from test/unit/partials/mock-store/corrupted-package/package.json rename to packages/server/test/api/mock/store/corrupted-package/package.json diff --git a/packages/server/test/api/mock/store/jquery/jquery-1.5.1.tgz b/packages/server/test/api/mock/store/jquery/jquery-1.5.1.tgz new file mode 100644 index 000000000..aca55f3db Binary files /dev/null and b/packages/server/test/api/mock/store/jquery/jquery-1.5.1.tgz differ diff --git a/packages/server/test/api/mock/store/jquery/package.json b/packages/server/test/api/mock/store/jquery/package.json new file mode 100644 index 000000000..1f76451fb --- /dev/null +++ b/packages/server/test/api/mock/store/jquery/package.json @@ -0,0 +1,4919 @@ +{ + "name": "jquery", + "versions": { + "1.5.1": { + "name": "jquery", + "description": "jQuery: The Write Less, Do More, JavaScript Library", + "url": "jquery.com", + "keywords": [ + "util", + "dom", + "jquery" + ], + "author": { + "name": "John Resig", + "email": "jeresig@gmail.com" + }, + "contributors": [], + "dependencies": { + "jsdom": "=0.1.20", + "htmlparser": ">= 1.7.3" + }, + "lib": "lib", + "main": "./dist/node-jquery.js", + "version": "1.5.1", + "_id": "jquery@1.5.1", + "engines": { + "node": "*" + }, + "_engineSupported": true, + "_npmVersion": "0.3.15", + "_nodeVersion": "v0.4.2", + "directories": { + "lib": "./lib" + }, + "files": [ + "" + ], + "_defaultsLoaded": true, + "dist": { + "shasum": "2ae2d661e906c1a01e044a71bb5b2743942183e5", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.5.1.tgz" + }, + "deprecated": "Versions of the jquery npm package older than 1.9.0 are patched versions that don't work in web browsers. Please upgrade to >=1.11.0." + }, + "1.6.2": { + "name": "jquery", + "description": "jQuery: The Write Less, Do More, JavaScript Library", + "url": "jquery.com", + "keywords": [ + "util", + "dom", + "jquery" + ], + "author": { + "name": "John Resig", + "email": "jeresig@gmail.com" + }, + "contributors": [], + "dependencies": { + "jsdom": ">=0.2.0", + "htmlparser": ">= 1.7.3" + }, + "lib": "lib", + "main": "./dist/node-jquery.js", + "version": "1.6.2", + "_npmJsonOpts": { + "file": "/Users/coolaj86/.npm/jquery/1.6.2/package/package.json", + "wscript": false, + "contributors": false, + "serverjs": false + }, + "_id": "jquery@1.6.2", + "devDependencies": {}, + "engines": { + "node": "*" + }, + "_engineSupported": true, + "_npmVersion": "1.0.15", + "_nodeVersion": "v0.4.8", + "_defaultsLoaded": true, + "dist": { + "shasum": "01757a4c5beea29e8ae697527c3131abbe997a28", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.6.2.tgz" + }, + "scripts": {}, + "directories": {}, + "deprecated": "Versions of the jquery npm package older than 1.9.0 are patched versions that don't work in web browsers. Please upgrade to >=1.11.0." + }, + "1.6.3": { + "name": "jquery", + "description": "jQuery: The Write Less, Do More, JavaScript Library (packaged for Node.JS)", + "url": "http://jquery.com", + "keywords": [ + "util", + "dom", + "jquery" + ], + "author": { + "name": "John Resig", + "email": "jeresig@gmail.com" + }, + "contributors": [], + "dependencies": { + "jsdom": ">=0.2.0", + "htmlparser": ">= 1.7.3" + }, + "lib": ".", + "main": "./node-jquery.js", + "version": "1.6.3", + "_npmJsonOpts": { + "file": "/Users/coolaj86/.npm/jquery/1.6.3/package/package.json", + "wscript": false, + "contributors": false, + "serverjs": false + }, + "_id": "jquery@1.6.3", + "devDependencies": {}, + "engines": { + "node": "*" + }, + "_engineSupported": true, + "_npmVersion": "1.0.22", + "_nodeVersion": "v0.4.8", + "_defaultsLoaded": true, + "dist": { + "shasum": "e1f732fa7e718a6adb3ec20ae0eb2a64fd95ef01", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.6.3.tgz" + }, + "scripts": {}, + "maintainers": [ + { + "name": "coolaj86", + "email": "coolaj86@gmail.com" + } + ], + "directories": {}, + "deprecated": "Versions of the jquery npm package older than 1.9.0 are patched versions that don't work in web browsers. Please upgrade to >=1.11.0." + }, + "1.7.2": { + "name": "jquery", + "description": "jQuery: The Write Less, Do More, JavaScript Library (packaged for Node.JS)", + "version": "1.7.2", + "url": "http://jquery.com", + "homepage": "https://github.com/coolaj86/node-jquery", + "author": { + "name": "James Morrin", + "email": "treasonx@gmail.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/coolaj86/node-jquery.git" + }, + "bugs": { + "url": "https://github.com/coolaj86/node-jquery/issues" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/coolaj86/node-jquery/blob/master/LICENSE-MIT" + } + ], + "main": "lib/node-jquery", + "engines": { + "node": "0.6" + }, + "scripts": { + "test": "grunt test" + }, + "dependencies": { + "jsdom": "~0.2.14", + "htmlparser": "1.7.6", + "xmlhttprequest": "~1.3.0" + }, + "devDependencies": { + "grunt": "~0.3.8", + "nodeunit": "~0.7.4" + }, + "keywords": [ + "util", + "dom", + "jquery" + ], + "_npmUser": { + "name": "treasonx", + "email": "treasonx@gmail.com" + }, + "_id": "jquery@1.7.2", + "optionalDependencies": {}, + "_engineSupported": true, + "_npmVersion": "1.1.12", + "_nodeVersion": "v0.6.14", + "_defaultsLoaded": true, + "dist": { + "shasum": "a93746763aca75a34df4c16395b0826310d0eaf2", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.7.2.tgz" + }, + "maintainers": [ + { + "name": "coolaj86", + "email": "coolaj86@gmail.com" + }, + { + "name": "treasonx", + "email": "treasonx@gmail.com" + } + ], + "directories": {}, + "deprecated": "Versions of the jquery npm package older than 1.9.0 are patched versions that don't work in web browsers. Please upgrade to >=1.11.0." + }, + "1.7.3": { + "name": "jquery", + "description": "jQuery: The Write Less, Do More, JavaScript Library (packaged for Node.JS)", + "version": "1.7.3", + "url": "http://jquery.com", + "homepage": "https://github.com/coolaj86/node-jquery", + "author": { + "name": "James Morrin", + "email": "treasonx@gmail.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/coolaj86/node-jquery.git" + }, + "bugs": { + "url": "https://github.com/coolaj86/node-jquery/issues" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/coolaj86/node-jquery/blob/master/LICENSE-MIT" + } + ], + "main": "lib/node-jquery", + "engines": { + "node": ">=0.6" + }, + "scripts": { + "test": "grunt test" + }, + "dependencies": { + "jsdom": "~0.2.14", + "htmlparser": "1.7.6", + "xmlhttprequest": "~1.4.2", + "location": "0.0.1", + "navigator": "~1.0.1" + }, + "devDependencies": { + "grunt": "~0.3.8", + "nodeunit": "~0.7.4" + }, + "keywords": [ + "util", + "dom", + "jquery" + ], + "_id": "jquery@1.7.3", + "dist": { + "shasum": "e3d00a71612ac7e9b554b438e0987d0272ddba94", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.7.3.tgz" + }, + "maintainers": [ + { + "name": "coolaj86", + "email": "coolaj86@gmail.com" + }, + { + "name": "treasonx", + "email": "treasonx@gmail.com" + } + ], + "directories": {}, + "deprecated": "Versions of the jquery npm package older than 1.9.0 are patched versions that don't work in web browsers. Please upgrade to >=1.11.0." + }, + "1.8.2": { + "name": "jquery", + "description": "jQuery: The Write Less, Do More, JavaScript Library (packaged for Node.JS)", + "version": "1.8.2", + "url": "http://jquery.com", + "homepage": "https://github.com/coolaj86/node-jquery", + "author": { + "name": "James Morrin", + "email": "treasonx@gmail.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/coolaj86/node-jquery.git" + }, + "bugs": { + "url": "https://github.com/coolaj86/node-jquery/issues" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/coolaj86/node-jquery/blob/master/LICENSE-MIT" + } + ], + "main": "lib/node-jquery", + "engines": { + "node": ">=0.6" + }, + "scripts": { + "test": "grunt test" + }, + "dependencies": { + "jsdom": "~0.2.14", + "htmlparser": "1.7.6", + "xmlhttprequest": "~1.4.2", + "location": "0.0.1", + "navigator": "~1.0.1" + }, + "devDependencies": { + "grunt": "~0.3.8", + "nodeunit": "~0.7.4" + }, + "keywords": [ + "util", + "dom", + "jquery" + ], + "_id": "jquery@1.8.2", + "dist": { + "shasum": "46790ae07c6de38124eda90bbf7336b43df93305", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.8.2.tgz" + }, + "_npmVersion": "1.1.61", + "_npmUser": { + "name": "treasonx", + "email": "treasonx@gmail.com" + }, + "maintainers": [ + { + "name": "coolaj86", + "email": "coolaj86@gmail.com" + }, + { + "name": "treasonx", + "email": "treasonx@gmail.com" + } + ], + "directories": {}, + "deprecated": "Versions of the jquery npm package older than 1.9.0 are patched versions that don't work in web browsers. Please upgrade to >=1.11.0." + }, + "1.8.3": { + "name": "jquery", + "description": "jQuery: The Write Less, Do More, JavaScript Library (packaged for Node.JS)", + "version": "1.8.3", + "url": "http://jquery.com", + "homepage": "https://github.com/coolaj86/node-jquery", + "author": { + "name": "James Morrin", + "email": "treasonx@gmail.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/coolaj86/node-jquery.git" + }, + "bugs": { + "url": "https://github.com/coolaj86/node-jquery/issues" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/coolaj86/node-jquery/blob/master/LICENSE-MIT" + } + ], + "main": "lib/node-jquery", + "engines": { + "node": ">=0.6" + }, + "scripts": { + "test": "grunt test" + }, + "dependencies": { + "jsdom": "~0.2.14", + "htmlparser": "1.7.6", + "xmlhttprequest": "~1.4.2", + "location": "0.0.1", + "navigator": "~1.0.1", + "contextify": "~0.1.3" + }, + "devDependencies": { + "grunt": "~0.3.8", + "nodeunit": "~0.7.4" + }, + "keywords": [ + "util", + "dom", + "jquery" + ], + "_id": "jquery@1.8.3", + "dist": { + "shasum": "cfa2941c05a83d966f21347f759a6d15281c60cc", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.8.3.tgz" + }, + "_npmVersion": "1.1.61", + "_npmUser": { + "name": "treasonx", + "email": "treasonx@gmail.com" + }, + "maintainers": [ + { + "name": "coolaj86", + "email": "coolaj86@gmail.com" + }, + { + "name": "treasonx", + "email": "treasonx@gmail.com" + } + ], + "directories": {}, + "deprecated": "Versions of the jquery npm package older than 1.9.0 are patched versions that don't work in web browsers. Please upgrade to >=1.11.0." + }, + "2.1.0-beta2": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.0-beta2", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/master/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "archiver": "~0.4.10", + "grunt": "~0.4.1", + "grunt-bower-task": "~0.3.2", + "grunt-cli": "~0.1.11", + "grunt-compare-size": "~0.4.0", + "grunt-contrib-jshint": "~0.7.0", + "grunt-contrib-uglify": "~0.2.7", + "grunt-contrib-watch": "~0.5.3", + "grunt-git-authors": "~1.2.0", + "grunt-jscs-checker": "~0.2.3", + "grunt-jsonlint": "~1.0.1", + "gzip-js": "0.3.2", + "load-grunt-tasks": "~0.2.0", + "testswarm": "~1.1.0", + "requirejs": "~2.1.9", + "which": "~1.0.5" + }, + "_id": "jquery@2.1.0-beta2", + "dist": { + "shasum": "e0fbbe2beb45b4d8f808362c7c99ef5bfee7d8c6", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.0-beta2.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.11", + "_npmUser": { + "name": "jquery", + "email": "dave.methvin@gmail.com" + }, + "maintainers": [ + { + "name": "rwaldron", + "email": "waldron.rick@gmail.com" + }, + { + "name": "jquery", + "email": "npm@jquery.com" + } + ], + "directories": {} + }, + "2.1.0-beta3": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.0-beta3", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.0-beta3/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.0-beta3/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "archiver": "0.4.10", + "gzip-js": "0.3.2", + "testswarm": "1.1.0", + "load-grunt-tasks": "0.2.0", + "requirejs": "2.1.9", + "shelljs": "0.2.6", + "grunt": "0.4.2", + "grunt-cli": "0.1.11", + "grunt-contrib-jshint": "0.7.2", + "grunt-contrib-uglify": "0.2.7", + "grunt-contrib-watch": "0.5.3", + "grunt-bowercopy": "0.4.1", + "grunt-compare-size": "0.4.0", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.2.6", + "grunt-jsonlint": "1.0.4" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@2.1.0-beta3", + "dist": { + "shasum": "5a89b624d8fa625fe5fa83a12a9acb1ef8a11d02", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.0-beta3.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.21", + "_npmUser": { + "name": "jquery", + "email": "npm@jquery.org" + }, + "maintainers": [ + { + "name": "jquery", + "email": "npm@jquery.org" + } + ], + "directories": {} + }, + "1.11.0-beta3": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.0-beta3", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.0-beta3/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.0-beta3/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "archiver": "0.4.10", + "gzip-js": "0.3.2", + "testswarm": "1.1.0", + "load-grunt-tasks": "0.2.0", + "requirejs": "2.1.9", + "shelljs": "0.2.6", + "grunt": "0.4.2", + "grunt-cli": "0.1.11", + "grunt-contrib-jshint": "0.7.2", + "grunt-contrib-uglify": "0.2.7", + "grunt-contrib-watch": "0.5.3", + "grunt-bowercopy": "0.4.1", + "grunt-compare-size": "0.4.0", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.2.6", + "grunt-jsonlint": "1.0.4" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@1.11.0-beta3", + "dist": { + "shasum": "0464a6aba9f35f6c83a203caa23ab420909ce852", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.0-beta3.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.21", + "_npmUser": { + "name": "jquery", + "email": "npm@jquery.org" + }, + "maintainers": [ + { + "name": "jquery", + "email": "npm@jquery.org" + } + ], + "directories": {} + }, + "1.11.0-rc1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.0-rc1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.0-rc1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.0-rc1/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "archiver": "0.4.10", + "gzip-js": "0.3.2", + "testswarm": "1.1.0", + "load-grunt-tasks": "0.2.0", + "requirejs": "2.1.9", + "shelljs": "0.2.6", + "grunt": "0.4.2", + "grunt-cli": "0.1.11", + "grunt-contrib-jshint": "0.7.2", + "grunt-contrib-uglify": "0.2.7", + "grunt-contrib-watch": "0.5.3", + "grunt-bowercopy": "0.5.0", + "grunt-compare-size": "0.4.0", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.2.6", + "grunt-jsonlint": "1.0.4" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@1.11.0-rc1", + "dist": { + "shasum": "c2f6a4877374647b20b080c478d8dbcdfb4960ee", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.0-rc1.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.23", + "_npmUser": { + "name": "jquery", + "email": "dave.methvin@gmail.com" + }, + "maintainers": [ + { + "name": "jquery", + "email": "dave.methvin@gmail.com" + } + ], + "directories": {} + }, + "2.1.0-rc1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.0-rc1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.0-rc1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.0-rc1/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "archiver": "0.4.10", + "gzip-js": "0.3.2", + "testswarm": "1.1.0", + "load-grunt-tasks": "0.2.0", + "requirejs": "2.1.9", + "shelljs": "0.2.6", + "grunt": "0.4.2", + "grunt-cli": "0.1.11", + "grunt-contrib-jshint": "0.7.2", + "grunt-contrib-uglify": "0.2.7", + "grunt-contrib-watch": "0.5.3", + "grunt-bowercopy": "0.5.0", + "grunt-compare-size": "0.4.0", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.2.6", + "grunt-jsonlint": "1.0.4" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@2.1.0-rc1", + "dist": { + "shasum": "8c9f5d9a055c2fedb3f5269617ae649497d6a3b0", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.0-rc1.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.14", + "_npmUser": { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + "maintainers": [ + { + "name": "jquery", + "email": "npm@jquery.com" + }, + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + } + ], + "directories": {} + }, + "1.11.0": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.0", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.0/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.0/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "archiver": "0.4.10", + "gzip-js": "0.3.2", + "testswarm": "1.1.0", + "load-grunt-tasks": "0.2.0", + "requirejs": "2.1.9", + "shelljs": "0.2.6", + "grunt": "0.4.2", + "grunt-cli": "0.1.11", + "grunt-contrib-jshint": "0.7.2", + "grunt-contrib-uglify": "0.2.7", + "grunt-contrib-watch": "0.5.3", + "grunt-bowercopy": "0.5.0", + "grunt-compare-size": "0.4.0", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.2.6", + "grunt-jsonlint": "1.0.4" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@1.11.0", + "dist": { + "shasum": "c67ceee19b403650d682adcf39d5c9009814d949", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.0.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.21", + "_npmUser": { + "name": "jquery", + "email": "npm@jquery.org" + }, + "maintainers": [ + { + "name": "jquery", + "email": "npm@jquery.org" + } + ], + "directories": {} + }, + "2.1.0": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.0", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.0/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.0/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "archiver": "0.4.10", + "gzip-js": "0.3.2", + "testswarm": "1.1.0", + "load-grunt-tasks": "0.2.0", + "requirejs": "2.1.9", + "shelljs": "0.2.6", + "grunt": "0.4.2", + "grunt-cli": "0.1.11", + "grunt-contrib-jshint": "0.7.2", + "grunt-contrib-uglify": "0.2.7", + "grunt-contrib-watch": "0.5.3", + "grunt-bowercopy": "0.5.0", + "grunt-compare-size": "0.4.0", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.2.6", + "grunt-jsonlint": "1.0.4" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@2.1.0", + "dist": { + "shasum": "1c9a8c971d2b53dae10d72e16cbb5a1df16a4ace", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.0.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.21", + "_npmUser": { + "name": "jquery", + "email": "npm@jquery.org" + }, + "maintainers": [ + { + "name": "jquery", + "email": "npm@jquery.org" + } + ], + "directories": {} + }, + "2.1.1-beta1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.1-beta1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.1-beta1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.1-beta1/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.3.2", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@2.1.1-beta1", + "dist": { + "shasum": "6306c8ea1d104775f3ef8f5c26f0a32acd710a11", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.1-beta1.tgz" + }, + "_from": ".", + "_npmVersion": "1.4.6", + "_npmUser": { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + "maintainers": [ + { + "name": "jquery", + "email": "npm@jquery.com" + }, + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + } + ], + "directories": {} + }, + "1.11.1-beta1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.1-beta1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.1-beta1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.1-beta1/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.3.2", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@1.11.1-beta1", + "dist": { + "shasum": "c7eacde5e1ae06e029f1cd1b2dd444953a33e843", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.1-beta1.tgz" + }, + "_from": ".", + "_npmVersion": "1.4.6", + "_npmUser": { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + "maintainers": [ + { + "name": "jquery", + "email": "npm@jquery.com" + }, + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + } + ], + "directories": {} + }, + "2.1.1-rc1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.1-rc1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.1-rc1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.1-rc1/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@2.1.1-rc1", + "_shasum": "95c494fdbbd0cefc305260e11ad46ae49a387c3d", + "_from": ".", + "_npmVersion": "1.4.7", + "_npmUser": { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + } + ], + "dist": { + "shasum": "95c494fdbbd0cefc305260e11ad46ae49a387c3d", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.1-rc1.tgz" + }, + "directories": {} + }, + "1.11.1-rc1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.1-rc1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.1-rc1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.1-rc1/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@1.11.1-rc1", + "_shasum": "666a7df02488b48732d96e8ab9bdd34f61dd4238", + "_from": ".", + "_npmVersion": "1.4.7", + "_npmUser": { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + } + ], + "dist": { + "shasum": "666a7df02488b48732d96e8ab9bdd34f61dd4238", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.1-rc1.tgz" + }, + "directories": {} + }, + "2.1.1-rc2": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.1-rc2", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.1-rc2/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.1-rc2/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@2.1.1-rc2", + "dist": { + "shasum": "99833e415efa7ac8a4efecc5df6894b2f938a598", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.1-rc2.tgz" + }, + "_from": ".", + "_npmVersion": "1.2.25", + "_npmUser": { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + } + ], + "directories": {} + }, + "1.11.1-rc2": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.1-rc2", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.1-rc2/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.1-rc2/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@1.11.1-rc2", + "dist": { + "shasum": "a4ef3edde0864d8524c5e72f59c459fd7a9ebd17", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.1-rc2.tgz" + }, + "_from": ".", + "_npmVersion": "1.2.25", + "_npmUser": { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + } + ], + "directories": {} + }, + "2.1.1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.1/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@2.1.1", + "dist": { + "shasum": "828fc60f50f7ee5983363ef4eb01c5f70af4bd5b", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.1.tgz" + }, + "_from": ".", + "_npmVersion": "1.2.25", + "_npmUser": { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + } + ], + "directories": {} + }, + "1.11.1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.1/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@1.11.1", + "dist": { + "shasum": "b6ec928590112ebed69e1e49cbfd0025ccd60ddb", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.1.tgz" + }, + "_from": ".", + "_npmVersion": "1.2.25", + "_npmUser": { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + } + ], + "directories": {} + }, + "1.9.1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.9.1", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/master/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt" + } + ], + "scripts": { + "test": "grunt" + }, + "dependencies": {}, + "devDependencies": { + "grunt-compare-size": "~0.3.0", + "grunt-git-authors": "~1.1.0", + "grunt-update-submodules": "~0.2.0", + "grunt-contrib-watch": "~0.1.1", + "grunt-contrib-jshint": "~0.1.1", + "grunt-contrib-uglify": "~0.1.1", + "grunt": "~0.4.0", + "testswarm": "0.2.2" + }, + "keywords": [], + "gitHead": "d71f6a53927ad02d728503385d15539b73d21ac8", + "_id": "jquery@1.9.1", + "_shasum": "e4cd4835faaefbade535857613c0fc3ff2adaf34", + "_from": ".", + "_npmVersion": "1.5.0-alpha-1", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "e4cd4835faaefbade535857613c0fc3ff2adaf34", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.9.1.tgz" + }, + "directories": {} + }, + "2.1.2": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.2", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.2/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.2/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "gitHead": "a04f5ff9795fd6292117563623db44cf3f875868", + "_id": "jquery@2.1.2", + "_shasum": "b68f154cb2ea4731924883e9fe20ec199d1dc1e2", + "_from": ".", + "_npmVersion": "1.4.28", + "_npmUser": { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "b68f154cb2ea4731924883e9fe20ec199d1dc1e2", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.2.tgz" + }, + "directories": {} + }, + "1.11.2": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.2", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.2/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.2/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "gitHead": "9690801db01709bfbff5f977d07fb7cc14472908", + "_id": "jquery@1.11.2", + "_shasum": "30ab26857211c37caa83da0f6903155fe49bb72d", + "_from": ".", + "_npmVersion": "1.4.28", + "_npmUser": { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "30ab26857211c37caa83da0f6903155fe49bb72d", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.2.tgz" + }, + "directories": {} + }, + "2.1.3": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.3", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.3/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.3/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "jsdom": "1.5.0", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "gitHead": "8f2a9d9272d6ed7f32d3a484740ab342c02541e0", + "_id": "jquery@2.1.3", + "_shasum": "6ec55204673d505d39432c5bf5cfad10e1dbad2e", + "_from": ".", + "_npmVersion": "2.1.14", + "_nodeVersion": "0.11.14", + "_npmUser": { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "6ec55204673d505d39432c5bf5cfad10e1dbad2e", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.3.tgz" + }, + "directories": {} + }, + "2.1.4": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.4", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.4/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.4/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "jsdom": "1.5.0", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "gitHead": "7751e69b615c6eca6f783a81e292a55725af6b85", + "_id": "jquery@2.1.4", + "_shasum": "228bde698a0c61431dc2630a6a154f15890d2317", + "_from": ".", + "_npmVersion": "2.7.4", + "_nodeVersion": "0.12.2", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "228bde698a0c61431dc2630a6a154f15890d2317", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.4.tgz" + }, + "directories": {} + }, + "1.11.3": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.3", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.3/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.3/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "gitHead": "1472290917f17af05e98007136096784f9051fab", + "_id": "jquery@1.11.3", + "_shasum": "dd8b74278b27102d29df63eae28308a8cfa1b583", + "_from": ".", + "_npmVersion": "2.7.4", + "_nodeVersion": "0.12.2", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "dd8b74278b27102d29df63eae28308a8cfa1b583", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.3.tgz" + }, + "directories": {} + }, + "3.0.0-alpha1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.0.0-alpha1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.0.0-alpha1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.7.0", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs-checker": "0.8.1", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "load-grunt-tasks": "1.0.0", + "native-promise-only": "0.7.8-a", + "promises-aplus-tests": "2.1.0", + "q": "1.1.2", + "qunitjs": "1.17.1", + "requirejs": "2.1.17", + "sinon": "1.10.3", + "sizzle": "2.2.0", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "jsdomVersions": { + "node": "3.1.2", + "iojs": "5.3.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "2c92869b752bb8e0fe74c3183f40f3f58b7b906d", + "_id": "jquery@3.0.0-alpha1", + "_shasum": "3493d672266e21c2dffb2714f935448edebe3c62", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "3493d672266e21c2dffb2714f935448edebe3c62", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.0.0-alpha1.tgz" + }, + "directories": {} + }, + "1.12.0": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.12.0", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.12-stable/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "npm": "2.1.12", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.12.2", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "efbdc6e3f0fa3d3cd4d3d8bfa37990b707f7c2e1", + "_id": "jquery@1.12.0", + "_shasum": "44653be4e3e4628b106bf2141dfd10fbca6021ef", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.2.0", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "44653be4e3e4628b106bf2141dfd10fbca6021ef", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.12.0.tgz" + }, + "directories": {} + }, + "2.2.0": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.2.0", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.2.0/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.10.3", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "6fc01e29bdad0964f62ef56d01297039cdcadbe5", + "_id": "jquery@2.2.0", + "_shasum": "d0e84ebbf199da51bf7ec39307f19b35754e9cba", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.2.0", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "d0e84ebbf199da51bf7ec39307f19b35754e9cba", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.2.0.tgz" + }, + "directories": {} + }, + "3.0.0-beta1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.0.0-beta1", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.0.0-beta1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "native-promise-only": "0.7.8-a", + "promises-aplus-tests": "2.1.0", + "q": "1.1.2", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.10.3", + "sizzle": "2.3.0", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "2ef761afd9addf78193f5191ece03bb20c9182c2", + "_id": "jquery@3.0.0-beta1", + "_shasum": "d2a4e368e2eed7050bf66abbbb54db2ea345349d", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.2.0", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "d2a4e368e2eed7050bf66abbbb54db2ea345349d", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.0.0-beta1.tgz" + }, + "directories": {} + }, + "1.12.1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.12.1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.12-stable/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "npm": "2.1.12", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.12.2", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "56ead6ffbf8560c521e7e94518d35db42b19f5f3", + "_id": "jquery@1.12.1", + "_shasum": "9cc34ce4780d4ceb90c44328f071064f01960c18", + "_from": ".", + "_npmVersion": "2.14.19", + "_nodeVersion": "0.10.42", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "9cc34ce4780d4ceb90c44328f071064f01960c18", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.12.1.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-5-east.internal.npmjs.com", + "tmp": "tmp/jquery-1.12.1.tgz_1456168080336_0.4474994211923331" + }, + "directories": {} + }, + "2.2.1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.2.1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.2.1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.10.3", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "788eaba2f83e7b7445c7a83a50c81c0704423874", + "_id": "jquery@2.2.1", + "_shasum": "3c3e16854ad3d2ac44ac65021b17426d22ad803f", + "_from": ".", + "_npmVersion": "2.14.19", + "_nodeVersion": "0.10.42", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "3c3e16854ad3d2ac44ac65021b17426d22ad803f", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.2.1.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-9-west.internal.npmjs.com", + "tmp": "tmp/jquery-2.2.1.tgz_1456168325917_0.42471840139478445" + }, + "directories": {} + }, + "1.12.2": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.12.2", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.12-stable/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "npm": "2.1.12", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.12.2", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "a9b5f8ac96f6aa7bfc7b0795cb16d65c4f15b64e", + "_id": "jquery@1.12.2", + "_shasum": "b8a8b45937312a19eebbcf5a0589b0311c8220bb", + "_from": ".", + "_npmVersion": "3.7.3", + "_nodeVersion": "5.8.0", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "b8a8b45937312a19eebbcf5a0589b0311c8220bb", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.12.2.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/jquery-1.12.2.tgz_1458236759160_0.3557943068444729" + }, + "directories": {} + }, + "2.2.2": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.2.2", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.2.2/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.10.3", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "086d381cd2f3b4b8b0af85ecb2c9593a61e5b4bd", + "_id": "jquery@2.2.2", + "_shasum": "3e302dc61eb329a21e9efac937d731f061134c59", + "_from": ".", + "_npmVersion": "3.7.3", + "_nodeVersion": "5.8.0", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "3e302dc61eb329a21e9efac937d731f061134c59", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.2.2.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/jquery-2.2.2.tgz_1458237146417_0.4190880397800356" + }, + "directories": {} + }, + "1.12.3": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.12.3", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.12-stable/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "npm": "2.1.12", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.12.2", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "3a43d7e563314bf32970b773dd31ecf2b90813dd", + "_id": "jquery@1.12.3", + "_shasum": "1298b88b908e7c7f7501eb8c1a61f1ac8337b531", + "_from": ".", + "_npmVersion": "3.7.3", + "_nodeVersion": "5.8.0", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "1298b88b908e7c7f7501eb8c1a61f1ac8337b531", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.12.3.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/jquery-1.12.3.tgz_1459884094815_0.5328964435029775" + }, + "directories": {} + }, + "2.2.3": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.2.3", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.2.3/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.10.3", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "af22a351b2ea5801ffb1695abb3bb34d5bed9198", + "_id": "jquery@2.2.3", + "_shasum": "45e07e4190334de36c9e1a64b43b1f1373d91758", + "_from": ".", + "_npmVersion": "3.7.3", + "_nodeVersion": "5.8.0", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "45e07e4190334de36c9e1a64b43b1f1373d91758", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.2.3.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/jquery-2.2.3.tgz_1459884434885_0.992488760035485" + }, + "directories": {} + }, + "1.12.4": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.12.4", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.12-stable/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "npm": "2.1.12", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.12.2", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "5e89585e0121e72ff47de177c5ef604f3089a53d", + "_id": "jquery@1.12.4", + "_shasum": "01e1dfba290fe73deba77ceeacb0f9ba2fec9e0c", + "_from": ".", + "_npmVersion": "2.15.1", + "_nodeVersion": "0.10.45", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "01e1dfba290fe73deba77ceeacb0f9ba2fec9e0c", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.12.4.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/jquery-1.12.4.tgz_1463764744844_0.4810373710934073" + }, + "directories": {} + }, + "2.2.4": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.2.4", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.2.4/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.10.3", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "c0185ab7c75aab88762c5aae780b9d83b80eda72", + "_id": "jquery@2.2.4", + "_shasum": "2c89d6889b5eac522a7eea32c14521559c6cbf02", + "_from": ".", + "_npmVersion": "2.15.1", + "_nodeVersion": "0.10.45", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "2c89d6889b5eac522a7eea32c14521559c6cbf02", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.2.4.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/jquery-2.2.4.tgz_1463765166836_0.5834389675874263" + }, + "directories": {} + }, + "3.0.0-rc1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.0.0-rc1", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.0.0-rc1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "babel-preset-es2015": "6.6.0", + "commitplease": "2.3.1", + "core-js": "2.2.2", + "cross-spawn": "2.2.3", + "grunt": "1.0.1", + "grunt-babel": "6.0.0", + "grunt-cli": "1.2.0", + "grunt-compare-size": "0.4.2", + "grunt-contrib-jshint": "1.0.0", + "grunt-contrib-uglify": "1.0.1", + "grunt-contrib-watch": "1.0.0", + "grunt-git-authors": "3.2.0", + "grunt-jscs": "2.8.0", + "grunt-jsonlint": "1.0.7", + "grunt-newer": "1.2.0", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "husky": "0.11.4", + "insight": "0.8.1", + "jsdom": "5.6.1", + "load-grunt-tasks": "3.5.0", + "native-promise-only": "0.8.1", + "promises-aplus-tests": "2.1.1", + "q": "1.4.1", + "qunit-assert-step": "1.0.3", + "qunitjs": "1.23.1", + "requirejs": "2.2.0", + "sinon": "1.17.3", + "sizzle": "2.3.0", + "strip-json-comments": "2.0.1", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test", + "precommit": "grunt precommit_lint" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Support", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "e503a93188dc4b5b42e2340f805f2d90b404bc50", + "_id": "jquery@3.0.0-rc1", + "_shasum": "d69fc540b0a56be13e8aecde5a8766ade7a44f8e", + "_from": ".", + "_npmVersion": "2.15.1", + "_nodeVersion": "0.10.45", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "d69fc540b0a56be13e8aecde5a8766ade7a44f8e", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.0.0-rc1.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/jquery-3.0.0-rc1.tgz_1463771627380_0.12211154378019273" + }, + "directories": {} + }, + "3.0.0": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.0.0", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.0.0/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "babel-preset-es2015": "6.6.0", + "commitplease": "2.3.1", + "core-js": "2.2.2", + "cross-spawn": "2.2.3", + "grunt": "1.0.1", + "grunt-babel": "6.0.0", + "grunt-cli": "1.2.0", + "grunt-compare-size": "0.4.2", + "grunt-contrib-jshint": "1.0.0", + "grunt-contrib-uglify": "1.0.1", + "grunt-contrib-watch": "1.0.0", + "grunt-git-authors": "3.2.0", + "grunt-jscs": "2.8.0", + "grunt-jsonlint": "1.0.7", + "grunt-newer": "1.2.0", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "husky": "0.11.4", + "insight": "0.8.1", + "jsdom": "5.6.1", + "load-grunt-tasks": "3.5.0", + "native-promise-only": "0.8.1", + "promises-aplus-tests": "2.1.1", + "q": "1.4.1", + "qunit-assert-step": "1.0.3", + "qunitjs": "1.23.1", + "requirejs": "2.2.0", + "sinon": "1.17.3", + "sizzle": "2.3.0", + "strip-json-comments": "2.0.1", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test", + "precommit": "grunt precommit_lint" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Support", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "0078f86be166a8747819d5d1516776a662cb69df", + "_id": "jquery@3.0.0", + "_shasum": "95a2a9541291a9f819e016f85ba247116d03e4ab", + "_from": ".", + "_npmVersion": "2.15.1", + "_nodeVersion": "0.10.45", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "95a2a9541291a9f819e016f85ba247116d03e4ab", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.0.0.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/jquery-3.0.0.tgz_1465497191024_0.9057256667874753" + }, + "directories": {} + }, + "3.1.0": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.1.0", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.1.0/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "babel-preset-es2015": "6.6.0", + "commitplease": "2.3.1", + "core-js": "2.2.2", + "cross-spawn": "2.2.3", + "eslint-config-jquery": "0.1.6", + "grunt": "1.0.1", + "grunt-babel": "6.0.0", + "grunt-cli": "1.2.0", + "grunt-compare-size": "0.4.2", + "grunt-contrib-uglify": "1.0.1", + "grunt-contrib-watch": "1.0.0", + "grunt-eslint": "18.1.0", + "grunt-git-authors": "3.2.0", + "grunt-jsonlint": "1.0.7", + "grunt-newer": "1.2.0", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "husky": "0.11.4", + "insight": "0.8.1", + "jsdom": "5.6.1", + "load-grunt-tasks": "3.5.0", + "native-promise-only": "0.8.1", + "promises-aplus-tests": "2.1.1", + "q": "1.4.1", + "qunit-assert-step": "1.0.3", + "qunitjs": "1.23.1", + "requirejs": "2.2.0", + "sinon": "1.17.3", + "sizzle": "2.3.0", + "strip-json-comments": "2.0.1", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test", + "precommit": "grunt precommit_lint" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Support", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "6f02bc382c0529d3b4f68f6b2ad21876642dbbfe", + "_id": "jquery@3.1.0", + "_shasum": "129f6f1ae94b18f09010b008d0d6011e40613d7f", + "_from": ".", + "_npmVersion": "2.15.8", + "_nodeVersion": "4.4.7", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "129f6f1ae94b18f09010b008d0d6011e40613d7f", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.1.0.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/jquery-3.1.0.tgz_1467927964329_0.882518710102886" + }, + "directories": {} + }, + "3.1.1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.1.1", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.1.1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "babel-preset-es2015": "6.6.0", + "commitplease": "2.6.1", + "core-js": "2.2.2", + "cross-spawn": "2.2.3", + "eslint-config-jquery": "1.0.0", + "grunt": "1.0.1", + "grunt-babel": "6.0.0", + "grunt-cli": "1.2.0", + "grunt-compare-size": "0.4.2", + "grunt-contrib-uglify": "1.0.1", + "grunt-contrib-watch": "1.0.0", + "grunt-eslint": "19.0.0", + "grunt-git-authors": "3.2.0", + "grunt-jsonlint": "1.0.7", + "grunt-newer": "1.2.0", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "husky": "0.11.4", + "insight": "0.8.1", + "jsdom": "5.6.1", + "load-grunt-tasks": "3.5.0", + "native-promise-only": "0.8.1", + "promises-aplus-tests": "2.1.2", + "q": "1.4.1", + "qunit-assert-step": "1.0.3", + "qunitjs": "1.23.1", + "requirejs": "2.2.0", + "sinon": "1.17.3", + "sizzle": "2.3.3", + "strip-json-comments": "2.0.1", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test:slow", + "precommit": "grunt lint:newer", + "commitmsg": "node node_modules/commitplease" + }, + "commitplease": { + "nohook": true, + "components": [ + "Docs", + "Tests", + "Build", + "Support", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ], + "markerPattern": "^((clos|fix|resolv)(e[sd]|ing))|(refs?)", + "ticketPattern": "^((Closes|Fixes) ([a-zA-Z]{2,}-)[0-9]+)|(Refs? [^#])" + }, + "gitHead": "1b30f3ad466ebf2714d47eda34dbd7fdf6849fe3", + "_id": "jquery@3.1.1", + "_shasum": "347c1c21c7e004115e0a4da32cece041fad3c8a3", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.6.0", + "_npmUser": { + "name": "timmywil", + "email": "4timmywil@gmail.com" + }, + "dist": { + "shasum": "347c1c21c7e004115e0a4da32cece041fad3c8a3", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.1.1.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/jquery-3.1.1.tgz_1474583566957_0.15473420196212828" + }, + "directories": {} + }, + "3.2.0": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.2.0", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "JS Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.2.0/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "babel-preset-es2015": "6.6.0", + "commitplease": "2.6.1", + "core-js": "2.2.2", + "cross-spawn": "2.2.3", + "eslint-config-jquery": "1.0.0", + "grunt": "1.0.1", + "grunt-babel": "6.0.0", + "grunt-cli": "1.2.0", + "grunt-compare-size": "0.4.2", + "grunt-contrib-uglify": "1.0.1", + "grunt-contrib-watch": "1.0.0", + "grunt-eslint": "19.0.0", + "grunt-git-authors": "3.2.0", + "grunt-jsonlint": "1.0.7", + "grunt-newer": "1.2.0", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "husky": "0.11.4", + "insight": "0.8.1", + "jsdom": "5.6.1", + "load-grunt-tasks": "3.5.0", + "native-promise-only": "0.8.1", + "promises-aplus-tests": "2.1.2", + "q": "1.4.1", + "qunit-assert-step": "1.0.3", + "qunitjs": "1.23.1", + "requirejs": "2.2.0", + "sinon": "1.17.3", + "sizzle": "2.3.3", + "strip-json-comments": "2.0.1", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test:slow", + "precommit": "grunt lint:newer", + "commitmsg": "node node_modules/commitplease" + }, + "commitplease": { + "nohook": true, + "components": [ + "Docs", + "Tests", + "Build", + "Support", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ], + "markerPattern": "^((clos|fix|resolv)(e[sd]|ing))|^(refs?)", + "ticketPattern": "^((Closes|Fixes) ([a-zA-Z]{2,}-)[0-9]+)|^(Refs? [^#])" + }, + "gitHead": "a81259fff4ea0c7b4cd98f04050c829640395a31", + "_id": "jquery@3.2.0", + "_shasum": "3bdbba66e1eee0785532dddadb0e0d2521ca584b", + "_from": ".", + "_npmVersion": "4.1.2", + "_nodeVersion": "7.7.3", + "_npmUser": { + "name": "timmywil", + "email": "4timmywil@gmail.com" + }, + "dist": { + "shasum": "3bdbba66e1eee0785532dddadb0e0d2521ca584b", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.2.0.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "mgol", + "email": "m.goleb@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "timmywil", + "email": "4timmywil@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/jquery-3.2.0.tgz_1489699855733_0.5328386940527707" + }, + "directories": {} + }, + "3.2.1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.2.1", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "JS Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.2.1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "babel-preset-es2015": "6.6.0", + "commitplease": "2.6.1", + "core-js": "2.2.2", + "cross-spawn": "2.2.3", + "eslint-config-jquery": "1.0.0", + "grunt": "1.0.1", + "grunt-babel": "6.0.0", + "grunt-cli": "1.2.0", + "grunt-compare-size": "0.4.2", + "grunt-contrib-uglify": "1.0.1", + "grunt-contrib-watch": "1.0.0", + "grunt-eslint": "19.0.0", + "grunt-git-authors": "3.2.0", + "grunt-jsonlint": "1.0.7", + "grunt-newer": "1.2.0", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "husky": "0.11.4", + "insight": "0.8.1", + "jsdom": "5.6.1", + "load-grunt-tasks": "3.5.0", + "native-promise-only": "0.8.1", + "promises-aplus-tests": "2.1.2", + "q": "1.4.1", + "qunit-assert-step": "1.0.3", + "qunitjs": "1.23.1", + "requirejs": "2.2.0", + "sinon": "1.17.3", + "sizzle": "2.3.3", + "strip-json-comments": "2.0.1", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test:slow", + "precommit": "grunt lint:newer", + "commitmsg": "node node_modules/commitplease" + }, + "commitplease": { + "nohook": true, + "components": [ + "Docs", + "Tests", + "Build", + "Support", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ], + "markerPattern": "^((clos|fix|resolv)(e[sd]|ing))|^(refs?)", + "ticketPattern": "^((Closes|Fixes) ([a-zA-Z]{2,}-)[0-9]+)|^(Refs? [^#])" + }, + "gitHead": "77d2a51d0520d2ee44173afdf4e40a9201f5964e", + "_id": "jquery@3.2.1", + "_shasum": "5c4d9de652af6cd0a770154a631bba12b015c787", + "_from": ".", + "_npmVersion": "4.4.4", + "_nodeVersion": "7.7.3", + "_npmUser": { + "name": "timmywil", + "email": "4timmywil@gmail.com" + }, + "dist": { + "shasum": "5c4d9de652af6cd0a770154a631bba12b015c787", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.2.1.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "mgol", + "email": "m.goleb@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "timmywil", + "email": "4timmywil@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/jquery-3.2.1.tgz_1490036530067_0.19497186387889087" + }, + "directories": {} + }, + "3.3.0": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.3.0", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "JS Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.3.0/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": { + "archiver": "1.3.0", + "chalk": "1.1.3", + "npm": "4.4.1", + "shelljs": "0.7.7" + }, + "devDependencies": { + "babel-core": "7.0.0-beta.0", + "babel-plugin-transform-es2015-for-of": "7.0.0-beta.0", + "commitplease": "2.7.10", + "core-js": "2.4.1", + "eslint-config-jquery": "1.0.1", + "grunt": "1.0.1", + "grunt-babel": "7.0.0", + "grunt-cli": "1.2.0", + "grunt-compare-size": "0.4.2", + "grunt-contrib-uglify": "3.0.1", + "grunt-contrib-watch": "1.0.0", + "grunt-eslint": "20.0.0", + "grunt-git-authors": "3.2.0", + "grunt-jsonlint": "1.1.0", + "grunt-karma": "2.0.0", + "grunt-newer": "1.3.0", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "husky": "0.14.3", + "insight": "0.8.4", + "jsdom": "5.6.1", + "karma": "1.7.0", + "karma-browserstack-launcher": "1.3.0", + "karma-chrome-launcher": "2.2.0", + "karma-firefox-launcher": "1.0.1", + "karma-qunit": "1.2.1", + "load-grunt-tasks": "3.5.2", + "native-promise-only": "0.8.1", + "promises-aplus-tests": "2.1.2", + "q": "1.5.0", + "qunit-assert-step": "1.0.3", + "qunitjs": "1.23.1", + "raw-body": "2.2.0", + "requirejs": "2.3.3", + "sinon": "2.3.7", + "sizzle": "2.3.3", + "strip-json-comments": "2.0.1", + "testswarm": "1.1.0", + "uglify-js": "3.3.4" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test:browserless": "grunt && grunt test:slow", + "test:browser": "grunt && grunt karma:main", + "test": "grunt && grunt test:slow && grunt karma:main", + "jenkins": "npm run test:browserless", + "precommit": "grunt lint:newer qunit_fixture", + "commitmsg": "node node_modules/commitplease" + }, + "commitplease": { + "nohook": true, + "components": [ + "Docs", + "Tests", + "Build", + "Support", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ], + "markerPattern": "^((clos|fix|resolv)(e[sd]|ing))|^(refs?)", + "ticketPattern": "^((Closes|Fixes) ([a-zA-Z]{2,}-)[0-9]+)|^(Refs? [^#])" + }, + "gitHead": "9a8a1c63930edc9fb6fab9e75b3eee578762b8a5", + "_id": "jquery@3.3.0", + "_npmVersion": "5.6.0", + "_nodeVersion": "9.3.0", + "_npmUser": { + "name": "timmywil", + "email": "4timmywil@gmail.com" + }, + "dist": { + "integrity": "sha512-1SmQFTqu24RtvnvLN/D1RFIsOBGqLQYsGJgZxejd69Rw9ACBJvSgppA+A+wBcXgASwRSoX1aDN1I5ZNIrFC6Xw==", + "shasum": "06004bc2d0204ce92822a794ee8efb50283bb9ff", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.3.0.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "mgol", + "email": "m.goleb@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "timmywil", + "email": "4timmywil@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/jquery-3.3.0.tgz_1516388631205_0.827812286792323" + }, + "directories": {} + }, + "3.3.1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.3.1", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "JS Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.3.1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "babel-core": "7.0.0-beta.0", + "babel-plugin-transform-es2015-for-of": "7.0.0-beta.0", + "commitplease": "2.7.10", + "core-js": "2.4.1", + "eslint-config-jquery": "1.0.1", + "grunt": "1.0.1", + "grunt-babel": "7.0.0", + "grunt-cli": "1.2.0", + "grunt-compare-size": "0.4.2", + "grunt-contrib-uglify": "3.0.1", + "grunt-contrib-watch": "1.0.0", + "grunt-eslint": "20.0.0", + "grunt-git-authors": "3.2.0", + "grunt-jsonlint": "1.1.0", + "grunt-karma": "2.0.0", + "grunt-newer": "1.3.0", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "husky": "0.14.3", + "insight": "0.8.4", + "jsdom": "5.6.1", + "karma": "1.7.0", + "karma-browserstack-launcher": "1.3.0", + "karma-chrome-launcher": "2.2.0", + "karma-firefox-launcher": "1.0.1", + "karma-qunit": "1.2.1", + "load-grunt-tasks": "3.5.2", + "native-promise-only": "0.8.1", + "promises-aplus-tests": "2.1.2", + "q": "1.5.0", + "qunit-assert-step": "1.0.3", + "qunitjs": "1.23.1", + "raw-body": "2.2.0", + "requirejs": "2.3.3", + "sinon": "2.3.7", + "sizzle": "2.3.3", + "strip-json-comments": "2.0.1", + "testswarm": "1.1.0", + "uglify-js": "3.3.4" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test:browserless": "grunt && grunt test:slow", + "test:browser": "grunt && grunt karma:main", + "test": "grunt && grunt test:slow && grunt karma:main", + "jenkins": "npm run test:browserless", + "precommit": "grunt lint:newer qunit_fixture", + "commitmsg": "node node_modules/commitplease" + }, + "commitplease": { + "nohook": true, + "components": [ + "Docs", + "Tests", + "Build", + "Support", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ], + "markerPattern": "^((clos|fix|resolv)(e[sd]|ing))|^(refs?)", + "ticketPattern": "^((Closes|Fixes) ([a-zA-Z]{2,}-)[0-9]+)|^(Refs? [^#])" + }, + "gitHead": "9e8ec3d10fad04748176144f108d7355662ae75e", + "_id": "jquery@3.3.1", + "_npmVersion": "5.6.0", + "_nodeVersion": "9.3.0", + "_npmUser": { + "name": "timmywil", + "email": "4timmywil@gmail.com" + }, + "dist": { + "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==", + "shasum": "958ce29e81c9790f31be7792df5d4d95fc57fbca", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "mgol", + "email": "m.goleb@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "timmywil", + "email": "4timmywil@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/jquery-3.3.1.tgz_1516469230473_0.5458589680492878" + }, + "directories": {} + } + }, + "time": { + "modified": "2018-05-21T21:39:54.702Z", + "created": "2011-03-19T07:19:56.392Z", + "1.5.1": "2011-03-19T07:19:56.956Z", + "1.6.2": "2011-07-06T16:13:21.519Z", + "1.6.3": "2011-09-12T19:05:34.373Z", + "1.7.2": "2012-05-01T11:14:09.090Z", + "1.7.3": "2012-07-01T16:11:53.194Z", + "1.8.2": "2012-11-11T22:43:58.910Z", + "1.8.3": "2012-12-01T00:03:02.297Z", + "2.1.0-beta2": "2013-11-15T16:34:48.859Z", + "2.1.0-beta3": "2013-12-20T22:53:28.426Z", + "1.11.0-beta3": "2014-01-06T19:57:22.387Z", + "2.1.0-rc1": "2014-01-17T22:47:16.391Z", + "1.11.0-pre": "2014-01-16T20:38:42.912Z", + "1.11.0-rc1": "2014-01-16T21:08:36.924Z", + "1.11.0": "2014-01-23T21:07:07.184Z", + "2.1.0": "2014-01-23T21:12:47.772Z", + "2.1.1-beta1": "2014-03-24T17:05:07.581Z", + "1.11.1-beta1": "2014-03-24T17:25:14.236Z", + "2.1.1-rc1": "2014-04-18T15:29:41.423Z", + "1.11.1-rc1": "2014-04-18T15:40:23.931Z", + "2.1.1-rc2": "2014-04-21T20:52:06.866Z", + "1.11.1-rc2": "2014-04-21T21:12:52.817Z", + "2.1.1": "2014-05-01T17:15:20.164Z", + "1.11.1": "2014-05-01T18:05:32.863Z", + "1.9.1": "2014-07-17T22:01:17.886Z", + "2.1.2": "2014-12-17T14:14:28.184Z", + "1.11.2": "2014-12-17T16:07:07.647Z", + "2.1.3": "2014-12-18T15:18:38.205Z", + "2.1.4": "2015-04-28T16:17:13.648Z", + "1.11.3": "2015-04-28T16:22:06.378Z", + "3.0.0-alpha1": "2015-07-13T19:26:37.913Z", + "1.12.0": "2016-01-08T19:58:05.265Z", + "2.2.0": "2016-01-08T20:03:43.280Z", + "3.0.0-beta1": "2016-01-14T23:09:43.368Z", + "1.12.1": "2016-02-22T19:08:05.212Z", + "2.2.1": "2016-02-22T19:12:09.116Z", + "1.12.2": "2016-03-17T17:45:59.810Z", + "2.2.2": "2016-03-17T17:52:26.967Z", + "1.12.3": "2016-04-05T19:21:37.716Z", + "2.2.3": "2016-04-05T19:27:17.929Z", + "1.12.4": "2016-05-20T17:19:07.375Z", + "2.2.4": "2016-05-20T17:26:07.921Z", + "3.0.0-rc1": "2016-05-20T19:13:48.387Z", + "3.0.0": "2016-06-09T18:33:13.420Z", + "3.1.0": "2016-07-07T21:46:05.554Z", + "3.1.1": "2016-09-22T22:32:49.360Z", + "3.2.0": "2017-03-16T21:30:56.342Z", + "3.2.1": "2017-03-20T19:02:13.508Z", + "3.3.0": "2018-01-19T19:03:52.616Z", + "3.3.1": "2018-01-20T17:27:11.928Z" + }, + "dist-tags": { + "beta": "3.0.0", + "latest": "3.3.1", + "jota": "1.6.3" + }, + "_uplinks": { + "npmjs": { + "etag": "W/\"252f0a131cedd3ea82dfefd6fa049558\"", + "fetched": 1529779934081 + } + }, + "_distfiles": { + "jquery-1.5.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.5.1.tgz", + "sha": "2ae2d661e906c1a01e044a71bb5b2743942183e5", + "registry": "npmjs" + }, + "jquery-1.6.2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.6.2.tgz", + "sha": "01757a4c5beea29e8ae697527c3131abbe997a28", + "registry": "npmjs" + }, + "jquery-1.6.3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.6.3.tgz", + "sha": "e1f732fa7e718a6adb3ec20ae0eb2a64fd95ef01", + "registry": "npmjs" + }, + "jquery-1.7.2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.7.2.tgz", + "sha": "a93746763aca75a34df4c16395b0826310d0eaf2", + "registry": "npmjs" + }, + "jquery-1.7.3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.7.3.tgz", + "sha": "e3d00a71612ac7e9b554b438e0987d0272ddba94", + "registry": "npmjs" + }, + "jquery-1.8.2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.8.2.tgz", + "sha": "46790ae07c6de38124eda90bbf7336b43df93305", + "registry": "npmjs" + }, + "jquery-1.8.3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.8.3.tgz", + "sha": "cfa2941c05a83d966f21347f759a6d15281c60cc", + "registry": "npmjs" + }, + "jquery-2.1.0-beta2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.0-beta2.tgz", + "sha": "e0fbbe2beb45b4d8f808362c7c99ef5bfee7d8c6", + "registry": "npmjs" + }, + "jquery-2.1.0-beta3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.0-beta3.tgz", + "sha": "5a89b624d8fa625fe5fa83a12a9acb1ef8a11d02", + "registry": "npmjs" + }, + "jquery-1.11.0-beta3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.0-beta3.tgz", + "sha": "0464a6aba9f35f6c83a203caa23ab420909ce852", + "registry": "npmjs" + }, + "jquery-1.11.0-rc1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.0-rc1.tgz", + "sha": "c2f6a4877374647b20b080c478d8dbcdfb4960ee", + "registry": "npmjs" + }, + "jquery-2.1.0-rc1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.0-rc1.tgz", + "sha": "8c9f5d9a055c2fedb3f5269617ae649497d6a3b0", + "registry": "npmjs" + }, + "jquery-1.11.0.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.0.tgz", + "sha": "c67ceee19b403650d682adcf39d5c9009814d949", + "registry": "npmjs" + }, + "jquery-2.1.0.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.0.tgz", + "sha": "1c9a8c971d2b53dae10d72e16cbb5a1df16a4ace", + "registry": "npmjs" + }, + "jquery-2.1.1-beta1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.1-beta1.tgz", + "sha": "6306c8ea1d104775f3ef8f5c26f0a32acd710a11", + "registry": "npmjs" + }, + "jquery-1.11.1-beta1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.1-beta1.tgz", + "sha": "c7eacde5e1ae06e029f1cd1b2dd444953a33e843", + "registry": "npmjs" + }, + "jquery-2.1.1-rc1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.1-rc1.tgz", + "sha": "95c494fdbbd0cefc305260e11ad46ae49a387c3d", + "registry": "npmjs" + }, + "jquery-1.11.1-rc1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.1-rc1.tgz", + "sha": "666a7df02488b48732d96e8ab9bdd34f61dd4238", + "registry": "npmjs" + }, + "jquery-2.1.1-rc2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.1-rc2.tgz", + "sha": "99833e415efa7ac8a4efecc5df6894b2f938a598", + "registry": "npmjs" + }, + "jquery-1.11.1-rc2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.1-rc2.tgz", + "sha": "a4ef3edde0864d8524c5e72f59c459fd7a9ebd17", + "registry": "npmjs" + }, + "jquery-2.1.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.1.tgz", + "sha": "828fc60f50f7ee5983363ef4eb01c5f70af4bd5b", + "registry": "npmjs" + }, + "jquery-1.11.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.1.tgz", + "sha": "b6ec928590112ebed69e1e49cbfd0025ccd60ddb", + "registry": "npmjs" + }, + "jquery-1.9.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.9.1.tgz", + "sha": "e4cd4835faaefbade535857613c0fc3ff2adaf34", + "registry": "npmjs" + }, + "jquery-2.1.2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.2.tgz", + "sha": "b68f154cb2ea4731924883e9fe20ec199d1dc1e2", + "registry": "npmjs" + }, + "jquery-1.11.2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.2.tgz", + "sha": "30ab26857211c37caa83da0f6903155fe49bb72d", + "registry": "npmjs" + }, + "jquery-2.1.3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.3.tgz", + "sha": "6ec55204673d505d39432c5bf5cfad10e1dbad2e", + "registry": "npmjs" + }, + "jquery-2.1.4.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.4.tgz", + "sha": "228bde698a0c61431dc2630a6a154f15890d2317", + "registry": "npmjs" + }, + "jquery-1.11.3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.3.tgz", + "sha": "dd8b74278b27102d29df63eae28308a8cfa1b583", + "registry": "npmjs" + }, + "jquery-3.0.0-alpha1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.0.0-alpha1.tgz", + "sha": "3493d672266e21c2dffb2714f935448edebe3c62", + "registry": "npmjs" + }, + "jquery-1.12.0.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.12.0.tgz", + "sha": "44653be4e3e4628b106bf2141dfd10fbca6021ef", + "registry": "npmjs" + }, + "jquery-2.2.0.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.2.0.tgz", + "sha": "d0e84ebbf199da51bf7ec39307f19b35754e9cba", + "registry": "npmjs" + }, + "jquery-3.0.0-beta1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.0.0-beta1.tgz", + "sha": "d2a4e368e2eed7050bf66abbbb54db2ea345349d", + "registry": "npmjs" + }, + "jquery-1.12.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.12.1.tgz", + "sha": "9cc34ce4780d4ceb90c44328f071064f01960c18", + "registry": "npmjs" + }, + "jquery-2.2.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.2.1.tgz", + "sha": "3c3e16854ad3d2ac44ac65021b17426d22ad803f", + "registry": "npmjs" + }, + "jquery-1.12.2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.12.2.tgz", + "sha": "b8a8b45937312a19eebbcf5a0589b0311c8220bb", + "registry": "npmjs" + }, + "jquery-2.2.2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.2.2.tgz", + "sha": "3e302dc61eb329a21e9efac937d731f061134c59", + "registry": "npmjs" + }, + "jquery-1.12.3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.12.3.tgz", + "sha": "1298b88b908e7c7f7501eb8c1a61f1ac8337b531", + "registry": "npmjs" + }, + "jquery-2.2.3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.2.3.tgz", + "sha": "45e07e4190334de36c9e1a64b43b1f1373d91758", + "registry": "npmjs" + }, + "jquery-1.12.4.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.12.4.tgz", + "sha": "01e1dfba290fe73deba77ceeacb0f9ba2fec9e0c", + "registry": "npmjs" + }, + "jquery-2.2.4.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.2.4.tgz", + "sha": "2c89d6889b5eac522a7eea32c14521559c6cbf02", + "registry": "npmjs" + }, + "jquery-3.0.0-rc1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.0.0-rc1.tgz", + "sha": "d69fc540b0a56be13e8aecde5a8766ade7a44f8e", + "registry": "npmjs" + }, + "jquery-3.0.0.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.0.0.tgz", + "sha": "95a2a9541291a9f819e016f85ba247116d03e4ab", + "registry": "npmjs" + }, + "jquery-3.1.0.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.1.0.tgz", + "sha": "129f6f1ae94b18f09010b008d0d6011e40613d7f", + "registry": "npmjs" + }, + "jquery-3.1.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.1.1.tgz", + "sha": "347c1c21c7e004115e0a4da32cece041fad3c8a3", + "registry": "npmjs" + }, + "jquery-3.2.0.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.2.0.tgz", + "sha": "3bdbba66e1eee0785532dddadb0e0d2521ca584b", + "registry": "npmjs" + }, + "jquery-3.2.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.2.1.tgz", + "sha": "5c4d9de652af6cd0a770154a631bba12b015c787", + "registry": "npmjs" + }, + "jquery-3.3.0.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.3.0.tgz", + "sha": "06004bc2d0204ce92822a794ee8efb50283bb9ff", + "registry": "npmjs" + }, + "jquery-3.3.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz", + "sha": "958ce29e81c9790f31be7792df5d4d95fc57fbca", + "registry": "npmjs" + } + }, + "_attachments": { + "jquery-1.5.1.tgz": { + "shasum": "2ae2d661e906c1a01e044a71bb5b2743942183e5" + } + }, + "_rev": "60-fed4915c27b9c1e6", + "readme": "# jQuery\n\n> jQuery is a fast, small, and feature-rich JavaScript library.\n\nFor information on how to get started and how to use jQuery, please see [jQuery's documentation](http://api.jquery.com/).\nFor source files and issues, please visit the [jQuery repo](https://github.com/jquery/jquery).\n\nIf upgrading, please see the [blog post for 3.3.1](https://blog.jquery.com/2017/03/20/jquery-3.3.1-now-available/). This includes notable differences from the previous version and a more readable changelog.\n\n## Including jQuery\n\nBelow are some of the most common ways to include jQuery.\n\n### Browser\n\n#### Script tag\n\n```html\n\n```\n\n#### Babel\n\n[Babel](http://babeljs.io/) is a next generation JavaScript compiler. One of the features is the ability to use ES6/ES2015 modules now, even though browsers do not yet support this feature natively.\n\n```js\nimport $ from \"jquery\";\n```\n\n#### Browserify/Webpack\n\nThere are several ways to use [Browserify](http://browserify.org/) and [Webpack](https://webpack.github.io/). For more information on using these tools, please refer to the corresponding project's documention. In the script, including jQuery will usually look like this...\n\n```js\nvar $ = require(\"jquery\");\n```\n\n#### AMD (Asynchronous Module Definition)\n\nAMD is a module format built for the browser. For more information, we recommend [require.js' documentation](http://requirejs.org/docs/whyamd.html).\n\n```js\ndefine([\"jquery\"], function($) {\n\n});\n```\n\n### Node\n\nTo include jQuery in [Node](nodejs.org), first install with npm.\n\n```sh\nnpm install jquery\n```\n\nFor jQuery to work in Node, a window with a document is required. Since no such window exists natively in Node, one can be mocked by tools such as [jsdom](https://github.com/tmpvar/jsdom). This can be useful for testing purposes.\n\n```js\nrequire(\"jsdom\").env(\"\", function(err, window) {\n\tif (err) {\n\t\tconsole.error(err);\n\t\treturn;\n\t}\n\n\tvar $ = require(\"jquery\")(window);\n});\n```" +} \ No newline at end of file diff --git a/test/unit/partials/mock-store/npm_test/package.json b/packages/server/test/api/mock/store/npm_test/package.json similarity index 100% rename from test/unit/partials/mock-store/npm_test/package.json rename to packages/server/test/api/mock/store/npm_test/package.json diff --git a/test/unit/partials/mock-store/vue/package.json b/packages/server/test/api/mock/store/vue/package.json similarity index 100% rename from test/unit/partials/mock-store/vue/package.json rename to packages/server/test/api/mock/store/vue/package.json diff --git a/test/unit/modules/api/partials/plugin/filter.ts b/packages/server/test/api/plugin/filter.ts similarity index 100% rename from test/unit/modules/api/partials/plugin/filter.ts rename to packages/server/test/api/plugin/filter.ts diff --git a/packages/server/test/basic/basic.yaml b/packages/server/test/basic/basic.yaml new file mode 100644 index 000000000..22b4cd4a2 --- /dev/null +++ b/packages/server/test/basic/basic.yaml @@ -0,0 +1,15 @@ +store: + memory: + limit: 1000 +uplinks: + npmjs: + url: http://localhost:4873/ +packages: + '@*/*': + access: $all + publish: $all + '*': + access: $all + publish: $all +logs: + - { type: stdout, format: pretty, level: warn } diff --git a/packages/server/test/basic/index.spec.ts b/packages/server/test/basic/index.spec.ts new file mode 100644 index 000000000..f5dcef07f --- /dev/null +++ b/packages/server/test/basic/index.spec.ts @@ -0,0 +1,59 @@ +import express from 'express'; +import request from 'request'; +import path from "path"; + +import {API_ERROR} from '@verdaccio/dev-commons'; +import {parseConfigFile} from "@verdaccio/utils"; +import { setup } from '@verdaccio/logger'; + +import endPointAPI from '../../src'; + +setup([ + {type: 'stdout', format: 'pretty', level: 'trace'} +]); + +const app = express(); +const server = require('http').createServer(app); + +const parseConfigurationFile = (conf) => { + return path.join(__dirname, `./${conf}`); +}; + +describe('basic system test', () => { + let port; + jest.setTimeout(20000); + + beforeAll(async function(done) { + const config = parseConfigFile(parseConfigurationFile('basic.yaml')); + app.use(await endPointAPI(config)); + server.listen(0, function() { + port = server.address().port; + done(); + }); + }); + + afterAll((done) => { + server.close(done); + }); + + test('server should respond on /', done => { + request({ + url: 'http://localhost:' + port + '/', + }, function(err, res, body) { + expect(err).toBeNull(); + expect(body).toMatch(/Verdaccio/); + done(); + }); + }); + + test('server should respond on /___not_found_package', done => { + request({ + json: true, + url: `http://localhost:${port}/___not_found_package`, + }, function(err, res, body) { + expect(err).toBeNull(); + expect(body.error).toMatch(API_ERROR.NO_PACKAGE); + done(); + }); + }); +}); diff --git a/test/unit/modules/auth/jwt.spec.ts b/packages/server/test/jwt/index.spec.ts similarity index 62% rename from test/unit/modules/auth/jwt.spec.ts rename to packages/server/test/jwt/index.spec.ts index fdb810bfe..b833184d5 100644 --- a/test/unit/modules/auth/jwt.spec.ts +++ b/packages/server/test/jwt/index.spec.ts @@ -1,26 +1,16 @@ import request from 'supertest'; import path from 'path'; -import rimraf from 'rimraf'; -import endPointAPI from '../../../../src/api'; +import endPointAPI from '@verdaccio/server'; +import {HEADERS, HTTP_STATUS, HEADER_TYPE, TOKEN_BEARER, TOKEN_BASIC, API_ERROR} from '@verdaccio/dev-commons'; +import {mockServer, generateRamdonStorage} from '@verdaccio/mock'; +import {buildUserBuffer, buildToken} from '@verdaccio/utils'; +import {configExample, DOMAIN_SERVERS, addUser, getPackage, loginUserToken} from '@verdaccio/mock'; -import { - HEADERS, - HTTP_STATUS, - HEADER_TYPE, - TOKEN_BEARER, - TOKEN_BASIC, - API_ERROR -} from '../../../../src/lib/constants'; -import { mockServer } from '../../__helper/mock'; -import { DOMAIN_SERVERS } from '../../../functional/config.functional'; -import { buildToken } from '../../../../src/lib/utils'; -import { addUser, getPackage, loginUserToken } from '../../__helper/api'; -import { setup } from '../../../../src/lib/logger'; -import configDefault from '../../partials/config'; -import { buildUserBuffer } from '../../../../src/lib/auth-utils'; +import {setup, logger} from '@verdaccio/logger'; setup([]); + const credentials = { name: 'JotaJWT', password: 'secretPass' }; const FORBIDDEN_VUE = 'authorization required to access package vue'; @@ -31,37 +21,31 @@ describe('endpoint user auth JWT unit test', () => { let mockRegistry; const FAKE_TOKEN: string = buildToken(TOKEN_BEARER, 'fake'); - beforeAll(function (done) { - const store = path.join(__dirname, '../../partials/store/test-jwt-storage'); + beforeAll(async function(done) { const mockServerPort = 55546; - rimraf(store, async () => { - const configForTest = configDefault( - { - storage: store, - uplinks: { - npmjs: { - url: `http://${DOMAIN_SERVERS}:${mockServerPort}` - } - }, - self_path: store, - auth: { - htpasswd: { - file: './test-jwt-storage/.htpasswd_jwt_auth' - } - }, - logs: [{ type: 'stdout', format: 'pretty', level: 'warn' }] - }, - 'api-jwt/jwt.yaml' - ); + const store = generateRamdonStorage(); + const configForTest = configExample({ + storage: store, + uplinks: { + remote: { + url: `http://${DOMAIN_SERVERS}:${mockServerPort}` + } + }, + self_path: store + }, 'jwt.yaml', __dirname); - app = await endPointAPI(configForTest); - mockRegistry = await mockServer(mockServerPort).init(); - done(); - }); + app = await endPointAPI(configForTest); + const binPath = require.resolve('verdaccio/bin/verdaccio'); + const storePath = path.join(__dirname, '/mock/store'); + mockRegistry = await mockServer(mockServerPort, { storePath, silence: true }).init(binPath); + done(); }); - afterAll(function (done) { - mockRegistry[0].stop(); + afterAll(function(done) { + const [registry, pid] = mockRegistry; + registry.stop(); + logger.info(`registry ${pid} has been stopped`); + done(); }); @@ -78,16 +62,12 @@ describe('endpoint user auth JWT unit test', () => { // testing JWT auth headers with token // we need it here, because token is required const [err1, resp1] = await getPackage(request(app), token, 'vue'); + expect(err1).toBeNull(); expect(resp1.body).toBeDefined(); expect(resp1.body.name).toMatch('vue'); - const [err2, resp2] = await getPackage( - request(app), - FAKE_TOKEN, - 'vue', - HTTP_STATUS.UNAUTHORIZED - ); + const [err2, resp2] = await getPackage(request(app), FAKE_TOKEN, 'vue', HTTP_STATUS.UNAUTHORIZED); expect(err2).toBeNull(); expect(resp2.statusCode).toBe(HTTP_STATUS.UNAUTHORIZED); expect(resp2.body.error).toMatch(FORBIDDEN_VUE); @@ -105,13 +85,12 @@ describe('endpoint user auth JWT unit test', () => { const token = buildUserBuffer(credentials.name, credentials.password).toString('base64'); // put should exist in request // @ts-ignore - request(app) - .put(`/-/user/org.couchdb.user:${credentials.name}/-rev/undefined`) + request(app).put(`/-/user/org.couchdb.user:${credentials.name}/-rev/undefined`) .send(credentials) .set(HEADERS.AUTHORIZATION, buildToken(TOKEN_BASIC, token)) .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(HTTP_STATUS.CREATED) - .end(function (err, res) { + .end(function(err, res) { expect(err).toBeNull(); expect(res.body.ok).toBeDefined(); expect(res.body.token).toBeDefined(); @@ -121,12 +100,7 @@ describe('endpoint user auth JWT unit test', () => { }); test('should fails on try to access with corrupted token', async (done) => { - const [err2, resp2] = await getPackage( - request(app), - FAKE_TOKEN, - 'vue', - HTTP_STATUS.UNAUTHORIZED - ); + const [err2, resp2] = await getPackage(request(app), FAKE_TOKEN, 'vue', HTTP_STATUS.UNAUTHORIZED); expect(err2).toBeNull(); expect(resp2.statusCode).toBe(HTTP_STATUS.UNAUTHORIZED); expect(resp2.body.error).toMatch(FORBIDDEN_VUE); @@ -146,13 +120,7 @@ describe('endpoint user auth JWT unit test', () => { // we login when token is valid const newCredentials = { name: 'newFailsUser', password: 'BAD_PASSWORD' }; - const [err2, resp2] = await loginUserToken( - request(app), - newCredentials.name, - newCredentials, - token, - HTTP_STATUS.UNAUTHORIZED - ); + const [err2, resp2] = await loginUserToken(request(app), newCredentials.name, newCredentials, token, HTTP_STATUS.UNAUTHORIZED); expect(err2).toBeNull(); expect(resp2.statusCode).toBe(HTTP_STATUS.UNAUTHORIZED); expect(resp2.body.error).toMatch(API_ERROR.BAD_USERNAME_PASSWORD); diff --git a/test/unit/partials/config/yaml/api-jwt/jwt.yaml b/packages/server/test/jwt/jwt.yaml similarity index 72% rename from test/unit/partials/config/yaml/api-jwt/jwt.yaml rename to packages/server/test/jwt/jwt.yaml index 94d292a10..780f374eb 100644 --- a/test/unit/partials/config/yaml/api-jwt/jwt.yaml +++ b/packages/server/test/jwt/jwt.yaml @@ -7,9 +7,7 @@ web: auth: htpasswd: file: ./htpasswd -uplinks: - npmjs: - url: https://registry.npmjs.org/ + security: api: jwt: @@ -20,17 +18,19 @@ packages: '@*/*': access: $all publish: $authenticated - proxy: npmjs + proxy: remote 'vue': access: $authenticated publish: $authenticated - proxy: npmjs + proxy: remote '**': access: $all publish: $authenticated - proxy: npmjs + proxy: remote + middlewares: audit: enabled: true + logs: - - { type: stdout, format: pretty, level: http } + - { type: stdout, format: pretty, level: warn } diff --git a/packages/server/test/jwt/mock/store/vue/package.json b/packages/server/test/jwt/mock/store/vue/package.json new file mode 100644 index 000000000..2a15b3b17 --- /dev/null +++ b/packages/server/test/jwt/mock/store/vue/package.json @@ -0,0 +1,25169 @@ +{ + "name": "vue", + "versions": { + "0.0.0": { + "name": "vue", + "version": "0.0.0", + "description": "viewmodel", + "main": "index.js", + "author": { + "name": "Evan You" + }, + "license": "MIT", + "_id": "vue@0.0.0", + "dist": { + "shasum": "02a9248eb4a26ebc2bbf834f6db630af725ff258", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.0.0.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.15", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.6.0": { + "name": "vue", + "version": "0.6.0", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "A mini front-end MVVM framework", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "scripts": { + "test": "grunt test" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-component-build": "~0.4.1", + "grunt-contrib-jshint": "~0.7.1", + "grunt-contrib-uglify": "~0.2.7", + "grunt-mocha": "~0.4.6", + "jscoverage": "~0.3.8", + "jshint-stylish": "0.1.3", + "semver": "~2.2.1" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "https://github.com/yyx990803/vue", + "_id": "vue@0.6.0", + "dist": { + "shasum": "123c1a24ce6fe13c4530c03d780cb1ef966f9cde", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.6.0.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.15", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.7.0": { + "name": "vue", + "version": "0.7.0", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "A mini front-end MVVM framework", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "scripts": { + "test": "grunt test" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-component-build": "~0.4.1", + "grunt-contrib-jshint": "~0.7.1", + "grunt-contrib-uglify": "~0.2.7", + "grunt-mocha": "~0.4.6", + "jscoverage": "~0.3.8", + "jshint-stylish": "0.1.3", + "semver": "~2.2.1", + "shell-task": "~0.1.1" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "https://github.com/yyx990803/vue", + "_id": "vue@0.7.0", + "dist": { + "shasum": "146d0ed809587f569b7fce39f6bac77b68ff3d47", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.7.0.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.21", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.7.1": { + "name": "vue", + "version": "0.7.1", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "A mini front-end MVVM framework", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "scripts": { + "test": "grunt test" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-component-build": "~0.4.1", + "grunt-contrib-jshint": "~0.7.1", + "grunt-contrib-uglify": "~0.2.7", + "grunt-mocha": "~0.4.6", + "jscoverage": "~0.3.8", + "jshint-stylish": "0.1.3", + "semver": "~2.2.1", + "shell-task": "~0.1.1" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "https://github.com/yyx990803/vue", + "_id": "vue@0.7.1", + "dist": { + "shasum": "17a6ea20a5660c8614636387e15521530ff48c50", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.7.1.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.21", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.7.3": { + "name": "vue", + "version": "0.7.3", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "scripts": { + "test": "grunt" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-mocha": "~0.4.6", + "jscoverage": "~0.3.8", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "vinyl-fs": "git://github.com/yyx990803/vinyl-fs", + "gulp-component": "~0.1.3" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "https://github.com/yyx990803/vue", + "_id": "vue@0.7.3", + "dist": { + "shasum": "61acb2ae6afb1116466bf1512c3835e0b47ac0a8", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.7.3.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.17", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.7.4": { + "name": "vue", + "version": "0.7.4", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "scripts": { + "test": "grunt" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-mocha": "~0.4.6", + "jscoverage": "~0.3.8", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "vinyl-fs": "git://github.com/yyx990803/vinyl-fs", + "gulp-component": "~0.1.3" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "https://github.com/yyx990803/vue", + "_id": "vue@0.7.4", + "dist": { + "shasum": "e0df485af8f62a503664c35c07ea9315dc1a5759", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.7.4.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.17", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.7.5": { + "name": "vue", + "version": "0.7.5", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "vinyl-fs": "git://github.com/wearefractal/vinyl-fs", + "gulp-component": "~0.1.4", + "grunt-karma": "~0.6.2", + "karma-script-launcher": "~0.1.0", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2", + "karma-phantomjs-launcher": "~0.1.1", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-safari-launcher": "~0.1.1", + "grunt-karma-coveralls": "~2.3.0" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "https://github.com/yyx990803/vue", + "_id": "vue@0.7.5", + "dist": { + "shasum": "2b845e2defe5d30437b8915822b2461f9ce8a9d6", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.7.5.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.17", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.7.6": { + "name": "vue", + "version": "0.7.6", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.4", + "vinyl-fs": "git://github.com/wearefractal/vinyl-fs", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "https://github.com/yyx990803/vue", + "_id": "vue@0.7.6", + "dist": { + "shasum": "ab486851e45887879832268370fcb372c1dc87a9", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.7.6.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.21", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.8.0": { + "name": "vue", + "version": "0.8.0", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.4", + "vinyl-fs": "git://github.com/wearefractal/vinyl-fs", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "https://github.com/yyx990803/vue", + "_id": "vue@0.8.0", + "dist": { + "shasum": "0e0ea13ca7d9672cd900d8f10c59506814db934d", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.8.0.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.21", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.8.1": { + "name": "vue", + "version": "0.8.1", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.4", + "vinyl-fs": "~0.0.2", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "https://github.com/yyx990803/vue", + "_id": "vue@0.8.1", + "dist": { + "shasum": "26bfea6b31dd8e0d5b9f3e2eda349624f8011a67", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.8.1.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.21", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.8.2": { + "name": "vue", + "version": "0.8.2", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.4", + "vinyl-fs": "~0.0.2", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "_id": "vue@0.8.2", + "dist": { + "shasum": "c1d30517b5160982a48ea22022b6974bd1bbde6a", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.8.2.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.21", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.8.3": { + "name": "vue", + "version": "0.8.3", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.4", + "vinyl-fs": "~0.0.2", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "_id": "vue@0.8.3", + "dist": { + "shasum": "d50bea6e4ea1a78f9252a7c84a0346ce5eb46326", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.8.3.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.25", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.8.4": { + "name": "vue", + "version": "0.8.4", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.4", + "vinyl-fs": "~0.0.2", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "_id": "vue@0.8.4", + "dist": { + "shasum": "88e9fa4190a56326635ec6962f3bf5469f83ee62", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.8.4.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.25", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.8.6": { + "name": "vue", + "version": "0.8.6", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.4", + "vinyl-fs": "~0.0.2", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "_id": "vue@0.8.6", + "dist": { + "shasum": "a8d10dc5550a89db4f054da991a8f2ab7c196f55", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.8.6.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.25", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.8.7": { + "name": "vue", + "version": "0.8.7", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.4", + "vinyl-fs": "~0.0.2", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "_id": "vue@0.8.7", + "dist": { + "shasum": "5497afc8f73b75123f40ea5dd6ceae044d6a2f26", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.8.7.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.24", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.8.8": { + "name": "vue", + "version": "0.8.8", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.4", + "vinyl-fs": "~0.0.2", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "_id": "vue@0.8.8", + "dist": { + "shasum": "63fa3d8c1566f2983ddd9816a1b98b8d0612a2d0", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.8.8.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.24", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.9.0": { + "name": "vue", + "version": "0.9.0", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.4", + "vinyl-fs": "~0.0.2", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "_id": "vue@0.9.0", + "dist": { + "shasum": "fdddbcf080a8121c9de827f5aba0894a97efb77d", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.9.0.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.25", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.9.1": { + "name": "vue", + "version": "0.9.1", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.4", + "vinyl-fs": "~0.0.2", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "_id": "vue@0.9.1", + "dist": { + "shasum": "11fb26ef6fd03697b4c174440cb92bcea3a6ba4d", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.9.1.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.24", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.9.2": { + "name": "vue", + "version": "0.9.2", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.4", + "vinyl-fs": "~0.0.2", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "_id": "vue@0.9.2", + "dist": { + "shasum": "c53dff86edcf12b941b45ca6f3b4e7d0f39fcc4e", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.9.2.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.24", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.9.3": { + "name": "vue", + "version": "0.9.3", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.4", + "vinyl-fs": "~0.0.2", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "_id": "vue@0.9.3", + "dist": { + "shasum": "bd982661b5cec65cb8d09e33856e142315716064", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.9.3.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.25", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.10.0": { + "name": "vue", + "version": "0.10.0", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.6", + "vinyl-fs": "~0.0.2", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "_id": "vue@0.10.0", + "dist": { + "shasum": "54f1eb929b53c00afe74ef8f6a44642ab50e64c9", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.10.0.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.24", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.10.1": { + "name": "vue", + "version": "0.10.1", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.6", + "vinyl-fs": "~0.0.2", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "_id": "vue@0.10.1", + "dist": { + "shasum": "72d7a4d542e3d3d759b2ab60fc7a7cc768327278", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.10.1.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.24", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.10.2": { + "name": "vue", + "version": "0.10.2", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.6", + "vinyl-fs": "~0.0.2", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "_id": "vue@0.10.2", + "dist": { + "shasum": "7fe8f74b103246d266137b1647fa918c4941ba87", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.10.2.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.24", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.10.3": { + "name": "vue", + "version": "0.10.3", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.6", + "vinyl-fs": "~0.0.2", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "_id": "vue@0.10.3", + "dist": { + "shasum": "beb96bf62286b34a1db3fe0b016adce8a0b4d41a", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.10.3.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.24", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.10.4": { + "name": "vue", + "version": "0.10.4", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.6", + "vinyl-fs": "~0.0.2", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "_id": "vue@0.10.4", + "dist": { + "shasum": "8513bcaecb6cff65d51b91c115dffb95d1b79304", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.10.4.tgz" + }, + "_from": ".", + "_npmVersion": "1.4.3", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.10.5": { + "name": "vue", + "version": "0.10.5", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.5", + "grunt-contrib-watch": "~0.6.1", + "grunt-contrib-jshint": "~0.10.0", + "grunt-contrib-connect": "~0.7.1", + "grunt-karma": "~0.8.3", + "grunt-karma-coveralls": "~2.5.1", + "grunt-saucelabs": "~7.0.0", + "gulp-component": "~0.1.8", + "vinyl-fs": "~0.1.4", + "jshint-stylish": "~0.2.0", + "semver": "~2.3.0", + "shell-task": "~0.1.2", + "map-stream": "0.1.0", + "uglify-js": "~2.4.13", + "karma": "~0.12.6", + "karma-mocha": "~0.1.3", + "karma-coverage": "~0.2.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.4", + "karma-chrome-launcher": "~0.1.4", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1" + }, + "_id": "vue@0.10.5", + "_shasum": "b026812db8c853776656e662c407f13fec0936e3", + "_from": ".", + "_npmVersion": "1.4.9", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "b026812db8c853776656e662c407f13fec0936e3", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.10.5.tgz" + }, + "directories": {} + }, + "0.10.6": { + "name": "vue", + "version": "0.10.6", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.5", + "grunt-contrib-watch": "~0.6.1", + "grunt-contrib-jshint": "~0.10.0", + "grunt-contrib-connect": "~0.7.1", + "grunt-karma": "~0.8.3", + "grunt-karma-coveralls": "~2.5.1", + "grunt-saucelabs": "~7.0.0", + "gulp-component": "~0.1.8", + "vinyl-fs": "~0.1.4", + "jshint-stylish": "~0.2.0", + "semver": "~2.3.0", + "shell-task": "~0.1.2", + "map-stream": "0.1.0", + "uglify-js": "~2.4.13", + "karma": "~0.12.6", + "karma-mocha": "~0.1.3", + "karma-coverage": "~0.2.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.4", + "karma-chrome-launcher": "~0.1.4", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1" + }, + "spm": { + "main": "src/main.js", + "ignore": [ + ".*", + "examples", + "test", + "tasks", + "dist", + "Gruntfile.js", + "bower.json", + "component.json", + "*.md" + ] + }, + "_id": "vue@0.10.6", + "_shasum": "47f4e8096afd099a1885a46576b8a9eb63aee2b9", + "_from": ".", + "_npmVersion": "1.4.9", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "47f4e8096afd099a1885a46576b8a9eb63aee2b9", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.10.6.tgz" + }, + "directories": {} + }, + "0.11.0-rc": { + "name": "vue", + "version": "0.11.0-rc", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci" + }, + "devDependencies": { + "browserify": "^5.11.0", + "component-builder": "^1.1.10", + "component-resolver": "^1.1.8", + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-contrib-watch": "^0.6.1", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.2", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.16", + "karma-chrome-launcher": "^0.1.4", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.5", + "karma-firefox-launcher": "^0.1.3", + "karma-jasmine": "^0.2.2", + "karma-phantomjs-launcher": "^0.1.4", + "karma-sauce-launcher": "^0.2.10", + "uglify-js": "^2.4.15" + }, + "_id": "vue@0.11.0-rc", + "_shasum": "ff6791fa0fb0a46d8a1facb69a0ab518fea21893", + "_from": ".", + "_npmVersion": "1.4.9", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "ff6791fa0fb0a46d8a1facb69a0ab518fea21893", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.11.0-rc.tgz" + }, + "directories": {} + }, + "0.11.0-rc2": { + "name": "vue", + "version": "0.11.0-rc2", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci" + }, + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-contrib-watch": "^0.6.1", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.2", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.16", + "karma-chrome-launcher": "^0.1.4", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.5", + "karma-firefox-launcher": "^0.1.3", + "karma-jasmine": "^0.2.2", + "karma-phantomjs-launcher": "^0.1.4", + "karma-sauce-launcher": "^0.2.10", + "uglify-js": "^2.4.15", + "webpack": "^1.4.4" + }, + "gitHead": "7e767f953cd542e64b67e0aa25af8c96770d7eb7", + "_id": "vue@0.11.0-rc2", + "_shasum": "84302800170010722beeb1f6c0169fb07f2ba5ad", + "_from": ".", + "_npmVersion": "1.4.23", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "84302800170010722beeb1f6c0169fb07f2ba5ad", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.11.0-rc2.tgz" + }, + "directories": {} + }, + "0.11.0-rc3": { + "name": "vue", + "version": "0.11.0-rc3", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci" + }, + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-contrib-watch": "^0.6.1", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.2", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.16", + "karma-chrome-launcher": "^0.1.4", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.5", + "karma-firefox-launcher": "^0.1.3", + "karma-jasmine": "^0.2.2", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.0.3", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.15", + "webpack": "^1.4.4" + }, + "gitHead": "7163a9b63df5ffe898f395fb8bb31f2851d472f6", + "_id": "vue@0.11.0-rc3", + "_shasum": "a7329c5f19ebcc3eb4e951edb4cfc56c8b113e7a", + "_from": ".", + "_npmVersion": "1.4.28", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "a7329c5f19ebcc3eb4e951edb4cfc56c8b113e7a", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.11.0-rc3.tgz" + }, + "directories": {} + }, + "0.11.0": { + "name": "vue", + "version": "0.11.0", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci" + }, + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-contrib-watch": "^0.6.1", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.2", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.16", + "karma-chrome-launcher": "^0.1.4", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.5", + "karma-firefox-launcher": "^0.1.3", + "karma-jasmine": "^0.2.2", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.0.3", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.15", + "webpack": "^1.4.4" + }, + "gitHead": "5bc3e30b694dc3b6aeeb87c24f88b9cd7a7259d6", + "_id": "vue@0.11.0", + "_shasum": "81718e27f60702f6bdaddaee91b7b29c64ca5547", + "_from": ".", + "_npmVersion": "1.4.28", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "81718e27f60702f6bdaddaee91b7b29c64ca5547", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.11.0.tgz" + }, + "directories": {} + }, + "0.11.1": { + "name": "vue", + "version": "0.11.1", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci" + }, + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-contrib-watch": "^0.6.1", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.2", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.16", + "karma-chrome-launcher": "^0.1.4", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.5", + "karma-firefox-launcher": "^0.1.3", + "karma-jasmine": "^0.2.2", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.0.3", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.15", + "webpack": "^1.4.4" + }, + "gitHead": "0df318c29d7e10bfa8e5c7ca31837af91ff3174c", + "_id": "vue@0.11.1", + "_shasum": "f0a9868c2db8124277ee43a75910a3c72121df7e", + "_from": ".", + "_npmVersion": "1.4.28", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "f0a9868c2db8124277ee43a75910a3c72121df7e", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.11.1.tgz" + }, + "directories": {} + }, + "0.11.2": { + "name": "vue", + "version": "0.11.2", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci" + }, + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-contrib-watch": "^0.6.1", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.2", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.16", + "karma-chrome-launcher": "^0.1.4", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.5", + "karma-firefox-launcher": "^0.1.3", + "karma-jasmine": "^0.2.2", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.0.3", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.15", + "webpack": "^1.4.4" + }, + "gitHead": "51cfffbdba03b937f0ef8efe40a87521852d601e", + "_id": "vue@0.11.2", + "_shasum": "b079cabcd972683f4885560bacd6b16a5c4656b5", + "_from": ".", + "_npmVersion": "1.4.28", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "b079cabcd972683f4885560bacd6b16a5c4656b5", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.11.2.tgz" + }, + "directories": {} + }, + "0.11.3": { + "name": "vue", + "version": "0.11.3", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci" + }, + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-contrib-watch": "^0.6.1", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.2", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.16", + "karma-chrome-launcher": "^0.1.4", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.5", + "karma-firefox-launcher": "^0.1.3", + "karma-jasmine": "^0.2.2", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.0.3", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.15", + "webpack": "^1.4.4" + }, + "gitHead": "fe35b5101fb0bb7fc94025f62b857a1404bffb7d", + "_id": "vue@0.11.3", + "_shasum": "e77d7dd2ab12f6729d1b78c54575b3514e72d6fe", + "_from": ".", + "_npmVersion": "1.4.28", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "e77d7dd2ab12f6729d1b78c54575b3514e72d6fe", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.11.3.tgz" + }, + "directories": {} + }, + "0.11.4": { + "name": "vue", + "version": "0.11.4", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci" + }, + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-contrib-watch": "^0.6.1", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.2", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.16", + "karma-chrome-launcher": "^0.1.4", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.5", + "karma-firefox-launcher": "^0.1.3", + "karma-jasmine": "^0.2.2", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.0.3", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.15", + "webpack": "^1.4.4" + }, + "gitHead": "19e0223f5faa2592b37434e9936f2885a5d9cb2f", + "_id": "vue@0.11.4", + "_shasum": "f81897efd0ffa5de319b781e37082b50b200e59f", + "_from": ".", + "_npmVersion": "1.4.28", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "f81897efd0ffa5de319b781e37082b50b200e59f", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.11.4.tgz" + }, + "directories": {} + }, + "0.11.5": { + "name": "vue", + "version": "0.11.5", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci" + }, + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-contrib-watch": "^0.6.1", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.16", + "webpack": "^1.5.3" + }, + "gitHead": "a06cd65e1c72beea48485a2a5a91c579c0752fa7", + "_id": "vue@0.11.5", + "_shasum": "aecca4cecca01662135af962935c5ae9cdd893b2", + "_from": ".", + "_npmVersion": "1.4.28", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "aecca4cecca01662135af962935c5ae9cdd893b2", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.11.5.tgz" + }, + "directories": {} + }, + "0.11.6": { + "name": "vue", + "version": "0.11.6", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci" + }, + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-contrib-watch": "^0.6.1", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.8.4" + }, + "gitHead": "6c3b290bb051e16ce5fc0897638b2eb4abae0214", + "_id": "vue@0.11.6", + "_shasum": "504f0cc54a5af48e9bb3236e70825c75af71d79b", + "_from": ".", + "_npmVersion": "2.7.1", + "_nodeVersion": "1.6.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "504f0cc54a5af48e9bb3236e70825c75af71d79b", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.11.6.tgz" + }, + "directories": {} + }, + "0.11.7": { + "name": "vue", + "version": "0.11.7", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci" + }, + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-contrib-watch": "^0.6.1", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.8.4" + }, + "gitHead": "563b0b965c4c6724729ddfd42598184f13c8b4f7", + "_id": "vue@0.11.7", + "_shasum": "576991d1cb376e8115d9c036690f91c44ab1bf3f", + "_from": ".", + "_npmVersion": "2.7.1", + "_nodeVersion": "1.6.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "576991d1cb376e8115d9c036690f91c44ab1bf3f", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.11.7.tgz" + }, + "directories": {} + }, + "0.11.8": { + "name": "vue", + "version": "0.11.8", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci" + }, + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-contrib-watch": "^0.6.1", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.8.4" + }, + "gitHead": "6c841059d2893d383befeed0caf8090d5f0e8b88", + "_id": "vue@0.11.8", + "_shasum": "bfe141d02920b6be16ffbe774c925dbb5a6781d8", + "_from": ".", + "_npmVersion": "2.7.1", + "_nodeVersion": "1.6.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "bfe141d02920b6be16ffbe774c925dbb5a6781d8", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.11.8.tgz" + }, + "directories": {} + }, + "0.11.9": { + "name": "vue", + "version": "0.11.9", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci" + }, + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-contrib-watch": "^0.6.1", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.8.4" + }, + "gitHead": "7f7e36bd4a298623d656ca7cab5f23976756de15", + "_id": "vue@0.11.9", + "_shasum": "140cafdaa3771c3a2fe19de1ccbef636af272e25", + "_from": ".", + "_npmVersion": "2.8.3", + "_nodeVersion": "1.8.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "140cafdaa3771c3a2fe19de1ccbef636af272e25", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.11.9.tgz" + }, + "directories": {} + }, + "0.11.10": { + "name": "vue", + "version": "0.11.10", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci" + }, + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-contrib-watch": "^0.6.1", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.8.4" + }, + "gitHead": "d257c81a5889d45012f6df39873fba3f8697f0cc", + "_id": "vue@0.11.10", + "_shasum": "2395fb2735e49ab676a832f0db9950b10660b578", + "_from": ".", + "_npmVersion": "2.8.3", + "_nodeVersion": "1.8.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "2395fb2735e49ab676a832f0db9950b10660b578", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.11.10.tgz" + }, + "directories": {} + }, + "0.12.0-beta1": { + "name": "vue", + "version": "0.12.0-beta1", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.8.4" + }, + "gitHead": "77f79d39992175f84f50e77439915a6865b84da5", + "_id": "vue@0.12.0-beta1", + "_shasum": "b9c8e72a552c240eec1a263be7c5612ddd90b022", + "_from": ".", + "_npmVersion": "2.9.0", + "_nodeVersion": "2.0.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "b9c8e72a552c240eec1a263be7c5612ddd90b022", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.0-beta1.tgz" + }, + "directories": {} + }, + "0.12.0-beta2": { + "name": "vue", + "version": "0.12.0-beta2", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.8.4" + }, + "gitHead": "0a69a55eee9b3c705dfc8953876d1c6190c2194c", + "_id": "vue@0.12.0-beta2", + "_shasum": "e642d58e7d5e696890ee40c49f1378c4414f1720", + "_from": ".", + "_npmVersion": "2.9.0", + "_nodeVersion": "2.0.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "e642d58e7d5e696890ee40c49f1378c4414f1720", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.0-beta2.tgz" + }, + "directories": {} + }, + "0.12.0-beta3": { + "name": "vue", + "version": "0.12.0-beta3", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.8.4" + }, + "gitHead": "8f742d5fe3b4e9f1477fadd0f1e1ed86eca0b548", + "_id": "vue@0.12.0-beta3", + "_shasum": "5c3fffa8871492a4d87b17e4cfbd404684cb08b2", + "_from": ".", + "_npmVersion": "2.9.0", + "_nodeVersion": "2.0.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "5c3fffa8871492a4d87b17e4cfbd404684cb08b2", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.0-beta3.tgz" + }, + "directories": {} + }, + "0.12.0-beta4": { + "name": "vue", + "version": "0.12.0-beta4", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.8.4" + }, + "gitHead": "f3552df2b0bc9777e9bb5c866ffda7e70e6b2fa3", + "_id": "vue@0.12.0-beta4", + "_shasum": "41053e39fbc4bdf20b0cc42a8006cf5807a532d6", + "_from": ".", + "_npmVersion": "2.9.0", + "_nodeVersion": "2.0.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "41053e39fbc4bdf20b0cc42a8006cf5807a532d6", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.0-beta4.tgz" + }, + "directories": {} + }, + "0.12.0-beta5": { + "name": "vue", + "version": "0.12.0-beta5", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.8.4" + }, + "gitHead": "a39476d72981c014a3cf030fa38ea2fddfbfb23f", + "_id": "vue@0.12.0-beta5", + "_shasum": "492184a5d51d4c79e88799c94fce03966ab0ddf1", + "_from": ".", + "_npmVersion": "2.9.0", + "_nodeVersion": "2.0.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "492184a5d51d4c79e88799c94fce03966ab0ddf1", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.0-beta5.tgz" + }, + "directories": {} + }, + "0.12.0-rc": { + "name": "vue", + "version": "0.12.0-rc", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.8.4" + }, + "gitHead": "61eaa271c0694cc4cf7296637b55b5481dbd3f98", + "_id": "vue@0.12.0-rc", + "_shasum": "4818f0ab510fe999dbf8b676a597444083632523", + "_from": ".", + "_npmVersion": "2.9.0", + "_nodeVersion": "2.0.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "4818f0ab510fe999dbf8b676a597444083632523", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.0-rc.tgz" + }, + "directories": {} + }, + "0.12.0-rc2": { + "name": "vue", + "version": "0.12.0-rc2", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.8.4" + }, + "gitHead": "597fa8be89af8ce4d1939b19a9c47a44daeb506b", + "_id": "vue@0.12.0-rc2", + "_shasum": "01a9ebaa56959d00e827f0ba5313110eb3a88742", + "_from": ".", + "_npmVersion": "2.9.0", + "_nodeVersion": "2.0.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "01a9ebaa56959d00e827f0ba5313110eb3a88742", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.0-rc2.tgz" + }, + "directories": {} + }, + "0.12.0": { + "name": "vue", + "version": "0.12.0", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.8.4" + }, + "gitHead": "66b124b7ecf7916ac2506fb5bd8006858006fb35", + "_id": "vue@0.12.0", + "_shasum": "ca036019f3b5cd47048ff0b57e73afbd311165f4", + "_from": ".", + "_npmVersion": "2.9.0", + "_nodeVersion": "2.0.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "ca036019f3b5cd47048ff0b57e73afbd311165f4", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.0.tgz" + }, + "directories": {} + }, + "0.12.0-csp": { + "name": "vue", + "version": "0.12.0-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.8.4" + }, + "dependencies": { + "notevil": "^1.0.0" + }, + "gitHead": "2ed38c9f75a20464e6949f39af079c8643ac8d14", + "_id": "vue@0.12.0-csp", + "_shasum": "02ef952489a70697376caae57511652a9b1331de", + "_from": ".", + "_npmVersion": "2.9.0", + "_nodeVersion": "2.0.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "02ef952489a70697376caae57511652a9b1331de", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.0-csp.tgz" + }, + "directories": {} + }, + "0.12.1": { + "name": "vue", + "version": "0.12.1", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.9.10" + }, + "gitHead": "2eedc8d76a6015def406c062221bafe2d74e2508", + "_id": "vue@0.12.1", + "_shasum": "7b94224debeba2968aed5b4dd4b1435d668187c5", + "_from": ".", + "_npmVersion": "2.9.0", + "_nodeVersion": "2.0.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "7b94224debeba2968aed5b4dd4b1435d668187c5", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.1.tgz" + }, + "directories": {} + }, + "0.12.1-csp": { + "name": "vue", + "version": "0.12.1-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.9.10" + }, + "dependencies": { + "notevil": "^1.0.0" + }, + "gitHead": "9aecbfbb9938fd317cfdeab28eb397c0b43fdbc0", + "_id": "vue@0.12.1-csp", + "_shasum": "63629cbd69043753405d5e1f8820d1dd2b780ee8", + "_from": ".", + "_npmVersion": "2.9.0", + "_nodeVersion": "2.0.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "63629cbd69043753405d5e1f8820d1dd2b780ee8", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.1-csp.tgz" + }, + "directories": {} + }, + "0.12.1-csp.1": { + "name": "vue", + "version": "0.12.1-csp.1", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.9.10" + }, + "dependencies": { + "notevil": "^1.0.0" + }, + "gitHead": "e8d82d2840d314970568e7c576b100aed7d0cd07", + "_id": "vue@0.12.1-csp.1", + "_shasum": "5f5aabf3b547c1e820c0ac8a19de2d8ea9fc2bf6", + "_from": ".", + "_npmVersion": "2.9.0", + "_nodeVersion": "2.0.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "5f5aabf3b547c1e820c0ac8a19de2d8ea9fc2bf6", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.1-csp.1.tgz" + }, + "directories": {} + }, + "0.12.1-csp.2": { + "name": "vue", + "version": "0.12.1-csp.2", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-karma": "^0.8.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.9.10" + }, + "dependencies": { + "notevil": "^1.0.0" + }, + "gitHead": "b3c529992e322daa4c3a486137730078edd22ffd", + "_id": "vue@0.12.1-csp.2", + "_shasum": "4d30f07f9aa5696cc6ac00c3983188ca3ecaa2a5", + "_from": ".", + "_npmVersion": "2.9.0", + "_nodeVersion": "2.0.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "4d30f07f9aa5696cc6ac00c3983188ca3ecaa2a5", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.1-csp.2.tgz" + }, + "directories": {} + }, + "0.12.2": { + "name": "vue", + "version": "0.12.2", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-karma": "^0.8.3", + "jasmine-core": "^2.3.4", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.3.5", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.9.10" + }, + "gitHead": "54f860d63fb4bf7d664fdaae74c5678262c715a7", + "_id": "vue@0.12.2", + "_shasum": "bcc2527e6d908bc5d843afb62a64e473c3d9af15", + "_from": ".", + "_npmVersion": "2.11.1", + "_nodeVersion": "2.3.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "bcc2527e6d908bc5d843afb62a64e473c3d9af15", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.2.tgz" + }, + "directories": {} + }, + "0.12.3": { + "name": "vue", + "version": "0.12.3", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-karma": "^0.8.3", + "jasmine-core": "^2.3.4", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.3.5", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.9.10" + }, + "gitHead": "ecc883131c5838562c7f8a853ed945dd431e5e7b", + "_id": "vue@0.12.3", + "_shasum": "a705fee53bc56dcb4f0f16f2f05d3d90b48363cd", + "_from": ".", + "_npmVersion": "2.11.1", + "_nodeVersion": "2.3.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "a705fee53bc56dcb4f0f16f2f05d3d90b48363cd", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.3.tgz" + }, + "directories": {} + }, + "0.12.4": { + "name": "vue", + "version": "0.12.4", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-karma": "^0.8.3", + "jasmine-core": "^2.3.4", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.3.5", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.9.10" + }, + "gitHead": "e614d9c3bbc0d81018fccd266f64195711b72910", + "_id": "vue@0.12.4", + "_shasum": "fd450f9407f0fb38ea8302de91f4e5911508e21f", + "_from": ".", + "_npmVersion": "2.11.1", + "_nodeVersion": "2.3.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "fd450f9407f0fb38ea8302de91f4e5911508e21f", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.4.tgz" + }, + "directories": {} + }, + "0.12.5": { + "name": "vue", + "version": "0.12.5", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "grunt": "^0.4.5", + "grunt-eslint": "^16.0.0", + "grunt-karma": "^0.8.3", + "jasmine-core": "^2.3.4", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.3.5", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.9.10" + }, + "gitHead": "eb646ecdbffd88e03d70a33f121ad3ff732ccce8", + "_id": "vue@0.12.5", + "_shasum": "658b8e064400cf7c28cff5089d701b554f421071", + "_from": ".", + "_npmVersion": "2.11.1", + "_nodeVersion": "2.3.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "658b8e064400cf7c28cff5089d701b554f421071", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.5.tgz" + }, + "directories": {} + }, + "0.12.5-csp": { + "name": "vue", + "version": "0.12.5-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "grunt": "^0.4.5", + "grunt-eslint": "^16.0.0", + "grunt-karma": "^0.8.3", + "jasmine-core": "^2.3.4", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.3.5", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.9.10" + }, + "dependencies": { + "notevil": "^1.0.0" + }, + "gitHead": "fff52e17ce167d1848099b176a67bf31140e352d", + "_id": "vue@0.12.5-csp", + "_shasum": "b786db73c42308c11c4bf42b96bcead1ef1186b3", + "_from": ".", + "_npmVersion": "2.11.1", + "_nodeVersion": "2.3.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "b786db73c42308c11c4bf42b96bcead1ef1186b3", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.5-csp.tgz" + }, + "directories": {} + }, + "0.12.6": { + "name": "vue", + "version": "0.12.6", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "grunt": "^0.4.5", + "grunt-eslint": "^16.0.0", + "grunt-karma": "^0.8.3", + "jasmine-core": "^2.3.4", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.3.5", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.9.10" + }, + "gitHead": "8bade9382a95a8d59764bb701d50e34253a09365", + "_id": "vue@0.12.6", + "_shasum": "eed5cd3833df7decc86a55184aa15c5434c2453f", + "_from": ".", + "_npmVersion": "2.11.1", + "_nodeVersion": "2.3.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "eed5cd3833df7decc86a55184aa15c5434c2453f", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.6.tgz" + }, + "directories": {} + }, + "0.12.6-csp": { + "name": "vue", + "version": "0.12.6-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "grunt": "^0.4.5", + "grunt-eslint": "^16.0.0", + "grunt-karma": "^0.8.3", + "jasmine-core": "^2.3.4", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.3.5", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.9.10" + }, + "dependencies": { + "notevil": "^1.0.0" + }, + "gitHead": "5eb9a5923a30f84ba07a1290761b78b707726c3f", + "_id": "vue@0.12.6-csp", + "_shasum": "1aa08e128510b8a939435dd033ec5bdfd0c1a199", + "_from": ".", + "_npmVersion": "2.11.1", + "_nodeVersion": "2.3.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "1aa08e128510b8a939435dd033ec5bdfd0c1a199", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.6-csp.tgz" + }, + "directories": {} + }, + "0.12.7": { + "name": "vue", + "version": "0.12.7", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "grunt": "^0.4.5", + "grunt-eslint": "^16.0.0", + "grunt-karma": "^0.8.3", + "jasmine-core": "^2.3.4", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.3.5", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.9.10" + }, + "gitHead": "69edc1ae02b230dbda22eeae53a4899fc06dff40", + "_id": "vue@0.12.7", + "_shasum": "8c44077e6732e784921c1d72f74c2d1426779f9f", + "_from": ".", + "_npmVersion": "2.11.1", + "_nodeVersion": "2.3.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "8c44077e6732e784921c1d72f74c2d1426779f9f", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.7.tgz" + }, + "directories": {} + }, + "0.12.7-csp": { + "name": "vue", + "version": "0.12.7-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "grunt": "^0.4.5", + "grunt-eslint": "^16.0.0", + "grunt-karma": "^0.8.3", + "jasmine-core": "^2.3.4", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.3.5", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.9.10" + }, + "gitHead": "fb8ee54e9d8f730bc1b0161010d88379ad6c85ac", + "_id": "vue@0.12.7-csp", + "_shasum": "93c85aefe83ec82804f9e1382a30736855833c34", + "_from": ".", + "_npmVersion": "2.11.1", + "_nodeVersion": "2.3.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "93c85aefe83ec82804f9e1382a30736855833c34", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.7-csp.tgz" + }, + "directories": {} + }, + "0.12.8": { + "name": "vue", + "version": "0.12.8", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "grunt": "^0.4.5", + "grunt-eslint": "^16.0.0", + "grunt-karma": "^0.8.3", + "jasmine-core": "^2.3.4", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.3.5", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.9.10" + }, + "gitHead": "79b6eac029493b78d257031bcfb5153979d05f15", + "_id": "vue@0.12.8", + "_shasum": "ae47b98ef110577ae7fd13dbfcc0ad8149bfb422", + "_from": ".", + "_npmVersion": "2.11.1", + "_nodeVersion": "2.3.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "ae47b98ef110577ae7fd13dbfcc0ad8149bfb422", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.8.tgz" + }, + "directories": {} + }, + "0.12.8-csp": { + "name": "vue", + "version": "0.12.8-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "grunt": "^0.4.5", + "grunt-eslint": "^16.0.0", + "grunt-karma": "^0.8.3", + "jasmine-core": "^2.3.4", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.3.5", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.9.10" + }, + "gitHead": "1c2aef1341f02f9c19c59e3979b817d2a7acb955", + "_id": "vue@0.12.8-csp", + "_shasum": "427682d45efd3e3103d93978b785c8b4b5be71d7", + "_from": ".", + "_npmVersion": "2.11.1", + "_nodeVersion": "2.3.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "427682d45efd3e3103d93978b785c8b4b5be71d7", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.8-csp.tgz" + }, + "directories": {} + }, + "0.12.9": { + "name": "vue", + "version": "0.12.9", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "grunt": "^0.4.5", + "grunt-eslint": "^16.0.0", + "grunt-karma": "^0.8.3", + "jasmine-core": "^2.3.4", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.3.5", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.9.10" + }, + "gitHead": "aca258e57602ff3466b9d3513c5bb7bf8fb08479", + "_id": "vue@0.12.9", + "_shasum": "1dec37396694a1b2e128ce075b857e30642ede58", + "_from": ".", + "_npmVersion": "2.13.0", + "_nodeVersion": "2.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "1dec37396694a1b2e128ce075b857e30642ede58", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.9.tgz" + }, + "directories": {} + }, + "0.12.9-csp": { + "name": "vue", + "version": "0.12.9-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "grunt": "^0.4.5", + "grunt-eslint": "^16.0.0", + "grunt-karma": "^0.8.3", + "jasmine-core": "^2.3.4", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.3.5", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.9.10" + }, + "gitHead": "d3375c28d67cb865c7974d045b8e10d5580ebf3c", + "_id": "vue@0.12.9-csp", + "_shasum": "b44f5660859ac5df457fe2c5c9fdc9658c3948f4", + "_from": ".", + "_npmVersion": "2.13.0", + "_nodeVersion": "2.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "b44f5660859ac5df457fe2c5c9fdc9658c3948f4", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.9-csp.tgz" + }, + "directories": {} + }, + "0.12.10": { + "name": "vue", + "version": "0.12.10", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "923be291dfcc65f8fd90f1832b17fd5d0fdea488", + "_id": "vue@0.12.10", + "_shasum": "e6a0e2131568622338da3535ed5b7b93632be3ab", + "_from": ".", + "_npmVersion": "2.13.3", + "_nodeVersion": "3.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "e6a0e2131568622338da3535ed5b7b93632be3ab", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.10.tgz" + }, + "directories": {} + }, + "0.12.10-csp": { + "name": "vue", + "version": "0.12.10-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "44f1029b598d8af59081d9fe39516c97c7066266", + "_id": "vue@0.12.10-csp", + "_shasum": "80e48b59945b9f8094fde3553bc9a6258a347bc5", + "_from": ".", + "_npmVersion": "2.13.3", + "_nodeVersion": "3.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "80e48b59945b9f8094fde3553bc9a6258a347bc5", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.10-csp.tgz" + }, + "directories": {} + }, + "0.12.11": { + "name": "vue", + "version": "0.12.11", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.1.0", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "04f3a4da16654604a50a8fa2f61f07985cb4fccc", + "_id": "vue@0.12.11", + "_shasum": "e7f84e3997b4456d5706106436903dd81070c1db", + "_from": ".", + "_npmVersion": "2.13.3", + "_nodeVersion": "3.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "e7f84e3997b4456d5706106436903dd81070c1db", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.11.tgz" + }, + "directories": {} + }, + "0.12.11-csp": { + "name": "vue", + "version": "0.12.11-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.1.0", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "notevil": "^1.0.0", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "732840226fdcf4e087f21ac47b5a3d671090eed8", + "_id": "vue@0.12.11-csp", + "_shasum": "acad59aa013bc7a8fd5a291dfdccefe6f4e65ce0", + "_from": ".", + "_npmVersion": "2.13.3", + "_nodeVersion": "3.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "acad59aa013bc7a8fd5a291dfdccefe6f4e65ce0", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.11-csp.tgz" + }, + "directories": {} + }, + "0.12.12": { + "name": "vue", + "version": "0.12.12", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.1.0", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "bf8e37188fc622d976ce5f2a48cdfc2c1c4e07d7", + "_id": "vue@0.12.12", + "_shasum": "2964c17154dd72de58d0f2c9962759ef7135a56f", + "_from": ".", + "_npmVersion": "2.13.3", + "_nodeVersion": "3.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "2964c17154dd72de58d0f2c9962759ef7135a56f", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.12.tgz" + }, + "directories": {} + }, + "0.12.12-csp": { + "name": "vue", + "version": "0.12.12-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.1.0", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "notevil": "^1.0.0", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "e1d877fe4f31d5559716369940742bb9dcae2f45", + "_id": "vue@0.12.12-csp", + "_shasum": "6d5c02160ea23fd597d7e08598330c36a732b29d", + "_from": ".", + "_npmVersion": "2.13.3", + "_nodeVersion": "3.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "6d5c02160ea23fd597d7e08598330c36a732b29d", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.12-csp.tgz" + }, + "directories": {} + }, + "1.0.0-alpha.1": { + "name": "vue", + "version": "1.0.0-alpha.1", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.1.0", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "1fabb471a44c9da9cdf9d12ff3e0540948878b5d", + "_id": "vue@1.0.0-alpha.1", + "_shasum": "3fa7172b997b76821a84c610cc3c11e2f411fb94", + "_from": ".", + "_npmVersion": "2.13.3", + "_nodeVersion": "3.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "3fa7172b997b76821a84c610cc3c11e2f411fb94", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0-alpha.1.tgz" + }, + "directories": {} + }, + "1.0.0-alpha.2": { + "name": "vue", + "version": "1.0.0-alpha.2", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.1.0", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "a635000a9883b2554b587e470e8152d09f8e789e", + "_id": "vue@1.0.0-alpha.2", + "_shasum": "1e87c501343f3ead57da4dc5157212f83d397fb4", + "_from": ".", + "_npmVersion": "2.13.3", + "_nodeVersion": "3.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "1e87c501343f3ead57da4dc5157212f83d397fb4", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0-alpha.2.tgz" + }, + "directories": {} + }, + "0.12.13": { + "name": "vue", + "version": "0.12.13", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "40e5bae10b3f0301c899a94d92bf78821948aa5e", + "_id": "vue@0.12.13", + "_shasum": "ac6b8047adb53454fa0c21335865b7949ff63477", + "_from": ".", + "_npmVersion": "2.13.3", + "_nodeVersion": "3.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "ac6b8047adb53454fa0c21335865b7949ff63477", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.13.tgz" + }, + "directories": {} + }, + "0.12.13-csp": { + "name": "vue", + "version": "0.12.13-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "notevil": "^1.0.0", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "14027a432209f2febc76e5f007711357c9601e49", + "_id": "vue@0.12.13-csp", + "_shasum": "479f6c581df57b1bfb8da07ca1ba92035ffaf89a", + "_from": ".", + "_npmVersion": "2.13.3", + "_nodeVersion": "3.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "479f6c581df57b1bfb8da07ca1ba92035ffaf89a", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.13-csp.tgz" + }, + "directories": {} + }, + "1.0.0-alpha.3": { + "name": "vue", + "version": "1.0.0-alpha.3", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "852a66acb10c4b98433b17c487cf6ea4eacc9922", + "_id": "vue@1.0.0-alpha.3", + "_shasum": "31081bd4587079fd134085a16489f3d27672c821", + "_from": ".", + "_npmVersion": "2.13.3", + "_nodeVersion": "3.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "31081bd4587079fd134085a16489f3d27672c821", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0-alpha.3.tgz" + }, + "directories": {} + }, + "0.12.14": { + "name": "vue", + "version": "0.12.14", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "600580761c84ee0ada01a0fadbde894a436e9155", + "_id": "vue@0.12.14", + "_shasum": "fdebb07621b722c346a74b5249714f5712c3ee75", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "fdebb07621b722c346a74b5249714f5712c3ee75", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.14.tgz" + }, + "directories": {} + }, + "0.12.14-csp": { + "name": "vue", + "version": "0.12.14-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "notevil": "^1.0.0", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "9df76d841589708bb524f781f943db9ba1f55ec8", + "_id": "vue@0.12.14-csp", + "_shasum": "4c3c31ab5c3b9b916bd16a628f3cd53bcf3955d7", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "4c3c31ab5c3b9b916bd16a628f3cd53bcf3955d7", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.14-csp.tgz" + }, + "directories": {} + }, + "1.0.0-alpha.4": { + "name": "vue", + "version": "1.0.0-alpha.4", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "a24079e2c098ddd4d2dc92db48e9017c5a000ecb", + "_id": "vue@1.0.0-alpha.4", + "_shasum": "6111d4d57f7934d785326e5c8fe8fe46e675203b", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "6111d4d57f7934d785326e5c8fe8fe46e675203b", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0-alpha.4.tgz" + }, + "directories": {} + }, + "0.12.15": { + "name": "vue", + "version": "0.12.15", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "431563fe9204c9c95d206499faa97c8b2ad3a3bb", + "_id": "vue@0.12.15", + "_shasum": "271bc83a4563ac44e78239288600a3eed4b558a2", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "271bc83a4563ac44e78239288600a3eed4b558a2", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.15.tgz" + }, + "directories": {} + }, + "0.12.15-csp": { + "name": "vue", + "version": "0.12.15-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "notevil": "^1.0.0", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "27632265d38f06a875930a82cb7e525d887682de", + "_id": "vue@0.12.15-csp", + "_shasum": "0273cc2dd1c6458ebbcb16cec3664ab7e215d2a2", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "0273cc2dd1c6458ebbcb16cec3664ab7e215d2a2", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.15-csp.tgz" + }, + "directories": {} + }, + "1.0.0-alpha.5": { + "name": "vue", + "version": "1.0.0-alpha.5", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "9648f018549b1f073ce6d1834ee6fbcb0b81815b", + "_id": "vue@1.0.0-alpha.5", + "_shasum": "bd237c3e7933e5fed81fa566f560df0ffca88701", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "bd237c3e7933e5fed81fa566f560df0ffca88701", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0-alpha.5.tgz" + }, + "directories": {} + }, + "1.0.0-beta.1": { + "name": "vue", + "version": "1.0.0-beta.1", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "2e904113d9e62e9cbff096bc6639e3b9c75c2fb4", + "_id": "vue@1.0.0-beta.1", + "_shasum": "7c0da3586cca7716ae421a4cc84ba0f1c5f4bd76", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "7c0da3586cca7716ae421a4cc84ba0f1c5f4bd76", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0-beta.1.tgz" + }, + "directories": {} + }, + "0.12.16": { + "name": "vue", + "version": "0.12.16", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "d53c40ab698942c891441d16bce1374982842d60", + "_id": "vue@0.12.16", + "_shasum": "cf8e48237d7547f1bc1a1ff0070980a377478989", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "cf8e48237d7547f1bc1a1ff0070980a377478989", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.16.tgz" + }, + "directories": {} + }, + "0.12.16-csp": { + "name": "vue", + "version": "0.12.16-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "notevil": "^1.0.0", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "b43cf1f257fa8c5cfa8d8e7528cb34c9969749de", + "_id": "vue@0.12.16-csp", + "_shasum": "5461cb34120cab7ecaad989f5b8b8d15e3685f4e", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "5461cb34120cab7ecaad989f5b8b8d15e3685f4e", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.16-csp.tgz" + }, + "directories": {} + }, + "1.0.0-alpha.6": { + "name": "vue", + "version": "1.0.0-alpha.6", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "2da36175ef24b0e5904c5e78c93ac2ed3b3ca08c", + "_id": "vue@1.0.0-alpha.6", + "_shasum": "74fb5345a965237d6ec8409ccb1eeeb4449e481b", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "74fb5345a965237d6ec8409ccb1eeeb4449e481b", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0-alpha.6.tgz" + }, + "directories": {} + }, + "1.0.0-beta.2": { + "name": "vue", + "version": "1.0.0-beta.2", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "b7bc6e663abf4a7061061887c60670e51d44cd5a", + "_id": "vue@1.0.0-beta.2", + "_shasum": "d7f5a1c9473f6a0b6e0a477bda2c01b7428a3e42", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "d7f5a1c9473f6a0b6e0a477bda2c01b7428a3e42", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0-beta.2.tgz" + }, + "directories": {} + }, + "1.0.0-alpha.7": { + "name": "vue", + "version": "1.0.0-alpha.7", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "6d64b363dae7ad76a480f0ad9b7109ebaea6b7cf", + "_id": "vue@1.0.0-alpha.7", + "_shasum": "8876b3feaece05e0579cfa571e2b37bffcbab9fb", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "8876b3feaece05e0579cfa571e2b37bffcbab9fb", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0-alpha.7.tgz" + }, + "directories": {} + }, + "1.0.0-beta.3": { + "name": "vue", + "version": "1.0.0-beta.3", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "3d8c1023536fb3b828af233f9bcb9064758f4451", + "_id": "vue@1.0.0-beta.3", + "_shasum": "314d96c528b8cf4ce67851503b0071bee61369a7", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "314d96c528b8cf4ce67851503b0071bee61369a7", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0-beta.3.tgz" + }, + "directories": {} + }, + "1.0.0-alpha.8": { + "name": "vue", + "version": "1.0.0-alpha.8", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "30196eee162ebc8887e891e876b2fe2f2801f01f", + "_id": "vue@1.0.0-alpha.8", + "_shasum": "293521d44a7265fac0843eaf209d2b43a821e41f", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "293521d44a7265fac0843eaf209d2b43a821e41f", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0-alpha.8.tgz" + }, + "directories": {} + }, + "1.0.0-beta.4": { + "name": "vue", + "version": "1.0.0-beta.4", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "c776ad48afdac56af335223553b92687ed2a1e0c", + "_id": "vue@1.0.0-beta.4", + "_shasum": "5c492c1877d13ad96450f978906aa87c34a2509b", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "5c492c1877d13ad96450f978906aa87c34a2509b", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0-beta.4.tgz" + }, + "directories": {} + }, + "1.0.0-rc.1": { + "name": "vue", + "version": "1.0.0-rc.1", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "58d022899a4dc4598bd4b58b56c6d22d4564144e", + "_id": "vue@1.0.0-rc.1", + "_shasum": "bd5ab314dfe3a42ae3d102c2a439ff40a4ee84c5", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "bd5ab314dfe3a42ae3d102c2a439ff40a4ee84c5", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0-rc.1.tgz" + }, + "directories": {} + }, + "1.0.0-rc.2-migration": { + "name": "vue", + "version": "1.0.0-rc.2-migration", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "b1b70fa909c5db06bf625e3d69ccbd193654b36d", + "_id": "vue@1.0.0-rc.2-migration", + "_shasum": "4afcad21145df9d6786fdf5189bb817fbc7f5a95", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "4afcad21145df9d6786fdf5189bb817fbc7f5a95", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0-rc.2-migration.tgz" + }, + "directories": {} + }, + "1.0.0-rc.2": { + "name": "vue", + "version": "1.0.0-rc.2", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "50cf2ab528e2c272eb852f96ebb00f220a6371ba", + "_id": "vue@1.0.0-rc.2", + "_shasum": "85fa26706cb92cef3b85163b5f79d8b6b9a53d15", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "85fa26706cb92cef3b85163b5f79d8b6b9a53d15", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0-rc.2.tgz" + }, + "directories": {} + }, + "1.0.0-csp": { + "name": "vue", + "version": "1.0.0-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "notevil": "^1.0.0", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "e6b2a4a9128c56d328ffc2555157df9648d74f7d", + "_id": "vue@1.0.0-csp", + "_shasum": "fbb448a1a9e51a2f6844cdb59eb30cbbe2ca78c9", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "fbb448a1a9e51a2f6844cdb59eb30cbbe2ca78c9", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0-csp.tgz" + }, + "directories": {} + }, + "1.0.0-migration": { + "name": "vue", + "version": "1.0.0-migration", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "783a619f0c12862aa3022fd7d9b509c235dba34c", + "_id": "vue@1.0.0-migration", + "_shasum": "1042d3004f6721e561f3e4adbcf2dfe4cde23cd4", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "1042d3004f6721e561f3e4adbcf2dfe4cde23cd4", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0-migration.tgz" + }, + "directories": {} + }, + "1.0.0": { + "name": "vue", + "version": "1.0.0", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "d8e9e2ea16153aacdc99a6cc36f7d121a5ab484c", + "_id": "vue@1.0.0", + "_shasum": "9672e208dd776a3eaf8f4164c6c0c2d496c442f1", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "9672e208dd776a3eaf8f4164c6c0c2d496c442f1", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0.tgz" + }, + "directories": {} + }, + "1.0.1": { + "name": "vue", + "version": "1.0.1", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "b07cbb99e3af6dbe7149b5aa3d28ce467b5b8c23", + "_id": "vue@1.0.1", + "_shasum": "ef198f2d9055cac28bedf7ad6b81452492daee70", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "ef198f2d9055cac28bedf7ad6b81452492daee70", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.1.tgz" + }, + "directories": {} + }, + "1.0.2": { + "name": "vue", + "version": "1.0.2", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "d8605f92833dafc1195f68b20755a376a8291630", + "_id": "vue@1.0.2", + "_shasum": "577f2b55001dd0d8f99de867cbabb4ab579a226f", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "577f2b55001dd0d8f99de867cbabb4ab579a226f", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.2.tgz" + }, + "directories": {} + }, + "1.0.3": { + "name": "vue", + "version": "1.0.3", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "450424bd086342f9da87a2878857e9c9daa554b7", + "_id": "vue@1.0.3", + "_shasum": "72554202d6aedb302d0a3bcf66a2d477ff521574", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "72554202d6aedb302d0a3bcf66a2d477ff521574", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.3.tgz" + }, + "directories": {} + }, + "1.0.4": { + "name": "vue", + "version": "1.0.4", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "79f289a2f22871a667b695687e35e22ef0fe2002", + "_id": "vue@1.0.4", + "_shasum": "63edbea66334a19dcee96289e1193d36bfe84a2a", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "63edbea66334a19dcee96289e1193d36bfe84a2a", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.4.tgz" + }, + "directories": {} + }, + "1.0.5": { + "name": "vue", + "version": "1.0.5", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "d8c325d587284e6225933a16ba4cd44e6dcf2bc1", + "_id": "vue@1.0.5", + "_shasum": "77d097c430232844fe7b3971455bf48512724d27", + "_from": ".", + "_npmVersion": "2.14.7", + "_nodeVersion": "4.2.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "77d097c430232844fe7b3971455bf48512724d27", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.5.tgz" + }, + "deprecated": "the dist file was built incorrectly.", + "directories": {} + }, + "1.0.6": { + "name": "vue", + "version": "1.0.6", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "d88acc1710f5a94b472b40fa173b5fb0582f3f10", + "_id": "vue@1.0.6", + "_shasum": "33d97020b756eb3d2bf164f7533b5e308d7213ec", + "_from": ".", + "_npmVersion": "2.14.7", + "_nodeVersion": "4.2.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "33d97020b756eb3d2bf164f7533b5e308d7213ec", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.6.tgz" + }, + "directories": {} + }, + "1.0.7": { + "name": "vue", + "version": "1.0.7", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "6ce6e0c9955667fb5f150823d0c97f3ffbb9d484", + "_id": "vue@1.0.7", + "_shasum": "414aeef2428e8602cdc7492e391550c33374cf30", + "_from": ".", + "_npmVersion": "2.14.7", + "_nodeVersion": "4.2.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "414aeef2428e8602cdc7492e391550c33374cf30", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.7.tgz" + }, + "directories": {} + }, + "1.0.8": { + "name": "vue", + "version": "1.0.8", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "add8cc58a360e0e545db31048ad06e0e943b284b", + "_id": "vue@1.0.8", + "_shasum": "f00bddff3f08edd193c98d19166eaaece6b38bc4", + "_from": ".", + "_npmVersion": "2.14.7", + "_nodeVersion": "4.2.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "f00bddff3f08edd193c98d19166eaaece6b38bc4", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.8.tgz" + }, + "directories": {} + }, + "1.0.9": { + "name": "vue", + "version": "1.0.9", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.0.0", + "babel-loader": "^5.0.0", + "babel-runtime": "^6.1.18", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.21.0", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "689def5858719b6ac77cbbc7d386ed1fdfa75df4", + "_id": "vue@1.0.9", + "_shasum": "a2a977d0e014bca89007e324d16c696839213955", + "_from": ".", + "_npmVersion": "2.14.7", + "_nodeVersion": "4.2.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "a2a977d0e014bca89007e324d16c696839213955", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.9.tgz" + }, + "directories": {} + }, + "1.0.10": { + "name": "vue", + "version": "1.0.10", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.0.0", + "babel-loader": "^5.0.0", + "babel-runtime": "^6.1.18", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.21.0", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "b7e83e618aace57726c1053b20bb8e6ae3a2ad52", + "_id": "vue@1.0.10", + "_shasum": "4a82dbe25ec1db12b1efc207869ece7b15bb85e0", + "_from": ".", + "_npmVersion": "2.14.7", + "_nodeVersion": "4.2.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "4a82dbe25ec1db12b1efc207869ece7b15bb85e0", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.10.tgz" + }, + "directories": {} + }, + "1.0.10-csp": { + "name": "vue", + "version": "1.0.10-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.0.0", + "babel-loader": "^5.0.0", + "babel-runtime": "^6.1.18", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.21.0", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-commonjs": "^1.4.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "ca0d8217f1f9550ce2746a96e8995ab0f3dc0b7a", + "_id": "vue@1.0.10-csp", + "_shasum": "2f3291fef280e2763601d29f59b5d7d240fba84c", + "_from": ".", + "_npmVersion": "2.14.7", + "_nodeVersion": "4.2.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "2f3291fef280e2763601d29f59b5d7d240fba84c", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.10-csp.tgz" + }, + "directories": {} + }, + "1.0.11": { + "name": "vue", + "version": "1.0.11", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.21.0", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "9f514b6a1edbf2741b308c59c407f25c978076af", + "_id": "vue@1.0.11", + "_shasum": "60c873d8869dc2c952506870848b86043588a00b", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.1.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "60c873d8869dc2c952506870848b86043588a00b", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.11.tgz" + }, + "directories": {} + }, + "1.0.11-csp": { + "name": "vue", + "version": "1.0.11-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.21.0", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-commonjs": "^1.4.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "4b41eb2d0ed7dc1c38a83faad203f03c6454c205", + "_id": "vue@1.0.11-csp", + "_shasum": "714edc5b9f73bc1a4dfe759ddae8209c85916227", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.1.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "714edc5b9f73bc1a4dfe759ddae8209c85916227", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.11-csp.tgz" + }, + "directories": {} + }, + "1.0.12": { + "name": "vue", + "version": "1.0.12", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.21.0", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "c312c886fdca573b3f34db447f09c8a50c581a98", + "_id": "vue@1.0.12", + "_shasum": "e5e55e97620ece6c3cef7b99459a2118a221fc8c", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.1.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "e5e55e97620ece6c3cef7b99459a2118a221fc8c", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.12.tgz" + }, + "directories": {} + }, + "1.0.12-csp": { + "name": "vue", + "version": "1.0.12-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.21.0", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-commonjs": "^1.4.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "91218a16cd096fe4c7d9962ea4121011bde1a7b2", + "_id": "vue@1.0.12-csp", + "_shasum": "a034740df8d58689f80d0f2033b34243a886b58a", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.1.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "a034740df8d58689f80d0f2033b34243a886b58a", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.12-csp.tgz" + }, + "deprecated": "incorrect build, please use 1.0.12-csp-1 instead", + "directories": {} + }, + "1.0.12-csp-1": { + "name": "vue", + "version": "1.0.12-csp-1", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.21.0", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-commonjs": "^1.4.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "91218a16cd096fe4c7d9962ea4121011bde1a7b2", + "_id": "vue@1.0.12-csp-1", + "_shasum": "2eda388ca56e6d55a2f6f27875195c3d0306a927", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.1.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "2eda388ca56e6d55a2f6f27875195c3d0306a927", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.12-csp-1.tgz" + }, + "directories": {} + }, + "1.0.13": { + "name": "vue", + "version": "1.0.13", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.21.0", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "da9e036b07620c2b45493cd709b30aa8065b2de4", + "_id": "vue@1.0.13", + "_shasum": "1fb4cc7d910b557226b74eefc8a42b705e922dbe", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.1.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "1fb4cc7d910b557226b74eefc8a42b705e922dbe", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.13.tgz" + }, + "directories": {} + }, + "1.0.13-csp": { + "name": "vue", + "version": "1.0.13-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.21.0", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-commonjs": "^1.4.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "00c964c5ecf2754bf586cb0ba5bec8011acfc3bf", + "_id": "vue@1.0.13-csp", + "_shasum": "3af3b12b33448f4bcc025cdc38cae043c780e712", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.1.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "3af3b12b33448f4bcc025cdc38cae043c780e712", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.13-csp.tgz" + }, + "directories": {} + }, + "1.0.14": { + "name": "vue", + "version": "1.0.14", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.21.0", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "18eab68a690342744f5ddd2b72b22d9b19b15209", + "_id": "vue@1.0.14", + "_shasum": "ba182760325881e6e16a1f1a3a0dd07fa2e6d3d7", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.1.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "ba182760325881e6e16a1f1a3a0dd07fa2e6d3d7", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.14.tgz" + }, + "directories": {} + }, + "1.0.14-csp": { + "name": "vue", + "version": "1.0.14-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.21.0", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-commonjs": "^1.4.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "eae7270384c4a6f61ba60edd32617ad684fcad73", + "_id": "vue@1.0.14-csp", + "_shasum": "e67245e1bca561d7ee3e3e29b20694894c3b210e", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.1.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "e67245e1bca561d7ee3e3e29b20694894c3b210e", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.14-csp.tgz" + }, + "directories": {} + }, + "1.0.15": { + "name": "vue", + "version": "1.0.15", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.21.0", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "e9fcaa9dc9ac31bf665cdaa2b7af3c73777ade34", + "_id": "vue@1.0.15", + "_shasum": "e532b837c100d911170001bf0bcb2490e33bae82", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.1.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "e532b837c100d911170001bf0bcb2490e33bae82", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.15.tgz" + }, + "directories": {} + }, + "1.0.15-csp": { + "name": "vue", + "version": "1.0.15-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.21.0", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-commonjs": "^1.4.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "aa0315655eef42f1a7f18c4e057962febfa50fd9", + "_id": "vue@1.0.15-csp", + "_shasum": "7d51d4a95d2895e43ddcda79030fc9296ceb4100", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.1.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "7d51d4a95d2895e43ddcda79030fc9296ceb4100", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.15-csp.tgz" + }, + "directories": {} + }, + "1.0.16": { + "name": "vue", + "version": "1.0.16", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.21.0", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "5f897f0f962aadca29baf99098c632f2fe8ea186", + "_id": "vue@1.0.16", + "_shasum": "fdda77e7214b3c69e0d5b1666512e5cf42da5e4f", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.5.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "fdda77e7214b3c69e0d5b1666512e5cf42da5e4f", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.16.tgz" + }, + "directories": {} + }, + "1.0.16-csp": { + "name": "vue", + "version": "1.0.16-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "d660fd8de105fbbfbfb594bdb11ee4ca44ddbdd8", + "_id": "vue@1.0.16-csp", + "_shasum": "d0737fa3e67356260278c8331b7f1318c339af81", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.5.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "d0737fa3e67356260278c8331b7f1318c339af81", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.16-csp.tgz" + }, + "directories": {} + }, + "1.0.17": { + "name": "vue", + "version": "1.0.17", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^2.1.0", + "eslint-config-standard": "^5.1.0", + "eslint-plugin-promise": "^1.0.8", + "eslint-plugin-standard": "^1.3.2", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "9e64586fda793e1197edf7450eeb3f9b28f67461", + "_id": "vue@1.0.17", + "_shasum": "d205a56230eb677b7950f668b05341d6c9ab236a", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.5.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "d205a56230eb677b7950f668b05341d6c9ab236a", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.17.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-9-west.internal.npmjs.com", + "tmp": "tmp/vue-1.0.17.tgz_1456708644250_0.9540390649344772" + }, + "directories": {} + }, + "1.0.17-csp": { + "name": "vue", + "version": "1.0.17-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^2.1.0", + "eslint-config-standard": "^5.1.0", + "eslint-plugin-promise": "^1.0.8", + "eslint-plugin-standard": "^1.3.2", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "7b54a7f761d30a8199f6526a0b7abebf146115ee", + "_id": "vue@1.0.17-csp", + "_shasum": "805530361dba186a485926933547f7e9a07449e3", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.5.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "805530361dba186a485926933547f7e9a07449e3", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.17-csp.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-5-east.internal.npmjs.com", + "tmp": "tmp/vue-1.0.17-csp.tgz_1456712671644_0.032794815488159657" + }, + "directories": {} + }, + "1.0.18": { + "name": "vue", + "version": "1.0.18", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.1.0", + "eslint-config-standard": "^5.1.0", + "eslint-plugin-promise": "^1.0.8", + "eslint-plugin-standard": "^1.3.2", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "86253b0e56a63376cd0470f6d7a8ab1c8e60f75a", + "_id": "vue@1.0.18", + "_shasum": "b4a41729ccedb077de80a34dffcfc8879b16efa4", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.5.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "b4a41729ccedb077de80a34dffcfc8879b16efa4", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.18.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-13-west.internal.npmjs.com", + "tmp": "tmp/vue-1.0.18.tgz_1458261467526_0.2369015347212553" + }, + "directories": {} + }, + "1.0.18-csp": { + "name": "vue", + "version": "1.0.18-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.1.0", + "eslint-config-standard": "^5.1.0", + "eslint-plugin-promise": "^1.0.8", + "eslint-plugin-standard": "^1.3.2", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "b9601a08a767542024418f92caf5a4f9d0af4387", + "_id": "vue@1.0.18-csp", + "_shasum": "ec1f9781d2d63cd3fa8a037d3c7113e6933c4f4a", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.5.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "ec1f9781d2d63cd3fa8a037d3c7113e6933c4f4a", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.18-csp.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-13-west.internal.npmjs.com", + "tmp": "tmp/vue-1.0.18-csp.tgz_1458262453954_0.978116855956614" + }, + "directories": {} + }, + "1.0.19": { + "name": "vue", + "version": "1.0.19", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.1.0", + "eslint-config-standard": "^5.1.0", + "eslint-plugin-promise": "^1.0.8", + "eslint-plugin-standard": "^1.3.2", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "355fbe14dcf539d99c6ce9fc07b1b2999f7dcee3", + "_id": "vue@1.0.19", + "_shasum": "ba4a7f7cbf959d10e91bd4cc771f0ad3e7d05fa6", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.5.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "ba4a7f7cbf959d10e91bd4cc771f0ad3e7d05fa6", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.19.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-1.0.19.tgz_1458890363030_0.8627496787812561" + }, + "directories": {} + }, + "1.0.19-csp": { + "name": "vue", + "version": "1.0.19-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.1.0", + "eslint-config-standard": "^5.1.0", + "eslint-plugin-promise": "^1.0.8", + "eslint-plugin-standard": "^1.3.2", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "d76e29999b983b137472743661528d7a800c6ff6", + "_id": "vue@1.0.19-csp", + "_shasum": "c779efaf8d7104436c7dcd6c0ddec659147721b2", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.5.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "c779efaf8d7104436c7dcd6c0ddec659147721b2", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.19-csp.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-13-west.internal.npmjs.com", + "tmp": "tmp/vue-1.0.19-csp.tgz_1458890648998_0.373419905314222" + }, + "directories": {} + }, + "1.0.20": { + "name": "vue", + "version": "1.0.20", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.1.0", + "eslint-config-standard": "^5.1.0", + "eslint-plugin-promise": "^1.0.8", + "eslint-plugin-standard": "^1.3.2", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "b12e21cb36522f8defab82de3111502a8b97083f", + "_id": "vue@1.0.20", + "_shasum": "8426deb6a6ba8aed998b816701e45ac4751b8e4d", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.5.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "8426deb6a6ba8aed998b816701e45ac4751b8e4d", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.20.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-1.0.20.tgz_1459027211830_0.0051624104380607605" + }, + "directories": {} + }, + "1.0.20-csp": { + "name": "vue", + "version": "1.0.20-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.1.0", + "eslint-config-standard": "^5.1.0", + "eslint-plugin-promise": "^1.0.8", + "eslint-plugin-standard": "^1.3.2", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "c4194caefa86a2df2abb8ccc8915308fee99d96b", + "_id": "vue@1.0.20-csp", + "_shasum": "bcc7b1bf675f60229df78be0b60db71ae90ce731", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.5.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "bcc7b1bf675f60229df78be0b60db71ae90ce731", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.20-csp.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-1.0.20-csp.tgz_1459027491780_0.8101142421364784" + }, + "directories": {} + }, + "1.0.21": { + "name": "vue", + "version": "1.0.21", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh", + "release-csp": "bash build/release-csp.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.1.0", + "eslint-config-standard": "^5.1.0", + "eslint-plugin-promise": "^1.0.8", + "eslint-plugin-standard": "^1.3.2", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "9fa430324325c2b5910c8c5c01abfdc116a41b56", + "_id": "vue@1.0.21", + "_shasum": "81657707db75e7ce744f1e5d9b1c579a93c759cd", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.5.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "81657707db75e7ce744f1e5d9b1c579a93c759cd", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.21.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-1.0.21.tgz_1460066889574_0.2730389488860965" + }, + "directories": {} + }, + "1.0.21-csp": { + "name": "vue", + "version": "1.0.21-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh", + "release-csp": "bash build/release-csp.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.1.0", + "eslint-config-standard": "^5.1.0", + "eslint-plugin-promise": "^1.0.8", + "eslint-plugin-standard": "^1.3.2", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "58674341524134c03ef9e451612e9b8007ff7d96", + "_id": "vue@1.0.21-csp", + "_shasum": "66d75d6a865731bb781ce6f8cbd7e9a7e0411fe2", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.5.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "66d75d6a865731bb781ce6f8cbd7e9a7e0411fe2", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.21-csp.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-1.0.21-csp.tgz_1460067072063_0.4909919537603855" + }, + "directories": {} + }, + "1.0.22": { + "name": "vue", + "version": "1.0.22", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh", + "release-csp": "bash build/release-csp.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.1.0", + "eslint-config-vue": "^1.0.0", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "9a0a539fb4c034b2d51414875ecc92b8d3e89a4b", + "_id": "vue@1.0.22", + "_shasum": "826c2e224b8902bbaf1dc04d68bbc5001a74ca68", + "_from": ".", + "_npmVersion": "3.8.6", + "_nodeVersion": "6.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "826c2e224b8902bbaf1dc04d68bbc5001a74ca68", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.22.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-1.0.22.tgz_1462658361341_0.13756674039177597" + }, + "directories": {} + }, + "1.0.22-csp": { + "name": "vue", + "version": "1.0.22-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh", + "release-csp": "bash build/release-csp.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.1.0", + "eslint-config-vue": "^1.0.0", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "f2bac60c1de7b252152971c2c6c81e80c8a4de78", + "_id": "vue@1.0.22-csp", + "_shasum": "bb1e0d541d5aaa7d5d63a1c10b30c05f4bb1ce9a", + "_from": ".", + "_npmVersion": "3.8.6", + "_nodeVersion": "6.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "bb1e0d541d5aaa7d5d63a1c10b30c05f4bb1ce9a", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.22-csp.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-1.0.22-csp.tgz_1462658452773_0.5138986194506288" + }, + "directories": {} + }, + "1.0.23": { + "name": "vue", + "version": "1.0.23", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh", + "release-csp": "bash build/release-csp.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.9.0", + "eslint-config-vue": "^1.0.0", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "cbcf8eb9e90c4f636ac288e82930bffbcdc69553", + "_id": "vue@1.0.23", + "_shasum": "70bffb41d6740828062ba2144f8e46d20348e127", + "_from": ".", + "_npmVersion": "3.8.6", + "_nodeVersion": "6.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "70bffb41d6740828062ba2144f8e46d20348e127", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.23.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-1.0.23.tgz_1462983655509_0.054572020657360554" + }, + "directories": {} + }, + "1.0.23-csp": { + "name": "vue", + "version": "1.0.23-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh", + "release-csp": "bash build/release-csp.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.9.0", + "eslint-config-vue": "^1.0.0", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "e61005f44e09199bc51c3df3eac7bd7a064d1ede", + "_id": "vue@1.0.23-csp", + "_shasum": "74b566e28f4ba54dc097b8a8dc014ccf04d5b86f", + "_from": ".", + "_npmVersion": "3.8.6", + "_nodeVersion": "6.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "74b566e28f4ba54dc097b8a8dc014ccf04d5b86f", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.23-csp.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-1.0.23-csp.tgz_1462983747828_0.3989598988555372" + }, + "directories": {} + }, + "1.0.24": { + "name": "vue", + "version": "1.0.24", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh", + "release-csp": "bash build/release-csp.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.9.0", + "eslint-config-vue": "^1.0.0", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "ea0de41dafed75a7c1d124d281daddc800b61e59", + "_id": "vue@1.0.24", + "_shasum": "c8eecb25542f3bc6f0ae113288a4eef924de6b14", + "_from": ".", + "_npmVersion": "3.8.6", + "_nodeVersion": "6.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "c8eecb25542f3bc6f0ae113288a4eef924de6b14", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.24.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-1.0.24.tgz_1463003854279_0.24861793918535113" + }, + "directories": {} + }, + "1.0.24-csp": { + "name": "vue", + "version": "1.0.24-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh", + "release-csp": "bash build/release-csp.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.9.0", + "eslint-config-vue": "^1.0.0", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "ccfb341ffda1279a41239be0b6c54813555cb089", + "_id": "vue@1.0.24-csp", + "_shasum": "2b60f6b63b2849e68951c4266e8e2bd920dfd602", + "_from": ".", + "_npmVersion": "3.8.6", + "_nodeVersion": "6.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "2b60f6b63b2849e68951c4266e8e2bd920dfd602", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.24-csp.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-1.0.24-csp.tgz_1463003993293_0.585835512727499" + }, + "directories": {} + }, + "2.0.0-alpha.1": { + "name": "vue", + "version": "2.0.0-alpha.1", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "test": "npm run lint && flow check && npm run test:cover && npm run test:unit && npm run test:e2e && npm run test:ssr", + "ci": "npm run lint && flow check && npm run test:cover && npm run test:ssr", + "build": "NODE_ENV=production node build/build.js", + "lint": "eslint src build test", + "flow": "flow check", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "build:ssr": "npm run build -- vue.common.js,vue-template-compiler,vue-server-renderer", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.26.x", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^0.13.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-spec-reporter": "^0.0.26", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.26.3", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "source-map": "^0.5.6", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "32ba31cee3757d2251b7d252585fffe563524a21", + "_id": "vue@2.0.0-alpha.1", + "_shasum": "12effd01451e3ac316931023316c53788c0d76f0", + "_from": ".", + "_npmVersion": "3.8.6", + "_nodeVersion": "6.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "12effd01451e3ac316931023316c53788c0d76f0", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-alpha.1.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-alpha.1.tgz_1465601667826_0.6901542220730335" + }, + "directories": {} + }, + "2.0.0-alpha.2": { + "name": "vue", + "version": "2.0.0-alpha.2", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-template-compiler,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.26.x", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^0.13.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.26.3", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "source-map": "^0.5.6", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "efa3fc746aa01e5cafc4164dbc005eb476369399", + "_id": "vue@2.0.0-alpha.2", + "_shasum": "26537043b44512e3a11497503be6845bb2c0da0c", + "_from": ".", + "_npmVersion": "3.8.6", + "_nodeVersion": "6.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "26537043b44512e3a11497503be6845bb2c0da0c", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-alpha.2.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-alpha.2.tgz_1465861012005_0.09093371103517711" + }, + "directories": {} + }, + "2.0.0-alpha.3": { + "name": "vue", + "version": "2.0.0-alpha.3", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-template-compiler,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.26.x", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^0.13.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.26.3", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "source-map": "^0.5.6", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "5c3e208cf8a94a9c7e04e3d33b7ad7db6e7377e5", + "_id": "vue@2.0.0-alpha.3", + "_shasum": "0c2aaf1bf7ed52ab28ab1e0aea4c255eb75acea5", + "_from": ".", + "_npmVersion": "3.8.6", + "_nodeVersion": "6.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "0c2aaf1bf7ed52ab28ab1e0aea4c255eb75acea5", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-alpha.3.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-alpha.3.tgz_1466014962348_0.5024105680640787" + }, + "directories": {} + }, + "2.0.0-alpha.4": { + "name": "vue", + "version": "2.0.0-alpha.4", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-template-compiler,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.26.x", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^0.13.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.26.3", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "source-map": "^0.5.6", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "7c90dc9be32a81b7ec5b6728007a8b8f3f101a76", + "_id": "vue@2.0.0-alpha.4", + "_shasum": "de4a5c15fb86bf907e9837b4dc7c053ef87487b0", + "_from": ".", + "_npmVersion": "3.8.6", + "_nodeVersion": "6.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "de4a5c15fb86bf907e9837b4dc7c053ef87487b0", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-alpha.4.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-alpha.4.tgz_1466096453127_0.4196715080179274" + }, + "directories": {} + }, + "1.0.25": { + "name": "vue", + "version": "1.0.25", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.min.js.map", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src test/e2e test/unit/specs build", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh", + "release-csp": "bash build/release-csp.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.9.0", + "eslint-config-vue": "^1.0.0", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "e9872271fa9b2a8bec1c42e65a2bb5c4df808eb2", + "_id": "vue@1.0.25", + "_shasum": "a0214b916424c1dbe0e3e46b4f9df9824c9e816a", + "_from": ".", + "_npmVersion": "3.8.6", + "_nodeVersion": "6.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "a0214b916424c1dbe0e3e46b4f9df9824c9e816a", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.25.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-1.0.25.tgz_1466116167824_0.4927524533122778" + }, + "directories": {} + }, + "1.0.25-csp": { + "name": "vue", + "version": "1.0.25-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.min.js.map", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src test/e2e test/unit/specs build", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh", + "release-csp": "bash build/release-csp.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.9.0", + "eslint-config-vue": "^1.0.0", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "18062272932752ee325a8f09409a4d6187e710db", + "_id": "vue@1.0.25-csp", + "_shasum": "a77fcd9e87aaa0f507a0c63b928f9fa96d35250c", + "_from": ".", + "_npmVersion": "3.8.6", + "_nodeVersion": "6.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "a77fcd9e87aaa0f507a0c63b928f9fa96d35250c", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.25-csp.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-1.0.25-csp.tgz_1466116657623_0.751262983540073" + }, + "directories": {} + }, + "2.0.0-alpha.5": { + "name": "vue", + "version": "2.0.0-alpha.5", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-template-compiler,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.26.x", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^0.13.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.26.3", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "source-map": "^0.5.6", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "59230fee0edf3b755ea6989e255c248bda2be75d", + "_id": "vue@2.0.0-alpha.5", + "_shasum": "a773285d166b87501838193c56e0b3b581f5c887", + "_from": ".", + "_npmVersion": "3.8.6", + "_nodeVersion": "6.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "a773285d166b87501838193c56e0b3b581f5c887", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-alpha.5.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-alpha.5.tgz_1466187763942_0.5654465507250279" + }, + "directories": {} + }, + "2.0.0-alpha.6": { + "name": "vue", + "version": "2.0.0-alpha.6", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-template-compiler,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.27.0", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^0.13.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.26.3", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "dcd82c2429ad5bceddd2e8a8e692a56ff3f12619", + "_id": "vue@2.0.0-alpha.6", + "_shasum": "9b36b80e08e080545121f109f3f744743df08206", + "_from": ".", + "_npmVersion": "3.8.6", + "_nodeVersion": "6.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "9b36b80e08e080545121f109f3f744743df08206", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-alpha.6.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-alpha.6.tgz_1466624005207_0.6892203430179507" + }, + "directories": {} + }, + "2.0.0-alpha.7": { + "name": "vue", + "version": "2.0.0-alpha.7", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-template-compiler,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.27.0", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^1.1.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "lru-cache": "^4.0.1", + "nightwatch": "^0.9.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.33.0", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "a3e26ac9417d38a43171e9fe905d3d065664b1fb", + "_id": "vue@2.0.0-alpha.7", + "_shasum": "3a1dc8a126e9b473181d46ffce9f067de5a6ac8c", + "_from": ".", + "_npmVersion": "3.9.5", + "_nodeVersion": "6.2.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "3a1dc8a126e9b473181d46ffce9f067de5a6ac8c", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-alpha.7.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-alpha.7.tgz_1467080658127_0.4492913503199816" + }, + "directories": {} + }, + "2.0.0-alpha.8": { + "name": "vue", + "version": "2.0.0-alpha.8", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-template-compiler,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.27.0", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^1.1.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "lru-cache": "^4.0.1", + "nightwatch": "^0.9.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.33.0", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "8592151110f3031df7a06c37281ce4216963b9c8", + "_id": "vue@2.0.0-alpha.8", + "_shasum": "6ad65a2caa8475fe983869ea066b06f17b04bc63", + "_from": ".", + "_npmVersion": "3.9.5", + "_nodeVersion": "6.2.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "6ad65a2caa8475fe983869ea066b06f17b04bc63", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-alpha.8.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-alpha.8.tgz_1467104537096_0.30240438994951546" + }, + "directories": {} + }, + "1.0.26": { + "name": "vue", + "version": "1.0.26", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.min.js.map", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src test/e2e test/unit/specs build", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh", + "release-csp": "bash build/release-csp.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.9.0", + "eslint-config-vue": "^1.0.0", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "e7932f80eeacf6f7d392bf520e98c4790db9d5c1", + "_id": "vue@1.0.26", + "_shasum": "89a3a81a15be8b364820dd601600744db6b1aafc", + "_from": ".", + "_npmVersion": "3.9.5", + "_nodeVersion": "6.2.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "89a3a81a15be8b364820dd601600744db6b1aafc", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.26.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-1.0.26.tgz_1467147451300_0.9240092227701098" + }, + "directories": {} + }, + "1.0.26-csp": { + "name": "vue", + "version": "1.0.26-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.min.js.map", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src test/e2e test/unit/specs build", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh", + "release-csp": "bash build/release-csp.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.9.0", + "eslint-config-vue": "^1.0.0", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "fda77a54ece7dcf14633d4e349c975396f37af32", + "_id": "vue@1.0.26-csp", + "_shasum": "98e20abf3becab9793b6c3593edde3b8d694f0ee", + "_from": ".", + "_npmVersion": "3.9.5", + "_nodeVersion": "6.2.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "98e20abf3becab9793b6c3593edde3b8d694f0ee", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.26-csp.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-1.0.26-csp.tgz_1467150172558_0.31587393674999475" + }, + "directories": {} + }, + "2.0.0-beta.1": { + "name": "vue", + "version": "2.0.0-beta.1", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.27.0", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^1.1.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.33.0", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "ed3f3958b135ed7a9882042a653419cc14213630", + "_id": "vue@2.0.0-beta.1", + "_shasum": "fae80ffa23945cd311e5b292941280d390f31f9b", + "_from": ".", + "_npmVersion": "3.9.5", + "_nodeVersion": "6.2.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "fae80ffa23945cd311e5b292941280d390f31f9b", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-beta.1.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-beta.1.tgz_1467928305336_0.3286005707923323" + }, + "directories": {} + }, + "2.0.0-beta.2": { + "name": "vue", + "version": "2.0.0-beta.2", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.27.0", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^1.1.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.33.0", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "bd583371ecb753bbf986f450f6a4f3d0f65a3f32", + "_id": "vue@2.0.0-beta.2", + "_shasum": "8d54bd51b0a6acd1d009e79815bf7bde144e3c70", + "_from": ".", + "_npmVersion": "3.9.5", + "_nodeVersion": "6.2.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "8d54bd51b0a6acd1d009e79815bf7bde144e3c70", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-beta.2.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-beta.2.tgz_1468734686340_0.9078352218493819" + }, + "directories": {} + }, + "2.0.0-beta.3": { + "name": "vue", + "version": "2.0.0-beta.3", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.27.0", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^1.1.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.33.0", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "2288f3eab7af38f8832455c060d99f44f66aab06", + "_id": "vue@2.0.0-beta.3", + "_shasum": "9ea79c05a76120931c628f7a75edf2a5b7e24982", + "_from": ".", + "_npmVersion": "3.9.5", + "_nodeVersion": "6.2.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "9ea79c05a76120931c628f7a75edf2a5b7e24982", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-beta.3.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-beta.3.tgz_1469328319979_0.5627379040233791" + }, + "directories": {} + }, + "2.0.0-beta.4": { + "name": "vue", + "version": "2.0.0-beta.4", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.27.0", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^1.1.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.0.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.33.0", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "88c3f4b937c0151cbde19cb4187b0834faf4d266", + "_id": "vue@2.0.0-beta.4", + "_shasum": "fda7a3f301bf1f4f6fc665c5457642a8ea419918", + "_from": ".", + "_npmVersion": "3.9.5", + "_nodeVersion": "6.2.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "fda7a3f301bf1f4f6fc665c5457642a8ea419918", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-beta.4.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-beta.4.tgz_1469498669294_0.19265102222561836" + }, + "directories": {} + }, + "2.0.0-beta.5": { + "name": "vue", + "version": "2.0.0-beta.5", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.27.0", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^1.1.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.0.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.33.0", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "9cbe4a31665c6ef47baad2aed62b0da89e0cc72b", + "_id": "vue@2.0.0-beta.5", + "_shasum": "90d881a7bf5cec208b1ed9d08413107f2c126215", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "90d881a7bf5cec208b1ed9d08413107f2c126215", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-beta.5.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-beta.5.tgz_1469593549153_0.2599202685523778" + }, + "directories": {} + }, + "2.0.0-beta.6": { + "name": "vue", + "version": "2.0.0-beta.6", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.27.0", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^1.1.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.33.0", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "fd3377d1a9b962c558bdac2125664888c93aa143", + "_id": "vue@2.0.0-beta.6", + "_shasum": "7d2e6cbded8c0a44e8957a0c6fc65522ab8b558b", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "7d2e6cbded8c0a44e8957a0c6fc65522ab8b558b", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-beta.6.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-beta.6.tgz_1470079661237_0.6658249413594604" + }, + "directories": {} + }, + "2.0.0-beta.7": { + "name": "vue", + "version": "2.0.0-beta.7", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.27.0", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^1.1.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.33.0", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "c2c68d6a22de1f633a18c62eab46938eed917f2f", + "_id": "vue@2.0.0-beta.7", + "_shasum": "fef963533c43374ebaf93451a8af1df29e19c3b1", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "fef963533c43374ebaf93451a8af1df29e19c3b1", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-beta.7.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-beta.7.tgz_1470435033174_0.4668272112030536" + }, + "directories": {} + }, + "2.0.0-beta.8": { + "name": "vue", + "version": "2.0.0-beta.8", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.27.0", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^1.1.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.33.0", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "1cde06b7723a1c5870ae5d2fca536e515e647487", + "_id": "vue@2.0.0-beta.8", + "_shasum": "45f926ada556eb4fc500796c81e86f07e07f9c4a", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "45f926ada556eb4fc500796c81e86f07e07f9c4a", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-beta.8.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-beta.8.tgz_1470804938808_0.9325078530237079" + }, + "directories": {} + }, + "2.0.0-rc.1": { + "name": "vue", + "version": "2.0.0-rc.1", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.27.0", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^1.1.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.33.0", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "7b42671f04aa1de342d85178419fac8fa5eb6eaf", + "_id": "vue@2.0.0-rc.1", + "_shasum": "959c855df95323bf29cc3d66ae01dcfe24c88c23", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "959c855df95323bf29cc3d66ae01dcfe24c88c23", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-rc.1.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-rc.1.tgz_1470894200563_0.5398926513735205" + }, + "directories": {} + }, + "2.0.0-rc.2": { + "name": "vue", + "version": "2.0.0-rc.2", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.27.0", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^1.1.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.33.0", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "e422a98150806d9dde395b3398be42ae3d3bb85e", + "_id": "vue@2.0.0-rc.2", + "_shasum": "92f935c13127687a38207bb69e2dbb02e7c8141e", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "92f935c13127687a38207bb69e2dbb02e7c8141e", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-rc.2.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-rc.2.tgz_1471318752677_0.23703231965191662" + }, + "directories": {} + }, + "2.0.0-rc.3": { + "name": "vue", + "version": "2.0.0-rc.3", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.27.0", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^1.1.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.33.0", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "8d03a452de61634428923a4dabbd22c24b91f3b3", + "_id": "vue@2.0.0-rc.3", + "_shasum": "3aa583897ecada9b823923a67d0b03bac9d14671", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "3aa583897ecada9b823923a67d0b03bac9d14671", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-rc.3.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-rc.3.tgz_1471716301183_0.7859994771424681" + }, + "directories": {} + }, + "2.0.0-rc.4": { + "name": "vue", + "version": "2.0.0-rc.4", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "TARGET=web-standalone-dev rollup -w -c build/config.js", + "dev:runtime": "TARGET=web-runtime-dev rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.13.1", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "es6-promise": "^3.2.1", + "eslint": "^3.4.0", + "eslint-config-vue": "^1.1.0", + "eslint-plugin-html": "^1.5.2", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.5.0", + "flow-bin": "^0.31.1", + "flow-remove-types": "github:yyx990803/flow-remove-types", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.34.10", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.13.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2" + }, + "gitHead": "8c427f7f18d34bca8e2860788d0849bee26d4bb9", + "_id": "vue@2.0.0-rc.4", + "_shasum": "324ab6afbdcf20b5b606d2950ca91040d152e89b", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "324ab6afbdcf20b5b606d2950ca91040d152e89b", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-rc.4.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-rc.4.tgz_1472500149870_0.7657984518446028" + }, + "directories": {} + }, + "2.0.0-rc.5": { + "name": "vue", + "version": "2.0.0-rc.5", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-standalone-dev rollup -w -c build/config.js", + "dev:runtime": "TARGET=web-runtime-dev rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.13.1", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "es6-promise": "^3.2.1", + "eslint": "^3.4.0", + "eslint-config-vue": "^1.1.0", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.5.0", + "eslint-plugin-html": "^1.5.2", + "flow-bin": "^0.31.1", + "flow-remove-types": "github:yyx990803/flow-remove-types", + "http-server": "^0.9.0", + "jasmine": "2.4.x", + "jasmine-core": "2.4.x", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.34.10", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.13.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.2", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2" + }, + "gitHead": "84dfc1d99c2b42f28d238bed8a46d02c47c8aa10", + "_id": "vue@2.0.0-rc.5", + "_shasum": "d743850882326c3203a9612f4e1bff4f045cc0ff", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "d743850882326c3203a9612f4e1bff4f045cc0ff", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-rc.5.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-rc.5.tgz_1473334198315_0.16794415842741728" + }, + "directories": {} + }, + "2.0.0-rc.6": { + "name": "vue", + "version": "2.0.0-rc.6", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-standalone-dev rollup -w -c build/config.js", + "dev:runtime": "TARGET=web-runtime-dev rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.13.1", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "es6-promise": "^3.2.1", + "eslint": "^3.4.0", + "eslint-config-vue": "^1.1.0", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-html": "^1.5.2", + "flow-bin": "^0.31.1", + "flow-remove-types": "github:yyx990803/flow-remove-types", + "http-server": "^0.9.0", + "jasmine": "2.4.x", + "jasmine-core": "2.4.x", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.34.10", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.13.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.2", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2" + }, + "gitHead": "43211fd519f462af2530556d905b38d942f61294", + "_id": "vue@2.0.0-rc.6", + "_shasum": "4572daa8aac8ef1eb48559f8ac4ab8e408e2869f", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "4572daa8aac8ef1eb48559f8ac4ab8e408e2869f", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-rc.6.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-rc.6.tgz_1473772872082_0.040285271126776934" + }, + "directories": {} + }, + "1.0.27": { + "name": "vue", + "version": "1.0.27", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.min.js.map", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src test/e2e test/unit/specs build", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh", + "release-csp": "bash build/release-csp.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.3", + "codecov.io": "^0.1.2", + "eslint": "^3.5.0", + "eslint-config-vue": "^1.0.0", + "eslint-plugin-html": "^1.5.2", + "istanbul-instrumenter-loader": "^0.2.0", + "jasmine-core": "^2.4.1", + "karma": "^1.3.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.0", + "karma-ie-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-phantomjs-launcher": "^1.0.2", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.34.13", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "baa92ca1b5dd59d5950fc44ed5476c15f01a843e", + "_id": "vue@1.0.27", + "_shasum": "f56229c87d436a661bd3bb63cc7eeb264233116e", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "f56229c87d436a661bd3bb63cc7eeb264233116e", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.27.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-1.0.27.tgz_1474660297977_0.7622160818427801" + }, + "directories": {} + }, + "1.0.27-csp": { + "name": "vue", + "version": "1.0.27-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.min.js.map", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src test/e2e test/unit/specs build", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh", + "release-csp": "bash build/release-csp.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.3", + "codecov.io": "^0.1.2", + "eslint": "^3.5.0", + "eslint-config-vue": "^1.0.0", + "eslint-plugin-html": "^1.5.2", + "istanbul-instrumenter-loader": "^0.2.0", + "jasmine-core": "^2.4.1", + "karma": "^1.3.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.0", + "karma-ie-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-phantomjs-launcher": "^1.0.2", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.34.13", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "ba7dd90bc5fc84f41a30d774e2b7f58e2a058222", + "_id": "vue@1.0.27-csp", + "_shasum": "7c8058e5644ea4d8702c24576a1edbf03d4823e0", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "7c8058e5644ea4d8702c24576a1edbf03d4823e0", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.27-csp.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-1.0.27-csp.tgz_1474660425377_0.06182463048025966" + }, + "directories": {} + }, + "2.0.0-rc.7": { + "name": "vue", + "version": "2.0.0-rc.7", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-standalone-dev rollup -w -c build/config.js", + "dev:runtime": "TARGET=web-runtime-dev rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "es6-promise": "^3.2.1", + "eslint": "^3.4.0", + "eslint-config-vue": "^1.1.0", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-html": "^1.5.2", + "flow-bin": "^0.32.0", + "http-server": "^0.9.0", + "jasmine": "2.4.x", + "jasmine-core": "2.4.x", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.34.13", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.2", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2" + }, + "gitHead": "08f2b97083d32b8c3fe035d770dddfc19de49a7e", + "_id": "vue@2.0.0-rc.7", + "_shasum": "d1549bef91986e06e50bf630ea1d3963f7ecd059", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "d1549bef91986e06e50bf630ea1d3963f7ecd059", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-rc.7.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-rc.7.tgz_1474669496160_0.6856245503295213" + }, + "directories": {} + }, + "1.0.28": { + "name": "vue", + "version": "1.0.28", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.min.js.map", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src test/e2e test/unit/specs build", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh", + "release-csp": "bash build/release-csp.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.3", + "codecov.io": "^0.1.2", + "eslint": "^3.5.0", + "eslint-config-vue": "^1.0.0", + "eslint-plugin-html": "^1.5.2", + "istanbul-instrumenter-loader": "^0.2.0", + "jasmine-core": "^2.4.1", + "karma": "^1.3.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.0", + "karma-ie-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-phantomjs-launcher": "^1.0.2", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.34.13", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "a8d6330d7e6b30c252aa753f99c7cb73bfc67a70", + "_id": "vue@1.0.28", + "_shasum": "ed2ff07b200bde15c87a90ef8727ceea7d38567d", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "ed2ff07b200bde15c87a90ef8727ceea7d38567d", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.28.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-1.0.28.tgz_1475009141605_0.8371744034811854" + }, + "directories": {} + }, + "1.0.28-csp": { + "name": "vue", + "version": "1.0.28-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.min.js.map", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src test/e2e test/unit/specs build", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh", + "release-csp": "bash build/release-csp.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.3", + "codecov.io": "^0.1.2", + "eslint": "^3.5.0", + "eslint-config-vue": "^1.0.0", + "eslint-plugin-html": "^1.5.2", + "istanbul-instrumenter-loader": "^0.2.0", + "jasmine-core": "^2.4.1", + "karma": "^1.3.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.0", + "karma-ie-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-phantomjs-launcher": "^1.0.2", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.34.13", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "c45cfee24d222b68b8e6a320863cb7e13c15f2bc", + "_id": "vue@1.0.28-csp", + "_shasum": "02814d502eff3e4efb6a12b882fbf3b55f1e2f1e", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "02814d502eff3e4efb6a12b882fbf3b55f1e2f1e", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.28-csp.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-1.0.28-csp.tgz_1475009243806_0.7087466502562165" + }, + "directories": {} + }, + "2.0.0-rc.8": { + "name": "vue", + "version": "2.0.0-rc.8", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-standalone-dev rollup -w -c build/config.js", + "dev:runtime": "TARGET=web-runtime-dev rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "es6-promise": "^3.2.1", + "eslint": "^3.4.0", + "eslint-config-vue": "^1.1.0", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-html": "^1.5.2", + "flow-bin": "^0.32.0", + "http-server": "^0.9.0", + "jasmine": "2.4.x", + "jasmine-core": "2.4.x", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.34.13", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.2", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2" + }, + "gitHead": "e6154316daf62c43c997e4334be7a52b57881709", + "_id": "vue@2.0.0-rc.8", + "_shasum": "6436fe5bb75002ffa57230b413b695d29f7abcba", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "6436fe5bb75002ffa57230b413b695d29f7abcba", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-rc.8.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-rc.8.tgz_1475010513582_0.2802108924370259" + }, + "directories": {} + }, + "2.0.0": { + "name": "vue", + "version": "2.0.0", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-standalone-dev rollup -w -c build/config.js", + "dev:runtime": "TARGET=web-runtime-dev rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "es6-promise": "^3.2.1", + "eslint": "^3.4.0", + "eslint-config-vue": "^1.1.0", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-html": "^1.5.2", + "flow-bin": "^0.32.0", + "http-server": "^0.9.0", + "jasmine": "2.4.x", + "jasmine-core": "2.4.x", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.2", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2" + }, + "gitHead": "156cfb9892d3359d548e27abf5d8b78b421a5a92", + "_id": "vue@2.0.0", + "_shasum": "2717556195650845a0141d8117ba8024ccedb2ba", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "2717556195650845a0141d8117ba8024ccedb2ba", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0.tgz_1475260331734_0.9920612326823175" + }, + "directories": {} + }, + "2.0.1": { + "name": "vue", + "version": "2.0.1", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-standalone-dev rollup -w -c build/config.js", + "dev:runtime": "TARGET=web-runtime-dev rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "es6-promise": "^3.2.1", + "eslint": "^3.4.0", + "eslint-config-vue": "^1.1.0", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-html": "^1.5.2", + "flow-bin": "^0.32.0", + "http-server": "^0.9.0", + "jasmine": "2.4.x", + "jasmine-core": "2.4.x", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.2", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2" + }, + "gitHead": "e6d224c3c5ca3ff6a365326ba615d116764b68f2", + "_id": "vue@2.0.1", + "_shasum": "ea20979eb5440ea7da086097befd598fb548dbc1", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "ea20979eb5440ea7da086097befd598fb548dbc1", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.1.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.0.1.tgz_1475269930880_0.6575976791791618" + }, + "directories": {} + }, + "2.0.2": { + "name": "vue", + "version": "2.0.2", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-standalone-dev rollup -w -c build/config.js", + "dev:runtime": "TARGET=web-runtime-dev rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "es6-promise": "^3.2.1", + "eslint": "^3.4.0", + "eslint-config-vue": "^1.1.0", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-html": "^1.5.2", + "flow-bin": "^0.32.0", + "http-server": "^0.9.0", + "jasmine": "2.4.x", + "jasmine-core": "2.4.x", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.2", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2" + }, + "gitHead": "70aee1c7f8f6aab359492909d41f1e0449771506", + "_id": "vue@2.0.2", + "_shasum": "ae1c01ce74a5d44d41ece96b82849c11e1d45e6d", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "ae1c01ce74a5d44d41ece96b82849c11e1d45e6d", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.2.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.2.tgz_1476248052543_0.10046554286964238" + }, + "directories": {} + }, + "2.0.3": { + "name": "vue", + "version": "2.0.3", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-standalone-dev rollup -w -c build/config.js", + "dev:runtime": "TARGET=web-runtime-dev rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^3.2.1", + "eslint": "^3.4.0", + "eslint-config-vue": "^1.1.0", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-html": "^1.5.2", + "flow-bin": "^0.32.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "2.4.x", + "jasmine-core": "2.4.x", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.2", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2" + }, + "gitHead": "3bbac7e9f5beb86dbb023edbb043bdea501c98d3", + "_id": "vue@2.0.3", + "_shasum": "3f7698f83d6ad1f0e35955447901672876c63fde", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "3f7698f83d6ad1f0e35955447901672876c63fde", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.3.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.3.tgz_1476350853659_0.9587009425740689" + }, + "directories": {} + }, + "2.0.4": { + "name": "vue", + "version": "2.0.4", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.common.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.js", + "dist/vue.min.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-standalone-dev rollup -w -c build/config.js", + "dev:runtime": "TARGET=web-runtime-dev rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^3.2.1", + "eslint": "^3.4.0", + "eslint-config-vue": "^2.0.0", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-vue": "^1.0.0", + "flow-bin": "^0.33.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "2.4.x", + "jasmine-core": "2.4.x", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.2", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2" + }, + "gitHead": "0973342e5cadaa68c21535cb9e62f27fd5493e2c", + "_id": "vue@2.0.4", + "_shasum": "26f1e3c52c74012de6a6aa58595c6706395f1fb2", + "_from": ".", + "_npmVersion": "3.10.8", + "_nodeVersion": "6.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "26f1e3c52c74012de6a6aa58595c6706395f1fb2", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.4.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.0.4.tgz_1478292430438_0.9752126208040863" + }, + "directories": {} + }, + "2.0.5": { + "name": "vue", + "version": "2.0.5", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.common.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.js", + "dist/vue.min.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-standalone-dev rollup -w -c build/config.js", + "dev:runtime": "TARGET=web-runtime-dev rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^3.2.1", + "eslint": "^3.4.0", + "eslint-config-vue": "^2.0.0", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-vue": "^1.0.0", + "flow-bin": "^0.33.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "2.4.x", + "jasmine-core": "2.4.x", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.2", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2" + }, + "gitHead": "a2cc6e2b68239460d1c27f9af8b2165594f8ab00", + "_id": "vue@2.0.5", + "_shasum": "b99dc7180a802d1148a508db3d84b52c09b5ca8e", + "_from": ".", + "_npmVersion": "3.10.8", + "_nodeVersion": "6.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "b99dc7180a802d1148a508db3d84b52c09b5ca8e", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.5.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.5.tgz_1478317652628_0.46653968561440706" + }, + "directories": {} + }, + "2.0.6": { + "name": "vue", + "version": "2.0.6", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.common.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.js", + "dist/vue.min.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-standalone-dev rollup -w -c build/config.js", + "dev:runtime": "TARGET=web-runtime-dev rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-vue": "^1.0.0", + "flow-bin": "^0.33.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.9", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.3" + }, + "dependencies": {}, + "gitHead": "fd83358c97d16eba6d53ceb2a8528bbc3376afd0", + "_id": "vue@2.0.6", + "_shasum": "a867c0cc2a8292d0de7dfd42e90e7627cf762ceb", + "_from": ".", + "_npmVersion": "3.10.8", + "_nodeVersion": "6.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "a867c0cc2a8292d0de7dfd42e90e7627cf762ceb", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.6.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.6.tgz_1479251111982_0.6678760126233101" + }, + "directories": {} + }, + "2.0.7": { + "name": "vue", + "version": "2.0.7", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.common.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.js", + "dist/vue.min.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-standalone-dev rollup -w -c build/config.js", + "dev:runtime": "TARGET=web-runtime-dev rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-vue": "^1.0.0", + "flow-bin": "^0.33.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.9", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.3" + }, + "dependencies": {}, + "gitHead": "cd0e37361227b9b6f34e88dda3f4934c3932014d", + "_id": "vue@2.0.7", + "_shasum": "83698ef4f76ce702f425b5576b06ff28e12db143", + "_from": ".", + "_npmVersion": "3.10.8", + "_nodeVersion": "6.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "83698ef4f76ce702f425b5576b06ff28e12db143", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.7.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.0.7.tgz_1479333271954_0.264754707692191" + }, + "directories": {} + }, + "2.0.8": { + "name": "vue", + "version": "2.0.8", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.common.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.js", + "dist/vue.min.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-standalone-dev rollup -w -c build/config.js", + "dev:runtime": "TARGET=web-runtime-dev rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-vue": "^1.0.0", + "flow-bin": "^0.33.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.9", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.3" + }, + "dependencies": {}, + "gitHead": "9fa4bbbc04f17fe278b280a99225077836d692ec", + "_id": "vue@2.0.8", + "_shasum": "bbc191db5e1442f208604f994f03e49ac09e69d2", + "_from": ".", + "_npmVersion": "3.10.8", + "_nodeVersion": "6.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "bbc191db5e1442f208604f994f03e49ac09e69d2", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.8.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.8.tgz_1479611705947_0.1140876084100455" + }, + "directories": {} + }, + "2.1.0": { + "name": "vue", + "version": "2.1.0", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.common.js", + "dist/vue.runtime.common.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-vue": "^1.0.0", + "flow-bin": "^0.33.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.9", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.3" + }, + "dependencies": {}, + "gitHead": "f4647b01f8340eb0d21d14f4fc1a720855fee3d5", + "_id": "vue@2.1.0", + "_shasum": "293ba3efaaca846aa6bcbfac45cf8524cc597e3d", + "_from": ".", + "_npmVersion": "3.10.8", + "_nodeVersion": "6.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "293ba3efaaca846aa6bcbfac45cf8524cc597e3d", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.1.0.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/vue-2.1.0.tgz_1479831313483_0.42749749566428363" + }, + "directories": {} + }, + "2.1.1": { + "name": "vue", + "version": "2.1.1", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.common.js", + "dist/vue.runtime.common.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-vue": "^1.0.0", + "flow-bin": "^0.33.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.9", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.3" + }, + "dependencies": {}, + "gitHead": "adf33c18eb1e24676af22d85d072fe6bfa83c99c", + "_id": "vue@2.1.1", + "_shasum": "8a1653e19a3ea4d44778893261a9f3c5a70c083b", + "_from": ".", + "_npmVersion": "3.10.8", + "_nodeVersion": "6.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "8a1653e19a3ea4d44778893261a9f3c5a70c083b", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.1.1.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/vue-2.1.1.tgz_1479934847963_0.6884484167676419" + }, + "directories": {} + }, + "2.1.2": { + "name": "vue", + "version": "2.1.2", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.common.js", + "dist/vue.runtime.common.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-vue": "^1.0.0", + "flow-bin": "^0.33.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.9", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.3" + }, + "dependencies": {}, + "gitHead": "9e5d882bd2e40e9593f76ae557e6060e0319fd40", + "_id": "vue@2.1.2", + "_shasum": "0f94cf1779a405a460bf945e5bc27cfc3cf64d60", + "_from": ".", + "_npmVersion": "3.10.8", + "_nodeVersion": "6.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "0f94cf1779a405a460bf945e5bc27cfc3cf64d60", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.1.2.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/vue-2.1.2.tgz_1479944543760_0.3896191492676735" + }, + "directories": {} + }, + "2.1.3": { + "name": "vue", + "version": "2.1.3", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.common.js", + "dist/vue.runtime.common.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-vue": "^1.0.0", + "flow-bin": "^0.33.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.9", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.3" + }, + "dependencies": {}, + "gitHead": "c32ea056a552ac792dcb52bd22cb19dba761c229", + "_id": "vue@2.1.3", + "_shasum": "20161b8684777754fd9823134b38f13c1e197882", + "_from": ".", + "_npmVersion": "3.10.8", + "_nodeVersion": "6.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "20161b8684777754fd9823134b38f13c1e197882", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.1.3.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.1.3.tgz_1479946938686_0.762635137885809" + }, + "directories": {} + }, + "2.1.4": { + "name": "vue", + "version": "2.1.4", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.common.js", + "dist/vue.runtime.common.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^1.0.0", + "flow-bin": "^0.33.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.9", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.3" + }, + "dependencies": {}, + "gitHead": "a8f41399ef7538176f8207af7b6a1180f3a13505", + "_id": "vue@2.1.4", + "_shasum": "d490f8fcf696847d8cf7f8eb9168e9a5dd806bfc", + "_from": ".", + "_npmVersion": "3.10.8", + "_nodeVersion": "6.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "d490f8fcf696847d8cf7f8eb9168e9a5dd806bfc", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.1.4.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/vue-2.1.4.tgz_1480647688112_0.3128880592994392" + }, + "directories": {} + }, + "2.1.5": { + "name": "vue", + "version": "2.1.5", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.common.js", + "dist/vue.runtime.common.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^3.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^1.0.0", + "flow-bin": "^0.33.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.9", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.3" + }, + "dependencies": {}, + "gitHead": "68abdc3c3c86e01089c32b434e662dc15a3a9eda", + "_id": "vue@2.1.5", + "_shasum": "d2568d3e5093cf1486eef44cf37177e3f51d568d", + "_from": ".", + "_npmVersion": "3.10.8", + "_nodeVersion": "6.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "d2568d3e5093cf1486eef44cf37177e3f51d568d", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.1.5.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/vue-2.1.5.tgz_1481598577169_0.39072798006236553" + }, + "directories": {} + }, + "2.1.6": { + "name": "vue", + "version": "2.1.6", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.common.js", + "dist/vue.runtime.common.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^3.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^1.0.0", + "flow-bin": "^0.33.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.9", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.3" + }, + "dependencies": {}, + "gitHead": "57f425ef1d1d5ddc89e2a9d2bbe4cfd9554fddbc", + "_id": "vue@2.1.6", + "_shasum": "2fc0024c07479ac6bc7d34a2cd5ef9ca5e90b143", + "_from": ".", + "_npmVersion": "3.10.8", + "_nodeVersion": "6.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "2fc0024c07479ac6bc7d34a2cd5ef9ca5e90b143", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.1.6.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.1.6.tgz_1481649755145_0.9005280786659569" + }, + "directories": {} + }, + "2.1.7": { + "name": "vue", + "version": "2.1.7", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.common.js", + "dist/vue.runtime.common.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^3.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^1.0.0", + "flow-bin": "^0.33.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.9", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.3" + }, + "dependencies": {}, + "unpkg": "dist/vue.js", + "gitHead": "c803fbbca02d9437ab5dc04316ab6f290a6bd16d", + "_id": "vue@2.1.7", + "_shasum": "747880cb70a50c66cb8791aacfee7a6dab7fc842", + "_from": ".", + "_npmVersion": "3.10.8", + "_nodeVersion": "6.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "747880cb70a50c66cb8791aacfee7a6dab7fc842", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.1.7.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.1.7.tgz_1482597383867_0.028434713603928685" + }, + "directories": {} + }, + "2.1.8": { + "name": "vue", + "version": "2.1.8", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.common.js", + "dist/vue.runtime.common.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^3.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^1.0.0", + "flow-bin": "^0.33.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.9", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.3" + }, + "dependencies": {}, + "unpkg": "dist/vue.js", + "gitHead": "17be581cf033273f3e57cf2b899cf055fcb36ba3", + "_id": "vue@2.1.8", + "_shasum": "ae30aa86024fccf5535292ce414e7b4c221a1756", + "_from": ".", + "_npmVersion": "3.10.8", + "_nodeVersion": "6.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "ae30aa86024fccf5535292ce414e7b4c221a1756", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.1.8.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.1.8.tgz_1482904483951_0.5947873364202678" + }, + "directories": {} + }, + "2.1.9": { + "name": "vue", + "version": "2.1.9", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.common.js", + "dist/vue.runtime.common.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^3.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^1.0.0", + "flow-bin": "^0.33.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.9", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.3" + }, + "dependencies": {}, + "unpkg": "dist/vue.js", + "gitHead": "80a7ceace62f1d9c5a9b93182aacc0b35cef1115", + "_id": "vue@2.1.9", + "_shasum": "19ad2eae01f7c9eb911e089f65ed579bbf5ab9dd", + "_from": ".", + "_npmVersion": "3.10.8", + "_nodeVersion": "6.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "19ad2eae01f7c9eb911e089f65ed579bbf5ab9dd", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.1.9.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.1.9.tgz_1484610495742_0.46512899617664516" + }, + "directories": {} + }, + "2.1.10": { + "name": "vue", + "version": "2.1.10", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.common.js", + "dist/vue.runtime.common.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^3.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^1.0.0", + "flow-bin": "^0.33.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.9", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.3" + }, + "dependencies": {}, + "unpkg": "dist/vue.js", + "gitHead": "994aee4f869d68a00c3b9d87daa9c8d84623ac42", + "_id": "vue@2.1.10", + "_shasum": "c9235ca48c7925137be5807832ac4e3ac180427b", + "_from": ".", + "_npmVersion": "3.10.8", + "_nodeVersion": "6.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "c9235ca48c7925137be5807832ac4e3ac180427b", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.1.10.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.1.10.tgz_1484673441093_0.458372725173831" + }, + "directories": {} + }, + "2.2.0-beta.1": { + "name": "vue", + "version": "2.2.0-beta.1", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.common.js", + "dist/vue.runtime.common.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^4.0.0", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^2.0.0", + "flow-bin": "^0.39.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^2.0.1", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "resolve": "^1.2.0", + "rollup": "^0.41.4", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^3.2.2", + "selenium-server": "^2.53.1", + "typescript": "^2.1.6", + "uglify-js": "^2.6.2", + "vue-ssr-html-stream": "^2.1.0", + "vue-ssr-webpack-plugin": "^1.0.0", + "webpack": "^2.2.0", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.4" + }, + "unpkg": "dist/vue.js", + "gitHead": "7775da259dbf594a18c1e3a38383bac3caf1e47b", + "_id": "vue@2.2.0-beta.1", + "_shasum": "e481b0c0af9aed0c1884c16f7cb843e57a3e4d1c", + "_from": ".", + "_npmVersion": "4.0.5", + "_nodeVersion": "7.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "e481b0c0af9aed0c1884c16f7cb843e57a3e4d1c", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.2.0-beta.1.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/vue-2.2.0-beta.1.tgz_1487910148538_0.9716962235979736" + }, + "directories": {} + }, + "2.2.0-beta.2": { + "name": "vue", + "version": "2.2.0-beta.2", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.common.js", + "dist/vue.runtime.common.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^4.0.0", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^2.0.0", + "flow-bin": "^0.39.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^2.0.1", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "resolve": "^1.2.0", + "rollup": "^0.41.4", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^3.2.2", + "selenium-server": "^2.53.1", + "typescript": "^2.1.6", + "uglify-js": "^2.6.2", + "vue-ssr-html-stream": "^2.1.0", + "vue-ssr-webpack-plugin": "^1.0.0", + "webpack": "^2.2.0", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.4" + }, + "unpkg": "dist/vue.js", + "gitHead": "36810163386dd4f2690d8d1c4b1016f17e467e2d", + "_id": "vue@2.2.0-beta.2", + "_shasum": "4a03a307e377c58ee4f440d8100ac8b23a0e478f", + "_from": ".", + "_npmVersion": "4.0.5", + "_nodeVersion": "7.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "4a03a307e377c58ee4f440d8100ac8b23a0e478f", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.2.0-beta.2.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.2.0-beta.2.tgz_1487980879749_0.9535783343017101" + }, + "directories": {} + }, + "2.2.0": { + "name": "vue", + "version": "2.2.0", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.common.js", + "dist/vue.runtime.common.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^4.0.0", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^2.0.0", + "flow-bin": "^0.39.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^2.0.1", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "resolve": "^1.2.0", + "rollup": "^0.41.4", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^3.2.2", + "selenium-server": "^2.53.1", + "typescript": "^2.1.6", + "uglify-js": "^2.6.2", + "vue-ssr-html-stream": "^2.1.0", + "vue-ssr-webpack-plugin": "^1.0.0", + "webpack": "^2.2.0", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.4" + }, + "gitHead": "2a19f911dc8631d44b7c7e63c4db57ef28ac5e69", + "_id": "vue@2.2.0", + "_shasum": "f4586920ce36d53944ab27ac5236ed9303a46b47", + "_from": ".", + "_npmVersion": "4.0.5", + "_nodeVersion": "7.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "f4586920ce36d53944ab27ac5236ed9303a46b47", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.2.0.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/vue-2.2.0.tgz_1488083531694_0.24482185952365398" + }, + "directories": {} + }, + "2.2.1": { + "name": "vue", + "version": "2.2.1", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.common.js", + "dist/vue.runtime.common.js", + "dist/vue.esm.js", + "dist/vue.runtime.esm.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^4.0.0", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^2.0.0", + "flow-bin": "^0.39.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^2.0.1", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "resolve": "^1.2.0", + "rollup": "^0.41.4", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^3.2.2", + "selenium-server": "^2.53.1", + "typescript": "^2.1.6", + "uglify-js": "^2.6.2", + "vue-ssr-html-stream": "^2.1.0", + "vue-ssr-webpack-plugin": "^1.0.0", + "webpack": "^2.2.0", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.4" + }, + "gitHead": "3b241b0088d8b40b3e551f76fa031910dcbd42a7", + "_id": "vue@2.2.1", + "_shasum": "ddbfd2f0caf38f374f5a36eea2e1edf25225b68e", + "_from": ".", + "_npmVersion": "4.0.5", + "_nodeVersion": "7.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "ddbfd2f0caf38f374f5a36eea2e1edf25225b68e", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.2.1.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/vue-2.2.1.tgz_1488114657958_0.2117187965195626" + }, + "directories": {} + }, + "2.2.2": { + "name": "vue", + "version": "2.2.2", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^4.0.0", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^2.0.0", + "flow-bin": "^0.39.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^2.0.1", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "resolve": "^1.2.0", + "rollup": "^0.41.4", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^3.2.2", + "selenium-server": "^2.53.1", + "typescript": "^2.1.6", + "uglify-js": "^2.6.2", + "vue-ssr-html-stream": "^2.1.0", + "vue-ssr-webpack-plugin": "^1.0.0", + "webpack": "^2.2.0", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.4" + }, + "gitHead": "d0b8dce4a6cbcce1aed1912ab12b20c858edd729", + "_id": "vue@2.2.2", + "_shasum": "17ed34028a6ab4de855738a1d7beabdf409ee23f", + "_from": ".", + "_npmVersion": "4.0.5", + "_nodeVersion": "7.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "17ed34028a6ab4de855738a1d7beabdf409ee23f", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.2.2.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.2.2.tgz_1489033433326_0.6694855242967606" + }, + "directories": {} + }, + "2.2.3": { + "name": "vue", + "version": "2.2.3", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^4.0.0", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^2.0.0", + "flow-bin": "^0.39.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^2.0.1", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "resolve": "^1.2.0", + "rollup": "^0.41.4", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^3.2.2", + "selenium-server": "^2.53.1", + "typescript": "^2.1.6", + "uglify-js": "^2.6.2", + "vue-ssr-html-stream": "^2.1.0", + "vue-ssr-webpack-plugin": "^1.0.0", + "webpack": "^2.2.0", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.4" + }, + "gitHead": "d185dd294c99fc01fd6521201f3362ba41e75060", + "_id": "vue@2.2.3", + "_shasum": "62174ade45f262efa4dba6f49ec613c6d2fc279c", + "_from": ".", + "_npmVersion": "4.0.5", + "_nodeVersion": "7.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "62174ade45f262efa4dba6f49ec613c6d2fc279c", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.2.3.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.2.3.tgz_1489392491918_0.5810584076680243" + }, + "directories": {} + }, + "2.2.4": { + "name": "vue", + "version": "2.2.4", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^4.0.0", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^2.0.0", + "flow-bin": "^0.39.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^2.0.1", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "resolve": "^1.2.0", + "rollup": "^0.41.4", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^3.2.2", + "selenium-server": "^2.53.1", + "typescript": "^2.1.6", + "uglify-js": "^2.6.2", + "vue-ssr-html-stream": "^2.1.0", + "vue-ssr-webpack-plugin": "^1.0.0", + "webpack": "^2.2.0", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.4" + }, + "gitHead": "2343b908c2f8d0b3d9ea762af6f5b85a540eddd7", + "_id": "vue@2.2.4", + "_shasum": "d0a3a050a80a12356d7950ae5a7b3131048209cc", + "_from": ".", + "_npmVersion": "4.0.5", + "_nodeVersion": "7.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "d0a3a050a80a12356d7950ae5a7b3131048209cc", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.2.4.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.2.4.tgz_1489417703415_0.14407102018594742" + }, + "directories": {} + }, + "2.2.5": { + "name": "vue", + "version": "2.2.5", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework ", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^4.0.0", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^2.0.0", + "flow-bin": "^0.39.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^2.0.1", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "resolve": "^1.2.0", + "rollup": "^0.41.4", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^3.2.2", + "selenium-server": "^2.53.1", + "typescript": "^2.1.6", + "uglify-js": "^2.6.2", + "vue-ssr-html-stream": "^2.1.0", + "vue-ssr-webpack-plugin": "^1.0.0", + "webpack": "^2.2.0", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.4" + }, + "gitHead": "c0ad75beeb5bf5e7679221b679fbdd13e0d945bb", + "_id": "vue@2.2.5", + "_shasum": "528eba68447d7eff99f86767b31176aa656c6963", + "_from": ".", + "_npmVersion": "4.0.5", + "_nodeVersion": "7.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "528eba68447d7eff99f86767b31176aa656c6963", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.2.5.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/vue-2.2.5.tgz_1490331224066_0.039384644478559494" + }, + "directories": {} + }, + "2.2.6": { + "name": "vue", + "version": "2.2.6", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework ", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^4.0.0", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^2.0.0", + "flow-bin": "^0.39.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^2.0.1", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "resolve": "^1.2.0", + "rollup": "^0.41.4", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^3.2.2", + "selenium-server": "^2.53.1", + "typescript": "^2.1.6", + "uglify-js": "^2.6.2", + "vue-ssr-html-stream": "^2.1.0", + "vue-ssr-webpack-plugin": "^1.0.0", + "webpack": "^2.2.0", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.4" + }, + "gitHead": "0cebdf55ab645001a7c8c80381ab27e03ced5c7c", + "_id": "vue@2.2.6", + "_shasum": "451714b394dd6d4eae7b773c40c2034a59621aed", + "_from": ".", + "_npmVersion": "4.0.5", + "_nodeVersion": "7.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "451714b394dd6d4eae7b773c40c2034a59621aed", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.2.6.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.2.6.tgz_1490582786729_0.13118436955846846" + }, + "directories": {} + }, + "2.3.0-beta.1": { + "name": "vue", + "version": "2.3.0-beta.1", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework ", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^4.0.0", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chalk": "^1.1.3", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^2.0.0", + "file-loader": "^0.10.1", + "flow-bin": "^0.39.0", + "hash-sum": "^1.0.2", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^2.0.1", + "lodash": "^4.17.1", + "lodash.template": "^4.4.0", + "lru-cache": "^4.0.2", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "resolve": "^1.2.0", + "rollup": "^0.41.4", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^3.2.2", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "typescript": "^2.1.6", + "uglify-js": "^2.6.2", + "webpack": "^2.2.0", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.4" + }, + "gitHead": "3a6fd13bc5c1c900774f759f200e064d60861b96", + "_id": "vue@2.3.0-beta.1", + "_shasum": "cea07a499c561f535ee320d623fd17a775c1591b", + "_from": ".", + "_npmVersion": "4.2.0", + "_nodeVersion": "7.8.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "cea07a499c561f535ee320d623fd17a775c1591b", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.3.0-beta.1.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.3.0-beta.1.tgz_1493202765108_0.0036185618955641985" + }, + "directories": {} + }, + "2.3.0": { + "name": "vue", + "version": "2.3.0", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework ", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^4.0.0", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chalk": "^1.1.3", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^2.0.0", + "file-loader": "^0.10.1", + "flow-bin": "^0.39.0", + "hash-sum": "^1.0.2", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^2.0.1", + "lodash": "^4.17.1", + "lodash.template": "^4.4.0", + "lru-cache": "^4.0.2", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "resolve": "^1.2.0", + "rollup": "^0.41.4", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^3.2.2", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "typescript": "^2.1.6", + "uglify-js": "^2.6.2", + "webpack": "^2.2.0", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.4" + }, + "gitHead": "a27c464692c83c3c953e76baaa0e51dc88e4a14a", + "_id": "vue@2.3.0", + "_shasum": "bc44db0488c5245c788304c7683efe7b4c862d82", + "_from": ".", + "_npmVersion": "4.2.0", + "_nodeVersion": "7.8.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "bc44db0488c5245c788304c7683efe7b4c862d82", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.3.0.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/vue-2.3.0.tgz_1493274146495_0.15474186395294964" + }, + "directories": {} + }, + "2.3.1": { + "name": "vue", + "version": "2.3.1", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework ", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^4.0.0", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chalk": "^1.1.3", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^2.0.0", + "file-loader": "^0.10.1", + "flow-bin": "^0.45.0", + "hash-sum": "^1.0.2", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^2.0.1", + "lodash": "^4.17.1", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.0.2", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "resolve": "^1.2.0", + "rollup": "^0.41.4", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^3.2.2", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "typescript": "^2.1.6", + "uglify-js": "^2.6.2", + "webpack": "^2.2.0", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.4" + }, + "gitHead": "6b4f3da51dbac0c7f06411907c8d8435b630d5b2", + "_id": "vue@2.3.1", + "_shasum": "cecc3a229160747f3fb01eb2f03dd04e82420462", + "_from": ".", + "_npmVersion": "4.2.0", + "_nodeVersion": "7.8.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "cecc3a229160747f3fb01eb2f03dd04e82420462", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.3.1.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.3.1.tgz_1493711973474_0.7331771603785455" + }, + "directories": {} + }, + "2.3.2": { + "name": "vue", + "version": "2.3.2", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework ", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^4.0.0", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chalk": "^1.1.3", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^2.0.0", + "file-loader": "^0.10.1", + "flow-bin": "^0.45.0", + "hash-sum": "^1.0.2", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^2.0.1", + "lodash": "^4.17.1", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.0.2", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "resolve": "^1.2.0", + "rollup": "^0.41.4", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^3.2.2", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "typescript": "^2.1.6", + "uglify-js": "^2.6.2", + "webpack": "^2.2.0", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.4" + }, + "gitHead": "b977c77d344cb1fc63a3daa50a4b96ef70e77ec5", + "_id": "vue@2.3.2", + "_shasum": "9e52aae3593480be235ff227557837e69f98203a", + "_from": ".", + "_npmVersion": "4.2.0", + "_nodeVersion": "7.8.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "9e52aae3593480be235ff227557837e69f98203a", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.3.2.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/vue-2.3.2.tgz_1493721022817_0.636890372261405" + }, + "directories": {} + }, + "2.3.3": { + "name": "vue", + "version": "2.3.3", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework ", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^4.0.0", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chalk": "^1.1.3", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^2.0.0", + "file-loader": "^0.10.1", + "flow-bin": "^0.45.0", + "hash-sum": "^1.0.2", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^2.0.1", + "lodash": "^4.17.1", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.0.2", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "resolve": "^1.2.0", + "rollup": "^0.41.4", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^3.2.2", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "typescript": "^2.1.6", + "uglify-js": "^2.6.2", + "webpack": "^2.2.0", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.4" + }, + "gitHead": "8d56a498f3d95660e2cafff4ed3c1e1da23494d1", + "_id": "vue@2.3.3", + "_shasum": "d1eaa8fde5240735a4563e74f2c7fead9cbb064c", + "_from": ".", + "_npmVersion": "4.2.0", + "_nodeVersion": "7.8.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "d1eaa8fde5240735a4563e74f2c7fead9cbb064c", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.3.3.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.3.3.tgz_1494349078810_0.31803403492085636" + }, + "directories": {} + }, + "2.3.4": { + "name": "vue", + "version": "2.3.4", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework ", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^4.0.0", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chalk": "^1.1.3", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^2.0.0", + "file-loader": "^0.10.1", + "flow-bin": "^0.45.0", + "hash-sum": "^1.0.2", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^2.0.1", + "lodash": "^4.17.1", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.0.2", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "resolve": "^1.2.0", + "rollup": "^0.41.4", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^3.2.2", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "typescript": "^2.1.6", + "uglify-js": "^2.6.2", + "webpack": "^2.2.0", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.4" + }, + "gitHead": "1f9416d514d80a99eb45184459fdf390405967ec", + "_id": "vue@2.3.4", + "_npmVersion": "5.0.0", + "_nodeVersion": "8.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-oLCxuVcVQ2inwSbS7B+zfjB6CSjgQ0yyCOzPcg7S5CXeOCbtkaiN5frR6MtwvrveqbG86OsGd9jWf6JsGyQkLw==", + "shasum": "5ec3b87a191da8090bbef56b7cfabd4158038171", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.3.4.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.3.4.tgz_1496897690369_0.5197095186449587" + }, + "directories": {} + }, + "2.4.0": { + "name": "vue", + "version": "2.4.0", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework ", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "postinstall": "node build/install-hooks.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.25.0", + "babel-eslint": "^7.2.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chalk": "^1.1.3", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^3.0.0", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.2.0", + "eslint-plugin-vue-libs": "^1.2.0", + "file-loader": "^0.11.2", + "flow-bin": "^0.48.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.45.1", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^2.7.1", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^1.1.1", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.3.4", + "uglify-js": "^3.0.15", + "webpack": "^2.6.1", + "weex-js-runtime": "^0.20.5", + "weex-vdom-tester": "^0.2.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "ac3d1eaea34ee23978d395a84f68154e7e86caa1", + "_id": "vue@2.4.0", + "_npmVersion": "5.0.0", + "_nodeVersion": "8.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-BFqCvQQJ3LA2fANeqY/aLnkMBzZo1ef6ymjRweYYnUkAjoid7MyD/J2Nhkp7YminXVZBQv7M+P7Wli7rZRNafQ==", + "shasum": "f462d15f12f73bb40d795365cf3c45431296d6f7", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.4.0.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.4.0.tgz_1499925597967_0.5970287129748613" + }, + "directories": {} + }, + "2.4.1": { + "name": "vue", + "version": "2.4.1", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework ", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/install-hooks.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.25.0", + "babel-eslint": "^7.2.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chalk": "^1.1.3", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^3.0.0", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.2.0", + "eslint-plugin-vue-libs": "^1.2.0", + "file-loader": "^0.11.2", + "flow-bin": "^0.48.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.45.1", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^2.7.1", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^1.1.1", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.3.4", + "uglify-js": "^3.0.15", + "webpack": "^2.6.1", + "weex-js-runtime": "^0.20.5", + "weex-vdom-tester": "^0.2.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "381b48503aae796c5c21c318cae8b0a8322dde35", + "_id": "vue@2.4.1", + "_npmVersion": "5.0.0", + "_nodeVersion": "8.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-V/3mbqPeXJf+AEdm2Qdrho8ADjN2/Th+q7abrDqQrGaERgtlGPLe8SRLDzJ2eNEV4Gh+L8T/vfbxb2sLUfwYbA==", + "shasum": "76e0b8eee614613532216b7bfe784e0b5695b160", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.4.1.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.4.1.tgz_1499928052215_0.3017186624929309" + }, + "directories": {} + }, + "2.4.2": { + "name": "vue", + "version": "2.4.2", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework ", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/install-hooks.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.25.0", + "babel-eslint": "^7.2.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chalk": "^1.1.3", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^3.0.0", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.2.0", + "eslint-plugin-vue-libs": "^1.2.0", + "file-loader": "^0.11.2", + "flow-bin": "^0.48.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.45.1", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^2.7.1", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^1.1.1", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.3.4", + "uglify-js": "^3.0.15", + "webpack": "^2.6.1", + "weex-js-runtime": "^0.20.5", + "weex-vdom-tester": "^0.2.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "b8f1bcd96c73251f46726cfc5393bb9999ae259d", + "_id": "vue@2.4.2", + "_npmVersion": "5.0.3", + "_nodeVersion": "8.1.4", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-GB5r+CsrCHIB1PoXt4wgBienjF3WGYOIaTK27tDk96sZxpL5RwRrsi9I3ECwFt8x8qAmxT2xk1vsY2Vpcn9nIw==", + "shasum": "a9855261f191c978cc0dc1150531b8d08149b58c", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.4.2.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.4.2.tgz_1500611321854_0.16039316589012742" + }, + "directories": {} + }, + "2.4.3": { + "name": "vue", + "version": "2.4.3", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework ", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/install-hooks.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.25.0", + "babel-eslint": "^7.2.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chalk": "^1.1.3", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^3.0.0", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.2.0", + "eslint-plugin-vue-libs": "^1.2.0", + "file-loader": "^0.11.2", + "flow-bin": "^0.48.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.45.1", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^2.7.1", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^1.1.1", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.3.4", + "uglify-js": "^3.0.15", + "webpack": "^2.6.1", + "weex-js-runtime": "^0.20.5", + "weex-vdom-tester": "^0.2.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "0a7ffb148c38848cb9f59a38b101abdec863f490", + "_id": "vue@2.4.3", + "_npmVersion": "5.4.1", + "_nodeVersion": "8.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-k6zkIBR0KsE0DLUDGdRLooX/4iRUbc3T2FyrJs4YhVySbjGwS3k5c2HRCHyXo6lg1aeAF9rg3uiJDRz0J7nbDA==", + "shasum": "55fee0ec509cf2e10aa73b34b15219e92a9ab9ea", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.4.3.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.4.3.tgz_1505289458451_0.009235817706212401" + }, + "directories": {} + }, + "2.4.4": { + "name": "vue", + "version": "2.4.4", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework ", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/install-hooks.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.25.0", + "babel-eslint": "^7.2.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chalk": "^1.1.3", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^3.0.0", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.2.0", + "eslint-plugin-vue-libs": "^1.2.0", + "file-loader": "^0.11.2", + "flow-bin": "^0.48.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.45.1", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^2.7.1", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^1.1.1", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.3.4", + "uglify-js": "^3.0.15", + "webpack": "^2.6.1", + "weex-js-runtime": "^0.20.5", + "weex-vdom-tester": "^0.2.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "94512f3e8cee4030a1096121700ed49afab48073", + "_id": "vue@2.4.4", + "_npmVersion": "5.4.1", + "_nodeVersion": "8.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-PCiRmc8ZT1DD5+BN8QUAmnkBefcCLfZVSuhc1u7iu5JoPrSHyyk/+4nehm7k2xVMi8+RFLk5WIHAN14UKF0txw==", + "shasum": "ea9550b96a71465fd2b8b17b61673b3561861789", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.4.4.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.4.4.tgz_1505403170766_0.00395546481013298" + }, + "directories": {} + }, + "2.5.0": { + "name": "vue", + "version": "2.5.0", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c build/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/install-hooks.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "babel-core": "^6.25.0", + "babel-eslint": "^7.2.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.16.0", + "chalk": "^1.1.3", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^3.0.0", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^1.2.0", + "file-loader": "^0.11.2", + "flow-bin": "^0.54.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.50.0", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.16.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.5.2", + "uglify-js": "^3.0.15", + "webpack": "^2.6.1", + "weex-js-runtime": "^0.22.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "0948d999f2fddf9f90991956493f976273c5da1f", + "_id": "vue@2.5.0", + "_npmVersion": "5.4.2", + "_nodeVersion": "8.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-KngZQLLe/N2Bvl3qu0xgqQHemm9MNz9y73D7yJ5tVavOKyhSgCLARYzrXJzYtoeadUSrItzV36VrHywLGVUx7w==", + "shasum": "7f0706c0804257e8d42e5970e1a36e648483988d", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.0.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.5.0.tgz_1507864062173_0.6368219419382513" + }, + "directories": {} + }, + "2.5.1": { + "name": "vue", + "version": "2.5.1", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c build/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/install-hooks.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "babel-core": "^6.25.0", + "babel-eslint": "^7.2.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.16.0", + "chalk": "^1.1.3", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^3.0.0", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^1.2.0", + "file-loader": "^0.11.2", + "flow-bin": "^0.54.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.50.0", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.16.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.5.2", + "uglify-js": "^3.0.15", + "webpack": "^2.6.1", + "weex-js-runtime": "^0.23.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "f865b0d7678beb70765ec8fd560008bebb51b923", + "_id": "vue@2.5.1", + "_npmVersion": "5.4.2", + "_nodeVersion": "8.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-gOTOjZZWXxXmYkchkdJ3mKi9AbkwWIc0O9yOQYbEdgigy8YI7eh7h2YS3qnDr4UIjvnrbNPbbS+OjO3Qipl4EQ==", + "shasum": "1d904b18a2bcbbfc68879f105e29d9a4dd715ff8", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.1.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.5.1.tgz_1507904083226_0.8859054057393223" + }, + "directories": {} + }, + "2.5.2": { + "name": "vue", + "version": "2.5.2", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c build/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/install-hooks.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "babel-core": "^6.25.0", + "babel-eslint": "^7.2.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.16.0", + "chalk": "^1.1.3", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^3.0.0", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^1.2.0", + "file-loader": "^0.11.2", + "flow-bin": "^0.54.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.50.0", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.16.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.5.2", + "uglify-js": "^3.0.15", + "webpack": "^2.6.1", + "weex-js-runtime": "^0.23.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "471de4a31d229e681cc9dce18632b5bcab944c77", + "_id": "vue@2.5.2", + "_npmVersion": "5.4.2", + "_nodeVersion": "8.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-Au9rf8fPkBulFHfZ406UaQDd1jH9fqGRIM+0IHilrXnJ/0TeeMH4SBkNxWf2dGevl2S3aVeu0E/WklEv0/msag==", + "shasum": "fd367a87bae7535e47f9dc5c9ec3b496e5feb5a4", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.2.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.5.2.tgz_1507926072940_0.44964701822027564" + }, + "directories": {} + }, + "2.5.3": { + "name": "vue", + "version": "2.5.3", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c build/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/setup.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "babel-core": "^6.25.0", + "babel-eslint": "^7.2.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.16.0", + "chalk": "^1.1.3", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^3.0.0", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^1.2.0", + "file-loader": "^0.11.2", + "flow-bin": "^0.54.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.50.0", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.16.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.5.2", + "uglify-js": "^3.0.15", + "webpack": "^2.6.1", + "weex-js-runtime": "^0.23.0", + "weex-styler": "^0.3.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "2acc12c9edb03329c4d9cddcca26e46c672a77bc", + "_id": "vue@2.5.3", + "_npmVersion": "5.4.2", + "_nodeVersion": "8.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-C8O5ZtR9jpwm6sCre3k42/WvuAcil5hH1+c3mJks8kNCYKh57sQh6I5U7m9L0fD89OKkIofmebUORngZkLedNA==", + "shasum": "e1a3b1f49b6e93e574ce040b95cbc873912fecc1", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.3.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.5.3.tgz_1509743497178_0.5528412547428161" + }, + "directories": {} + }, + "2.5.4": { + "name": "vue", + "version": "2.5.4", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c build/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/setup.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "babel-core": "^6.25.0", + "babel-eslint": "^7.2.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.16.0", + "chalk": "^1.1.3", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^3.0.0", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^1.2.0", + "file-loader": "^0.11.2", + "flow-bin": "^0.54.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.50.0", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.16.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.5.2", + "uglify-js": "^3.0.15", + "webpack": "^2.6.1", + "weex-js-runtime": "^0.23.0", + "weex-styler": "^0.3.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "a2cd14c765cfb1f881f34911d4fd0540feb09cce", + "_id": "vue@2.5.4", + "_npmVersion": "5.4.2", + "_nodeVersion": "8.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-AHCPCJdPe/hP0lEd1j4KKyM5J5Qmihr5eL94AJMbfgSofxXF8izd3dcvLLBSRm1EhCqYf1RhUAKua0uOsp6xGA==", + "shasum": "4405e30b856875553e8fadb0ebf50f51ffc443f5", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.4.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.5.4.tgz_1510862118158_0.23470679740421474" + }, + "directories": {} + }, + "2.5.5": { + "name": "vue", + "version": "2.5.5", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c build/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/setup.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "babel-core": "^6.25.0", + "babel-eslint": "^7.2.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.16.0", + "chalk": "^1.1.3", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^3.0.0", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^1.2.0", + "file-loader": "^0.11.2", + "flow-bin": "^0.54.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.50.0", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.16.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.5.2", + "uglify-js": "^3.0.15", + "webpack": "^2.6.1", + "weex-js-runtime": "^0.23.0", + "weex-styler": "^0.3.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "06f121b4735e8c70306c744419287592af295eac", + "_id": "vue@2.5.5", + "_npmVersion": "5.4.2", + "_nodeVersion": "8.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-GmuENNfh+QxILBWJbBuclYIIDPoCBbYpspndkBZjyhzc6Pol6I+arHiwqXBD6ml5Kwo7uEIUdDnOcuhdLlAMrw==", + "shasum": "cc3cd9b2a4f1d7356861ae0f71da0e6beb091910", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.5.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.5.5.tgz_1510936623854_0.6424111265223473" + }, + "directories": {} + }, + "2.5.6": { + "name": "vue", + "version": "2.5.6", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c build/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/setup.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "babel-core": "^6.25.0", + "babel-eslint": "^7.2.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.16.0", + "chalk": "^1.1.3", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^3.0.0", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^1.2.0", + "file-loader": "^0.11.2", + "flow-bin": "^0.54.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.50.0", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.16.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.5.2", + "uglify-js": "^3.0.15", + "webpack": "^2.6.1", + "weex-js-runtime": "^0.23.0", + "weex-styler": "^0.3.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "b2781205b0271a9b59afe0c816b41c6dbe85f0a3", + "_id": "vue@2.5.6", + "_npmVersion": "5.4.2", + "_nodeVersion": "8.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-EnTiSZKkaQmsbpgsWN01VrGYisBXvjU1iqoK2xpUOLdri8vxQyYi5CjRtT33K3JI49WaiG8XnsIGEhNnROj2fQ==", + "shasum": "73654fefa4b37f25dfc657b8b834b44c90822cd7", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.6.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.5.6.tgz_1511034258455_0.17820211220532656" + }, + "directories": {} + }, + "2.5.7": { + "name": "vue", + "version": "2.5.7", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c build/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/setup.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "babel-core": "^6.25.0", + "babel-eslint": "^7.2.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.16.0", + "chalk": "^1.1.3", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^3.0.0", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^1.2.0", + "file-loader": "^0.11.2", + "flow-bin": "^0.54.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.50.0", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.16.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.5.2", + "uglify-js": "^3.0.15", + "webpack": "^2.6.1", + "weex-js-runtime": "^0.23.0", + "weex-styler": "^0.3.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "f9f74231a2e064861856396f57dc980a6de376e9", + "_id": "vue@2.5.7", + "_npmVersion": "5.4.2", + "_nodeVersion": "8.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-eMsl1hMSw+/1o5+W9LnNKwQqOAhqAW8KfaQcPg0EjczMqU9o53VkLAQ5jk84aSYnOqeBCaLYHs0BB5iqNOuotA==", + "shasum": "313ab26025915d9fdbc39db756548cb4bb50eb44", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.7.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.5.7.tgz_1511207374375_0.18834878643974662" + }, + "directories": {} + }, + "2.5.8": { + "name": "vue", + "version": "2.5.8", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c build/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/setup.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "babel-core": "^6.25.0", + "babel-eslint": "^7.2.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.16.0", + "chalk": "^1.1.3", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^3.0.0", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^1.2.0", + "file-loader": "^0.11.2", + "flow-bin": "^0.54.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.50.0", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.16.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.5.2", + "uglify-js": "^3.0.15", + "webpack": "^2.6.1", + "weex-js-runtime": "^0.23.0", + "weex-styler": "^0.3.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "b0bbcbd152782bcc8d5ad5e9c9e5842e1daf1afb", + "_id": "vue@2.5.8", + "_npmVersion": "5.4.2", + "_nodeVersion": "8.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-aY26SGDHJTCKM+mndzuiQ0dozPpNeWO5Mtq760OrHO0AOiqVHMhzvU5h0LdCkVF9A+vE+DMTm74xSi+sxnMEDg==", + "shasum": "f855c1c27255184a82225f4bef225473e8faf15b", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.8.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.5.8.tgz_1511275347590_0.6677671177312732" + }, + "directories": {} + }, + "2.5.9": { + "name": "vue", + "version": "2.5.9", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c build/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/setup.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "babel-core": "^6.25.0", + "babel-eslint": "^7.2.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.16.0", + "chalk": "^1.1.3", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^3.0.0", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^1.2.0", + "file-loader": "^0.11.2", + "flow-bin": "^0.54.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.50.0", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.16.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.6.1", + "uglify-js": "^3.0.15", + "webpack": "^2.6.1", + "weex-js-runtime": "^0.23.0", + "weex-styler": "^0.3.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "d4e0c3ef2444384719638a89f2a25af042b95795", + "_id": "vue@2.5.9", + "_npmVersion": "5.5.1", + "_nodeVersion": "8.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-9B9XBpCtj8y5eJFrspIcKxIWt+lG9FMdF8qgyOlUeOIvcS4xSAvcARygbzHA6Pi0KWFj4BvxjtWbuPVWRx/wuA==", + "shasum": "b2380cd040915dca69881dafd121d760952e65f7", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.9.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.5.9.tgz_1511804621853_0.23726037540473044" + }, + "directories": {} + }, + "2.5.10": { + "name": "vue", + "version": "2.5.10", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c build/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/setup.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "babel-core": "^6.25.0", + "babel-eslint": "^7.2.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.16.0", + "chalk": "^1.1.3", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^3.0.0", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^1.2.0", + "file-loader": "^0.11.2", + "flow-bin": "^0.54.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.50.0", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.16.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.6.1", + "uglify-js": "^3.0.15", + "webpack": "^2.6.1", + "weex-js-runtime": "^0.23.0", + "weex-styler": "^0.3.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "a5924a53369ec7c04f0638148f60324652c126eb", + "_id": "vue@2.5.10", + "_npmVersion": "5.5.1", + "_nodeVersion": "8.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-svnce7F8Oe0cWscno2ABnq5ir3tQoQYXe2CkR7SiNGKmNyBDXhJj9Y7mXUodZytsssIvbooEH9DRrp58cOuWNA==", + "shasum": "dcd772e2594ba994145f2f09522149d9a1e7841a", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.10.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.5.10.tgz_1513120608829_0.06511193164624274" + }, + "directories": {} + }, + "2.5.11": { + "name": "vue", + "version": "2.5.11", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c build/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/setup.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "babel-core": "^6.25.0", + "babel-eslint": "^8.0.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.18.0", + "chalk": "^2.3.0", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^4.13.1", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^2.0.1", + "file-loader": "^1.1.5", + "flow-bin": "^0.61.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.52.1", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.18.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.6.1", + "uglify-js": "^3.0.15", + "webpack": "^3.10.0", + "weex-js-runtime": "^0.23.0", + "weex-styler": "^0.3.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "9c01684762445c822956f5764400d14384804db6", + "_id": "vue@2.5.11", + "_npmVersion": "5.5.1", + "_nodeVersion": "8.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-FZzUIvJa1jsFSfy6OITgjzoCtnxI8uHkewa2QCCCIgRj7ObsalXKLTf3S5sBP+kyusTctl3fKej+NHoBUCVPlA==", + "shasum": "80ca2657aa81f03545cd8dd5a2f55454641e6405", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.11.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.5.11.tgz_1513270573239_0.7456502984277904" + }, + "directories": {} + }, + "2.5.12": { + "name": "vue", + "version": "2.5.12", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c build/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/setup.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "babel-core": "^6.25.0", + "babel-eslint": "^8.0.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.18.0", + "chalk": "^2.3.0", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^4.13.1", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^2.0.1", + "file-loader": "^1.1.5", + "flow-bin": "^0.61.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.52.1", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.18.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.6.1", + "uglify-js": "^3.0.15", + "webpack": "^3.10.0", + "weex-js-runtime": "^0.23.5", + "weex-styler": "^0.3.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "ec2c48cfd58d2e82d37928af533d5d5bfa30b5c4", + "_id": "vue@2.5.12", + "_npmVersion": "5.5.1", + "_nodeVersion": "8.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-ouxtzKv/Y1GlUJlWf3jwvEi6jUs5lJQnDjaNzrHtNET9dpLENmF+cFUmfbO3avWQSzvjMpy6EqNAgLMDvZdyGA==", + "shasum": "88bb58307b51d9dd9f772019765c0d110da816e7", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.12.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.5.12.tgz_1513695265097_0.30003517493605614" + }, + "directories": {} + }, + "2.5.13": { + "name": "vue", + "version": "2.5.13", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c build/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/setup.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "babel-core": "^6.25.0", + "babel-eslint": "^8.0.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.18.0", + "chalk": "^2.3.0", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^4.13.1", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^2.0.1", + "file-loader": "^1.1.5", + "flow-bin": "^0.61.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.52.1", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.18.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.6.1", + "uglify-js": "^3.0.15", + "webpack": "^3.10.0", + "weex-js-runtime": "^0.23.5", + "weex-styler": "^0.3.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "d982e344b39391fe91b6dd91d51b2f0310a45e77", + "_id": "vue@2.5.13", + "_npmVersion": "5.5.1", + "_nodeVersion": "8.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-3D+lY7HTkKbtswDM4BBHgqyq+qo8IAEE8lz8va1dz3LLmttjgo0FxairO4r1iN2OBqk8o1FyL4hvzzTFEdQSEw==", + "shasum": "95bd31e20efcf7a7f39239c9aa6787ce8cf578e1", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.13.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.5.13.tgz_1513710421411_0.02470116876065731" + }, + "directories": {} + }, + "2.5.14": { + "name": "vue", + "version": "2.5.14", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c scripts/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c scripts/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c scripts/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c scripts/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c scripts/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c scripts/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c scripts/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c scripts/config.js --environment TARGET:weex-compiler ", + "build": "node scripts/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint --fix src scripts test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash scripts/release.sh", + "release:weex": "bash scripts/release-weex.sh", + "release:note": "node scripts/gen-release-note.js", + "commit": "git-cz" + }, + "gitHooks": { + "pre-commit": "lint-staged", + "commit-msg": "node scripts/verify-commit-msg.js" + }, + "lint-staged": { + "*.js": [ + "eslint --fix", + "git add" + ] + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "acorn": "^5.2.1", + "babel-core": "^6.25.0", + "babel-eslint": "^8.0.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.19.3", + "chalk": "^2.3.0", + "chromedriver": "^2.30.1", + "codecov": "^3.0.0", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "escodegen": "^1.8.1", + "eslint": "^4.13.1", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^2.0.1", + "file-loader": "^1.1.5", + "flow-bin": "^0.61.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.11.1", + "jasmine": "^2.99.0", + "jasmine-core": "^2.99.0", + "karma": "^2.0.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lint-staged": "^7.0.0", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.54.1", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.19.2", + "rollup-plugin-commonjs": "^8.0.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.8.1", + "typescript": "^2.7.1", + "uglify-js": "^3.0.15", + "webpack": "^3.11.0", + "weex-js-runtime": "^0.23.6", + "weex-styler": "^0.3.0", + "yorkie": "^1.0.1" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "387d2567ebec83db47d2049eec006a1ffc83451a", + "_id": "vue@2.5.14", + "_npmVersion": "5.6.0", + "_nodeVersion": "8.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-mVgzSfYvL6WXJhBkZNbJ/hZCJae6gjnnooa7K/HXfBPWKtqpBWHKfZVWV66a7x4JtE5vnQ4P1RW+OeqbWq2pOQ==", + "shasum": "74cb248a471053939abf6cdf2c406d4c311ab5a7", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.14.tgz", + "fileCount": 213, + "unpackedSize": 2455707 + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue_2.5.14_1520631733384_0.5622873738246064" + } + }, + "2.5.15": { + "name": "vue", + "version": "2.5.15", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c scripts/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c scripts/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c scripts/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c scripts/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c scripts/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c scripts/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c scripts/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c scripts/config.js --environment TARGET:weex-compiler ", + "build": "node scripts/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint --fix src scripts test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash scripts/release.sh", + "release:weex": "bash scripts/release-weex.sh", + "release:note": "node scripts/gen-release-note.js", + "commit": "git-cz" + }, + "gitHooks": { + "pre-commit": "lint-staged", + "commit-msg": "node scripts/verify-commit-msg.js" + }, + "lint-staged": { + "*.js": [ + "eslint --fix", + "git add" + ] + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "acorn": "^5.2.1", + "babel-core": "^6.25.0", + "babel-eslint": "^8.0.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.19.3", + "chalk": "^2.3.0", + "chromedriver": "^2.30.1", + "codecov": "^3.0.0", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "escodegen": "^1.8.1", + "eslint": "^4.13.1", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^2.0.1", + "file-loader": "^1.1.5", + "flow-bin": "^0.61.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.11.1", + "jasmine": "^2.99.0", + "jasmine-core": "^2.99.0", + "karma": "^2.0.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lint-staged": "^7.0.0", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.54.1", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.19.2", + "rollup-plugin-commonjs": "^8.0.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.8.1", + "typescript": "^2.7.1", + "uglify-js": "^3.0.15", + "webpack": "^3.11.0", + "weex-js-runtime": "^0.23.6", + "weex-styler": "^0.3.0", + "yorkie": "^1.0.1" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "af5453cd5e90461531f1711b5ecb6bd47136e7b0", + "_id": "vue@2.5.15", + "_npmVersion": "5.6.0", + "_nodeVersion": "8.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-uUcDI147VCQYA/9AqoEECddWdTQgrhnwAd6KDsl0pF1hiLpxqaYqIgArhnegU+QZ18DQrKvZNcR3x2QM1iaroQ==", + "shasum": "fdb67861dde967cd8d1b53116380f2f269b45202", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.15.tgz", + "fileCount": 213, + "unpackedSize": 2455943 + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue_2.5.15_1520725015621_0.7037534833744525" + } + }, + "2.5.16": { + "name": "vue", + "version": "2.5.16", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c scripts/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c scripts/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c scripts/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c scripts/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c scripts/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c scripts/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c scripts/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c scripts/config.js --environment TARGET:weex-compiler ", + "build": "node scripts/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint --fix src scripts test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash scripts/release.sh", + "release:weex": "bash scripts/release-weex.sh", + "release:note": "node scripts/gen-release-note.js", + "commit": "git-cz" + }, + "gitHooks": { + "pre-commit": "lint-staged", + "commit-msg": "node scripts/verify-commit-msg.js" + }, + "lint-staged": { + "*.js": [ + "eslint --fix", + "git add" + ] + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "acorn": "^5.2.1", + "babel-core": "^6.25.0", + "babel-eslint": "^8.0.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.19.3", + "chalk": "^2.3.0", + "chromedriver": "^2.30.1", + "codecov": "^3.0.0", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "escodegen": "^1.8.1", + "eslint": "^4.13.1", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^2.0.1", + "file-loader": "^1.1.5", + "flow-bin": "^0.61.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.11.1", + "jasmine": "^2.99.0", + "jasmine-core": "^2.99.0", + "karma": "^2.0.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lint-staged": "^7.0.0", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.54.1", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.19.2", + "rollup-plugin-commonjs": "^8.0.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.8.1", + "typescript": "^2.7.1", + "uglify-js": "^3.0.15", + "webpack": "^3.11.0", + "weex-js-runtime": "^0.23.6", + "weex-styler": "^0.3.0", + "yorkie": "^1.0.1" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "25342194016dc3bcc81cb3e8e229b0fb7ba1d1d6", + "_id": "vue@2.5.16", + "_npmVersion": "5.6.0", + "_nodeVersion": "8.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-/ffmsiVuPC8PsWcFkZngdpas19ABm5mh2wA7iDqcltyCTwlgZjHGeJYOXkBMo422iPwIcviOtrTCUpSfXmToLQ==", + "shasum": "07edb75e8412aaeed871ebafa99f4672584a0085", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.16.tgz", + "fileCount": 213, + "unpackedSize": 2461504 + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue_2.5.16_1520979268732_0.2632649953358386" + } + }, + "2.5.17-beta.0": { + "name": "vue", + "version": "2.5.17-beta.0", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c scripts/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c scripts/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c scripts/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c scripts/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c scripts/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c scripts/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c scripts/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c scripts/config.js --environment TARGET:weex-compiler ", + "build": "node scripts/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint --fix src scripts test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash scripts/release.sh", + "release:weex": "bash scripts/release-weex.sh", + "release:note": "node scripts/gen-release-note.js", + "commit": "git-cz" + }, + "gitHooks": { + "pre-commit": "lint-staged", + "commit-msg": "node scripts/verify-commit-msg.js" + }, + "lint-staged": { + "*.js": [ + "eslint --fix", + "git add" + ] + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "acorn": "^5.2.1", + "babel-core": "^6.25.0", + "babel-eslint": "^8.0.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.19.3", + "chalk": "^2.3.0", + "chromedriver": "^2.30.1", + "codecov": "^3.0.0", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "escodegen": "^1.8.1", + "eslint": "^4.13.1", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^2.0.1", + "file-loader": "^1.1.5", + "flow-bin": "^0.61.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.11.1", + "jasmine": "^2.99.0", + "jasmine-core": "^2.99.0", + "karma": "^2.0.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lint-staged": "^7.0.0", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.54.1", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.19.2", + "rollup-plugin-commonjs": "^8.0.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.8.1", + "typescript": "^2.7.1", + "uglify-js": "^3.0.15", + "webpack": "^3.11.0", + "weex-js-runtime": "^0.23.6", + "weex-styler": "^0.3.0", + "yorkie": "^1.0.1" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "readmeFilename": "README.md", + "gitHead": "19552a82a636910f4595937141557305ab5d434e", + "_id": "vue@2.5.17-beta.0", + "_npmVersion": "5.6.0", + "_nodeVersion": "8.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-9BZOxpRe1TaGLS4oXyrUp3BC1dlc93js/yvnHtOovWzrkrjFMm58X+BCHrA/xgMXSM1iyRTEGoxAURyOUaK1dA==", + "shasum": "b9985447818827306beee146923a1bd64f1bb834", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.17-beta.0.tgz", + "fileCount": 213, + "unpackedSize": 2470946 + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue_2.5.17-beta.0_1521847753644_0.05241349247412952" + } + } + }, + "time": { + "modified": "2018-05-11T12:10:20.922Z", + "created": "2013-12-07T06:09:46.299Z", + "0.0.0": "2013-12-07T06:09:48.297Z", + "0.6.0": "2013-12-08T00:36:06.595Z", + "0.7.0": "2013-12-24T02:10:40.441Z", + "0.7.1": "2013-12-24T21:58:45.125Z", + "0.7.3": "2014-01-06T19:13:46.961Z", + "0.7.4": "2014-01-10T21:57:04.827Z", + "0.7.5": "2014-01-13T21:04:55.424Z", + "0.7.6": "2014-01-19T03:43:46.191Z", + "0.8.0": "2014-01-27T05:15:59.620Z", + "0.8.1": "2014-02-02T05:49:12.091Z", + "0.8.2": "2014-02-03T22:18:34.108Z", + "0.8.3": "2014-02-06T02:21:37.894Z", + "0.8.4": "2014-02-09T02:39:35.620Z", + "0.8.5": "2014-02-10T22:05:57.196Z", + "0.8.6": "2014-02-14T07:04:48.933Z", + "0.8.7": "2014-02-20T19:02:49.368Z", + "0.8.8": "2014-02-20T22:56:32.861Z", + "0.9.0": "2014-02-25T06:16:32.434Z", + "0.9.1": "2014-02-25T15:34:00.231Z", + "0.9.2": "2014-02-25T22:29:51.748Z", + "0.9.3": "2014-03-02T23:22:22.113Z", + "0.10.0": "2014-03-23T18:53:07.403Z", + "0.10.1": "2014-03-24T08:11:43.379Z", + "0.10.2": "2014-03-25T04:20:04.786Z", + "0.10.3": "2014-03-26T23:13:06.427Z", + "0.10.4": "2014-04-25T19:48:04.430Z", + "0.10.5": "2014-06-06T19:09:26.096Z", + "0.10.6": "2014-07-29T02:42:46.414Z", + "0.11.0-rc": "2014-09-27T01:26:13.384Z", + "0.11.0-rc2": "2014-10-07T17:08:40.846Z", + "0.11.0-rc3": "2014-10-24T16:54:11.017Z", + "0.11.0": "2014-11-07T01:52:49.130Z", + "0.11.1": "2014-12-01T00:25:20.710Z", + "0.11.2": "2014-12-02T02:38:46.620Z", + "0.11.3": "2014-12-02T17:23:08.144Z", + "0.11.4": "2014-12-07T20:44:16.730Z", + "0.11.5": "2015-02-05T21:29:54.653Z", + "0.11.6": "2015-04-18T07:11:26.742Z", + "0.11.7": "2015-04-21T03:19:52.363Z", + "0.11.8": "2015-04-21T20:10:47.755Z", + "0.11.9": "2015-05-06T20:40:14.353Z", + "0.11.10": "2015-05-07T19:00:43.870Z", + "0.12.0-beta1": "2015-05-16T17:25:13.491Z", + "0.12.0-beta2": "2015-05-16T18:22:58.104Z", + "0.12.0-beta3": "2015-05-22T20:08:57.836Z", + "0.12.0-beta4": "2015-05-26T16:51:10.607Z", + "0.12.0-beta5": "2015-05-30T02:27:57.264Z", + "0.12.0-rc": "2015-06-01T20:56:52.316Z", + "0.12.0-rc2": "2015-06-04T19:00:26.474Z", + "0.12.0": "2015-06-12T17:34:35.326Z", + "0.12.0-csp": "2015-06-12T20:50:01.816Z", + "0.12.1": "2015-06-14T05:28:12.433Z", + "0.12.1-csp": "2015-06-14T05:56:45.870Z", + "0.12.1-csp.1": "2015-06-16T17:02:39.526Z", + "0.12.1-csp.2": "2015-06-16T17:14:26.645Z", + "0.12.2": "2015-06-25T14:51:59.565Z", + "0.12.3": "2015-06-25T17:38:09.802Z", + "0.12.4": "2015-06-25T22:26:20.944Z", + "0.12.5": "2015-07-02T15:04:50.935Z", + "0.12.5-csp": "2015-07-03T01:11:03.345Z", + "0.12.6": "2015-07-05T07:48:30.721Z", + "0.12.6-csp": "2015-07-05T08:24:29.694Z", + "0.12.7": "2015-07-07T18:51:27.275Z", + "0.12.7-csp": "2015-07-07T18:54:26.904Z", + "0.12.8": "2015-07-23T15:23:32.611Z", + "0.12.8-csp": "2015-07-23T18:48:02.193Z", + "0.12.9": "2015-07-31T20:31:03.040Z", + "0.12.9-csp": "2015-07-31T21:10:16.053Z", + "0.12.10": "2015-08-10T03:39:18.266Z", + "0.12.10-csp": "2015-08-10T03:58:22.274Z", + "0.12.11": "2015-08-25T16:58:07.841Z", + "0.12.11-csp": "2015-08-25T17:10:02.340Z", + "0.12.12": "2015-08-26T08:48:27.269Z", + "0.12.12-csp": "2015-08-26T09:01:23.742Z", + "1.0.0-alpha.1": "2015-08-31T20:59:27.696Z", + "1.0.0-alpha.2": "2015-09-01T20:24:39.769Z", + "0.12.13": "2015-09-07T20:10:20.284Z", + "0.12.13-csp": "2015-09-07T20:15:03.743Z", + "1.0.0-alpha.3": "2015-09-07T20:21:11.010Z", + "0.12.14": "2015-09-11T18:16:41.183Z", + "0.12.14-csp": "2015-09-11T18:19:13.220Z", + "1.0.0-alpha.4": "2015-09-11T18:27:50.726Z", + "0.12.15": "2015-09-19T21:33:22.503Z", + "0.12.15-csp": "2015-09-19T21:39:37.485Z", + "1.0.0-alpha.5": "2015-09-19T22:14:44.591Z", + "1.0.0-beta.1": "2015-09-21T19:12:57.424Z", + "0.12.16": "2015-09-25T20:20:05.130Z", + "0.12.16-csp": "2015-09-25T20:29:32.399Z", + "1.0.0-alpha.6": "2015-09-25T20:34:58.129Z", + "1.0.0-beta.2": "2015-09-25T20:53:16.825Z", + "1.0.0-alpha.7": "2015-10-02T20:13:10.203Z", + "1.0.0-beta.3": "2015-10-02T20:17:44.825Z", + "1.0.0-alpha.8": "2015-10-11T00:38:39.712Z", + "1.0.0-beta.4": "2015-10-11T00:47:41.951Z", + "1.0.0-rc.1": "2015-10-15T21:14:16.364Z", + "1.0.0-rc.2-migration": "2015-10-23T00:38:54.546Z", + "1.0.0-rc.2": "2015-10-23T00:43:40.605Z", + "1.0.0-csp": "2015-10-27T01:22:14.988Z", + "1.0.0-migration": "2015-10-27T01:31:29.819Z", + "1.0.0": "2015-10-27T01:40:01.625Z", + "1.0.1": "2015-10-27T17:58:37.258Z", + "1.0.2": "2015-10-29T01:46:40.533Z", + "1.0.3": "2015-10-29T02:13:54.069Z", + "1.0.4": "2015-10-31T20:39:46.788Z", + "1.0.5": "2015-11-05T19:36:29.856Z", + "1.0.6": "2015-11-05T19:52:41.356Z", + "1.0.7": "2015-11-06T16:38:13.280Z", + "1.0.8": "2015-11-12T21:58:57.930Z", + "1.0.9": "2015-11-23T19:32:33.193Z", + "1.0.10": "2015-11-23T19:59:21.772Z", + "1.0.10-csp": "2015-11-23T21:59:26.254Z", + "1.0.11": "2015-12-10T05:00:17.976Z", + "1.0.11-csp": "2015-12-11T13:20:49.744Z", + "1.0.12": "2015-12-17T23:12:18.653Z", + "1.0.12-csp": "2015-12-17T23:23:50.790Z", + "1.0.12-csp-1": "2015-12-18T21:35:01.682Z", + "1.0.13": "2015-12-24T22:39:46.324Z", + "1.0.13-csp": "2015-12-25T03:54:53.045Z", + "1.0.14": "2016-01-11T20:12:35.173Z", + "1.0.14-csp": "2016-01-11T20:39:19.998Z", + "1.0.15": "2016-01-18T19:43:57.031Z", + "1.0.15-csp": "2016-01-18T19:52:06.412Z", + "1.0.16": "2016-01-30T09:41:50.987Z", + "1.0.16-csp": "2016-01-30T10:38:42.919Z", + "1.0.17": "2016-02-29T01:17:27.612Z", + "1.0.17-csp": "2016-02-29T02:24:33.094Z", + "1.0.18": "2016-03-18T00:37:50.511Z", + "1.0.18-csp": "2016-03-18T00:54:16.541Z", + "1.0.19": "2016-03-25T07:19:25.592Z", + "1.0.19-csp": "2016-03-25T07:24:11.639Z", + "1.0.20": "2016-03-26T21:20:12.830Z", + "1.0.20-csp": "2016-03-26T21:24:54.499Z", + "1.0.21": "2016-04-07T22:08:12.136Z", + "1.0.21-csp": "2016-04-07T22:11:14.714Z", + "1.0.22": "2016-05-07T21:59:24.459Z", + "1.0.22-csp": "2016-05-07T22:00:53.845Z", + "1.0.23": "2016-05-11T16:20:56.995Z", + "1.0.23-csp": "2016-05-11T16:22:30.910Z", + "1.0.24": "2016-05-11T21:57:37.358Z", + "1.0.24-csp": "2016-05-11T21:59:55.010Z", + "2.0.0-alpha.1": "2016-06-10T23:34:30.472Z", + "2.0.0-alpha.2": "2016-06-13T23:36:54.955Z", + "2.0.0-alpha.3": "2016-06-15T18:22:44.981Z", + "2.0.0-alpha.4": "2016-06-16T17:00:54.200Z", + "1.0.25": "2016-06-16T22:29:30.877Z", + "1.0.25-csp": "2016-06-16T22:37:40.390Z", + "2.0.0-alpha.5": "2016-06-17T18:22:45.156Z", + "2.0.0-alpha.6": "2016-06-22T19:33:28.089Z", + "2.0.0-alpha.7": "2016-06-28T02:24:20.794Z", + "2.0.0-alpha.8": "2016-06-28T09:02:18.167Z", + "1.0.26": "2016-06-28T20:57:34.028Z", + "1.0.26-csp": "2016-06-28T21:42:53.706Z", + "2.0.0-beta.1": "2016-07-07T21:51:47.724Z", + "2.0.0-beta.2": "2016-07-17T05:51:27.401Z", + "2.0.0-beta.3": "2016-07-24T02:45:22.313Z", + "2.0.0-beta.4": "2016-07-26T02:04:31.349Z", + "2.0.0-beta.5": "2016-07-27T04:25:51.572Z", + "2.0.0-beta.6": "2016-08-01T19:27:42.081Z", + "2.0.0-beta.7": "2016-08-05T22:10:35.353Z", + "2.0.0-beta.8": "2016-08-10T04:55:41.561Z", + "2.0.0-rc.1": "2016-08-11T05:43:21.414Z", + "2.0.0-rc.2": "2016-08-16T03:39:15.211Z", + "2.0.0-rc.3": "2016-08-20T18:05:02.596Z", + "2.0.0-rc.4": "2016-08-29T19:49:11.992Z", + "2.0.0-rc.5": "2016-09-08T11:30:00.014Z", + "2.0.0-rc.6": "2016-09-13T13:21:14.193Z", + "1.0.27": "2016-09-23T19:51:40.267Z", + "1.0.27-csp": "2016-09-23T19:53:46.613Z", + "2.0.0-rc.7": "2016-09-23T22:24:58.125Z", + "1.0.28": "2016-09-27T20:45:42.280Z", + "1.0.28-csp": "2016-09-27T20:47:26.372Z", + "2.0.0-rc.8": "2016-09-27T21:08:34.332Z", + "2.0.0": "2016-09-30T18:32:13.071Z", + "2.0.1": "2016-09-30T21:12:13.389Z", + "2.0.2": "2016-10-12T04:54:13.325Z", + "2.0.3": "2016-10-13T09:27:34.643Z", + "2.0.4": "2016-11-04T20:47:12.563Z", + "2.0.5": "2016-11-05T03:47:33.287Z", + "2.0.6": "2016-11-15T23:05:12.674Z", + "2.0.7": "2016-11-16T21:54:34.348Z", + "2.0.8": "2016-11-20T03:15:06.652Z", + "2.1.0": "2016-11-22T16:15:14.206Z", + "2.1.1": "2016-11-23T21:00:48.669Z", + "2.1.2": "2016-11-23T23:42:24.420Z", + "2.1.3": "2016-11-24T00:22:21.218Z", + "2.1.4": "2016-12-02T03:01:28.900Z", + "2.1.5": "2016-12-13T03:09:37.917Z", + "2.1.6": "2016-12-13T17:22:37.865Z", + "2.1.7": "2016-12-24T16:36:26.289Z", + "2.1.8": "2016-12-28T05:54:46.485Z", + "2.1.9": "2017-01-16T23:48:18.241Z", + "2.1.10": "2017-01-17T17:17:23.075Z", + "2.2.0-beta.1": "2017-02-24T04:22:29.318Z", + "2.2.0-beta.2": "2017-02-25T00:01:22.141Z", + "2.2.0": "2017-02-26T04:32:12.374Z", + "2.2.1": "2017-02-26T13:10:58.636Z", + "2.2.2": "2017-03-09T04:23:54.613Z", + "2.2.3": "2017-03-13T08:08:12.196Z", + "2.2.4": "2017-03-13T15:08:23.692Z", + "2.2.5": "2017-03-24T04:53:46.566Z", + "2.2.6": "2017-03-27T02:46:27.224Z", + "2.3.0-beta.1": "2017-04-26T10:32:45.472Z", + "2.3.0": "2017-04-27T06:22:30.251Z", + "2.3.1": "2017-05-02T07:59:33.809Z", + "2.3.2": "2017-05-02T10:30:25.167Z", + "2.3.3": "2017-05-09T16:57:59.102Z", + "2.3.4": "2017-06-08T04:54:50.550Z", + "2.4.0": "2017-07-13T05:59:58.195Z", + "2.4.1": "2017-07-13T06:40:52.424Z", + "2.4.2": "2017-07-21T04:28:43.739Z", + "2.4.3": "2017-09-13T07:57:40.361Z", + "2.4.4": "2017-09-14T15:32:52.487Z", + "2.5.0": "2017-10-13T03:07:43.841Z", + "2.5.1": "2017-10-13T14:14:44.817Z", + "2.5.2": "2017-10-13T20:21:14.556Z", + "2.5.3": "2017-11-03T21:11:37.399Z", + "2.5.4": "2017-11-16T19:55:19.757Z", + "2.5.5": "2017-11-17T16:37:05.558Z", + "2.5.6": "2017-11-18T19:44:18.720Z", + "2.5.7": "2017-11-20T19:49:36.077Z", + "2.5.8": "2017-11-21T14:42:29.228Z", + "2.5.9": "2017-11-27T17:43:43.727Z", + "2.5.10": "2017-12-12T23:16:50.457Z", + "2.5.11": "2017-12-14T16:56:14.790Z", + "2.5.12": "2017-12-19T14:54:26.793Z", + "2.5.13": "2017-12-19T19:07:03.185Z", + "2.5.14": "2018-03-09T21:42:13.463Z", + "2.5.15": "2018-03-10T23:36:55.780Z", + "2.5.16": "2018-03-13T22:14:28.959Z", + "2.5.17-beta.0": "2018-03-23T23:29:13.819Z" + }, + "dist-tags": { + "latest": "2.5.16", + "csp": "1.0.28-csp", + "beta": "2.5.17-beta.0" + }, + "_uplinks": { + "npmjs": { + "etag": "W/\"7adcccc860251cd1e57b408f03a4a1d6\"", + "fetched": 1529779933724 + } + }, + "_distfiles": { + "vue-0.0.0.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.0.0.tgz", + "sha": "02a9248eb4a26ebc2bbf834f6db630af725ff258", + "registry": "npmjs" + }, + "vue-0.6.0.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.6.0.tgz", + "sha": "123c1a24ce6fe13c4530c03d780cb1ef966f9cde", + "registry": "npmjs" + }, + "vue-0.7.0.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.7.0.tgz", + "sha": "146d0ed809587f569b7fce39f6bac77b68ff3d47", + "registry": "npmjs" + }, + "vue-0.7.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.7.1.tgz", + "sha": "17a6ea20a5660c8614636387e15521530ff48c50", + "registry": "npmjs" + }, + "vue-0.7.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.7.3.tgz", + "sha": "61acb2ae6afb1116466bf1512c3835e0b47ac0a8", + "registry": "npmjs" + }, + "vue-0.7.4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.7.4.tgz", + "sha": "e0df485af8f62a503664c35c07ea9315dc1a5759", + "registry": "npmjs" + }, + "vue-0.7.5.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.7.5.tgz", + "sha": "2b845e2defe5d30437b8915822b2461f9ce8a9d6", + "registry": "npmjs" + }, + "vue-0.7.6.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.7.6.tgz", + "sha": "ab486851e45887879832268370fcb372c1dc87a9", + "registry": "npmjs" + }, + "vue-0.8.0.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.8.0.tgz", + "sha": "0e0ea13ca7d9672cd900d8f10c59506814db934d", + "registry": "npmjs" + }, + "vue-0.8.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.8.1.tgz", + "sha": "26bfea6b31dd8e0d5b9f3e2eda349624f8011a67", + "registry": "npmjs" + }, + "vue-0.8.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.8.2.tgz", + "sha": "c1d30517b5160982a48ea22022b6974bd1bbde6a", + "registry": "npmjs" + }, + "vue-0.8.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.8.3.tgz", + "sha": "d50bea6e4ea1a78f9252a7c84a0346ce5eb46326", + "registry": "npmjs" + }, + "vue-0.8.4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.8.4.tgz", + "sha": "88e9fa4190a56326635ec6962f3bf5469f83ee62", + "registry": "npmjs" + }, + "vue-0.8.6.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.8.6.tgz", + "sha": "a8d10dc5550a89db4f054da991a8f2ab7c196f55", + "registry": "npmjs" + }, + "vue-0.8.7.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.8.7.tgz", + "sha": "5497afc8f73b75123f40ea5dd6ceae044d6a2f26", + "registry": "npmjs" + }, + "vue-0.8.8.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.8.8.tgz", + "sha": "63fa3d8c1566f2983ddd9816a1b98b8d0612a2d0", + "registry": "npmjs" + }, + "vue-0.9.0.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.9.0.tgz", + "sha": "fdddbcf080a8121c9de827f5aba0894a97efb77d", + "registry": "npmjs" + }, + "vue-0.9.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.9.1.tgz", + "sha": "11fb26ef6fd03697b4c174440cb92bcea3a6ba4d", + "registry": "npmjs" + }, + "vue-0.9.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.9.2.tgz", + "sha": "c53dff86edcf12b941b45ca6f3b4e7d0f39fcc4e", + "registry": "npmjs" + }, + "vue-0.9.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.9.3.tgz", + "sha": "bd982661b5cec65cb8d09e33856e142315716064", + "registry": "npmjs" + }, + "vue-0.10.0.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.10.0.tgz", + "sha": "54f1eb929b53c00afe74ef8f6a44642ab50e64c9", + "registry": "npmjs" + }, + "vue-0.10.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.10.1.tgz", + "sha": "72d7a4d542e3d3d759b2ab60fc7a7cc768327278", + "registry": "npmjs" + }, + "vue-0.10.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.10.2.tgz", + "sha": "7fe8f74b103246d266137b1647fa918c4941ba87", + "registry": "npmjs" + }, + "vue-0.10.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.10.3.tgz", + "sha": "beb96bf62286b34a1db3fe0b016adce8a0b4d41a", + "registry": "npmjs" + }, + "vue-0.10.4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.10.4.tgz", + "sha": "8513bcaecb6cff65d51b91c115dffb95d1b79304", + "registry": "npmjs" + }, + "vue-0.10.5.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.10.5.tgz", + "sha": "b026812db8c853776656e662c407f13fec0936e3", + "registry": "npmjs" + }, + "vue-0.10.6.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.10.6.tgz", + "sha": "47f4e8096afd099a1885a46576b8a9eb63aee2b9", + "registry": "npmjs" + }, + "vue-0.11.0-rc.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.11.0-rc.tgz", + "sha": "ff6791fa0fb0a46d8a1facb69a0ab518fea21893", + "registry": "npmjs" + }, + "vue-0.11.0-rc2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.11.0-rc2.tgz", + "sha": "84302800170010722beeb1f6c0169fb07f2ba5ad", + "registry": "npmjs" + }, + "vue-0.11.0-rc3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.11.0-rc3.tgz", + "sha": "a7329c5f19ebcc3eb4e951edb4cfc56c8b113e7a", + "registry": "npmjs" + }, + "vue-0.11.0.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.11.0.tgz", + "sha": "81718e27f60702f6bdaddaee91b7b29c64ca5547", + "registry": "npmjs" + }, + "vue-0.11.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.11.1.tgz", + "sha": "f0a9868c2db8124277ee43a75910a3c72121df7e", + "registry": "npmjs" + }, + "vue-0.11.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.11.2.tgz", + "sha": "b079cabcd972683f4885560bacd6b16a5c4656b5", + "registry": "npmjs" + }, + "vue-0.11.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.11.3.tgz", + "sha": "e77d7dd2ab12f6729d1b78c54575b3514e72d6fe", + "registry": "npmjs" + }, + "vue-0.11.4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.11.4.tgz", + "sha": "f81897efd0ffa5de319b781e37082b50b200e59f", + "registry": "npmjs" + }, + "vue-0.11.5.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.11.5.tgz", + "sha": "aecca4cecca01662135af962935c5ae9cdd893b2", + "registry": "npmjs" + }, + "vue-0.11.6.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.11.6.tgz", + "sha": "504f0cc54a5af48e9bb3236e70825c75af71d79b", + "registry": "npmjs" + }, + "vue-0.11.7.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.11.7.tgz", + "sha": "576991d1cb376e8115d9c036690f91c44ab1bf3f", + "registry": "npmjs" + }, + "vue-0.11.8.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.11.8.tgz", + "sha": "bfe141d02920b6be16ffbe774c925dbb5a6781d8", + "registry": "npmjs" + }, + "vue-0.11.9.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.11.9.tgz", + "sha": "140cafdaa3771c3a2fe19de1ccbef636af272e25", + "registry": "npmjs" + }, + "vue-0.11.10.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.11.10.tgz", + "sha": "2395fb2735e49ab676a832f0db9950b10660b578", + "registry": "npmjs" + }, + "vue-0.12.0-beta1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.0-beta1.tgz", + "sha": "b9c8e72a552c240eec1a263be7c5612ddd90b022", + "registry": "npmjs" + }, + "vue-0.12.0-beta2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.0-beta2.tgz", + "sha": "e642d58e7d5e696890ee40c49f1378c4414f1720", + "registry": "npmjs" + }, + "vue-0.12.0-beta3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.0-beta3.tgz", + "sha": "5c3fffa8871492a4d87b17e4cfbd404684cb08b2", + "registry": "npmjs" + }, + "vue-0.12.0-beta4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.0-beta4.tgz", + "sha": "41053e39fbc4bdf20b0cc42a8006cf5807a532d6", + "registry": "npmjs" + }, + "vue-0.12.0-beta5.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.0-beta5.tgz", + "sha": "492184a5d51d4c79e88799c94fce03966ab0ddf1", + "registry": "npmjs" + }, + "vue-0.12.0-rc.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.0-rc.tgz", + "sha": "4818f0ab510fe999dbf8b676a597444083632523", + "registry": "npmjs" + }, + "vue-0.12.0-rc2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.0-rc2.tgz", + "sha": "01a9ebaa56959d00e827f0ba5313110eb3a88742", + "registry": "npmjs" + }, + "vue-0.12.0.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.0.tgz", + "sha": "ca036019f3b5cd47048ff0b57e73afbd311165f4", + "registry": "npmjs" + }, + "vue-0.12.0-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.0-csp.tgz", + "sha": "02ef952489a70697376caae57511652a9b1331de", + "registry": "npmjs" + }, + "vue-0.12.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.1.tgz", + "sha": "7b94224debeba2968aed5b4dd4b1435d668187c5", + "registry": "npmjs" + }, + "vue-0.12.1-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.1-csp.tgz", + "sha": "63629cbd69043753405d5e1f8820d1dd2b780ee8", + "registry": "npmjs" + }, + "vue-0.12.1-csp.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.1-csp.1.tgz", + "sha": "5f5aabf3b547c1e820c0ac8a19de2d8ea9fc2bf6", + "registry": "npmjs" + }, + "vue-0.12.1-csp.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.1-csp.2.tgz", + "sha": "4d30f07f9aa5696cc6ac00c3983188ca3ecaa2a5", + "registry": "npmjs" + }, + "vue-0.12.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.2.tgz", + "sha": "bcc2527e6d908bc5d843afb62a64e473c3d9af15", + "registry": "npmjs" + }, + "vue-0.12.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.3.tgz", + "sha": "a705fee53bc56dcb4f0f16f2f05d3d90b48363cd", + "registry": "npmjs" + }, + "vue-0.12.4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.4.tgz", + "sha": "fd450f9407f0fb38ea8302de91f4e5911508e21f", + "registry": "npmjs" + }, + "vue-0.12.5.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.5.tgz", + "sha": "658b8e064400cf7c28cff5089d701b554f421071", + "registry": "npmjs" + }, + "vue-0.12.5-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.5-csp.tgz", + "sha": "b786db73c42308c11c4bf42b96bcead1ef1186b3", + "registry": "npmjs" + }, + "vue-0.12.6.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.6.tgz", + "sha": "eed5cd3833df7decc86a55184aa15c5434c2453f", + "registry": "npmjs" + }, + "vue-0.12.6-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.6-csp.tgz", + "sha": "1aa08e128510b8a939435dd033ec5bdfd0c1a199", + "registry": "npmjs" + }, + "vue-0.12.7.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.7.tgz", + "sha": "8c44077e6732e784921c1d72f74c2d1426779f9f", + "registry": "npmjs" + }, + "vue-0.12.7-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.7-csp.tgz", + "sha": "93c85aefe83ec82804f9e1382a30736855833c34", + "registry": "npmjs" + }, + "vue-0.12.8.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.8.tgz", + "sha": "ae47b98ef110577ae7fd13dbfcc0ad8149bfb422", + "registry": "npmjs" + }, + "vue-0.12.8-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.8-csp.tgz", + "sha": "427682d45efd3e3103d93978b785c8b4b5be71d7", + "registry": "npmjs" + }, + "vue-0.12.9.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.9.tgz", + "sha": "1dec37396694a1b2e128ce075b857e30642ede58", + "registry": "npmjs" + }, + "vue-0.12.9-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.9-csp.tgz", + "sha": "b44f5660859ac5df457fe2c5c9fdc9658c3948f4", + "registry": "npmjs" + }, + "vue-0.12.10.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.10.tgz", + "sha": "e6a0e2131568622338da3535ed5b7b93632be3ab", + "registry": "npmjs" + }, + "vue-0.12.10-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.10-csp.tgz", + "sha": "80e48b59945b9f8094fde3553bc9a6258a347bc5", + "registry": "npmjs" + }, + "vue-0.12.11.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.11.tgz", + "sha": "e7f84e3997b4456d5706106436903dd81070c1db", + "registry": "npmjs" + }, + "vue-0.12.11-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.11-csp.tgz", + "sha": "acad59aa013bc7a8fd5a291dfdccefe6f4e65ce0", + "registry": "npmjs" + }, + "vue-0.12.12.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.12.tgz", + "sha": "2964c17154dd72de58d0f2c9962759ef7135a56f", + "registry": "npmjs" + }, + "vue-0.12.12-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.12-csp.tgz", + "sha": "6d5c02160ea23fd597d7e08598330c36a732b29d", + "registry": "npmjs" + }, + "vue-1.0.0-alpha.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0-alpha.1.tgz", + "sha": "3fa7172b997b76821a84c610cc3c11e2f411fb94", + "registry": "npmjs" + }, + "vue-1.0.0-alpha.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0-alpha.2.tgz", + "sha": "1e87c501343f3ead57da4dc5157212f83d397fb4", + "registry": "npmjs" + }, + "vue-0.12.13.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.13.tgz", + "sha": "ac6b8047adb53454fa0c21335865b7949ff63477", + "registry": "npmjs" + }, + "vue-0.12.13-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.13-csp.tgz", + "sha": "479f6c581df57b1bfb8da07ca1ba92035ffaf89a", + "registry": "npmjs" + }, + "vue-1.0.0-alpha.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0-alpha.3.tgz", + "sha": "31081bd4587079fd134085a16489f3d27672c821", + "registry": "npmjs" + }, + "vue-0.12.14.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.14.tgz", + "sha": "fdebb07621b722c346a74b5249714f5712c3ee75", + "registry": "npmjs" + }, + "vue-0.12.14-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.14-csp.tgz", + "sha": "4c3c31ab5c3b9b916bd16a628f3cd53bcf3955d7", + "registry": "npmjs" + }, + "vue-1.0.0-alpha.4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0-alpha.4.tgz", + "sha": "6111d4d57f7934d785326e5c8fe8fe46e675203b", + "registry": "npmjs" + }, + "vue-0.12.15.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.15.tgz", + "sha": "271bc83a4563ac44e78239288600a3eed4b558a2", + "registry": "npmjs" + }, + "vue-0.12.15-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.15-csp.tgz", + "sha": "0273cc2dd1c6458ebbcb16cec3664ab7e215d2a2", + "registry": "npmjs" + }, + "vue-1.0.0-alpha.5.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0-alpha.5.tgz", + "sha": "bd237c3e7933e5fed81fa566f560df0ffca88701", + "registry": "npmjs" + }, + "vue-1.0.0-beta.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0-beta.1.tgz", + "sha": "7c0da3586cca7716ae421a4cc84ba0f1c5f4bd76", + "registry": "npmjs" + }, + "vue-0.12.16.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.16.tgz", + "sha": "cf8e48237d7547f1bc1a1ff0070980a377478989", + "registry": "npmjs" + }, + "vue-0.12.16-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.16-csp.tgz", + "sha": "5461cb34120cab7ecaad989f5b8b8d15e3685f4e", + "registry": "npmjs" + }, + "vue-1.0.0-alpha.6.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0-alpha.6.tgz", + "sha": "74fb5345a965237d6ec8409ccb1eeeb4449e481b", + "registry": "npmjs" + }, + "vue-1.0.0-beta.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0-beta.2.tgz", + "sha": "d7f5a1c9473f6a0b6e0a477bda2c01b7428a3e42", + "registry": "npmjs" + }, + "vue-1.0.0-alpha.7.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0-alpha.7.tgz", + "sha": "8876b3feaece05e0579cfa571e2b37bffcbab9fb", + "registry": "npmjs" + }, + "vue-1.0.0-beta.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0-beta.3.tgz", + "sha": "314d96c528b8cf4ce67851503b0071bee61369a7", + "registry": "npmjs" + }, + "vue-1.0.0-alpha.8.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0-alpha.8.tgz", + "sha": "293521d44a7265fac0843eaf209d2b43a821e41f", + "registry": "npmjs" + }, + "vue-1.0.0-beta.4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0-beta.4.tgz", + "sha": "5c492c1877d13ad96450f978906aa87c34a2509b", + "registry": "npmjs" + }, + "vue-1.0.0-rc.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0-rc.1.tgz", + "sha": "bd5ab314dfe3a42ae3d102c2a439ff40a4ee84c5", + "registry": "npmjs" + }, + "vue-1.0.0-rc.2-migration.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0-rc.2-migration.tgz", + "sha": "4afcad21145df9d6786fdf5189bb817fbc7f5a95", + "registry": "npmjs" + }, + "vue-1.0.0-rc.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0-rc.2.tgz", + "sha": "85fa26706cb92cef3b85163b5f79d8b6b9a53d15", + "registry": "npmjs" + }, + "vue-1.0.0-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0-csp.tgz", + "sha": "fbb448a1a9e51a2f6844cdb59eb30cbbe2ca78c9", + "registry": "npmjs" + }, + "vue-1.0.0-migration.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0-migration.tgz", + "sha": "1042d3004f6721e561f3e4adbcf2dfe4cde23cd4", + "registry": "npmjs" + }, + "vue-1.0.0.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0.tgz", + "sha": "9672e208dd776a3eaf8f4164c6c0c2d496c442f1", + "registry": "npmjs" + }, + "vue-1.0.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.1.tgz", + "sha": "ef198f2d9055cac28bedf7ad6b81452492daee70", + "registry": "npmjs" + }, + "vue-1.0.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.2.tgz", + "sha": "577f2b55001dd0d8f99de867cbabb4ab579a226f", + "registry": "npmjs" + }, + "vue-1.0.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.3.tgz", + "sha": "72554202d6aedb302d0a3bcf66a2d477ff521574", + "registry": "npmjs" + }, + "vue-1.0.4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.4.tgz", + "sha": "63edbea66334a19dcee96289e1193d36bfe84a2a", + "registry": "npmjs" + }, + "vue-1.0.5.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.5.tgz", + "sha": "77d097c430232844fe7b3971455bf48512724d27", + "registry": "npmjs" + }, + "vue-1.0.6.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.6.tgz", + "sha": "33d97020b756eb3d2bf164f7533b5e308d7213ec", + "registry": "npmjs" + }, + "vue-1.0.7.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.7.tgz", + "sha": "414aeef2428e8602cdc7492e391550c33374cf30", + "registry": "npmjs" + }, + "vue-1.0.8.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.8.tgz", + "sha": "f00bddff3f08edd193c98d19166eaaece6b38bc4", + "registry": "npmjs" + }, + "vue-1.0.9.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.9.tgz", + "sha": "a2a977d0e014bca89007e324d16c696839213955", + "registry": "npmjs" + }, + "vue-1.0.10.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.10.tgz", + "sha": "4a82dbe25ec1db12b1efc207869ece7b15bb85e0", + "registry": "npmjs" + }, + "vue-1.0.10-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.10-csp.tgz", + "sha": "2f3291fef280e2763601d29f59b5d7d240fba84c", + "registry": "npmjs" + }, + "vue-1.0.11.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.11.tgz", + "sha": "60c873d8869dc2c952506870848b86043588a00b", + "registry": "npmjs" + }, + "vue-1.0.11-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.11-csp.tgz", + "sha": "714edc5b9f73bc1a4dfe759ddae8209c85916227", + "registry": "npmjs" + }, + "vue-1.0.12.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.12.tgz", + "sha": "e5e55e97620ece6c3cef7b99459a2118a221fc8c", + "registry": "npmjs" + }, + "vue-1.0.12-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.12-csp.tgz", + "sha": "a034740df8d58689f80d0f2033b34243a886b58a", + "registry": "npmjs" + }, + "vue-1.0.12-csp-1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.12-csp-1.tgz", + "sha": "2eda388ca56e6d55a2f6f27875195c3d0306a927", + "registry": "npmjs" + }, + "vue-1.0.13.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.13.tgz", + "sha": "1fb4cc7d910b557226b74eefc8a42b705e922dbe", + "registry": "npmjs" + }, + "vue-1.0.13-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.13-csp.tgz", + "sha": "3af3b12b33448f4bcc025cdc38cae043c780e712", + "registry": "npmjs" + }, + "vue-1.0.14.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.14.tgz", + "sha": "ba182760325881e6e16a1f1a3a0dd07fa2e6d3d7", + "registry": "npmjs" + }, + "vue-1.0.14-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.14-csp.tgz", + "sha": "e67245e1bca561d7ee3e3e29b20694894c3b210e", + "registry": "npmjs" + }, + "vue-1.0.15.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.15.tgz", + "sha": "e532b837c100d911170001bf0bcb2490e33bae82", + "registry": "npmjs" + }, + "vue-1.0.15-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.15-csp.tgz", + "sha": "7d51d4a95d2895e43ddcda79030fc9296ceb4100", + "registry": "npmjs" + }, + "vue-1.0.16.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.16.tgz", + "sha": "fdda77e7214b3c69e0d5b1666512e5cf42da5e4f", + "registry": "npmjs" + }, + "vue-1.0.16-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.16-csp.tgz", + "sha": "d0737fa3e67356260278c8331b7f1318c339af81", + "registry": "npmjs" + }, + "vue-1.0.17.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.17.tgz", + "sha": "d205a56230eb677b7950f668b05341d6c9ab236a", + "registry": "npmjs" + }, + "vue-1.0.17-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.17-csp.tgz", + "sha": "805530361dba186a485926933547f7e9a07449e3", + "registry": "npmjs" + }, + "vue-1.0.18.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.18.tgz", + "sha": "b4a41729ccedb077de80a34dffcfc8879b16efa4", + "registry": "npmjs" + }, + "vue-1.0.18-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.18-csp.tgz", + "sha": "ec1f9781d2d63cd3fa8a037d3c7113e6933c4f4a", + "registry": "npmjs" + }, + "vue-1.0.19.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.19.tgz", + "sha": "ba4a7f7cbf959d10e91bd4cc771f0ad3e7d05fa6", + "registry": "npmjs" + }, + "vue-1.0.19-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.19-csp.tgz", + "sha": "c779efaf8d7104436c7dcd6c0ddec659147721b2", + "registry": "npmjs" + }, + "vue-1.0.20.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.20.tgz", + "sha": "8426deb6a6ba8aed998b816701e45ac4751b8e4d", + "registry": "npmjs" + }, + "vue-1.0.20-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.20-csp.tgz", + "sha": "bcc7b1bf675f60229df78be0b60db71ae90ce731", + "registry": "npmjs" + }, + "vue-1.0.21.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.21.tgz", + "sha": "81657707db75e7ce744f1e5d9b1c579a93c759cd", + "registry": "npmjs" + }, + "vue-1.0.21-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.21-csp.tgz", + "sha": "66d75d6a865731bb781ce6f8cbd7e9a7e0411fe2", + "registry": "npmjs" + }, + "vue-1.0.22.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.22.tgz", + "sha": "826c2e224b8902bbaf1dc04d68bbc5001a74ca68", + "registry": "npmjs" + }, + "vue-1.0.22-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.22-csp.tgz", + "sha": "bb1e0d541d5aaa7d5d63a1c10b30c05f4bb1ce9a", + "registry": "npmjs" + }, + "vue-1.0.23.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.23.tgz", + "sha": "70bffb41d6740828062ba2144f8e46d20348e127", + "registry": "npmjs" + }, + "vue-1.0.23-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.23-csp.tgz", + "sha": "74b566e28f4ba54dc097b8a8dc014ccf04d5b86f", + "registry": "npmjs" + }, + "vue-1.0.24.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.24.tgz", + "sha": "c8eecb25542f3bc6f0ae113288a4eef924de6b14", + "registry": "npmjs" + }, + "vue-1.0.24-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.24-csp.tgz", + "sha": "2b60f6b63b2849e68951c4266e8e2bd920dfd602", + "registry": "npmjs" + }, + "vue-2.0.0-alpha.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-alpha.1.tgz", + "sha": "12effd01451e3ac316931023316c53788c0d76f0", + "registry": "npmjs" + }, + "vue-2.0.0-alpha.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-alpha.2.tgz", + "sha": "26537043b44512e3a11497503be6845bb2c0da0c", + "registry": "npmjs" + }, + "vue-2.0.0-alpha.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-alpha.3.tgz", + "sha": "0c2aaf1bf7ed52ab28ab1e0aea4c255eb75acea5", + "registry": "npmjs" + }, + "vue-2.0.0-alpha.4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-alpha.4.tgz", + "sha": "de4a5c15fb86bf907e9837b4dc7c053ef87487b0", + "registry": "npmjs" + }, + "vue-1.0.25.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.25.tgz", + "sha": "a0214b916424c1dbe0e3e46b4f9df9824c9e816a", + "registry": "npmjs" + }, + "vue-1.0.25-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.25-csp.tgz", + "sha": "a77fcd9e87aaa0f507a0c63b928f9fa96d35250c", + "registry": "npmjs" + }, + "vue-2.0.0-alpha.5.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-alpha.5.tgz", + "sha": "a773285d166b87501838193c56e0b3b581f5c887", + "registry": "npmjs" + }, + "vue-2.0.0-alpha.6.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-alpha.6.tgz", + "sha": "9b36b80e08e080545121f109f3f744743df08206", + "registry": "npmjs" + }, + "vue-2.0.0-alpha.7.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-alpha.7.tgz", + "sha": "3a1dc8a126e9b473181d46ffce9f067de5a6ac8c", + "registry": "npmjs" + }, + "vue-2.0.0-alpha.8.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-alpha.8.tgz", + "sha": "6ad65a2caa8475fe983869ea066b06f17b04bc63", + "registry": "npmjs" + }, + "vue-1.0.26.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.26.tgz", + "sha": "89a3a81a15be8b364820dd601600744db6b1aafc", + "registry": "npmjs" + }, + "vue-1.0.26-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.26-csp.tgz", + "sha": "98e20abf3becab9793b6c3593edde3b8d694f0ee", + "registry": "npmjs" + }, + "vue-2.0.0-beta.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-beta.1.tgz", + "sha": "fae80ffa23945cd311e5b292941280d390f31f9b", + "registry": "npmjs" + }, + "vue-2.0.0-beta.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-beta.2.tgz", + "sha": "8d54bd51b0a6acd1d009e79815bf7bde144e3c70", + "registry": "npmjs" + }, + "vue-2.0.0-beta.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-beta.3.tgz", + "sha": "9ea79c05a76120931c628f7a75edf2a5b7e24982", + "registry": "npmjs" + }, + "vue-2.0.0-beta.4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-beta.4.tgz", + "sha": "fda7a3f301bf1f4f6fc665c5457642a8ea419918", + "registry": "npmjs" + }, + "vue-2.0.0-beta.5.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-beta.5.tgz", + "sha": "90d881a7bf5cec208b1ed9d08413107f2c126215", + "registry": "npmjs" + }, + "vue-2.0.0-beta.6.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-beta.6.tgz", + "sha": "7d2e6cbded8c0a44e8957a0c6fc65522ab8b558b", + "registry": "npmjs" + }, + "vue-2.0.0-beta.7.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-beta.7.tgz", + "sha": "fef963533c43374ebaf93451a8af1df29e19c3b1", + "registry": "npmjs" + }, + "vue-2.0.0-beta.8.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-beta.8.tgz", + "sha": "45f926ada556eb4fc500796c81e86f07e07f9c4a", + "registry": "npmjs" + }, + "vue-2.0.0-rc.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-rc.1.tgz", + "sha": "959c855df95323bf29cc3d66ae01dcfe24c88c23", + "registry": "npmjs" + }, + "vue-2.0.0-rc.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-rc.2.tgz", + "sha": "92f935c13127687a38207bb69e2dbb02e7c8141e", + "registry": "npmjs" + }, + "vue-2.0.0-rc.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-rc.3.tgz", + "sha": "3aa583897ecada9b823923a67d0b03bac9d14671", + "registry": "npmjs" + }, + "vue-2.0.0-rc.4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-rc.4.tgz", + "sha": "324ab6afbdcf20b5b606d2950ca91040d152e89b", + "registry": "npmjs" + }, + "vue-2.0.0-rc.5.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-rc.5.tgz", + "sha": "d743850882326c3203a9612f4e1bff4f045cc0ff", + "registry": "npmjs" + }, + "vue-2.0.0-rc.6.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-rc.6.tgz", + "sha": "4572daa8aac8ef1eb48559f8ac4ab8e408e2869f", + "registry": "npmjs" + }, + "vue-1.0.27.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.27.tgz", + "sha": "f56229c87d436a661bd3bb63cc7eeb264233116e", + "registry": "npmjs" + }, + "vue-1.0.27-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.27-csp.tgz", + "sha": "7c8058e5644ea4d8702c24576a1edbf03d4823e0", + "registry": "npmjs" + }, + "vue-2.0.0-rc.7.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-rc.7.tgz", + "sha": "d1549bef91986e06e50bf630ea1d3963f7ecd059", + "registry": "npmjs" + }, + "vue-1.0.28.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.28.tgz", + "sha": "ed2ff07b200bde15c87a90ef8727ceea7d38567d", + "registry": "npmjs" + }, + "vue-1.0.28-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.28-csp.tgz", + "sha": "02814d502eff3e4efb6a12b882fbf3b55f1e2f1e", + "registry": "npmjs" + }, + "vue-2.0.0-rc.8.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-rc.8.tgz", + "sha": "6436fe5bb75002ffa57230b413b695d29f7abcba", + "registry": "npmjs" + }, + "vue-2.0.0.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0.tgz", + "sha": "2717556195650845a0141d8117ba8024ccedb2ba", + "registry": "npmjs" + }, + "vue-2.0.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.1.tgz", + "sha": "ea20979eb5440ea7da086097befd598fb548dbc1", + "registry": "npmjs" + }, + "vue-2.0.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.2.tgz", + "sha": "ae1c01ce74a5d44d41ece96b82849c11e1d45e6d", + "registry": "npmjs" + }, + "vue-2.0.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.3.tgz", + "sha": "3f7698f83d6ad1f0e35955447901672876c63fde", + "registry": "npmjs" + }, + "vue-2.0.4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.4.tgz", + "sha": "26f1e3c52c74012de6a6aa58595c6706395f1fb2", + "registry": "npmjs" + }, + "vue-2.0.5.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.5.tgz", + "sha": "b99dc7180a802d1148a508db3d84b52c09b5ca8e", + "registry": "npmjs" + }, + "vue-2.0.6.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.6.tgz", + "sha": "a867c0cc2a8292d0de7dfd42e90e7627cf762ceb", + "registry": "npmjs" + }, + "vue-2.0.7.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.7.tgz", + "sha": "83698ef4f76ce702f425b5576b06ff28e12db143", + "registry": "npmjs" + }, + "vue-2.0.8.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.8.tgz", + "sha": "bbc191db5e1442f208604f994f03e49ac09e69d2", + "registry": "npmjs" + }, + "vue-2.1.0.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.1.0.tgz", + "sha": "293ba3efaaca846aa6bcbfac45cf8524cc597e3d", + "registry": "npmjs" + }, + "vue-2.1.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.1.1.tgz", + "sha": "8a1653e19a3ea4d44778893261a9f3c5a70c083b", + "registry": "npmjs" + }, + "vue-2.1.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.1.2.tgz", + "sha": "0f94cf1779a405a460bf945e5bc27cfc3cf64d60", + "registry": "npmjs" + }, + "vue-2.1.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.1.3.tgz", + "sha": "20161b8684777754fd9823134b38f13c1e197882", + "registry": "npmjs" + }, + "vue-2.1.4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.1.4.tgz", + "sha": "d490f8fcf696847d8cf7f8eb9168e9a5dd806bfc", + "registry": "npmjs" + }, + "vue-2.1.5.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.1.5.tgz", + "sha": "d2568d3e5093cf1486eef44cf37177e3f51d568d", + "registry": "npmjs" + }, + "vue-2.1.6.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.1.6.tgz", + "sha": "2fc0024c07479ac6bc7d34a2cd5ef9ca5e90b143", + "registry": "npmjs" + }, + "vue-2.1.7.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.1.7.tgz", + "sha": "747880cb70a50c66cb8791aacfee7a6dab7fc842", + "registry": "npmjs" + }, + "vue-2.1.8.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.1.8.tgz", + "sha": "ae30aa86024fccf5535292ce414e7b4c221a1756", + "registry": "npmjs" + }, + "vue-2.1.9.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.1.9.tgz", + "sha": "19ad2eae01f7c9eb911e089f65ed579bbf5ab9dd", + "registry": "npmjs" + }, + "vue-2.1.10.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.1.10.tgz", + "sha": "c9235ca48c7925137be5807832ac4e3ac180427b", + "registry": "npmjs" + }, + "vue-2.2.0-beta.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.2.0-beta.1.tgz", + "sha": "e481b0c0af9aed0c1884c16f7cb843e57a3e4d1c", + "registry": "npmjs" + }, + "vue-2.2.0-beta.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.2.0-beta.2.tgz", + "sha": "4a03a307e377c58ee4f440d8100ac8b23a0e478f", + "registry": "npmjs" + }, + "vue-2.2.0.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.2.0.tgz", + "sha": "f4586920ce36d53944ab27ac5236ed9303a46b47", + "registry": "npmjs" + }, + "vue-2.2.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.2.1.tgz", + "sha": "ddbfd2f0caf38f374f5a36eea2e1edf25225b68e", + "registry": "npmjs" + }, + "vue-2.2.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.2.2.tgz", + "sha": "17ed34028a6ab4de855738a1d7beabdf409ee23f", + "registry": "npmjs" + }, + "vue-2.2.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.2.3.tgz", + "sha": "62174ade45f262efa4dba6f49ec613c6d2fc279c", + "registry": "npmjs" + }, + "vue-2.2.4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.2.4.tgz", + "sha": "d0a3a050a80a12356d7950ae5a7b3131048209cc", + "registry": "npmjs" + }, + "vue-2.2.5.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.2.5.tgz", + "sha": "528eba68447d7eff99f86767b31176aa656c6963", + "registry": "npmjs" + }, + "vue-2.2.6.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.2.6.tgz", + "sha": "451714b394dd6d4eae7b773c40c2034a59621aed", + "registry": "npmjs" + }, + "vue-2.3.0-beta.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.3.0-beta.1.tgz", + "sha": "cea07a499c561f535ee320d623fd17a775c1591b", + "registry": "npmjs" + }, + "vue-2.3.0.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.3.0.tgz", + "sha": "bc44db0488c5245c788304c7683efe7b4c862d82", + "registry": "npmjs" + }, + "vue-2.3.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.3.1.tgz", + "sha": "cecc3a229160747f3fb01eb2f03dd04e82420462", + "registry": "npmjs" + }, + "vue-2.3.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.3.2.tgz", + "sha": "9e52aae3593480be235ff227557837e69f98203a", + "registry": "npmjs" + }, + "vue-2.3.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.3.3.tgz", + "sha": "d1eaa8fde5240735a4563e74f2c7fead9cbb064c", + "registry": "npmjs" + }, + "vue-2.3.4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.3.4.tgz", + "sha": "5ec3b87a191da8090bbef56b7cfabd4158038171", + "registry": "npmjs" + }, + "vue-2.4.0.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.4.0.tgz", + "sha": "f462d15f12f73bb40d795365cf3c45431296d6f7", + "registry": "npmjs" + }, + "vue-2.4.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.4.1.tgz", + "sha": "76e0b8eee614613532216b7bfe784e0b5695b160", + "registry": "npmjs" + }, + "vue-2.4.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.4.2.tgz", + "sha": "a9855261f191c978cc0dc1150531b8d08149b58c", + "registry": "npmjs" + }, + "vue-2.4.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.4.3.tgz", + "sha": "55fee0ec509cf2e10aa73b34b15219e92a9ab9ea", + "registry": "npmjs" + }, + "vue-2.4.4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.4.4.tgz", + "sha": "ea9550b96a71465fd2b8b17b61673b3561861789", + "registry": "npmjs" + }, + "vue-2.5.0.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.0.tgz", + "sha": "7f0706c0804257e8d42e5970e1a36e648483988d", + "registry": "npmjs" + }, + "vue-2.5.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.1.tgz", + "sha": "1d904b18a2bcbbfc68879f105e29d9a4dd715ff8", + "registry": "npmjs" + }, + "vue-2.5.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.2.tgz", + "sha": "fd367a87bae7535e47f9dc5c9ec3b496e5feb5a4", + "registry": "npmjs" + }, + "vue-2.5.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.3.tgz", + "sha": "e1a3b1f49b6e93e574ce040b95cbc873912fecc1", + "registry": "npmjs" + }, + "vue-2.5.4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.4.tgz", + "sha": "4405e30b856875553e8fadb0ebf50f51ffc443f5", + "registry": "npmjs" + }, + "vue-2.5.5.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.5.tgz", + "sha": "cc3cd9b2a4f1d7356861ae0f71da0e6beb091910", + "registry": "npmjs" + }, + "vue-2.5.6.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.6.tgz", + "sha": "73654fefa4b37f25dfc657b8b834b44c90822cd7", + "registry": "npmjs" + }, + "vue-2.5.7.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.7.tgz", + "sha": "313ab26025915d9fdbc39db756548cb4bb50eb44", + "registry": "npmjs" + }, + "vue-2.5.8.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.8.tgz", + "sha": "f855c1c27255184a82225f4bef225473e8faf15b", + "registry": "npmjs" + }, + "vue-2.5.9.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.9.tgz", + "sha": "b2380cd040915dca69881dafd121d760952e65f7", + "registry": "npmjs" + }, + "vue-2.5.10.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.10.tgz", + "sha": "dcd772e2594ba994145f2f09522149d9a1e7841a", + "registry": "npmjs" + }, + "vue-2.5.11.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.11.tgz", + "sha": "80ca2657aa81f03545cd8dd5a2f55454641e6405", + "registry": "npmjs" + }, + "vue-2.5.12.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.12.tgz", + "sha": "88bb58307b51d9dd9f772019765c0d110da816e7", + "registry": "npmjs" + }, + "vue-2.5.13.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.13.tgz", + "sha": "95bd31e20efcf7a7f39239c9aa6787ce8cf578e1", + "registry": "npmjs" + }, + "vue-2.5.14.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.14.tgz", + "sha": "74cb248a471053939abf6cdf2c406d4c311ab5a7", + "registry": "npmjs" + }, + "vue-2.5.15.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.15.tgz", + "sha": "fdb67861dde967cd8d1b53116380f2f269b45202", + "registry": "npmjs" + }, + "vue-2.5.16.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.16.tgz", + "sha": "07edb75e8412aaeed871ebafa99f4672584a0085", + "registry": "npmjs" + }, + "vue-2.5.17-beta.0.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.17-beta.0.tgz", + "sha": "b9985447818827306beee146923a1bd64f1bb834", + "registry": "npmjs" + } + }, + "_attachments": {}, + "_rev": "17-ad64c6287118d7af", + "readme": "

\"Vue

\n\n

\n \"Build\n \"Coverage\n \"Downloads\"\n \"Version\"\n \"License\"\n \"Chat\"\n
\n \"Sauce\n

\n\n

Supporting Vue.js

\n\nVue.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:\n\n- [Become a backer or sponsor on Patreon](https://www.patreon.com/evanyou).\n- [Become a backer or sponsor on Open Collective](https://opencollective.com/vuejs).\n- [One-time donation via PayPal or crypto-currencies.](https://vuejs.org/support-vuejs/#One-time-Donations)\n\n#### What's the difference between Patreon and OpenCollective?\n\nFunds 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.\n\n

Special Sponsors

\n\n\n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n
\n\n\n

Sponsors via Patreon

\n\n

Platinum

\n\n\n\n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n
\n\n\n

Gold

\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n\n\n

Sponsors via Open Collective

\n\n

Platinum

\n\n\n\n\n

Gold

\n\n\n\n\n\n\n\n---\n\n## Introduction\n\nVue (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.\n\n#### Browser Compatibility\n\nVue.js supports all browsers that are [ES5-compliant](http://kangax.github.io/compat-table/es5/) (IE8 and below are not supported).\n\n## Ecosystem\n\n| Project | Status | Description |\n|---------|--------|-------------|\n| [vue-router] | [![vue-router-status]][vue-router-package] | Single-page application routing |\n| [vuex] | [![vuex-status]][vuex-package] | Large-scale state management |\n| [vue-cli] | [![vue-cli-status]][vue-cli-package] | Project scaffolding |\n| [vue-loader] | [![vue-loader-status]][vue-loader-package] | Single File Component (`*.vue` file) loader for webpack |\n| [vue-server-renderer] | [![vue-server-renderer-status]][vue-server-renderer-package] | Server-side rendering support |\n| [vue-class-component] | [![vue-class-component-status]][vue-class-component-package] | TypeScript decorator for a class-based API |\n| [vue-rx] | [![vue-rx-status]][vue-rx-package] | RxJS integration |\n| [vue-devtools] | [![vue-devtools-status]][vue-devtools-package] | Browser DevTools extension |\n\n[vue-router]: https://github.com/vuejs/vue-router\n[vuex]: https://github.com/vuejs/vuex\n[vue-cli]: https://github.com/vuejs/vue-cli\n[vue-loader]: https://github.com/vuejs/vue-loader\n[vue-server-renderer]: https://github.com/vuejs/vue/tree/dev/packages/vue-server-renderer\n[vue-class-component]: https://github.com/vuejs/vue-class-component\n[vue-rx]: https://github.com/vuejs/vue-rx\n[vue-devtools]: https://github.com/vuejs/vue-devtools\n\n[vue-router-status]: https://img.shields.io/npm/v/vue-router.svg\n[vuex-status]: https://img.shields.io/npm/v/vuex.svg\n[vue-cli-status]: https://img.shields.io/npm/v/vue-cli.svg\n[vue-loader-status]: https://img.shields.io/npm/v/vue-loader.svg\n[vue-server-renderer-status]: https://img.shields.io/npm/v/vue-server-renderer.svg\n[vue-class-component-status]: https://img.shields.io/npm/v/vue-class-component.svg\n[vue-rx-status]: https://img.shields.io/npm/v/vue-rx.svg\n[vue-devtools-status]: https://img.shields.io/chrome-web-store/v/nhdogjmejiglipccpnnnanhbledajbpd.svg\n\n[vue-router-package]: https://npmjs.com/package/vue-router\n[vuex-package]: https://npmjs.com/package/vuex\n[vue-cli-package]: https://npmjs.com/package/vue-cli\n[vue-loader-package]: https://npmjs.com/package/vue-loader\n[vue-server-renderer-package]: https://npmjs.com/package/vue-server-renderer\n[vue-class-component-package]: https://npmjs.com/package/vue-class-component\n[vue-rx-package]: https://npmjs.com/package/vue-rx\n[vue-devtools-package]: https://chrome.google.com/webstore/detail/vuejs-devtools/nhdogjmejiglipccpnnnanhbledajbpd\n\n## Documentation\n\nTo check out [live examples](https://vuejs.org/v2/examples/) and docs, visit [vuejs.org](https://vuejs.org).\n\n## Questions\n\nFor 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.\n\n## Issues\n\nPlease 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.\n\n## Changelog\n\nDetailed changes for each release are documented in the [release notes](https://github.com/vuejs/vue/releases).\n\n## Stay In Touch\n\n- [Twitter](https://twitter.com/vuejs)\n- [Blog](https://medium.com/the-vue-point)\n- [Job Board](https://vuejobs.com/?ref=vuejs)\n\n## Contribution\n\nPlease 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)!\n\nThank you to all the people who already contributed to Vue!\n\n\n\n\n## License\n\n[MIT](http://opensource.org/licenses/MIT)\n\nCopyright (c) 2013-present, Yuxi (Evan) You" +} \ No newline at end of file diff --git a/packages/server/test/package-access/index.spec.ts b/packages/server/test/package-access/index.spec.ts new file mode 100644 index 000000000..554c57853 --- /dev/null +++ b/packages/server/test/package-access/index.spec.ts @@ -0,0 +1,99 @@ +import request from 'supertest'; +import path from 'path'; + +import {setup, logger} from '@verdaccio/logger' + +setup([]); + +import { HEADERS, HTTP_STATUS } from '@verdaccio/dev-commons'; +import endPointAPI from '@verdaccio/server'; + +import {generateRamdonStorage, mockServer, configExample, DOMAIN_SERVERS} from '@verdaccio/mock'; + + +describe('api with no limited access configuration', () => { + let app; + let mockRegistry; + const store = generateRamdonStorage(); + jest.setTimeout(10000); + + beforeAll(async (done) => { + const mockServerPort = 55530; + const configForTest = configExample({ + self_path: store, + uplinks: { + remote: { + url: `http://${DOMAIN_SERVERS}:${mockServerPort}` + } + }, + }, 'pkg.access.yaml', __dirname); + + app = await endPointAPI(configForTest); + const binPath = require.resolve('verdaccio/bin/verdaccio'); + const storePath = path.join(__dirname, '/mock/store'); + mockRegistry = await mockServer(mockServerPort, { storePath, silence: true }).init(binPath); + done(); + }); + + + afterAll(function(done) { + const [registry, pid] = mockRegistry; + registry.stop(); + logger.info(`registry ${pid} has been stopped`); + + done(); + }); + + describe('test proxy packages partially restricted', () => { + + + test('should test fails on fetch endpoint /-/not-found', (done) => { + request(app) + // @ts-ignore + .get('/not-found-for-sure') + .set(HEADERS.CONTENT_TYPE, HEADERS.JSON_CHARSET) + .expect(HEADERS.CONTENT_TYPE, /json/) + .expect(HTTP_STATUS.NOT_FOUND) + .end(function(err) { + if (err) { + return done(err); + } + + done(); + }); + }); + + test('should test fetch endpoint /-/jquery', (done) => { + request(app) + // @ts-ignore + .get('/jquery') + .set(HEADERS.CONTENT_TYPE, HEADERS.JSON_CHARSET) + .expect(HEADERS.CONTENT_TYPE, /json/) + .expect(HTTP_STATUS.OK) + .end(function(err) { + if (err) { + return done(err); + } + + done(); + }); + }); + + test('should success on fetch endpoint /-/vue', (done) => { + request(app) + // @ts-ignore + .get('/vue') + .set(HEADERS.CONTENT_TYPE, HEADERS.JSON_CHARSET) + .expect(HEADERS.CONTENT_TYPE, /json/) + .expect(HTTP_STATUS.OK) + .end(function(err) { + if (err) { + return done(err); + } + + done(); + }); + }); + }); + +}); diff --git a/crowdin.yaml b/packages/server/test/package-access/mock/store/.gitkeep similarity index 100% rename from crowdin.yaml rename to packages/server/test/package-access/mock/store/.gitkeep diff --git a/packages/server/test/package-access/mock/store/jquery/jquery-1.5.1.tgz b/packages/server/test/package-access/mock/store/jquery/jquery-1.5.1.tgz new file mode 100644 index 000000000..aca55f3db Binary files /dev/null and b/packages/server/test/package-access/mock/store/jquery/jquery-1.5.1.tgz differ diff --git a/packages/server/test/package-access/mock/store/jquery/package.json b/packages/server/test/package-access/mock/store/jquery/package.json new file mode 100644 index 000000000..1f76451fb --- /dev/null +++ b/packages/server/test/package-access/mock/store/jquery/package.json @@ -0,0 +1,4919 @@ +{ + "name": "jquery", + "versions": { + "1.5.1": { + "name": "jquery", + "description": "jQuery: The Write Less, Do More, JavaScript Library", + "url": "jquery.com", + "keywords": [ + "util", + "dom", + "jquery" + ], + "author": { + "name": "John Resig", + "email": "jeresig@gmail.com" + }, + "contributors": [], + "dependencies": { + "jsdom": "=0.1.20", + "htmlparser": ">= 1.7.3" + }, + "lib": "lib", + "main": "./dist/node-jquery.js", + "version": "1.5.1", + "_id": "jquery@1.5.1", + "engines": { + "node": "*" + }, + "_engineSupported": true, + "_npmVersion": "0.3.15", + "_nodeVersion": "v0.4.2", + "directories": { + "lib": "./lib" + }, + "files": [ + "" + ], + "_defaultsLoaded": true, + "dist": { + "shasum": "2ae2d661e906c1a01e044a71bb5b2743942183e5", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.5.1.tgz" + }, + "deprecated": "Versions of the jquery npm package older than 1.9.0 are patched versions that don't work in web browsers. Please upgrade to >=1.11.0." + }, + "1.6.2": { + "name": "jquery", + "description": "jQuery: The Write Less, Do More, JavaScript Library", + "url": "jquery.com", + "keywords": [ + "util", + "dom", + "jquery" + ], + "author": { + "name": "John Resig", + "email": "jeresig@gmail.com" + }, + "contributors": [], + "dependencies": { + "jsdom": ">=0.2.0", + "htmlparser": ">= 1.7.3" + }, + "lib": "lib", + "main": "./dist/node-jquery.js", + "version": "1.6.2", + "_npmJsonOpts": { + "file": "/Users/coolaj86/.npm/jquery/1.6.2/package/package.json", + "wscript": false, + "contributors": false, + "serverjs": false + }, + "_id": "jquery@1.6.2", + "devDependencies": {}, + "engines": { + "node": "*" + }, + "_engineSupported": true, + "_npmVersion": "1.0.15", + "_nodeVersion": "v0.4.8", + "_defaultsLoaded": true, + "dist": { + "shasum": "01757a4c5beea29e8ae697527c3131abbe997a28", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.6.2.tgz" + }, + "scripts": {}, + "directories": {}, + "deprecated": "Versions of the jquery npm package older than 1.9.0 are patched versions that don't work in web browsers. Please upgrade to >=1.11.0." + }, + "1.6.3": { + "name": "jquery", + "description": "jQuery: The Write Less, Do More, JavaScript Library (packaged for Node.JS)", + "url": "http://jquery.com", + "keywords": [ + "util", + "dom", + "jquery" + ], + "author": { + "name": "John Resig", + "email": "jeresig@gmail.com" + }, + "contributors": [], + "dependencies": { + "jsdom": ">=0.2.0", + "htmlparser": ">= 1.7.3" + }, + "lib": ".", + "main": "./node-jquery.js", + "version": "1.6.3", + "_npmJsonOpts": { + "file": "/Users/coolaj86/.npm/jquery/1.6.3/package/package.json", + "wscript": false, + "contributors": false, + "serverjs": false + }, + "_id": "jquery@1.6.3", + "devDependencies": {}, + "engines": { + "node": "*" + }, + "_engineSupported": true, + "_npmVersion": "1.0.22", + "_nodeVersion": "v0.4.8", + "_defaultsLoaded": true, + "dist": { + "shasum": "e1f732fa7e718a6adb3ec20ae0eb2a64fd95ef01", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.6.3.tgz" + }, + "scripts": {}, + "maintainers": [ + { + "name": "coolaj86", + "email": "coolaj86@gmail.com" + } + ], + "directories": {}, + "deprecated": "Versions of the jquery npm package older than 1.9.0 are patched versions that don't work in web browsers. Please upgrade to >=1.11.0." + }, + "1.7.2": { + "name": "jquery", + "description": "jQuery: The Write Less, Do More, JavaScript Library (packaged for Node.JS)", + "version": "1.7.2", + "url": "http://jquery.com", + "homepage": "https://github.com/coolaj86/node-jquery", + "author": { + "name": "James Morrin", + "email": "treasonx@gmail.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/coolaj86/node-jquery.git" + }, + "bugs": { + "url": "https://github.com/coolaj86/node-jquery/issues" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/coolaj86/node-jquery/blob/master/LICENSE-MIT" + } + ], + "main": "lib/node-jquery", + "engines": { + "node": "0.6" + }, + "scripts": { + "test": "grunt test" + }, + "dependencies": { + "jsdom": "~0.2.14", + "htmlparser": "1.7.6", + "xmlhttprequest": "~1.3.0" + }, + "devDependencies": { + "grunt": "~0.3.8", + "nodeunit": "~0.7.4" + }, + "keywords": [ + "util", + "dom", + "jquery" + ], + "_npmUser": { + "name": "treasonx", + "email": "treasonx@gmail.com" + }, + "_id": "jquery@1.7.2", + "optionalDependencies": {}, + "_engineSupported": true, + "_npmVersion": "1.1.12", + "_nodeVersion": "v0.6.14", + "_defaultsLoaded": true, + "dist": { + "shasum": "a93746763aca75a34df4c16395b0826310d0eaf2", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.7.2.tgz" + }, + "maintainers": [ + { + "name": "coolaj86", + "email": "coolaj86@gmail.com" + }, + { + "name": "treasonx", + "email": "treasonx@gmail.com" + } + ], + "directories": {}, + "deprecated": "Versions of the jquery npm package older than 1.9.0 are patched versions that don't work in web browsers. Please upgrade to >=1.11.0." + }, + "1.7.3": { + "name": "jquery", + "description": "jQuery: The Write Less, Do More, JavaScript Library (packaged for Node.JS)", + "version": "1.7.3", + "url": "http://jquery.com", + "homepage": "https://github.com/coolaj86/node-jquery", + "author": { + "name": "James Morrin", + "email": "treasonx@gmail.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/coolaj86/node-jquery.git" + }, + "bugs": { + "url": "https://github.com/coolaj86/node-jquery/issues" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/coolaj86/node-jquery/blob/master/LICENSE-MIT" + } + ], + "main": "lib/node-jquery", + "engines": { + "node": ">=0.6" + }, + "scripts": { + "test": "grunt test" + }, + "dependencies": { + "jsdom": "~0.2.14", + "htmlparser": "1.7.6", + "xmlhttprequest": "~1.4.2", + "location": "0.0.1", + "navigator": "~1.0.1" + }, + "devDependencies": { + "grunt": "~0.3.8", + "nodeunit": "~0.7.4" + }, + "keywords": [ + "util", + "dom", + "jquery" + ], + "_id": "jquery@1.7.3", + "dist": { + "shasum": "e3d00a71612ac7e9b554b438e0987d0272ddba94", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.7.3.tgz" + }, + "maintainers": [ + { + "name": "coolaj86", + "email": "coolaj86@gmail.com" + }, + { + "name": "treasonx", + "email": "treasonx@gmail.com" + } + ], + "directories": {}, + "deprecated": "Versions of the jquery npm package older than 1.9.0 are patched versions that don't work in web browsers. Please upgrade to >=1.11.0." + }, + "1.8.2": { + "name": "jquery", + "description": "jQuery: The Write Less, Do More, JavaScript Library (packaged for Node.JS)", + "version": "1.8.2", + "url": "http://jquery.com", + "homepage": "https://github.com/coolaj86/node-jquery", + "author": { + "name": "James Morrin", + "email": "treasonx@gmail.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/coolaj86/node-jquery.git" + }, + "bugs": { + "url": "https://github.com/coolaj86/node-jquery/issues" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/coolaj86/node-jquery/blob/master/LICENSE-MIT" + } + ], + "main": "lib/node-jquery", + "engines": { + "node": ">=0.6" + }, + "scripts": { + "test": "grunt test" + }, + "dependencies": { + "jsdom": "~0.2.14", + "htmlparser": "1.7.6", + "xmlhttprequest": "~1.4.2", + "location": "0.0.1", + "navigator": "~1.0.1" + }, + "devDependencies": { + "grunt": "~0.3.8", + "nodeunit": "~0.7.4" + }, + "keywords": [ + "util", + "dom", + "jquery" + ], + "_id": "jquery@1.8.2", + "dist": { + "shasum": "46790ae07c6de38124eda90bbf7336b43df93305", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.8.2.tgz" + }, + "_npmVersion": "1.1.61", + "_npmUser": { + "name": "treasonx", + "email": "treasonx@gmail.com" + }, + "maintainers": [ + { + "name": "coolaj86", + "email": "coolaj86@gmail.com" + }, + { + "name": "treasonx", + "email": "treasonx@gmail.com" + } + ], + "directories": {}, + "deprecated": "Versions of the jquery npm package older than 1.9.0 are patched versions that don't work in web browsers. Please upgrade to >=1.11.0." + }, + "1.8.3": { + "name": "jquery", + "description": "jQuery: The Write Less, Do More, JavaScript Library (packaged for Node.JS)", + "version": "1.8.3", + "url": "http://jquery.com", + "homepage": "https://github.com/coolaj86/node-jquery", + "author": { + "name": "James Morrin", + "email": "treasonx@gmail.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/coolaj86/node-jquery.git" + }, + "bugs": { + "url": "https://github.com/coolaj86/node-jquery/issues" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/coolaj86/node-jquery/blob/master/LICENSE-MIT" + } + ], + "main": "lib/node-jquery", + "engines": { + "node": ">=0.6" + }, + "scripts": { + "test": "grunt test" + }, + "dependencies": { + "jsdom": "~0.2.14", + "htmlparser": "1.7.6", + "xmlhttprequest": "~1.4.2", + "location": "0.0.1", + "navigator": "~1.0.1", + "contextify": "~0.1.3" + }, + "devDependencies": { + "grunt": "~0.3.8", + "nodeunit": "~0.7.4" + }, + "keywords": [ + "util", + "dom", + "jquery" + ], + "_id": "jquery@1.8.3", + "dist": { + "shasum": "cfa2941c05a83d966f21347f759a6d15281c60cc", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.8.3.tgz" + }, + "_npmVersion": "1.1.61", + "_npmUser": { + "name": "treasonx", + "email": "treasonx@gmail.com" + }, + "maintainers": [ + { + "name": "coolaj86", + "email": "coolaj86@gmail.com" + }, + { + "name": "treasonx", + "email": "treasonx@gmail.com" + } + ], + "directories": {}, + "deprecated": "Versions of the jquery npm package older than 1.9.0 are patched versions that don't work in web browsers. Please upgrade to >=1.11.0." + }, + "2.1.0-beta2": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.0-beta2", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/master/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "archiver": "~0.4.10", + "grunt": "~0.4.1", + "grunt-bower-task": "~0.3.2", + "grunt-cli": "~0.1.11", + "grunt-compare-size": "~0.4.0", + "grunt-contrib-jshint": "~0.7.0", + "grunt-contrib-uglify": "~0.2.7", + "grunt-contrib-watch": "~0.5.3", + "grunt-git-authors": "~1.2.0", + "grunt-jscs-checker": "~0.2.3", + "grunt-jsonlint": "~1.0.1", + "gzip-js": "0.3.2", + "load-grunt-tasks": "~0.2.0", + "testswarm": "~1.1.0", + "requirejs": "~2.1.9", + "which": "~1.0.5" + }, + "_id": "jquery@2.1.0-beta2", + "dist": { + "shasum": "e0fbbe2beb45b4d8f808362c7c99ef5bfee7d8c6", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.0-beta2.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.11", + "_npmUser": { + "name": "jquery", + "email": "dave.methvin@gmail.com" + }, + "maintainers": [ + { + "name": "rwaldron", + "email": "waldron.rick@gmail.com" + }, + { + "name": "jquery", + "email": "npm@jquery.com" + } + ], + "directories": {} + }, + "2.1.0-beta3": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.0-beta3", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.0-beta3/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.0-beta3/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "archiver": "0.4.10", + "gzip-js": "0.3.2", + "testswarm": "1.1.0", + "load-grunt-tasks": "0.2.0", + "requirejs": "2.1.9", + "shelljs": "0.2.6", + "grunt": "0.4.2", + "grunt-cli": "0.1.11", + "grunt-contrib-jshint": "0.7.2", + "grunt-contrib-uglify": "0.2.7", + "grunt-contrib-watch": "0.5.3", + "grunt-bowercopy": "0.4.1", + "grunt-compare-size": "0.4.0", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.2.6", + "grunt-jsonlint": "1.0.4" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@2.1.0-beta3", + "dist": { + "shasum": "5a89b624d8fa625fe5fa83a12a9acb1ef8a11d02", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.0-beta3.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.21", + "_npmUser": { + "name": "jquery", + "email": "npm@jquery.org" + }, + "maintainers": [ + { + "name": "jquery", + "email": "npm@jquery.org" + } + ], + "directories": {} + }, + "1.11.0-beta3": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.0-beta3", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.0-beta3/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.0-beta3/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "archiver": "0.4.10", + "gzip-js": "0.3.2", + "testswarm": "1.1.0", + "load-grunt-tasks": "0.2.0", + "requirejs": "2.1.9", + "shelljs": "0.2.6", + "grunt": "0.4.2", + "grunt-cli": "0.1.11", + "grunt-contrib-jshint": "0.7.2", + "grunt-contrib-uglify": "0.2.7", + "grunt-contrib-watch": "0.5.3", + "grunt-bowercopy": "0.4.1", + "grunt-compare-size": "0.4.0", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.2.6", + "grunt-jsonlint": "1.0.4" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@1.11.0-beta3", + "dist": { + "shasum": "0464a6aba9f35f6c83a203caa23ab420909ce852", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.0-beta3.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.21", + "_npmUser": { + "name": "jquery", + "email": "npm@jquery.org" + }, + "maintainers": [ + { + "name": "jquery", + "email": "npm@jquery.org" + } + ], + "directories": {} + }, + "1.11.0-rc1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.0-rc1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.0-rc1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.0-rc1/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "archiver": "0.4.10", + "gzip-js": "0.3.2", + "testswarm": "1.1.0", + "load-grunt-tasks": "0.2.0", + "requirejs": "2.1.9", + "shelljs": "0.2.6", + "grunt": "0.4.2", + "grunt-cli": "0.1.11", + "grunt-contrib-jshint": "0.7.2", + "grunt-contrib-uglify": "0.2.7", + "grunt-contrib-watch": "0.5.3", + "grunt-bowercopy": "0.5.0", + "grunt-compare-size": "0.4.0", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.2.6", + "grunt-jsonlint": "1.0.4" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@1.11.0-rc1", + "dist": { + "shasum": "c2f6a4877374647b20b080c478d8dbcdfb4960ee", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.0-rc1.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.23", + "_npmUser": { + "name": "jquery", + "email": "dave.methvin@gmail.com" + }, + "maintainers": [ + { + "name": "jquery", + "email": "dave.methvin@gmail.com" + } + ], + "directories": {} + }, + "2.1.0-rc1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.0-rc1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.0-rc1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.0-rc1/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "archiver": "0.4.10", + "gzip-js": "0.3.2", + "testswarm": "1.1.0", + "load-grunt-tasks": "0.2.0", + "requirejs": "2.1.9", + "shelljs": "0.2.6", + "grunt": "0.4.2", + "grunt-cli": "0.1.11", + "grunt-contrib-jshint": "0.7.2", + "grunt-contrib-uglify": "0.2.7", + "grunt-contrib-watch": "0.5.3", + "grunt-bowercopy": "0.5.0", + "grunt-compare-size": "0.4.0", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.2.6", + "grunt-jsonlint": "1.0.4" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@2.1.0-rc1", + "dist": { + "shasum": "8c9f5d9a055c2fedb3f5269617ae649497d6a3b0", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.0-rc1.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.14", + "_npmUser": { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + "maintainers": [ + { + "name": "jquery", + "email": "npm@jquery.com" + }, + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + } + ], + "directories": {} + }, + "1.11.0": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.0", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.0/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.0/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "archiver": "0.4.10", + "gzip-js": "0.3.2", + "testswarm": "1.1.0", + "load-grunt-tasks": "0.2.0", + "requirejs": "2.1.9", + "shelljs": "0.2.6", + "grunt": "0.4.2", + "grunt-cli": "0.1.11", + "grunt-contrib-jshint": "0.7.2", + "grunt-contrib-uglify": "0.2.7", + "grunt-contrib-watch": "0.5.3", + "grunt-bowercopy": "0.5.0", + "grunt-compare-size": "0.4.0", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.2.6", + "grunt-jsonlint": "1.0.4" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@1.11.0", + "dist": { + "shasum": "c67ceee19b403650d682adcf39d5c9009814d949", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.0.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.21", + "_npmUser": { + "name": "jquery", + "email": "npm@jquery.org" + }, + "maintainers": [ + { + "name": "jquery", + "email": "npm@jquery.org" + } + ], + "directories": {} + }, + "2.1.0": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.0", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.0/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.0/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "archiver": "0.4.10", + "gzip-js": "0.3.2", + "testswarm": "1.1.0", + "load-grunt-tasks": "0.2.0", + "requirejs": "2.1.9", + "shelljs": "0.2.6", + "grunt": "0.4.2", + "grunt-cli": "0.1.11", + "grunt-contrib-jshint": "0.7.2", + "grunt-contrib-uglify": "0.2.7", + "grunt-contrib-watch": "0.5.3", + "grunt-bowercopy": "0.5.0", + "grunt-compare-size": "0.4.0", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.2.6", + "grunt-jsonlint": "1.0.4" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@2.1.0", + "dist": { + "shasum": "1c9a8c971d2b53dae10d72e16cbb5a1df16a4ace", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.0.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.21", + "_npmUser": { + "name": "jquery", + "email": "npm@jquery.org" + }, + "maintainers": [ + { + "name": "jquery", + "email": "npm@jquery.org" + } + ], + "directories": {} + }, + "2.1.1-beta1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.1-beta1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.1-beta1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.1-beta1/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.3.2", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@2.1.1-beta1", + "dist": { + "shasum": "6306c8ea1d104775f3ef8f5c26f0a32acd710a11", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.1-beta1.tgz" + }, + "_from": ".", + "_npmVersion": "1.4.6", + "_npmUser": { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + "maintainers": [ + { + "name": "jquery", + "email": "npm@jquery.com" + }, + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + } + ], + "directories": {} + }, + "1.11.1-beta1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.1-beta1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.1-beta1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.1-beta1/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.3.2", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@1.11.1-beta1", + "dist": { + "shasum": "c7eacde5e1ae06e029f1cd1b2dd444953a33e843", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.1-beta1.tgz" + }, + "_from": ".", + "_npmVersion": "1.4.6", + "_npmUser": { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + "maintainers": [ + { + "name": "jquery", + "email": "npm@jquery.com" + }, + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + } + ], + "directories": {} + }, + "2.1.1-rc1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.1-rc1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.1-rc1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.1-rc1/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@2.1.1-rc1", + "_shasum": "95c494fdbbd0cefc305260e11ad46ae49a387c3d", + "_from": ".", + "_npmVersion": "1.4.7", + "_npmUser": { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + } + ], + "dist": { + "shasum": "95c494fdbbd0cefc305260e11ad46ae49a387c3d", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.1-rc1.tgz" + }, + "directories": {} + }, + "1.11.1-rc1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.1-rc1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.1-rc1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.1-rc1/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@1.11.1-rc1", + "_shasum": "666a7df02488b48732d96e8ab9bdd34f61dd4238", + "_from": ".", + "_npmVersion": "1.4.7", + "_npmUser": { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + } + ], + "dist": { + "shasum": "666a7df02488b48732d96e8ab9bdd34f61dd4238", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.1-rc1.tgz" + }, + "directories": {} + }, + "2.1.1-rc2": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.1-rc2", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.1-rc2/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.1-rc2/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@2.1.1-rc2", + "dist": { + "shasum": "99833e415efa7ac8a4efecc5df6894b2f938a598", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.1-rc2.tgz" + }, + "_from": ".", + "_npmVersion": "1.2.25", + "_npmUser": { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + } + ], + "directories": {} + }, + "1.11.1-rc2": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.1-rc2", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.1-rc2/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.1-rc2/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@1.11.1-rc2", + "dist": { + "shasum": "a4ef3edde0864d8524c5e72f59c459fd7a9ebd17", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.1-rc2.tgz" + }, + "_from": ".", + "_npmVersion": "1.2.25", + "_npmUser": { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + } + ], + "directories": {} + }, + "2.1.1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.1/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@2.1.1", + "dist": { + "shasum": "828fc60f50f7ee5983363ef4eb01c5f70af4bd5b", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.1.tgz" + }, + "_from": ".", + "_npmVersion": "1.2.25", + "_npmUser": { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + } + ], + "directories": {} + }, + "1.11.1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.1/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@1.11.1", + "dist": { + "shasum": "b6ec928590112ebed69e1e49cbfd0025ccd60ddb", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.1.tgz" + }, + "_from": ".", + "_npmVersion": "1.2.25", + "_npmUser": { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + } + ], + "directories": {} + }, + "1.9.1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.9.1", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/master/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt" + } + ], + "scripts": { + "test": "grunt" + }, + "dependencies": {}, + "devDependencies": { + "grunt-compare-size": "~0.3.0", + "grunt-git-authors": "~1.1.0", + "grunt-update-submodules": "~0.2.0", + "grunt-contrib-watch": "~0.1.1", + "grunt-contrib-jshint": "~0.1.1", + "grunt-contrib-uglify": "~0.1.1", + "grunt": "~0.4.0", + "testswarm": "0.2.2" + }, + "keywords": [], + "gitHead": "d71f6a53927ad02d728503385d15539b73d21ac8", + "_id": "jquery@1.9.1", + "_shasum": "e4cd4835faaefbade535857613c0fc3ff2adaf34", + "_from": ".", + "_npmVersion": "1.5.0-alpha-1", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "e4cd4835faaefbade535857613c0fc3ff2adaf34", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.9.1.tgz" + }, + "directories": {} + }, + "2.1.2": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.2", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.2/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.2/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "gitHead": "a04f5ff9795fd6292117563623db44cf3f875868", + "_id": "jquery@2.1.2", + "_shasum": "b68f154cb2ea4731924883e9fe20ec199d1dc1e2", + "_from": ".", + "_npmVersion": "1.4.28", + "_npmUser": { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "b68f154cb2ea4731924883e9fe20ec199d1dc1e2", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.2.tgz" + }, + "directories": {} + }, + "1.11.2": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.2", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.2/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.2/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "gitHead": "9690801db01709bfbff5f977d07fb7cc14472908", + "_id": "jquery@1.11.2", + "_shasum": "30ab26857211c37caa83da0f6903155fe49bb72d", + "_from": ".", + "_npmVersion": "1.4.28", + "_npmUser": { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "30ab26857211c37caa83da0f6903155fe49bb72d", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.2.tgz" + }, + "directories": {} + }, + "2.1.3": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.3", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.3/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.3/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "jsdom": "1.5.0", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "gitHead": "8f2a9d9272d6ed7f32d3a484740ab342c02541e0", + "_id": "jquery@2.1.3", + "_shasum": "6ec55204673d505d39432c5bf5cfad10e1dbad2e", + "_from": ".", + "_npmVersion": "2.1.14", + "_nodeVersion": "0.11.14", + "_npmUser": { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "6ec55204673d505d39432c5bf5cfad10e1dbad2e", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.3.tgz" + }, + "directories": {} + }, + "2.1.4": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.4", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.4/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.4/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "jsdom": "1.5.0", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "gitHead": "7751e69b615c6eca6f783a81e292a55725af6b85", + "_id": "jquery@2.1.4", + "_shasum": "228bde698a0c61431dc2630a6a154f15890d2317", + "_from": ".", + "_npmVersion": "2.7.4", + "_nodeVersion": "0.12.2", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "228bde698a0c61431dc2630a6a154f15890d2317", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.4.tgz" + }, + "directories": {} + }, + "1.11.3": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.3", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.3/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.3/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "gitHead": "1472290917f17af05e98007136096784f9051fab", + "_id": "jquery@1.11.3", + "_shasum": "dd8b74278b27102d29df63eae28308a8cfa1b583", + "_from": ".", + "_npmVersion": "2.7.4", + "_nodeVersion": "0.12.2", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "dd8b74278b27102d29df63eae28308a8cfa1b583", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.3.tgz" + }, + "directories": {} + }, + "3.0.0-alpha1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.0.0-alpha1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.0.0-alpha1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.7.0", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs-checker": "0.8.1", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "load-grunt-tasks": "1.0.0", + "native-promise-only": "0.7.8-a", + "promises-aplus-tests": "2.1.0", + "q": "1.1.2", + "qunitjs": "1.17.1", + "requirejs": "2.1.17", + "sinon": "1.10.3", + "sizzle": "2.2.0", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "jsdomVersions": { + "node": "3.1.2", + "iojs": "5.3.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "2c92869b752bb8e0fe74c3183f40f3f58b7b906d", + "_id": "jquery@3.0.0-alpha1", + "_shasum": "3493d672266e21c2dffb2714f935448edebe3c62", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "3493d672266e21c2dffb2714f935448edebe3c62", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.0.0-alpha1.tgz" + }, + "directories": {} + }, + "1.12.0": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.12.0", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.12-stable/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "npm": "2.1.12", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.12.2", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "efbdc6e3f0fa3d3cd4d3d8bfa37990b707f7c2e1", + "_id": "jquery@1.12.0", + "_shasum": "44653be4e3e4628b106bf2141dfd10fbca6021ef", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.2.0", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "44653be4e3e4628b106bf2141dfd10fbca6021ef", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.12.0.tgz" + }, + "directories": {} + }, + "2.2.0": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.2.0", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.2.0/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.10.3", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "6fc01e29bdad0964f62ef56d01297039cdcadbe5", + "_id": "jquery@2.2.0", + "_shasum": "d0e84ebbf199da51bf7ec39307f19b35754e9cba", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.2.0", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "d0e84ebbf199da51bf7ec39307f19b35754e9cba", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.2.0.tgz" + }, + "directories": {} + }, + "3.0.0-beta1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.0.0-beta1", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.0.0-beta1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "native-promise-only": "0.7.8-a", + "promises-aplus-tests": "2.1.0", + "q": "1.1.2", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.10.3", + "sizzle": "2.3.0", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "2ef761afd9addf78193f5191ece03bb20c9182c2", + "_id": "jquery@3.0.0-beta1", + "_shasum": "d2a4e368e2eed7050bf66abbbb54db2ea345349d", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.2.0", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "d2a4e368e2eed7050bf66abbbb54db2ea345349d", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.0.0-beta1.tgz" + }, + "directories": {} + }, + "1.12.1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.12.1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.12-stable/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "npm": "2.1.12", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.12.2", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "56ead6ffbf8560c521e7e94518d35db42b19f5f3", + "_id": "jquery@1.12.1", + "_shasum": "9cc34ce4780d4ceb90c44328f071064f01960c18", + "_from": ".", + "_npmVersion": "2.14.19", + "_nodeVersion": "0.10.42", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "9cc34ce4780d4ceb90c44328f071064f01960c18", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.12.1.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-5-east.internal.npmjs.com", + "tmp": "tmp/jquery-1.12.1.tgz_1456168080336_0.4474994211923331" + }, + "directories": {} + }, + "2.2.1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.2.1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.2.1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.10.3", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "788eaba2f83e7b7445c7a83a50c81c0704423874", + "_id": "jquery@2.2.1", + "_shasum": "3c3e16854ad3d2ac44ac65021b17426d22ad803f", + "_from": ".", + "_npmVersion": "2.14.19", + "_nodeVersion": "0.10.42", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "3c3e16854ad3d2ac44ac65021b17426d22ad803f", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.2.1.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-9-west.internal.npmjs.com", + "tmp": "tmp/jquery-2.2.1.tgz_1456168325917_0.42471840139478445" + }, + "directories": {} + }, + "1.12.2": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.12.2", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.12-stable/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "npm": "2.1.12", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.12.2", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "a9b5f8ac96f6aa7bfc7b0795cb16d65c4f15b64e", + "_id": "jquery@1.12.2", + "_shasum": "b8a8b45937312a19eebbcf5a0589b0311c8220bb", + "_from": ".", + "_npmVersion": "3.7.3", + "_nodeVersion": "5.8.0", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "b8a8b45937312a19eebbcf5a0589b0311c8220bb", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.12.2.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/jquery-1.12.2.tgz_1458236759160_0.3557943068444729" + }, + "directories": {} + }, + "2.2.2": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.2.2", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.2.2/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.10.3", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "086d381cd2f3b4b8b0af85ecb2c9593a61e5b4bd", + "_id": "jquery@2.2.2", + "_shasum": "3e302dc61eb329a21e9efac937d731f061134c59", + "_from": ".", + "_npmVersion": "3.7.3", + "_nodeVersion": "5.8.0", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "3e302dc61eb329a21e9efac937d731f061134c59", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.2.2.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/jquery-2.2.2.tgz_1458237146417_0.4190880397800356" + }, + "directories": {} + }, + "1.12.3": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.12.3", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.12-stable/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "npm": "2.1.12", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.12.2", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "3a43d7e563314bf32970b773dd31ecf2b90813dd", + "_id": "jquery@1.12.3", + "_shasum": "1298b88b908e7c7f7501eb8c1a61f1ac8337b531", + "_from": ".", + "_npmVersion": "3.7.3", + "_nodeVersion": "5.8.0", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "1298b88b908e7c7f7501eb8c1a61f1ac8337b531", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.12.3.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/jquery-1.12.3.tgz_1459884094815_0.5328964435029775" + }, + "directories": {} + }, + "2.2.3": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.2.3", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.2.3/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.10.3", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "af22a351b2ea5801ffb1695abb3bb34d5bed9198", + "_id": "jquery@2.2.3", + "_shasum": "45e07e4190334de36c9e1a64b43b1f1373d91758", + "_from": ".", + "_npmVersion": "3.7.3", + "_nodeVersion": "5.8.0", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "45e07e4190334de36c9e1a64b43b1f1373d91758", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.2.3.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/jquery-2.2.3.tgz_1459884434885_0.992488760035485" + }, + "directories": {} + }, + "1.12.4": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.12.4", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.12-stable/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "npm": "2.1.12", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.12.2", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "5e89585e0121e72ff47de177c5ef604f3089a53d", + "_id": "jquery@1.12.4", + "_shasum": "01e1dfba290fe73deba77ceeacb0f9ba2fec9e0c", + "_from": ".", + "_npmVersion": "2.15.1", + "_nodeVersion": "0.10.45", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "01e1dfba290fe73deba77ceeacb0f9ba2fec9e0c", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.12.4.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/jquery-1.12.4.tgz_1463764744844_0.4810373710934073" + }, + "directories": {} + }, + "2.2.4": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.2.4", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.2.4/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.10.3", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "c0185ab7c75aab88762c5aae780b9d83b80eda72", + "_id": "jquery@2.2.4", + "_shasum": "2c89d6889b5eac522a7eea32c14521559c6cbf02", + "_from": ".", + "_npmVersion": "2.15.1", + "_nodeVersion": "0.10.45", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "2c89d6889b5eac522a7eea32c14521559c6cbf02", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.2.4.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/jquery-2.2.4.tgz_1463765166836_0.5834389675874263" + }, + "directories": {} + }, + "3.0.0-rc1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.0.0-rc1", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.0.0-rc1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "babel-preset-es2015": "6.6.0", + "commitplease": "2.3.1", + "core-js": "2.2.2", + "cross-spawn": "2.2.3", + "grunt": "1.0.1", + "grunt-babel": "6.0.0", + "grunt-cli": "1.2.0", + "grunt-compare-size": "0.4.2", + "grunt-contrib-jshint": "1.0.0", + "grunt-contrib-uglify": "1.0.1", + "grunt-contrib-watch": "1.0.0", + "grunt-git-authors": "3.2.0", + "grunt-jscs": "2.8.0", + "grunt-jsonlint": "1.0.7", + "grunt-newer": "1.2.0", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "husky": "0.11.4", + "insight": "0.8.1", + "jsdom": "5.6.1", + "load-grunt-tasks": "3.5.0", + "native-promise-only": "0.8.1", + "promises-aplus-tests": "2.1.1", + "q": "1.4.1", + "qunit-assert-step": "1.0.3", + "qunitjs": "1.23.1", + "requirejs": "2.2.0", + "sinon": "1.17.3", + "sizzle": "2.3.0", + "strip-json-comments": "2.0.1", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test", + "precommit": "grunt precommit_lint" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Support", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "e503a93188dc4b5b42e2340f805f2d90b404bc50", + "_id": "jquery@3.0.0-rc1", + "_shasum": "d69fc540b0a56be13e8aecde5a8766ade7a44f8e", + "_from": ".", + "_npmVersion": "2.15.1", + "_nodeVersion": "0.10.45", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "d69fc540b0a56be13e8aecde5a8766ade7a44f8e", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.0.0-rc1.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/jquery-3.0.0-rc1.tgz_1463771627380_0.12211154378019273" + }, + "directories": {} + }, + "3.0.0": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.0.0", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.0.0/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "babel-preset-es2015": "6.6.0", + "commitplease": "2.3.1", + "core-js": "2.2.2", + "cross-spawn": "2.2.3", + "grunt": "1.0.1", + "grunt-babel": "6.0.0", + "grunt-cli": "1.2.0", + "grunt-compare-size": "0.4.2", + "grunt-contrib-jshint": "1.0.0", + "grunt-contrib-uglify": "1.0.1", + "grunt-contrib-watch": "1.0.0", + "grunt-git-authors": "3.2.0", + "grunt-jscs": "2.8.0", + "grunt-jsonlint": "1.0.7", + "grunt-newer": "1.2.0", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "husky": "0.11.4", + "insight": "0.8.1", + "jsdom": "5.6.1", + "load-grunt-tasks": "3.5.0", + "native-promise-only": "0.8.1", + "promises-aplus-tests": "2.1.1", + "q": "1.4.1", + "qunit-assert-step": "1.0.3", + "qunitjs": "1.23.1", + "requirejs": "2.2.0", + "sinon": "1.17.3", + "sizzle": "2.3.0", + "strip-json-comments": "2.0.1", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test", + "precommit": "grunt precommit_lint" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Support", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "0078f86be166a8747819d5d1516776a662cb69df", + "_id": "jquery@3.0.0", + "_shasum": "95a2a9541291a9f819e016f85ba247116d03e4ab", + "_from": ".", + "_npmVersion": "2.15.1", + "_nodeVersion": "0.10.45", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "95a2a9541291a9f819e016f85ba247116d03e4ab", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.0.0.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/jquery-3.0.0.tgz_1465497191024_0.9057256667874753" + }, + "directories": {} + }, + "3.1.0": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.1.0", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.1.0/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "babel-preset-es2015": "6.6.0", + "commitplease": "2.3.1", + "core-js": "2.2.2", + "cross-spawn": "2.2.3", + "eslint-config-jquery": "0.1.6", + "grunt": "1.0.1", + "grunt-babel": "6.0.0", + "grunt-cli": "1.2.0", + "grunt-compare-size": "0.4.2", + "grunt-contrib-uglify": "1.0.1", + "grunt-contrib-watch": "1.0.0", + "grunt-eslint": "18.1.0", + "grunt-git-authors": "3.2.0", + "grunt-jsonlint": "1.0.7", + "grunt-newer": "1.2.0", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "husky": "0.11.4", + "insight": "0.8.1", + "jsdom": "5.6.1", + "load-grunt-tasks": "3.5.0", + "native-promise-only": "0.8.1", + "promises-aplus-tests": "2.1.1", + "q": "1.4.1", + "qunit-assert-step": "1.0.3", + "qunitjs": "1.23.1", + "requirejs": "2.2.0", + "sinon": "1.17.3", + "sizzle": "2.3.0", + "strip-json-comments": "2.0.1", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test", + "precommit": "grunt precommit_lint" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Support", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "6f02bc382c0529d3b4f68f6b2ad21876642dbbfe", + "_id": "jquery@3.1.0", + "_shasum": "129f6f1ae94b18f09010b008d0d6011e40613d7f", + "_from": ".", + "_npmVersion": "2.15.8", + "_nodeVersion": "4.4.7", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "129f6f1ae94b18f09010b008d0d6011e40613d7f", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.1.0.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/jquery-3.1.0.tgz_1467927964329_0.882518710102886" + }, + "directories": {} + }, + "3.1.1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.1.1", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.1.1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "babel-preset-es2015": "6.6.0", + "commitplease": "2.6.1", + "core-js": "2.2.2", + "cross-spawn": "2.2.3", + "eslint-config-jquery": "1.0.0", + "grunt": "1.0.1", + "grunt-babel": "6.0.0", + "grunt-cli": "1.2.0", + "grunt-compare-size": "0.4.2", + "grunt-contrib-uglify": "1.0.1", + "grunt-contrib-watch": "1.0.0", + "grunt-eslint": "19.0.0", + "grunt-git-authors": "3.2.0", + "grunt-jsonlint": "1.0.7", + "grunt-newer": "1.2.0", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "husky": "0.11.4", + "insight": "0.8.1", + "jsdom": "5.6.1", + "load-grunt-tasks": "3.5.0", + "native-promise-only": "0.8.1", + "promises-aplus-tests": "2.1.2", + "q": "1.4.1", + "qunit-assert-step": "1.0.3", + "qunitjs": "1.23.1", + "requirejs": "2.2.0", + "sinon": "1.17.3", + "sizzle": "2.3.3", + "strip-json-comments": "2.0.1", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test:slow", + "precommit": "grunt lint:newer", + "commitmsg": "node node_modules/commitplease" + }, + "commitplease": { + "nohook": true, + "components": [ + "Docs", + "Tests", + "Build", + "Support", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ], + "markerPattern": "^((clos|fix|resolv)(e[sd]|ing))|(refs?)", + "ticketPattern": "^((Closes|Fixes) ([a-zA-Z]{2,}-)[0-9]+)|(Refs? [^#])" + }, + "gitHead": "1b30f3ad466ebf2714d47eda34dbd7fdf6849fe3", + "_id": "jquery@3.1.1", + "_shasum": "347c1c21c7e004115e0a4da32cece041fad3c8a3", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.6.0", + "_npmUser": { + "name": "timmywil", + "email": "4timmywil@gmail.com" + }, + "dist": { + "shasum": "347c1c21c7e004115e0a4da32cece041fad3c8a3", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.1.1.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/jquery-3.1.1.tgz_1474583566957_0.15473420196212828" + }, + "directories": {} + }, + "3.2.0": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.2.0", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "JS Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.2.0/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "babel-preset-es2015": "6.6.0", + "commitplease": "2.6.1", + "core-js": "2.2.2", + "cross-spawn": "2.2.3", + "eslint-config-jquery": "1.0.0", + "grunt": "1.0.1", + "grunt-babel": "6.0.0", + "grunt-cli": "1.2.0", + "grunt-compare-size": "0.4.2", + "grunt-contrib-uglify": "1.0.1", + "grunt-contrib-watch": "1.0.0", + "grunt-eslint": "19.0.0", + "grunt-git-authors": "3.2.0", + "grunt-jsonlint": "1.0.7", + "grunt-newer": "1.2.0", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "husky": "0.11.4", + "insight": "0.8.1", + "jsdom": "5.6.1", + "load-grunt-tasks": "3.5.0", + "native-promise-only": "0.8.1", + "promises-aplus-tests": "2.1.2", + "q": "1.4.1", + "qunit-assert-step": "1.0.3", + "qunitjs": "1.23.1", + "requirejs": "2.2.0", + "sinon": "1.17.3", + "sizzle": "2.3.3", + "strip-json-comments": "2.0.1", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test:slow", + "precommit": "grunt lint:newer", + "commitmsg": "node node_modules/commitplease" + }, + "commitplease": { + "nohook": true, + "components": [ + "Docs", + "Tests", + "Build", + "Support", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ], + "markerPattern": "^((clos|fix|resolv)(e[sd]|ing))|^(refs?)", + "ticketPattern": "^((Closes|Fixes) ([a-zA-Z]{2,}-)[0-9]+)|^(Refs? [^#])" + }, + "gitHead": "a81259fff4ea0c7b4cd98f04050c829640395a31", + "_id": "jquery@3.2.0", + "_shasum": "3bdbba66e1eee0785532dddadb0e0d2521ca584b", + "_from": ".", + "_npmVersion": "4.1.2", + "_nodeVersion": "7.7.3", + "_npmUser": { + "name": "timmywil", + "email": "4timmywil@gmail.com" + }, + "dist": { + "shasum": "3bdbba66e1eee0785532dddadb0e0d2521ca584b", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.2.0.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "mgol", + "email": "m.goleb@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "timmywil", + "email": "4timmywil@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/jquery-3.2.0.tgz_1489699855733_0.5328386940527707" + }, + "directories": {} + }, + "3.2.1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.2.1", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "JS Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.2.1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "babel-preset-es2015": "6.6.0", + "commitplease": "2.6.1", + "core-js": "2.2.2", + "cross-spawn": "2.2.3", + "eslint-config-jquery": "1.0.0", + "grunt": "1.0.1", + "grunt-babel": "6.0.0", + "grunt-cli": "1.2.0", + "grunt-compare-size": "0.4.2", + "grunt-contrib-uglify": "1.0.1", + "grunt-contrib-watch": "1.0.0", + "grunt-eslint": "19.0.0", + "grunt-git-authors": "3.2.0", + "grunt-jsonlint": "1.0.7", + "grunt-newer": "1.2.0", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "husky": "0.11.4", + "insight": "0.8.1", + "jsdom": "5.6.1", + "load-grunt-tasks": "3.5.0", + "native-promise-only": "0.8.1", + "promises-aplus-tests": "2.1.2", + "q": "1.4.1", + "qunit-assert-step": "1.0.3", + "qunitjs": "1.23.1", + "requirejs": "2.2.0", + "sinon": "1.17.3", + "sizzle": "2.3.3", + "strip-json-comments": "2.0.1", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test:slow", + "precommit": "grunt lint:newer", + "commitmsg": "node node_modules/commitplease" + }, + "commitplease": { + "nohook": true, + "components": [ + "Docs", + "Tests", + "Build", + "Support", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ], + "markerPattern": "^((clos|fix|resolv)(e[sd]|ing))|^(refs?)", + "ticketPattern": "^((Closes|Fixes) ([a-zA-Z]{2,}-)[0-9]+)|^(Refs? [^#])" + }, + "gitHead": "77d2a51d0520d2ee44173afdf4e40a9201f5964e", + "_id": "jquery@3.2.1", + "_shasum": "5c4d9de652af6cd0a770154a631bba12b015c787", + "_from": ".", + "_npmVersion": "4.4.4", + "_nodeVersion": "7.7.3", + "_npmUser": { + "name": "timmywil", + "email": "4timmywil@gmail.com" + }, + "dist": { + "shasum": "5c4d9de652af6cd0a770154a631bba12b015c787", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.2.1.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "mgol", + "email": "m.goleb@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "timmywil", + "email": "4timmywil@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/jquery-3.2.1.tgz_1490036530067_0.19497186387889087" + }, + "directories": {} + }, + "3.3.0": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.3.0", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "JS Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.3.0/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": { + "archiver": "1.3.0", + "chalk": "1.1.3", + "npm": "4.4.1", + "shelljs": "0.7.7" + }, + "devDependencies": { + "babel-core": "7.0.0-beta.0", + "babel-plugin-transform-es2015-for-of": "7.0.0-beta.0", + "commitplease": "2.7.10", + "core-js": "2.4.1", + "eslint-config-jquery": "1.0.1", + "grunt": "1.0.1", + "grunt-babel": "7.0.0", + "grunt-cli": "1.2.0", + "grunt-compare-size": "0.4.2", + "grunt-contrib-uglify": "3.0.1", + "grunt-contrib-watch": "1.0.0", + "grunt-eslint": "20.0.0", + "grunt-git-authors": "3.2.0", + "grunt-jsonlint": "1.1.0", + "grunt-karma": "2.0.0", + "grunt-newer": "1.3.0", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "husky": "0.14.3", + "insight": "0.8.4", + "jsdom": "5.6.1", + "karma": "1.7.0", + "karma-browserstack-launcher": "1.3.0", + "karma-chrome-launcher": "2.2.0", + "karma-firefox-launcher": "1.0.1", + "karma-qunit": "1.2.1", + "load-grunt-tasks": "3.5.2", + "native-promise-only": "0.8.1", + "promises-aplus-tests": "2.1.2", + "q": "1.5.0", + "qunit-assert-step": "1.0.3", + "qunitjs": "1.23.1", + "raw-body": "2.2.0", + "requirejs": "2.3.3", + "sinon": "2.3.7", + "sizzle": "2.3.3", + "strip-json-comments": "2.0.1", + "testswarm": "1.1.0", + "uglify-js": "3.3.4" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test:browserless": "grunt && grunt test:slow", + "test:browser": "grunt && grunt karma:main", + "test": "grunt && grunt test:slow && grunt karma:main", + "jenkins": "npm run test:browserless", + "precommit": "grunt lint:newer qunit_fixture", + "commitmsg": "node node_modules/commitplease" + }, + "commitplease": { + "nohook": true, + "components": [ + "Docs", + "Tests", + "Build", + "Support", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ], + "markerPattern": "^((clos|fix|resolv)(e[sd]|ing))|^(refs?)", + "ticketPattern": "^((Closes|Fixes) ([a-zA-Z]{2,}-)[0-9]+)|^(Refs? [^#])" + }, + "gitHead": "9a8a1c63930edc9fb6fab9e75b3eee578762b8a5", + "_id": "jquery@3.3.0", + "_npmVersion": "5.6.0", + "_nodeVersion": "9.3.0", + "_npmUser": { + "name": "timmywil", + "email": "4timmywil@gmail.com" + }, + "dist": { + "integrity": "sha512-1SmQFTqu24RtvnvLN/D1RFIsOBGqLQYsGJgZxejd69Rw9ACBJvSgppA+A+wBcXgASwRSoX1aDN1I5ZNIrFC6Xw==", + "shasum": "06004bc2d0204ce92822a794ee8efb50283bb9ff", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.3.0.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "mgol", + "email": "m.goleb@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "timmywil", + "email": "4timmywil@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/jquery-3.3.0.tgz_1516388631205_0.827812286792323" + }, + "directories": {} + }, + "3.3.1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.3.1", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "JS Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.3.1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "babel-core": "7.0.0-beta.0", + "babel-plugin-transform-es2015-for-of": "7.0.0-beta.0", + "commitplease": "2.7.10", + "core-js": "2.4.1", + "eslint-config-jquery": "1.0.1", + "grunt": "1.0.1", + "grunt-babel": "7.0.0", + "grunt-cli": "1.2.0", + "grunt-compare-size": "0.4.2", + "grunt-contrib-uglify": "3.0.1", + "grunt-contrib-watch": "1.0.0", + "grunt-eslint": "20.0.0", + "grunt-git-authors": "3.2.0", + "grunt-jsonlint": "1.1.0", + "grunt-karma": "2.0.0", + "grunt-newer": "1.3.0", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "husky": "0.14.3", + "insight": "0.8.4", + "jsdom": "5.6.1", + "karma": "1.7.0", + "karma-browserstack-launcher": "1.3.0", + "karma-chrome-launcher": "2.2.0", + "karma-firefox-launcher": "1.0.1", + "karma-qunit": "1.2.1", + "load-grunt-tasks": "3.5.2", + "native-promise-only": "0.8.1", + "promises-aplus-tests": "2.1.2", + "q": "1.5.0", + "qunit-assert-step": "1.0.3", + "qunitjs": "1.23.1", + "raw-body": "2.2.0", + "requirejs": "2.3.3", + "sinon": "2.3.7", + "sizzle": "2.3.3", + "strip-json-comments": "2.0.1", + "testswarm": "1.1.0", + "uglify-js": "3.3.4" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test:browserless": "grunt && grunt test:slow", + "test:browser": "grunt && grunt karma:main", + "test": "grunt && grunt test:slow && grunt karma:main", + "jenkins": "npm run test:browserless", + "precommit": "grunt lint:newer qunit_fixture", + "commitmsg": "node node_modules/commitplease" + }, + "commitplease": { + "nohook": true, + "components": [ + "Docs", + "Tests", + "Build", + "Support", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ], + "markerPattern": "^((clos|fix|resolv)(e[sd]|ing))|^(refs?)", + "ticketPattern": "^((Closes|Fixes) ([a-zA-Z]{2,}-)[0-9]+)|^(Refs? [^#])" + }, + "gitHead": "9e8ec3d10fad04748176144f108d7355662ae75e", + "_id": "jquery@3.3.1", + "_npmVersion": "5.6.0", + "_nodeVersion": "9.3.0", + "_npmUser": { + "name": "timmywil", + "email": "4timmywil@gmail.com" + }, + "dist": { + "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==", + "shasum": "958ce29e81c9790f31be7792df5d4d95fc57fbca", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "mgol", + "email": "m.goleb@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "timmywil", + "email": "4timmywil@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/jquery-3.3.1.tgz_1516469230473_0.5458589680492878" + }, + "directories": {} + } + }, + "time": { + "modified": "2018-05-21T21:39:54.702Z", + "created": "2011-03-19T07:19:56.392Z", + "1.5.1": "2011-03-19T07:19:56.956Z", + "1.6.2": "2011-07-06T16:13:21.519Z", + "1.6.3": "2011-09-12T19:05:34.373Z", + "1.7.2": "2012-05-01T11:14:09.090Z", + "1.7.3": "2012-07-01T16:11:53.194Z", + "1.8.2": "2012-11-11T22:43:58.910Z", + "1.8.3": "2012-12-01T00:03:02.297Z", + "2.1.0-beta2": "2013-11-15T16:34:48.859Z", + "2.1.0-beta3": "2013-12-20T22:53:28.426Z", + "1.11.0-beta3": "2014-01-06T19:57:22.387Z", + "2.1.0-rc1": "2014-01-17T22:47:16.391Z", + "1.11.0-pre": "2014-01-16T20:38:42.912Z", + "1.11.0-rc1": "2014-01-16T21:08:36.924Z", + "1.11.0": "2014-01-23T21:07:07.184Z", + "2.1.0": "2014-01-23T21:12:47.772Z", + "2.1.1-beta1": "2014-03-24T17:05:07.581Z", + "1.11.1-beta1": "2014-03-24T17:25:14.236Z", + "2.1.1-rc1": "2014-04-18T15:29:41.423Z", + "1.11.1-rc1": "2014-04-18T15:40:23.931Z", + "2.1.1-rc2": "2014-04-21T20:52:06.866Z", + "1.11.1-rc2": "2014-04-21T21:12:52.817Z", + "2.1.1": "2014-05-01T17:15:20.164Z", + "1.11.1": "2014-05-01T18:05:32.863Z", + "1.9.1": "2014-07-17T22:01:17.886Z", + "2.1.2": "2014-12-17T14:14:28.184Z", + "1.11.2": "2014-12-17T16:07:07.647Z", + "2.1.3": "2014-12-18T15:18:38.205Z", + "2.1.4": "2015-04-28T16:17:13.648Z", + "1.11.3": "2015-04-28T16:22:06.378Z", + "3.0.0-alpha1": "2015-07-13T19:26:37.913Z", + "1.12.0": "2016-01-08T19:58:05.265Z", + "2.2.0": "2016-01-08T20:03:43.280Z", + "3.0.0-beta1": "2016-01-14T23:09:43.368Z", + "1.12.1": "2016-02-22T19:08:05.212Z", + "2.2.1": "2016-02-22T19:12:09.116Z", + "1.12.2": "2016-03-17T17:45:59.810Z", + "2.2.2": "2016-03-17T17:52:26.967Z", + "1.12.3": "2016-04-05T19:21:37.716Z", + "2.2.3": "2016-04-05T19:27:17.929Z", + "1.12.4": "2016-05-20T17:19:07.375Z", + "2.2.4": "2016-05-20T17:26:07.921Z", + "3.0.0-rc1": "2016-05-20T19:13:48.387Z", + "3.0.0": "2016-06-09T18:33:13.420Z", + "3.1.0": "2016-07-07T21:46:05.554Z", + "3.1.1": "2016-09-22T22:32:49.360Z", + "3.2.0": "2017-03-16T21:30:56.342Z", + "3.2.1": "2017-03-20T19:02:13.508Z", + "3.3.0": "2018-01-19T19:03:52.616Z", + "3.3.1": "2018-01-20T17:27:11.928Z" + }, + "dist-tags": { + "beta": "3.0.0", + "latest": "3.3.1", + "jota": "1.6.3" + }, + "_uplinks": { + "npmjs": { + "etag": "W/\"252f0a131cedd3ea82dfefd6fa049558\"", + "fetched": 1529779934081 + } + }, + "_distfiles": { + "jquery-1.5.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.5.1.tgz", + "sha": "2ae2d661e906c1a01e044a71bb5b2743942183e5", + "registry": "npmjs" + }, + "jquery-1.6.2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.6.2.tgz", + "sha": "01757a4c5beea29e8ae697527c3131abbe997a28", + "registry": "npmjs" + }, + "jquery-1.6.3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.6.3.tgz", + "sha": "e1f732fa7e718a6adb3ec20ae0eb2a64fd95ef01", + "registry": "npmjs" + }, + "jquery-1.7.2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.7.2.tgz", + "sha": "a93746763aca75a34df4c16395b0826310d0eaf2", + "registry": "npmjs" + }, + "jquery-1.7.3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.7.3.tgz", + "sha": "e3d00a71612ac7e9b554b438e0987d0272ddba94", + "registry": "npmjs" + }, + "jquery-1.8.2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.8.2.tgz", + "sha": "46790ae07c6de38124eda90bbf7336b43df93305", + "registry": "npmjs" + }, + "jquery-1.8.3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.8.3.tgz", + "sha": "cfa2941c05a83d966f21347f759a6d15281c60cc", + "registry": "npmjs" + }, + "jquery-2.1.0-beta2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.0-beta2.tgz", + "sha": "e0fbbe2beb45b4d8f808362c7c99ef5bfee7d8c6", + "registry": "npmjs" + }, + "jquery-2.1.0-beta3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.0-beta3.tgz", + "sha": "5a89b624d8fa625fe5fa83a12a9acb1ef8a11d02", + "registry": "npmjs" + }, + "jquery-1.11.0-beta3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.0-beta3.tgz", + "sha": "0464a6aba9f35f6c83a203caa23ab420909ce852", + "registry": "npmjs" + }, + "jquery-1.11.0-rc1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.0-rc1.tgz", + "sha": "c2f6a4877374647b20b080c478d8dbcdfb4960ee", + "registry": "npmjs" + }, + "jquery-2.1.0-rc1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.0-rc1.tgz", + "sha": "8c9f5d9a055c2fedb3f5269617ae649497d6a3b0", + "registry": "npmjs" + }, + "jquery-1.11.0.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.0.tgz", + "sha": "c67ceee19b403650d682adcf39d5c9009814d949", + "registry": "npmjs" + }, + "jquery-2.1.0.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.0.tgz", + "sha": "1c9a8c971d2b53dae10d72e16cbb5a1df16a4ace", + "registry": "npmjs" + }, + "jquery-2.1.1-beta1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.1-beta1.tgz", + "sha": "6306c8ea1d104775f3ef8f5c26f0a32acd710a11", + "registry": "npmjs" + }, + "jquery-1.11.1-beta1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.1-beta1.tgz", + "sha": "c7eacde5e1ae06e029f1cd1b2dd444953a33e843", + "registry": "npmjs" + }, + "jquery-2.1.1-rc1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.1-rc1.tgz", + "sha": "95c494fdbbd0cefc305260e11ad46ae49a387c3d", + "registry": "npmjs" + }, + "jquery-1.11.1-rc1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.1-rc1.tgz", + "sha": "666a7df02488b48732d96e8ab9bdd34f61dd4238", + "registry": "npmjs" + }, + "jquery-2.1.1-rc2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.1-rc2.tgz", + "sha": "99833e415efa7ac8a4efecc5df6894b2f938a598", + "registry": "npmjs" + }, + "jquery-1.11.1-rc2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.1-rc2.tgz", + "sha": "a4ef3edde0864d8524c5e72f59c459fd7a9ebd17", + "registry": "npmjs" + }, + "jquery-2.1.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.1.tgz", + "sha": "828fc60f50f7ee5983363ef4eb01c5f70af4bd5b", + "registry": "npmjs" + }, + "jquery-1.11.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.1.tgz", + "sha": "b6ec928590112ebed69e1e49cbfd0025ccd60ddb", + "registry": "npmjs" + }, + "jquery-1.9.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.9.1.tgz", + "sha": "e4cd4835faaefbade535857613c0fc3ff2adaf34", + "registry": "npmjs" + }, + "jquery-2.1.2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.2.tgz", + "sha": "b68f154cb2ea4731924883e9fe20ec199d1dc1e2", + "registry": "npmjs" + }, + "jquery-1.11.2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.2.tgz", + "sha": "30ab26857211c37caa83da0f6903155fe49bb72d", + "registry": "npmjs" + }, + "jquery-2.1.3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.3.tgz", + "sha": "6ec55204673d505d39432c5bf5cfad10e1dbad2e", + "registry": "npmjs" + }, + "jquery-2.1.4.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.4.tgz", + "sha": "228bde698a0c61431dc2630a6a154f15890d2317", + "registry": "npmjs" + }, + "jquery-1.11.3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.3.tgz", + "sha": "dd8b74278b27102d29df63eae28308a8cfa1b583", + "registry": "npmjs" + }, + "jquery-3.0.0-alpha1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.0.0-alpha1.tgz", + "sha": "3493d672266e21c2dffb2714f935448edebe3c62", + "registry": "npmjs" + }, + "jquery-1.12.0.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.12.0.tgz", + "sha": "44653be4e3e4628b106bf2141dfd10fbca6021ef", + "registry": "npmjs" + }, + "jquery-2.2.0.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.2.0.tgz", + "sha": "d0e84ebbf199da51bf7ec39307f19b35754e9cba", + "registry": "npmjs" + }, + "jquery-3.0.0-beta1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.0.0-beta1.tgz", + "sha": "d2a4e368e2eed7050bf66abbbb54db2ea345349d", + "registry": "npmjs" + }, + "jquery-1.12.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.12.1.tgz", + "sha": "9cc34ce4780d4ceb90c44328f071064f01960c18", + "registry": "npmjs" + }, + "jquery-2.2.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.2.1.tgz", + "sha": "3c3e16854ad3d2ac44ac65021b17426d22ad803f", + "registry": "npmjs" + }, + "jquery-1.12.2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.12.2.tgz", + "sha": "b8a8b45937312a19eebbcf5a0589b0311c8220bb", + "registry": "npmjs" + }, + "jquery-2.2.2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.2.2.tgz", + "sha": "3e302dc61eb329a21e9efac937d731f061134c59", + "registry": "npmjs" + }, + "jquery-1.12.3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.12.3.tgz", + "sha": "1298b88b908e7c7f7501eb8c1a61f1ac8337b531", + "registry": "npmjs" + }, + "jquery-2.2.3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.2.3.tgz", + "sha": "45e07e4190334de36c9e1a64b43b1f1373d91758", + "registry": "npmjs" + }, + "jquery-1.12.4.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.12.4.tgz", + "sha": "01e1dfba290fe73deba77ceeacb0f9ba2fec9e0c", + "registry": "npmjs" + }, + "jquery-2.2.4.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.2.4.tgz", + "sha": "2c89d6889b5eac522a7eea32c14521559c6cbf02", + "registry": "npmjs" + }, + "jquery-3.0.0-rc1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.0.0-rc1.tgz", + "sha": "d69fc540b0a56be13e8aecde5a8766ade7a44f8e", + "registry": "npmjs" + }, + "jquery-3.0.0.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.0.0.tgz", + "sha": "95a2a9541291a9f819e016f85ba247116d03e4ab", + "registry": "npmjs" + }, + "jquery-3.1.0.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.1.0.tgz", + "sha": "129f6f1ae94b18f09010b008d0d6011e40613d7f", + "registry": "npmjs" + }, + "jquery-3.1.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.1.1.tgz", + "sha": "347c1c21c7e004115e0a4da32cece041fad3c8a3", + "registry": "npmjs" + }, + "jquery-3.2.0.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.2.0.tgz", + "sha": "3bdbba66e1eee0785532dddadb0e0d2521ca584b", + "registry": "npmjs" + }, + "jquery-3.2.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.2.1.tgz", + "sha": "5c4d9de652af6cd0a770154a631bba12b015c787", + "registry": "npmjs" + }, + "jquery-3.3.0.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.3.0.tgz", + "sha": "06004bc2d0204ce92822a794ee8efb50283bb9ff", + "registry": "npmjs" + }, + "jquery-3.3.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz", + "sha": "958ce29e81c9790f31be7792df5d4d95fc57fbca", + "registry": "npmjs" + } + }, + "_attachments": { + "jquery-1.5.1.tgz": { + "shasum": "2ae2d661e906c1a01e044a71bb5b2743942183e5" + } + }, + "_rev": "60-fed4915c27b9c1e6", + "readme": "# jQuery\n\n> jQuery is a fast, small, and feature-rich JavaScript library.\n\nFor information on how to get started and how to use jQuery, please see [jQuery's documentation](http://api.jquery.com/).\nFor source files and issues, please visit the [jQuery repo](https://github.com/jquery/jquery).\n\nIf upgrading, please see the [blog post for 3.3.1](https://blog.jquery.com/2017/03/20/jquery-3.3.1-now-available/). This includes notable differences from the previous version and a more readable changelog.\n\n## Including jQuery\n\nBelow are some of the most common ways to include jQuery.\n\n### Browser\n\n#### Script tag\n\n```html\n\n```\n\n#### Babel\n\n[Babel](http://babeljs.io/) is a next generation JavaScript compiler. One of the features is the ability to use ES6/ES2015 modules now, even though browsers do not yet support this feature natively.\n\n```js\nimport $ from \"jquery\";\n```\n\n#### Browserify/Webpack\n\nThere are several ways to use [Browserify](http://browserify.org/) and [Webpack](https://webpack.github.io/). For more information on using these tools, please refer to the corresponding project's documention. In the script, including jQuery will usually look like this...\n\n```js\nvar $ = require(\"jquery\");\n```\n\n#### AMD (Asynchronous Module Definition)\n\nAMD is a module format built for the browser. For more information, we recommend [require.js' documentation](http://requirejs.org/docs/whyamd.html).\n\n```js\ndefine([\"jquery\"], function($) {\n\n});\n```\n\n### Node\n\nTo include jQuery in [Node](nodejs.org), first install with npm.\n\n```sh\nnpm install jquery\n```\n\nFor jQuery to work in Node, a window with a document is required. Since no such window exists natively in Node, one can be mocked by tools such as [jsdom](https://github.com/tmpvar/jsdom). This can be useful for testing purposes.\n\n```js\nrequire(\"jsdom\").env(\"\", function(err, window) {\n\tif (err) {\n\t\tconsole.error(err);\n\t\treturn;\n\t}\n\n\tvar $ = require(\"jquery\")(window);\n});\n```" +} \ No newline at end of file diff --git a/packages/server/test/package-access/mock/store/vue/package.json b/packages/server/test/package-access/mock/store/vue/package.json new file mode 100644 index 000000000..2a15b3b17 --- /dev/null +++ b/packages/server/test/package-access/mock/store/vue/package.json @@ -0,0 +1,25169 @@ +{ + "name": "vue", + "versions": { + "0.0.0": { + "name": "vue", + "version": "0.0.0", + "description": "viewmodel", + "main": "index.js", + "author": { + "name": "Evan You" + }, + "license": "MIT", + "_id": "vue@0.0.0", + "dist": { + "shasum": "02a9248eb4a26ebc2bbf834f6db630af725ff258", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.0.0.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.15", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.6.0": { + "name": "vue", + "version": "0.6.0", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "A mini front-end MVVM framework", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "scripts": { + "test": "grunt test" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-component-build": "~0.4.1", + "grunt-contrib-jshint": "~0.7.1", + "grunt-contrib-uglify": "~0.2.7", + "grunt-mocha": "~0.4.6", + "jscoverage": "~0.3.8", + "jshint-stylish": "0.1.3", + "semver": "~2.2.1" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "https://github.com/yyx990803/vue", + "_id": "vue@0.6.0", + "dist": { + "shasum": "123c1a24ce6fe13c4530c03d780cb1ef966f9cde", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.6.0.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.15", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.7.0": { + "name": "vue", + "version": "0.7.0", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "A mini front-end MVVM framework", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "scripts": { + "test": "grunt test" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-component-build": "~0.4.1", + "grunt-contrib-jshint": "~0.7.1", + "grunt-contrib-uglify": "~0.2.7", + "grunt-mocha": "~0.4.6", + "jscoverage": "~0.3.8", + "jshint-stylish": "0.1.3", + "semver": "~2.2.1", + "shell-task": "~0.1.1" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "https://github.com/yyx990803/vue", + "_id": "vue@0.7.0", + "dist": { + "shasum": "146d0ed809587f569b7fce39f6bac77b68ff3d47", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.7.0.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.21", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.7.1": { + "name": "vue", + "version": "0.7.1", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "A mini front-end MVVM framework", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "scripts": { + "test": "grunt test" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-component-build": "~0.4.1", + "grunt-contrib-jshint": "~0.7.1", + "grunt-contrib-uglify": "~0.2.7", + "grunt-mocha": "~0.4.6", + "jscoverage": "~0.3.8", + "jshint-stylish": "0.1.3", + "semver": "~2.2.1", + "shell-task": "~0.1.1" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "https://github.com/yyx990803/vue", + "_id": "vue@0.7.1", + "dist": { + "shasum": "17a6ea20a5660c8614636387e15521530ff48c50", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.7.1.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.21", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.7.3": { + "name": "vue", + "version": "0.7.3", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "scripts": { + "test": "grunt" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-mocha": "~0.4.6", + "jscoverage": "~0.3.8", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "vinyl-fs": "git://github.com/yyx990803/vinyl-fs", + "gulp-component": "~0.1.3" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "https://github.com/yyx990803/vue", + "_id": "vue@0.7.3", + "dist": { + "shasum": "61acb2ae6afb1116466bf1512c3835e0b47ac0a8", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.7.3.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.17", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.7.4": { + "name": "vue", + "version": "0.7.4", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "scripts": { + "test": "grunt" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-mocha": "~0.4.6", + "jscoverage": "~0.3.8", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "vinyl-fs": "git://github.com/yyx990803/vinyl-fs", + "gulp-component": "~0.1.3" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "https://github.com/yyx990803/vue", + "_id": "vue@0.7.4", + "dist": { + "shasum": "e0df485af8f62a503664c35c07ea9315dc1a5759", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.7.4.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.17", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.7.5": { + "name": "vue", + "version": "0.7.5", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "vinyl-fs": "git://github.com/wearefractal/vinyl-fs", + "gulp-component": "~0.1.4", + "grunt-karma": "~0.6.2", + "karma-script-launcher": "~0.1.0", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2", + "karma-phantomjs-launcher": "~0.1.1", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-safari-launcher": "~0.1.1", + "grunt-karma-coveralls": "~2.3.0" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "https://github.com/yyx990803/vue", + "_id": "vue@0.7.5", + "dist": { + "shasum": "2b845e2defe5d30437b8915822b2461f9ce8a9d6", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.7.5.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.17", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.7.6": { + "name": "vue", + "version": "0.7.6", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.4", + "vinyl-fs": "git://github.com/wearefractal/vinyl-fs", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "https://github.com/yyx990803/vue", + "_id": "vue@0.7.6", + "dist": { + "shasum": "ab486851e45887879832268370fcb372c1dc87a9", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.7.6.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.21", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.8.0": { + "name": "vue", + "version": "0.8.0", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.4", + "vinyl-fs": "git://github.com/wearefractal/vinyl-fs", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "https://github.com/yyx990803/vue", + "_id": "vue@0.8.0", + "dist": { + "shasum": "0e0ea13ca7d9672cd900d8f10c59506814db934d", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.8.0.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.21", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.8.1": { + "name": "vue", + "version": "0.8.1", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.4", + "vinyl-fs": "~0.0.2", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "https://github.com/yyx990803/vue", + "_id": "vue@0.8.1", + "dist": { + "shasum": "26bfea6b31dd8e0d5b9f3e2eda349624f8011a67", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.8.1.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.21", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.8.2": { + "name": "vue", + "version": "0.8.2", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.4", + "vinyl-fs": "~0.0.2", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "_id": "vue@0.8.2", + "dist": { + "shasum": "c1d30517b5160982a48ea22022b6974bd1bbde6a", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.8.2.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.21", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.8.3": { + "name": "vue", + "version": "0.8.3", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.4", + "vinyl-fs": "~0.0.2", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "_id": "vue@0.8.3", + "dist": { + "shasum": "d50bea6e4ea1a78f9252a7c84a0346ce5eb46326", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.8.3.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.25", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.8.4": { + "name": "vue", + "version": "0.8.4", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.4", + "vinyl-fs": "~0.0.2", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "_id": "vue@0.8.4", + "dist": { + "shasum": "88e9fa4190a56326635ec6962f3bf5469f83ee62", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.8.4.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.25", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.8.6": { + "name": "vue", + "version": "0.8.6", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.4", + "vinyl-fs": "~0.0.2", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "_id": "vue@0.8.6", + "dist": { + "shasum": "a8d10dc5550a89db4f054da991a8f2ab7c196f55", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.8.6.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.25", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.8.7": { + "name": "vue", + "version": "0.8.7", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.4", + "vinyl-fs": "~0.0.2", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "_id": "vue@0.8.7", + "dist": { + "shasum": "5497afc8f73b75123f40ea5dd6ceae044d6a2f26", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.8.7.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.24", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.8.8": { + "name": "vue", + "version": "0.8.8", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.4", + "vinyl-fs": "~0.0.2", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "_id": "vue@0.8.8", + "dist": { + "shasum": "63fa3d8c1566f2983ddd9816a1b98b8d0612a2d0", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.8.8.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.24", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.9.0": { + "name": "vue", + "version": "0.9.0", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.4", + "vinyl-fs": "~0.0.2", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "_id": "vue@0.9.0", + "dist": { + "shasum": "fdddbcf080a8121c9de827f5aba0894a97efb77d", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.9.0.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.25", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.9.1": { + "name": "vue", + "version": "0.9.1", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.4", + "vinyl-fs": "~0.0.2", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "_id": "vue@0.9.1", + "dist": { + "shasum": "11fb26ef6fd03697b4c174440cb92bcea3a6ba4d", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.9.1.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.24", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.9.2": { + "name": "vue", + "version": "0.9.2", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.4", + "vinyl-fs": "~0.0.2", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "_id": "vue@0.9.2", + "dist": { + "shasum": "c53dff86edcf12b941b45ca6f3b4e7d0f39fcc4e", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.9.2.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.24", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.9.3": { + "name": "vue", + "version": "0.9.3", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.4", + "vinyl-fs": "~0.0.2", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "_id": "vue@0.9.3", + "dist": { + "shasum": "bd982661b5cec65cb8d09e33856e142315716064", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.9.3.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.25", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.10.0": { + "name": "vue", + "version": "0.10.0", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.6", + "vinyl-fs": "~0.0.2", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "_id": "vue@0.10.0", + "dist": { + "shasum": "54f1eb929b53c00afe74ef8f6a44642ab50e64c9", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.10.0.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.24", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.10.1": { + "name": "vue", + "version": "0.10.1", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.6", + "vinyl-fs": "~0.0.2", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "_id": "vue@0.10.1", + "dist": { + "shasum": "72d7a4d542e3d3d759b2ab60fc7a7cc768327278", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.10.1.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.24", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.10.2": { + "name": "vue", + "version": "0.10.2", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.6", + "vinyl-fs": "~0.0.2", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "_id": "vue@0.10.2", + "dist": { + "shasum": "7fe8f74b103246d266137b1647fa918c4941ba87", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.10.2.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.24", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.10.3": { + "name": "vue", + "version": "0.10.3", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.6", + "vinyl-fs": "~0.0.2", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "_id": "vue@0.10.3", + "dist": { + "shasum": "beb96bf62286b34a1db3fe0b016adce8a0b4d41a", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.10.3.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.24", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.10.4": { + "name": "vue", + "version": "0.10.4", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.2", + "grunt-contrib-watch": "~0.5.3", + "grunt-contrib-jshint": "~0.8.0", + "grunt-contrib-connect": "~0.6.0", + "grunt-karma": "~0.6.2", + "grunt-karma-coveralls": "~2.3.0", + "grunt-saucelabs": "~4.1.2", + "gulp-component": "~0.1.6", + "vinyl-fs": "~0.0.2", + "jshint-stylish": "~0.1.4", + "semver": "~2.2.1", + "shell-task": "~0.1.1", + "map-stream": "0.0.4", + "uglify-js": "~2.4.8", + "karma": "~0.10.9", + "karma-mocha": "~0.1.1", + "karma-coverage": "~0.1.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.1", + "karma-chrome-launcher": "~0.1.2", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1", + "karma-requirejs": "~0.2.1", + "karma-html2js-preprocessor": "~0.1.0", + "karma-jasmine": "~0.1.5", + "karma-coffee-preprocessor": "~0.1.2" + }, + "_id": "vue@0.10.4", + "dist": { + "shasum": "8513bcaecb6cff65d51b91c115dffb95d1b79304", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.10.4.tgz" + }, + "_from": ".", + "_npmVersion": "1.4.3", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {} + }, + "0.10.5": { + "name": "vue", + "version": "0.10.5", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.5", + "grunt-contrib-watch": "~0.6.1", + "grunt-contrib-jshint": "~0.10.0", + "grunt-contrib-connect": "~0.7.1", + "grunt-karma": "~0.8.3", + "grunt-karma-coveralls": "~2.5.1", + "grunt-saucelabs": "~7.0.0", + "gulp-component": "~0.1.8", + "vinyl-fs": "~0.1.4", + "jshint-stylish": "~0.2.0", + "semver": "~2.3.0", + "shell-task": "~0.1.2", + "map-stream": "0.1.0", + "uglify-js": "~2.4.13", + "karma": "~0.12.6", + "karma-mocha": "~0.1.3", + "karma-coverage": "~0.2.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.4", + "karma-chrome-launcher": "~0.1.4", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1" + }, + "_id": "vue@0.10.5", + "_shasum": "b026812db8c853776656e662c407f13fec0936e3", + "_from": ".", + "_npmVersion": "1.4.9", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "b026812db8c853776656e662c407f13fec0936e3", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.10.5.tgz" + }, + "directories": {} + }, + "0.10.6": { + "name": "vue", + "version": "0.10.6", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com", + "url": "http://evanyou.me" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/main.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt travis" + }, + "devDependencies": { + "grunt": "~0.4.5", + "grunt-contrib-watch": "~0.6.1", + "grunt-contrib-jshint": "~0.10.0", + "grunt-contrib-connect": "~0.7.1", + "grunt-karma": "~0.8.3", + "grunt-karma-coveralls": "~2.5.1", + "grunt-saucelabs": "~7.0.0", + "gulp-component": "~0.1.8", + "vinyl-fs": "~0.1.4", + "jshint-stylish": "~0.2.0", + "semver": "~2.3.0", + "shell-task": "~0.1.2", + "map-stream": "0.1.0", + "uglify-js": "~2.4.13", + "karma": "~0.12.6", + "karma-mocha": "~0.1.3", + "karma-coverage": "~0.2.4", + "karma-script-launcher": "~0.1.0", + "karma-phantomjs-launcher": "~0.1.4", + "karma-chrome-launcher": "~0.1.4", + "karma-firefox-launcher": "~0.1.3", + "karma-safari-launcher": "~0.1.1" + }, + "spm": { + "main": "src/main.js", + "ignore": [ + ".*", + "examples", + "test", + "tasks", + "dist", + "Gruntfile.js", + "bower.json", + "component.json", + "*.md" + ] + }, + "_id": "vue@0.10.6", + "_shasum": "47f4e8096afd099a1885a46576b8a9eb63aee2b9", + "_from": ".", + "_npmVersion": "1.4.9", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "47f4e8096afd099a1885a46576b8a9eb63aee2b9", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.10.6.tgz" + }, + "directories": {} + }, + "0.11.0-rc": { + "name": "vue", + "version": "0.11.0-rc", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci" + }, + "devDependencies": { + "browserify": "^5.11.0", + "component-builder": "^1.1.10", + "component-resolver": "^1.1.8", + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-contrib-watch": "^0.6.1", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.2", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.16", + "karma-chrome-launcher": "^0.1.4", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.5", + "karma-firefox-launcher": "^0.1.3", + "karma-jasmine": "^0.2.2", + "karma-phantomjs-launcher": "^0.1.4", + "karma-sauce-launcher": "^0.2.10", + "uglify-js": "^2.4.15" + }, + "_id": "vue@0.11.0-rc", + "_shasum": "ff6791fa0fb0a46d8a1facb69a0ab518fea21893", + "_from": ".", + "_npmVersion": "1.4.9", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "ff6791fa0fb0a46d8a1facb69a0ab518fea21893", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.11.0-rc.tgz" + }, + "directories": {} + }, + "0.11.0-rc2": { + "name": "vue", + "version": "0.11.0-rc2", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci" + }, + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-contrib-watch": "^0.6.1", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.2", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.16", + "karma-chrome-launcher": "^0.1.4", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.5", + "karma-firefox-launcher": "^0.1.3", + "karma-jasmine": "^0.2.2", + "karma-phantomjs-launcher": "^0.1.4", + "karma-sauce-launcher": "^0.2.10", + "uglify-js": "^2.4.15", + "webpack": "^1.4.4" + }, + "gitHead": "7e767f953cd542e64b67e0aa25af8c96770d7eb7", + "_id": "vue@0.11.0-rc2", + "_shasum": "84302800170010722beeb1f6c0169fb07f2ba5ad", + "_from": ".", + "_npmVersion": "1.4.23", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "84302800170010722beeb1f6c0169fb07f2ba5ad", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.11.0-rc2.tgz" + }, + "directories": {} + }, + "0.11.0-rc3": { + "name": "vue", + "version": "0.11.0-rc3", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci" + }, + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-contrib-watch": "^0.6.1", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.2", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.16", + "karma-chrome-launcher": "^0.1.4", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.5", + "karma-firefox-launcher": "^0.1.3", + "karma-jasmine": "^0.2.2", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.0.3", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.15", + "webpack": "^1.4.4" + }, + "gitHead": "7163a9b63df5ffe898f395fb8bb31f2851d472f6", + "_id": "vue@0.11.0-rc3", + "_shasum": "a7329c5f19ebcc3eb4e951edb4cfc56c8b113e7a", + "_from": ".", + "_npmVersion": "1.4.28", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "a7329c5f19ebcc3eb4e951edb4cfc56c8b113e7a", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.11.0-rc3.tgz" + }, + "directories": {} + }, + "0.11.0": { + "name": "vue", + "version": "0.11.0", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci" + }, + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-contrib-watch": "^0.6.1", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.2", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.16", + "karma-chrome-launcher": "^0.1.4", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.5", + "karma-firefox-launcher": "^0.1.3", + "karma-jasmine": "^0.2.2", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.0.3", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.15", + "webpack": "^1.4.4" + }, + "gitHead": "5bc3e30b694dc3b6aeeb87c24f88b9cd7a7259d6", + "_id": "vue@0.11.0", + "_shasum": "81718e27f60702f6bdaddaee91b7b29c64ca5547", + "_from": ".", + "_npmVersion": "1.4.28", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "81718e27f60702f6bdaddaee91b7b29c64ca5547", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.11.0.tgz" + }, + "directories": {} + }, + "0.11.1": { + "name": "vue", + "version": "0.11.1", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci" + }, + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-contrib-watch": "^0.6.1", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.2", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.16", + "karma-chrome-launcher": "^0.1.4", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.5", + "karma-firefox-launcher": "^0.1.3", + "karma-jasmine": "^0.2.2", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.0.3", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.15", + "webpack": "^1.4.4" + }, + "gitHead": "0df318c29d7e10bfa8e5c7ca31837af91ff3174c", + "_id": "vue@0.11.1", + "_shasum": "f0a9868c2db8124277ee43a75910a3c72121df7e", + "_from": ".", + "_npmVersion": "1.4.28", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "f0a9868c2db8124277ee43a75910a3c72121df7e", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.11.1.tgz" + }, + "directories": {} + }, + "0.11.2": { + "name": "vue", + "version": "0.11.2", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci" + }, + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-contrib-watch": "^0.6.1", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.2", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.16", + "karma-chrome-launcher": "^0.1.4", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.5", + "karma-firefox-launcher": "^0.1.3", + "karma-jasmine": "^0.2.2", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.0.3", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.15", + "webpack": "^1.4.4" + }, + "gitHead": "51cfffbdba03b937f0ef8efe40a87521852d601e", + "_id": "vue@0.11.2", + "_shasum": "b079cabcd972683f4885560bacd6b16a5c4656b5", + "_from": ".", + "_npmVersion": "1.4.28", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "b079cabcd972683f4885560bacd6b16a5c4656b5", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.11.2.tgz" + }, + "directories": {} + }, + "0.11.3": { + "name": "vue", + "version": "0.11.3", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci" + }, + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-contrib-watch": "^0.6.1", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.2", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.16", + "karma-chrome-launcher": "^0.1.4", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.5", + "karma-firefox-launcher": "^0.1.3", + "karma-jasmine": "^0.2.2", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.0.3", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.15", + "webpack": "^1.4.4" + }, + "gitHead": "fe35b5101fb0bb7fc94025f62b857a1404bffb7d", + "_id": "vue@0.11.3", + "_shasum": "e77d7dd2ab12f6729d1b78c54575b3514e72d6fe", + "_from": ".", + "_npmVersion": "1.4.28", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "e77d7dd2ab12f6729d1b78c54575b3514e72d6fe", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.11.3.tgz" + }, + "directories": {} + }, + "0.11.4": { + "name": "vue", + "version": "0.11.4", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci" + }, + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-contrib-watch": "^0.6.1", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.2", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.16", + "karma-chrome-launcher": "^0.1.4", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.5", + "karma-firefox-launcher": "^0.1.3", + "karma-jasmine": "^0.2.2", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.0.3", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.15", + "webpack": "^1.4.4" + }, + "gitHead": "19e0223f5faa2592b37434e9936f2885a5d9cb2f", + "_id": "vue@0.11.4", + "_shasum": "f81897efd0ffa5de319b781e37082b50b200e59f", + "_from": ".", + "_npmVersion": "1.4.28", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "f81897efd0ffa5de319b781e37082b50b200e59f", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.11.4.tgz" + }, + "directories": {} + }, + "0.11.5": { + "name": "vue", + "version": "0.11.5", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci" + }, + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-contrib-watch": "^0.6.1", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.16", + "webpack": "^1.5.3" + }, + "gitHead": "a06cd65e1c72beea48485a2a5a91c579c0752fa7", + "_id": "vue@0.11.5", + "_shasum": "aecca4cecca01662135af962935c5ae9cdd893b2", + "_from": ".", + "_npmVersion": "1.4.28", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "aecca4cecca01662135af962935c5ae9cdd893b2", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.11.5.tgz" + }, + "directories": {} + }, + "0.11.6": { + "name": "vue", + "version": "0.11.6", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci" + }, + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-contrib-watch": "^0.6.1", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.8.4" + }, + "gitHead": "6c3b290bb051e16ce5fc0897638b2eb4abae0214", + "_id": "vue@0.11.6", + "_shasum": "504f0cc54a5af48e9bb3236e70825c75af71d79b", + "_from": ".", + "_npmVersion": "2.7.1", + "_nodeVersion": "1.6.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "504f0cc54a5af48e9bb3236e70825c75af71d79b", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.11.6.tgz" + }, + "directories": {} + }, + "0.11.7": { + "name": "vue", + "version": "0.11.7", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci" + }, + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-contrib-watch": "^0.6.1", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.8.4" + }, + "gitHead": "563b0b965c4c6724729ddfd42598184f13c8b4f7", + "_id": "vue@0.11.7", + "_shasum": "576991d1cb376e8115d9c036690f91c44ab1bf3f", + "_from": ".", + "_npmVersion": "2.7.1", + "_nodeVersion": "1.6.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "576991d1cb376e8115d9c036690f91c44ab1bf3f", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.11.7.tgz" + }, + "directories": {} + }, + "0.11.8": { + "name": "vue", + "version": "0.11.8", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci" + }, + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-contrib-watch": "^0.6.1", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.8.4" + }, + "gitHead": "6c841059d2893d383befeed0caf8090d5f0e8b88", + "_id": "vue@0.11.8", + "_shasum": "bfe141d02920b6be16ffbe774c925dbb5a6781d8", + "_from": ".", + "_npmVersion": "2.7.1", + "_nodeVersion": "1.6.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "bfe141d02920b6be16ffbe774c925dbb5a6781d8", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.11.8.tgz" + }, + "directories": {} + }, + "0.11.9": { + "name": "vue", + "version": "0.11.9", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci" + }, + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-contrib-watch": "^0.6.1", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.8.4" + }, + "gitHead": "7f7e36bd4a298623d656ca7cab5f23976756de15", + "_id": "vue@0.11.9", + "_shasum": "140cafdaa3771c3a2fe19de1ccbef636af272e25", + "_from": ".", + "_npmVersion": "2.8.3", + "_nodeVersion": "1.8.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "140cafdaa3771c3a2fe19de1ccbef636af272e25", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.11.9.tgz" + }, + "directories": {} + }, + "0.11.10": { + "name": "vue", + "version": "0.11.10", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci" + }, + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-contrib-watch": "^0.6.1", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.8.4" + }, + "gitHead": "d257c81a5889d45012f6df39873fba3f8697f0cc", + "_id": "vue@0.11.10", + "_shasum": "2395fb2735e49ab676a832f0db9950b10660b578", + "_from": ".", + "_npmVersion": "2.8.3", + "_nodeVersion": "1.8.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "2395fb2735e49ab676a832f0db9950b10660b578", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.11.10.tgz" + }, + "directories": {} + }, + "0.12.0-beta1": { + "name": "vue", + "version": "0.12.0-beta1", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.8.4" + }, + "gitHead": "77f79d39992175f84f50e77439915a6865b84da5", + "_id": "vue@0.12.0-beta1", + "_shasum": "b9c8e72a552c240eec1a263be7c5612ddd90b022", + "_from": ".", + "_npmVersion": "2.9.0", + "_nodeVersion": "2.0.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "b9c8e72a552c240eec1a263be7c5612ddd90b022", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.0-beta1.tgz" + }, + "directories": {} + }, + "0.12.0-beta2": { + "name": "vue", + "version": "0.12.0-beta2", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.8.4" + }, + "gitHead": "0a69a55eee9b3c705dfc8953876d1c6190c2194c", + "_id": "vue@0.12.0-beta2", + "_shasum": "e642d58e7d5e696890ee40c49f1378c4414f1720", + "_from": ".", + "_npmVersion": "2.9.0", + "_nodeVersion": "2.0.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "e642d58e7d5e696890ee40c49f1378c4414f1720", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.0-beta2.tgz" + }, + "directories": {} + }, + "0.12.0-beta3": { + "name": "vue", + "version": "0.12.0-beta3", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.8.4" + }, + "gitHead": "8f742d5fe3b4e9f1477fadd0f1e1ed86eca0b548", + "_id": "vue@0.12.0-beta3", + "_shasum": "5c3fffa8871492a4d87b17e4cfbd404684cb08b2", + "_from": ".", + "_npmVersion": "2.9.0", + "_nodeVersion": "2.0.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "5c3fffa8871492a4d87b17e4cfbd404684cb08b2", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.0-beta3.tgz" + }, + "directories": {} + }, + "0.12.0-beta4": { + "name": "vue", + "version": "0.12.0-beta4", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.8.4" + }, + "gitHead": "f3552df2b0bc9777e9bb5c866ffda7e70e6b2fa3", + "_id": "vue@0.12.0-beta4", + "_shasum": "41053e39fbc4bdf20b0cc42a8006cf5807a532d6", + "_from": ".", + "_npmVersion": "2.9.0", + "_nodeVersion": "2.0.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "41053e39fbc4bdf20b0cc42a8006cf5807a532d6", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.0-beta4.tgz" + }, + "directories": {} + }, + "0.12.0-beta5": { + "name": "vue", + "version": "0.12.0-beta5", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.8.4" + }, + "gitHead": "a39476d72981c014a3cf030fa38ea2fddfbfb23f", + "_id": "vue@0.12.0-beta5", + "_shasum": "492184a5d51d4c79e88799c94fce03966ab0ddf1", + "_from": ".", + "_npmVersion": "2.9.0", + "_nodeVersion": "2.0.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "492184a5d51d4c79e88799c94fce03966ab0ddf1", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.0-beta5.tgz" + }, + "directories": {} + }, + "0.12.0-rc": { + "name": "vue", + "version": "0.12.0-rc", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.8.4" + }, + "gitHead": "61eaa271c0694cc4cf7296637b55b5481dbd3f98", + "_id": "vue@0.12.0-rc", + "_shasum": "4818f0ab510fe999dbf8b676a597444083632523", + "_from": ".", + "_npmVersion": "2.9.0", + "_nodeVersion": "2.0.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "4818f0ab510fe999dbf8b676a597444083632523", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.0-rc.tgz" + }, + "directories": {} + }, + "0.12.0-rc2": { + "name": "vue", + "version": "0.12.0-rc2", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.8.4" + }, + "gitHead": "597fa8be89af8ce4d1939b19a9c47a44daeb506b", + "_id": "vue@0.12.0-rc2", + "_shasum": "01a9ebaa56959d00e827f0ba5313110eb3a88742", + "_from": ".", + "_npmVersion": "2.9.0", + "_nodeVersion": "2.0.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "01a9ebaa56959d00e827f0ba5313110eb3a88742", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.0-rc2.tgz" + }, + "directories": {} + }, + "0.12.0": { + "name": "vue", + "version": "0.12.0", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.8.4" + }, + "gitHead": "66b124b7ecf7916ac2506fb5bd8006858006fb35", + "_id": "vue@0.12.0", + "_shasum": "ca036019f3b5cd47048ff0b57e73afbd311165f4", + "_from": ".", + "_npmVersion": "2.9.0", + "_nodeVersion": "2.0.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "ca036019f3b5cd47048ff0b57e73afbd311165f4", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.0.tgz" + }, + "directories": {} + }, + "0.12.0-csp": { + "name": "vue", + "version": "0.12.0-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.8.4" + }, + "dependencies": { + "notevil": "^1.0.0" + }, + "gitHead": "2ed38c9f75a20464e6949f39af079c8643ac8d14", + "_id": "vue@0.12.0-csp", + "_shasum": "02ef952489a70697376caae57511652a9b1331de", + "_from": ".", + "_npmVersion": "2.9.0", + "_nodeVersion": "2.0.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "02ef952489a70697376caae57511652a9b1331de", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.0-csp.tgz" + }, + "directories": {} + }, + "0.12.1": { + "name": "vue", + "version": "0.12.1", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.9.10" + }, + "gitHead": "2eedc8d76a6015def406c062221bafe2d74e2508", + "_id": "vue@0.12.1", + "_shasum": "7b94224debeba2968aed5b4dd4b1435d668187c5", + "_from": ".", + "_npmVersion": "2.9.0", + "_nodeVersion": "2.0.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "7b94224debeba2968aed5b4dd4b1435d668187c5", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.1.tgz" + }, + "directories": {} + }, + "0.12.1-csp": { + "name": "vue", + "version": "0.12.1-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.9.10" + }, + "dependencies": { + "notevil": "^1.0.0" + }, + "gitHead": "9aecbfbb9938fd317cfdeab28eb397c0b43fdbc0", + "_id": "vue@0.12.1-csp", + "_shasum": "63629cbd69043753405d5e1f8820d1dd2b780ee8", + "_from": ".", + "_npmVersion": "2.9.0", + "_nodeVersion": "2.0.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "63629cbd69043753405d5e1f8820d1dd2b780ee8", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.1-csp.tgz" + }, + "directories": {} + }, + "0.12.1-csp.1": { + "name": "vue", + "version": "0.12.1-csp.1", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-karma": "^0.8.3", + "grunt-karma-coveralls": "^2.5.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.9.10" + }, + "dependencies": { + "notevil": "^1.0.0" + }, + "gitHead": "e8d82d2840d314970568e7c576b100aed7d0cd07", + "_id": "vue@0.12.1-csp.1", + "_shasum": "5f5aabf3b547c1e820c0ac8a19de2d8ea9fc2bf6", + "_from": ".", + "_npmVersion": "2.9.0", + "_nodeVersion": "2.0.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "5f5aabf3b547c1e820c0ac8a19de2d8ea9fc2bf6", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.1-csp.1.tgz" + }, + "directories": {} + }, + "0.12.1-csp.2": { + "name": "vue", + "version": "0.12.1-csp.2", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-karma": "^0.8.3", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.2.3", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.9.10" + }, + "dependencies": { + "notevil": "^1.0.0" + }, + "gitHead": "b3c529992e322daa4c3a486137730078edd22ffd", + "_id": "vue@0.12.1-csp.2", + "_shasum": "4d30f07f9aa5696cc6ac00c3983188ca3ecaa2a5", + "_from": ".", + "_npmVersion": "2.9.0", + "_nodeVersion": "2.0.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "4d30f07f9aa5696cc6ac00c3983188ca3ecaa2a5", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.1-csp.2.tgz" + }, + "directories": {} + }, + "0.12.2": { + "name": "vue", + "version": "0.12.2", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-karma": "^0.8.3", + "jasmine-core": "^2.3.4", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.3.5", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.9.10" + }, + "gitHead": "54f860d63fb4bf7d664fdaae74c5678262c715a7", + "_id": "vue@0.12.2", + "_shasum": "bcc2527e6d908bc5d843afb62a64e473c3d9af15", + "_from": ".", + "_npmVersion": "2.11.1", + "_nodeVersion": "2.3.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "bcc2527e6d908bc5d843afb62a64e473c3d9af15", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.2.tgz" + }, + "directories": {} + }, + "0.12.3": { + "name": "vue", + "version": "0.12.3", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-karma": "^0.8.3", + "jasmine-core": "^2.3.4", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.3.5", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.9.10" + }, + "gitHead": "ecc883131c5838562c7f8a853ed945dd431e5e7b", + "_id": "vue@0.12.3", + "_shasum": "a705fee53bc56dcb4f0f16f2f05d3d90b48363cd", + "_from": ".", + "_npmVersion": "2.11.1", + "_nodeVersion": "2.3.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "a705fee53bc56dcb4f0f16f2f05d3d90b48363cd", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.3.tgz" + }, + "directories": {} + }, + "0.12.4": { + "name": "vue", + "version": "0.12.4", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.10.0", + "grunt-karma": "^0.8.3", + "jasmine-core": "^2.3.4", + "jshint-stylish": "^0.3.0", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.3.5", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.9.10" + }, + "gitHead": "e614d9c3bbc0d81018fccd266f64195711b72910", + "_id": "vue@0.12.4", + "_shasum": "fd450f9407f0fb38ea8302de91f4e5911508e21f", + "_from": ".", + "_npmVersion": "2.11.1", + "_nodeVersion": "2.3.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "fd450f9407f0fb38ea8302de91f4e5911508e21f", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.4.tgz" + }, + "directories": {} + }, + "0.12.5": { + "name": "vue", + "version": "0.12.5", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "grunt": "^0.4.5", + "grunt-eslint": "^16.0.0", + "grunt-karma": "^0.8.3", + "jasmine-core": "^2.3.4", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.3.5", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.9.10" + }, + "gitHead": "eb646ecdbffd88e03d70a33f121ad3ff732ccce8", + "_id": "vue@0.12.5", + "_shasum": "658b8e064400cf7c28cff5089d701b554f421071", + "_from": ".", + "_npmVersion": "2.11.1", + "_nodeVersion": "2.3.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "658b8e064400cf7c28cff5089d701b554f421071", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.5.tgz" + }, + "directories": {} + }, + "0.12.5-csp": { + "name": "vue", + "version": "0.12.5-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "grunt": "^0.4.5", + "grunt-eslint": "^16.0.0", + "grunt-karma": "^0.8.3", + "jasmine-core": "^2.3.4", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.3.5", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.9.10" + }, + "dependencies": { + "notevil": "^1.0.0" + }, + "gitHead": "fff52e17ce167d1848099b176a67bf31140e352d", + "_id": "vue@0.12.5-csp", + "_shasum": "b786db73c42308c11c4bf42b96bcead1ef1186b3", + "_from": ".", + "_npmVersion": "2.11.1", + "_nodeVersion": "2.3.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "b786db73c42308c11c4bf42b96bcead1ef1186b3", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.5-csp.tgz" + }, + "directories": {} + }, + "0.12.6": { + "name": "vue", + "version": "0.12.6", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "grunt": "^0.4.5", + "grunt-eslint": "^16.0.0", + "grunt-karma": "^0.8.3", + "jasmine-core": "^2.3.4", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.3.5", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.9.10" + }, + "gitHead": "8bade9382a95a8d59764bb701d50e34253a09365", + "_id": "vue@0.12.6", + "_shasum": "eed5cd3833df7decc86a55184aa15c5434c2453f", + "_from": ".", + "_npmVersion": "2.11.1", + "_nodeVersion": "2.3.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "eed5cd3833df7decc86a55184aa15c5434c2453f", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.6.tgz" + }, + "directories": {} + }, + "0.12.6-csp": { + "name": "vue", + "version": "0.12.6-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "grunt": "^0.4.5", + "grunt-eslint": "^16.0.0", + "grunt-karma": "^0.8.3", + "jasmine-core": "^2.3.4", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.3.5", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.9.10" + }, + "dependencies": { + "notevil": "^1.0.0" + }, + "gitHead": "5eb9a5923a30f84ba07a1290761b78b707726c3f", + "_id": "vue@0.12.6-csp", + "_shasum": "1aa08e128510b8a939435dd033ec5bdfd0c1a199", + "_from": ".", + "_npmVersion": "2.11.1", + "_nodeVersion": "2.3.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "1aa08e128510b8a939435dd033ec5bdfd0c1a199", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.6-csp.tgz" + }, + "directories": {} + }, + "0.12.7": { + "name": "vue", + "version": "0.12.7", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "grunt": "^0.4.5", + "grunt-eslint": "^16.0.0", + "grunt-karma": "^0.8.3", + "jasmine-core": "^2.3.4", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.3.5", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.9.10" + }, + "gitHead": "69edc1ae02b230dbda22eeae53a4899fc06dff40", + "_id": "vue@0.12.7", + "_shasum": "8c44077e6732e784921c1d72f74c2d1426779f9f", + "_from": ".", + "_npmVersion": "2.11.1", + "_nodeVersion": "2.3.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "8c44077e6732e784921c1d72f74c2d1426779f9f", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.7.tgz" + }, + "directories": {} + }, + "0.12.7-csp": { + "name": "vue", + "version": "0.12.7-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack-dev-config.js & webpack --watch --config build/webpack-test-config.js" + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "grunt": "^0.4.5", + "grunt-eslint": "^16.0.0", + "grunt-karma": "^0.8.3", + "jasmine-core": "^2.3.4", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.3.5", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.9.10" + }, + "gitHead": "fb8ee54e9d8f730bc1b0161010d88379ad6c85ac", + "_id": "vue@0.12.7-csp", + "_shasum": "93c85aefe83ec82804f9e1382a30736855833c34", + "_from": ".", + "_npmVersion": "2.11.1", + "_nodeVersion": "2.3.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "93c85aefe83ec82804f9e1382a30736855833c34", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.7-csp.tgz" + }, + "directories": {} + }, + "0.12.8": { + "name": "vue", + "version": "0.12.8", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "grunt": "^0.4.5", + "grunt-eslint": "^16.0.0", + "grunt-karma": "^0.8.3", + "jasmine-core": "^2.3.4", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.3.5", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.9.10" + }, + "gitHead": "79b6eac029493b78d257031bcfb5153979d05f15", + "_id": "vue@0.12.8", + "_shasum": "ae47b98ef110577ae7fd13dbfcc0ad8149bfb422", + "_from": ".", + "_npmVersion": "2.11.1", + "_nodeVersion": "2.3.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "ae47b98ef110577ae7fd13dbfcc0ad8149bfb422", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.8.tgz" + }, + "directories": {} + }, + "0.12.8-csp": { + "name": "vue", + "version": "0.12.8-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "grunt": "^0.4.5", + "grunt-eslint": "^16.0.0", + "grunt-karma": "^0.8.3", + "jasmine-core": "^2.3.4", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.3.5", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.9.10" + }, + "gitHead": "1c2aef1341f02f9c19c59e3979b817d2a7acb955", + "_id": "vue@0.12.8-csp", + "_shasum": "427682d45efd3e3103d93978b785c8b4b5be71d7", + "_from": ".", + "_npmVersion": "2.11.1", + "_nodeVersion": "2.3.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "427682d45efd3e3103d93978b785c8b4b5be71d7", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.8-csp.tgz" + }, + "directories": {} + }, + "0.12.9": { + "name": "vue", + "version": "0.12.9", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "grunt": "^0.4.5", + "grunt-eslint": "^16.0.0", + "grunt-karma": "^0.8.3", + "jasmine-core": "^2.3.4", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.3.5", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.9.10" + }, + "gitHead": "aca258e57602ff3466b9d3513c5bb7bf8fb08479", + "_id": "vue@0.12.9", + "_shasum": "1dec37396694a1b2e128ce075b857e30642ede58", + "_from": ".", + "_npmVersion": "2.13.0", + "_nodeVersion": "2.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "1dec37396694a1b2e128ce075b857e30642ede58", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.9.tgz" + }, + "directories": {} + }, + "0.12.9-csp": { + "name": "vue", + "version": "0.12.9-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "grunt": "^0.4.5", + "grunt-eslint": "^16.0.0", + "grunt-karma": "^0.8.3", + "jasmine-core": "^2.3.4", + "karma": "^0.12.31", + "karma-chrome-launcher": "^0.1.7", + "karma-commonjs": "^0.0.10", + "karma-coverage": "^0.2.7", + "karma-firefox-launcher": "^0.1.4", + "karma-jasmine": "^0.3.5", + "karma-phantomjs-launcher": "^0.1.4", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.10", + "semver": "^4.2.0", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.20", + "webpack": "^1.9.10" + }, + "gitHead": "d3375c28d67cb865c7974d045b8e10d5580ebf3c", + "_id": "vue@0.12.9-csp", + "_shasum": "b44f5660859ac5df457fe2c5c9fdc9658c3948f4", + "_from": ".", + "_npmVersion": "2.13.0", + "_nodeVersion": "2.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "b44f5660859ac5df457fe2c5c9fdc9658c3948f4", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.9-csp.tgz" + }, + "directories": {} + }, + "0.12.10": { + "name": "vue", + "version": "0.12.10", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "923be291dfcc65f8fd90f1832b17fd5d0fdea488", + "_id": "vue@0.12.10", + "_shasum": "e6a0e2131568622338da3535ed5b7b93632be3ab", + "_from": ".", + "_npmVersion": "2.13.3", + "_nodeVersion": "3.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "e6a0e2131568622338da3535ed5b7b93632be3ab", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.10.tgz" + }, + "directories": {} + }, + "0.12.10-csp": { + "name": "vue", + "version": "0.12.10-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "44f1029b598d8af59081d9fe39516c97c7066266", + "_id": "vue@0.12.10-csp", + "_shasum": "80e48b59945b9f8094fde3553bc9a6258a347bc5", + "_from": ".", + "_npmVersion": "2.13.3", + "_nodeVersion": "3.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "80e48b59945b9f8094fde3553bc9a6258a347bc5", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.10-csp.tgz" + }, + "directories": {} + }, + "0.12.11": { + "name": "vue", + "version": "0.12.11", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.1.0", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "04f3a4da16654604a50a8fa2f61f07985cb4fccc", + "_id": "vue@0.12.11", + "_shasum": "e7f84e3997b4456d5706106436903dd81070c1db", + "_from": ".", + "_npmVersion": "2.13.3", + "_nodeVersion": "3.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "e7f84e3997b4456d5706106436903dd81070c1db", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.11.tgz" + }, + "directories": {} + }, + "0.12.11-csp": { + "name": "vue", + "version": "0.12.11-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.1.0", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "notevil": "^1.0.0", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "732840226fdcf4e087f21ac47b5a3d671090eed8", + "_id": "vue@0.12.11-csp", + "_shasum": "acad59aa013bc7a8fd5a291dfdccefe6f4e65ce0", + "_from": ".", + "_npmVersion": "2.13.3", + "_nodeVersion": "3.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "acad59aa013bc7a8fd5a291dfdccefe6f4e65ce0", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.11-csp.tgz" + }, + "directories": {} + }, + "0.12.12": { + "name": "vue", + "version": "0.12.12", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.1.0", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "bf8e37188fc622d976ce5f2a48cdfc2c1c4e07d7", + "_id": "vue@0.12.12", + "_shasum": "2964c17154dd72de58d0f2c9962759ef7135a56f", + "_from": ".", + "_npmVersion": "2.13.3", + "_nodeVersion": "3.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "2964c17154dd72de58d0f2c9962759ef7135a56f", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.12.tgz" + }, + "directories": {} + }, + "0.12.12-csp": { + "name": "vue", + "version": "0.12.12-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.1.0", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "notevil": "^1.0.0", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "e1d877fe4f31d5559716369940742bb9dcae2f45", + "_id": "vue@0.12.12-csp", + "_shasum": "6d5c02160ea23fd597d7e08598330c36a732b29d", + "_from": ".", + "_npmVersion": "2.13.3", + "_nodeVersion": "3.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "6d5c02160ea23fd597d7e08598330c36a732b29d", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.12-csp.tgz" + }, + "directories": {} + }, + "1.0.0-alpha.1": { + "name": "vue", + "version": "1.0.0-alpha.1", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.1.0", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "1fabb471a44c9da9cdf9d12ff3e0540948878b5d", + "_id": "vue@1.0.0-alpha.1", + "_shasum": "3fa7172b997b76821a84c610cc3c11e2f411fb94", + "_from": ".", + "_npmVersion": "2.13.3", + "_nodeVersion": "3.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "3fa7172b997b76821a84c610cc3c11e2f411fb94", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0-alpha.1.tgz" + }, + "directories": {} + }, + "1.0.0-alpha.2": { + "name": "vue", + "version": "1.0.0-alpha.2", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.1.0", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "a635000a9883b2554b587e470e8152d09f8e789e", + "_id": "vue@1.0.0-alpha.2", + "_shasum": "1e87c501343f3ead57da4dc5157212f83d397fb4", + "_from": ".", + "_npmVersion": "2.13.3", + "_nodeVersion": "3.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "1e87c501343f3ead57da4dc5157212f83d397fb4", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0-alpha.2.tgz" + }, + "directories": {} + }, + "0.12.13": { + "name": "vue", + "version": "0.12.13", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "40e5bae10b3f0301c899a94d92bf78821948aa5e", + "_id": "vue@0.12.13", + "_shasum": "ac6b8047adb53454fa0c21335865b7949ff63477", + "_from": ".", + "_npmVersion": "2.13.3", + "_nodeVersion": "3.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "ac6b8047adb53454fa0c21335865b7949ff63477", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.13.tgz" + }, + "directories": {} + }, + "0.12.13-csp": { + "name": "vue", + "version": "0.12.13-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "notevil": "^1.0.0", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "14027a432209f2febc76e5f007711357c9601e49", + "_id": "vue@0.12.13-csp", + "_shasum": "479f6c581df57b1bfb8da07ca1ba92035ffaf89a", + "_from": ".", + "_npmVersion": "2.13.3", + "_nodeVersion": "3.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "479f6c581df57b1bfb8da07ca1ba92035ffaf89a", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.13-csp.tgz" + }, + "directories": {} + }, + "1.0.0-alpha.3": { + "name": "vue", + "version": "1.0.0-alpha.3", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "852a66acb10c4b98433b17c487cf6ea4eacc9922", + "_id": "vue@1.0.0-alpha.3", + "_shasum": "31081bd4587079fd134085a16489f3d27672c821", + "_from": ".", + "_npmVersion": "2.13.3", + "_nodeVersion": "3.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "31081bd4587079fd134085a16489f3d27672c821", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0-alpha.3.tgz" + }, + "directories": {} + }, + "0.12.14": { + "name": "vue", + "version": "0.12.14", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "600580761c84ee0ada01a0fadbde894a436e9155", + "_id": "vue@0.12.14", + "_shasum": "fdebb07621b722c346a74b5249714f5712c3ee75", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "fdebb07621b722c346a74b5249714f5712c3ee75", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.14.tgz" + }, + "directories": {} + }, + "0.12.14-csp": { + "name": "vue", + "version": "0.12.14-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "notevil": "^1.0.0", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "9df76d841589708bb524f781f943db9ba1f55ec8", + "_id": "vue@0.12.14-csp", + "_shasum": "4c3c31ab5c3b9b916bd16a628f3cd53bcf3955d7", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "4c3c31ab5c3b9b916bd16a628f3cd53bcf3955d7", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.14-csp.tgz" + }, + "directories": {} + }, + "1.0.0-alpha.4": { + "name": "vue", + "version": "1.0.0-alpha.4", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "a24079e2c098ddd4d2dc92db48e9017c5a000ecb", + "_id": "vue@1.0.0-alpha.4", + "_shasum": "6111d4d57f7934d785326e5c8fe8fe46e675203b", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "6111d4d57f7934d785326e5c8fe8fe46e675203b", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0-alpha.4.tgz" + }, + "directories": {} + }, + "0.12.15": { + "name": "vue", + "version": "0.12.15", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "431563fe9204c9c95d206499faa97c8b2ad3a3bb", + "_id": "vue@0.12.15", + "_shasum": "271bc83a4563ac44e78239288600a3eed4b558a2", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "271bc83a4563ac44e78239288600a3eed4b558a2", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.15.tgz" + }, + "directories": {} + }, + "0.12.15-csp": { + "name": "vue", + "version": "0.12.15-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "notevil": "^1.0.0", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "27632265d38f06a875930a82cb7e525d887682de", + "_id": "vue@0.12.15-csp", + "_shasum": "0273cc2dd1c6458ebbcb16cec3664ab7e215d2a2", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "0273cc2dd1c6458ebbcb16cec3664ab7e215d2a2", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.15-csp.tgz" + }, + "directories": {} + }, + "1.0.0-alpha.5": { + "name": "vue", + "version": "1.0.0-alpha.5", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "9648f018549b1f073ce6d1834ee6fbcb0b81815b", + "_id": "vue@1.0.0-alpha.5", + "_shasum": "bd237c3e7933e5fed81fa566f560df0ffca88701", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "bd237c3e7933e5fed81fa566f560df0ffca88701", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0-alpha.5.tgz" + }, + "directories": {} + }, + "1.0.0-beta.1": { + "name": "vue", + "version": "1.0.0-beta.1", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "2e904113d9e62e9cbff096bc6639e3b9c75c2fb4", + "_id": "vue@1.0.0-beta.1", + "_shasum": "7c0da3586cca7716ae421a4cc84ba0f1c5f4bd76", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "7c0da3586cca7716ae421a4cc84ba0f1c5f4bd76", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0-beta.1.tgz" + }, + "directories": {} + }, + "0.12.16": { + "name": "vue", + "version": "0.12.16", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "d53c40ab698942c891441d16bce1374982842d60", + "_id": "vue@0.12.16", + "_shasum": "cf8e48237d7547f1bc1a1ff0070980a377478989", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "cf8e48237d7547f1bc1a1ff0070980a377478989", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.16.tgz" + }, + "directories": {} + }, + "0.12.16-csp": { + "name": "vue", + "version": "0.12.16-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "notevil": "^1.0.0", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "b43cf1f257fa8c5cfa8d8e7528cb34c9969749de", + "_id": "vue@0.12.16-csp", + "_shasum": "5461cb34120cab7ecaad989f5b8b8d15e3685f4e", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "5461cb34120cab7ecaad989f5b8b8d15e3685f4e", + "tarball": "https://registry.npmjs.org/vue/-/vue-0.12.16-csp.tgz" + }, + "directories": {} + }, + "1.0.0-alpha.6": { + "name": "vue", + "version": "1.0.0-alpha.6", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "2da36175ef24b0e5904c5e78c93ac2ed3b3ca08c", + "_id": "vue@1.0.0-alpha.6", + "_shasum": "74fb5345a965237d6ec8409ccb1eeeb4449e481b", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "74fb5345a965237d6ec8409ccb1eeeb4449e481b", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0-alpha.6.tgz" + }, + "directories": {} + }, + "1.0.0-beta.2": { + "name": "vue", + "version": "1.0.0-beta.2", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "b7bc6e663abf4a7061061887c60670e51d44cd5a", + "_id": "vue@1.0.0-beta.2", + "_shasum": "d7f5a1c9473f6a0b6e0a477bda2c01b7428a3e42", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "d7f5a1c9473f6a0b6e0a477bda2c01b7428a3e42", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0-beta.2.tgz" + }, + "directories": {} + }, + "1.0.0-alpha.7": { + "name": "vue", + "version": "1.0.0-alpha.7", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "6d64b363dae7ad76a480f0ad9b7109ebaea6b7cf", + "_id": "vue@1.0.0-alpha.7", + "_shasum": "8876b3feaece05e0579cfa571e2b37bffcbab9fb", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "8876b3feaece05e0579cfa571e2b37bffcbab9fb", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0-alpha.7.tgz" + }, + "directories": {} + }, + "1.0.0-beta.3": { + "name": "vue", + "version": "1.0.0-beta.3", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "3d8c1023536fb3b828af233f9bcb9064758f4451", + "_id": "vue@1.0.0-beta.3", + "_shasum": "314d96c528b8cf4ce67851503b0071bee61369a7", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "314d96c528b8cf4ce67851503b0071bee61369a7", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0-beta.3.tgz" + }, + "directories": {} + }, + "1.0.0-alpha.8": { + "name": "vue", + "version": "1.0.0-alpha.8", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "30196eee162ebc8887e891e876b2fe2f2801f01f", + "_id": "vue@1.0.0-alpha.8", + "_shasum": "293521d44a7265fac0843eaf209d2b43a821e41f", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "293521d44a7265fac0843eaf209d2b43a821e41f", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0-alpha.8.tgz" + }, + "directories": {} + }, + "1.0.0-beta.4": { + "name": "vue", + "version": "1.0.0-beta.4", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "c776ad48afdac56af335223553b92687ed2a1e0c", + "_id": "vue@1.0.0-beta.4", + "_shasum": "5c492c1877d13ad96450f978906aa87c34a2509b", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "5c492c1877d13ad96450f978906aa87c34a2509b", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0-beta.4.tgz" + }, + "directories": {} + }, + "1.0.0-rc.1": { + "name": "vue", + "version": "1.0.0-rc.1", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/yyx990803/vue.git" + }, + "bugs": { + "url": "https://github.com/yyx990803/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "58d022899a4dc4598bd4b58b56c6d22d4564144e", + "_id": "vue@1.0.0-rc.1", + "_shasum": "bd5ab314dfe3a42ae3d102c2a439ff40a4ee84c5", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "bd5ab314dfe3a42ae3d102c2a439ff40a4ee84c5", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0-rc.1.tgz" + }, + "directories": {} + }, + "1.0.0-rc.2-migration": { + "name": "vue", + "version": "1.0.0-rc.2-migration", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "b1b70fa909c5db06bf625e3d69ccbd193654b36d", + "_id": "vue@1.0.0-rc.2-migration", + "_shasum": "4afcad21145df9d6786fdf5189bb817fbc7f5a95", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "4afcad21145df9d6786fdf5189bb817fbc7f5a95", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0-rc.2-migration.tgz" + }, + "directories": {} + }, + "1.0.0-rc.2": { + "name": "vue", + "version": "1.0.0-rc.2", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "50cf2ab528e2c272eb852f96ebb00f220a6371ba", + "_id": "vue@1.0.0-rc.2", + "_shasum": "85fa26706cb92cef3b85163b5f79d8b6b9a53d15", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "85fa26706cb92cef3b85163b5f79d8b6b9a53d15", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0-rc.2.tgz" + }, + "directories": {} + }, + "1.0.0-csp": { + "name": "vue", + "version": "1.0.0-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "notevil": "^1.0.0", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "e6b2a4a9128c56d328ffc2555157df9648d74f7d", + "_id": "vue@1.0.0-csp", + "_shasum": "fbb448a1a9e51a2f6844cdb59eb30cbbe2ca78c9", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "fbb448a1a9e51a2f6844cdb59eb30cbbe2ca78c9", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0-csp.tgz" + }, + "directories": {} + }, + "1.0.0-migration": { + "name": "vue", + "version": "1.0.0-migration", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.2.14", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "783a619f0c12862aa3022fd7d9b509c235dba34c", + "_id": "vue@1.0.0-migration", + "_shasum": "1042d3004f6721e561f3e4adbcf2dfe4cde23cd4", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "1042d3004f6721e561f3e4adbcf2dfe4cde23cd4", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0-migration.tgz" + }, + "directories": {} + }, + "1.0.0": { + "name": "vue", + "version": "1.0.0", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "d8e9e2ea16153aacdc99a6cc36f7d121a5ab484c", + "_id": "vue@1.0.0", + "_shasum": "9672e208dd776a3eaf8f4164c6c0c2d496c442f1", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "9672e208dd776a3eaf8f4164c6c0c2d496c442f1", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.0.tgz" + }, + "directories": {} + }, + "1.0.1": { + "name": "vue", + "version": "1.0.1", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "b07cbb99e3af6dbe7149b5aa3d28ce467b5b8c23", + "_id": "vue@1.0.1", + "_shasum": "ef198f2d9055cac28bedf7ad6b81452492daee70", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "ef198f2d9055cac28bedf7ad6b81452492daee70", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.1.tgz" + }, + "directories": {} + }, + "1.0.2": { + "name": "vue", + "version": "1.0.2", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "d8605f92833dafc1195f68b20755a376a8291630", + "_id": "vue@1.0.2", + "_shasum": "577f2b55001dd0d8f99de867cbabb4ab579a226f", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "577f2b55001dd0d8f99de867cbabb4ab579a226f", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.2.tgz" + }, + "directories": {} + }, + "1.0.3": { + "name": "vue", + "version": "1.0.3", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interative interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "450424bd086342f9da87a2878857e9c9daa554b7", + "_id": "vue@1.0.3", + "_shasum": "72554202d6aedb302d0a3bcf66a2d477ff521574", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "72554202d6aedb302d0a3bcf66a2d477ff521574", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.3.tgz" + }, + "directories": {} + }, + "1.0.4": { + "name": "vue", + "version": "1.0.4", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "79f289a2f22871a667b695687e35e22ef0fe2002", + "_id": "vue@1.0.4", + "_shasum": "63edbea66334a19dcee96289e1193d36bfe84a2a", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "63edbea66334a19dcee96289e1193d36bfe84a2a", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.4.tgz" + }, + "directories": {} + }, + "1.0.5": { + "name": "vue", + "version": "1.0.5", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "d8c325d587284e6225933a16ba4cd44e6dcf2bc1", + "_id": "vue@1.0.5", + "_shasum": "77d097c430232844fe7b3971455bf48512724d27", + "_from": ".", + "_npmVersion": "2.14.7", + "_nodeVersion": "4.2.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "77d097c430232844fe7b3971455bf48512724d27", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.5.tgz" + }, + "deprecated": "the dist file was built incorrectly.", + "directories": {} + }, + "1.0.6": { + "name": "vue", + "version": "1.0.6", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "d88acc1710f5a94b472b40fa173b5fb0582f3f10", + "_id": "vue@1.0.6", + "_shasum": "33d97020b756eb3d2bf164f7533b5e308d7213ec", + "_from": ".", + "_npmVersion": "2.14.7", + "_nodeVersion": "4.2.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "33d97020b756eb3d2bf164f7533b5e308d7213ec", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.6.tgz" + }, + "directories": {} + }, + "1.0.7": { + "name": "vue", + "version": "1.0.7", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "6ce6e0c9955667fb5f150823d0c97f3ffbb9d484", + "_id": "vue@1.0.7", + "_shasum": "414aeef2428e8602cdc7492e391550c33374cf30", + "_from": ".", + "_npmVersion": "2.14.7", + "_nodeVersion": "4.2.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "414aeef2428e8602cdc7492e391550c33374cf30", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.7.tgz" + }, + "directories": {} + }, + "1.0.8": { + "name": "vue", + "version": "1.0.8", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "src/vue.js", + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "grunt ci", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & webpack --watch --config build/webpack.test.config.js" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "grunt": "^0.4.5", + "grunt-eslint": "^17.1.0", + "grunt-karma": "^0.12.0", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-commonjs": "^0.0.13", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "phantomjs": "^1.9.17", + "semver": "^5.0.1", + "shell-task": "^1.0.0", + "uglify-js": "^2.4.24", + "webpack": "^1.11.0" + }, + "gitHead": "add8cc58a360e0e545db31048ad06e0e943b284b", + "_id": "vue@1.0.8", + "_shasum": "f00bddff3f08edd193c98d19166eaaece6b38bc4", + "_from": ".", + "_npmVersion": "2.14.7", + "_nodeVersion": "4.2.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "f00bddff3f08edd193c98d19166eaaece6b38bc4", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.8.tgz" + }, + "directories": {} + }, + "1.0.9": { + "name": "vue", + "version": "1.0.9", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.0.0", + "babel-loader": "^5.0.0", + "babel-runtime": "^6.1.18", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.21.0", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "689def5858719b6ac77cbbc7d386ed1fdfa75df4", + "_id": "vue@1.0.9", + "_shasum": "a2a977d0e014bca89007e324d16c696839213955", + "_from": ".", + "_npmVersion": "2.14.7", + "_nodeVersion": "4.2.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "a2a977d0e014bca89007e324d16c696839213955", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.9.tgz" + }, + "directories": {} + }, + "1.0.10": { + "name": "vue", + "version": "1.0.10", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.0.0", + "babel-loader": "^5.0.0", + "babel-runtime": "^6.1.18", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.21.0", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "b7e83e618aace57726c1053b20bb8e6ae3a2ad52", + "_id": "vue@1.0.10", + "_shasum": "4a82dbe25ec1db12b1efc207869ece7b15bb85e0", + "_from": ".", + "_npmVersion": "2.14.7", + "_nodeVersion": "4.2.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "4a82dbe25ec1db12b1efc207869ece7b15bb85e0", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.10.tgz" + }, + "directories": {} + }, + "1.0.10-csp": { + "name": "vue", + "version": "1.0.10-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.0.0", + "babel-loader": "^5.0.0", + "babel-runtime": "^6.1.18", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.21.0", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-commonjs": "^1.4.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "ca0d8217f1f9550ce2746a96e8995ab0f3dc0b7a", + "_id": "vue@1.0.10-csp", + "_shasum": "2f3291fef280e2763601d29f59b5d7d240fba84c", + "_from": ".", + "_npmVersion": "2.14.7", + "_nodeVersion": "4.2.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "2f3291fef280e2763601d29f59b5d7d240fba84c", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.10-csp.tgz" + }, + "directories": {} + }, + "1.0.11": { + "name": "vue", + "version": "1.0.11", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.21.0", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "9f514b6a1edbf2741b308c59c407f25c978076af", + "_id": "vue@1.0.11", + "_shasum": "60c873d8869dc2c952506870848b86043588a00b", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.1.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "60c873d8869dc2c952506870848b86043588a00b", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.11.tgz" + }, + "directories": {} + }, + "1.0.11-csp": { + "name": "vue", + "version": "1.0.11-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.21.0", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-commonjs": "^1.4.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "4b41eb2d0ed7dc1c38a83faad203f03c6454c205", + "_id": "vue@1.0.11-csp", + "_shasum": "714edc5b9f73bc1a4dfe759ddae8209c85916227", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.1.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "714edc5b9f73bc1a4dfe759ddae8209c85916227", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.11-csp.tgz" + }, + "directories": {} + }, + "1.0.12": { + "name": "vue", + "version": "1.0.12", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.21.0", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "c312c886fdca573b3f34db447f09c8a50c581a98", + "_id": "vue@1.0.12", + "_shasum": "e5e55e97620ece6c3cef7b99459a2118a221fc8c", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.1.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "e5e55e97620ece6c3cef7b99459a2118a221fc8c", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.12.tgz" + }, + "directories": {} + }, + "1.0.12-csp": { + "name": "vue", + "version": "1.0.12-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.21.0", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-commonjs": "^1.4.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "91218a16cd096fe4c7d9962ea4121011bde1a7b2", + "_id": "vue@1.0.12-csp", + "_shasum": "a034740df8d58689f80d0f2033b34243a886b58a", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.1.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "a034740df8d58689f80d0f2033b34243a886b58a", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.12-csp.tgz" + }, + "deprecated": "incorrect build, please use 1.0.12-csp-1 instead", + "directories": {} + }, + "1.0.12-csp-1": { + "name": "vue", + "version": "1.0.12-csp-1", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.21.0", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-commonjs": "^1.4.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "91218a16cd096fe4c7d9962ea4121011bde1a7b2", + "_id": "vue@1.0.12-csp-1", + "_shasum": "2eda388ca56e6d55a2f6f27875195c3d0306a927", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.1.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "2eda388ca56e6d55a2f6f27875195c3d0306a927", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.12-csp-1.tgz" + }, + "directories": {} + }, + "1.0.13": { + "name": "vue", + "version": "1.0.13", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.21.0", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "da9e036b07620c2b45493cd709b30aa8065b2de4", + "_id": "vue@1.0.13", + "_shasum": "1fb4cc7d910b557226b74eefc8a42b705e922dbe", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.1.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "1fb4cc7d910b557226b74eefc8a42b705e922dbe", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.13.tgz" + }, + "directories": {} + }, + "1.0.13-csp": { + "name": "vue", + "version": "1.0.13-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.21.0", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-commonjs": "^1.4.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "00c964c5ecf2754bf586cb0ba5bec8011acfc3bf", + "_id": "vue@1.0.13-csp", + "_shasum": "3af3b12b33448f4bcc025cdc38cae043c780e712", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.1.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "3af3b12b33448f4bcc025cdc38cae043c780e712", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.13-csp.tgz" + }, + "directories": {} + }, + "1.0.14": { + "name": "vue", + "version": "1.0.14", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.21.0", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "18eab68a690342744f5ddd2b72b22d9b19b15209", + "_id": "vue@1.0.14", + "_shasum": "ba182760325881e6e16a1f1a3a0dd07fa2e6d3d7", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.1.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "ba182760325881e6e16a1f1a3a0dd07fa2e6d3d7", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.14.tgz" + }, + "directories": {} + }, + "1.0.14-csp": { + "name": "vue", + "version": "1.0.14-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.21.0", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-commonjs": "^1.4.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "eae7270384c4a6f61ba60edd32617ad684fcad73", + "_id": "vue@1.0.14-csp", + "_shasum": "e67245e1bca561d7ee3e3e29b20694894c3b210e", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.1.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "e67245e1bca561d7ee3e3e29b20694894c3b210e", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.14-csp.tgz" + }, + "directories": {} + }, + "1.0.15": { + "name": "vue", + "version": "1.0.15", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.21.0", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "e9fcaa9dc9ac31bf665cdaa2b7af3c73777ade34", + "_id": "vue@1.0.15", + "_shasum": "e532b837c100d911170001bf0bcb2490e33bae82", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.1.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "e532b837c100d911170001bf0bcb2490e33bae82", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.15.tgz" + }, + "directories": {} + }, + "1.0.15-csp": { + "name": "vue", + "version": "1.0.15-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.21.0", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-commonjs": "^1.4.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "aa0315655eef42f1a7f18c4e057962febfa50fd9", + "_id": "vue@1.0.15-csp", + "_shasum": "7d51d4a95d2895e43ddcda79030fc9296ceb4100", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.1.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "7d51d4a95d2895e43ddcda79030fc9296ceb4100", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.15-csp.tgz" + }, + "directories": {} + }, + "1.0.16": { + "name": "vue", + "version": "1.0.16", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.21.0", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "5f897f0f962aadca29baf99098c632f2fe8ea186", + "_id": "vue@1.0.16", + "_shasum": "fdda77e7214b3c69e0d5b1666512e5cf42da5e4f", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.5.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "fdda77e7214b3c69e0d5b1666512e5cf42da5e4f", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.16.tgz" + }, + "directories": {} + }, + "1.0.16-csp": { + "name": "vue", + "version": "1.0.16-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^1.3.1", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "d660fd8de105fbbfbfb594bdb11ee4ca44ddbdd8", + "_id": "vue@1.0.16-csp", + "_shasum": "d0737fa3e67356260278c8331b7f1318c339af81", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.5.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "d0737fa3e67356260278c8331b7f1318c339af81", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.16-csp.tgz" + }, + "directories": {} + }, + "1.0.17": { + "name": "vue", + "version": "1.0.17", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^2.1.0", + "eslint-config-standard": "^5.1.0", + "eslint-plugin-promise": "^1.0.8", + "eslint-plugin-standard": "^1.3.2", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "9e64586fda793e1197edf7450eeb3f9b28f67461", + "_id": "vue@1.0.17", + "_shasum": "d205a56230eb677b7950f668b05341d6c9ab236a", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.5.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "d205a56230eb677b7950f668b05341d6c9ab236a", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.17.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-9-west.internal.npmjs.com", + "tmp": "tmp/vue-1.0.17.tgz_1456708644250_0.9540390649344772" + }, + "directories": {} + }, + "1.0.17-csp": { + "name": "vue", + "version": "1.0.17-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta3", + "codecov.io": "^0.1.2", + "eslint": "^2.1.0", + "eslint-config-standard": "^5.1.0", + "eslint-plugin-promise": "^1.0.8", + "eslint-plugin-standard": "^1.3.2", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.3.4", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "7b54a7f761d30a8199f6526a0b7abebf146115ee", + "_id": "vue@1.0.17-csp", + "_shasum": "805530361dba186a485926933547f7e9a07449e3", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.5.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "805530361dba186a485926933547f7e9a07449e3", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.17-csp.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-5-east.internal.npmjs.com", + "tmp": "tmp/vue-1.0.17-csp.tgz_1456712671644_0.032794815488159657" + }, + "directories": {} + }, + "1.0.18": { + "name": "vue", + "version": "1.0.18", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.1.0", + "eslint-config-standard": "^5.1.0", + "eslint-plugin-promise": "^1.0.8", + "eslint-plugin-standard": "^1.3.2", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "86253b0e56a63376cd0470f6d7a8ab1c8e60f75a", + "_id": "vue@1.0.18", + "_shasum": "b4a41729ccedb077de80a34dffcfc8879b16efa4", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.5.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "b4a41729ccedb077de80a34dffcfc8879b16efa4", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.18.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-13-west.internal.npmjs.com", + "tmp": "tmp/vue-1.0.18.tgz_1458261467526_0.2369015347212553" + }, + "directories": {} + }, + "1.0.18-csp": { + "name": "vue", + "version": "1.0.18-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.1.0", + "eslint-config-standard": "^5.1.0", + "eslint-plugin-promise": "^1.0.8", + "eslint-plugin-standard": "^1.3.2", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "b9601a08a767542024418f92caf5a4f9d0af4387", + "_id": "vue@1.0.18-csp", + "_shasum": "ec1f9781d2d63cd3fa8a037d3c7113e6933c4f4a", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.5.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "ec1f9781d2d63cd3fa8a037d3c7113e6933c4f4a", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.18-csp.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-13-west.internal.npmjs.com", + "tmp": "tmp/vue-1.0.18-csp.tgz_1458262453954_0.978116855956614" + }, + "directories": {} + }, + "1.0.19": { + "name": "vue", + "version": "1.0.19", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.1.0", + "eslint-config-standard": "^5.1.0", + "eslint-plugin-promise": "^1.0.8", + "eslint-plugin-standard": "^1.3.2", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "355fbe14dcf539d99c6ce9fc07b1b2999f7dcee3", + "_id": "vue@1.0.19", + "_shasum": "ba4a7f7cbf959d10e91bd4cc771f0ad3e7d05fa6", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.5.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "ba4a7f7cbf959d10e91bd4cc771f0ad3e7d05fa6", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.19.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-1.0.19.tgz_1458890363030_0.8627496787812561" + }, + "directories": {} + }, + "1.0.19-csp": { + "name": "vue", + "version": "1.0.19-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.1.0", + "eslint-config-standard": "^5.1.0", + "eslint-plugin-promise": "^1.0.8", + "eslint-plugin-standard": "^1.3.2", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "d76e29999b983b137472743661528d7a800c6ff6", + "_id": "vue@1.0.19-csp", + "_shasum": "c779efaf8d7104436c7dcd6c0ddec659147721b2", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.5.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "c779efaf8d7104436c7dcd6c0ddec659147721b2", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.19-csp.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-13-west.internal.npmjs.com", + "tmp": "tmp/vue-1.0.19-csp.tgz_1458890648998_0.373419905314222" + }, + "directories": {} + }, + "1.0.20": { + "name": "vue", + "version": "1.0.20", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.1.0", + "eslint-config-standard": "^5.1.0", + "eslint-plugin-promise": "^1.0.8", + "eslint-plugin-standard": "^1.3.2", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "b12e21cb36522f8defab82de3111502a8b97083f", + "_id": "vue@1.0.20", + "_shasum": "8426deb6a6ba8aed998b816701e45ac4751b8e4d", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.5.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "8426deb6a6ba8aed998b816701e45ac4751b8e4d", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.20.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-1.0.20.tgz_1459027211830_0.0051624104380607605" + }, + "directories": {} + }, + "1.0.20-csp": { + "name": "vue", + "version": "1.0.20-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.1.0", + "eslint-config-standard": "^5.1.0", + "eslint-plugin-promise": "^1.0.8", + "eslint-plugin-standard": "^1.3.2", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "c4194caefa86a2df2abb8ccc8915308fee99d96b", + "_id": "vue@1.0.20-csp", + "_shasum": "bcc7b1bf675f60229df78be0b60db71ae90ce731", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.5.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "bcc7b1bf675f60229df78be0b60db71ae90ce731", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.20-csp.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-1.0.20-csp.tgz_1459027491780_0.8101142421364784" + }, + "directories": {} + }, + "1.0.21": { + "name": "vue", + "version": "1.0.21", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh", + "release-csp": "bash build/release-csp.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.1.0", + "eslint-config-standard": "^5.1.0", + "eslint-plugin-promise": "^1.0.8", + "eslint-plugin-standard": "^1.3.2", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "9fa430324325c2b5910c8c5c01abfdc116a41b56", + "_id": "vue@1.0.21", + "_shasum": "81657707db75e7ce744f1e5d9b1c579a93c759cd", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.5.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "81657707db75e7ce744f1e5d9b1c579a93c759cd", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.21.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-1.0.21.tgz_1460066889574_0.2730389488860965" + }, + "directories": {} + }, + "1.0.21-csp": { + "name": "vue", + "version": "1.0.21-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh", + "release-csp": "bash build/release-csp.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.1.0", + "eslint-config-standard": "^5.1.0", + "eslint-plugin-promise": "^1.0.8", + "eslint-plugin-standard": "^1.3.2", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "58674341524134c03ef9e451612e9b8007ff7d96", + "_id": "vue@1.0.21-csp", + "_shasum": "66d75d6a865731bb781ce6f8cbd7e9a7e0411fe2", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.5.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "66d75d6a865731bb781ce6f8cbd7e9a7e0411fe2", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.21-csp.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-1.0.21-csp.tgz_1460067072063_0.4909919537603855" + }, + "directories": {} + }, + "1.0.22": { + "name": "vue", + "version": "1.0.22", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh", + "release-csp": "bash build/release-csp.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.1.0", + "eslint-config-vue": "^1.0.0", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "9a0a539fb4c034b2d51414875ecc92b8d3e89a4b", + "_id": "vue@1.0.22", + "_shasum": "826c2e224b8902bbaf1dc04d68bbc5001a74ca68", + "_from": ".", + "_npmVersion": "3.8.6", + "_nodeVersion": "6.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "826c2e224b8902bbaf1dc04d68bbc5001a74ca68", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.22.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-1.0.22.tgz_1462658361341_0.13756674039177597" + }, + "directories": {} + }, + "1.0.22-csp": { + "name": "vue", + "version": "1.0.22-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh", + "release-csp": "bash build/release-csp.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.1.0", + "eslint-config-vue": "^1.0.0", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "f2bac60c1de7b252152971c2c6c81e80c8a4de78", + "_id": "vue@1.0.22-csp", + "_shasum": "bb1e0d541d5aaa7d5d63a1c10b30c05f4bb1ce9a", + "_from": ".", + "_npmVersion": "3.8.6", + "_nodeVersion": "6.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "bb1e0d541d5aaa7d5d63a1c10b30c05f4bb1ce9a", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.22-csp.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-1.0.22-csp.tgz_1462658452773_0.5138986194506288" + }, + "directories": {} + }, + "1.0.23": { + "name": "vue", + "version": "1.0.23", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh", + "release-csp": "bash build/release-csp.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.9.0", + "eslint-config-vue": "^1.0.0", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "cbcf8eb9e90c4f636ac288e82930bffbcdc69553", + "_id": "vue@1.0.23", + "_shasum": "70bffb41d6740828062ba2144f8e46d20348e127", + "_from": ".", + "_npmVersion": "3.8.6", + "_nodeVersion": "6.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "70bffb41d6740828062ba2144f8e46d20348e127", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.23.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-1.0.23.tgz_1462983655509_0.054572020657360554" + }, + "directories": {} + }, + "1.0.23-csp": { + "name": "vue", + "version": "1.0.23-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh", + "release-csp": "bash build/release-csp.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.9.0", + "eslint-config-vue": "^1.0.0", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "e61005f44e09199bc51c3df3eac7bd7a064d1ede", + "_id": "vue@1.0.23-csp", + "_shasum": "74b566e28f4ba54dc097b8a8dc014ccf04d5b86f", + "_from": ".", + "_npmVersion": "3.8.6", + "_nodeVersion": "6.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "74b566e28f4ba54dc097b8a8dc014ccf04d5b86f", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.23-csp.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-1.0.23-csp.tgz_1462983747828_0.3989598988555372" + }, + "directories": {} + }, + "1.0.24": { + "name": "vue", + "version": "1.0.24", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh", + "release-csp": "bash build/release-csp.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.9.0", + "eslint-config-vue": "^1.0.0", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "ea0de41dafed75a7c1d124d281daddc800b61e59", + "_id": "vue@1.0.24", + "_shasum": "c8eecb25542f3bc6f0ae113288a4eef924de6b14", + "_from": ".", + "_npmVersion": "3.8.6", + "_nodeVersion": "6.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "c8eecb25542f3bc6f0ae113288a4eef924de6b14", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.24.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-1.0.24.tgz_1463003854279_0.24861793918535113" + }, + "directories": {} + }, + "1.0.24-csp": { + "name": "vue", + "version": "1.0.24-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src/** test/e2e/** test/unit/specs/** build/**.js", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh", + "release-csp": "bash build/release-csp.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.9.0", + "eslint-config-vue": "^1.0.0", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "ccfb341ffda1279a41239be0b6c54813555cb089", + "_id": "vue@1.0.24-csp", + "_shasum": "2b60f6b63b2849e68951c4266e8e2bd920dfd602", + "_from": ".", + "_npmVersion": "3.8.6", + "_nodeVersion": "6.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "2b60f6b63b2849e68951c4266e8e2bd920dfd602", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.24-csp.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-1.0.24-csp.tgz_1463003993293_0.585835512727499" + }, + "directories": {} + }, + "2.0.0-alpha.1": { + "name": "vue", + "version": "2.0.0-alpha.1", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "test": "npm run lint && flow check && npm run test:cover && npm run test:unit && npm run test:e2e && npm run test:ssr", + "ci": "npm run lint && flow check && npm run test:cover && npm run test:ssr", + "build": "NODE_ENV=production node build/build.js", + "lint": "eslint src build test", + "flow": "flow check", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "build:ssr": "npm run build -- vue.common.js,vue-template-compiler,vue-server-renderer", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.26.x", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^0.13.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-spec-reporter": "^0.0.26", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.26.3", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "source-map": "^0.5.6", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "32ba31cee3757d2251b7d252585fffe563524a21", + "_id": "vue@2.0.0-alpha.1", + "_shasum": "12effd01451e3ac316931023316c53788c0d76f0", + "_from": ".", + "_npmVersion": "3.8.6", + "_nodeVersion": "6.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "12effd01451e3ac316931023316c53788c0d76f0", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-alpha.1.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-alpha.1.tgz_1465601667826_0.6901542220730335" + }, + "directories": {} + }, + "2.0.0-alpha.2": { + "name": "vue", + "version": "2.0.0-alpha.2", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-template-compiler,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.26.x", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^0.13.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.26.3", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "source-map": "^0.5.6", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "efa3fc746aa01e5cafc4164dbc005eb476369399", + "_id": "vue@2.0.0-alpha.2", + "_shasum": "26537043b44512e3a11497503be6845bb2c0da0c", + "_from": ".", + "_npmVersion": "3.8.6", + "_nodeVersion": "6.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "26537043b44512e3a11497503be6845bb2c0da0c", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-alpha.2.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-alpha.2.tgz_1465861012005_0.09093371103517711" + }, + "directories": {} + }, + "2.0.0-alpha.3": { + "name": "vue", + "version": "2.0.0-alpha.3", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-template-compiler,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.26.x", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^0.13.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.26.3", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "source-map": "^0.5.6", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "5c3e208cf8a94a9c7e04e3d33b7ad7db6e7377e5", + "_id": "vue@2.0.0-alpha.3", + "_shasum": "0c2aaf1bf7ed52ab28ab1e0aea4c255eb75acea5", + "_from": ".", + "_npmVersion": "3.8.6", + "_nodeVersion": "6.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "0c2aaf1bf7ed52ab28ab1e0aea4c255eb75acea5", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-alpha.3.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-alpha.3.tgz_1466014962348_0.5024105680640787" + }, + "directories": {} + }, + "2.0.0-alpha.4": { + "name": "vue", + "version": "2.0.0-alpha.4", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-template-compiler,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.26.x", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^0.13.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.26.3", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "source-map": "^0.5.6", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "7c90dc9be32a81b7ec5b6728007a8b8f3f101a76", + "_id": "vue@2.0.0-alpha.4", + "_shasum": "de4a5c15fb86bf907e9837b4dc7c053ef87487b0", + "_from": ".", + "_npmVersion": "3.8.6", + "_nodeVersion": "6.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "de4a5c15fb86bf907e9837b4dc7c053ef87487b0", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-alpha.4.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-alpha.4.tgz_1466096453127_0.4196715080179274" + }, + "directories": {} + }, + "1.0.25": { + "name": "vue", + "version": "1.0.25", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.min.js.map", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src test/e2e test/unit/specs build", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh", + "release-csp": "bash build/release-csp.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.9.0", + "eslint-config-vue": "^1.0.0", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "e9872271fa9b2a8bec1c42e65a2bb5c4df808eb2", + "_id": "vue@1.0.25", + "_shasum": "a0214b916424c1dbe0e3e46b4f9df9824c9e816a", + "_from": ".", + "_npmVersion": "3.8.6", + "_nodeVersion": "6.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "a0214b916424c1dbe0e3e46b4f9df9824c9e816a", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.25.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-1.0.25.tgz_1466116167824_0.4927524533122778" + }, + "directories": {} + }, + "1.0.25-csp": { + "name": "vue", + "version": "1.0.25-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.min.js.map", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src test/e2e test/unit/specs build", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh", + "release-csp": "bash build/release-csp.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.9.0", + "eslint-config-vue": "^1.0.0", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "18062272932752ee325a8f09409a4d6187e710db", + "_id": "vue@1.0.25-csp", + "_shasum": "a77fcd9e87aaa0f507a0c63b928f9fa96d35250c", + "_from": ".", + "_npmVersion": "3.8.6", + "_nodeVersion": "6.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "a77fcd9e87aaa0f507a0c63b928f9fa96d35250c", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.25-csp.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-1.0.25-csp.tgz_1466116657623_0.751262983540073" + }, + "directories": {} + }, + "2.0.0-alpha.5": { + "name": "vue", + "version": "2.0.0-alpha.5", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-template-compiler,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.26.x", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^0.13.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.26.3", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "source-map": "^0.5.6", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "59230fee0edf3b755ea6989e255c248bda2be75d", + "_id": "vue@2.0.0-alpha.5", + "_shasum": "a773285d166b87501838193c56e0b3b581f5c887", + "_from": ".", + "_npmVersion": "3.8.6", + "_nodeVersion": "6.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "a773285d166b87501838193c56e0b3b581f5c887", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-alpha.5.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-alpha.5.tgz_1466187763942_0.5654465507250279" + }, + "directories": {} + }, + "2.0.0-alpha.6": { + "name": "vue", + "version": "2.0.0-alpha.6", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-template-compiler,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.27.0", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^0.13.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.26.3", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "dcd82c2429ad5bceddd2e8a8e692a56ff3f12619", + "_id": "vue@2.0.0-alpha.6", + "_shasum": "9b36b80e08e080545121f109f3f744743df08206", + "_from": ".", + "_npmVersion": "3.8.6", + "_nodeVersion": "6.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "9b36b80e08e080545121f109f3f744743df08206", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-alpha.6.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-alpha.6.tgz_1466624005207_0.6892203430179507" + }, + "directories": {} + }, + "2.0.0-alpha.7": { + "name": "vue", + "version": "2.0.0-alpha.7", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-template-compiler,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.27.0", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^1.1.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "lru-cache": "^4.0.1", + "nightwatch": "^0.9.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.33.0", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "a3e26ac9417d38a43171e9fe905d3d065664b1fb", + "_id": "vue@2.0.0-alpha.7", + "_shasum": "3a1dc8a126e9b473181d46ffce9f067de5a6ac8c", + "_from": ".", + "_npmVersion": "3.9.5", + "_nodeVersion": "6.2.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "3a1dc8a126e9b473181d46ffce9f067de5a6ac8c", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-alpha.7.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-alpha.7.tgz_1467080658127_0.4492913503199816" + }, + "directories": {} + }, + "2.0.0-alpha.8": { + "name": "vue", + "version": "2.0.0-alpha.8", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-template-compiler,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.27.0", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^1.1.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "lru-cache": "^4.0.1", + "nightwatch": "^0.9.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.33.0", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "8592151110f3031df7a06c37281ce4216963b9c8", + "_id": "vue@2.0.0-alpha.8", + "_shasum": "6ad65a2caa8475fe983869ea066b06f17b04bc63", + "_from": ".", + "_npmVersion": "3.9.5", + "_nodeVersion": "6.2.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "6ad65a2caa8475fe983869ea066b06f17b04bc63", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-alpha.8.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-alpha.8.tgz_1467104537096_0.30240438994951546" + }, + "directories": {} + }, + "1.0.26": { + "name": "vue", + "version": "1.0.26", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.min.js.map", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src test/e2e test/unit/specs build", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh", + "release-csp": "bash build/release-csp.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.9.0", + "eslint-config-vue": "^1.0.0", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "e7932f80eeacf6f7d392bf520e98c4790db9d5c1", + "_id": "vue@1.0.26", + "_shasum": "89a3a81a15be8b364820dd601600744db6b1aafc", + "_from": ".", + "_npmVersion": "3.9.5", + "_nodeVersion": "6.2.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "89a3a81a15be8b364820dd601600744db6b1aafc", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.26.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-1.0.26.tgz_1467147451300_0.9240092227701098" + }, + "directories": {} + }, + "1.0.26-csp": { + "name": "vue", + "version": "1.0.26-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.min.js.map", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src test/e2e test/unit/specs build", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh", + "release-csp": "bash build/release-csp.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.0-beta5", + "codecov.io": "^0.1.2", + "eslint": "^2.9.0", + "eslint-config-vue": "^1.0.0", + "istanbul-instrumenter-loader": "^0.1.3", + "jasmine-core": "^2.4.1", + "karma": "^0.13.8", + "karma-chrome-launcher": "^0.2.0", + "karma-coverage": "^0.5.0", + "karma-firefox-launcher": "^0.1.6", + "karma-ie-launcher": "^0.2.0", + "karma-jasmine": "^0.3.6", + "karma-phantomjs-launcher": "^0.2.1", + "karma-safari-launcher": "^0.1.1", + "karma-sauce-launcher": "^0.3.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.25.1", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "fda77a54ece7dcf14633d4e349c975396f37af32", + "_id": "vue@1.0.26-csp", + "_shasum": "98e20abf3becab9793b6c3593edde3b8d694f0ee", + "_from": ".", + "_npmVersion": "3.9.5", + "_nodeVersion": "6.2.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "98e20abf3becab9793b6c3593edde3b8d694f0ee", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.26-csp.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-1.0.26-csp.tgz_1467150172558_0.31587393674999475" + }, + "directories": {} + }, + "2.0.0-beta.1": { + "name": "vue", + "version": "2.0.0-beta.1", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.27.0", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^1.1.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.33.0", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "ed3f3958b135ed7a9882042a653419cc14213630", + "_id": "vue@2.0.0-beta.1", + "_shasum": "fae80ffa23945cd311e5b292941280d390f31f9b", + "_from": ".", + "_npmVersion": "3.9.5", + "_nodeVersion": "6.2.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "fae80ffa23945cd311e5b292941280d390f31f9b", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-beta.1.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-beta.1.tgz_1467928305336_0.3286005707923323" + }, + "directories": {} + }, + "2.0.0-beta.2": { + "name": "vue", + "version": "2.0.0-beta.2", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.27.0", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^1.1.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.33.0", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "bd583371ecb753bbf986f450f6a4f3d0f65a3f32", + "_id": "vue@2.0.0-beta.2", + "_shasum": "8d54bd51b0a6acd1d009e79815bf7bde144e3c70", + "_from": ".", + "_npmVersion": "3.9.5", + "_nodeVersion": "6.2.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "8d54bd51b0a6acd1d009e79815bf7bde144e3c70", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-beta.2.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-beta.2.tgz_1468734686340_0.9078352218493819" + }, + "directories": {} + }, + "2.0.0-beta.3": { + "name": "vue", + "version": "2.0.0-beta.3", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.27.0", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^1.1.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.33.0", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "2288f3eab7af38f8832455c060d99f44f66aab06", + "_id": "vue@2.0.0-beta.3", + "_shasum": "9ea79c05a76120931c628f7a75edf2a5b7e24982", + "_from": ".", + "_npmVersion": "3.9.5", + "_nodeVersion": "6.2.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "9ea79c05a76120931c628f7a75edf2a5b7e24982", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-beta.3.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-beta.3.tgz_1469328319979_0.5627379040233791" + }, + "directories": {} + }, + "2.0.0-beta.4": { + "name": "vue", + "version": "2.0.0-beta.4", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.27.0", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^1.1.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.0.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.33.0", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "88c3f4b937c0151cbde19cb4187b0834faf4d266", + "_id": "vue@2.0.0-beta.4", + "_shasum": "fda7a3f301bf1f4f6fc665c5457642a8ea419918", + "_from": ".", + "_npmVersion": "3.9.5", + "_nodeVersion": "6.2.2", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "fda7a3f301bf1f4f6fc665c5457642a8ea419918", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-beta.4.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-beta.4.tgz_1469498669294_0.19265102222561836" + }, + "directories": {} + }, + "2.0.0-beta.5": { + "name": "vue", + "version": "2.0.0-beta.5", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.27.0", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^1.1.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.0.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.33.0", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "9cbe4a31665c6ef47baad2aed62b0da89e0cc72b", + "_id": "vue@2.0.0-beta.5", + "_shasum": "90d881a7bf5cec208b1ed9d08413107f2c126215", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "90d881a7bf5cec208b1ed9d08413107f2c126215", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-beta.5.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-beta.5.tgz_1469593549153_0.2599202685523778" + }, + "directories": {} + }, + "2.0.0-beta.6": { + "name": "vue", + "version": "2.0.0-beta.6", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.27.0", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^1.1.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.33.0", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "fd3377d1a9b962c558bdac2125664888c93aa143", + "_id": "vue@2.0.0-beta.6", + "_shasum": "7d2e6cbded8c0a44e8957a0c6fc65522ab8b558b", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "7d2e6cbded8c0a44e8957a0c6fc65522ab8b558b", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-beta.6.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-beta.6.tgz_1470079661237_0.6658249413594604" + }, + "directories": {} + }, + "2.0.0-beta.7": { + "name": "vue", + "version": "2.0.0-beta.7", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.27.0", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^1.1.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.33.0", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "c2c68d6a22de1f633a18c62eab46938eed917f2f", + "_id": "vue@2.0.0-beta.7", + "_shasum": "fef963533c43374ebaf93451a8af1df29e19c3b1", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "fef963533c43374ebaf93451a8af1df29e19c3b1", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-beta.7.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-beta.7.tgz_1470435033174_0.4668272112030536" + }, + "directories": {} + }, + "2.0.0-beta.8": { + "name": "vue", + "version": "2.0.0-beta.8", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.27.0", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^1.1.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.33.0", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "1cde06b7723a1c5870ae5d2fca536e515e647487", + "_id": "vue@2.0.0-beta.8", + "_shasum": "45f926ada556eb4fc500796c81e86f07e07f9c4a", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "45f926ada556eb4fc500796c81e86f07e07f9c4a", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-beta.8.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-beta.8.tgz_1470804938808_0.9325078530237079" + }, + "directories": {} + }, + "2.0.0-rc.1": { + "name": "vue", + "version": "2.0.0-rc.1", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.27.0", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^1.1.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.33.0", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "7b42671f04aa1de342d85178419fac8fa5eb6eaf", + "_id": "vue@2.0.0-rc.1", + "_shasum": "959c855df95323bf29cc3d66ae01dcfe24c88c23", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "959c855df95323bf29cc3d66ae01dcfe24c88c23", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-rc.1.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-rc.1.tgz_1470894200563_0.5398926513735205" + }, + "directories": {} + }, + "2.0.0-rc.2": { + "name": "vue", + "version": "2.0.0-rc.2", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.27.0", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^1.1.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.33.0", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "e422a98150806d9dde395b3398be42ae3d3bb85e", + "_id": "vue@2.0.0-rc.2", + "_shasum": "92f935c13127687a38207bb69e2dbb02e7c8141e", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "92f935c13127687a38207bb69e2dbb02e7c8141e", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-rc.2.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-rc.2.tgz_1471318752677_0.23703231965191662" + }, + "directories": {} + }, + "2.0.0-rc.3": { + "name": "vue", + "version": "2.0.0-rc.3", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "webpack --watch --config build/webpack.dist.dev.config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "webpack --watch --config build/webpack.ssr.dev.config.js", + "dev:compiler": "webpack --watch --config build/webpack.compiler.dev.config.js", + "build": "NODE_ENV=production node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "NODE_ENV=development karma start build/karma.unit.config.js", + "test:cover": "NODE_ENV=development karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && NODE_ENV=development VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "NODE_ENV=development SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-es2015-rollup-vue": "^1.1.0", + "babel-preset-flow-vue": "^1.0.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "eslint": "^2.11.0", + "eslint-config-vue": "^1.0.3", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.4.0", + "flow-bin": "^0.27.0", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^1.1.0", + "karma-chrome-launcher": "^1.0.1", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.33.0", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-replace": "^1.1.0", + "selenium-server": "2.53.0", + "uglify-js": "^2.6.2", + "webpack": "^1.13.1" + }, + "gitHead": "8d03a452de61634428923a4dabbd22c24b91f3b3", + "_id": "vue@2.0.0-rc.3", + "_shasum": "3aa583897ecada9b823923a67d0b03bac9d14671", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "3aa583897ecada9b823923a67d0b03bac9d14671", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-rc.3.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-rc.3.tgz_1471716301183_0.7859994771424681" + }, + "directories": {} + }, + "2.0.0-rc.4": { + "name": "vue", + "version": "2.0.0-rc.4", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src" + ], + "scripts": { + "dev": "TARGET=web-standalone-dev rollup -w -c build/config.js", + "dev:runtime": "TARGET=web-runtime-dev rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.13.1", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "es6-promise": "^3.2.1", + "eslint": "^3.4.0", + "eslint-config-vue": "^1.1.0", + "eslint-plugin-html": "^1.5.2", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.5.0", + "flow-bin": "^0.31.1", + "flow-remove-types": "github:yyx990803/flow-remove-types", + "http-server": "^0.9.0", + "jasmine": "^2.4.1", + "jasmine-core": "^2.4.1", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.34.10", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.13.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2" + }, + "gitHead": "8c427f7f18d34bca8e2860788d0849bee26d4bb9", + "_id": "vue@2.0.0-rc.4", + "_shasum": "324ab6afbdcf20b5b606d2950ca91040d152e89b", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "324ab6afbdcf20b5b606d2950ca91040d152e89b", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-rc.4.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-rc.4.tgz_1472500149870_0.7657984518446028" + }, + "directories": {} + }, + "2.0.0-rc.5": { + "name": "vue", + "version": "2.0.0-rc.5", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-standalone-dev rollup -w -c build/config.js", + "dev:runtime": "TARGET=web-runtime-dev rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.13.1", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "es6-promise": "^3.2.1", + "eslint": "^3.4.0", + "eslint-config-vue": "^1.1.0", + "eslint-loader": "^1.3.0", + "eslint-plugin-flow-vars": "^0.5.0", + "eslint-plugin-html": "^1.5.2", + "flow-bin": "^0.31.1", + "flow-remove-types": "github:yyx990803/flow-remove-types", + "http-server": "^0.9.0", + "jasmine": "2.4.x", + "jasmine-core": "2.4.x", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.34.10", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.13.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.2", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2" + }, + "gitHead": "84dfc1d99c2b42f28d238bed8a46d02c47c8aa10", + "_id": "vue@2.0.0-rc.5", + "_shasum": "d743850882326c3203a9612f4e1bff4f045cc0ff", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "d743850882326c3203a9612f4e1bff4f045cc0ff", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-rc.5.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-rc.5.tgz_1473334198315_0.16794415842741728" + }, + "directories": {} + }, + "2.0.0-rc.6": { + "name": "vue", + "version": "2.0.0-rc.6", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-standalone-dev rollup -w -c build/config.js", + "dev:runtime": "TARGET=web-runtime-dev rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.13.1", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "es6-promise": "^3.2.1", + "eslint": "^3.4.0", + "eslint-config-vue": "^1.1.0", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-html": "^1.5.2", + "flow-bin": "^0.31.1", + "flow-remove-types": "github:yyx990803/flow-remove-types", + "http-server": "^0.9.0", + "jasmine": "2.4.x", + "jasmine-core": "2.4.x", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.34.10", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.13.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.2", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2" + }, + "gitHead": "43211fd519f462af2530556d905b38d942f61294", + "_id": "vue@2.0.0-rc.6", + "_shasum": "4572daa8aac8ef1eb48559f8ac4ab8e408e2869f", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "4572daa8aac8ef1eb48559f8ac4ab8e408e2869f", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-rc.6.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-rc.6.tgz_1473772872082_0.040285271126776934" + }, + "directories": {} + }, + "1.0.27": { + "name": "vue", + "version": "1.0.27", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.min.js.map", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src test/e2e test/unit/specs build", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh", + "release-csp": "bash build/release-csp.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.3", + "codecov.io": "^0.1.2", + "eslint": "^3.5.0", + "eslint-config-vue": "^1.0.0", + "eslint-plugin-html": "^1.5.2", + "istanbul-instrumenter-loader": "^0.2.0", + "jasmine-core": "^2.4.1", + "karma": "^1.3.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.0", + "karma-ie-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-phantomjs-launcher": "^1.0.2", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.34.13", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "baa92ca1b5dd59d5950fc44ed5476c15f01a843e", + "_id": "vue@1.0.27", + "_shasum": "f56229c87d436a661bd3bb63cc7eeb264233116e", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "f56229c87d436a661bd3bb63cc7eeb264233116e", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.27.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-1.0.27.tgz_1474660297977_0.7622160818427801" + }, + "directories": {} + }, + "1.0.27-csp": { + "name": "vue", + "version": "1.0.27-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.min.js.map", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src test/e2e test/unit/specs build", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh", + "release-csp": "bash build/release-csp.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.3", + "codecov.io": "^0.1.2", + "eslint": "^3.5.0", + "eslint-config-vue": "^1.0.0", + "eslint-plugin-html": "^1.5.2", + "istanbul-instrumenter-loader": "^0.2.0", + "jasmine-core": "^2.4.1", + "karma": "^1.3.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.0", + "karma-ie-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-phantomjs-launcher": "^1.0.2", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.34.13", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "ba7dd90bc5fc84f41a30d774e2b7f58e2a058222", + "_id": "vue@1.0.27-csp", + "_shasum": "7c8058e5644ea4d8702c24576a1edbf03d4823e0", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "7c8058e5644ea4d8702c24576a1edbf03d4823e0", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.27-csp.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-1.0.27-csp.tgz_1474660425377_0.06182463048025966" + }, + "directories": {} + }, + "2.0.0-rc.7": { + "name": "vue", + "version": "2.0.0-rc.7", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-standalone-dev rollup -w -c build/config.js", + "dev:runtime": "TARGET=web-runtime-dev rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "es6-promise": "^3.2.1", + "eslint": "^3.4.0", + "eslint-config-vue": "^1.1.0", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-html": "^1.5.2", + "flow-bin": "^0.32.0", + "http-server": "^0.9.0", + "jasmine": "2.4.x", + "jasmine-core": "2.4.x", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.34.13", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.2", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2" + }, + "gitHead": "08f2b97083d32b8c3fe035d770dddfc19de49a7e", + "_id": "vue@2.0.0-rc.7", + "_shasum": "d1549bef91986e06e50bf630ea1d3963f7ecd059", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "d1549bef91986e06e50bf630ea1d3963f7ecd059", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-rc.7.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-rc.7.tgz_1474669496160_0.6856245503295213" + }, + "directories": {} + }, + "1.0.28": { + "name": "vue", + "version": "1.0.28", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.min.js.map", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src test/e2e test/unit/specs build", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce && npm run sauce -- 1 && npm run sauce -- 2", + "release": "bash build/release.sh", + "release-csp": "bash build/release-csp.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.3", + "codecov.io": "^0.1.2", + "eslint": "^3.5.0", + "eslint-config-vue": "^1.0.0", + "eslint-plugin-html": "^1.5.2", + "istanbul-instrumenter-loader": "^0.2.0", + "jasmine-core": "^2.4.1", + "karma": "^1.3.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.0", + "karma-ie-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-phantomjs-launcher": "^1.0.2", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.34.13", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "a8d6330d7e6b30c252aa753f99c7cb73bfc67a70", + "_id": "vue@1.0.28", + "_shasum": "ed2ff07b200bde15c87a90ef8727ceea7d38567d", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "ed2ff07b200bde15c87a90ef8727ceea7d38567d", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.28.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-1.0.28.tgz_1475009141605_0.8371744034811854" + }, + "directories": {} + }, + "1.0.28-csp": { + "name": "vue", + "version": "1.0.28-csp", + "author": { + "name": "Evan You", + "email": "yyx990803@gmail.com" + }, + "license": "MIT", + "description": "Simple, Fast & Composable MVVM for building interactive interfaces", + "keywords": [ + "mvvm", + "browser", + "framework" + ], + "main": "dist/vue.common.js", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.min.js.map", + "dist/vue.common.js", + "src" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "http://vuejs.org", + "scripts": { + "test": "npm run lint && npm run cover && npm run build && npm run e2e", + "build": "node build/build.js", + "install-hook": "ln -s ../../build/git-hooks/pre-commit .git/hooks/pre-commit", + "dev": "webpack --watch --config build/webpack.dev.config.js & npm run serve-test", + "serve-test": "webpack-dev-server --config build/webpack.test.config.js --host 0.0.0.0", + "build-test": "webpack --config build/webpack.test.config.js", + "lint": "eslint src test/e2e test/unit/specs build", + "e2e": "casperjs test --concise ./test/e2e", + "unit": "karma start build/karma.unit.config.js", + "cover": "karma start build/karma.cover.config.js", + "sauce": "karma start build/karma.sauce.config.js", + "sauce-all": "npm run sauce", + "release": "bash build/release.sh", + "release-csp": "bash build/release-csp.sh" + }, + "dependencies": { + "envify": "^3.4.0" + }, + "browserify": { + "transform": [ + "envify" + ] + }, + "devDependencies": { + "babel-core": "^5.8.0", + "babel-loader": "^5.4.0", + "babel-runtime": "^5.8.0", + "casperjs": "^1.1.3", + "codecov.io": "^0.1.2", + "eslint": "^3.5.0", + "eslint-config-vue": "^1.0.0", + "eslint-plugin-html": "^1.5.2", + "istanbul-instrumenter-loader": "^0.2.0", + "jasmine-core": "^2.4.1", + "karma": "^1.3.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.0", + "karma-ie-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-phantomjs-launcher": "^1.0.2", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^1.7.0", + "notevil": "^1.0.0", + "object-assign": "^4.0.1", + "phantomjs": "^1.9.17", + "rollup": "^0.34.13", + "rollup-plugin-babel": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "uglify-js": "^2.4.24", + "webpack": "^1.12.2", + "webpack-dev-server": "^1.12.1" + }, + "gitHead": "c45cfee24d222b68b8e6a320863cb7e13c15f2bc", + "_id": "vue@1.0.28-csp", + "_shasum": "02814d502eff3e4efb6a12b882fbf3b55f1e2f1e", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "02814d502eff3e4efb6a12b882fbf3b55f1e2f1e", + "tarball": "https://registry.npmjs.org/vue/-/vue-1.0.28-csp.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-1.0.28-csp.tgz_1475009243806_0.7087466502562165" + }, + "directories": {} + }, + "2.0.0-rc.8": { + "name": "vue", + "version": "2.0.0-rc.8", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-standalone-dev rollup -w -c build/config.js", + "dev:runtime": "TARGET=web-runtime-dev rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "es6-promise": "^3.2.1", + "eslint": "^3.4.0", + "eslint-config-vue": "^1.1.0", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-html": "^1.5.2", + "flow-bin": "^0.32.0", + "http-server": "^0.9.0", + "jasmine": "2.4.x", + "jasmine-core": "2.4.x", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.34.13", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.2", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2" + }, + "gitHead": "e6154316daf62c43c997e4334be7a52b57881709", + "_id": "vue@2.0.0-rc.8", + "_shasum": "6436fe5bb75002ffa57230b413b695d29f7abcba", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "6436fe5bb75002ffa57230b413b695d29f7abcba", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0-rc.8.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0-rc.8.tgz_1475010513582_0.2802108924370259" + }, + "directories": {} + }, + "2.0.0": { + "name": "vue", + "version": "2.0.0", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-standalone-dev rollup -w -c build/config.js", + "dev:runtime": "TARGET=web-runtime-dev rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "es6-promise": "^3.2.1", + "eslint": "^3.4.0", + "eslint-config-vue": "^1.1.0", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-html": "^1.5.2", + "flow-bin": "^0.32.0", + "http-server": "^0.9.0", + "jasmine": "2.4.x", + "jasmine-core": "2.4.x", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.2", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2" + }, + "gitHead": "156cfb9892d3359d548e27abf5d8b78b421a5a92", + "_id": "vue@2.0.0", + "_shasum": "2717556195650845a0141d8117ba8024ccedb2ba", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "2717556195650845a0141d8117ba8024ccedb2ba", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.0.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.0.tgz_1475260331734_0.9920612326823175" + }, + "directories": {} + }, + "2.0.1": { + "name": "vue", + "version": "2.0.1", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-standalone-dev rollup -w -c build/config.js", + "dev:runtime": "TARGET=web-runtime-dev rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "es6-promise": "^3.2.1", + "eslint": "^3.4.0", + "eslint-config-vue": "^1.1.0", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-html": "^1.5.2", + "flow-bin": "^0.32.0", + "http-server": "^0.9.0", + "jasmine": "2.4.x", + "jasmine-core": "2.4.x", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.2", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2" + }, + "gitHead": "e6d224c3c5ca3ff6a365326ba615d116764b68f2", + "_id": "vue@2.0.1", + "_shasum": "ea20979eb5440ea7da086097befd598fb548dbc1", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "ea20979eb5440ea7da086097befd598fb548dbc1", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.1.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.0.1.tgz_1475269930880_0.6575976791791618" + }, + "directories": {} + }, + "2.0.2": { + "name": "vue", + "version": "2.0.2", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-standalone-dev rollup -w -c build/config.js", + "dev:runtime": "TARGET=web-runtime-dev rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "entities": "^1.1.1", + "es6-promise": "^3.2.1", + "eslint": "^3.4.0", + "eslint-config-vue": "^1.1.0", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-html": "^1.5.2", + "flow-bin": "^0.32.0", + "http-server": "^0.9.0", + "jasmine": "2.4.x", + "jasmine-core": "2.4.x", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.2", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2" + }, + "gitHead": "70aee1c7f8f6aab359492909d41f1e0449771506", + "_id": "vue@2.0.2", + "_shasum": "ae1c01ce74a5d44d41ece96b82849c11e1d45e6d", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "ae1c01ce74a5d44d41ece96b82849c11e1d45e6d", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.2.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.2.tgz_1476248052543_0.10046554286964238" + }, + "directories": {} + }, + "2.0.3": { + "name": "vue", + "version": "2.0.3", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.common.js", + "dist/vue.js", + "dist/vue.min.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-standalone-dev rollup -w -c build/config.js", + "dev:runtime": "TARGET=web-runtime-dev rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^3.2.1", + "eslint": "^3.4.0", + "eslint-config-vue": "^1.1.0", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-html": "^1.5.2", + "flow-bin": "^0.32.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "2.4.x", + "jasmine-core": "2.4.x", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.2", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2" + }, + "gitHead": "3bbac7e9f5beb86dbb023edbb043bdea501c98d3", + "_id": "vue@2.0.3", + "_shasum": "3f7698f83d6ad1f0e35955447901672876c63fde", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.3.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "dist": { + "shasum": "3f7698f83d6ad1f0e35955447901672876c63fde", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.3.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.3.tgz_1476350853659_0.9587009425740689" + }, + "directories": {} + }, + "2.0.4": { + "name": "vue", + "version": "2.0.4", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.common.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.js", + "dist/vue.min.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-standalone-dev rollup -w -c build/config.js", + "dev:runtime": "TARGET=web-runtime-dev rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^3.2.1", + "eslint": "^3.4.0", + "eslint-config-vue": "^2.0.0", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-vue": "^1.0.0", + "flow-bin": "^0.33.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "2.4.x", + "jasmine-core": "2.4.x", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.2", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2" + }, + "gitHead": "0973342e5cadaa68c21535cb9e62f27fd5493e2c", + "_id": "vue@2.0.4", + "_shasum": "26f1e3c52c74012de6a6aa58595c6706395f1fb2", + "_from": ".", + "_npmVersion": "3.10.8", + "_nodeVersion": "6.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "26f1e3c52c74012de6a6aa58595c6706395f1fb2", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.4.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.0.4.tgz_1478292430438_0.9752126208040863" + }, + "directories": {} + }, + "2.0.5": { + "name": "vue", + "version": "2.0.5", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.common.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.js", + "dist/vue.min.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-standalone-dev rollup -w -c build/config.js", + "dev:runtime": "TARGET=web-runtime-dev rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:ssr": "npm run build:ssr && VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^6.0.4", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^4.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^3.2.1", + "eslint": "^3.4.0", + "eslint-config-vue": "^2.0.0", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-vue": "^1.0.0", + "flow-bin": "^0.33.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "2.4.x", + "jasmine-core": "2.4.x", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.13.1", + "nightwatch": "^0.9.0", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.2", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2" + }, + "gitHead": "a2cc6e2b68239460d1c27f9af8b2165594f8ab00", + "_id": "vue@2.0.5", + "_shasum": "b99dc7180a802d1148a508db3d84b52c09b5ca8e", + "_from": ".", + "_npmVersion": "3.10.8", + "_nodeVersion": "6.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "b99dc7180a802d1148a508db3d84b52c09b5ca8e", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.5.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.5.tgz_1478317652628_0.46653968561440706" + }, + "directories": {} + }, + "2.0.6": { + "name": "vue", + "version": "2.0.6", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.common.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.js", + "dist/vue.min.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-standalone-dev rollup -w -c build/config.js", + "dev:runtime": "TARGET=web-runtime-dev rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-vue": "^1.0.0", + "flow-bin": "^0.33.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.9", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.3" + }, + "dependencies": {}, + "gitHead": "fd83358c97d16eba6d53ceb2a8528bbc3376afd0", + "_id": "vue@2.0.6", + "_shasum": "a867c0cc2a8292d0de7dfd42e90e7627cf762ceb", + "_from": ".", + "_npmVersion": "3.10.8", + "_nodeVersion": "6.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "a867c0cc2a8292d0de7dfd42e90e7627cf762ceb", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.6.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.6.tgz_1479251111982_0.6678760126233101" + }, + "directories": {} + }, + "2.0.7": { + "name": "vue", + "version": "2.0.7", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.common.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.js", + "dist/vue.min.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-standalone-dev rollup -w -c build/config.js", + "dev:runtime": "TARGET=web-runtime-dev rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-vue": "^1.0.0", + "flow-bin": "^0.33.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.9", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.3" + }, + "dependencies": {}, + "gitHead": "cd0e37361227b9b6f34e88dda3f4934c3932014d", + "_id": "vue@2.0.7", + "_shasum": "83698ef4f76ce702f425b5576b06ff28e12db143", + "_from": ".", + "_npmVersion": "3.10.8", + "_nodeVersion": "6.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "83698ef4f76ce702f425b5576b06ff28e12db143", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.7.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.0.7.tgz_1479333271954_0.264754707692191" + }, + "directories": {} + }, + "2.0.8": { + "name": "vue", + "version": "2.0.8", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.common.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.js", + "dist/vue.min.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-standalone-dev rollup -w -c build/config.js", + "dev:runtime": "TARGET=web-runtime-dev rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-vue": "^1.0.0", + "flow-bin": "^0.33.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.9", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.3" + }, + "dependencies": {}, + "gitHead": "9fa4bbbc04f17fe278b280a99225077836d692ec", + "_id": "vue@2.0.8", + "_shasum": "bbc191db5e1442f208604f994f03e49ac09e69d2", + "_from": ".", + "_npmVersion": "3.10.8", + "_nodeVersion": "6.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "bbc191db5e1442f208604f994f03e49ac09e69d2", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.0.8.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/vue-2.0.8.tgz_1479611705947_0.1140876084100455" + }, + "directories": {} + }, + "2.1.0": { + "name": "vue", + "version": "2.1.0", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.common.js", + "dist/vue.runtime.common.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-vue": "^1.0.0", + "flow-bin": "^0.33.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.9", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.3" + }, + "dependencies": {}, + "gitHead": "f4647b01f8340eb0d21d14f4fc1a720855fee3d5", + "_id": "vue@2.1.0", + "_shasum": "293ba3efaaca846aa6bcbfac45cf8524cc597e3d", + "_from": ".", + "_npmVersion": "3.10.8", + "_nodeVersion": "6.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "293ba3efaaca846aa6bcbfac45cf8524cc597e3d", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.1.0.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/vue-2.1.0.tgz_1479831313483_0.42749749566428363" + }, + "directories": {} + }, + "2.1.1": { + "name": "vue", + "version": "2.1.1", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.common.js", + "dist/vue.runtime.common.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-vue": "^1.0.0", + "flow-bin": "^0.33.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.9", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.3" + }, + "dependencies": {}, + "gitHead": "adf33c18eb1e24676af22d85d072fe6bfa83c99c", + "_id": "vue@2.1.1", + "_shasum": "8a1653e19a3ea4d44778893261a9f3c5a70c083b", + "_from": ".", + "_npmVersion": "3.10.8", + "_nodeVersion": "6.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "8a1653e19a3ea4d44778893261a9f3c5a70c083b", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.1.1.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/vue-2.1.1.tgz_1479934847963_0.6884484167676419" + }, + "directories": {} + }, + "2.1.2": { + "name": "vue", + "version": "2.1.2", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.common.js", + "dist/vue.runtime.common.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-vue": "^1.0.0", + "flow-bin": "^0.33.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.9", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.3" + }, + "dependencies": {}, + "gitHead": "9e5d882bd2e40e9593f76ae557e6060e0319fd40", + "_id": "vue@2.1.2", + "_shasum": "0f94cf1779a405a460bf945e5bc27cfc3cf64d60", + "_from": ".", + "_npmVersion": "3.10.8", + "_nodeVersion": "6.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "0f94cf1779a405a460bf945e5bc27cfc3cf64d60", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.1.2.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/vue-2.1.2.tgz_1479944543760_0.3896191492676735" + }, + "directories": {} + }, + "2.1.3": { + "name": "vue", + "version": "2.1.3", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.common.js", + "dist/vue.runtime.common.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-vue": "^1.0.0", + "flow-bin": "^0.33.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.9", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.3" + }, + "dependencies": {}, + "gitHead": "c32ea056a552ac792dcb52bd22cb19dba761c229", + "_id": "vue@2.1.3", + "_shasum": "20161b8684777754fd9823134b38f13c1e197882", + "_from": ".", + "_npmVersion": "3.10.8", + "_nodeVersion": "6.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "20161b8684777754fd9823134b38f13c1e197882", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.1.3.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.1.3.tgz_1479946938686_0.762635137885809" + }, + "directories": {} + }, + "2.1.4": { + "name": "vue", + "version": "2.1.4", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.common.js", + "dist/vue.runtime.common.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-coverage": "^1.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^1.0.0", + "flow-bin": "^0.33.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.9", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.3" + }, + "dependencies": {}, + "gitHead": "a8f41399ef7538176f8207af7b6a1180f3a13505", + "_id": "vue@2.1.4", + "_shasum": "d490f8fcf696847d8cf7f8eb9168e9a5dd806bfc", + "_from": ".", + "_npmVersion": "3.10.8", + "_nodeVersion": "6.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "d490f8fcf696847d8cf7f8eb9168e9a5dd806bfc", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.1.4.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/vue-2.1.4.tgz_1480647688112_0.3128880592994392" + }, + "directories": {} + }, + "2.1.5": { + "name": "vue", + "version": "2.1.5", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.common.js", + "dist/vue.runtime.common.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^3.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^1.0.0", + "flow-bin": "^0.33.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.9", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.3" + }, + "dependencies": {}, + "gitHead": "68abdc3c3c86e01089c32b434e662dc15a3a9eda", + "_id": "vue@2.1.5", + "_shasum": "d2568d3e5093cf1486eef44cf37177e3f51d568d", + "_from": ".", + "_npmVersion": "3.10.8", + "_nodeVersion": "6.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "d2568d3e5093cf1486eef44cf37177e3f51d568d", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.1.5.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/vue-2.1.5.tgz_1481598577169_0.39072798006236553" + }, + "directories": {} + }, + "2.1.6": { + "name": "vue", + "version": "2.1.6", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.common.js", + "dist/vue.runtime.common.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^3.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^1.0.0", + "flow-bin": "^0.33.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.9", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.3" + }, + "dependencies": {}, + "gitHead": "57f425ef1d1d5ddc89e2a9d2bbe4cfd9554fddbc", + "_id": "vue@2.1.6", + "_shasum": "2fc0024c07479ac6bc7d34a2cd5ef9ca5e90b143", + "_from": ".", + "_npmVersion": "3.10.8", + "_nodeVersion": "6.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "2fc0024c07479ac6bc7d34a2cd5ef9ca5e90b143", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.1.6.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.1.6.tgz_1481649755145_0.9005280786659569" + }, + "directories": {} + }, + "2.1.7": { + "name": "vue", + "version": "2.1.7", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.common.js", + "dist/vue.runtime.common.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^3.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^1.0.0", + "flow-bin": "^0.33.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.9", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.3" + }, + "dependencies": {}, + "unpkg": "dist/vue.js", + "gitHead": "c803fbbca02d9437ab5dc04316ab6f290a6bd16d", + "_id": "vue@2.1.7", + "_shasum": "747880cb70a50c66cb8791aacfee7a6dab7fc842", + "_from": ".", + "_npmVersion": "3.10.8", + "_nodeVersion": "6.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "747880cb70a50c66cb8791aacfee7a6dab7fc842", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.1.7.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.1.7.tgz_1482597383867_0.028434713603928685" + }, + "directories": {} + }, + "2.1.8": { + "name": "vue", + "version": "2.1.8", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.common.js", + "dist/vue.runtime.common.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^3.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^1.0.0", + "flow-bin": "^0.33.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.9", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.3" + }, + "dependencies": {}, + "unpkg": "dist/vue.js", + "gitHead": "17be581cf033273f3e57cf2b899cf055fcb36ba3", + "_id": "vue@2.1.8", + "_shasum": "ae30aa86024fccf5535292ce414e7b4c221a1756", + "_from": ".", + "_npmVersion": "3.10.8", + "_nodeVersion": "6.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "ae30aa86024fccf5535292ce414e7b4c221a1756", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.1.8.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.1.8.tgz_1482904483951_0.5947873364202678" + }, + "directories": {} + }, + "2.1.9": { + "name": "vue", + "version": "2.1.9", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.common.js", + "dist/vue.runtime.common.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^3.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^1.0.0", + "flow-bin": "^0.33.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.9", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.3" + }, + "dependencies": {}, + "unpkg": "dist/vue.js", + "gitHead": "80a7ceace62f1d9c5a9b93182aacc0b35cef1115", + "_id": "vue@2.1.9", + "_shasum": "19ad2eae01f7c9eb911e089f65ed579bbf5ab9dd", + "_from": ".", + "_npmVersion": "3.10.8", + "_nodeVersion": "6.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "19ad2eae01f7c9eb911e089f65ed579bbf5ab9dd", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.1.9.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.1.9.tgz_1484610495742_0.46512899617664516" + }, + "directories": {} + }, + "2.1.10": { + "name": "vue", + "version": "2.1.10", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.common.js", + "dist/vue.runtime.common.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^3.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.14.0", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^1.0.0", + "flow-bin": "^0.33.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^1.7.0", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "rollup": "^0.36.1", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.14.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^2.5.0", + "selenium-server": "2.53.1", + "typescript": "^2.0.9", + "uglify-js": "^2.6.2", + "webpack": "^1.13.2", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.3" + }, + "dependencies": {}, + "unpkg": "dist/vue.js", + "gitHead": "994aee4f869d68a00c3b9d87daa9c8d84623ac42", + "_id": "vue@2.1.10", + "_shasum": "c9235ca48c7925137be5807832ac4e3ac180427b", + "_from": ".", + "_npmVersion": "3.10.8", + "_nodeVersion": "6.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "c9235ca48c7925137be5807832ac4e3ac180427b", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.1.10.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.1.10.tgz_1484673441093_0.458372725173831" + }, + "directories": {} + }, + "2.2.0-beta.1": { + "name": "vue", + "version": "2.2.0-beta.1", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.common.js", + "dist/vue.runtime.common.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^4.0.0", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^2.0.0", + "flow-bin": "^0.39.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^2.0.1", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "resolve": "^1.2.0", + "rollup": "^0.41.4", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^3.2.2", + "selenium-server": "^2.53.1", + "typescript": "^2.1.6", + "uglify-js": "^2.6.2", + "vue-ssr-html-stream": "^2.1.0", + "vue-ssr-webpack-plugin": "^1.0.0", + "webpack": "^2.2.0", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.4" + }, + "unpkg": "dist/vue.js", + "gitHead": "7775da259dbf594a18c1e3a38383bac3caf1e47b", + "_id": "vue@2.2.0-beta.1", + "_shasum": "e481b0c0af9aed0c1884c16f7cb843e57a3e4d1c", + "_from": ".", + "_npmVersion": "4.0.5", + "_nodeVersion": "7.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "e481b0c0af9aed0c1884c16f7cb843e57a3e4d1c", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.2.0-beta.1.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/vue-2.2.0-beta.1.tgz_1487910148538_0.9716962235979736" + }, + "directories": {} + }, + "2.2.0-beta.2": { + "name": "vue", + "version": "2.2.0-beta.2", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.common.js", + "dist/vue.runtime.common.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^4.0.0", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^2.0.0", + "flow-bin": "^0.39.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^2.0.1", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "resolve": "^1.2.0", + "rollup": "^0.41.4", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^3.2.2", + "selenium-server": "^2.53.1", + "typescript": "^2.1.6", + "uglify-js": "^2.6.2", + "vue-ssr-html-stream": "^2.1.0", + "vue-ssr-webpack-plugin": "^1.0.0", + "webpack": "^2.2.0", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.4" + }, + "unpkg": "dist/vue.js", + "gitHead": "36810163386dd4f2690d8d1c4b1016f17e467e2d", + "_id": "vue@2.2.0-beta.2", + "_shasum": "4a03a307e377c58ee4f440d8100ac8b23a0e478f", + "_from": ".", + "_npmVersion": "4.0.5", + "_nodeVersion": "7.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "4a03a307e377c58ee4f440d8100ac8b23a0e478f", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.2.0-beta.2.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.2.0-beta.2.tgz_1487980879749_0.9535783343017101" + }, + "directories": {} + }, + "2.2.0": { + "name": "vue", + "version": "2.2.0", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.common.js", + "dist/vue.runtime.common.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^4.0.0", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^2.0.0", + "flow-bin": "^0.39.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^2.0.1", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "resolve": "^1.2.0", + "rollup": "^0.41.4", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^3.2.2", + "selenium-server": "^2.53.1", + "typescript": "^2.1.6", + "uglify-js": "^2.6.2", + "vue-ssr-html-stream": "^2.1.0", + "vue-ssr-webpack-plugin": "^1.0.0", + "webpack": "^2.2.0", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.4" + }, + "gitHead": "2a19f911dc8631d44b7c7e63c4db57ef28ac5e69", + "_id": "vue@2.2.0", + "_shasum": "f4586920ce36d53944ab27ac5236ed9303a46b47", + "_from": ".", + "_npmVersion": "4.0.5", + "_nodeVersion": "7.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "f4586920ce36d53944ab27ac5236ed9303a46b47", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.2.0.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/vue-2.2.0.tgz_1488083531694_0.24482185952365398" + }, + "directories": {} + }, + "2.2.1": { + "name": "vue", + "version": "2.2.1", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "dist/vue.js", + "dist/vue.min.js", + "dist/vue.runtime.js", + "dist/vue.runtime.min.js", + "dist/vue.common.js", + "dist/vue.runtime.common.js", + "dist/vue.esm.js", + "dist/vue.runtime.esm.js", + "src", + "types/index.d.ts", + "types/options.d.ts", + "types/plugin.d.ts", + "types/vnode.d.ts", + "types/vue.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^4.0.0", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^2.0.0", + "flow-bin": "^0.39.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^2.0.1", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "resolve": "^1.2.0", + "rollup": "^0.41.4", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^3.2.2", + "selenium-server": "^2.53.1", + "typescript": "^2.1.6", + "uglify-js": "^2.6.2", + "vue-ssr-html-stream": "^2.1.0", + "vue-ssr-webpack-plugin": "^1.0.0", + "webpack": "^2.2.0", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.4" + }, + "gitHead": "3b241b0088d8b40b3e551f76fa031910dcbd42a7", + "_id": "vue@2.2.1", + "_shasum": "ddbfd2f0caf38f374f5a36eea2e1edf25225b68e", + "_from": ".", + "_npmVersion": "4.0.5", + "_nodeVersion": "7.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "ddbfd2f0caf38f374f5a36eea2e1edf25225b68e", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.2.1.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/vue-2.2.1.tgz_1488114657958_0.2117187965195626" + }, + "directories": {} + }, + "2.2.2": { + "name": "vue", + "version": "2.2.2", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^4.0.0", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^2.0.0", + "flow-bin": "^0.39.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^2.0.1", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "resolve": "^1.2.0", + "rollup": "^0.41.4", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^3.2.2", + "selenium-server": "^2.53.1", + "typescript": "^2.1.6", + "uglify-js": "^2.6.2", + "vue-ssr-html-stream": "^2.1.0", + "vue-ssr-webpack-plugin": "^1.0.0", + "webpack": "^2.2.0", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.4" + }, + "gitHead": "d0b8dce4a6cbcce1aed1912ab12b20c858edd729", + "_id": "vue@2.2.2", + "_shasum": "17ed34028a6ab4de855738a1d7beabdf409ee23f", + "_from": ".", + "_npmVersion": "4.0.5", + "_nodeVersion": "7.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "17ed34028a6ab4de855738a1d7beabdf409ee23f", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.2.2.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.2.2.tgz_1489033433326_0.6694855242967606" + }, + "directories": {} + }, + "2.2.3": { + "name": "vue", + "version": "2.2.3", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^4.0.0", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^2.0.0", + "flow-bin": "^0.39.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^2.0.1", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "resolve": "^1.2.0", + "rollup": "^0.41.4", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^3.2.2", + "selenium-server": "^2.53.1", + "typescript": "^2.1.6", + "uglify-js": "^2.6.2", + "vue-ssr-html-stream": "^2.1.0", + "vue-ssr-webpack-plugin": "^1.0.0", + "webpack": "^2.2.0", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.4" + }, + "gitHead": "d185dd294c99fc01fd6521201f3362ba41e75060", + "_id": "vue@2.2.3", + "_shasum": "62174ade45f262efa4dba6f49ec613c6d2fc279c", + "_from": ".", + "_npmVersion": "4.0.5", + "_nodeVersion": "7.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "62174ade45f262efa4dba6f49ec613c6d2fc279c", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.2.3.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.2.3.tgz_1489392491918_0.5810584076680243" + }, + "directories": {} + }, + "2.2.4": { + "name": "vue", + "version": "2.2.4", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "TARGET=web-full-dev rollup -w -c build/config.js", + "dev:cjs": "TARGET=web-runtime-cjs rollup -w -c build/config.js", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "TARGET=web-server-renderer rollup -w -c build/config.js", + "dev:compiler": "TARGET=web-compiler rollup -w -c build/config.js", + "dev:weex": "TARGET=weex-framework rollup -w -c build/config.js", + "dev:weex:compiler": "TARGET=weex-compiler rollup -w -c build/config.js", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "SAUCE=true karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && NODE_ENV=production node benchmarks/ssr/renderToString.js && NODE_ENV=production VUE_ENV=server node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^4.0.0", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^2.0.0", + "flow-bin": "^0.39.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^2.0.1", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "resolve": "^1.2.0", + "rollup": "^0.41.4", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^3.2.2", + "selenium-server": "^2.53.1", + "typescript": "^2.1.6", + "uglify-js": "^2.6.2", + "vue-ssr-html-stream": "^2.1.0", + "vue-ssr-webpack-plugin": "^1.0.0", + "webpack": "^2.2.0", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.4" + }, + "gitHead": "2343b908c2f8d0b3d9ea762af6f5b85a540eddd7", + "_id": "vue@2.2.4", + "_shasum": "d0a3a050a80a12356d7950ae5a7b3131048209cc", + "_from": ".", + "_npmVersion": "4.0.5", + "_nodeVersion": "7.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "d0a3a050a80a12356d7950ae5a7b3131048209cc", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.2.4.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.2.4.tgz_1489417703415_0.14407102018594742" + }, + "directories": {} + }, + "2.2.5": { + "name": "vue", + "version": "2.2.5", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework ", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^4.0.0", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^2.0.0", + "flow-bin": "^0.39.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^2.0.1", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "resolve": "^1.2.0", + "rollup": "^0.41.4", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^3.2.2", + "selenium-server": "^2.53.1", + "typescript": "^2.1.6", + "uglify-js": "^2.6.2", + "vue-ssr-html-stream": "^2.1.0", + "vue-ssr-webpack-plugin": "^1.0.0", + "webpack": "^2.2.0", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.4" + }, + "gitHead": "c0ad75beeb5bf5e7679221b679fbdd13e0d945bb", + "_id": "vue@2.2.5", + "_shasum": "528eba68447d7eff99f86767b31176aa656c6963", + "_from": ".", + "_npmVersion": "4.0.5", + "_nodeVersion": "7.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "528eba68447d7eff99f86767b31176aa656c6963", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.2.5.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/vue-2.2.5.tgz_1490331224066_0.039384644478559494" + }, + "directories": {} + }, + "2.2.6": { + "name": "vue", + "version": "2.2.6", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework ", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^4.0.0", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^2.0.0", + "flow-bin": "^0.39.0", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^2.0.1", + "lodash": "^4.17.1", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "resolve": "^1.2.0", + "rollup": "^0.41.4", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^3.2.2", + "selenium-server": "^2.53.1", + "typescript": "^2.1.6", + "uglify-js": "^2.6.2", + "vue-ssr-html-stream": "^2.1.0", + "vue-ssr-webpack-plugin": "^1.0.0", + "webpack": "^2.2.0", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.4" + }, + "gitHead": "0cebdf55ab645001a7c8c80381ab27e03ced5c7c", + "_id": "vue@2.2.6", + "_shasum": "451714b394dd6d4eae7b773c40c2034a59621aed", + "_from": ".", + "_npmVersion": "4.0.5", + "_nodeVersion": "7.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "451714b394dd6d4eae7b773c40c2034a59621aed", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.2.6.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.2.6.tgz_1490582786729_0.13118436955846846" + }, + "directories": {} + }, + "2.3.0-beta.1": { + "name": "vue", + "version": "2.3.0-beta.1", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework ", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^4.0.0", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chalk": "^1.1.3", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^2.0.0", + "file-loader": "^0.10.1", + "flow-bin": "^0.39.0", + "hash-sum": "^1.0.2", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^2.0.1", + "lodash": "^4.17.1", + "lodash.template": "^4.4.0", + "lru-cache": "^4.0.2", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "resolve": "^1.2.0", + "rollup": "^0.41.4", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^3.2.2", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "typescript": "^2.1.6", + "uglify-js": "^2.6.2", + "webpack": "^2.2.0", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.4" + }, + "gitHead": "3a6fd13bc5c1c900774f759f200e064d60861b96", + "_id": "vue@2.3.0-beta.1", + "_shasum": "cea07a499c561f535ee320d623fd17a775c1591b", + "_from": ".", + "_npmVersion": "4.2.0", + "_nodeVersion": "7.8.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "cea07a499c561f535ee320d623fd17a775c1591b", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.3.0-beta.1.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.3.0-beta.1.tgz_1493202765108_0.0036185618955641985" + }, + "directories": {} + }, + "2.3.0": { + "name": "vue", + "version": "2.3.0", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework ", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^4.0.0", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chalk": "^1.1.3", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^2.0.0", + "file-loader": "^0.10.1", + "flow-bin": "^0.39.0", + "hash-sum": "^1.0.2", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^2.0.1", + "lodash": "^4.17.1", + "lodash.template": "^4.4.0", + "lru-cache": "^4.0.2", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "resolve": "^1.2.0", + "rollup": "^0.41.4", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^3.2.2", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "typescript": "^2.1.6", + "uglify-js": "^2.6.2", + "webpack": "^2.2.0", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.4" + }, + "gitHead": "a27c464692c83c3c953e76baaa0e51dc88e4a14a", + "_id": "vue@2.3.0", + "_shasum": "bc44db0488c5245c788304c7683efe7b4c862d82", + "_from": ".", + "_npmVersion": "4.2.0", + "_nodeVersion": "7.8.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "bc44db0488c5245c788304c7683efe7b4c862d82", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.3.0.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/vue-2.3.0.tgz_1493274146495_0.15474186395294964" + }, + "directories": {} + }, + "2.3.1": { + "name": "vue", + "version": "2.3.1", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework ", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^4.0.0", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chalk": "^1.1.3", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^2.0.0", + "file-loader": "^0.10.1", + "flow-bin": "^0.45.0", + "hash-sum": "^1.0.2", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^2.0.1", + "lodash": "^4.17.1", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.0.2", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "resolve": "^1.2.0", + "rollup": "^0.41.4", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^3.2.2", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "typescript": "^2.1.6", + "uglify-js": "^2.6.2", + "webpack": "^2.2.0", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.4" + }, + "gitHead": "6b4f3da51dbac0c7f06411907c8d8435b630d5b2", + "_id": "vue@2.3.1", + "_shasum": "cecc3a229160747f3fb01eb2f03dd04e82420462", + "_from": ".", + "_npmVersion": "4.2.0", + "_nodeVersion": "7.8.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "cecc3a229160747f3fb01eb2f03dd04e82420462", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.3.1.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.3.1.tgz_1493711973474_0.7331771603785455" + }, + "directories": {} + }, + "2.3.2": { + "name": "vue", + "version": "2.3.2", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework ", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^4.0.0", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chalk": "^1.1.3", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^2.0.0", + "file-loader": "^0.10.1", + "flow-bin": "^0.45.0", + "hash-sum": "^1.0.2", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^2.0.1", + "lodash": "^4.17.1", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.0.2", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "resolve": "^1.2.0", + "rollup": "^0.41.4", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^3.2.2", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "typescript": "^2.1.6", + "uglify-js": "^2.6.2", + "webpack": "^2.2.0", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.4" + }, + "gitHead": "b977c77d344cb1fc63a3daa50a4b96ef70e77ec5", + "_id": "vue@2.3.2", + "_shasum": "9e52aae3593480be235ff227557837e69f98203a", + "_from": ".", + "_npmVersion": "4.2.0", + "_nodeVersion": "7.8.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "9e52aae3593480be235ff227557837e69f98203a", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.3.2.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/vue-2.3.2.tgz_1493721022817_0.636890372261405" + }, + "directories": {} + }, + "2.3.3": { + "name": "vue", + "version": "2.3.3", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework ", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^4.0.0", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chalk": "^1.1.3", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^2.0.0", + "file-loader": "^0.10.1", + "flow-bin": "^0.45.0", + "hash-sum": "^1.0.2", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^2.0.1", + "lodash": "^4.17.1", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.0.2", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "resolve": "^1.2.0", + "rollup": "^0.41.4", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^3.2.2", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "typescript": "^2.1.6", + "uglify-js": "^2.6.2", + "webpack": "^2.2.0", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.4" + }, + "gitHead": "8d56a498f3d95660e2cafff4ed3c1e1da23494d1", + "_id": "vue@2.3.3", + "_shasum": "d1eaa8fde5240735a4563e74f2c7fead9cbb064c", + "_from": ".", + "_npmVersion": "4.2.0", + "_nodeVersion": "7.8.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "shasum": "d1eaa8fde5240735a4563e74f2c7fead9cbb064c", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.3.3.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/vue-2.3.3.tgz_1494349078810_0.31803403492085636" + }, + "directories": {} + }, + "2.3.4": { + "name": "vue", + "version": "2.3.4", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start build/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework ", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start build/karma.unit.config.js", + "test:cover": "karma start build/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start build/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "install:hooks": "ln -fs ../../build/git-hooks/pre-commit .git/hooks/pre-commit" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.9.0", + "babel-eslint": "^7.1.0", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^6.2.4", + "babel-plugin-istanbul": "^4.0.0", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.2.0", + "babel-preset-es2015": "^6.9.0", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chalk": "^1.1.3", + "chromedriver": "^2.21.2", + "codecov.io": "^0.1.6", + "cross-spawn": "^5.0.1", + "de-indent": "^1.0.2", + "es6-promise": "^4.0.5", + "eslint": "^3.10.1", + "eslint-config-vue": "^2.0.1", + "eslint-loader": "^1.3.0", + "eslint-plugin-flowtype": "^2.16.0", + "eslint-plugin-jasmine": "^2.1.0", + "eslint-plugin-vue": "^2.0.0", + "file-loader": "^0.10.1", + "flow-bin": "^0.45.0", + "hash-sum": "^1.0.2", + "he": "^1.1.0", + "http-server": "^0.9.0", + "jasmine": "^2.5.2", + "jasmine-core": "^2.5.2", + "karma": "^1.1.0", + "karma-chrome-launcher": "^2.0.0", + "karma-coverage": "^1.0.0", + "karma-firefox-launcher": "^1.0.0", + "karma-jasmine": "^1.0.2", + "karma-mocha-reporter": "^2.0.4", + "karma-phantomjs-launcher": "^1.0.0", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.0.0", + "karma-sourcemap-loader": "^0.3.0", + "karma-webpack": "^2.0.1", + "lodash": "^4.17.1", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.0.2", + "nightwatch": "^0.9.9", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.1", + "resolve": "^1.2.0", + "rollup": "^0.41.4", + "rollup-plugin-alias": "^1.2.0", + "rollup-plugin-babel": "^2.4.0", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-replace": "^1.1.0", + "rollup-watch": "^3.2.2", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "typescript": "^2.1.6", + "uglify-js": "^2.6.2", + "webpack": "^2.2.0", + "weex-js-runtime": "^0.17.0-alpha4", + "weex-vdom-tester": "^0.1.4" + }, + "gitHead": "1f9416d514d80a99eb45184459fdf390405967ec", + "_id": "vue@2.3.4", + "_npmVersion": "5.0.0", + "_nodeVersion": "8.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-oLCxuVcVQ2inwSbS7B+zfjB6CSjgQ0yyCOzPcg7S5CXeOCbtkaiN5frR6MtwvrveqbG86OsGd9jWf6JsGyQkLw==", + "shasum": "5ec3b87a191da8090bbef56b7cfabd4158038171", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.3.4.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.3.4.tgz_1496897690369_0.5197095186449587" + }, + "directories": {} + }, + "2.4.0": { + "name": "vue", + "version": "2.4.0", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework ", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "postinstall": "node build/install-hooks.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.25.0", + "babel-eslint": "^7.2.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chalk": "^1.1.3", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^3.0.0", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.2.0", + "eslint-plugin-vue-libs": "^1.2.0", + "file-loader": "^0.11.2", + "flow-bin": "^0.48.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.45.1", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^2.7.1", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^1.1.1", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.3.4", + "uglify-js": "^3.0.15", + "webpack": "^2.6.1", + "weex-js-runtime": "^0.20.5", + "weex-vdom-tester": "^0.2.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "ac3d1eaea34ee23978d395a84f68154e7e86caa1", + "_id": "vue@2.4.0", + "_npmVersion": "5.0.0", + "_nodeVersion": "8.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-BFqCvQQJ3LA2fANeqY/aLnkMBzZo1ef6ymjRweYYnUkAjoid7MyD/J2Nhkp7YminXVZBQv7M+P7Wli7rZRNafQ==", + "shasum": "f462d15f12f73bb40d795365cf3c45431296d6f7", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.4.0.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.4.0.tgz_1499925597967_0.5970287129748613" + }, + "directories": {} + }, + "2.4.1": { + "name": "vue", + "version": "2.4.1", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework ", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/install-hooks.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.25.0", + "babel-eslint": "^7.2.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chalk": "^1.1.3", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^3.0.0", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.2.0", + "eslint-plugin-vue-libs": "^1.2.0", + "file-loader": "^0.11.2", + "flow-bin": "^0.48.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.45.1", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^2.7.1", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^1.1.1", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.3.4", + "uglify-js": "^3.0.15", + "webpack": "^2.6.1", + "weex-js-runtime": "^0.20.5", + "weex-vdom-tester": "^0.2.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "381b48503aae796c5c21c318cae8b0a8322dde35", + "_id": "vue@2.4.1", + "_npmVersion": "5.0.0", + "_nodeVersion": "8.0.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-V/3mbqPeXJf+AEdm2Qdrho8ADjN2/Th+q7abrDqQrGaERgtlGPLe8SRLDzJ2eNEV4Gh+L8T/vfbxb2sLUfwYbA==", + "shasum": "76e0b8eee614613532216b7bfe784e0b5695b160", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.4.1.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.4.1.tgz_1499928052215_0.3017186624929309" + }, + "directories": {} + }, + "2.4.2": { + "name": "vue", + "version": "2.4.2", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework ", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/install-hooks.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.25.0", + "babel-eslint": "^7.2.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chalk": "^1.1.3", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^3.0.0", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.2.0", + "eslint-plugin-vue-libs": "^1.2.0", + "file-loader": "^0.11.2", + "flow-bin": "^0.48.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.45.1", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^2.7.1", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^1.1.1", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.3.4", + "uglify-js": "^3.0.15", + "webpack": "^2.6.1", + "weex-js-runtime": "^0.20.5", + "weex-vdom-tester": "^0.2.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "b8f1bcd96c73251f46726cfc5393bb9999ae259d", + "_id": "vue@2.4.2", + "_npmVersion": "5.0.3", + "_nodeVersion": "8.1.4", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-GB5r+CsrCHIB1PoXt4wgBienjF3WGYOIaTK27tDk96sZxpL5RwRrsi9I3ECwFt8x8qAmxT2xk1vsY2Vpcn9nIw==", + "shasum": "a9855261f191c978cc0dc1150531b8d08149b58c", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.4.2.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.4.2.tgz_1500611321854_0.16039316589012742" + }, + "directories": {} + }, + "2.4.3": { + "name": "vue", + "version": "2.4.3", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework ", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/install-hooks.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.25.0", + "babel-eslint": "^7.2.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chalk": "^1.1.3", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^3.0.0", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.2.0", + "eslint-plugin-vue-libs": "^1.2.0", + "file-loader": "^0.11.2", + "flow-bin": "^0.48.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.45.1", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^2.7.1", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^1.1.1", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.3.4", + "uglify-js": "^3.0.15", + "webpack": "^2.6.1", + "weex-js-runtime": "^0.20.5", + "weex-vdom-tester": "^0.2.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "0a7ffb148c38848cb9f59a38b101abdec863f490", + "_id": "vue@2.4.3", + "_npmVersion": "5.4.1", + "_nodeVersion": "8.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-k6zkIBR0KsE0DLUDGdRLooX/4iRUbc3T2FyrJs4YhVySbjGwS3k5c2HRCHyXo6lg1aeAF9rg3uiJDRz0J7nbDA==", + "shasum": "55fee0ec509cf2e10aa73b34b15219e92a9ab9ea", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.4.3.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.4.3.tgz_1505289458451_0.009235817706212401" + }, + "directories": {} + }, + "2.4.4": { + "name": "vue", + "version": "2.4.4", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework ", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- vue.runtime.common.js,vue-server-renderer", + "build:weex": "npm run build -- weex-vue-framework,weex-template-compiler", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/install-hooks.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "babel-core": "^6.25.0", + "babel-eslint": "^7.2.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.15.2", + "chalk": "^1.1.3", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^3.0.0", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.2.0", + "eslint-plugin-vue-libs": "^1.2.0", + "file-loader": "^0.11.2", + "flow-bin": "^0.48.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.45.1", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^2.7.1", + "rollup-plugin-buble": "^0.15.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^1.1.1", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.3.4", + "uglify-js": "^3.0.15", + "webpack": "^2.6.1", + "weex-js-runtime": "^0.20.5", + "weex-vdom-tester": "^0.2.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "94512f3e8cee4030a1096121700ed49afab48073", + "_id": "vue@2.4.4", + "_npmVersion": "5.4.1", + "_nodeVersion": "8.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-PCiRmc8ZT1DD5+BN8QUAmnkBefcCLfZVSuhc1u7iu5JoPrSHyyk/+4nehm7k2xVMi8+RFLk5WIHAN14UKF0txw==", + "shasum": "ea9550b96a71465fd2b8b17b61673b3561861789", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.4.4.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.4.4.tgz_1505403170766_0.00395546481013298" + }, + "directories": {} + }, + "2.5.0": { + "name": "vue", + "version": "2.5.0", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c build/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/install-hooks.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "babel-core": "^6.25.0", + "babel-eslint": "^7.2.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.16.0", + "chalk": "^1.1.3", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^3.0.0", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^1.2.0", + "file-loader": "^0.11.2", + "flow-bin": "^0.54.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.50.0", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.16.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.5.2", + "uglify-js": "^3.0.15", + "webpack": "^2.6.1", + "weex-js-runtime": "^0.22.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "0948d999f2fddf9f90991956493f976273c5da1f", + "_id": "vue@2.5.0", + "_npmVersion": "5.4.2", + "_nodeVersion": "8.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-KngZQLLe/N2Bvl3qu0xgqQHemm9MNz9y73D7yJ5tVavOKyhSgCLARYzrXJzYtoeadUSrItzV36VrHywLGVUx7w==", + "shasum": "7f0706c0804257e8d42e5970e1a36e648483988d", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.0.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.5.0.tgz_1507864062173_0.6368219419382513" + }, + "directories": {} + }, + "2.5.1": { + "name": "vue", + "version": "2.5.1", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c build/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/install-hooks.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "babel-core": "^6.25.0", + "babel-eslint": "^7.2.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.16.0", + "chalk": "^1.1.3", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^3.0.0", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^1.2.0", + "file-loader": "^0.11.2", + "flow-bin": "^0.54.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.50.0", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.16.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.5.2", + "uglify-js": "^3.0.15", + "webpack": "^2.6.1", + "weex-js-runtime": "^0.23.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "f865b0d7678beb70765ec8fd560008bebb51b923", + "_id": "vue@2.5.1", + "_npmVersion": "5.4.2", + "_nodeVersion": "8.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-gOTOjZZWXxXmYkchkdJ3mKi9AbkwWIc0O9yOQYbEdgigy8YI7eh7h2YS3qnDr4UIjvnrbNPbbS+OjO3Qipl4EQ==", + "shasum": "1d904b18a2bcbbfc68879f105e29d9a4dd715ff8", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.1.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.5.1.tgz_1507904083226_0.8859054057393223" + }, + "directories": {} + }, + "2.5.2": { + "name": "vue", + "version": "2.5.2", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c build/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/install-hooks.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "babel-core": "^6.25.0", + "babel-eslint": "^7.2.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.16.0", + "chalk": "^1.1.3", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^3.0.0", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^1.2.0", + "file-loader": "^0.11.2", + "flow-bin": "^0.54.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.50.0", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.16.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.5.2", + "uglify-js": "^3.0.15", + "webpack": "^2.6.1", + "weex-js-runtime": "^0.23.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "471de4a31d229e681cc9dce18632b5bcab944c77", + "_id": "vue@2.5.2", + "_npmVersion": "5.4.2", + "_nodeVersion": "8.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-Au9rf8fPkBulFHfZ406UaQDd1jH9fqGRIM+0IHilrXnJ/0TeeMH4SBkNxWf2dGevl2S3aVeu0E/WklEv0/msag==", + "shasum": "fd367a87bae7535e47f9dc5c9ec3b496e5feb5a4", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.2.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.5.2.tgz_1507926072940_0.44964701822027564" + }, + "directories": {} + }, + "2.5.3": { + "name": "vue", + "version": "2.5.3", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c build/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/setup.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "babel-core": "^6.25.0", + "babel-eslint": "^7.2.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.16.0", + "chalk": "^1.1.3", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^3.0.0", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^1.2.0", + "file-loader": "^0.11.2", + "flow-bin": "^0.54.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.50.0", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.16.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.5.2", + "uglify-js": "^3.0.15", + "webpack": "^2.6.1", + "weex-js-runtime": "^0.23.0", + "weex-styler": "^0.3.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "2acc12c9edb03329c4d9cddcca26e46c672a77bc", + "_id": "vue@2.5.3", + "_npmVersion": "5.4.2", + "_nodeVersion": "8.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-C8O5ZtR9jpwm6sCre3k42/WvuAcil5hH1+c3mJks8kNCYKh57sQh6I5U7m9L0fD89OKkIofmebUORngZkLedNA==", + "shasum": "e1a3b1f49b6e93e574ce040b95cbc873912fecc1", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.3.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.5.3.tgz_1509743497178_0.5528412547428161" + }, + "directories": {} + }, + "2.5.4": { + "name": "vue", + "version": "2.5.4", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c build/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/setup.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "babel-core": "^6.25.0", + "babel-eslint": "^7.2.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.16.0", + "chalk": "^1.1.3", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^3.0.0", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^1.2.0", + "file-loader": "^0.11.2", + "flow-bin": "^0.54.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.50.0", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.16.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.5.2", + "uglify-js": "^3.0.15", + "webpack": "^2.6.1", + "weex-js-runtime": "^0.23.0", + "weex-styler": "^0.3.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "a2cd14c765cfb1f881f34911d4fd0540feb09cce", + "_id": "vue@2.5.4", + "_npmVersion": "5.4.2", + "_nodeVersion": "8.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-AHCPCJdPe/hP0lEd1j4KKyM5J5Qmihr5eL94AJMbfgSofxXF8izd3dcvLLBSRm1EhCqYf1RhUAKua0uOsp6xGA==", + "shasum": "4405e30b856875553e8fadb0ebf50f51ffc443f5", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.4.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.5.4.tgz_1510862118158_0.23470679740421474" + }, + "directories": {} + }, + "2.5.5": { + "name": "vue", + "version": "2.5.5", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c build/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/setup.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "babel-core": "^6.25.0", + "babel-eslint": "^7.2.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.16.0", + "chalk": "^1.1.3", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^3.0.0", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^1.2.0", + "file-loader": "^0.11.2", + "flow-bin": "^0.54.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.50.0", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.16.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.5.2", + "uglify-js": "^3.0.15", + "webpack": "^2.6.1", + "weex-js-runtime": "^0.23.0", + "weex-styler": "^0.3.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "06f121b4735e8c70306c744419287592af295eac", + "_id": "vue@2.5.5", + "_npmVersion": "5.4.2", + "_nodeVersion": "8.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-GmuENNfh+QxILBWJbBuclYIIDPoCBbYpspndkBZjyhzc6Pol6I+arHiwqXBD6ml5Kwo7uEIUdDnOcuhdLlAMrw==", + "shasum": "cc3cd9b2a4f1d7356861ae0f71da0e6beb091910", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.5.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.5.5.tgz_1510936623854_0.6424111265223473" + }, + "directories": {} + }, + "2.5.6": { + "name": "vue", + "version": "2.5.6", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c build/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/setup.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "babel-core": "^6.25.0", + "babel-eslint": "^7.2.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.16.0", + "chalk": "^1.1.3", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^3.0.0", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^1.2.0", + "file-loader": "^0.11.2", + "flow-bin": "^0.54.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.50.0", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.16.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.5.2", + "uglify-js": "^3.0.15", + "webpack": "^2.6.1", + "weex-js-runtime": "^0.23.0", + "weex-styler": "^0.3.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "b2781205b0271a9b59afe0c816b41c6dbe85f0a3", + "_id": "vue@2.5.6", + "_npmVersion": "5.4.2", + "_nodeVersion": "8.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-EnTiSZKkaQmsbpgsWN01VrGYisBXvjU1iqoK2xpUOLdri8vxQyYi5CjRtT33K3JI49WaiG8XnsIGEhNnROj2fQ==", + "shasum": "73654fefa4b37f25dfc657b8b834b44c90822cd7", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.6.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.5.6.tgz_1511034258455_0.17820211220532656" + }, + "directories": {} + }, + "2.5.7": { + "name": "vue", + "version": "2.5.7", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c build/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/setup.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "babel-core": "^6.25.0", + "babel-eslint": "^7.2.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.16.0", + "chalk": "^1.1.3", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^3.0.0", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^1.2.0", + "file-loader": "^0.11.2", + "flow-bin": "^0.54.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.50.0", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.16.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.5.2", + "uglify-js": "^3.0.15", + "webpack": "^2.6.1", + "weex-js-runtime": "^0.23.0", + "weex-styler": "^0.3.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "f9f74231a2e064861856396f57dc980a6de376e9", + "_id": "vue@2.5.7", + "_npmVersion": "5.4.2", + "_nodeVersion": "8.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-eMsl1hMSw+/1o5+W9LnNKwQqOAhqAW8KfaQcPg0EjczMqU9o53VkLAQ5jk84aSYnOqeBCaLYHs0BB5iqNOuotA==", + "shasum": "313ab26025915d9fdbc39db756548cb4bb50eb44", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.7.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.5.7.tgz_1511207374375_0.18834878643974662" + }, + "directories": {} + }, + "2.5.8": { + "name": "vue", + "version": "2.5.8", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c build/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/setup.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "babel-core": "^6.25.0", + "babel-eslint": "^7.2.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.16.0", + "chalk": "^1.1.3", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^3.0.0", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^1.2.0", + "file-loader": "^0.11.2", + "flow-bin": "^0.54.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.50.0", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.16.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.5.2", + "uglify-js": "^3.0.15", + "webpack": "^2.6.1", + "weex-js-runtime": "^0.23.0", + "weex-styler": "^0.3.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "b0bbcbd152782bcc8d5ad5e9c9e5842e1daf1afb", + "_id": "vue@2.5.8", + "_npmVersion": "5.4.2", + "_nodeVersion": "8.4.0", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-aY26SGDHJTCKM+mndzuiQ0dozPpNeWO5Mtq760OrHO0AOiqVHMhzvU5h0LdCkVF9A+vE+DMTm74xSi+sxnMEDg==", + "shasum": "f855c1c27255184a82225f4bef225473e8faf15b", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.8.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.5.8.tgz_1511275347590_0.6677671177312732" + }, + "directories": {} + }, + "2.5.9": { + "name": "vue", + "version": "2.5.9", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c build/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/setup.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "babel-core": "^6.25.0", + "babel-eslint": "^7.2.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.16.0", + "chalk": "^1.1.3", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^3.0.0", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^1.2.0", + "file-loader": "^0.11.2", + "flow-bin": "^0.54.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.50.0", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.16.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.6.1", + "uglify-js": "^3.0.15", + "webpack": "^2.6.1", + "weex-js-runtime": "^0.23.0", + "weex-styler": "^0.3.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "d4e0c3ef2444384719638a89f2a25af042b95795", + "_id": "vue@2.5.9", + "_npmVersion": "5.5.1", + "_nodeVersion": "8.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-9B9XBpCtj8y5eJFrspIcKxIWt+lG9FMdF8qgyOlUeOIvcS4xSAvcARygbzHA6Pi0KWFj4BvxjtWbuPVWRx/wuA==", + "shasum": "b2380cd040915dca69881dafd121d760952e65f7", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.9.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.5.9.tgz_1511804621853_0.23726037540473044" + }, + "directories": {} + }, + "2.5.10": { + "name": "vue", + "version": "2.5.10", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c build/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/setup.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "babel-core": "^6.25.0", + "babel-eslint": "^7.2.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.16.0", + "chalk": "^1.1.3", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^3.0.0", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^1.2.0", + "file-loader": "^0.11.2", + "flow-bin": "^0.54.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.50.0", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.16.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.6.1", + "uglify-js": "^3.0.15", + "webpack": "^2.6.1", + "weex-js-runtime": "^0.23.0", + "weex-styler": "^0.3.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "a5924a53369ec7c04f0638148f60324652c126eb", + "_id": "vue@2.5.10", + "_npmVersion": "5.5.1", + "_nodeVersion": "8.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-svnce7F8Oe0cWscno2ABnq5ir3tQoQYXe2CkR7SiNGKmNyBDXhJj9Y7mXUodZytsssIvbooEH9DRrp58cOuWNA==", + "shasum": "dcd772e2594ba994145f2f09522149d9a1e7841a", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.10.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.5.10.tgz_1513120608829_0.06511193164624274" + }, + "directories": {} + }, + "2.5.11": { + "name": "vue", + "version": "2.5.11", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c build/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/setup.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "babel-core": "^6.25.0", + "babel-eslint": "^8.0.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.18.0", + "chalk": "^2.3.0", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^4.13.1", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^2.0.1", + "file-loader": "^1.1.5", + "flow-bin": "^0.61.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.52.1", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.18.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.6.1", + "uglify-js": "^3.0.15", + "webpack": "^3.10.0", + "weex-js-runtime": "^0.23.0", + "weex-styler": "^0.3.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "9c01684762445c822956f5764400d14384804db6", + "_id": "vue@2.5.11", + "_npmVersion": "5.5.1", + "_nodeVersion": "8.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-FZzUIvJa1jsFSfy6OITgjzoCtnxI8uHkewa2QCCCIgRj7ObsalXKLTf3S5sBP+kyusTctl3fKej+NHoBUCVPlA==", + "shasum": "80ca2657aa81f03545cd8dd5a2f55454641e6405", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.11.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.5.11.tgz_1513270573239_0.7456502984277904" + }, + "directories": {} + }, + "2.5.12": { + "name": "vue", + "version": "2.5.12", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c build/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/setup.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "babel-core": "^6.25.0", + "babel-eslint": "^8.0.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.18.0", + "chalk": "^2.3.0", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^4.13.1", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^2.0.1", + "file-loader": "^1.1.5", + "flow-bin": "^0.61.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.52.1", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.18.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.6.1", + "uglify-js": "^3.0.15", + "webpack": "^3.10.0", + "weex-js-runtime": "^0.23.5", + "weex-styler": "^0.3.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "ec2c48cfd58d2e82d37928af533d5d5bfa30b5c4", + "_id": "vue@2.5.12", + "_npmVersion": "5.5.1", + "_nodeVersion": "8.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-ouxtzKv/Y1GlUJlWf3jwvEi6jUs5lJQnDjaNzrHtNET9dpLENmF+cFUmfbO3avWQSzvjMpy6EqNAgLMDvZdyGA==", + "shasum": "88bb58307b51d9dd9f772019765c0d110da816e7", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.12.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.5.12.tgz_1513695265097_0.30003517493605614" + }, + "directories": {} + }, + "2.5.13": { + "name": "vue", + "version": "2.5.13", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c build/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c build/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c build/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c build/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c build/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c build/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c build/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c build/config.js --environment TARGET:weex-compiler ", + "build": "node build/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint src build test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash build/release.sh", + "release:weex": "bash build/release-weex.sh", + "release:note": "node build/gen-release-note.js", + "setup": "node build/setup.js", + "commit": "git-cz" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "babel-core": "^6.25.0", + "babel-eslint": "^8.0.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.18.0", + "chalk": "^2.3.0", + "chromedriver": "^2.30.1", + "codecov.io": "^0.1.6", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "eslint": "^4.13.1", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^2.0.1", + "file-loader": "^1.1.5", + "flow-bin": "^0.61.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.10.0", + "jasmine": "^2.6.0", + "jasmine-core": "^2.6.3", + "karma": "^1.7.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.52.1", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.18.0", + "rollup-plugin-commonjs": "^8.0.2", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.7.8", + "typescript": "^2.6.1", + "uglify-js": "^3.0.15", + "webpack": "^3.10.0", + "weex-js-runtime": "^0.23.5", + "weex-styler": "^0.3.0" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "d982e344b39391fe91b6dd91d51b2f0310a45e77", + "_id": "vue@2.5.13", + "_npmVersion": "5.5.1", + "_nodeVersion": "8.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-3D+lY7HTkKbtswDM4BBHgqyq+qo8IAEE8lz8va1dz3LLmttjgo0FxairO4r1iN2OBqk8o1FyL4hvzzTFEdQSEw==", + "shasum": "95bd31e20efcf7a7f39239c9aa6787ce8cf578e1", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.13.tgz" + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue-2.5.13.tgz_1513710421411_0.02470116876065731" + }, + "directories": {} + }, + "2.5.14": { + "name": "vue", + "version": "2.5.14", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c scripts/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c scripts/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c scripts/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c scripts/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c scripts/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c scripts/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c scripts/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c scripts/config.js --environment TARGET:weex-compiler ", + "build": "node scripts/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint --fix src scripts test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash scripts/release.sh", + "release:weex": "bash scripts/release-weex.sh", + "release:note": "node scripts/gen-release-note.js", + "commit": "git-cz" + }, + "gitHooks": { + "pre-commit": "lint-staged", + "commit-msg": "node scripts/verify-commit-msg.js" + }, + "lint-staged": { + "*.js": [ + "eslint --fix", + "git add" + ] + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "acorn": "^5.2.1", + "babel-core": "^6.25.0", + "babel-eslint": "^8.0.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.19.3", + "chalk": "^2.3.0", + "chromedriver": "^2.30.1", + "codecov": "^3.0.0", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "escodegen": "^1.8.1", + "eslint": "^4.13.1", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^2.0.1", + "file-loader": "^1.1.5", + "flow-bin": "^0.61.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.11.1", + "jasmine": "^2.99.0", + "jasmine-core": "^2.99.0", + "karma": "^2.0.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lint-staged": "^7.0.0", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.54.1", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.19.2", + "rollup-plugin-commonjs": "^8.0.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.8.1", + "typescript": "^2.7.1", + "uglify-js": "^3.0.15", + "webpack": "^3.11.0", + "weex-js-runtime": "^0.23.6", + "weex-styler": "^0.3.0", + "yorkie": "^1.0.1" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "387d2567ebec83db47d2049eec006a1ffc83451a", + "_id": "vue@2.5.14", + "_npmVersion": "5.6.0", + "_nodeVersion": "8.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-mVgzSfYvL6WXJhBkZNbJ/hZCJae6gjnnooa7K/HXfBPWKtqpBWHKfZVWV66a7x4JtE5vnQ4P1RW+OeqbWq2pOQ==", + "shasum": "74cb248a471053939abf6cdf2c406d4c311ab5a7", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.14.tgz", + "fileCount": 213, + "unpackedSize": 2455707 + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue_2.5.14_1520631733384_0.5622873738246064" + } + }, + "2.5.15": { + "name": "vue", + "version": "2.5.15", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c scripts/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c scripts/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c scripts/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c scripts/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c scripts/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c scripts/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c scripts/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c scripts/config.js --environment TARGET:weex-compiler ", + "build": "node scripts/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint --fix src scripts test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash scripts/release.sh", + "release:weex": "bash scripts/release-weex.sh", + "release:note": "node scripts/gen-release-note.js", + "commit": "git-cz" + }, + "gitHooks": { + "pre-commit": "lint-staged", + "commit-msg": "node scripts/verify-commit-msg.js" + }, + "lint-staged": { + "*.js": [ + "eslint --fix", + "git add" + ] + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "acorn": "^5.2.1", + "babel-core": "^6.25.0", + "babel-eslint": "^8.0.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.19.3", + "chalk": "^2.3.0", + "chromedriver": "^2.30.1", + "codecov": "^3.0.0", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "escodegen": "^1.8.1", + "eslint": "^4.13.1", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^2.0.1", + "file-loader": "^1.1.5", + "flow-bin": "^0.61.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.11.1", + "jasmine": "^2.99.0", + "jasmine-core": "^2.99.0", + "karma": "^2.0.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lint-staged": "^7.0.0", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.54.1", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.19.2", + "rollup-plugin-commonjs": "^8.0.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.8.1", + "typescript": "^2.7.1", + "uglify-js": "^3.0.15", + "webpack": "^3.11.0", + "weex-js-runtime": "^0.23.6", + "weex-styler": "^0.3.0", + "yorkie": "^1.0.1" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "af5453cd5e90461531f1711b5ecb6bd47136e7b0", + "_id": "vue@2.5.15", + "_npmVersion": "5.6.0", + "_nodeVersion": "8.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-uUcDI147VCQYA/9AqoEECddWdTQgrhnwAd6KDsl0pF1hiLpxqaYqIgArhnegU+QZ18DQrKvZNcR3x2QM1iaroQ==", + "shasum": "fdb67861dde967cd8d1b53116380f2f269b45202", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.15.tgz", + "fileCount": 213, + "unpackedSize": 2455943 + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue_2.5.15_1520725015621_0.7037534833744525" + } + }, + "2.5.16": { + "name": "vue", + "version": "2.5.16", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c scripts/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c scripts/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c scripts/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c scripts/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c scripts/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c scripts/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c scripts/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c scripts/config.js --environment TARGET:weex-compiler ", + "build": "node scripts/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint --fix src scripts test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash scripts/release.sh", + "release:weex": "bash scripts/release-weex.sh", + "release:note": "node scripts/gen-release-note.js", + "commit": "git-cz" + }, + "gitHooks": { + "pre-commit": "lint-staged", + "commit-msg": "node scripts/verify-commit-msg.js" + }, + "lint-staged": { + "*.js": [ + "eslint --fix", + "git add" + ] + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "acorn": "^5.2.1", + "babel-core": "^6.25.0", + "babel-eslint": "^8.0.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.19.3", + "chalk": "^2.3.0", + "chromedriver": "^2.30.1", + "codecov": "^3.0.0", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "escodegen": "^1.8.1", + "eslint": "^4.13.1", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^2.0.1", + "file-loader": "^1.1.5", + "flow-bin": "^0.61.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.11.1", + "jasmine": "^2.99.0", + "jasmine-core": "^2.99.0", + "karma": "^2.0.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lint-staged": "^7.0.0", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.54.1", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.19.2", + "rollup-plugin-commonjs": "^8.0.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.8.1", + "typescript": "^2.7.1", + "uglify-js": "^3.0.15", + "webpack": "^3.11.0", + "weex-js-runtime": "^0.23.6", + "weex-styler": "^0.3.0", + "yorkie": "^1.0.1" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "gitHead": "25342194016dc3bcc81cb3e8e229b0fb7ba1d1d6", + "_id": "vue@2.5.16", + "_npmVersion": "5.6.0", + "_nodeVersion": "8.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-/ffmsiVuPC8PsWcFkZngdpas19ABm5mh2wA7iDqcltyCTwlgZjHGeJYOXkBMo422iPwIcviOtrTCUpSfXmToLQ==", + "shasum": "07edb75e8412aaeed871ebafa99f4672584a0085", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.16.tgz", + "fileCount": 213, + "unpackedSize": 2461504 + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue_2.5.16_1520979268732_0.2632649953358386" + } + }, + "2.5.17-beta.0": { + "name": "vue", + "version": "2.5.17-beta.0", + "description": "Reactive, component-oriented view layer for modern web interfaces.", + "main": "dist/vue.runtime.common.js", + "module": "dist/vue.runtime.esm.js", + "unpkg": "dist/vue.js", + "jsdelivr": "dist/vue.js", + "typings": "types/index.d.ts", + "files": [ + "src", + "dist/*.js", + "types/*.d.ts" + ], + "scripts": { + "dev": "rollup -w -c scripts/config.js --environment TARGET:web-full-dev", + "dev:cjs": "rollup -w -c scripts/config.js --environment TARGET:web-runtime-cjs", + "dev:esm": "rollup -w -c scripts/config.js --environment TARGET:web-runtime-esm", + "dev:test": "karma start test/unit/karma.dev.config.js", + "dev:ssr": "rollup -w -c scripts/config.js --environment TARGET:web-server-renderer", + "dev:compiler": "rollup -w -c scripts/config.js --environment TARGET:web-compiler ", + "dev:weex": "rollup -w -c scripts/config.js --environment TARGET:weex-framework", + "dev:weex:factory": "rollup -w -c scripts/config.js --environment TARGET:weex-factory", + "dev:weex:compiler": "rollup -w -c scripts/config.js --environment TARGET:weex-compiler ", + "build": "node scripts/build.js", + "build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer", + "build:weex": "npm run build -- weex", + "test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr && npm run test:weex", + "test:unit": "karma start test/unit/karma.unit.config.js", + "test:cover": "karma start test/unit/karma.cover.config.js", + "test:e2e": "npm run build -- web-full-prod,web-server-basic-renderer && node test/e2e/runner.js", + "test:weex": "npm run build:weex && jasmine JASMINE_CONFIG_PATH=test/weex/jasmine.json", + "test:ssr": "npm run build:ssr && jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2", + "test:types": "tsc -p ./types/test/tsconfig.json", + "lint": "eslint --fix src scripts test", + "flow": "flow check", + "sauce": "karma start test/unit/karma.sauce.config.js", + "bench:ssr": "npm run build:ssr && node benchmarks/ssr/renderToString.js && node benchmarks/ssr/renderToStream.js", + "release": "bash scripts/release.sh", + "release:weex": "bash scripts/release-weex.sh", + "release:note": "node scripts/gen-release-note.js", + "commit": "git-cz" + }, + "gitHooks": { + "pre-commit": "lint-staged", + "commit-msg": "node scripts/verify-commit-msg.js" + }, + "lint-staged": { + "*.js": [ + "eslint --fix", + "git add" + ] + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/vue.git" + }, + "keywords": [ + "vue" + ], + "author": { + "name": "Evan You" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/vue/issues" + }, + "homepage": "https://github.com/vuejs/vue#readme", + "devDependencies": { + "@types/node": "^8.0.33", + "@types/webpack": "^3.0.13", + "acorn": "^5.2.1", + "babel-core": "^6.25.0", + "babel-eslint": "^8.0.3", + "babel-helper-vue-jsx-merge-props": "^2.0.2", + "babel-loader": "^7.0.0", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "babel-plugin-transform-vue-jsx": "^3.4.3", + "babel-preset-es2015": "^6.24.1", + "babel-preset-flow-vue": "^1.0.0", + "buble": "^0.19.3", + "chalk": "^2.3.0", + "chromedriver": "^2.30.1", + "codecov": "^3.0.0", + "commitizen": "^2.9.6", + "conventional-changelog": "^1.1.3", + "cross-spawn": "^5.1.0", + "cz-conventional-changelog": "^2.0.0", + "de-indent": "^1.0.2", + "es6-promise": "^4.1.0", + "escodegen": "^1.8.1", + "eslint": "^4.13.1", + "eslint-loader": "^1.7.1", + "eslint-plugin-flowtype": "^2.34.0", + "eslint-plugin-jasmine": "^2.8.4", + "eslint-plugin-vue-libs": "^2.0.1", + "file-loader": "^1.1.5", + "flow-bin": "^0.61.0", + "hash-sum": "^1.0.2", + "he": "^1.1.1", + "http-server": "^0.11.1", + "jasmine": "^2.99.0", + "jasmine-core": "^2.99.0", + "karma": "^2.0.0", + "karma-chrome-launcher": "^2.1.1", + "karma-coverage": "^1.1.1", + "karma-firefox-launcher": "^1.0.1", + "karma-jasmine": "^1.1.0", + "karma-mocha-reporter": "^2.2.3", + "karma-phantomjs-launcher": "^1.0.4", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^1.1.0", + "karma-sourcemap-loader": "^0.3.7", + "karma-webpack": "^2.0.3", + "lint-staged": "^7.0.0", + "lodash": "^4.17.4", + "lodash.template": "^4.4.0", + "lodash.uniq": "^4.5.0", + "lru-cache": "^4.1.1", + "nightwatch": "^0.9.16", + "nightwatch-helpers": "^1.2.0", + "phantomjs-prebuilt": "^2.1.14", + "resolve": "^1.3.3", + "rollup": "^0.54.1", + "rollup-plugin-alias": "^1.3.1", + "rollup-plugin-babel": "^3.0.2", + "rollup-plugin-buble": "^0.19.2", + "rollup-plugin-commonjs": "^8.0.0", + "rollup-plugin-flow-no-whitespace": "^1.0.0", + "rollup-plugin-node-resolve": "^3.0.0", + "rollup-plugin-replace": "^2.0.0", + "rollup-watch": "^4.0.0", + "selenium-server": "^2.53.1", + "serialize-javascript": "^1.3.0", + "shelljs": "^0.8.1", + "typescript": "^2.7.1", + "uglify-js": "^3.0.15", + "webpack": "^3.11.0", + "weex-js-runtime": "^0.23.6", + "weex-styler": "^0.3.0", + "yorkie": "^1.0.1" + }, + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + }, + "readmeFilename": "README.md", + "gitHead": "19552a82a636910f4595937141557305ab5d434e", + "_id": "vue@2.5.17-beta.0", + "_npmVersion": "5.6.0", + "_nodeVersion": "8.9.1", + "_npmUser": { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + }, + "dist": { + "integrity": "sha512-9BZOxpRe1TaGLS4oXyrUp3BC1dlc93js/yvnHtOovWzrkrjFMm58X+BCHrA/xgMXSM1iyRTEGoxAURyOUaK1dA==", + "shasum": "b9985447818827306beee146923a1bd64f1bb834", + "tarball": "https://registry.npmjs.org/vue/-/vue-2.5.17-beta.0.tgz", + "fileCount": 213, + "unpackedSize": 2470946 + }, + "maintainers": [ + { + "name": "yyx990803", + "email": "yyx990803@gmail.com" + } + ], + "directories": {}, + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/vue_2.5.17-beta.0_1521847753644_0.05241349247412952" + } + } + }, + "time": { + "modified": "2018-05-11T12:10:20.922Z", + "created": "2013-12-07T06:09:46.299Z", + "0.0.0": "2013-12-07T06:09:48.297Z", + "0.6.0": "2013-12-08T00:36:06.595Z", + "0.7.0": "2013-12-24T02:10:40.441Z", + "0.7.1": "2013-12-24T21:58:45.125Z", + "0.7.3": "2014-01-06T19:13:46.961Z", + "0.7.4": "2014-01-10T21:57:04.827Z", + "0.7.5": "2014-01-13T21:04:55.424Z", + "0.7.6": "2014-01-19T03:43:46.191Z", + "0.8.0": "2014-01-27T05:15:59.620Z", + "0.8.1": "2014-02-02T05:49:12.091Z", + "0.8.2": "2014-02-03T22:18:34.108Z", + "0.8.3": "2014-02-06T02:21:37.894Z", + "0.8.4": "2014-02-09T02:39:35.620Z", + "0.8.5": "2014-02-10T22:05:57.196Z", + "0.8.6": "2014-02-14T07:04:48.933Z", + "0.8.7": "2014-02-20T19:02:49.368Z", + "0.8.8": "2014-02-20T22:56:32.861Z", + "0.9.0": "2014-02-25T06:16:32.434Z", + "0.9.1": "2014-02-25T15:34:00.231Z", + "0.9.2": "2014-02-25T22:29:51.748Z", + "0.9.3": "2014-03-02T23:22:22.113Z", + "0.10.0": "2014-03-23T18:53:07.403Z", + "0.10.1": "2014-03-24T08:11:43.379Z", + "0.10.2": "2014-03-25T04:20:04.786Z", + "0.10.3": "2014-03-26T23:13:06.427Z", + "0.10.4": "2014-04-25T19:48:04.430Z", + "0.10.5": "2014-06-06T19:09:26.096Z", + "0.10.6": "2014-07-29T02:42:46.414Z", + "0.11.0-rc": "2014-09-27T01:26:13.384Z", + "0.11.0-rc2": "2014-10-07T17:08:40.846Z", + "0.11.0-rc3": "2014-10-24T16:54:11.017Z", + "0.11.0": "2014-11-07T01:52:49.130Z", + "0.11.1": "2014-12-01T00:25:20.710Z", + "0.11.2": "2014-12-02T02:38:46.620Z", + "0.11.3": "2014-12-02T17:23:08.144Z", + "0.11.4": "2014-12-07T20:44:16.730Z", + "0.11.5": "2015-02-05T21:29:54.653Z", + "0.11.6": "2015-04-18T07:11:26.742Z", + "0.11.7": "2015-04-21T03:19:52.363Z", + "0.11.8": "2015-04-21T20:10:47.755Z", + "0.11.9": "2015-05-06T20:40:14.353Z", + "0.11.10": "2015-05-07T19:00:43.870Z", + "0.12.0-beta1": "2015-05-16T17:25:13.491Z", + "0.12.0-beta2": "2015-05-16T18:22:58.104Z", + "0.12.0-beta3": "2015-05-22T20:08:57.836Z", + "0.12.0-beta4": "2015-05-26T16:51:10.607Z", + "0.12.0-beta5": "2015-05-30T02:27:57.264Z", + "0.12.0-rc": "2015-06-01T20:56:52.316Z", + "0.12.0-rc2": "2015-06-04T19:00:26.474Z", + "0.12.0": "2015-06-12T17:34:35.326Z", + "0.12.0-csp": "2015-06-12T20:50:01.816Z", + "0.12.1": "2015-06-14T05:28:12.433Z", + "0.12.1-csp": "2015-06-14T05:56:45.870Z", + "0.12.1-csp.1": "2015-06-16T17:02:39.526Z", + "0.12.1-csp.2": "2015-06-16T17:14:26.645Z", + "0.12.2": "2015-06-25T14:51:59.565Z", + "0.12.3": "2015-06-25T17:38:09.802Z", + "0.12.4": "2015-06-25T22:26:20.944Z", + "0.12.5": "2015-07-02T15:04:50.935Z", + "0.12.5-csp": "2015-07-03T01:11:03.345Z", + "0.12.6": "2015-07-05T07:48:30.721Z", + "0.12.6-csp": "2015-07-05T08:24:29.694Z", + "0.12.7": "2015-07-07T18:51:27.275Z", + "0.12.7-csp": "2015-07-07T18:54:26.904Z", + "0.12.8": "2015-07-23T15:23:32.611Z", + "0.12.8-csp": "2015-07-23T18:48:02.193Z", + "0.12.9": "2015-07-31T20:31:03.040Z", + "0.12.9-csp": "2015-07-31T21:10:16.053Z", + "0.12.10": "2015-08-10T03:39:18.266Z", + "0.12.10-csp": "2015-08-10T03:58:22.274Z", + "0.12.11": "2015-08-25T16:58:07.841Z", + "0.12.11-csp": "2015-08-25T17:10:02.340Z", + "0.12.12": "2015-08-26T08:48:27.269Z", + "0.12.12-csp": "2015-08-26T09:01:23.742Z", + "1.0.0-alpha.1": "2015-08-31T20:59:27.696Z", + "1.0.0-alpha.2": "2015-09-01T20:24:39.769Z", + "0.12.13": "2015-09-07T20:10:20.284Z", + "0.12.13-csp": "2015-09-07T20:15:03.743Z", + "1.0.0-alpha.3": "2015-09-07T20:21:11.010Z", + "0.12.14": "2015-09-11T18:16:41.183Z", + "0.12.14-csp": "2015-09-11T18:19:13.220Z", + "1.0.0-alpha.4": "2015-09-11T18:27:50.726Z", + "0.12.15": "2015-09-19T21:33:22.503Z", + "0.12.15-csp": "2015-09-19T21:39:37.485Z", + "1.0.0-alpha.5": "2015-09-19T22:14:44.591Z", + "1.0.0-beta.1": "2015-09-21T19:12:57.424Z", + "0.12.16": "2015-09-25T20:20:05.130Z", + "0.12.16-csp": "2015-09-25T20:29:32.399Z", + "1.0.0-alpha.6": "2015-09-25T20:34:58.129Z", + "1.0.0-beta.2": "2015-09-25T20:53:16.825Z", + "1.0.0-alpha.7": "2015-10-02T20:13:10.203Z", + "1.0.0-beta.3": "2015-10-02T20:17:44.825Z", + "1.0.0-alpha.8": "2015-10-11T00:38:39.712Z", + "1.0.0-beta.4": "2015-10-11T00:47:41.951Z", + "1.0.0-rc.1": "2015-10-15T21:14:16.364Z", + "1.0.0-rc.2-migration": "2015-10-23T00:38:54.546Z", + "1.0.0-rc.2": "2015-10-23T00:43:40.605Z", + "1.0.0-csp": "2015-10-27T01:22:14.988Z", + "1.0.0-migration": "2015-10-27T01:31:29.819Z", + "1.0.0": "2015-10-27T01:40:01.625Z", + "1.0.1": "2015-10-27T17:58:37.258Z", + "1.0.2": "2015-10-29T01:46:40.533Z", + "1.0.3": "2015-10-29T02:13:54.069Z", + "1.0.4": "2015-10-31T20:39:46.788Z", + "1.0.5": "2015-11-05T19:36:29.856Z", + "1.0.6": "2015-11-05T19:52:41.356Z", + "1.0.7": "2015-11-06T16:38:13.280Z", + "1.0.8": "2015-11-12T21:58:57.930Z", + "1.0.9": "2015-11-23T19:32:33.193Z", + "1.0.10": "2015-11-23T19:59:21.772Z", + "1.0.10-csp": "2015-11-23T21:59:26.254Z", + "1.0.11": "2015-12-10T05:00:17.976Z", + "1.0.11-csp": "2015-12-11T13:20:49.744Z", + "1.0.12": "2015-12-17T23:12:18.653Z", + "1.0.12-csp": "2015-12-17T23:23:50.790Z", + "1.0.12-csp-1": "2015-12-18T21:35:01.682Z", + "1.0.13": "2015-12-24T22:39:46.324Z", + "1.0.13-csp": "2015-12-25T03:54:53.045Z", + "1.0.14": "2016-01-11T20:12:35.173Z", + "1.0.14-csp": "2016-01-11T20:39:19.998Z", + "1.0.15": "2016-01-18T19:43:57.031Z", + "1.0.15-csp": "2016-01-18T19:52:06.412Z", + "1.0.16": "2016-01-30T09:41:50.987Z", + "1.0.16-csp": "2016-01-30T10:38:42.919Z", + "1.0.17": "2016-02-29T01:17:27.612Z", + "1.0.17-csp": "2016-02-29T02:24:33.094Z", + "1.0.18": "2016-03-18T00:37:50.511Z", + "1.0.18-csp": "2016-03-18T00:54:16.541Z", + "1.0.19": "2016-03-25T07:19:25.592Z", + "1.0.19-csp": "2016-03-25T07:24:11.639Z", + "1.0.20": "2016-03-26T21:20:12.830Z", + "1.0.20-csp": "2016-03-26T21:24:54.499Z", + "1.0.21": "2016-04-07T22:08:12.136Z", + "1.0.21-csp": "2016-04-07T22:11:14.714Z", + "1.0.22": "2016-05-07T21:59:24.459Z", + "1.0.22-csp": "2016-05-07T22:00:53.845Z", + "1.0.23": "2016-05-11T16:20:56.995Z", + "1.0.23-csp": "2016-05-11T16:22:30.910Z", + "1.0.24": "2016-05-11T21:57:37.358Z", + "1.0.24-csp": "2016-05-11T21:59:55.010Z", + "2.0.0-alpha.1": "2016-06-10T23:34:30.472Z", + "2.0.0-alpha.2": "2016-06-13T23:36:54.955Z", + "2.0.0-alpha.3": "2016-06-15T18:22:44.981Z", + "2.0.0-alpha.4": "2016-06-16T17:00:54.200Z", + "1.0.25": "2016-06-16T22:29:30.877Z", + "1.0.25-csp": "2016-06-16T22:37:40.390Z", + "2.0.0-alpha.5": "2016-06-17T18:22:45.156Z", + "2.0.0-alpha.6": "2016-06-22T19:33:28.089Z", + "2.0.0-alpha.7": "2016-06-28T02:24:20.794Z", + "2.0.0-alpha.8": "2016-06-28T09:02:18.167Z", + "1.0.26": "2016-06-28T20:57:34.028Z", + "1.0.26-csp": "2016-06-28T21:42:53.706Z", + "2.0.0-beta.1": "2016-07-07T21:51:47.724Z", + "2.0.0-beta.2": "2016-07-17T05:51:27.401Z", + "2.0.0-beta.3": "2016-07-24T02:45:22.313Z", + "2.0.0-beta.4": "2016-07-26T02:04:31.349Z", + "2.0.0-beta.5": "2016-07-27T04:25:51.572Z", + "2.0.0-beta.6": "2016-08-01T19:27:42.081Z", + "2.0.0-beta.7": "2016-08-05T22:10:35.353Z", + "2.0.0-beta.8": "2016-08-10T04:55:41.561Z", + "2.0.0-rc.1": "2016-08-11T05:43:21.414Z", + "2.0.0-rc.2": "2016-08-16T03:39:15.211Z", + "2.0.0-rc.3": "2016-08-20T18:05:02.596Z", + "2.0.0-rc.4": "2016-08-29T19:49:11.992Z", + "2.0.0-rc.5": "2016-09-08T11:30:00.014Z", + "2.0.0-rc.6": "2016-09-13T13:21:14.193Z", + "1.0.27": "2016-09-23T19:51:40.267Z", + "1.0.27-csp": "2016-09-23T19:53:46.613Z", + "2.0.0-rc.7": "2016-09-23T22:24:58.125Z", + "1.0.28": "2016-09-27T20:45:42.280Z", + "1.0.28-csp": "2016-09-27T20:47:26.372Z", + "2.0.0-rc.8": "2016-09-27T21:08:34.332Z", + "2.0.0": "2016-09-30T18:32:13.071Z", + "2.0.1": "2016-09-30T21:12:13.389Z", + "2.0.2": "2016-10-12T04:54:13.325Z", + "2.0.3": "2016-10-13T09:27:34.643Z", + "2.0.4": "2016-11-04T20:47:12.563Z", + "2.0.5": "2016-11-05T03:47:33.287Z", + "2.0.6": "2016-11-15T23:05:12.674Z", + "2.0.7": "2016-11-16T21:54:34.348Z", + "2.0.8": "2016-11-20T03:15:06.652Z", + "2.1.0": "2016-11-22T16:15:14.206Z", + "2.1.1": "2016-11-23T21:00:48.669Z", + "2.1.2": "2016-11-23T23:42:24.420Z", + "2.1.3": "2016-11-24T00:22:21.218Z", + "2.1.4": "2016-12-02T03:01:28.900Z", + "2.1.5": "2016-12-13T03:09:37.917Z", + "2.1.6": "2016-12-13T17:22:37.865Z", + "2.1.7": "2016-12-24T16:36:26.289Z", + "2.1.8": "2016-12-28T05:54:46.485Z", + "2.1.9": "2017-01-16T23:48:18.241Z", + "2.1.10": "2017-01-17T17:17:23.075Z", + "2.2.0-beta.1": "2017-02-24T04:22:29.318Z", + "2.2.0-beta.2": "2017-02-25T00:01:22.141Z", + "2.2.0": "2017-02-26T04:32:12.374Z", + "2.2.1": "2017-02-26T13:10:58.636Z", + "2.2.2": "2017-03-09T04:23:54.613Z", + "2.2.3": "2017-03-13T08:08:12.196Z", + "2.2.4": "2017-03-13T15:08:23.692Z", + "2.2.5": "2017-03-24T04:53:46.566Z", + "2.2.6": "2017-03-27T02:46:27.224Z", + "2.3.0-beta.1": "2017-04-26T10:32:45.472Z", + "2.3.0": "2017-04-27T06:22:30.251Z", + "2.3.1": "2017-05-02T07:59:33.809Z", + "2.3.2": "2017-05-02T10:30:25.167Z", + "2.3.3": "2017-05-09T16:57:59.102Z", + "2.3.4": "2017-06-08T04:54:50.550Z", + "2.4.0": "2017-07-13T05:59:58.195Z", + "2.4.1": "2017-07-13T06:40:52.424Z", + "2.4.2": "2017-07-21T04:28:43.739Z", + "2.4.3": "2017-09-13T07:57:40.361Z", + "2.4.4": "2017-09-14T15:32:52.487Z", + "2.5.0": "2017-10-13T03:07:43.841Z", + "2.5.1": "2017-10-13T14:14:44.817Z", + "2.5.2": "2017-10-13T20:21:14.556Z", + "2.5.3": "2017-11-03T21:11:37.399Z", + "2.5.4": "2017-11-16T19:55:19.757Z", + "2.5.5": "2017-11-17T16:37:05.558Z", + "2.5.6": "2017-11-18T19:44:18.720Z", + "2.5.7": "2017-11-20T19:49:36.077Z", + "2.5.8": "2017-11-21T14:42:29.228Z", + "2.5.9": "2017-11-27T17:43:43.727Z", + "2.5.10": "2017-12-12T23:16:50.457Z", + "2.5.11": "2017-12-14T16:56:14.790Z", + "2.5.12": "2017-12-19T14:54:26.793Z", + "2.5.13": "2017-12-19T19:07:03.185Z", + "2.5.14": "2018-03-09T21:42:13.463Z", + "2.5.15": "2018-03-10T23:36:55.780Z", + "2.5.16": "2018-03-13T22:14:28.959Z", + "2.5.17-beta.0": "2018-03-23T23:29:13.819Z" + }, + "dist-tags": { + "latest": "2.5.16", + "csp": "1.0.28-csp", + "beta": "2.5.17-beta.0" + }, + "_uplinks": { + "npmjs": { + "etag": "W/\"7adcccc860251cd1e57b408f03a4a1d6\"", + "fetched": 1529779933724 + } + }, + "_distfiles": { + "vue-0.0.0.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.0.0.tgz", + "sha": "02a9248eb4a26ebc2bbf834f6db630af725ff258", + "registry": "npmjs" + }, + "vue-0.6.0.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.6.0.tgz", + "sha": "123c1a24ce6fe13c4530c03d780cb1ef966f9cde", + "registry": "npmjs" + }, + "vue-0.7.0.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.7.0.tgz", + "sha": "146d0ed809587f569b7fce39f6bac77b68ff3d47", + "registry": "npmjs" + }, + "vue-0.7.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.7.1.tgz", + "sha": "17a6ea20a5660c8614636387e15521530ff48c50", + "registry": "npmjs" + }, + "vue-0.7.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.7.3.tgz", + "sha": "61acb2ae6afb1116466bf1512c3835e0b47ac0a8", + "registry": "npmjs" + }, + "vue-0.7.4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.7.4.tgz", + "sha": "e0df485af8f62a503664c35c07ea9315dc1a5759", + "registry": "npmjs" + }, + "vue-0.7.5.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.7.5.tgz", + "sha": "2b845e2defe5d30437b8915822b2461f9ce8a9d6", + "registry": "npmjs" + }, + "vue-0.7.6.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.7.6.tgz", + "sha": "ab486851e45887879832268370fcb372c1dc87a9", + "registry": "npmjs" + }, + "vue-0.8.0.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.8.0.tgz", + "sha": "0e0ea13ca7d9672cd900d8f10c59506814db934d", + "registry": "npmjs" + }, + "vue-0.8.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.8.1.tgz", + "sha": "26bfea6b31dd8e0d5b9f3e2eda349624f8011a67", + "registry": "npmjs" + }, + "vue-0.8.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.8.2.tgz", + "sha": "c1d30517b5160982a48ea22022b6974bd1bbde6a", + "registry": "npmjs" + }, + "vue-0.8.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.8.3.tgz", + "sha": "d50bea6e4ea1a78f9252a7c84a0346ce5eb46326", + "registry": "npmjs" + }, + "vue-0.8.4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.8.4.tgz", + "sha": "88e9fa4190a56326635ec6962f3bf5469f83ee62", + "registry": "npmjs" + }, + "vue-0.8.6.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.8.6.tgz", + "sha": "a8d10dc5550a89db4f054da991a8f2ab7c196f55", + "registry": "npmjs" + }, + "vue-0.8.7.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.8.7.tgz", + "sha": "5497afc8f73b75123f40ea5dd6ceae044d6a2f26", + "registry": "npmjs" + }, + "vue-0.8.8.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.8.8.tgz", + "sha": "63fa3d8c1566f2983ddd9816a1b98b8d0612a2d0", + "registry": "npmjs" + }, + "vue-0.9.0.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.9.0.tgz", + "sha": "fdddbcf080a8121c9de827f5aba0894a97efb77d", + "registry": "npmjs" + }, + "vue-0.9.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.9.1.tgz", + "sha": "11fb26ef6fd03697b4c174440cb92bcea3a6ba4d", + "registry": "npmjs" + }, + "vue-0.9.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.9.2.tgz", + "sha": "c53dff86edcf12b941b45ca6f3b4e7d0f39fcc4e", + "registry": "npmjs" + }, + "vue-0.9.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.9.3.tgz", + "sha": "bd982661b5cec65cb8d09e33856e142315716064", + "registry": "npmjs" + }, + "vue-0.10.0.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.10.0.tgz", + "sha": "54f1eb929b53c00afe74ef8f6a44642ab50e64c9", + "registry": "npmjs" + }, + "vue-0.10.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.10.1.tgz", + "sha": "72d7a4d542e3d3d759b2ab60fc7a7cc768327278", + "registry": "npmjs" + }, + "vue-0.10.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.10.2.tgz", + "sha": "7fe8f74b103246d266137b1647fa918c4941ba87", + "registry": "npmjs" + }, + "vue-0.10.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.10.3.tgz", + "sha": "beb96bf62286b34a1db3fe0b016adce8a0b4d41a", + "registry": "npmjs" + }, + "vue-0.10.4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.10.4.tgz", + "sha": "8513bcaecb6cff65d51b91c115dffb95d1b79304", + "registry": "npmjs" + }, + "vue-0.10.5.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.10.5.tgz", + "sha": "b026812db8c853776656e662c407f13fec0936e3", + "registry": "npmjs" + }, + "vue-0.10.6.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.10.6.tgz", + "sha": "47f4e8096afd099a1885a46576b8a9eb63aee2b9", + "registry": "npmjs" + }, + "vue-0.11.0-rc.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.11.0-rc.tgz", + "sha": "ff6791fa0fb0a46d8a1facb69a0ab518fea21893", + "registry": "npmjs" + }, + "vue-0.11.0-rc2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.11.0-rc2.tgz", + "sha": "84302800170010722beeb1f6c0169fb07f2ba5ad", + "registry": "npmjs" + }, + "vue-0.11.0-rc3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.11.0-rc3.tgz", + "sha": "a7329c5f19ebcc3eb4e951edb4cfc56c8b113e7a", + "registry": "npmjs" + }, + "vue-0.11.0.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.11.0.tgz", + "sha": "81718e27f60702f6bdaddaee91b7b29c64ca5547", + "registry": "npmjs" + }, + "vue-0.11.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.11.1.tgz", + "sha": "f0a9868c2db8124277ee43a75910a3c72121df7e", + "registry": "npmjs" + }, + "vue-0.11.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.11.2.tgz", + "sha": "b079cabcd972683f4885560bacd6b16a5c4656b5", + "registry": "npmjs" + }, + "vue-0.11.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.11.3.tgz", + "sha": "e77d7dd2ab12f6729d1b78c54575b3514e72d6fe", + "registry": "npmjs" + }, + "vue-0.11.4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.11.4.tgz", + "sha": "f81897efd0ffa5de319b781e37082b50b200e59f", + "registry": "npmjs" + }, + "vue-0.11.5.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.11.5.tgz", + "sha": "aecca4cecca01662135af962935c5ae9cdd893b2", + "registry": "npmjs" + }, + "vue-0.11.6.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.11.6.tgz", + "sha": "504f0cc54a5af48e9bb3236e70825c75af71d79b", + "registry": "npmjs" + }, + "vue-0.11.7.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.11.7.tgz", + "sha": "576991d1cb376e8115d9c036690f91c44ab1bf3f", + "registry": "npmjs" + }, + "vue-0.11.8.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.11.8.tgz", + "sha": "bfe141d02920b6be16ffbe774c925dbb5a6781d8", + "registry": "npmjs" + }, + "vue-0.11.9.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.11.9.tgz", + "sha": "140cafdaa3771c3a2fe19de1ccbef636af272e25", + "registry": "npmjs" + }, + "vue-0.11.10.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.11.10.tgz", + "sha": "2395fb2735e49ab676a832f0db9950b10660b578", + "registry": "npmjs" + }, + "vue-0.12.0-beta1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.0-beta1.tgz", + "sha": "b9c8e72a552c240eec1a263be7c5612ddd90b022", + "registry": "npmjs" + }, + "vue-0.12.0-beta2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.0-beta2.tgz", + "sha": "e642d58e7d5e696890ee40c49f1378c4414f1720", + "registry": "npmjs" + }, + "vue-0.12.0-beta3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.0-beta3.tgz", + "sha": "5c3fffa8871492a4d87b17e4cfbd404684cb08b2", + "registry": "npmjs" + }, + "vue-0.12.0-beta4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.0-beta4.tgz", + "sha": "41053e39fbc4bdf20b0cc42a8006cf5807a532d6", + "registry": "npmjs" + }, + "vue-0.12.0-beta5.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.0-beta5.tgz", + "sha": "492184a5d51d4c79e88799c94fce03966ab0ddf1", + "registry": "npmjs" + }, + "vue-0.12.0-rc.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.0-rc.tgz", + "sha": "4818f0ab510fe999dbf8b676a597444083632523", + "registry": "npmjs" + }, + "vue-0.12.0-rc2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.0-rc2.tgz", + "sha": "01a9ebaa56959d00e827f0ba5313110eb3a88742", + "registry": "npmjs" + }, + "vue-0.12.0.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.0.tgz", + "sha": "ca036019f3b5cd47048ff0b57e73afbd311165f4", + "registry": "npmjs" + }, + "vue-0.12.0-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.0-csp.tgz", + "sha": "02ef952489a70697376caae57511652a9b1331de", + "registry": "npmjs" + }, + "vue-0.12.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.1.tgz", + "sha": "7b94224debeba2968aed5b4dd4b1435d668187c5", + "registry": "npmjs" + }, + "vue-0.12.1-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.1-csp.tgz", + "sha": "63629cbd69043753405d5e1f8820d1dd2b780ee8", + "registry": "npmjs" + }, + "vue-0.12.1-csp.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.1-csp.1.tgz", + "sha": "5f5aabf3b547c1e820c0ac8a19de2d8ea9fc2bf6", + "registry": "npmjs" + }, + "vue-0.12.1-csp.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.1-csp.2.tgz", + "sha": "4d30f07f9aa5696cc6ac00c3983188ca3ecaa2a5", + "registry": "npmjs" + }, + "vue-0.12.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.2.tgz", + "sha": "bcc2527e6d908bc5d843afb62a64e473c3d9af15", + "registry": "npmjs" + }, + "vue-0.12.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.3.tgz", + "sha": "a705fee53bc56dcb4f0f16f2f05d3d90b48363cd", + "registry": "npmjs" + }, + "vue-0.12.4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.4.tgz", + "sha": "fd450f9407f0fb38ea8302de91f4e5911508e21f", + "registry": "npmjs" + }, + "vue-0.12.5.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.5.tgz", + "sha": "658b8e064400cf7c28cff5089d701b554f421071", + "registry": "npmjs" + }, + "vue-0.12.5-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.5-csp.tgz", + "sha": "b786db73c42308c11c4bf42b96bcead1ef1186b3", + "registry": "npmjs" + }, + "vue-0.12.6.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.6.tgz", + "sha": "eed5cd3833df7decc86a55184aa15c5434c2453f", + "registry": "npmjs" + }, + "vue-0.12.6-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.6-csp.tgz", + "sha": "1aa08e128510b8a939435dd033ec5bdfd0c1a199", + "registry": "npmjs" + }, + "vue-0.12.7.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.7.tgz", + "sha": "8c44077e6732e784921c1d72f74c2d1426779f9f", + "registry": "npmjs" + }, + "vue-0.12.7-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.7-csp.tgz", + "sha": "93c85aefe83ec82804f9e1382a30736855833c34", + "registry": "npmjs" + }, + "vue-0.12.8.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.8.tgz", + "sha": "ae47b98ef110577ae7fd13dbfcc0ad8149bfb422", + "registry": "npmjs" + }, + "vue-0.12.8-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.8-csp.tgz", + "sha": "427682d45efd3e3103d93978b785c8b4b5be71d7", + "registry": "npmjs" + }, + "vue-0.12.9.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.9.tgz", + "sha": "1dec37396694a1b2e128ce075b857e30642ede58", + "registry": "npmjs" + }, + "vue-0.12.9-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.9-csp.tgz", + "sha": "b44f5660859ac5df457fe2c5c9fdc9658c3948f4", + "registry": "npmjs" + }, + "vue-0.12.10.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.10.tgz", + "sha": "e6a0e2131568622338da3535ed5b7b93632be3ab", + "registry": "npmjs" + }, + "vue-0.12.10-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.10-csp.tgz", + "sha": "80e48b59945b9f8094fde3553bc9a6258a347bc5", + "registry": "npmjs" + }, + "vue-0.12.11.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.11.tgz", + "sha": "e7f84e3997b4456d5706106436903dd81070c1db", + "registry": "npmjs" + }, + "vue-0.12.11-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.11-csp.tgz", + "sha": "acad59aa013bc7a8fd5a291dfdccefe6f4e65ce0", + "registry": "npmjs" + }, + "vue-0.12.12.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.12.tgz", + "sha": "2964c17154dd72de58d0f2c9962759ef7135a56f", + "registry": "npmjs" + }, + "vue-0.12.12-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.12-csp.tgz", + "sha": "6d5c02160ea23fd597d7e08598330c36a732b29d", + "registry": "npmjs" + }, + "vue-1.0.0-alpha.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0-alpha.1.tgz", + "sha": "3fa7172b997b76821a84c610cc3c11e2f411fb94", + "registry": "npmjs" + }, + "vue-1.0.0-alpha.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0-alpha.2.tgz", + "sha": "1e87c501343f3ead57da4dc5157212f83d397fb4", + "registry": "npmjs" + }, + "vue-0.12.13.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.13.tgz", + "sha": "ac6b8047adb53454fa0c21335865b7949ff63477", + "registry": "npmjs" + }, + "vue-0.12.13-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.13-csp.tgz", + "sha": "479f6c581df57b1bfb8da07ca1ba92035ffaf89a", + "registry": "npmjs" + }, + "vue-1.0.0-alpha.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0-alpha.3.tgz", + "sha": "31081bd4587079fd134085a16489f3d27672c821", + "registry": "npmjs" + }, + "vue-0.12.14.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.14.tgz", + "sha": "fdebb07621b722c346a74b5249714f5712c3ee75", + "registry": "npmjs" + }, + "vue-0.12.14-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.14-csp.tgz", + "sha": "4c3c31ab5c3b9b916bd16a628f3cd53bcf3955d7", + "registry": "npmjs" + }, + "vue-1.0.0-alpha.4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0-alpha.4.tgz", + "sha": "6111d4d57f7934d785326e5c8fe8fe46e675203b", + "registry": "npmjs" + }, + "vue-0.12.15.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.15.tgz", + "sha": "271bc83a4563ac44e78239288600a3eed4b558a2", + "registry": "npmjs" + }, + "vue-0.12.15-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.15-csp.tgz", + "sha": "0273cc2dd1c6458ebbcb16cec3664ab7e215d2a2", + "registry": "npmjs" + }, + "vue-1.0.0-alpha.5.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0-alpha.5.tgz", + "sha": "bd237c3e7933e5fed81fa566f560df0ffca88701", + "registry": "npmjs" + }, + "vue-1.0.0-beta.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0-beta.1.tgz", + "sha": "7c0da3586cca7716ae421a4cc84ba0f1c5f4bd76", + "registry": "npmjs" + }, + "vue-0.12.16.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.16.tgz", + "sha": "cf8e48237d7547f1bc1a1ff0070980a377478989", + "registry": "npmjs" + }, + "vue-0.12.16-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-0.12.16-csp.tgz", + "sha": "5461cb34120cab7ecaad989f5b8b8d15e3685f4e", + "registry": "npmjs" + }, + "vue-1.0.0-alpha.6.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0-alpha.6.tgz", + "sha": "74fb5345a965237d6ec8409ccb1eeeb4449e481b", + "registry": "npmjs" + }, + "vue-1.0.0-beta.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0-beta.2.tgz", + "sha": "d7f5a1c9473f6a0b6e0a477bda2c01b7428a3e42", + "registry": "npmjs" + }, + "vue-1.0.0-alpha.7.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0-alpha.7.tgz", + "sha": "8876b3feaece05e0579cfa571e2b37bffcbab9fb", + "registry": "npmjs" + }, + "vue-1.0.0-beta.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0-beta.3.tgz", + "sha": "314d96c528b8cf4ce67851503b0071bee61369a7", + "registry": "npmjs" + }, + "vue-1.0.0-alpha.8.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0-alpha.8.tgz", + "sha": "293521d44a7265fac0843eaf209d2b43a821e41f", + "registry": "npmjs" + }, + "vue-1.0.0-beta.4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0-beta.4.tgz", + "sha": "5c492c1877d13ad96450f978906aa87c34a2509b", + "registry": "npmjs" + }, + "vue-1.0.0-rc.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0-rc.1.tgz", + "sha": "bd5ab314dfe3a42ae3d102c2a439ff40a4ee84c5", + "registry": "npmjs" + }, + "vue-1.0.0-rc.2-migration.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0-rc.2-migration.tgz", + "sha": "4afcad21145df9d6786fdf5189bb817fbc7f5a95", + "registry": "npmjs" + }, + "vue-1.0.0-rc.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0-rc.2.tgz", + "sha": "85fa26706cb92cef3b85163b5f79d8b6b9a53d15", + "registry": "npmjs" + }, + "vue-1.0.0-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0-csp.tgz", + "sha": "fbb448a1a9e51a2f6844cdb59eb30cbbe2ca78c9", + "registry": "npmjs" + }, + "vue-1.0.0-migration.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0-migration.tgz", + "sha": "1042d3004f6721e561f3e4adbcf2dfe4cde23cd4", + "registry": "npmjs" + }, + "vue-1.0.0.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.0.tgz", + "sha": "9672e208dd776a3eaf8f4164c6c0c2d496c442f1", + "registry": "npmjs" + }, + "vue-1.0.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.1.tgz", + "sha": "ef198f2d9055cac28bedf7ad6b81452492daee70", + "registry": "npmjs" + }, + "vue-1.0.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.2.tgz", + "sha": "577f2b55001dd0d8f99de867cbabb4ab579a226f", + "registry": "npmjs" + }, + "vue-1.0.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.3.tgz", + "sha": "72554202d6aedb302d0a3bcf66a2d477ff521574", + "registry": "npmjs" + }, + "vue-1.0.4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.4.tgz", + "sha": "63edbea66334a19dcee96289e1193d36bfe84a2a", + "registry": "npmjs" + }, + "vue-1.0.5.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.5.tgz", + "sha": "77d097c430232844fe7b3971455bf48512724d27", + "registry": "npmjs" + }, + "vue-1.0.6.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.6.tgz", + "sha": "33d97020b756eb3d2bf164f7533b5e308d7213ec", + "registry": "npmjs" + }, + "vue-1.0.7.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.7.tgz", + "sha": "414aeef2428e8602cdc7492e391550c33374cf30", + "registry": "npmjs" + }, + "vue-1.0.8.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.8.tgz", + "sha": "f00bddff3f08edd193c98d19166eaaece6b38bc4", + "registry": "npmjs" + }, + "vue-1.0.9.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.9.tgz", + "sha": "a2a977d0e014bca89007e324d16c696839213955", + "registry": "npmjs" + }, + "vue-1.0.10.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.10.tgz", + "sha": "4a82dbe25ec1db12b1efc207869ece7b15bb85e0", + "registry": "npmjs" + }, + "vue-1.0.10-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.10-csp.tgz", + "sha": "2f3291fef280e2763601d29f59b5d7d240fba84c", + "registry": "npmjs" + }, + "vue-1.0.11.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.11.tgz", + "sha": "60c873d8869dc2c952506870848b86043588a00b", + "registry": "npmjs" + }, + "vue-1.0.11-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.11-csp.tgz", + "sha": "714edc5b9f73bc1a4dfe759ddae8209c85916227", + "registry": "npmjs" + }, + "vue-1.0.12.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.12.tgz", + "sha": "e5e55e97620ece6c3cef7b99459a2118a221fc8c", + "registry": "npmjs" + }, + "vue-1.0.12-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.12-csp.tgz", + "sha": "a034740df8d58689f80d0f2033b34243a886b58a", + "registry": "npmjs" + }, + "vue-1.0.12-csp-1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.12-csp-1.tgz", + "sha": "2eda388ca56e6d55a2f6f27875195c3d0306a927", + "registry": "npmjs" + }, + "vue-1.0.13.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.13.tgz", + "sha": "1fb4cc7d910b557226b74eefc8a42b705e922dbe", + "registry": "npmjs" + }, + "vue-1.0.13-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.13-csp.tgz", + "sha": "3af3b12b33448f4bcc025cdc38cae043c780e712", + "registry": "npmjs" + }, + "vue-1.0.14.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.14.tgz", + "sha": "ba182760325881e6e16a1f1a3a0dd07fa2e6d3d7", + "registry": "npmjs" + }, + "vue-1.0.14-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.14-csp.tgz", + "sha": "e67245e1bca561d7ee3e3e29b20694894c3b210e", + "registry": "npmjs" + }, + "vue-1.0.15.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.15.tgz", + "sha": "e532b837c100d911170001bf0bcb2490e33bae82", + "registry": "npmjs" + }, + "vue-1.0.15-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.15-csp.tgz", + "sha": "7d51d4a95d2895e43ddcda79030fc9296ceb4100", + "registry": "npmjs" + }, + "vue-1.0.16.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.16.tgz", + "sha": "fdda77e7214b3c69e0d5b1666512e5cf42da5e4f", + "registry": "npmjs" + }, + "vue-1.0.16-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.16-csp.tgz", + "sha": "d0737fa3e67356260278c8331b7f1318c339af81", + "registry": "npmjs" + }, + "vue-1.0.17.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.17.tgz", + "sha": "d205a56230eb677b7950f668b05341d6c9ab236a", + "registry": "npmjs" + }, + "vue-1.0.17-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.17-csp.tgz", + "sha": "805530361dba186a485926933547f7e9a07449e3", + "registry": "npmjs" + }, + "vue-1.0.18.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.18.tgz", + "sha": "b4a41729ccedb077de80a34dffcfc8879b16efa4", + "registry": "npmjs" + }, + "vue-1.0.18-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.18-csp.tgz", + "sha": "ec1f9781d2d63cd3fa8a037d3c7113e6933c4f4a", + "registry": "npmjs" + }, + "vue-1.0.19.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.19.tgz", + "sha": "ba4a7f7cbf959d10e91bd4cc771f0ad3e7d05fa6", + "registry": "npmjs" + }, + "vue-1.0.19-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.19-csp.tgz", + "sha": "c779efaf8d7104436c7dcd6c0ddec659147721b2", + "registry": "npmjs" + }, + "vue-1.0.20.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.20.tgz", + "sha": "8426deb6a6ba8aed998b816701e45ac4751b8e4d", + "registry": "npmjs" + }, + "vue-1.0.20-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.20-csp.tgz", + "sha": "bcc7b1bf675f60229df78be0b60db71ae90ce731", + "registry": "npmjs" + }, + "vue-1.0.21.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.21.tgz", + "sha": "81657707db75e7ce744f1e5d9b1c579a93c759cd", + "registry": "npmjs" + }, + "vue-1.0.21-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.21-csp.tgz", + "sha": "66d75d6a865731bb781ce6f8cbd7e9a7e0411fe2", + "registry": "npmjs" + }, + "vue-1.0.22.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.22.tgz", + "sha": "826c2e224b8902bbaf1dc04d68bbc5001a74ca68", + "registry": "npmjs" + }, + "vue-1.0.22-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.22-csp.tgz", + "sha": "bb1e0d541d5aaa7d5d63a1c10b30c05f4bb1ce9a", + "registry": "npmjs" + }, + "vue-1.0.23.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.23.tgz", + "sha": "70bffb41d6740828062ba2144f8e46d20348e127", + "registry": "npmjs" + }, + "vue-1.0.23-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.23-csp.tgz", + "sha": "74b566e28f4ba54dc097b8a8dc014ccf04d5b86f", + "registry": "npmjs" + }, + "vue-1.0.24.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.24.tgz", + "sha": "c8eecb25542f3bc6f0ae113288a4eef924de6b14", + "registry": "npmjs" + }, + "vue-1.0.24-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.24-csp.tgz", + "sha": "2b60f6b63b2849e68951c4266e8e2bd920dfd602", + "registry": "npmjs" + }, + "vue-2.0.0-alpha.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-alpha.1.tgz", + "sha": "12effd01451e3ac316931023316c53788c0d76f0", + "registry": "npmjs" + }, + "vue-2.0.0-alpha.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-alpha.2.tgz", + "sha": "26537043b44512e3a11497503be6845bb2c0da0c", + "registry": "npmjs" + }, + "vue-2.0.0-alpha.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-alpha.3.tgz", + "sha": "0c2aaf1bf7ed52ab28ab1e0aea4c255eb75acea5", + "registry": "npmjs" + }, + "vue-2.0.0-alpha.4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-alpha.4.tgz", + "sha": "de4a5c15fb86bf907e9837b4dc7c053ef87487b0", + "registry": "npmjs" + }, + "vue-1.0.25.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.25.tgz", + "sha": "a0214b916424c1dbe0e3e46b4f9df9824c9e816a", + "registry": "npmjs" + }, + "vue-1.0.25-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.25-csp.tgz", + "sha": "a77fcd9e87aaa0f507a0c63b928f9fa96d35250c", + "registry": "npmjs" + }, + "vue-2.0.0-alpha.5.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-alpha.5.tgz", + "sha": "a773285d166b87501838193c56e0b3b581f5c887", + "registry": "npmjs" + }, + "vue-2.0.0-alpha.6.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-alpha.6.tgz", + "sha": "9b36b80e08e080545121f109f3f744743df08206", + "registry": "npmjs" + }, + "vue-2.0.0-alpha.7.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-alpha.7.tgz", + "sha": "3a1dc8a126e9b473181d46ffce9f067de5a6ac8c", + "registry": "npmjs" + }, + "vue-2.0.0-alpha.8.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-alpha.8.tgz", + "sha": "6ad65a2caa8475fe983869ea066b06f17b04bc63", + "registry": "npmjs" + }, + "vue-1.0.26.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.26.tgz", + "sha": "89a3a81a15be8b364820dd601600744db6b1aafc", + "registry": "npmjs" + }, + "vue-1.0.26-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.26-csp.tgz", + "sha": "98e20abf3becab9793b6c3593edde3b8d694f0ee", + "registry": "npmjs" + }, + "vue-2.0.0-beta.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-beta.1.tgz", + "sha": "fae80ffa23945cd311e5b292941280d390f31f9b", + "registry": "npmjs" + }, + "vue-2.0.0-beta.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-beta.2.tgz", + "sha": "8d54bd51b0a6acd1d009e79815bf7bde144e3c70", + "registry": "npmjs" + }, + "vue-2.0.0-beta.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-beta.3.tgz", + "sha": "9ea79c05a76120931c628f7a75edf2a5b7e24982", + "registry": "npmjs" + }, + "vue-2.0.0-beta.4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-beta.4.tgz", + "sha": "fda7a3f301bf1f4f6fc665c5457642a8ea419918", + "registry": "npmjs" + }, + "vue-2.0.0-beta.5.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-beta.5.tgz", + "sha": "90d881a7bf5cec208b1ed9d08413107f2c126215", + "registry": "npmjs" + }, + "vue-2.0.0-beta.6.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-beta.6.tgz", + "sha": "7d2e6cbded8c0a44e8957a0c6fc65522ab8b558b", + "registry": "npmjs" + }, + "vue-2.0.0-beta.7.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-beta.7.tgz", + "sha": "fef963533c43374ebaf93451a8af1df29e19c3b1", + "registry": "npmjs" + }, + "vue-2.0.0-beta.8.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-beta.8.tgz", + "sha": "45f926ada556eb4fc500796c81e86f07e07f9c4a", + "registry": "npmjs" + }, + "vue-2.0.0-rc.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-rc.1.tgz", + "sha": "959c855df95323bf29cc3d66ae01dcfe24c88c23", + "registry": "npmjs" + }, + "vue-2.0.0-rc.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-rc.2.tgz", + "sha": "92f935c13127687a38207bb69e2dbb02e7c8141e", + "registry": "npmjs" + }, + "vue-2.0.0-rc.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-rc.3.tgz", + "sha": "3aa583897ecada9b823923a67d0b03bac9d14671", + "registry": "npmjs" + }, + "vue-2.0.0-rc.4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-rc.4.tgz", + "sha": "324ab6afbdcf20b5b606d2950ca91040d152e89b", + "registry": "npmjs" + }, + "vue-2.0.0-rc.5.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-rc.5.tgz", + "sha": "d743850882326c3203a9612f4e1bff4f045cc0ff", + "registry": "npmjs" + }, + "vue-2.0.0-rc.6.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-rc.6.tgz", + "sha": "4572daa8aac8ef1eb48559f8ac4ab8e408e2869f", + "registry": "npmjs" + }, + "vue-1.0.27.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.27.tgz", + "sha": "f56229c87d436a661bd3bb63cc7eeb264233116e", + "registry": "npmjs" + }, + "vue-1.0.27-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.27-csp.tgz", + "sha": "7c8058e5644ea4d8702c24576a1edbf03d4823e0", + "registry": "npmjs" + }, + "vue-2.0.0-rc.7.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-rc.7.tgz", + "sha": "d1549bef91986e06e50bf630ea1d3963f7ecd059", + "registry": "npmjs" + }, + "vue-1.0.28.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.28.tgz", + "sha": "ed2ff07b200bde15c87a90ef8727ceea7d38567d", + "registry": "npmjs" + }, + "vue-1.0.28-csp.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-1.0.28-csp.tgz", + "sha": "02814d502eff3e4efb6a12b882fbf3b55f1e2f1e", + "registry": "npmjs" + }, + "vue-2.0.0-rc.8.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0-rc.8.tgz", + "sha": "6436fe5bb75002ffa57230b413b695d29f7abcba", + "registry": "npmjs" + }, + "vue-2.0.0.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.0.tgz", + "sha": "2717556195650845a0141d8117ba8024ccedb2ba", + "registry": "npmjs" + }, + "vue-2.0.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.1.tgz", + "sha": "ea20979eb5440ea7da086097befd598fb548dbc1", + "registry": "npmjs" + }, + "vue-2.0.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.2.tgz", + "sha": "ae1c01ce74a5d44d41ece96b82849c11e1d45e6d", + "registry": "npmjs" + }, + "vue-2.0.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.3.tgz", + "sha": "3f7698f83d6ad1f0e35955447901672876c63fde", + "registry": "npmjs" + }, + "vue-2.0.4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.4.tgz", + "sha": "26f1e3c52c74012de6a6aa58595c6706395f1fb2", + "registry": "npmjs" + }, + "vue-2.0.5.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.5.tgz", + "sha": "b99dc7180a802d1148a508db3d84b52c09b5ca8e", + "registry": "npmjs" + }, + "vue-2.0.6.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.6.tgz", + "sha": "a867c0cc2a8292d0de7dfd42e90e7627cf762ceb", + "registry": "npmjs" + }, + "vue-2.0.7.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.7.tgz", + "sha": "83698ef4f76ce702f425b5576b06ff28e12db143", + "registry": "npmjs" + }, + "vue-2.0.8.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.0.8.tgz", + "sha": "bbc191db5e1442f208604f994f03e49ac09e69d2", + "registry": "npmjs" + }, + "vue-2.1.0.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.1.0.tgz", + "sha": "293ba3efaaca846aa6bcbfac45cf8524cc597e3d", + "registry": "npmjs" + }, + "vue-2.1.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.1.1.tgz", + "sha": "8a1653e19a3ea4d44778893261a9f3c5a70c083b", + "registry": "npmjs" + }, + "vue-2.1.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.1.2.tgz", + "sha": "0f94cf1779a405a460bf945e5bc27cfc3cf64d60", + "registry": "npmjs" + }, + "vue-2.1.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.1.3.tgz", + "sha": "20161b8684777754fd9823134b38f13c1e197882", + "registry": "npmjs" + }, + "vue-2.1.4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.1.4.tgz", + "sha": "d490f8fcf696847d8cf7f8eb9168e9a5dd806bfc", + "registry": "npmjs" + }, + "vue-2.1.5.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.1.5.tgz", + "sha": "d2568d3e5093cf1486eef44cf37177e3f51d568d", + "registry": "npmjs" + }, + "vue-2.1.6.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.1.6.tgz", + "sha": "2fc0024c07479ac6bc7d34a2cd5ef9ca5e90b143", + "registry": "npmjs" + }, + "vue-2.1.7.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.1.7.tgz", + "sha": "747880cb70a50c66cb8791aacfee7a6dab7fc842", + "registry": "npmjs" + }, + "vue-2.1.8.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.1.8.tgz", + "sha": "ae30aa86024fccf5535292ce414e7b4c221a1756", + "registry": "npmjs" + }, + "vue-2.1.9.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.1.9.tgz", + "sha": "19ad2eae01f7c9eb911e089f65ed579bbf5ab9dd", + "registry": "npmjs" + }, + "vue-2.1.10.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.1.10.tgz", + "sha": "c9235ca48c7925137be5807832ac4e3ac180427b", + "registry": "npmjs" + }, + "vue-2.2.0-beta.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.2.0-beta.1.tgz", + "sha": "e481b0c0af9aed0c1884c16f7cb843e57a3e4d1c", + "registry": "npmjs" + }, + "vue-2.2.0-beta.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.2.0-beta.2.tgz", + "sha": "4a03a307e377c58ee4f440d8100ac8b23a0e478f", + "registry": "npmjs" + }, + "vue-2.2.0.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.2.0.tgz", + "sha": "f4586920ce36d53944ab27ac5236ed9303a46b47", + "registry": "npmjs" + }, + "vue-2.2.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.2.1.tgz", + "sha": "ddbfd2f0caf38f374f5a36eea2e1edf25225b68e", + "registry": "npmjs" + }, + "vue-2.2.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.2.2.tgz", + "sha": "17ed34028a6ab4de855738a1d7beabdf409ee23f", + "registry": "npmjs" + }, + "vue-2.2.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.2.3.tgz", + "sha": "62174ade45f262efa4dba6f49ec613c6d2fc279c", + "registry": "npmjs" + }, + "vue-2.2.4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.2.4.tgz", + "sha": "d0a3a050a80a12356d7950ae5a7b3131048209cc", + "registry": "npmjs" + }, + "vue-2.2.5.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.2.5.tgz", + "sha": "528eba68447d7eff99f86767b31176aa656c6963", + "registry": "npmjs" + }, + "vue-2.2.6.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.2.6.tgz", + "sha": "451714b394dd6d4eae7b773c40c2034a59621aed", + "registry": "npmjs" + }, + "vue-2.3.0-beta.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.3.0-beta.1.tgz", + "sha": "cea07a499c561f535ee320d623fd17a775c1591b", + "registry": "npmjs" + }, + "vue-2.3.0.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.3.0.tgz", + "sha": "bc44db0488c5245c788304c7683efe7b4c862d82", + "registry": "npmjs" + }, + "vue-2.3.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.3.1.tgz", + "sha": "cecc3a229160747f3fb01eb2f03dd04e82420462", + "registry": "npmjs" + }, + "vue-2.3.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.3.2.tgz", + "sha": "9e52aae3593480be235ff227557837e69f98203a", + "registry": "npmjs" + }, + "vue-2.3.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.3.3.tgz", + "sha": "d1eaa8fde5240735a4563e74f2c7fead9cbb064c", + "registry": "npmjs" + }, + "vue-2.3.4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.3.4.tgz", + "sha": "5ec3b87a191da8090bbef56b7cfabd4158038171", + "registry": "npmjs" + }, + "vue-2.4.0.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.4.0.tgz", + "sha": "f462d15f12f73bb40d795365cf3c45431296d6f7", + "registry": "npmjs" + }, + "vue-2.4.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.4.1.tgz", + "sha": "76e0b8eee614613532216b7bfe784e0b5695b160", + "registry": "npmjs" + }, + "vue-2.4.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.4.2.tgz", + "sha": "a9855261f191c978cc0dc1150531b8d08149b58c", + "registry": "npmjs" + }, + "vue-2.4.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.4.3.tgz", + "sha": "55fee0ec509cf2e10aa73b34b15219e92a9ab9ea", + "registry": "npmjs" + }, + "vue-2.4.4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.4.4.tgz", + "sha": "ea9550b96a71465fd2b8b17b61673b3561861789", + "registry": "npmjs" + }, + "vue-2.5.0.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.0.tgz", + "sha": "7f0706c0804257e8d42e5970e1a36e648483988d", + "registry": "npmjs" + }, + "vue-2.5.1.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.1.tgz", + "sha": "1d904b18a2bcbbfc68879f105e29d9a4dd715ff8", + "registry": "npmjs" + }, + "vue-2.5.2.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.2.tgz", + "sha": "fd367a87bae7535e47f9dc5c9ec3b496e5feb5a4", + "registry": "npmjs" + }, + "vue-2.5.3.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.3.tgz", + "sha": "e1a3b1f49b6e93e574ce040b95cbc873912fecc1", + "registry": "npmjs" + }, + "vue-2.5.4.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.4.tgz", + "sha": "4405e30b856875553e8fadb0ebf50f51ffc443f5", + "registry": "npmjs" + }, + "vue-2.5.5.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.5.tgz", + "sha": "cc3cd9b2a4f1d7356861ae0f71da0e6beb091910", + "registry": "npmjs" + }, + "vue-2.5.6.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.6.tgz", + "sha": "73654fefa4b37f25dfc657b8b834b44c90822cd7", + "registry": "npmjs" + }, + "vue-2.5.7.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.7.tgz", + "sha": "313ab26025915d9fdbc39db756548cb4bb50eb44", + "registry": "npmjs" + }, + "vue-2.5.8.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.8.tgz", + "sha": "f855c1c27255184a82225f4bef225473e8faf15b", + "registry": "npmjs" + }, + "vue-2.5.9.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.9.tgz", + "sha": "b2380cd040915dca69881dafd121d760952e65f7", + "registry": "npmjs" + }, + "vue-2.5.10.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.10.tgz", + "sha": "dcd772e2594ba994145f2f09522149d9a1e7841a", + "registry": "npmjs" + }, + "vue-2.5.11.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.11.tgz", + "sha": "80ca2657aa81f03545cd8dd5a2f55454641e6405", + "registry": "npmjs" + }, + "vue-2.5.12.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.12.tgz", + "sha": "88bb58307b51d9dd9f772019765c0d110da816e7", + "registry": "npmjs" + }, + "vue-2.5.13.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.13.tgz", + "sha": "95bd31e20efcf7a7f39239c9aa6787ce8cf578e1", + "registry": "npmjs" + }, + "vue-2.5.14.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.14.tgz", + "sha": "74cb248a471053939abf6cdf2c406d4c311ab5a7", + "registry": "npmjs" + }, + "vue-2.5.15.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.15.tgz", + "sha": "fdb67861dde967cd8d1b53116380f2f269b45202", + "registry": "npmjs" + }, + "vue-2.5.16.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.16.tgz", + "sha": "07edb75e8412aaeed871ebafa99f4672584a0085", + "registry": "npmjs" + }, + "vue-2.5.17-beta.0.tgz": { + "url": "https://registry.npmjs.org/vue/-/vue-2.5.17-beta.0.tgz", + "sha": "b9985447818827306beee146923a1bd64f1bb834", + "registry": "npmjs" + } + }, + "_attachments": {}, + "_rev": "17-ad64c6287118d7af", + "readme": "

\"Vue

\n\n

\n \"Build\n \"Coverage\n \"Downloads\"\n \"Version\"\n \"License\"\n \"Chat\"\n
\n \"Sauce\n

\n\n

Supporting Vue.js

\n\nVue.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:\n\n- [Become a backer or sponsor on Patreon](https://www.patreon.com/evanyou).\n- [Become a backer or sponsor on Open Collective](https://opencollective.com/vuejs).\n- [One-time donation via PayPal or crypto-currencies.](https://vuejs.org/support-vuejs/#One-time-Donations)\n\n#### What's the difference between Patreon and OpenCollective?\n\nFunds 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.\n\n

Special Sponsors

\n\n\n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n
\n\n\n

Sponsors via Patreon

\n\n

Platinum

\n\n\n\n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n
\n\n\n

Gold

\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n\n\n

Sponsors via Open Collective

\n\n

Platinum

\n\n\n\n\n

Gold

\n\n\n\n\n\n\n\n---\n\n## Introduction\n\nVue (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.\n\n#### Browser Compatibility\n\nVue.js supports all browsers that are [ES5-compliant](http://kangax.github.io/compat-table/es5/) (IE8 and below are not supported).\n\n## Ecosystem\n\n| Project | Status | Description |\n|---------|--------|-------------|\n| [vue-router] | [![vue-router-status]][vue-router-package] | Single-page application routing |\n| [vuex] | [![vuex-status]][vuex-package] | Large-scale state management |\n| [vue-cli] | [![vue-cli-status]][vue-cli-package] | Project scaffolding |\n| [vue-loader] | [![vue-loader-status]][vue-loader-package] | Single File Component (`*.vue` file) loader for webpack |\n| [vue-server-renderer] | [![vue-server-renderer-status]][vue-server-renderer-package] | Server-side rendering support |\n| [vue-class-component] | [![vue-class-component-status]][vue-class-component-package] | TypeScript decorator for a class-based API |\n| [vue-rx] | [![vue-rx-status]][vue-rx-package] | RxJS integration |\n| [vue-devtools] | [![vue-devtools-status]][vue-devtools-package] | Browser DevTools extension |\n\n[vue-router]: https://github.com/vuejs/vue-router\n[vuex]: https://github.com/vuejs/vuex\n[vue-cli]: https://github.com/vuejs/vue-cli\n[vue-loader]: https://github.com/vuejs/vue-loader\n[vue-server-renderer]: https://github.com/vuejs/vue/tree/dev/packages/vue-server-renderer\n[vue-class-component]: https://github.com/vuejs/vue-class-component\n[vue-rx]: https://github.com/vuejs/vue-rx\n[vue-devtools]: https://github.com/vuejs/vue-devtools\n\n[vue-router-status]: https://img.shields.io/npm/v/vue-router.svg\n[vuex-status]: https://img.shields.io/npm/v/vuex.svg\n[vue-cli-status]: https://img.shields.io/npm/v/vue-cli.svg\n[vue-loader-status]: https://img.shields.io/npm/v/vue-loader.svg\n[vue-server-renderer-status]: https://img.shields.io/npm/v/vue-server-renderer.svg\n[vue-class-component-status]: https://img.shields.io/npm/v/vue-class-component.svg\n[vue-rx-status]: https://img.shields.io/npm/v/vue-rx.svg\n[vue-devtools-status]: https://img.shields.io/chrome-web-store/v/nhdogjmejiglipccpnnnanhbledajbpd.svg\n\n[vue-router-package]: https://npmjs.com/package/vue-router\n[vuex-package]: https://npmjs.com/package/vuex\n[vue-cli-package]: https://npmjs.com/package/vue-cli\n[vue-loader-package]: https://npmjs.com/package/vue-loader\n[vue-server-renderer-package]: https://npmjs.com/package/vue-server-renderer\n[vue-class-component-package]: https://npmjs.com/package/vue-class-component\n[vue-rx-package]: https://npmjs.com/package/vue-rx\n[vue-devtools-package]: https://chrome.google.com/webstore/detail/vuejs-devtools/nhdogjmejiglipccpnnnanhbledajbpd\n\n## Documentation\n\nTo check out [live examples](https://vuejs.org/v2/examples/) and docs, visit [vuejs.org](https://vuejs.org).\n\n## Questions\n\nFor 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.\n\n## Issues\n\nPlease 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.\n\n## Changelog\n\nDetailed changes for each release are documented in the [release notes](https://github.com/vuejs/vue/releases).\n\n## Stay In Touch\n\n- [Twitter](https://twitter.com/vuejs)\n- [Blog](https://medium.com/the-vue-point)\n- [Job Board](https://vuejobs.com/?ref=vuejs)\n\n## Contribution\n\nPlease 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)!\n\nThank you to all the people who already contributed to Vue!\n\n\n\n\n## License\n\n[MIT](http://opensource.org/licenses/MIT)\n\nCopyright (c) 2013-present, Yuxi (Evan) You" +} \ No newline at end of file diff --git a/test/unit/partials/config/yaml/pkg.access.spec.yaml b/packages/server/test/package-access/pkg.access.yaml similarity index 57% rename from test/unit/partials/config/yaml/pkg.access.spec.yaml rename to packages/server/test/package-access/pkg.access.yaml index aacf91126..7914a2919 100644 --- a/test/unit/partials/config/yaml/pkg.access.spec.yaml +++ b/packages/server/test/package-access/pkg.access.yaml @@ -1,7 +1,7 @@ storage: ./storage_default_storage -uplinks: - remote: - url: http://localhost:4873/ +auth: + htpasswd: + file: ./htpasswd packages: '@*/*': access: $all @@ -10,4 +10,4 @@ packages: access: $all proxy: remote logs: - - { type: stdout, format: pretty, level: trace } + - { type: stdout, format: pretty, level: warn } diff --git a/test/unit/modules/auth/profile.spec.ts b/packages/server/test/profile/index.spec.ts similarity index 65% rename from test/unit/modules/auth/profile.spec.ts rename to packages/server/test/profile/index.spec.ts index 1c2d6abe5..a99cf6bd2 100644 --- a/test/unit/modules/auth/profile.spec.ts +++ b/packages/server/test/profile/index.spec.ts @@ -1,57 +1,54 @@ import request from 'supertest'; -import _ from 'lodash'; import path from 'path'; -import rimraf from 'rimraf'; -import endPointAPI from '../../../../src/api'; -import { mockServer } from '../../__helper/mock'; -import { parseConfigFile } from '../../../../src/lib/utils'; -import { parseConfigurationFile } from '../../__helper'; -import { getNewToken, getProfile, postProfile } from '../../__helper/api'; -import { setup } from '../../../../src/lib/logger'; -import { API_ERROR, HTTP_STATUS, SUPPORT_ERRORS } from '../../../../src/lib/constants'; +import endPointAPI from '@verdaccio/server'; +import {mockServer} from '@verdaccio/mock'; +import {API_ERROR, HTTP_STATUS, SUPPORT_ERRORS} from '@verdaccio/dev-commons'; +import {setup, logger} from '@verdaccio/logger'; + +import {generateRamdonStorage, getNewToken, getProfile, postProfile, configExample, DOMAIN_SERVERS} from '@verdaccio/mock'; setup([]); -const parseConfigurationProfile = () => { - return parseConfigurationFile(`profile/profile`); -}; describe('endpoint user profile', () => { let app; let mockRegistry; jest.setTimeout(20000); - beforeAll(function (done) { - const store = path.join(__dirname, '../../partials/store/test-profile-storage'); + beforeAll(async (done) => { + const store = generateRamdonStorage(); const mockServerPort = 55544; - rimraf(store, async () => { - const parsedConfig = parseConfigFile(parseConfigurationProfile()); - const configForTest = _.assign({}, _.cloneDeep(parsedConfig), { - storage: store, - auth: { - htpasswd: { - file: './test-profile-storage/.htpasswd-auth-profile' - } - }, - self_path: store - }); - app = await endPointAPI(configForTest); - mockRegistry = await mockServer(mockServerPort).init(); - done(); - }); - }); + const configForTest = configExample({ + storage: store, + uplinks: { + remote: { + url: `http://${DOMAIN_SERVERS}:${mockServerPort}` + } + }, + self_path: store + }, 'profile.yaml', __dirname); - afterAll(function (done) { - mockRegistry[0].stop(); + app = await endPointAPI(configForTest); + const binPath = require.resolve('verdaccio/bin/verdaccio'); + const storePath = path.join(__dirname, '/mock/store'); + mockRegistry = await mockServer(mockServerPort, { storePath, silence: true }).init(binPath); done(); }); + afterAll(function(done) { + const [registry, pid] = mockRegistry; + registry.stop(); + logger.info(`registry ${pid} has been stopped`); + + done(); + }); + + test('should fetch a profile of logged user', async (done) => { const credentials = { name: 'JotaJWT', password: 'secretPass' }; const token = await getNewToken(request(app), credentials); const [err1, res1] = await getProfile(request(app), token); - expect(err1).toBeNull(); expect(res1.body.name).toBe(credentials.name); done(); @@ -63,7 +60,7 @@ describe('endpoint user profile', () => { const body = { password: { new: '12345678', - old: credentials.password + old: credentials.password, } }; const token = await getNewToken(request(app), credentials); @@ -79,7 +76,7 @@ describe('endpoint user profile', () => { const body = { password: { new: 'p1', - old: credentials.password + old: credentials.password, } }; const token = await getNewToken(request(app), credentials); @@ -99,12 +96,7 @@ describe('endpoint user profile', () => { tfa: {} }; const token = await getNewToken(request(app), credentials); - const [, resp] = await postProfile( - request(app), - body, - token, - HTTP_STATUS.SERVICE_UNAVAILABLE - ); + const [, resp] = await postProfile(request(app), body, token, HTTP_STATUS.SERVICE_UNAVAILABLE); expect(resp.error).not.toBeNull(); expect(resp.error.text).toMatch(SUPPORT_ERRORS.TFA_DISABLED); diff --git a/test/types-test/plugins/partials/config.example.js b/packages/server/test/profile/mock/store/.gitkeep similarity index 100% rename from test/types-test/plugins/partials/config.example.js rename to packages/server/test/profile/mock/store/.gitkeep diff --git a/test/unit/partials/config/yaml/profile/profile.yaml b/packages/server/test/profile/profile.yaml similarity index 75% rename from test/unit/partials/config/yaml/profile/profile.yaml rename to packages/server/test/profile/profile.yaml index 93ab64359..fa5b9e197 100644 --- a/test/unit/partials/config/yaml/profile/profile.yaml +++ b/packages/server/test/profile/profile.yaml @@ -1,15 +1,10 @@ storage: ./storage plugins: ./plugins - web: title: Verdaccio - auth: htpasswd: file: ./htpasswd -uplinks: - npmjs: - url: https://registry.npmjs.org/ security: api: jwt: @@ -24,4 +19,4 @@ packages: access: $authenticated publish: $authenticated logs: - - { type: stdout, format: pretty, level: http } + - { type: stdout, format: pretty, level: warn } diff --git a/test/unit/modules/uplinks/up-storage.spec.ts b/packages/server/test/proxy/index.spec.ts similarity index 81% rename from test/unit/modules/uplinks/up-storage.spec.ts rename to packages/server/test/proxy/index.spec.ts index f13f00616..9209e8cc1 100644 --- a/test/unit/modules/uplinks/up-storage.spec.ts +++ b/packages/server/test/proxy/index.spec.ts @@ -1,15 +1,14 @@ import _ from 'lodash'; -import ProxyStorage from '../../../../src/lib/up-storage'; -import AppConfig from '../../../../src/lib/config'; -import configExample from '../../partials/config'; -import { setup } from '../../../../src/lib/logger'; +import path from "path"; -import { Config, UpLinkConf } from '@verdaccio/types'; -import { IProxy } from '../../../../types'; -import { API_ERROR, HTTP_STATUS } from '../../../../src/lib/constants'; -import { mockServer } from '../../__helper/mock'; -import { DOMAIN_SERVERS } from '../../../functional/config.functional'; +import { Config as AppConfig } from '@verdaccio/config'; +import {Config, UpLinkConf} from '@verdaccio/types'; import { VerdaccioError } from '@verdaccio/commons-api'; +import {IProxy} from '@verdaccio/dev-types'; +import { API_ERROR, HTTP_STATUS } from "@verdaccio/dev-commons"; +import { mockServer, configExample, DOMAIN_SERVERS } from '@verdaccio/mock'; +import { ProxyStorage } from '@verdaccio/proxy'; +import {setup, logger} from '@verdaccio/logger'; setup([]); @@ -26,11 +25,16 @@ describe('UpStorge', () => { }; beforeAll(async () => { - mockRegistry = await mockServer(mockServerPort).init(); + const binPath = require.resolve('verdaccio/bin/verdaccio'); + const storePath = path.join(__dirname, '/mock/store'); + mockRegistry = await mockServer(mockServerPort, { storePath, silence: true }).init(binPath); }); - afterAll(function (done) { - mockRegistry[0].stop(); + afterAll(function(done) { + const [registry, pid] = mockRegistry; + registry.stop(); + logger.info(`registry ${pid} has been stopped`); + done(); }); @@ -55,7 +59,7 @@ describe('UpStorge', () => { test('should be get remote metadata with etag', (done) => { const proxy = generateProxy(); - proxy.getRemoteMetadata('jquery', { etag: '123456' }, (err, data, etag) => { + proxy.getRemoteMetadata('jquery', {etag: '123456'}, (err, data, etag) => { expect(err).toBeNull(); expect(_.isString(etag)).toBeTruthy(); expect(data.name).toBe('jquery'); @@ -66,7 +70,7 @@ describe('UpStorge', () => { test('should be get remote metadata package does not exist', (done) => { const proxy = generateProxy(); - proxy.getRemoteMetadata('@verdaccio/fake-package', { etag: '123456' }, (err) => { + proxy.getRemoteMetadata('@verdaccio/fake-package', {etag: '123456'}, (err) => { expect(err).not.toBeNull(); expect(err.statusCode).toBe(HTTP_STATUS.NOT_FOUND); expect(err.message).toMatch(API_ERROR.NOT_PACKAGE_UPLINK); @@ -75,21 +79,23 @@ describe('UpStorge', () => { }); }); + describe('UpStorge::fetchTarball', () => { test('should fetch a tarball from uplink', (done) => { const proxy = generateProxy(); const tarball = `http://${DOMAIN_SERVERS}:${mockServerPort}/jquery/-/jquery-1.5.1.tgz`; const stream = proxy.fetchTarball(tarball); - stream.on('error', function (err) { + stream.on('error', function(err) { expect(err).toBeNull(); done(); }); - stream.on('content-length', function (contentLength) { + stream.on('content-length', function(contentLength) { expect(contentLength).toBeDefined(); done(); }); + }); test('should throw a 404 on fetch a tarball from uplink', (done) => { @@ -97,7 +103,7 @@ describe('UpStorge', () => { const tarball = `http://${DOMAIN_SERVERS}:${mockServerPort}/jquery/-/no-exist-1.5.1.tgz`; const stream = proxy.fetchTarball(tarball); - stream.on('error', function (err: VerdaccioError) { + stream.on('error', function(err: VerdaccioError) { expect(err).not.toBeNull(); expect(err.statusCode).toBe(HTTP_STATUS.NOT_FOUND); expect(err.message).toMatch(API_ERROR.NOT_FILE_UPLINK); @@ -105,10 +111,11 @@ describe('UpStorge', () => { done(); }); - stream.on('content-length', function (contentLength) { + stream.on('content-length', function(contentLength) { expect(contentLength).toBeDefined(); done(); }); + }); test('should be offline uplink', (done) => { @@ -119,14 +126,14 @@ describe('UpStorge', () => { // to test a uplink is offline we have to be try 3 times // the default failed request are set to 2 - process.nextTick(function () { - stream.on('error', function (err) { + process.nextTick(function() { + stream.on('error', function(err) { expect(err).not.toBeNull(); // expect(err.statusCode).toBe(404); expect(proxy.failed_requests).toBe(1); const streamSecondTry = proxy.fetchTarball(tarball); - streamSecondTry.on('error', function (err) { + streamSecondTry.on('error', function(err) { expect(err).not.toBeNull(); /* code: 'ENOTFOUND', @@ -135,7 +142,7 @@ describe('UpStorge', () => { // expect(err.statusCode).toBe(404); expect(proxy.failed_requests).toBe(2); const streamThirdTry = proxy.fetchTarball(tarball); - streamThirdTry.on('error', function (err: VerdaccioError) { + streamThirdTry.on('error', function(err: VerdaccioError) { expect(err).not.toBeNull(); expect(err.statusCode).toBe(HTTP_STATUS.INTERNAL_ERROR); expect(proxy.failed_requests).toBe(2); @@ -149,16 +156,16 @@ describe('UpStorge', () => { }); describe('UpStorge::isUplinkValid', () => { + describe('valid use cases', () => { const validateUpLink = ( url: string, - tarBallUrl = `${url}/artifactory/api/npm/npm/pk1-juan/-/pk1-juan-1.0.7.tgz` - ) => { + tarBallUrl = `${url}/artifactory/api/npm/npm/pk1-juan/-/pk1-juan-1.0.7.tgz`) => { const uplinkConf = { url }; const proxy: IProxy = generateProxy(uplinkConf); return proxy.isUplinkValid(tarBallUrl); - }; + } test('should validate tarball path against uplink', () => { expect(validateUpLink('https://artifactory.mydomain.com')).toBe(true); @@ -183,12 +190,8 @@ describe('UpStorge', () => { // corner case https://github.com/verdaccio/verdaccio/issues/571 test('should validate tarball path against uplink case#6', () => { // same protocol, same domain, port === 443 which is also the standard for https - expect( - validateUpLink( - 'https://my.domain.test', - `https://my.domain.test:443/artifactory/api/npm/npm/pk1-juan/-/pk1-juan-1.0.7.tgz` - ) - ).toBe(true); + expect(validateUpLink('https://my.domain.test', + `https://my.domain.test:443/artifactory/api/npm/npm/pk1-juan/-/pk1-juan-1.0.7.tgz`)).toBe(true); }); test('should validate tarball path against uplink case#7', () => { @@ -233,8 +236,7 @@ describe('UpStorge', () => { test('should fails on validate tarball path against uplink case#4', () => { // same domain, same protocol, different port const url = 'https://subdomain.domain:5001'; - const tarBallUrl = - 'https://subdomain.domain:4000/api/npm/npm/pk1-juan/-/pk1-juan-1.0.7.tgz'; + const tarBallUrl = 'https://subdomain.domain:4000/api/npm/npm/pk1-juan/-/pk1-juan-1.0.7.tgz'; const uplinkConf = { url }; const proxy: IProxy = generateProxy(uplinkConf); @@ -251,5 +253,7 @@ describe('UpStorge', () => { expect(proxy.isUplinkValid(tarBallUrl)).toBe(false); }); }); + }); + }); diff --git a/packages/server/test/proxy/mock/store/jquery/jquery-1.5.1.tgz b/packages/server/test/proxy/mock/store/jquery/jquery-1.5.1.tgz new file mode 100644 index 000000000..aca55f3db Binary files /dev/null and b/packages/server/test/proxy/mock/store/jquery/jquery-1.5.1.tgz differ diff --git a/packages/server/test/proxy/mock/store/jquery/package.json b/packages/server/test/proxy/mock/store/jquery/package.json new file mode 100644 index 000000000..1f76451fb --- /dev/null +++ b/packages/server/test/proxy/mock/store/jquery/package.json @@ -0,0 +1,4919 @@ +{ + "name": "jquery", + "versions": { + "1.5.1": { + "name": "jquery", + "description": "jQuery: The Write Less, Do More, JavaScript Library", + "url": "jquery.com", + "keywords": [ + "util", + "dom", + "jquery" + ], + "author": { + "name": "John Resig", + "email": "jeresig@gmail.com" + }, + "contributors": [], + "dependencies": { + "jsdom": "=0.1.20", + "htmlparser": ">= 1.7.3" + }, + "lib": "lib", + "main": "./dist/node-jquery.js", + "version": "1.5.1", + "_id": "jquery@1.5.1", + "engines": { + "node": "*" + }, + "_engineSupported": true, + "_npmVersion": "0.3.15", + "_nodeVersion": "v0.4.2", + "directories": { + "lib": "./lib" + }, + "files": [ + "" + ], + "_defaultsLoaded": true, + "dist": { + "shasum": "2ae2d661e906c1a01e044a71bb5b2743942183e5", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.5.1.tgz" + }, + "deprecated": "Versions of the jquery npm package older than 1.9.0 are patched versions that don't work in web browsers. Please upgrade to >=1.11.0." + }, + "1.6.2": { + "name": "jquery", + "description": "jQuery: The Write Less, Do More, JavaScript Library", + "url": "jquery.com", + "keywords": [ + "util", + "dom", + "jquery" + ], + "author": { + "name": "John Resig", + "email": "jeresig@gmail.com" + }, + "contributors": [], + "dependencies": { + "jsdom": ">=0.2.0", + "htmlparser": ">= 1.7.3" + }, + "lib": "lib", + "main": "./dist/node-jquery.js", + "version": "1.6.2", + "_npmJsonOpts": { + "file": "/Users/coolaj86/.npm/jquery/1.6.2/package/package.json", + "wscript": false, + "contributors": false, + "serverjs": false + }, + "_id": "jquery@1.6.2", + "devDependencies": {}, + "engines": { + "node": "*" + }, + "_engineSupported": true, + "_npmVersion": "1.0.15", + "_nodeVersion": "v0.4.8", + "_defaultsLoaded": true, + "dist": { + "shasum": "01757a4c5beea29e8ae697527c3131abbe997a28", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.6.2.tgz" + }, + "scripts": {}, + "directories": {}, + "deprecated": "Versions of the jquery npm package older than 1.9.0 are patched versions that don't work in web browsers. Please upgrade to >=1.11.0." + }, + "1.6.3": { + "name": "jquery", + "description": "jQuery: The Write Less, Do More, JavaScript Library (packaged for Node.JS)", + "url": "http://jquery.com", + "keywords": [ + "util", + "dom", + "jquery" + ], + "author": { + "name": "John Resig", + "email": "jeresig@gmail.com" + }, + "contributors": [], + "dependencies": { + "jsdom": ">=0.2.0", + "htmlparser": ">= 1.7.3" + }, + "lib": ".", + "main": "./node-jquery.js", + "version": "1.6.3", + "_npmJsonOpts": { + "file": "/Users/coolaj86/.npm/jquery/1.6.3/package/package.json", + "wscript": false, + "contributors": false, + "serverjs": false + }, + "_id": "jquery@1.6.3", + "devDependencies": {}, + "engines": { + "node": "*" + }, + "_engineSupported": true, + "_npmVersion": "1.0.22", + "_nodeVersion": "v0.4.8", + "_defaultsLoaded": true, + "dist": { + "shasum": "e1f732fa7e718a6adb3ec20ae0eb2a64fd95ef01", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.6.3.tgz" + }, + "scripts": {}, + "maintainers": [ + { + "name": "coolaj86", + "email": "coolaj86@gmail.com" + } + ], + "directories": {}, + "deprecated": "Versions of the jquery npm package older than 1.9.0 are patched versions that don't work in web browsers. Please upgrade to >=1.11.0." + }, + "1.7.2": { + "name": "jquery", + "description": "jQuery: The Write Less, Do More, JavaScript Library (packaged for Node.JS)", + "version": "1.7.2", + "url": "http://jquery.com", + "homepage": "https://github.com/coolaj86/node-jquery", + "author": { + "name": "James Morrin", + "email": "treasonx@gmail.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/coolaj86/node-jquery.git" + }, + "bugs": { + "url": "https://github.com/coolaj86/node-jquery/issues" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/coolaj86/node-jquery/blob/master/LICENSE-MIT" + } + ], + "main": "lib/node-jquery", + "engines": { + "node": "0.6" + }, + "scripts": { + "test": "grunt test" + }, + "dependencies": { + "jsdom": "~0.2.14", + "htmlparser": "1.7.6", + "xmlhttprequest": "~1.3.0" + }, + "devDependencies": { + "grunt": "~0.3.8", + "nodeunit": "~0.7.4" + }, + "keywords": [ + "util", + "dom", + "jquery" + ], + "_npmUser": { + "name": "treasonx", + "email": "treasonx@gmail.com" + }, + "_id": "jquery@1.7.2", + "optionalDependencies": {}, + "_engineSupported": true, + "_npmVersion": "1.1.12", + "_nodeVersion": "v0.6.14", + "_defaultsLoaded": true, + "dist": { + "shasum": "a93746763aca75a34df4c16395b0826310d0eaf2", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.7.2.tgz" + }, + "maintainers": [ + { + "name": "coolaj86", + "email": "coolaj86@gmail.com" + }, + { + "name": "treasonx", + "email": "treasonx@gmail.com" + } + ], + "directories": {}, + "deprecated": "Versions of the jquery npm package older than 1.9.0 are patched versions that don't work in web browsers. Please upgrade to >=1.11.0." + }, + "1.7.3": { + "name": "jquery", + "description": "jQuery: The Write Less, Do More, JavaScript Library (packaged for Node.JS)", + "version": "1.7.3", + "url": "http://jquery.com", + "homepage": "https://github.com/coolaj86/node-jquery", + "author": { + "name": "James Morrin", + "email": "treasonx@gmail.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/coolaj86/node-jquery.git" + }, + "bugs": { + "url": "https://github.com/coolaj86/node-jquery/issues" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/coolaj86/node-jquery/blob/master/LICENSE-MIT" + } + ], + "main": "lib/node-jquery", + "engines": { + "node": ">=0.6" + }, + "scripts": { + "test": "grunt test" + }, + "dependencies": { + "jsdom": "~0.2.14", + "htmlparser": "1.7.6", + "xmlhttprequest": "~1.4.2", + "location": "0.0.1", + "navigator": "~1.0.1" + }, + "devDependencies": { + "grunt": "~0.3.8", + "nodeunit": "~0.7.4" + }, + "keywords": [ + "util", + "dom", + "jquery" + ], + "_id": "jquery@1.7.3", + "dist": { + "shasum": "e3d00a71612ac7e9b554b438e0987d0272ddba94", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.7.3.tgz" + }, + "maintainers": [ + { + "name": "coolaj86", + "email": "coolaj86@gmail.com" + }, + { + "name": "treasonx", + "email": "treasonx@gmail.com" + } + ], + "directories": {}, + "deprecated": "Versions of the jquery npm package older than 1.9.0 are patched versions that don't work in web browsers. Please upgrade to >=1.11.0." + }, + "1.8.2": { + "name": "jquery", + "description": "jQuery: The Write Less, Do More, JavaScript Library (packaged for Node.JS)", + "version": "1.8.2", + "url": "http://jquery.com", + "homepage": "https://github.com/coolaj86/node-jquery", + "author": { + "name": "James Morrin", + "email": "treasonx@gmail.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/coolaj86/node-jquery.git" + }, + "bugs": { + "url": "https://github.com/coolaj86/node-jquery/issues" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/coolaj86/node-jquery/blob/master/LICENSE-MIT" + } + ], + "main": "lib/node-jquery", + "engines": { + "node": ">=0.6" + }, + "scripts": { + "test": "grunt test" + }, + "dependencies": { + "jsdom": "~0.2.14", + "htmlparser": "1.7.6", + "xmlhttprequest": "~1.4.2", + "location": "0.0.1", + "navigator": "~1.0.1" + }, + "devDependencies": { + "grunt": "~0.3.8", + "nodeunit": "~0.7.4" + }, + "keywords": [ + "util", + "dom", + "jquery" + ], + "_id": "jquery@1.8.2", + "dist": { + "shasum": "46790ae07c6de38124eda90bbf7336b43df93305", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.8.2.tgz" + }, + "_npmVersion": "1.1.61", + "_npmUser": { + "name": "treasonx", + "email": "treasonx@gmail.com" + }, + "maintainers": [ + { + "name": "coolaj86", + "email": "coolaj86@gmail.com" + }, + { + "name": "treasonx", + "email": "treasonx@gmail.com" + } + ], + "directories": {}, + "deprecated": "Versions of the jquery npm package older than 1.9.0 are patched versions that don't work in web browsers. Please upgrade to >=1.11.0." + }, + "1.8.3": { + "name": "jquery", + "description": "jQuery: The Write Less, Do More, JavaScript Library (packaged for Node.JS)", + "version": "1.8.3", + "url": "http://jquery.com", + "homepage": "https://github.com/coolaj86/node-jquery", + "author": { + "name": "James Morrin", + "email": "treasonx@gmail.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/coolaj86/node-jquery.git" + }, + "bugs": { + "url": "https://github.com/coolaj86/node-jquery/issues" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/coolaj86/node-jquery/blob/master/LICENSE-MIT" + } + ], + "main": "lib/node-jquery", + "engines": { + "node": ">=0.6" + }, + "scripts": { + "test": "grunt test" + }, + "dependencies": { + "jsdom": "~0.2.14", + "htmlparser": "1.7.6", + "xmlhttprequest": "~1.4.2", + "location": "0.0.1", + "navigator": "~1.0.1", + "contextify": "~0.1.3" + }, + "devDependencies": { + "grunt": "~0.3.8", + "nodeunit": "~0.7.4" + }, + "keywords": [ + "util", + "dom", + "jquery" + ], + "_id": "jquery@1.8.3", + "dist": { + "shasum": "cfa2941c05a83d966f21347f759a6d15281c60cc", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.8.3.tgz" + }, + "_npmVersion": "1.1.61", + "_npmUser": { + "name": "treasonx", + "email": "treasonx@gmail.com" + }, + "maintainers": [ + { + "name": "coolaj86", + "email": "coolaj86@gmail.com" + }, + { + "name": "treasonx", + "email": "treasonx@gmail.com" + } + ], + "directories": {}, + "deprecated": "Versions of the jquery npm package older than 1.9.0 are patched versions that don't work in web browsers. Please upgrade to >=1.11.0." + }, + "2.1.0-beta2": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.0-beta2", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/master/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "archiver": "~0.4.10", + "grunt": "~0.4.1", + "grunt-bower-task": "~0.3.2", + "grunt-cli": "~0.1.11", + "grunt-compare-size": "~0.4.0", + "grunt-contrib-jshint": "~0.7.0", + "grunt-contrib-uglify": "~0.2.7", + "grunt-contrib-watch": "~0.5.3", + "grunt-git-authors": "~1.2.0", + "grunt-jscs-checker": "~0.2.3", + "grunt-jsonlint": "~1.0.1", + "gzip-js": "0.3.2", + "load-grunt-tasks": "~0.2.0", + "testswarm": "~1.1.0", + "requirejs": "~2.1.9", + "which": "~1.0.5" + }, + "_id": "jquery@2.1.0-beta2", + "dist": { + "shasum": "e0fbbe2beb45b4d8f808362c7c99ef5bfee7d8c6", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.0-beta2.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.11", + "_npmUser": { + "name": "jquery", + "email": "dave.methvin@gmail.com" + }, + "maintainers": [ + { + "name": "rwaldron", + "email": "waldron.rick@gmail.com" + }, + { + "name": "jquery", + "email": "npm@jquery.com" + } + ], + "directories": {} + }, + "2.1.0-beta3": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.0-beta3", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.0-beta3/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.0-beta3/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "archiver": "0.4.10", + "gzip-js": "0.3.2", + "testswarm": "1.1.0", + "load-grunt-tasks": "0.2.0", + "requirejs": "2.1.9", + "shelljs": "0.2.6", + "grunt": "0.4.2", + "grunt-cli": "0.1.11", + "grunt-contrib-jshint": "0.7.2", + "grunt-contrib-uglify": "0.2.7", + "grunt-contrib-watch": "0.5.3", + "grunt-bowercopy": "0.4.1", + "grunt-compare-size": "0.4.0", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.2.6", + "grunt-jsonlint": "1.0.4" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@2.1.0-beta3", + "dist": { + "shasum": "5a89b624d8fa625fe5fa83a12a9acb1ef8a11d02", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.0-beta3.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.21", + "_npmUser": { + "name": "jquery", + "email": "npm@jquery.org" + }, + "maintainers": [ + { + "name": "jquery", + "email": "npm@jquery.org" + } + ], + "directories": {} + }, + "1.11.0-beta3": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.0-beta3", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.0-beta3/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.0-beta3/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "archiver": "0.4.10", + "gzip-js": "0.3.2", + "testswarm": "1.1.0", + "load-grunt-tasks": "0.2.0", + "requirejs": "2.1.9", + "shelljs": "0.2.6", + "grunt": "0.4.2", + "grunt-cli": "0.1.11", + "grunt-contrib-jshint": "0.7.2", + "grunt-contrib-uglify": "0.2.7", + "grunt-contrib-watch": "0.5.3", + "grunt-bowercopy": "0.4.1", + "grunt-compare-size": "0.4.0", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.2.6", + "grunt-jsonlint": "1.0.4" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@1.11.0-beta3", + "dist": { + "shasum": "0464a6aba9f35f6c83a203caa23ab420909ce852", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.0-beta3.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.21", + "_npmUser": { + "name": "jquery", + "email": "npm@jquery.org" + }, + "maintainers": [ + { + "name": "jquery", + "email": "npm@jquery.org" + } + ], + "directories": {} + }, + "1.11.0-rc1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.0-rc1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.0-rc1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.0-rc1/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "archiver": "0.4.10", + "gzip-js": "0.3.2", + "testswarm": "1.1.0", + "load-grunt-tasks": "0.2.0", + "requirejs": "2.1.9", + "shelljs": "0.2.6", + "grunt": "0.4.2", + "grunt-cli": "0.1.11", + "grunt-contrib-jshint": "0.7.2", + "grunt-contrib-uglify": "0.2.7", + "grunt-contrib-watch": "0.5.3", + "grunt-bowercopy": "0.5.0", + "grunt-compare-size": "0.4.0", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.2.6", + "grunt-jsonlint": "1.0.4" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@1.11.0-rc1", + "dist": { + "shasum": "c2f6a4877374647b20b080c478d8dbcdfb4960ee", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.0-rc1.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.23", + "_npmUser": { + "name": "jquery", + "email": "dave.methvin@gmail.com" + }, + "maintainers": [ + { + "name": "jquery", + "email": "dave.methvin@gmail.com" + } + ], + "directories": {} + }, + "2.1.0-rc1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.0-rc1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.0-rc1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.0-rc1/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "archiver": "0.4.10", + "gzip-js": "0.3.2", + "testswarm": "1.1.0", + "load-grunt-tasks": "0.2.0", + "requirejs": "2.1.9", + "shelljs": "0.2.6", + "grunt": "0.4.2", + "grunt-cli": "0.1.11", + "grunt-contrib-jshint": "0.7.2", + "grunt-contrib-uglify": "0.2.7", + "grunt-contrib-watch": "0.5.3", + "grunt-bowercopy": "0.5.0", + "grunt-compare-size": "0.4.0", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.2.6", + "grunt-jsonlint": "1.0.4" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@2.1.0-rc1", + "dist": { + "shasum": "8c9f5d9a055c2fedb3f5269617ae649497d6a3b0", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.0-rc1.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.14", + "_npmUser": { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + "maintainers": [ + { + "name": "jquery", + "email": "npm@jquery.com" + }, + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + } + ], + "directories": {} + }, + "1.11.0": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.0", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.0/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.0/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "archiver": "0.4.10", + "gzip-js": "0.3.2", + "testswarm": "1.1.0", + "load-grunt-tasks": "0.2.0", + "requirejs": "2.1.9", + "shelljs": "0.2.6", + "grunt": "0.4.2", + "grunt-cli": "0.1.11", + "grunt-contrib-jshint": "0.7.2", + "grunt-contrib-uglify": "0.2.7", + "grunt-contrib-watch": "0.5.3", + "grunt-bowercopy": "0.5.0", + "grunt-compare-size": "0.4.0", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.2.6", + "grunt-jsonlint": "1.0.4" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@1.11.0", + "dist": { + "shasum": "c67ceee19b403650d682adcf39d5c9009814d949", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.0.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.21", + "_npmUser": { + "name": "jquery", + "email": "npm@jquery.org" + }, + "maintainers": [ + { + "name": "jquery", + "email": "npm@jquery.org" + } + ], + "directories": {} + }, + "2.1.0": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.0", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.0/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.0/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "archiver": "0.4.10", + "gzip-js": "0.3.2", + "testswarm": "1.1.0", + "load-grunt-tasks": "0.2.0", + "requirejs": "2.1.9", + "shelljs": "0.2.6", + "grunt": "0.4.2", + "grunt-cli": "0.1.11", + "grunt-contrib-jshint": "0.7.2", + "grunt-contrib-uglify": "0.2.7", + "grunt-contrib-watch": "0.5.3", + "grunt-bowercopy": "0.5.0", + "grunt-compare-size": "0.4.0", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.2.6", + "grunt-jsonlint": "1.0.4" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@2.1.0", + "dist": { + "shasum": "1c9a8c971d2b53dae10d72e16cbb5a1df16a4ace", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.0.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.21", + "_npmUser": { + "name": "jquery", + "email": "npm@jquery.org" + }, + "maintainers": [ + { + "name": "jquery", + "email": "npm@jquery.org" + } + ], + "directories": {} + }, + "2.1.1-beta1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.1-beta1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.1-beta1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.1-beta1/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.3.2", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@2.1.1-beta1", + "dist": { + "shasum": "6306c8ea1d104775f3ef8f5c26f0a32acd710a11", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.1-beta1.tgz" + }, + "_from": ".", + "_npmVersion": "1.4.6", + "_npmUser": { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + "maintainers": [ + { + "name": "jquery", + "email": "npm@jquery.com" + }, + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + } + ], + "directories": {} + }, + "1.11.1-beta1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.1-beta1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.1-beta1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.1-beta1/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.3.2", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@1.11.1-beta1", + "dist": { + "shasum": "c7eacde5e1ae06e029f1cd1b2dd444953a33e843", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.1-beta1.tgz" + }, + "_from": ".", + "_npmVersion": "1.4.6", + "_npmUser": { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + "maintainers": [ + { + "name": "jquery", + "email": "npm@jquery.com" + }, + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + } + ], + "directories": {} + }, + "2.1.1-rc1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.1-rc1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.1-rc1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.1-rc1/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@2.1.1-rc1", + "_shasum": "95c494fdbbd0cefc305260e11ad46ae49a387c3d", + "_from": ".", + "_npmVersion": "1.4.7", + "_npmUser": { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + } + ], + "dist": { + "shasum": "95c494fdbbd0cefc305260e11ad46ae49a387c3d", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.1-rc1.tgz" + }, + "directories": {} + }, + "1.11.1-rc1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.1-rc1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.1-rc1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.1-rc1/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@1.11.1-rc1", + "_shasum": "666a7df02488b48732d96e8ab9bdd34f61dd4238", + "_from": ".", + "_npmVersion": "1.4.7", + "_npmUser": { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + } + ], + "dist": { + "shasum": "666a7df02488b48732d96e8ab9bdd34f61dd4238", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.1-rc1.tgz" + }, + "directories": {} + }, + "2.1.1-rc2": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.1-rc2", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.1-rc2/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.1-rc2/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@2.1.1-rc2", + "dist": { + "shasum": "99833e415efa7ac8a4efecc5df6894b2f938a598", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.1-rc2.tgz" + }, + "_from": ".", + "_npmVersion": "1.2.25", + "_npmUser": { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + } + ], + "directories": {} + }, + "1.11.1-rc2": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.1-rc2", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.1-rc2/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.1-rc2/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@1.11.1-rc2", + "dist": { + "shasum": "a4ef3edde0864d8524c5e72f59c459fd7a9ebd17", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.1-rc2.tgz" + }, + "_from": ".", + "_npmVersion": "1.2.25", + "_npmUser": { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + } + ], + "directories": {} + }, + "2.1.1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.1/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@2.1.1", + "dist": { + "shasum": "828fc60f50f7ee5983363ef4eb01c5f70af4bd5b", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.1.tgz" + }, + "_from": ".", + "_npmVersion": "1.2.25", + "_npmUser": { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + } + ], + "directories": {} + }, + "1.11.1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.1/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@1.11.1", + "dist": { + "shasum": "b6ec928590112ebed69e1e49cbfd0025ccd60ddb", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.1.tgz" + }, + "_from": ".", + "_npmVersion": "1.2.25", + "_npmUser": { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + } + ], + "directories": {} + }, + "1.9.1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.9.1", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/master/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt" + } + ], + "scripts": { + "test": "grunt" + }, + "dependencies": {}, + "devDependencies": { + "grunt-compare-size": "~0.3.0", + "grunt-git-authors": "~1.1.0", + "grunt-update-submodules": "~0.2.0", + "grunt-contrib-watch": "~0.1.1", + "grunt-contrib-jshint": "~0.1.1", + "grunt-contrib-uglify": "~0.1.1", + "grunt": "~0.4.0", + "testswarm": "0.2.2" + }, + "keywords": [], + "gitHead": "d71f6a53927ad02d728503385d15539b73d21ac8", + "_id": "jquery@1.9.1", + "_shasum": "e4cd4835faaefbade535857613c0fc3ff2adaf34", + "_from": ".", + "_npmVersion": "1.5.0-alpha-1", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "e4cd4835faaefbade535857613c0fc3ff2adaf34", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.9.1.tgz" + }, + "directories": {} + }, + "2.1.2": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.2", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.2/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.2/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "gitHead": "a04f5ff9795fd6292117563623db44cf3f875868", + "_id": "jquery@2.1.2", + "_shasum": "b68f154cb2ea4731924883e9fe20ec199d1dc1e2", + "_from": ".", + "_npmVersion": "1.4.28", + "_npmUser": { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "b68f154cb2ea4731924883e9fe20ec199d1dc1e2", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.2.tgz" + }, + "directories": {} + }, + "1.11.2": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.2", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.2/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.2/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "gitHead": "9690801db01709bfbff5f977d07fb7cc14472908", + "_id": "jquery@1.11.2", + "_shasum": "30ab26857211c37caa83da0f6903155fe49bb72d", + "_from": ".", + "_npmVersion": "1.4.28", + "_npmUser": { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "30ab26857211c37caa83da0f6903155fe49bb72d", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.2.tgz" + }, + "directories": {} + }, + "2.1.3": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.3", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.3/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.3/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "jsdom": "1.5.0", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "gitHead": "8f2a9d9272d6ed7f32d3a484740ab342c02541e0", + "_id": "jquery@2.1.3", + "_shasum": "6ec55204673d505d39432c5bf5cfad10e1dbad2e", + "_from": ".", + "_npmVersion": "2.1.14", + "_nodeVersion": "0.11.14", + "_npmUser": { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "6ec55204673d505d39432c5bf5cfad10e1dbad2e", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.3.tgz" + }, + "directories": {} + }, + "2.1.4": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.4", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.4/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.4/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "jsdom": "1.5.0", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "gitHead": "7751e69b615c6eca6f783a81e292a55725af6b85", + "_id": "jquery@2.1.4", + "_shasum": "228bde698a0c61431dc2630a6a154f15890d2317", + "_from": ".", + "_npmVersion": "2.7.4", + "_nodeVersion": "0.12.2", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "228bde698a0c61431dc2630a6a154f15890d2317", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.4.tgz" + }, + "directories": {} + }, + "1.11.3": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.3", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.3/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.3/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "gitHead": "1472290917f17af05e98007136096784f9051fab", + "_id": "jquery@1.11.3", + "_shasum": "dd8b74278b27102d29df63eae28308a8cfa1b583", + "_from": ".", + "_npmVersion": "2.7.4", + "_nodeVersion": "0.12.2", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "dd8b74278b27102d29df63eae28308a8cfa1b583", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.3.tgz" + }, + "directories": {} + }, + "3.0.0-alpha1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.0.0-alpha1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.0.0-alpha1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.7.0", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs-checker": "0.8.1", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "load-grunt-tasks": "1.0.0", + "native-promise-only": "0.7.8-a", + "promises-aplus-tests": "2.1.0", + "q": "1.1.2", + "qunitjs": "1.17.1", + "requirejs": "2.1.17", + "sinon": "1.10.3", + "sizzle": "2.2.0", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "jsdomVersions": { + "node": "3.1.2", + "iojs": "5.3.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "2c92869b752bb8e0fe74c3183f40f3f58b7b906d", + "_id": "jquery@3.0.0-alpha1", + "_shasum": "3493d672266e21c2dffb2714f935448edebe3c62", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "3493d672266e21c2dffb2714f935448edebe3c62", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.0.0-alpha1.tgz" + }, + "directories": {} + }, + "1.12.0": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.12.0", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.12-stable/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "npm": "2.1.12", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.12.2", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "efbdc6e3f0fa3d3cd4d3d8bfa37990b707f7c2e1", + "_id": "jquery@1.12.0", + "_shasum": "44653be4e3e4628b106bf2141dfd10fbca6021ef", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.2.0", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "44653be4e3e4628b106bf2141dfd10fbca6021ef", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.12.0.tgz" + }, + "directories": {} + }, + "2.2.0": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.2.0", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.2.0/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.10.3", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "6fc01e29bdad0964f62ef56d01297039cdcadbe5", + "_id": "jquery@2.2.0", + "_shasum": "d0e84ebbf199da51bf7ec39307f19b35754e9cba", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.2.0", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "d0e84ebbf199da51bf7ec39307f19b35754e9cba", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.2.0.tgz" + }, + "directories": {} + }, + "3.0.0-beta1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.0.0-beta1", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.0.0-beta1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "native-promise-only": "0.7.8-a", + "promises-aplus-tests": "2.1.0", + "q": "1.1.2", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.10.3", + "sizzle": "2.3.0", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "2ef761afd9addf78193f5191ece03bb20c9182c2", + "_id": "jquery@3.0.0-beta1", + "_shasum": "d2a4e368e2eed7050bf66abbbb54db2ea345349d", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.2.0", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "d2a4e368e2eed7050bf66abbbb54db2ea345349d", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.0.0-beta1.tgz" + }, + "directories": {} + }, + "1.12.1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.12.1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.12-stable/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "npm": "2.1.12", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.12.2", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "56ead6ffbf8560c521e7e94518d35db42b19f5f3", + "_id": "jquery@1.12.1", + "_shasum": "9cc34ce4780d4ceb90c44328f071064f01960c18", + "_from": ".", + "_npmVersion": "2.14.19", + "_nodeVersion": "0.10.42", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "9cc34ce4780d4ceb90c44328f071064f01960c18", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.12.1.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-5-east.internal.npmjs.com", + "tmp": "tmp/jquery-1.12.1.tgz_1456168080336_0.4474994211923331" + }, + "directories": {} + }, + "2.2.1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.2.1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.2.1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.10.3", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "788eaba2f83e7b7445c7a83a50c81c0704423874", + "_id": "jquery@2.2.1", + "_shasum": "3c3e16854ad3d2ac44ac65021b17426d22ad803f", + "_from": ".", + "_npmVersion": "2.14.19", + "_nodeVersion": "0.10.42", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "3c3e16854ad3d2ac44ac65021b17426d22ad803f", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.2.1.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-9-west.internal.npmjs.com", + "tmp": "tmp/jquery-2.2.1.tgz_1456168325917_0.42471840139478445" + }, + "directories": {} + }, + "1.12.2": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.12.2", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.12-stable/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "npm": "2.1.12", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.12.2", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "a9b5f8ac96f6aa7bfc7b0795cb16d65c4f15b64e", + "_id": "jquery@1.12.2", + "_shasum": "b8a8b45937312a19eebbcf5a0589b0311c8220bb", + "_from": ".", + "_npmVersion": "3.7.3", + "_nodeVersion": "5.8.0", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "b8a8b45937312a19eebbcf5a0589b0311c8220bb", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.12.2.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/jquery-1.12.2.tgz_1458236759160_0.3557943068444729" + }, + "directories": {} + }, + "2.2.2": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.2.2", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.2.2/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.10.3", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "086d381cd2f3b4b8b0af85ecb2c9593a61e5b4bd", + "_id": "jquery@2.2.2", + "_shasum": "3e302dc61eb329a21e9efac937d731f061134c59", + "_from": ".", + "_npmVersion": "3.7.3", + "_nodeVersion": "5.8.0", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "3e302dc61eb329a21e9efac937d731f061134c59", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.2.2.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/jquery-2.2.2.tgz_1458237146417_0.4190880397800356" + }, + "directories": {} + }, + "1.12.3": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.12.3", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.12-stable/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "npm": "2.1.12", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.12.2", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "3a43d7e563314bf32970b773dd31ecf2b90813dd", + "_id": "jquery@1.12.3", + "_shasum": "1298b88b908e7c7f7501eb8c1a61f1ac8337b531", + "_from": ".", + "_npmVersion": "3.7.3", + "_nodeVersion": "5.8.0", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "1298b88b908e7c7f7501eb8c1a61f1ac8337b531", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.12.3.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/jquery-1.12.3.tgz_1459884094815_0.5328964435029775" + }, + "directories": {} + }, + "2.2.3": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.2.3", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.2.3/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.10.3", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "af22a351b2ea5801ffb1695abb3bb34d5bed9198", + "_id": "jquery@2.2.3", + "_shasum": "45e07e4190334de36c9e1a64b43b1f1373d91758", + "_from": ".", + "_npmVersion": "3.7.3", + "_nodeVersion": "5.8.0", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "45e07e4190334de36c9e1a64b43b1f1373d91758", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.2.3.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/jquery-2.2.3.tgz_1459884434885_0.992488760035485" + }, + "directories": {} + }, + "1.12.4": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.12.4", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.12-stable/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "npm": "2.1.12", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.12.2", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "5e89585e0121e72ff47de177c5ef604f3089a53d", + "_id": "jquery@1.12.4", + "_shasum": "01e1dfba290fe73deba77ceeacb0f9ba2fec9e0c", + "_from": ".", + "_npmVersion": "2.15.1", + "_nodeVersion": "0.10.45", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "01e1dfba290fe73deba77ceeacb0f9ba2fec9e0c", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.12.4.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/jquery-1.12.4.tgz_1463764744844_0.4810373710934073" + }, + "directories": {} + }, + "2.2.4": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.2.4", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.2.4/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.10.3", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "c0185ab7c75aab88762c5aae780b9d83b80eda72", + "_id": "jquery@2.2.4", + "_shasum": "2c89d6889b5eac522a7eea32c14521559c6cbf02", + "_from": ".", + "_npmVersion": "2.15.1", + "_nodeVersion": "0.10.45", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "2c89d6889b5eac522a7eea32c14521559c6cbf02", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.2.4.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/jquery-2.2.4.tgz_1463765166836_0.5834389675874263" + }, + "directories": {} + }, + "3.0.0-rc1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.0.0-rc1", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.0.0-rc1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "babel-preset-es2015": "6.6.0", + "commitplease": "2.3.1", + "core-js": "2.2.2", + "cross-spawn": "2.2.3", + "grunt": "1.0.1", + "grunt-babel": "6.0.0", + "grunt-cli": "1.2.0", + "grunt-compare-size": "0.4.2", + "grunt-contrib-jshint": "1.0.0", + "grunt-contrib-uglify": "1.0.1", + "grunt-contrib-watch": "1.0.0", + "grunt-git-authors": "3.2.0", + "grunt-jscs": "2.8.0", + "grunt-jsonlint": "1.0.7", + "grunt-newer": "1.2.0", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "husky": "0.11.4", + "insight": "0.8.1", + "jsdom": "5.6.1", + "load-grunt-tasks": "3.5.0", + "native-promise-only": "0.8.1", + "promises-aplus-tests": "2.1.1", + "q": "1.4.1", + "qunit-assert-step": "1.0.3", + "qunitjs": "1.23.1", + "requirejs": "2.2.0", + "sinon": "1.17.3", + "sizzle": "2.3.0", + "strip-json-comments": "2.0.1", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test", + "precommit": "grunt precommit_lint" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Support", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "e503a93188dc4b5b42e2340f805f2d90b404bc50", + "_id": "jquery@3.0.0-rc1", + "_shasum": "d69fc540b0a56be13e8aecde5a8766ade7a44f8e", + "_from": ".", + "_npmVersion": "2.15.1", + "_nodeVersion": "0.10.45", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "d69fc540b0a56be13e8aecde5a8766ade7a44f8e", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.0.0-rc1.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/jquery-3.0.0-rc1.tgz_1463771627380_0.12211154378019273" + }, + "directories": {} + }, + "3.0.0": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.0.0", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.0.0/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "babel-preset-es2015": "6.6.0", + "commitplease": "2.3.1", + "core-js": "2.2.2", + "cross-spawn": "2.2.3", + "grunt": "1.0.1", + "grunt-babel": "6.0.0", + "grunt-cli": "1.2.0", + "grunt-compare-size": "0.4.2", + "grunt-contrib-jshint": "1.0.0", + "grunt-contrib-uglify": "1.0.1", + "grunt-contrib-watch": "1.0.0", + "grunt-git-authors": "3.2.0", + "grunt-jscs": "2.8.0", + "grunt-jsonlint": "1.0.7", + "grunt-newer": "1.2.0", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "husky": "0.11.4", + "insight": "0.8.1", + "jsdom": "5.6.1", + "load-grunt-tasks": "3.5.0", + "native-promise-only": "0.8.1", + "promises-aplus-tests": "2.1.1", + "q": "1.4.1", + "qunit-assert-step": "1.0.3", + "qunitjs": "1.23.1", + "requirejs": "2.2.0", + "sinon": "1.17.3", + "sizzle": "2.3.0", + "strip-json-comments": "2.0.1", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test", + "precommit": "grunt precommit_lint" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Support", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "0078f86be166a8747819d5d1516776a662cb69df", + "_id": "jquery@3.0.0", + "_shasum": "95a2a9541291a9f819e016f85ba247116d03e4ab", + "_from": ".", + "_npmVersion": "2.15.1", + "_nodeVersion": "0.10.45", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "95a2a9541291a9f819e016f85ba247116d03e4ab", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.0.0.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/jquery-3.0.0.tgz_1465497191024_0.9057256667874753" + }, + "directories": {} + }, + "3.1.0": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.1.0", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.1.0/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "babel-preset-es2015": "6.6.0", + "commitplease": "2.3.1", + "core-js": "2.2.2", + "cross-spawn": "2.2.3", + "eslint-config-jquery": "0.1.6", + "grunt": "1.0.1", + "grunt-babel": "6.0.0", + "grunt-cli": "1.2.0", + "grunt-compare-size": "0.4.2", + "grunt-contrib-uglify": "1.0.1", + "grunt-contrib-watch": "1.0.0", + "grunt-eslint": "18.1.0", + "grunt-git-authors": "3.2.0", + "grunt-jsonlint": "1.0.7", + "grunt-newer": "1.2.0", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "husky": "0.11.4", + "insight": "0.8.1", + "jsdom": "5.6.1", + "load-grunt-tasks": "3.5.0", + "native-promise-only": "0.8.1", + "promises-aplus-tests": "2.1.1", + "q": "1.4.1", + "qunit-assert-step": "1.0.3", + "qunitjs": "1.23.1", + "requirejs": "2.2.0", + "sinon": "1.17.3", + "sizzle": "2.3.0", + "strip-json-comments": "2.0.1", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test", + "precommit": "grunt precommit_lint" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Support", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "6f02bc382c0529d3b4f68f6b2ad21876642dbbfe", + "_id": "jquery@3.1.0", + "_shasum": "129f6f1ae94b18f09010b008d0d6011e40613d7f", + "_from": ".", + "_npmVersion": "2.15.8", + "_nodeVersion": "4.4.7", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "129f6f1ae94b18f09010b008d0d6011e40613d7f", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.1.0.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/jquery-3.1.0.tgz_1467927964329_0.882518710102886" + }, + "directories": {} + }, + "3.1.1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.1.1", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.1.1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "babel-preset-es2015": "6.6.0", + "commitplease": "2.6.1", + "core-js": "2.2.2", + "cross-spawn": "2.2.3", + "eslint-config-jquery": "1.0.0", + "grunt": "1.0.1", + "grunt-babel": "6.0.0", + "grunt-cli": "1.2.0", + "grunt-compare-size": "0.4.2", + "grunt-contrib-uglify": "1.0.1", + "grunt-contrib-watch": "1.0.0", + "grunt-eslint": "19.0.0", + "grunt-git-authors": "3.2.0", + "grunt-jsonlint": "1.0.7", + "grunt-newer": "1.2.0", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "husky": "0.11.4", + "insight": "0.8.1", + "jsdom": "5.6.1", + "load-grunt-tasks": "3.5.0", + "native-promise-only": "0.8.1", + "promises-aplus-tests": "2.1.2", + "q": "1.4.1", + "qunit-assert-step": "1.0.3", + "qunitjs": "1.23.1", + "requirejs": "2.2.0", + "sinon": "1.17.3", + "sizzle": "2.3.3", + "strip-json-comments": "2.0.1", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test:slow", + "precommit": "grunt lint:newer", + "commitmsg": "node node_modules/commitplease" + }, + "commitplease": { + "nohook": true, + "components": [ + "Docs", + "Tests", + "Build", + "Support", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ], + "markerPattern": "^((clos|fix|resolv)(e[sd]|ing))|(refs?)", + "ticketPattern": "^((Closes|Fixes) ([a-zA-Z]{2,}-)[0-9]+)|(Refs? [^#])" + }, + "gitHead": "1b30f3ad466ebf2714d47eda34dbd7fdf6849fe3", + "_id": "jquery@3.1.1", + "_shasum": "347c1c21c7e004115e0a4da32cece041fad3c8a3", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.6.0", + "_npmUser": { + "name": "timmywil", + "email": "4timmywil@gmail.com" + }, + "dist": { + "shasum": "347c1c21c7e004115e0a4da32cece041fad3c8a3", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.1.1.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/jquery-3.1.1.tgz_1474583566957_0.15473420196212828" + }, + "directories": {} + }, + "3.2.0": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.2.0", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "JS Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.2.0/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "babel-preset-es2015": "6.6.0", + "commitplease": "2.6.1", + "core-js": "2.2.2", + "cross-spawn": "2.2.3", + "eslint-config-jquery": "1.0.0", + "grunt": "1.0.1", + "grunt-babel": "6.0.0", + "grunt-cli": "1.2.0", + "grunt-compare-size": "0.4.2", + "grunt-contrib-uglify": "1.0.1", + "grunt-contrib-watch": "1.0.0", + "grunt-eslint": "19.0.0", + "grunt-git-authors": "3.2.0", + "grunt-jsonlint": "1.0.7", + "grunt-newer": "1.2.0", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "husky": "0.11.4", + "insight": "0.8.1", + "jsdom": "5.6.1", + "load-grunt-tasks": "3.5.0", + "native-promise-only": "0.8.1", + "promises-aplus-tests": "2.1.2", + "q": "1.4.1", + "qunit-assert-step": "1.0.3", + "qunitjs": "1.23.1", + "requirejs": "2.2.0", + "sinon": "1.17.3", + "sizzle": "2.3.3", + "strip-json-comments": "2.0.1", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test:slow", + "precommit": "grunt lint:newer", + "commitmsg": "node node_modules/commitplease" + }, + "commitplease": { + "nohook": true, + "components": [ + "Docs", + "Tests", + "Build", + "Support", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ], + "markerPattern": "^((clos|fix|resolv)(e[sd]|ing))|^(refs?)", + "ticketPattern": "^((Closes|Fixes) ([a-zA-Z]{2,}-)[0-9]+)|^(Refs? [^#])" + }, + "gitHead": "a81259fff4ea0c7b4cd98f04050c829640395a31", + "_id": "jquery@3.2.0", + "_shasum": "3bdbba66e1eee0785532dddadb0e0d2521ca584b", + "_from": ".", + "_npmVersion": "4.1.2", + "_nodeVersion": "7.7.3", + "_npmUser": { + "name": "timmywil", + "email": "4timmywil@gmail.com" + }, + "dist": { + "shasum": "3bdbba66e1eee0785532dddadb0e0d2521ca584b", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.2.0.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "mgol", + "email": "m.goleb@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "timmywil", + "email": "4timmywil@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/jquery-3.2.0.tgz_1489699855733_0.5328386940527707" + }, + "directories": {} + }, + "3.2.1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.2.1", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "JS Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.2.1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "babel-preset-es2015": "6.6.0", + "commitplease": "2.6.1", + "core-js": "2.2.2", + "cross-spawn": "2.2.3", + "eslint-config-jquery": "1.0.0", + "grunt": "1.0.1", + "grunt-babel": "6.0.0", + "grunt-cli": "1.2.0", + "grunt-compare-size": "0.4.2", + "grunt-contrib-uglify": "1.0.1", + "grunt-contrib-watch": "1.0.0", + "grunt-eslint": "19.0.0", + "grunt-git-authors": "3.2.0", + "grunt-jsonlint": "1.0.7", + "grunt-newer": "1.2.0", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "husky": "0.11.4", + "insight": "0.8.1", + "jsdom": "5.6.1", + "load-grunt-tasks": "3.5.0", + "native-promise-only": "0.8.1", + "promises-aplus-tests": "2.1.2", + "q": "1.4.1", + "qunit-assert-step": "1.0.3", + "qunitjs": "1.23.1", + "requirejs": "2.2.0", + "sinon": "1.17.3", + "sizzle": "2.3.3", + "strip-json-comments": "2.0.1", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test:slow", + "precommit": "grunt lint:newer", + "commitmsg": "node node_modules/commitplease" + }, + "commitplease": { + "nohook": true, + "components": [ + "Docs", + "Tests", + "Build", + "Support", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ], + "markerPattern": "^((clos|fix|resolv)(e[sd]|ing))|^(refs?)", + "ticketPattern": "^((Closes|Fixes) ([a-zA-Z]{2,}-)[0-9]+)|^(Refs? [^#])" + }, + "gitHead": "77d2a51d0520d2ee44173afdf4e40a9201f5964e", + "_id": "jquery@3.2.1", + "_shasum": "5c4d9de652af6cd0a770154a631bba12b015c787", + "_from": ".", + "_npmVersion": "4.4.4", + "_nodeVersion": "7.7.3", + "_npmUser": { + "name": "timmywil", + "email": "4timmywil@gmail.com" + }, + "dist": { + "shasum": "5c4d9de652af6cd0a770154a631bba12b015c787", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.2.1.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "mgol", + "email": "m.goleb@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "timmywil", + "email": "4timmywil@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/jquery-3.2.1.tgz_1490036530067_0.19497186387889087" + }, + "directories": {} + }, + "3.3.0": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.3.0", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "JS Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.3.0/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": { + "archiver": "1.3.0", + "chalk": "1.1.3", + "npm": "4.4.1", + "shelljs": "0.7.7" + }, + "devDependencies": { + "babel-core": "7.0.0-beta.0", + "babel-plugin-transform-es2015-for-of": "7.0.0-beta.0", + "commitplease": "2.7.10", + "core-js": "2.4.1", + "eslint-config-jquery": "1.0.1", + "grunt": "1.0.1", + "grunt-babel": "7.0.0", + "grunt-cli": "1.2.0", + "grunt-compare-size": "0.4.2", + "grunt-contrib-uglify": "3.0.1", + "grunt-contrib-watch": "1.0.0", + "grunt-eslint": "20.0.0", + "grunt-git-authors": "3.2.0", + "grunt-jsonlint": "1.1.0", + "grunt-karma": "2.0.0", + "grunt-newer": "1.3.0", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "husky": "0.14.3", + "insight": "0.8.4", + "jsdom": "5.6.1", + "karma": "1.7.0", + "karma-browserstack-launcher": "1.3.0", + "karma-chrome-launcher": "2.2.0", + "karma-firefox-launcher": "1.0.1", + "karma-qunit": "1.2.1", + "load-grunt-tasks": "3.5.2", + "native-promise-only": "0.8.1", + "promises-aplus-tests": "2.1.2", + "q": "1.5.0", + "qunit-assert-step": "1.0.3", + "qunitjs": "1.23.1", + "raw-body": "2.2.0", + "requirejs": "2.3.3", + "sinon": "2.3.7", + "sizzle": "2.3.3", + "strip-json-comments": "2.0.1", + "testswarm": "1.1.0", + "uglify-js": "3.3.4" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test:browserless": "grunt && grunt test:slow", + "test:browser": "grunt && grunt karma:main", + "test": "grunt && grunt test:slow && grunt karma:main", + "jenkins": "npm run test:browserless", + "precommit": "grunt lint:newer qunit_fixture", + "commitmsg": "node node_modules/commitplease" + }, + "commitplease": { + "nohook": true, + "components": [ + "Docs", + "Tests", + "Build", + "Support", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ], + "markerPattern": "^((clos|fix|resolv)(e[sd]|ing))|^(refs?)", + "ticketPattern": "^((Closes|Fixes) ([a-zA-Z]{2,}-)[0-9]+)|^(Refs? [^#])" + }, + "gitHead": "9a8a1c63930edc9fb6fab9e75b3eee578762b8a5", + "_id": "jquery@3.3.0", + "_npmVersion": "5.6.0", + "_nodeVersion": "9.3.0", + "_npmUser": { + "name": "timmywil", + "email": "4timmywil@gmail.com" + }, + "dist": { + "integrity": "sha512-1SmQFTqu24RtvnvLN/D1RFIsOBGqLQYsGJgZxejd69Rw9ACBJvSgppA+A+wBcXgASwRSoX1aDN1I5ZNIrFC6Xw==", + "shasum": "06004bc2d0204ce92822a794ee8efb50283bb9ff", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.3.0.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "mgol", + "email": "m.goleb@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "timmywil", + "email": "4timmywil@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/jquery-3.3.0.tgz_1516388631205_0.827812286792323" + }, + "directories": {} + }, + "3.3.1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.3.1", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "JS Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.3.1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "babel-core": "7.0.0-beta.0", + "babel-plugin-transform-es2015-for-of": "7.0.0-beta.0", + "commitplease": "2.7.10", + "core-js": "2.4.1", + "eslint-config-jquery": "1.0.1", + "grunt": "1.0.1", + "grunt-babel": "7.0.0", + "grunt-cli": "1.2.0", + "grunt-compare-size": "0.4.2", + "grunt-contrib-uglify": "3.0.1", + "grunt-contrib-watch": "1.0.0", + "grunt-eslint": "20.0.0", + "grunt-git-authors": "3.2.0", + "grunt-jsonlint": "1.1.0", + "grunt-karma": "2.0.0", + "grunt-newer": "1.3.0", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "husky": "0.14.3", + "insight": "0.8.4", + "jsdom": "5.6.1", + "karma": "1.7.0", + "karma-browserstack-launcher": "1.3.0", + "karma-chrome-launcher": "2.2.0", + "karma-firefox-launcher": "1.0.1", + "karma-qunit": "1.2.1", + "load-grunt-tasks": "3.5.2", + "native-promise-only": "0.8.1", + "promises-aplus-tests": "2.1.2", + "q": "1.5.0", + "qunit-assert-step": "1.0.3", + "qunitjs": "1.23.1", + "raw-body": "2.2.0", + "requirejs": "2.3.3", + "sinon": "2.3.7", + "sizzle": "2.3.3", + "strip-json-comments": "2.0.1", + "testswarm": "1.1.0", + "uglify-js": "3.3.4" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test:browserless": "grunt && grunt test:slow", + "test:browser": "grunt && grunt karma:main", + "test": "grunt && grunt test:slow && grunt karma:main", + "jenkins": "npm run test:browserless", + "precommit": "grunt lint:newer qunit_fixture", + "commitmsg": "node node_modules/commitplease" + }, + "commitplease": { + "nohook": true, + "components": [ + "Docs", + "Tests", + "Build", + "Support", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ], + "markerPattern": "^((clos|fix|resolv)(e[sd]|ing))|^(refs?)", + "ticketPattern": "^((Closes|Fixes) ([a-zA-Z]{2,}-)[0-9]+)|^(Refs? [^#])" + }, + "gitHead": "9e8ec3d10fad04748176144f108d7355662ae75e", + "_id": "jquery@3.3.1", + "_npmVersion": "5.6.0", + "_nodeVersion": "9.3.0", + "_npmUser": { + "name": "timmywil", + "email": "4timmywil@gmail.com" + }, + "dist": { + "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==", + "shasum": "958ce29e81c9790f31be7792df5d4d95fc57fbca", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "mgol", + "email": "m.goleb@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "timmywil", + "email": "4timmywil@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/jquery-3.3.1.tgz_1516469230473_0.5458589680492878" + }, + "directories": {} + } + }, + "time": { + "modified": "2018-05-21T21:39:54.702Z", + "created": "2011-03-19T07:19:56.392Z", + "1.5.1": "2011-03-19T07:19:56.956Z", + "1.6.2": "2011-07-06T16:13:21.519Z", + "1.6.3": "2011-09-12T19:05:34.373Z", + "1.7.2": "2012-05-01T11:14:09.090Z", + "1.7.3": "2012-07-01T16:11:53.194Z", + "1.8.2": "2012-11-11T22:43:58.910Z", + "1.8.3": "2012-12-01T00:03:02.297Z", + "2.1.0-beta2": "2013-11-15T16:34:48.859Z", + "2.1.0-beta3": "2013-12-20T22:53:28.426Z", + "1.11.0-beta3": "2014-01-06T19:57:22.387Z", + "2.1.0-rc1": "2014-01-17T22:47:16.391Z", + "1.11.0-pre": "2014-01-16T20:38:42.912Z", + "1.11.0-rc1": "2014-01-16T21:08:36.924Z", + "1.11.0": "2014-01-23T21:07:07.184Z", + "2.1.0": "2014-01-23T21:12:47.772Z", + "2.1.1-beta1": "2014-03-24T17:05:07.581Z", + "1.11.1-beta1": "2014-03-24T17:25:14.236Z", + "2.1.1-rc1": "2014-04-18T15:29:41.423Z", + "1.11.1-rc1": "2014-04-18T15:40:23.931Z", + "2.1.1-rc2": "2014-04-21T20:52:06.866Z", + "1.11.1-rc2": "2014-04-21T21:12:52.817Z", + "2.1.1": "2014-05-01T17:15:20.164Z", + "1.11.1": "2014-05-01T18:05:32.863Z", + "1.9.1": "2014-07-17T22:01:17.886Z", + "2.1.2": "2014-12-17T14:14:28.184Z", + "1.11.2": "2014-12-17T16:07:07.647Z", + "2.1.3": "2014-12-18T15:18:38.205Z", + "2.1.4": "2015-04-28T16:17:13.648Z", + "1.11.3": "2015-04-28T16:22:06.378Z", + "3.0.0-alpha1": "2015-07-13T19:26:37.913Z", + "1.12.0": "2016-01-08T19:58:05.265Z", + "2.2.0": "2016-01-08T20:03:43.280Z", + "3.0.0-beta1": "2016-01-14T23:09:43.368Z", + "1.12.1": "2016-02-22T19:08:05.212Z", + "2.2.1": "2016-02-22T19:12:09.116Z", + "1.12.2": "2016-03-17T17:45:59.810Z", + "2.2.2": "2016-03-17T17:52:26.967Z", + "1.12.3": "2016-04-05T19:21:37.716Z", + "2.2.3": "2016-04-05T19:27:17.929Z", + "1.12.4": "2016-05-20T17:19:07.375Z", + "2.2.4": "2016-05-20T17:26:07.921Z", + "3.0.0-rc1": "2016-05-20T19:13:48.387Z", + "3.0.0": "2016-06-09T18:33:13.420Z", + "3.1.0": "2016-07-07T21:46:05.554Z", + "3.1.1": "2016-09-22T22:32:49.360Z", + "3.2.0": "2017-03-16T21:30:56.342Z", + "3.2.1": "2017-03-20T19:02:13.508Z", + "3.3.0": "2018-01-19T19:03:52.616Z", + "3.3.1": "2018-01-20T17:27:11.928Z" + }, + "dist-tags": { + "beta": "3.0.0", + "latest": "3.3.1", + "jota": "1.6.3" + }, + "_uplinks": { + "npmjs": { + "etag": "W/\"252f0a131cedd3ea82dfefd6fa049558\"", + "fetched": 1529779934081 + } + }, + "_distfiles": { + "jquery-1.5.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.5.1.tgz", + "sha": "2ae2d661e906c1a01e044a71bb5b2743942183e5", + "registry": "npmjs" + }, + "jquery-1.6.2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.6.2.tgz", + "sha": "01757a4c5beea29e8ae697527c3131abbe997a28", + "registry": "npmjs" + }, + "jquery-1.6.3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.6.3.tgz", + "sha": "e1f732fa7e718a6adb3ec20ae0eb2a64fd95ef01", + "registry": "npmjs" + }, + "jquery-1.7.2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.7.2.tgz", + "sha": "a93746763aca75a34df4c16395b0826310d0eaf2", + "registry": "npmjs" + }, + "jquery-1.7.3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.7.3.tgz", + "sha": "e3d00a71612ac7e9b554b438e0987d0272ddba94", + "registry": "npmjs" + }, + "jquery-1.8.2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.8.2.tgz", + "sha": "46790ae07c6de38124eda90bbf7336b43df93305", + "registry": "npmjs" + }, + "jquery-1.8.3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.8.3.tgz", + "sha": "cfa2941c05a83d966f21347f759a6d15281c60cc", + "registry": "npmjs" + }, + "jquery-2.1.0-beta2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.0-beta2.tgz", + "sha": "e0fbbe2beb45b4d8f808362c7c99ef5bfee7d8c6", + "registry": "npmjs" + }, + "jquery-2.1.0-beta3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.0-beta3.tgz", + "sha": "5a89b624d8fa625fe5fa83a12a9acb1ef8a11d02", + "registry": "npmjs" + }, + "jquery-1.11.0-beta3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.0-beta3.tgz", + "sha": "0464a6aba9f35f6c83a203caa23ab420909ce852", + "registry": "npmjs" + }, + "jquery-1.11.0-rc1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.0-rc1.tgz", + "sha": "c2f6a4877374647b20b080c478d8dbcdfb4960ee", + "registry": "npmjs" + }, + "jquery-2.1.0-rc1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.0-rc1.tgz", + "sha": "8c9f5d9a055c2fedb3f5269617ae649497d6a3b0", + "registry": "npmjs" + }, + "jquery-1.11.0.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.0.tgz", + "sha": "c67ceee19b403650d682adcf39d5c9009814d949", + "registry": "npmjs" + }, + "jquery-2.1.0.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.0.tgz", + "sha": "1c9a8c971d2b53dae10d72e16cbb5a1df16a4ace", + "registry": "npmjs" + }, + "jquery-2.1.1-beta1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.1-beta1.tgz", + "sha": "6306c8ea1d104775f3ef8f5c26f0a32acd710a11", + "registry": "npmjs" + }, + "jquery-1.11.1-beta1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.1-beta1.tgz", + "sha": "c7eacde5e1ae06e029f1cd1b2dd444953a33e843", + "registry": "npmjs" + }, + "jquery-2.1.1-rc1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.1-rc1.tgz", + "sha": "95c494fdbbd0cefc305260e11ad46ae49a387c3d", + "registry": "npmjs" + }, + "jquery-1.11.1-rc1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.1-rc1.tgz", + "sha": "666a7df02488b48732d96e8ab9bdd34f61dd4238", + "registry": "npmjs" + }, + "jquery-2.1.1-rc2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.1-rc2.tgz", + "sha": "99833e415efa7ac8a4efecc5df6894b2f938a598", + "registry": "npmjs" + }, + "jquery-1.11.1-rc2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.1-rc2.tgz", + "sha": "a4ef3edde0864d8524c5e72f59c459fd7a9ebd17", + "registry": "npmjs" + }, + "jquery-2.1.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.1.tgz", + "sha": "828fc60f50f7ee5983363ef4eb01c5f70af4bd5b", + "registry": "npmjs" + }, + "jquery-1.11.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.1.tgz", + "sha": "b6ec928590112ebed69e1e49cbfd0025ccd60ddb", + "registry": "npmjs" + }, + "jquery-1.9.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.9.1.tgz", + "sha": "e4cd4835faaefbade535857613c0fc3ff2adaf34", + "registry": "npmjs" + }, + "jquery-2.1.2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.2.tgz", + "sha": "b68f154cb2ea4731924883e9fe20ec199d1dc1e2", + "registry": "npmjs" + }, + "jquery-1.11.2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.2.tgz", + "sha": "30ab26857211c37caa83da0f6903155fe49bb72d", + "registry": "npmjs" + }, + "jquery-2.1.3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.3.tgz", + "sha": "6ec55204673d505d39432c5bf5cfad10e1dbad2e", + "registry": "npmjs" + }, + "jquery-2.1.4.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.4.tgz", + "sha": "228bde698a0c61431dc2630a6a154f15890d2317", + "registry": "npmjs" + }, + "jquery-1.11.3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.3.tgz", + "sha": "dd8b74278b27102d29df63eae28308a8cfa1b583", + "registry": "npmjs" + }, + "jquery-3.0.0-alpha1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.0.0-alpha1.tgz", + "sha": "3493d672266e21c2dffb2714f935448edebe3c62", + "registry": "npmjs" + }, + "jquery-1.12.0.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.12.0.tgz", + "sha": "44653be4e3e4628b106bf2141dfd10fbca6021ef", + "registry": "npmjs" + }, + "jquery-2.2.0.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.2.0.tgz", + "sha": "d0e84ebbf199da51bf7ec39307f19b35754e9cba", + "registry": "npmjs" + }, + "jquery-3.0.0-beta1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.0.0-beta1.tgz", + "sha": "d2a4e368e2eed7050bf66abbbb54db2ea345349d", + "registry": "npmjs" + }, + "jquery-1.12.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.12.1.tgz", + "sha": "9cc34ce4780d4ceb90c44328f071064f01960c18", + "registry": "npmjs" + }, + "jquery-2.2.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.2.1.tgz", + "sha": "3c3e16854ad3d2ac44ac65021b17426d22ad803f", + "registry": "npmjs" + }, + "jquery-1.12.2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.12.2.tgz", + "sha": "b8a8b45937312a19eebbcf5a0589b0311c8220bb", + "registry": "npmjs" + }, + "jquery-2.2.2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.2.2.tgz", + "sha": "3e302dc61eb329a21e9efac937d731f061134c59", + "registry": "npmjs" + }, + "jquery-1.12.3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.12.3.tgz", + "sha": "1298b88b908e7c7f7501eb8c1a61f1ac8337b531", + "registry": "npmjs" + }, + "jquery-2.2.3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.2.3.tgz", + "sha": "45e07e4190334de36c9e1a64b43b1f1373d91758", + "registry": "npmjs" + }, + "jquery-1.12.4.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.12.4.tgz", + "sha": "01e1dfba290fe73deba77ceeacb0f9ba2fec9e0c", + "registry": "npmjs" + }, + "jquery-2.2.4.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.2.4.tgz", + "sha": "2c89d6889b5eac522a7eea32c14521559c6cbf02", + "registry": "npmjs" + }, + "jquery-3.0.0-rc1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.0.0-rc1.tgz", + "sha": "d69fc540b0a56be13e8aecde5a8766ade7a44f8e", + "registry": "npmjs" + }, + "jquery-3.0.0.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.0.0.tgz", + "sha": "95a2a9541291a9f819e016f85ba247116d03e4ab", + "registry": "npmjs" + }, + "jquery-3.1.0.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.1.0.tgz", + "sha": "129f6f1ae94b18f09010b008d0d6011e40613d7f", + "registry": "npmjs" + }, + "jquery-3.1.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.1.1.tgz", + "sha": "347c1c21c7e004115e0a4da32cece041fad3c8a3", + "registry": "npmjs" + }, + "jquery-3.2.0.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.2.0.tgz", + "sha": "3bdbba66e1eee0785532dddadb0e0d2521ca584b", + "registry": "npmjs" + }, + "jquery-3.2.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.2.1.tgz", + "sha": "5c4d9de652af6cd0a770154a631bba12b015c787", + "registry": "npmjs" + }, + "jquery-3.3.0.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.3.0.tgz", + "sha": "06004bc2d0204ce92822a794ee8efb50283bb9ff", + "registry": "npmjs" + }, + "jquery-3.3.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz", + "sha": "958ce29e81c9790f31be7792df5d4d95fc57fbca", + "registry": "npmjs" + } + }, + "_attachments": { + "jquery-1.5.1.tgz": { + "shasum": "2ae2d661e906c1a01e044a71bb5b2743942183e5" + } + }, + "_rev": "60-fed4915c27b9c1e6", + "readme": "# jQuery\n\n> jQuery is a fast, small, and feature-rich JavaScript library.\n\nFor information on how to get started and how to use jQuery, please see [jQuery's documentation](http://api.jquery.com/).\nFor source files and issues, please visit the [jQuery repo](https://github.com/jquery/jquery).\n\nIf upgrading, please see the [blog post for 3.3.1](https://blog.jquery.com/2017/03/20/jquery-3.3.1-now-available/). This includes notable differences from the previous version and a more readable changelog.\n\n## Including jQuery\n\nBelow are some of the most common ways to include jQuery.\n\n### Browser\n\n#### Script tag\n\n```html\n\n```\n\n#### Babel\n\n[Babel](http://babeljs.io/) is a next generation JavaScript compiler. One of the features is the ability to use ES6/ES2015 modules now, even though browsers do not yet support this feature natively.\n\n```js\nimport $ from \"jquery\";\n```\n\n#### Browserify/Webpack\n\nThere are several ways to use [Browserify](http://browserify.org/) and [Webpack](https://webpack.github.io/). For more information on using these tools, please refer to the corresponding project's documention. In the script, including jQuery will usually look like this...\n\n```js\nvar $ = require(\"jquery\");\n```\n\n#### AMD (Asynchronous Module Definition)\n\nAMD is a module format built for the browser. For more information, we recommend [require.js' documentation](http://requirejs.org/docs/whyamd.html).\n\n```js\ndefine([\"jquery\"], function($) {\n\n});\n```\n\n### Node\n\nTo include jQuery in [Node](nodejs.org), first install with npm.\n\n```sh\nnpm install jquery\n```\n\nFor jQuery to work in Node, a window with a document is required. Since no such window exists natively in Node, one can be mocked by tools such as [jsdom](https://github.com/tmpvar/jsdom). This can be useful for testing purposes.\n\n```js\nrequire(\"jsdom\").env(\"\", function(err, window) {\n\tif (err) {\n\t\tconsole.error(err);\n\t\treturn;\n\t}\n\n\tvar $ = require(\"jquery\")(window);\n});\n```" +} \ No newline at end of file diff --git a/packages/server/test/proxy/proxy.yaml b/packages/server/test/proxy/proxy.yaml new file mode 100644 index 000000000..33dadc00b --- /dev/null +++ b/packages/server/test/proxy/proxy.yaml @@ -0,0 +1,20 @@ +storage: ./storage +plugins: ./plugins +auth: + htpasswd: + file: ./htpasswd +security: + api: + jwt: + sign: + expiresIn: 10m + notBefore: 0 +packages: + '@*/*': + access: $authenticated + publish: $authenticated + '**': + access: $authenticated + publish: $authenticated +logs: + - { type: stdout, format: pretty, level: warn } diff --git a/test/unit/modules/storage/store.spec.ts b/packages/server/test/storage/index.spec.ts similarity index 63% rename from test/unit/modules/storage/store.spec.ts rename to packages/server/test/storage/index.spec.ts index 20ab3a762..094cad50e 100644 --- a/test/unit/modules/storage/store.spec.ts +++ b/packages/server/test/storage/index.spec.ts @@ -1,100 +1,98 @@ import path from 'path'; import fs from 'fs'; -import rimraf from 'rimraf'; -import { Writable } from 'stream'; -import configExample from '../../partials/config'; -import AppConfig from '../../../../src/lib/config'; -import Storage from '../../../../src/lib/storage'; -import { setup } from '../../../../src/lib/logger'; +import {Writable} from 'stream'; +import { Config as AppConfig } from '@verdaccio/config'; +import { Storage } from '@verdaccio/store'; +import {IStorageHandler} from '@verdaccio/dev-types'; -import { Config } from '@verdaccio/types'; -import { IStorageHandler } from '../../../../types'; -import { API_ERROR, HTTP_STATUS } from '../../../../src/lib/constants'; -import { mockServer } from '../../__helper/mock'; -import { DOMAIN_SERVERS } from '../../../functional/config.functional'; +import {Config} from '@verdaccio/types'; +import {API_ERROR, HTTP_STATUS} from '@verdaccio/dev-commons'; +import {mockServer, configExample, DOMAIN_SERVERS, generateRamdonStorage} from '@verdaccio/mock'; + +import {setup, logger} from '@verdaccio/logger'; setup([]); -const storagePath = path.join(__dirname, '../../partials/store/test-storage-store.spec'); + const mockServerPort = 55548; -const generateStorage = async function (port = mockServerPort) { - const storageConfig = configExample( - { - self_path: __dirname, - storage: storagePath, - uplinks: { - npmjs: { - url: `http://${DOMAIN_SERVERS}:${port}` - } + +const generateStorage = async function() { + const storagePath = generateRamdonStorage(); + const storageConfig = configExample({ + self_path: storagePath, + storage: storagePath, + uplinks: { + npmjs: { + url: `http://${DOMAIN_SERVERS}:${mockServerPort}` } - }, - 'store.spec.yaml' - ); - - const config: Config = new AppConfig(storageConfig); - const store: IStorageHandler = new Storage(config); - await store.init(config, []); - - return store; -}; - -const generateSameUplinkStorage = async function (port = mockServerPort) { - const storageConfig = configExample( - { - self_path: __dirname, - storage: storagePath, - packages: { - jquery: { - access: ['$all'], - publish: ['$all'], - proxy: ['cached'] - }, - '@jquery/*': { - access: ['$all'], - publish: ['$all'], - proxy: ['notcached'] - } - }, - uplinks: { - cached: { - url: `http://${DOMAIN_SERVERS}:${port}`, - cache: true - }, - notcached: { - url: `http://${DOMAIN_SERVERS}:${port}`, - cache: false - } - } - }, - 'store.spec.yaml' - ); - - const config: Config = new AppConfig(storageConfig); - const store: IStorageHandler = new Storage(config); - await store.init(config, []); - - return store; -}; - -const createNullStream = () => - new Writable({ - write: function (chunk, encoding, next) { - next(); } - }); + }, 'store.spec.yaml', __dirname); + + const config: Config = new AppConfig(storageConfig); + const store: IStorageHandler = new Storage(config); + await store.init(config, []); + + return store; +}; + +const generateSameUplinkStorage = async function() { + const storagePath = generateRamdonStorage(); + console.log("-->storagePath", storagePath); + const storageConfig = configExample({ + self_path: storagePath, + storage: storagePath, + packages: { + jquery: { + access: ['$all'], + publish: ['$all'], + proxy: ['cached'], + }, + '@jquery/*': { + access: ['$all'], + publish: ['$all'], + proxy: ['notcached'], + } + }, + uplinks: { + cached: { + url: `http://${DOMAIN_SERVERS}:${mockServerPort}`, + cache: true, + }, + notcached: { + url: `http://${DOMAIN_SERVERS}:${mockServerPort}`, + cache: false, + } + } + }, 'store.spec.yaml', __dirname); + + const config: Config = new AppConfig(storageConfig); + const store: IStorageHandler = new Storage(config); + await store.init(config, []); + + return store; +}; + +const createNullStream = () => new Writable({ + write: function(chunk, encoding, next) { + next(); + } +}); describe('StorageTest', () => { let mockRegistry; - beforeAll((done) => { - rimraf(storagePath, async () => { - mockRegistry = await mockServer(mockServerPort).init(); - done(); - }); + beforeAll(async done => { + const binPath = require.resolve('verdaccio/bin/verdaccio'); + const storePath = path.join(__dirname, '/mock/store'); + mockRegistry = await mockServer(mockServerPort, { storePath, silence: true }).init(binPath); + done(); }); - afterAll(function (done) { - mockRegistry[0].stop(); + afterAll(function(done) { + const [registry, pid] = mockRegistry; + registry.stop(); + logger.info(`registry ${pid} has been stopped`); + done(); }); @@ -105,7 +103,7 @@ describe('StorageTest', () => { }); describe('test getTarball', () => { - test('should select right uplink given package.proxy for upstream tarballs', async (done) => { + test.skip('should select right uplink given package.proxy for upstream tarballs', async (done) => { const storage: IStorageHandler = await generateSameUplinkStorage(); const notcachedSpy = jest.spyOn(storage.uplinks.notcached, 'fetchTarball'); const cachedSpy = jest.spyOn(storage.uplinks.cached, 'fetchTarball'); @@ -133,9 +131,7 @@ describe('StorageTest', () => { reader.on('end', () => { expect(cachedSpy).toHaveBeenCalledTimes(0); expect(notcachedSpy).toHaveBeenCalledTimes(1); - expect(notcachedSpy).toHaveBeenCalledWith( - 'http://0.0.0.0:55548/@jquery%2fjquery/-/jquery-1.5.1.tgz' - ); + expect(notcachedSpy).toHaveBeenCalledWith('http://0.0.0.0:55548/@jquery%2fjquery/-/jquery-1.5.1.tgz'); res(); }); reader.on('error', (err) => { @@ -187,8 +183,9 @@ describe('StorageTest', () => { }); }); - test('should not touch if the package exists and has no uplinks', async (done) => { - const storage: IStorageHandler = (await generateStorage()) as IStorageHandler; + test.skip('should not touch if the package exists and has no uplinks', async (done) => { + const storagePath = generateRamdonStorage(); + const storage: IStorageHandler = await generateStorage() as IStorageHandler; const metadataSource = path.join(__dirname, '../../partials/metadata'); const metadataPath = path.join(storagePath, 'npm_test/package.json'); diff --git a/packages/server/test/storage/mock/store/@jquery/jquery/jquery-1.5.1.tgz b/packages/server/test/storage/mock/store/@jquery/jquery/jquery-1.5.1.tgz new file mode 100644 index 000000000..aca55f3db Binary files /dev/null and b/packages/server/test/storage/mock/store/@jquery/jquery/jquery-1.5.1.tgz differ diff --git a/packages/server/test/storage/mock/store/@jquery/jquery/package.json b/packages/server/test/storage/mock/store/@jquery/jquery/package.json new file mode 100644 index 000000000..dec2d5571 --- /dev/null +++ b/packages/server/test/storage/mock/store/@jquery/jquery/package.json @@ -0,0 +1,76 @@ +{ + "name": "@jquery/jquery", + "versions": { + "1.5.1": { + "name": "@jquery/jquery", + "description": "jQuery: The Write Less, Do More, JavaScript Library", + "url": "jquery.com", + "keywords": [ + "util", + "dom", + "jquery" + ], + "author": { + "name": "John Resig", + "email": "jeresig@gmail.com" + }, + "contributors": [], + "dependencies": { + "jsdom": "=0.1.20", + "htmlparser": ">= 1.7.3" + }, + "lib": "lib", + "main": "./dist/node-jquery.js", + "version": "1.5.1", + "_id": "@jquery/jquery@1.5.1", + "engines": { + "node": "*" + }, + "_engineSupported": true, + "_npmVersion": "0.3.15", + "_nodeVersion": "v0.4.2", + "directories": { + "lib": "./lib" + }, + "files": [ + "" + ], + "_defaultsLoaded": true, + "dist": { + "shasum": "2ae2d661e906c1a01e044a71bb5b2743942183e5", + "tarball": "https://registry.npmjs.org/@jquery%2jquery/-/jquery-1.5.1.tgz" + }, + "deprecated": "Versions of the jquery npm package older than 1.9.0 are patched versions that don't work in web browsers. Please upgrade to >=1.11.0." + } + }, + "time": { + "modified": "2018-05-21T21:39:54.702Z", + "created": "2011-03-19T07:19:56.392Z", + "1.5.1": "2011-03-19T07:19:56.956Z" + }, + "dist-tags": { + "beta": "3.0.0", + "latest": "3.3.1", + "jota": "1.6.3" + }, + "_uplinks": { + "npmjs": { + "etag": "W/\"252f0a131cedd3ea82dfefd6fa049558\"", + "fetched": 1529779934081 + } + }, + "_distfiles": { + "jquery-1.5.1.tgz": { + "url": "https://registry.npmjs.org/@jquery%2jquery/-/jquery-1.5.1.tgz", + "sha": "2ae2d661e906c1a01e044a71bb5b2743942183e5", + "registry": "npmjs" + } + }, + "_attachments": { + "jquery-1.5.1.tgz": { + "shasum": "2ae2d661e906c1a01e044a71bb5b2743942183e5" + } + }, + "_rev": "60-fed4915c27b9c1e6", + "readme": "# jQuery\n\n> jQuery is a fast, small, and feature-rich JavaScript library.\n\nFor information on how to get started and how to use jQuery, please see [jQuery's documentation](http://api.jquery.com/).\nFor source files and issues, please visit the [jQuery repo](https://github.com/jquery/jquery).\n\nIf upgrading, please see the [blog post for 3.3.1](https://blog.jquery.com/2017/03/20/jquery-3.3.1-now-available/). This includes notable differences from the previous version and a more readable changelog.\n\n## Including jQuery\n\nBelow are some of the most common ways to include jQuery.\n\n### Browser\n\n#### Script tag\n\n```html\n\n```\n\n#### Babel\n\n[Babel](http://babeljs.io/) is a next generation JavaScript compiler. One of the features is the ability to use ES6/ES2015 modules now, even though browsers do not yet support this feature natively.\n\n```js\nimport $ from \"jquery\";\n```\n\n#### Browserify/Webpack\n\nThere are several ways to use [Browserify](http://browserify.org/) and [Webpack](https://webpack.github.io/). For more information on using these tools, please refer to the corresponding project's documention. In the script, including jQuery will usually look like this...\n\n```js\nvar $ = require(\"jquery\");\n```\n\n#### AMD (Asynchronous Module Definition)\n\nAMD is a module format built for the browser. For more information, we recommend [require.js' documentation](http://requirejs.org/docs/whyamd.html).\n\n```js\ndefine([\"jquery\"], function($) {\n\n});\n```\n\n### Node\n\nTo include jQuery in [Node](nodejs.org), first install with npm.\n\n```sh\nnpm install jquery\n```\n\nFor jQuery to work in Node, a window with a document is required. Since no such window exists natively in Node, one can be mocked by tools such as [jsdom](https://github.com/tmpvar/jsdom). This can be useful for testing purposes.\n\n```js\nrequire(\"jsdom\").env(\"\", function(err, window) {\n\tif (err) {\n\t\tconsole.error(err);\n\t\treturn;\n\t}\n\n\tvar $ = require(\"jquery\")(window);\n});\n```" +} diff --git a/packages/server/test/storage/mock/store/corrupted-package/package.json b/packages/server/test/storage/mock/store/corrupted-package/package.json new file mode 100644 index 000000000..8fb792e7d --- /dev/null +++ b/packages/server/test/storage/mock/store/corrupted-package/package.json @@ -0,0 +1,12 @@ +{ + "name": "corrupted-package" + "version": {}, + "dist-tags": {}, + "_distfiles": {}, + "_attachments": {}, + "_uplinks": {}, + "time": {}, + "_rev": "0-0000000000000000", + "readme": "", + "versions": {} +} \ No newline at end of file diff --git a/packages/server/test/storage/mock/store/jquery/jquery-1.5.1.tgz b/packages/server/test/storage/mock/store/jquery/jquery-1.5.1.tgz new file mode 100644 index 000000000..aca55f3db Binary files /dev/null and b/packages/server/test/storage/mock/store/jquery/jquery-1.5.1.tgz differ diff --git a/packages/server/test/storage/mock/store/jquery/package.json b/packages/server/test/storage/mock/store/jquery/package.json new file mode 100644 index 000000000..1f76451fb --- /dev/null +++ b/packages/server/test/storage/mock/store/jquery/package.json @@ -0,0 +1,4919 @@ +{ + "name": "jquery", + "versions": { + "1.5.1": { + "name": "jquery", + "description": "jQuery: The Write Less, Do More, JavaScript Library", + "url": "jquery.com", + "keywords": [ + "util", + "dom", + "jquery" + ], + "author": { + "name": "John Resig", + "email": "jeresig@gmail.com" + }, + "contributors": [], + "dependencies": { + "jsdom": "=0.1.20", + "htmlparser": ">= 1.7.3" + }, + "lib": "lib", + "main": "./dist/node-jquery.js", + "version": "1.5.1", + "_id": "jquery@1.5.1", + "engines": { + "node": "*" + }, + "_engineSupported": true, + "_npmVersion": "0.3.15", + "_nodeVersion": "v0.4.2", + "directories": { + "lib": "./lib" + }, + "files": [ + "" + ], + "_defaultsLoaded": true, + "dist": { + "shasum": "2ae2d661e906c1a01e044a71bb5b2743942183e5", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.5.1.tgz" + }, + "deprecated": "Versions of the jquery npm package older than 1.9.0 are patched versions that don't work in web browsers. Please upgrade to >=1.11.0." + }, + "1.6.2": { + "name": "jquery", + "description": "jQuery: The Write Less, Do More, JavaScript Library", + "url": "jquery.com", + "keywords": [ + "util", + "dom", + "jquery" + ], + "author": { + "name": "John Resig", + "email": "jeresig@gmail.com" + }, + "contributors": [], + "dependencies": { + "jsdom": ">=0.2.0", + "htmlparser": ">= 1.7.3" + }, + "lib": "lib", + "main": "./dist/node-jquery.js", + "version": "1.6.2", + "_npmJsonOpts": { + "file": "/Users/coolaj86/.npm/jquery/1.6.2/package/package.json", + "wscript": false, + "contributors": false, + "serverjs": false + }, + "_id": "jquery@1.6.2", + "devDependencies": {}, + "engines": { + "node": "*" + }, + "_engineSupported": true, + "_npmVersion": "1.0.15", + "_nodeVersion": "v0.4.8", + "_defaultsLoaded": true, + "dist": { + "shasum": "01757a4c5beea29e8ae697527c3131abbe997a28", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.6.2.tgz" + }, + "scripts": {}, + "directories": {}, + "deprecated": "Versions of the jquery npm package older than 1.9.0 are patched versions that don't work in web browsers. Please upgrade to >=1.11.0." + }, + "1.6.3": { + "name": "jquery", + "description": "jQuery: The Write Less, Do More, JavaScript Library (packaged for Node.JS)", + "url": "http://jquery.com", + "keywords": [ + "util", + "dom", + "jquery" + ], + "author": { + "name": "John Resig", + "email": "jeresig@gmail.com" + }, + "contributors": [], + "dependencies": { + "jsdom": ">=0.2.0", + "htmlparser": ">= 1.7.3" + }, + "lib": ".", + "main": "./node-jquery.js", + "version": "1.6.3", + "_npmJsonOpts": { + "file": "/Users/coolaj86/.npm/jquery/1.6.3/package/package.json", + "wscript": false, + "contributors": false, + "serverjs": false + }, + "_id": "jquery@1.6.3", + "devDependencies": {}, + "engines": { + "node": "*" + }, + "_engineSupported": true, + "_npmVersion": "1.0.22", + "_nodeVersion": "v0.4.8", + "_defaultsLoaded": true, + "dist": { + "shasum": "e1f732fa7e718a6adb3ec20ae0eb2a64fd95ef01", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.6.3.tgz" + }, + "scripts": {}, + "maintainers": [ + { + "name": "coolaj86", + "email": "coolaj86@gmail.com" + } + ], + "directories": {}, + "deprecated": "Versions of the jquery npm package older than 1.9.0 are patched versions that don't work in web browsers. Please upgrade to >=1.11.0." + }, + "1.7.2": { + "name": "jquery", + "description": "jQuery: The Write Less, Do More, JavaScript Library (packaged for Node.JS)", + "version": "1.7.2", + "url": "http://jquery.com", + "homepage": "https://github.com/coolaj86/node-jquery", + "author": { + "name": "James Morrin", + "email": "treasonx@gmail.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/coolaj86/node-jquery.git" + }, + "bugs": { + "url": "https://github.com/coolaj86/node-jquery/issues" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/coolaj86/node-jquery/blob/master/LICENSE-MIT" + } + ], + "main": "lib/node-jquery", + "engines": { + "node": "0.6" + }, + "scripts": { + "test": "grunt test" + }, + "dependencies": { + "jsdom": "~0.2.14", + "htmlparser": "1.7.6", + "xmlhttprequest": "~1.3.0" + }, + "devDependencies": { + "grunt": "~0.3.8", + "nodeunit": "~0.7.4" + }, + "keywords": [ + "util", + "dom", + "jquery" + ], + "_npmUser": { + "name": "treasonx", + "email": "treasonx@gmail.com" + }, + "_id": "jquery@1.7.2", + "optionalDependencies": {}, + "_engineSupported": true, + "_npmVersion": "1.1.12", + "_nodeVersion": "v0.6.14", + "_defaultsLoaded": true, + "dist": { + "shasum": "a93746763aca75a34df4c16395b0826310d0eaf2", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.7.2.tgz" + }, + "maintainers": [ + { + "name": "coolaj86", + "email": "coolaj86@gmail.com" + }, + { + "name": "treasonx", + "email": "treasonx@gmail.com" + } + ], + "directories": {}, + "deprecated": "Versions of the jquery npm package older than 1.9.0 are patched versions that don't work in web browsers. Please upgrade to >=1.11.0." + }, + "1.7.3": { + "name": "jquery", + "description": "jQuery: The Write Less, Do More, JavaScript Library (packaged for Node.JS)", + "version": "1.7.3", + "url": "http://jquery.com", + "homepage": "https://github.com/coolaj86/node-jquery", + "author": { + "name": "James Morrin", + "email": "treasonx@gmail.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/coolaj86/node-jquery.git" + }, + "bugs": { + "url": "https://github.com/coolaj86/node-jquery/issues" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/coolaj86/node-jquery/blob/master/LICENSE-MIT" + } + ], + "main": "lib/node-jquery", + "engines": { + "node": ">=0.6" + }, + "scripts": { + "test": "grunt test" + }, + "dependencies": { + "jsdom": "~0.2.14", + "htmlparser": "1.7.6", + "xmlhttprequest": "~1.4.2", + "location": "0.0.1", + "navigator": "~1.0.1" + }, + "devDependencies": { + "grunt": "~0.3.8", + "nodeunit": "~0.7.4" + }, + "keywords": [ + "util", + "dom", + "jquery" + ], + "_id": "jquery@1.7.3", + "dist": { + "shasum": "e3d00a71612ac7e9b554b438e0987d0272ddba94", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.7.3.tgz" + }, + "maintainers": [ + { + "name": "coolaj86", + "email": "coolaj86@gmail.com" + }, + { + "name": "treasonx", + "email": "treasonx@gmail.com" + } + ], + "directories": {}, + "deprecated": "Versions of the jquery npm package older than 1.9.0 are patched versions that don't work in web browsers. Please upgrade to >=1.11.0." + }, + "1.8.2": { + "name": "jquery", + "description": "jQuery: The Write Less, Do More, JavaScript Library (packaged for Node.JS)", + "version": "1.8.2", + "url": "http://jquery.com", + "homepage": "https://github.com/coolaj86/node-jquery", + "author": { + "name": "James Morrin", + "email": "treasonx@gmail.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/coolaj86/node-jquery.git" + }, + "bugs": { + "url": "https://github.com/coolaj86/node-jquery/issues" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/coolaj86/node-jquery/blob/master/LICENSE-MIT" + } + ], + "main": "lib/node-jquery", + "engines": { + "node": ">=0.6" + }, + "scripts": { + "test": "grunt test" + }, + "dependencies": { + "jsdom": "~0.2.14", + "htmlparser": "1.7.6", + "xmlhttprequest": "~1.4.2", + "location": "0.0.1", + "navigator": "~1.0.1" + }, + "devDependencies": { + "grunt": "~0.3.8", + "nodeunit": "~0.7.4" + }, + "keywords": [ + "util", + "dom", + "jquery" + ], + "_id": "jquery@1.8.2", + "dist": { + "shasum": "46790ae07c6de38124eda90bbf7336b43df93305", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.8.2.tgz" + }, + "_npmVersion": "1.1.61", + "_npmUser": { + "name": "treasonx", + "email": "treasonx@gmail.com" + }, + "maintainers": [ + { + "name": "coolaj86", + "email": "coolaj86@gmail.com" + }, + { + "name": "treasonx", + "email": "treasonx@gmail.com" + } + ], + "directories": {}, + "deprecated": "Versions of the jquery npm package older than 1.9.0 are patched versions that don't work in web browsers. Please upgrade to >=1.11.0." + }, + "1.8.3": { + "name": "jquery", + "description": "jQuery: The Write Less, Do More, JavaScript Library (packaged for Node.JS)", + "version": "1.8.3", + "url": "http://jquery.com", + "homepage": "https://github.com/coolaj86/node-jquery", + "author": { + "name": "James Morrin", + "email": "treasonx@gmail.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/coolaj86/node-jquery.git" + }, + "bugs": { + "url": "https://github.com/coolaj86/node-jquery/issues" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/coolaj86/node-jquery/blob/master/LICENSE-MIT" + } + ], + "main": "lib/node-jquery", + "engines": { + "node": ">=0.6" + }, + "scripts": { + "test": "grunt test" + }, + "dependencies": { + "jsdom": "~0.2.14", + "htmlparser": "1.7.6", + "xmlhttprequest": "~1.4.2", + "location": "0.0.1", + "navigator": "~1.0.1", + "contextify": "~0.1.3" + }, + "devDependencies": { + "grunt": "~0.3.8", + "nodeunit": "~0.7.4" + }, + "keywords": [ + "util", + "dom", + "jquery" + ], + "_id": "jquery@1.8.3", + "dist": { + "shasum": "cfa2941c05a83d966f21347f759a6d15281c60cc", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.8.3.tgz" + }, + "_npmVersion": "1.1.61", + "_npmUser": { + "name": "treasonx", + "email": "treasonx@gmail.com" + }, + "maintainers": [ + { + "name": "coolaj86", + "email": "coolaj86@gmail.com" + }, + { + "name": "treasonx", + "email": "treasonx@gmail.com" + } + ], + "directories": {}, + "deprecated": "Versions of the jquery npm package older than 1.9.0 are patched versions that don't work in web browsers. Please upgrade to >=1.11.0." + }, + "2.1.0-beta2": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.0-beta2", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/master/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "archiver": "~0.4.10", + "grunt": "~0.4.1", + "grunt-bower-task": "~0.3.2", + "grunt-cli": "~0.1.11", + "grunt-compare-size": "~0.4.0", + "grunt-contrib-jshint": "~0.7.0", + "grunt-contrib-uglify": "~0.2.7", + "grunt-contrib-watch": "~0.5.3", + "grunt-git-authors": "~1.2.0", + "grunt-jscs-checker": "~0.2.3", + "grunt-jsonlint": "~1.0.1", + "gzip-js": "0.3.2", + "load-grunt-tasks": "~0.2.0", + "testswarm": "~1.1.0", + "requirejs": "~2.1.9", + "which": "~1.0.5" + }, + "_id": "jquery@2.1.0-beta2", + "dist": { + "shasum": "e0fbbe2beb45b4d8f808362c7c99ef5bfee7d8c6", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.0-beta2.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.11", + "_npmUser": { + "name": "jquery", + "email": "dave.methvin@gmail.com" + }, + "maintainers": [ + { + "name": "rwaldron", + "email": "waldron.rick@gmail.com" + }, + { + "name": "jquery", + "email": "npm@jquery.com" + } + ], + "directories": {} + }, + "2.1.0-beta3": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.0-beta3", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.0-beta3/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.0-beta3/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "archiver": "0.4.10", + "gzip-js": "0.3.2", + "testswarm": "1.1.0", + "load-grunt-tasks": "0.2.0", + "requirejs": "2.1.9", + "shelljs": "0.2.6", + "grunt": "0.4.2", + "grunt-cli": "0.1.11", + "grunt-contrib-jshint": "0.7.2", + "grunt-contrib-uglify": "0.2.7", + "grunt-contrib-watch": "0.5.3", + "grunt-bowercopy": "0.4.1", + "grunt-compare-size": "0.4.0", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.2.6", + "grunt-jsonlint": "1.0.4" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@2.1.0-beta3", + "dist": { + "shasum": "5a89b624d8fa625fe5fa83a12a9acb1ef8a11d02", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.0-beta3.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.21", + "_npmUser": { + "name": "jquery", + "email": "npm@jquery.org" + }, + "maintainers": [ + { + "name": "jquery", + "email": "npm@jquery.org" + } + ], + "directories": {} + }, + "1.11.0-beta3": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.0-beta3", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.0-beta3/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.0-beta3/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "archiver": "0.4.10", + "gzip-js": "0.3.2", + "testswarm": "1.1.0", + "load-grunt-tasks": "0.2.0", + "requirejs": "2.1.9", + "shelljs": "0.2.6", + "grunt": "0.4.2", + "grunt-cli": "0.1.11", + "grunt-contrib-jshint": "0.7.2", + "grunt-contrib-uglify": "0.2.7", + "grunt-contrib-watch": "0.5.3", + "grunt-bowercopy": "0.4.1", + "grunt-compare-size": "0.4.0", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.2.6", + "grunt-jsonlint": "1.0.4" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@1.11.0-beta3", + "dist": { + "shasum": "0464a6aba9f35f6c83a203caa23ab420909ce852", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.0-beta3.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.21", + "_npmUser": { + "name": "jquery", + "email": "npm@jquery.org" + }, + "maintainers": [ + { + "name": "jquery", + "email": "npm@jquery.org" + } + ], + "directories": {} + }, + "1.11.0-rc1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.0-rc1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.0-rc1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.0-rc1/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "archiver": "0.4.10", + "gzip-js": "0.3.2", + "testswarm": "1.1.0", + "load-grunt-tasks": "0.2.0", + "requirejs": "2.1.9", + "shelljs": "0.2.6", + "grunt": "0.4.2", + "grunt-cli": "0.1.11", + "grunt-contrib-jshint": "0.7.2", + "grunt-contrib-uglify": "0.2.7", + "grunt-contrib-watch": "0.5.3", + "grunt-bowercopy": "0.5.0", + "grunt-compare-size": "0.4.0", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.2.6", + "grunt-jsonlint": "1.0.4" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@1.11.0-rc1", + "dist": { + "shasum": "c2f6a4877374647b20b080c478d8dbcdfb4960ee", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.0-rc1.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.23", + "_npmUser": { + "name": "jquery", + "email": "dave.methvin@gmail.com" + }, + "maintainers": [ + { + "name": "jquery", + "email": "dave.methvin@gmail.com" + } + ], + "directories": {} + }, + "2.1.0-rc1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.0-rc1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.0-rc1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.0-rc1/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "archiver": "0.4.10", + "gzip-js": "0.3.2", + "testswarm": "1.1.0", + "load-grunt-tasks": "0.2.0", + "requirejs": "2.1.9", + "shelljs": "0.2.6", + "grunt": "0.4.2", + "grunt-cli": "0.1.11", + "grunt-contrib-jshint": "0.7.2", + "grunt-contrib-uglify": "0.2.7", + "grunt-contrib-watch": "0.5.3", + "grunt-bowercopy": "0.5.0", + "grunt-compare-size": "0.4.0", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.2.6", + "grunt-jsonlint": "1.0.4" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@2.1.0-rc1", + "dist": { + "shasum": "8c9f5d9a055c2fedb3f5269617ae649497d6a3b0", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.0-rc1.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.14", + "_npmUser": { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + "maintainers": [ + { + "name": "jquery", + "email": "npm@jquery.com" + }, + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + } + ], + "directories": {} + }, + "1.11.0": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.0", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.0/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.0/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "archiver": "0.4.10", + "gzip-js": "0.3.2", + "testswarm": "1.1.0", + "load-grunt-tasks": "0.2.0", + "requirejs": "2.1.9", + "shelljs": "0.2.6", + "grunt": "0.4.2", + "grunt-cli": "0.1.11", + "grunt-contrib-jshint": "0.7.2", + "grunt-contrib-uglify": "0.2.7", + "grunt-contrib-watch": "0.5.3", + "grunt-bowercopy": "0.5.0", + "grunt-compare-size": "0.4.0", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.2.6", + "grunt-jsonlint": "1.0.4" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@1.11.0", + "dist": { + "shasum": "c67ceee19b403650d682adcf39d5c9009814d949", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.0.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.21", + "_npmUser": { + "name": "jquery", + "email": "npm@jquery.org" + }, + "maintainers": [ + { + "name": "jquery", + "email": "npm@jquery.org" + } + ], + "directories": {} + }, + "2.1.0": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.0", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.0/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.0/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "archiver": "0.4.10", + "gzip-js": "0.3.2", + "testswarm": "1.1.0", + "load-grunt-tasks": "0.2.0", + "requirejs": "2.1.9", + "shelljs": "0.2.6", + "grunt": "0.4.2", + "grunt-cli": "0.1.11", + "grunt-contrib-jshint": "0.7.2", + "grunt-contrib-uglify": "0.2.7", + "grunt-contrib-watch": "0.5.3", + "grunt-bowercopy": "0.5.0", + "grunt-compare-size": "0.4.0", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.2.6", + "grunt-jsonlint": "1.0.4" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@2.1.0", + "dist": { + "shasum": "1c9a8c971d2b53dae10d72e16cbb5a1df16a4ace", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.0.tgz" + }, + "_from": ".", + "_npmVersion": "1.3.21", + "_npmUser": { + "name": "jquery", + "email": "npm@jquery.org" + }, + "maintainers": [ + { + "name": "jquery", + "email": "npm@jquery.org" + } + ], + "directories": {} + }, + "2.1.1-beta1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.1-beta1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.1-beta1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.1-beta1/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.3.2", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@2.1.1-beta1", + "dist": { + "shasum": "6306c8ea1d104775f3ef8f5c26f0a32acd710a11", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.1-beta1.tgz" + }, + "_from": ".", + "_npmVersion": "1.4.6", + "_npmUser": { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + "maintainers": [ + { + "name": "jquery", + "email": "npm@jquery.com" + }, + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + } + ], + "directories": {} + }, + "1.11.1-beta1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.1-beta1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.1-beta1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.1-beta1/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.3.2", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@1.11.1-beta1", + "dist": { + "shasum": "c7eacde5e1ae06e029f1cd1b2dd444953a33e843", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.1-beta1.tgz" + }, + "_from": ".", + "_npmVersion": "1.4.6", + "_npmUser": { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + "maintainers": [ + { + "name": "jquery", + "email": "npm@jquery.com" + }, + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + } + ], + "directories": {} + }, + "2.1.1-rc1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.1-rc1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.1-rc1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.1-rc1/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@2.1.1-rc1", + "_shasum": "95c494fdbbd0cefc305260e11ad46ae49a387c3d", + "_from": ".", + "_npmVersion": "1.4.7", + "_npmUser": { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + } + ], + "dist": { + "shasum": "95c494fdbbd0cefc305260e11ad46ae49a387c3d", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.1-rc1.tgz" + }, + "directories": {} + }, + "1.11.1-rc1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.1-rc1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.1-rc1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.1-rc1/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@1.11.1-rc1", + "_shasum": "666a7df02488b48732d96e8ab9bdd34f61dd4238", + "_from": ".", + "_npmVersion": "1.4.7", + "_npmUser": { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + } + ], + "dist": { + "shasum": "666a7df02488b48732d96e8ab9bdd34f61dd4238", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.1-rc1.tgz" + }, + "directories": {} + }, + "2.1.1-rc2": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.1-rc2", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.1-rc2/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.1-rc2/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@2.1.1-rc2", + "dist": { + "shasum": "99833e415efa7ac8a4efecc5df6894b2f938a598", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.1-rc2.tgz" + }, + "_from": ".", + "_npmVersion": "1.2.25", + "_npmUser": { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + } + ], + "directories": {} + }, + "1.11.1-rc2": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.1-rc2", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.1-rc2/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.1-rc2/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@1.11.1-rc2", + "dist": { + "shasum": "a4ef3edde0864d8524c5e72f59c459fd7a9ebd17", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.1-rc2.tgz" + }, + "_from": ".", + "_npmVersion": "1.2.25", + "_npmUser": { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + } + ], + "directories": {} + }, + "2.1.1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.1/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@2.1.1", + "dist": { + "shasum": "828fc60f50f7ee5983363ef4eb01c5f70af4bd5b", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.1.tgz" + }, + "_from": ".", + "_npmVersion": "1.2.25", + "_npmUser": { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + } + ], + "directories": {} + }, + "1.11.1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.1/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "_id": "jquery@1.11.1", + "dist": { + "shasum": "b6ec928590112ebed69e1e49cbfd0025ccd60ddb", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.1.tgz" + }, + "_from": ".", + "_npmVersion": "1.2.25", + "_npmUser": { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + } + ], + "directories": {} + }, + "1.9.1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.9.1", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/master/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt" + } + ], + "scripts": { + "test": "grunt" + }, + "dependencies": {}, + "devDependencies": { + "grunt-compare-size": "~0.3.0", + "grunt-git-authors": "~1.1.0", + "grunt-update-submodules": "~0.2.0", + "grunt-contrib-watch": "~0.1.1", + "grunt-contrib-jshint": "~0.1.1", + "grunt-contrib-uglify": "~0.1.1", + "grunt": "~0.4.0", + "testswarm": "0.2.2" + }, + "keywords": [], + "gitHead": "d71f6a53927ad02d728503385d15539b73d21ac8", + "_id": "jquery@1.9.1", + "_shasum": "e4cd4835faaefbade535857613c0fc3ff2adaf34", + "_from": ".", + "_npmVersion": "1.5.0-alpha-1", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "e4cd4835faaefbade535857613c0fc3ff2adaf34", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.9.1.tgz" + }, + "directories": {} + }, + "2.1.2": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.2", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.2/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.2/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "1.7.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "gitHead": "a04f5ff9795fd6292117563623db44cf3f875868", + "_id": "jquery@2.1.2", + "_shasum": "b68f154cb2ea4731924883e9fe20ec199d1dc1e2", + "_from": ".", + "_npmVersion": "1.4.28", + "_npmUser": { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "b68f154cb2ea4731924883e9fe20ec199d1dc1e2", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.2.tgz" + }, + "directories": {} + }, + "1.11.2": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.2", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.2/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.2/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "gitHead": "9690801db01709bfbff5f977d07fb7cc14472908", + "_id": "jquery@1.11.2", + "_shasum": "30ab26857211c37caa83da0f6903155fe49bb72d", + "_from": ".", + "_npmVersion": "1.4.28", + "_npmUser": { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "30ab26857211c37caa83da0f6903155fe49bb72d", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.2.tgz" + }, + "directories": {} + }, + "2.1.3": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.3", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.3/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.3/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "jsdom": "1.5.0", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "gitHead": "8f2a9d9272d6ed7f32d3a484740ab342c02541e0", + "_id": "jquery@2.1.3", + "_shasum": "6ec55204673d505d39432c5bf5cfad10e1dbad2e", + "_from": ".", + "_npmVersion": "2.1.14", + "_nodeVersion": "0.11.14", + "_npmUser": { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "6ec55204673d505d39432c5bf5cfad10e1dbad2e", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.3.tgz" + }, + "directories": {} + }, + "2.1.4": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.1.4", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.1.4/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/2.1.4/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "jsdom": "1.5.0", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "gitHead": "7751e69b615c6eca6f783a81e292a55725af6b85", + "_id": "jquery@2.1.4", + "_shasum": "228bde698a0c61431dc2630a6a154f15890d2317", + "_from": ".", + "_npmVersion": "2.7.4", + "_nodeVersion": "0.12.2", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "228bde698a0c61431dc2630a6a154f15890d2317", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.1.4.tgz" + }, + "directories": {} + }, + "1.11.3": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.11.3", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.11.3/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "http://bugs.jquery.com" + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/jquery/jquery/blob/1.11.3/MIT-LICENSE.txt" + } + ], + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "grunt": "0.4.2", + "grunt-bowercopy": "0.7.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.8.0", + "grunt-contrib-uglify": "0.3.2", + "grunt-contrib-watch": "0.5.3", + "grunt-git-authors": "1.2.0", + "grunt-jscs-checker": "0.4.1", + "grunt-jsonlint": "1.0.4", + "gzip-js": "0.3.2", + "load-grunt-tasks": "0.3.0", + "requirejs": "2.1.10", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt" + }, + "gitHead": "1472290917f17af05e98007136096784f9051fab", + "_id": "jquery@1.11.3", + "_shasum": "dd8b74278b27102d29df63eae28308a8cfa1b583", + "_from": ".", + "_npmVersion": "2.7.4", + "_nodeVersion": "0.12.2", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "dd8b74278b27102d29df63eae28308a8cfa1b583", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.11.3.tgz" + }, + "directories": {} + }, + "3.0.0-alpha1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.0.0-alpha1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.0.0-alpha1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.7.0", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs-checker": "0.8.1", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "load-grunt-tasks": "1.0.0", + "native-promise-only": "0.7.8-a", + "promises-aplus-tests": "2.1.0", + "q": "1.1.2", + "qunitjs": "1.17.1", + "requirejs": "2.1.17", + "sinon": "1.10.3", + "sizzle": "2.2.0", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "jsdomVersions": { + "node": "3.1.2", + "iojs": "5.3.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "2c92869b752bb8e0fe74c3183f40f3f58b7b906d", + "_id": "jquery@3.0.0-alpha1", + "_shasum": "3493d672266e21c2dffb2714f935448edebe3c62", + "_from": ".", + "_npmVersion": "2.11.3", + "_nodeVersion": "0.12.7", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "3493d672266e21c2dffb2714f935448edebe3c62", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.0.0-alpha1.tgz" + }, + "directories": {} + }, + "1.12.0": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.12.0", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.12-stable/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "npm": "2.1.12", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.12.2", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "efbdc6e3f0fa3d3cd4d3d8bfa37990b707f7c2e1", + "_id": "jquery@1.12.0", + "_shasum": "44653be4e3e4628b106bf2141dfd10fbca6021ef", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.2.0", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "44653be4e3e4628b106bf2141dfd10fbca6021ef", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.12.0.tgz" + }, + "directories": {} + }, + "2.2.0": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.2.0", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.2.0/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.10.3", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "6fc01e29bdad0964f62ef56d01297039cdcadbe5", + "_id": "jquery@2.2.0", + "_shasum": "d0e84ebbf199da51bf7ec39307f19b35754e9cba", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.2.0", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "d0e84ebbf199da51bf7ec39307f19b35754e9cba", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.2.0.tgz" + }, + "directories": {} + }, + "3.0.0-beta1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.0.0-beta1", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.0.0-beta1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "native-promise-only": "0.7.8-a", + "promises-aplus-tests": "2.1.0", + "q": "1.1.2", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.10.3", + "sizzle": "2.3.0", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "2ef761afd9addf78193f5191ece03bb20c9182c2", + "_id": "jquery@3.0.0-beta1", + "_shasum": "d2a4e368e2eed7050bf66abbbb54db2ea345349d", + "_from": ".", + "_npmVersion": "3.3.12", + "_nodeVersion": "5.2.0", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "d2a4e368e2eed7050bf66abbbb54db2ea345349d", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.0.0-beta1.tgz" + }, + "directories": {} + }, + "1.12.1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.12.1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.12-stable/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "npm": "2.1.12", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.12.2", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "56ead6ffbf8560c521e7e94518d35db42b19f5f3", + "_id": "jquery@1.12.1", + "_shasum": "9cc34ce4780d4ceb90c44328f071064f01960c18", + "_from": ".", + "_npmVersion": "2.14.19", + "_nodeVersion": "0.10.42", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "9cc34ce4780d4ceb90c44328f071064f01960c18", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.12.1.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-5-east.internal.npmjs.com", + "tmp": "tmp/jquery-1.12.1.tgz_1456168080336_0.4474994211923331" + }, + "directories": {} + }, + "2.2.1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.2.1", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.2.1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.10.3", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "788eaba2f83e7b7445c7a83a50c81c0704423874", + "_id": "jquery@2.2.1", + "_shasum": "3c3e16854ad3d2ac44ac65021b17426d22ad803f", + "_from": ".", + "_npmVersion": "2.14.19", + "_nodeVersion": "0.10.42", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "dist": { + "shasum": "3c3e16854ad3d2ac44ac65021b17426d22ad803f", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.2.1.tgz" + }, + "_npmOperationalInternal": { + "host": "packages-9-west.internal.npmjs.com", + "tmp": "tmp/jquery-2.2.1.tgz_1456168325917_0.42471840139478445" + }, + "directories": {} + }, + "1.12.2": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.12.2", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.12-stable/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "npm": "2.1.12", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.12.2", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "a9b5f8ac96f6aa7bfc7b0795cb16d65c4f15b64e", + "_id": "jquery@1.12.2", + "_shasum": "b8a8b45937312a19eebbcf5a0589b0311c8220bb", + "_from": ".", + "_npmVersion": "3.7.3", + "_nodeVersion": "5.8.0", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "b8a8b45937312a19eebbcf5a0589b0311c8220bb", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.12.2.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/jquery-1.12.2.tgz_1458236759160_0.3557943068444729" + }, + "directories": {} + }, + "2.2.2": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.2.2", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.2.2/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.10.3", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "086d381cd2f3b4b8b0af85ecb2c9593a61e5b4bd", + "_id": "jquery@2.2.2", + "_shasum": "3e302dc61eb329a21e9efac937d731f061134c59", + "_from": ".", + "_npmVersion": "3.7.3", + "_nodeVersion": "5.8.0", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "3e302dc61eb329a21e9efac937d731f061134c59", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.2.2.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/jquery-2.2.2.tgz_1458237146417_0.4190880397800356" + }, + "directories": {} + }, + "1.12.3": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.12.3", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.12-stable/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "npm": "2.1.12", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.12.2", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "3a43d7e563314bf32970b773dd31ecf2b90813dd", + "_id": "jquery@1.12.3", + "_shasum": "1298b88b908e7c7f7501eb8c1a61f1ac8337b531", + "_from": ".", + "_npmVersion": "3.7.3", + "_nodeVersion": "5.8.0", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "1298b88b908e7c7f7501eb8c1a61f1ac8337b531", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.12.3.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/jquery-1.12.3.tgz_1459884094815_0.5328964435029775" + }, + "directories": {} + }, + "2.2.3": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.2.3", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.2.3/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.10.3", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "af22a351b2ea5801ffb1695abb3bb34d5bed9198", + "_id": "jquery@2.2.3", + "_shasum": "45e07e4190334de36c9e1a64b43b1f1373d91758", + "_from": ".", + "_npmVersion": "3.7.3", + "_nodeVersion": "5.8.0", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "45e07e4190334de36c9e1a64b43b1f1373d91758", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.2.3.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/jquery-2.2.3.tgz_1459884434885_0.992488760035485" + }, + "directories": {} + }, + "1.12.4": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "1.12.4", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/1.12-stable/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "npm": "2.1.12", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.12.2", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "5e89585e0121e72ff47de177c5ef604f3089a53d", + "_id": "jquery@1.12.4", + "_shasum": "01e1dfba290fe73deba77ceeacb0f9ba2fec9e0c", + "_from": ".", + "_npmVersion": "2.15.1", + "_nodeVersion": "0.10.45", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "01e1dfba290fe73deba77ceeacb0f9ba2fec9e0c", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-1.12.4.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/jquery-1.12.4.tgz_1463764744844_0.4810373710934073" + }, + "directories": {} + }, + "2.2.4": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "2.2.4", + "main": "dist/jquery.js", + "homepage": "http://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/2.2.4/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "commitplease": "2.0.0", + "core-js": "0.9.17", + "grunt": "0.4.5", + "grunt-babel": "5.0.1", + "grunt-cli": "0.1.13", + "grunt-compare-size": "0.4.0", + "grunt-contrib-jshint": "0.11.2", + "grunt-contrib-uglify": "0.9.2", + "grunt-contrib-watch": "0.6.1", + "grunt-git-authors": "2.0.1", + "grunt-jscs": "2.1.0", + "grunt-jsonlint": "1.0.4", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "jsdom": "5.6.1", + "load-grunt-tasks": "1.0.0", + "qunitjs": "1.17.1", + "qunit-assert-step": "1.0.3", + "requirejs": "2.1.17", + "sinon": "1.10.3", + "sizzle": "2.2.1", + "strip-json-comments": "1.0.3", + "testswarm": "1.1.0", + "win-spawn": "2.0.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "c0185ab7c75aab88762c5aae780b9d83b80eda72", + "_id": "jquery@2.2.4", + "_shasum": "2c89d6889b5eac522a7eea32c14521559c6cbf02", + "_from": ".", + "_npmVersion": "2.15.1", + "_nodeVersion": "0.10.45", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "2c89d6889b5eac522a7eea32c14521559c6cbf02", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-2.2.4.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/jquery-2.2.4.tgz_1463765166836_0.5834389675874263" + }, + "directories": {} + }, + "3.0.0-rc1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.0.0-rc1", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.0.0-rc1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "babel-preset-es2015": "6.6.0", + "commitplease": "2.3.1", + "core-js": "2.2.2", + "cross-spawn": "2.2.3", + "grunt": "1.0.1", + "grunt-babel": "6.0.0", + "grunt-cli": "1.2.0", + "grunt-compare-size": "0.4.2", + "grunt-contrib-jshint": "1.0.0", + "grunt-contrib-uglify": "1.0.1", + "grunt-contrib-watch": "1.0.0", + "grunt-git-authors": "3.2.0", + "grunt-jscs": "2.8.0", + "grunt-jsonlint": "1.0.7", + "grunt-newer": "1.2.0", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "husky": "0.11.4", + "insight": "0.8.1", + "jsdom": "5.6.1", + "load-grunt-tasks": "3.5.0", + "native-promise-only": "0.8.1", + "promises-aplus-tests": "2.1.1", + "q": "1.4.1", + "qunit-assert-step": "1.0.3", + "qunitjs": "1.23.1", + "requirejs": "2.2.0", + "sinon": "1.17.3", + "sizzle": "2.3.0", + "strip-json-comments": "2.0.1", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test", + "precommit": "grunt precommit_lint" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Support", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "e503a93188dc4b5b42e2340f805f2d90b404bc50", + "_id": "jquery@3.0.0-rc1", + "_shasum": "d69fc540b0a56be13e8aecde5a8766ade7a44f8e", + "_from": ".", + "_npmVersion": "2.15.1", + "_nodeVersion": "0.10.45", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "d69fc540b0a56be13e8aecde5a8766ade7a44f8e", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.0.0-rc1.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/jquery-3.0.0-rc1.tgz_1463771627380_0.12211154378019273" + }, + "directories": {} + }, + "3.0.0": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.0.0", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.0.0/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "babel-preset-es2015": "6.6.0", + "commitplease": "2.3.1", + "core-js": "2.2.2", + "cross-spawn": "2.2.3", + "grunt": "1.0.1", + "grunt-babel": "6.0.0", + "grunt-cli": "1.2.0", + "grunt-compare-size": "0.4.2", + "grunt-contrib-jshint": "1.0.0", + "grunt-contrib-uglify": "1.0.1", + "grunt-contrib-watch": "1.0.0", + "grunt-git-authors": "3.2.0", + "grunt-jscs": "2.8.0", + "grunt-jsonlint": "1.0.7", + "grunt-newer": "1.2.0", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "husky": "0.11.4", + "insight": "0.8.1", + "jsdom": "5.6.1", + "load-grunt-tasks": "3.5.0", + "native-promise-only": "0.8.1", + "promises-aplus-tests": "2.1.1", + "q": "1.4.1", + "qunit-assert-step": "1.0.3", + "qunitjs": "1.23.1", + "requirejs": "2.2.0", + "sinon": "1.17.3", + "sizzle": "2.3.0", + "strip-json-comments": "2.0.1", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test", + "precommit": "grunt precommit_lint" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Support", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "0078f86be166a8747819d5d1516776a662cb69df", + "_id": "jquery@3.0.0", + "_shasum": "95a2a9541291a9f819e016f85ba247116d03e4ab", + "_from": ".", + "_npmVersion": "2.15.1", + "_nodeVersion": "0.10.45", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "95a2a9541291a9f819e016f85ba247116d03e4ab", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.0.0.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/jquery-3.0.0.tgz_1465497191024_0.9057256667874753" + }, + "directories": {} + }, + "3.1.0": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.1.0", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.1.0/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "babel-preset-es2015": "6.6.0", + "commitplease": "2.3.1", + "core-js": "2.2.2", + "cross-spawn": "2.2.3", + "eslint-config-jquery": "0.1.6", + "grunt": "1.0.1", + "grunt-babel": "6.0.0", + "grunt-cli": "1.2.0", + "grunt-compare-size": "0.4.2", + "grunt-contrib-uglify": "1.0.1", + "grunt-contrib-watch": "1.0.0", + "grunt-eslint": "18.1.0", + "grunt-git-authors": "3.2.0", + "grunt-jsonlint": "1.0.7", + "grunt-newer": "1.2.0", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "husky": "0.11.4", + "insight": "0.8.1", + "jsdom": "5.6.1", + "load-grunt-tasks": "3.5.0", + "native-promise-only": "0.8.1", + "promises-aplus-tests": "2.1.1", + "q": "1.4.1", + "qunit-assert-step": "1.0.3", + "qunitjs": "1.23.1", + "requirejs": "2.2.0", + "sinon": "1.17.3", + "sizzle": "2.3.0", + "strip-json-comments": "2.0.1", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test", + "precommit": "grunt precommit_lint" + }, + "commitplease": { + "components": [ + "Docs", + "Tests", + "Build", + "Support", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ] + }, + "gitHead": "6f02bc382c0529d3b4f68f6b2ad21876642dbbfe", + "_id": "jquery@3.1.0", + "_shasum": "129f6f1ae94b18f09010b008d0d6011e40613d7f", + "_from": ".", + "_npmVersion": "2.15.8", + "_nodeVersion": "4.4.7", + "_npmUser": { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + }, + "dist": { + "shasum": "129f6f1ae94b18f09010b008d0d6011e40613d7f", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.1.0.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-16-east.internal.npmjs.com", + "tmp": "tmp/jquery-3.1.0.tgz_1467927964329_0.882518710102886" + }, + "directories": {} + }, + "3.1.1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.1.1", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "jQuery Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.1.1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "babel-preset-es2015": "6.6.0", + "commitplease": "2.6.1", + "core-js": "2.2.2", + "cross-spawn": "2.2.3", + "eslint-config-jquery": "1.0.0", + "grunt": "1.0.1", + "grunt-babel": "6.0.0", + "grunt-cli": "1.2.0", + "grunt-compare-size": "0.4.2", + "grunt-contrib-uglify": "1.0.1", + "grunt-contrib-watch": "1.0.0", + "grunt-eslint": "19.0.0", + "grunt-git-authors": "3.2.0", + "grunt-jsonlint": "1.0.7", + "grunt-newer": "1.2.0", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "husky": "0.11.4", + "insight": "0.8.1", + "jsdom": "5.6.1", + "load-grunt-tasks": "3.5.0", + "native-promise-only": "0.8.1", + "promises-aplus-tests": "2.1.2", + "q": "1.4.1", + "qunit-assert-step": "1.0.3", + "qunitjs": "1.23.1", + "requirejs": "2.2.0", + "sinon": "1.17.3", + "sizzle": "2.3.3", + "strip-json-comments": "2.0.1", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test:slow", + "precommit": "grunt lint:newer", + "commitmsg": "node node_modules/commitplease" + }, + "commitplease": { + "nohook": true, + "components": [ + "Docs", + "Tests", + "Build", + "Support", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ], + "markerPattern": "^((clos|fix|resolv)(e[sd]|ing))|(refs?)", + "ticketPattern": "^((Closes|Fixes) ([a-zA-Z]{2,}-)[0-9]+)|(Refs? [^#])" + }, + "gitHead": "1b30f3ad466ebf2714d47eda34dbd7fdf6849fe3", + "_id": "jquery@3.1.1", + "_shasum": "347c1c21c7e004115e0a4da32cece041fad3c8a3", + "_from": ".", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.6.0", + "_npmUser": { + "name": "timmywil", + "email": "4timmywil@gmail.com" + }, + "dist": { + "shasum": "347c1c21c7e004115e0a4da32cece041fad3c8a3", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.1.1.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "m_gol", + "email": "m.goleb@gmail.com" + }, + { + "name": "timmywil", + "email": "timmywillisn@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/jquery-3.1.1.tgz_1474583566957_0.15473420196212828" + }, + "directories": {} + }, + "3.2.0": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.2.0", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "JS Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.2.0/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "babel-preset-es2015": "6.6.0", + "commitplease": "2.6.1", + "core-js": "2.2.2", + "cross-spawn": "2.2.3", + "eslint-config-jquery": "1.0.0", + "grunt": "1.0.1", + "grunt-babel": "6.0.0", + "grunt-cli": "1.2.0", + "grunt-compare-size": "0.4.2", + "grunt-contrib-uglify": "1.0.1", + "grunt-contrib-watch": "1.0.0", + "grunt-eslint": "19.0.0", + "grunt-git-authors": "3.2.0", + "grunt-jsonlint": "1.0.7", + "grunt-newer": "1.2.0", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "husky": "0.11.4", + "insight": "0.8.1", + "jsdom": "5.6.1", + "load-grunt-tasks": "3.5.0", + "native-promise-only": "0.8.1", + "promises-aplus-tests": "2.1.2", + "q": "1.4.1", + "qunit-assert-step": "1.0.3", + "qunitjs": "1.23.1", + "requirejs": "2.2.0", + "sinon": "1.17.3", + "sizzle": "2.3.3", + "strip-json-comments": "2.0.1", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test:slow", + "precommit": "grunt lint:newer", + "commitmsg": "node node_modules/commitplease" + }, + "commitplease": { + "nohook": true, + "components": [ + "Docs", + "Tests", + "Build", + "Support", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ], + "markerPattern": "^((clos|fix|resolv)(e[sd]|ing))|^(refs?)", + "ticketPattern": "^((Closes|Fixes) ([a-zA-Z]{2,}-)[0-9]+)|^(Refs? [^#])" + }, + "gitHead": "a81259fff4ea0c7b4cd98f04050c829640395a31", + "_id": "jquery@3.2.0", + "_shasum": "3bdbba66e1eee0785532dddadb0e0d2521ca584b", + "_from": ".", + "_npmVersion": "4.1.2", + "_nodeVersion": "7.7.3", + "_npmUser": { + "name": "timmywil", + "email": "4timmywil@gmail.com" + }, + "dist": { + "shasum": "3bdbba66e1eee0785532dddadb0e0d2521ca584b", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.2.0.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "mgol", + "email": "m.goleb@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "timmywil", + "email": "4timmywil@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/jquery-3.2.0.tgz_1489699855733_0.5328386940527707" + }, + "directories": {} + }, + "3.2.1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.2.1", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "JS Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.2.1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "babel-preset-es2015": "6.6.0", + "commitplease": "2.6.1", + "core-js": "2.2.2", + "cross-spawn": "2.2.3", + "eslint-config-jquery": "1.0.0", + "grunt": "1.0.1", + "grunt-babel": "6.0.0", + "grunt-cli": "1.2.0", + "grunt-compare-size": "0.4.2", + "grunt-contrib-uglify": "1.0.1", + "grunt-contrib-watch": "1.0.0", + "grunt-eslint": "19.0.0", + "grunt-git-authors": "3.2.0", + "grunt-jsonlint": "1.0.7", + "grunt-newer": "1.2.0", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "husky": "0.11.4", + "insight": "0.8.1", + "jsdom": "5.6.1", + "load-grunt-tasks": "3.5.0", + "native-promise-only": "0.8.1", + "promises-aplus-tests": "2.1.2", + "q": "1.4.1", + "qunit-assert-step": "1.0.3", + "qunitjs": "1.23.1", + "requirejs": "2.2.0", + "sinon": "1.17.3", + "sizzle": "2.3.3", + "strip-json-comments": "2.0.1", + "testswarm": "1.1.0" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test": "grunt && grunt test:slow", + "precommit": "grunt lint:newer", + "commitmsg": "node node_modules/commitplease" + }, + "commitplease": { + "nohook": true, + "components": [ + "Docs", + "Tests", + "Build", + "Support", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ], + "markerPattern": "^((clos|fix|resolv)(e[sd]|ing))|^(refs?)", + "ticketPattern": "^((Closes|Fixes) ([a-zA-Z]{2,}-)[0-9]+)|^(Refs? [^#])" + }, + "gitHead": "77d2a51d0520d2ee44173afdf4e40a9201f5964e", + "_id": "jquery@3.2.1", + "_shasum": "5c4d9de652af6cd0a770154a631bba12b015c787", + "_from": ".", + "_npmVersion": "4.4.4", + "_nodeVersion": "7.7.3", + "_npmUser": { + "name": "timmywil", + "email": "4timmywil@gmail.com" + }, + "dist": { + "shasum": "5c4d9de652af6cd0a770154a631bba12b015c787", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.2.1.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "mgol", + "email": "m.goleb@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "timmywil", + "email": "4timmywil@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/jquery-3.2.1.tgz_1490036530067_0.19497186387889087" + }, + "directories": {} + }, + "3.3.0": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.3.0", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "JS Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.3.0/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": { + "archiver": "1.3.0", + "chalk": "1.1.3", + "npm": "4.4.1", + "shelljs": "0.7.7" + }, + "devDependencies": { + "babel-core": "7.0.0-beta.0", + "babel-plugin-transform-es2015-for-of": "7.0.0-beta.0", + "commitplease": "2.7.10", + "core-js": "2.4.1", + "eslint-config-jquery": "1.0.1", + "grunt": "1.0.1", + "grunt-babel": "7.0.0", + "grunt-cli": "1.2.0", + "grunt-compare-size": "0.4.2", + "grunt-contrib-uglify": "3.0.1", + "grunt-contrib-watch": "1.0.0", + "grunt-eslint": "20.0.0", + "grunt-git-authors": "3.2.0", + "grunt-jsonlint": "1.1.0", + "grunt-karma": "2.0.0", + "grunt-newer": "1.3.0", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "husky": "0.14.3", + "insight": "0.8.4", + "jsdom": "5.6.1", + "karma": "1.7.0", + "karma-browserstack-launcher": "1.3.0", + "karma-chrome-launcher": "2.2.0", + "karma-firefox-launcher": "1.0.1", + "karma-qunit": "1.2.1", + "load-grunt-tasks": "3.5.2", + "native-promise-only": "0.8.1", + "promises-aplus-tests": "2.1.2", + "q": "1.5.0", + "qunit-assert-step": "1.0.3", + "qunitjs": "1.23.1", + "raw-body": "2.2.0", + "requirejs": "2.3.3", + "sinon": "2.3.7", + "sizzle": "2.3.3", + "strip-json-comments": "2.0.1", + "testswarm": "1.1.0", + "uglify-js": "3.3.4" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test:browserless": "grunt && grunt test:slow", + "test:browser": "grunt && grunt karma:main", + "test": "grunt && grunt test:slow && grunt karma:main", + "jenkins": "npm run test:browserless", + "precommit": "grunt lint:newer qunit_fixture", + "commitmsg": "node node_modules/commitplease" + }, + "commitplease": { + "nohook": true, + "components": [ + "Docs", + "Tests", + "Build", + "Support", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ], + "markerPattern": "^((clos|fix|resolv)(e[sd]|ing))|^(refs?)", + "ticketPattern": "^((Closes|Fixes) ([a-zA-Z]{2,}-)[0-9]+)|^(Refs? [^#])" + }, + "gitHead": "9a8a1c63930edc9fb6fab9e75b3eee578762b8a5", + "_id": "jquery@3.3.0", + "_npmVersion": "5.6.0", + "_nodeVersion": "9.3.0", + "_npmUser": { + "name": "timmywil", + "email": "4timmywil@gmail.com" + }, + "dist": { + "integrity": "sha512-1SmQFTqu24RtvnvLN/D1RFIsOBGqLQYsGJgZxejd69Rw9ACBJvSgppA+A+wBcXgASwRSoX1aDN1I5ZNIrFC6Xw==", + "shasum": "06004bc2d0204ce92822a794ee8efb50283bb9ff", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.3.0.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "mgol", + "email": "m.goleb@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "timmywil", + "email": "4timmywil@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/jquery-3.3.0.tgz_1516388631205_0.827812286792323" + }, + "directories": {} + }, + "3.3.1": { + "name": "jquery", + "title": "jQuery", + "description": "JavaScript library for DOM operations", + "version": "3.3.1", + "main": "dist/jquery.js", + "homepage": "https://jquery.com", + "author": { + "name": "JS Foundation and other contributors", + "url": "https://github.com/jquery/jquery/blob/3.3.1/AUTHORS.txt" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/jquery/jquery.git" + }, + "keywords": [ + "jquery", + "javascript", + "browser", + "library" + ], + "bugs": { + "url": "https://github.com/jquery/jquery/issues" + }, + "license": "MIT", + "dependencies": {}, + "devDependencies": { + "babel-core": "7.0.0-beta.0", + "babel-plugin-transform-es2015-for-of": "7.0.0-beta.0", + "commitplease": "2.7.10", + "core-js": "2.4.1", + "eslint-config-jquery": "1.0.1", + "grunt": "1.0.1", + "grunt-babel": "7.0.0", + "grunt-cli": "1.2.0", + "grunt-compare-size": "0.4.2", + "grunt-contrib-uglify": "3.0.1", + "grunt-contrib-watch": "1.0.0", + "grunt-eslint": "20.0.0", + "grunt-git-authors": "3.2.0", + "grunt-jsonlint": "1.1.0", + "grunt-karma": "2.0.0", + "grunt-newer": "1.3.0", + "grunt-npmcopy": "0.1.0", + "gzip-js": "0.3.2", + "husky": "0.14.3", + "insight": "0.8.4", + "jsdom": "5.6.1", + "karma": "1.7.0", + "karma-browserstack-launcher": "1.3.0", + "karma-chrome-launcher": "2.2.0", + "karma-firefox-launcher": "1.0.1", + "karma-qunit": "1.2.1", + "load-grunt-tasks": "3.5.2", + "native-promise-only": "0.8.1", + "promises-aplus-tests": "2.1.2", + "q": "1.5.0", + "qunit-assert-step": "1.0.3", + "qunitjs": "1.23.1", + "raw-body": "2.2.0", + "requirejs": "2.3.3", + "sinon": "2.3.7", + "sizzle": "2.3.3", + "strip-json-comments": "2.0.1", + "testswarm": "1.1.0", + "uglify-js": "3.3.4" + }, + "scripts": { + "build": "npm install && grunt", + "start": "grunt watch", + "test:browserless": "grunt && grunt test:slow", + "test:browser": "grunt && grunt karma:main", + "test": "grunt && grunt test:slow && grunt karma:main", + "jenkins": "npm run test:browserless", + "precommit": "grunt lint:newer qunit_fixture", + "commitmsg": "node node_modules/commitplease" + }, + "commitplease": { + "nohook": true, + "components": [ + "Docs", + "Tests", + "Build", + "Support", + "Release", + "Core", + "Ajax", + "Attributes", + "Callbacks", + "CSS", + "Data", + "Deferred", + "Deprecated", + "Dimensions", + "Effects", + "Event", + "Manipulation", + "Offset", + "Queue", + "Selector", + "Serialize", + "Traversing", + "Wrap" + ], + "markerPattern": "^((clos|fix|resolv)(e[sd]|ing))|^(refs?)", + "ticketPattern": "^((Closes|Fixes) ([a-zA-Z]{2,}-)[0-9]+)|^(Refs? [^#])" + }, + "gitHead": "9e8ec3d10fad04748176144f108d7355662ae75e", + "_id": "jquery@3.3.1", + "_npmVersion": "5.6.0", + "_nodeVersion": "9.3.0", + "_npmUser": { + "name": "timmywil", + "email": "4timmywil@gmail.com" + }, + "dist": { + "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==", + "shasum": "958ce29e81c9790f31be7792df5d4d95fc57fbca", + "tarball": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz" + }, + "maintainers": [ + { + "name": "dmethvin", + "email": "dave.methvin@gmail.com" + }, + { + "name": "mgol", + "email": "m.goleb@gmail.com" + }, + { + "name": "scott.gonzalez", + "email": "scott.gonzalez@gmail.com" + }, + { + "name": "timmywil", + "email": "4timmywil@gmail.com" + } + ], + "_npmOperationalInternal": { + "host": "s3://npm-registry-packages", + "tmp": "tmp/jquery-3.3.1.tgz_1516469230473_0.5458589680492878" + }, + "directories": {} + } + }, + "time": { + "modified": "2018-05-21T21:39:54.702Z", + "created": "2011-03-19T07:19:56.392Z", + "1.5.1": "2011-03-19T07:19:56.956Z", + "1.6.2": "2011-07-06T16:13:21.519Z", + "1.6.3": "2011-09-12T19:05:34.373Z", + "1.7.2": "2012-05-01T11:14:09.090Z", + "1.7.3": "2012-07-01T16:11:53.194Z", + "1.8.2": "2012-11-11T22:43:58.910Z", + "1.8.3": "2012-12-01T00:03:02.297Z", + "2.1.0-beta2": "2013-11-15T16:34:48.859Z", + "2.1.0-beta3": "2013-12-20T22:53:28.426Z", + "1.11.0-beta3": "2014-01-06T19:57:22.387Z", + "2.1.0-rc1": "2014-01-17T22:47:16.391Z", + "1.11.0-pre": "2014-01-16T20:38:42.912Z", + "1.11.0-rc1": "2014-01-16T21:08:36.924Z", + "1.11.0": "2014-01-23T21:07:07.184Z", + "2.1.0": "2014-01-23T21:12:47.772Z", + "2.1.1-beta1": "2014-03-24T17:05:07.581Z", + "1.11.1-beta1": "2014-03-24T17:25:14.236Z", + "2.1.1-rc1": "2014-04-18T15:29:41.423Z", + "1.11.1-rc1": "2014-04-18T15:40:23.931Z", + "2.1.1-rc2": "2014-04-21T20:52:06.866Z", + "1.11.1-rc2": "2014-04-21T21:12:52.817Z", + "2.1.1": "2014-05-01T17:15:20.164Z", + "1.11.1": "2014-05-01T18:05:32.863Z", + "1.9.1": "2014-07-17T22:01:17.886Z", + "2.1.2": "2014-12-17T14:14:28.184Z", + "1.11.2": "2014-12-17T16:07:07.647Z", + "2.1.3": "2014-12-18T15:18:38.205Z", + "2.1.4": "2015-04-28T16:17:13.648Z", + "1.11.3": "2015-04-28T16:22:06.378Z", + "3.0.0-alpha1": "2015-07-13T19:26:37.913Z", + "1.12.0": "2016-01-08T19:58:05.265Z", + "2.2.0": "2016-01-08T20:03:43.280Z", + "3.0.0-beta1": "2016-01-14T23:09:43.368Z", + "1.12.1": "2016-02-22T19:08:05.212Z", + "2.2.1": "2016-02-22T19:12:09.116Z", + "1.12.2": "2016-03-17T17:45:59.810Z", + "2.2.2": "2016-03-17T17:52:26.967Z", + "1.12.3": "2016-04-05T19:21:37.716Z", + "2.2.3": "2016-04-05T19:27:17.929Z", + "1.12.4": "2016-05-20T17:19:07.375Z", + "2.2.4": "2016-05-20T17:26:07.921Z", + "3.0.0-rc1": "2016-05-20T19:13:48.387Z", + "3.0.0": "2016-06-09T18:33:13.420Z", + "3.1.0": "2016-07-07T21:46:05.554Z", + "3.1.1": "2016-09-22T22:32:49.360Z", + "3.2.0": "2017-03-16T21:30:56.342Z", + "3.2.1": "2017-03-20T19:02:13.508Z", + "3.3.0": "2018-01-19T19:03:52.616Z", + "3.3.1": "2018-01-20T17:27:11.928Z" + }, + "dist-tags": { + "beta": "3.0.0", + "latest": "3.3.1", + "jota": "1.6.3" + }, + "_uplinks": { + "npmjs": { + "etag": "W/\"252f0a131cedd3ea82dfefd6fa049558\"", + "fetched": 1529779934081 + } + }, + "_distfiles": { + "jquery-1.5.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.5.1.tgz", + "sha": "2ae2d661e906c1a01e044a71bb5b2743942183e5", + "registry": "npmjs" + }, + "jquery-1.6.2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.6.2.tgz", + "sha": "01757a4c5beea29e8ae697527c3131abbe997a28", + "registry": "npmjs" + }, + "jquery-1.6.3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.6.3.tgz", + "sha": "e1f732fa7e718a6adb3ec20ae0eb2a64fd95ef01", + "registry": "npmjs" + }, + "jquery-1.7.2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.7.2.tgz", + "sha": "a93746763aca75a34df4c16395b0826310d0eaf2", + "registry": "npmjs" + }, + "jquery-1.7.3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.7.3.tgz", + "sha": "e3d00a71612ac7e9b554b438e0987d0272ddba94", + "registry": "npmjs" + }, + "jquery-1.8.2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.8.2.tgz", + "sha": "46790ae07c6de38124eda90bbf7336b43df93305", + "registry": "npmjs" + }, + "jquery-1.8.3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.8.3.tgz", + "sha": "cfa2941c05a83d966f21347f759a6d15281c60cc", + "registry": "npmjs" + }, + "jquery-2.1.0-beta2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.0-beta2.tgz", + "sha": "e0fbbe2beb45b4d8f808362c7c99ef5bfee7d8c6", + "registry": "npmjs" + }, + "jquery-2.1.0-beta3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.0-beta3.tgz", + "sha": "5a89b624d8fa625fe5fa83a12a9acb1ef8a11d02", + "registry": "npmjs" + }, + "jquery-1.11.0-beta3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.0-beta3.tgz", + "sha": "0464a6aba9f35f6c83a203caa23ab420909ce852", + "registry": "npmjs" + }, + "jquery-1.11.0-rc1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.0-rc1.tgz", + "sha": "c2f6a4877374647b20b080c478d8dbcdfb4960ee", + "registry": "npmjs" + }, + "jquery-2.1.0-rc1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.0-rc1.tgz", + "sha": "8c9f5d9a055c2fedb3f5269617ae649497d6a3b0", + "registry": "npmjs" + }, + "jquery-1.11.0.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.0.tgz", + "sha": "c67ceee19b403650d682adcf39d5c9009814d949", + "registry": "npmjs" + }, + "jquery-2.1.0.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.0.tgz", + "sha": "1c9a8c971d2b53dae10d72e16cbb5a1df16a4ace", + "registry": "npmjs" + }, + "jquery-2.1.1-beta1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.1-beta1.tgz", + "sha": "6306c8ea1d104775f3ef8f5c26f0a32acd710a11", + "registry": "npmjs" + }, + "jquery-1.11.1-beta1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.1-beta1.tgz", + "sha": "c7eacde5e1ae06e029f1cd1b2dd444953a33e843", + "registry": "npmjs" + }, + "jquery-2.1.1-rc1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.1-rc1.tgz", + "sha": "95c494fdbbd0cefc305260e11ad46ae49a387c3d", + "registry": "npmjs" + }, + "jquery-1.11.1-rc1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.1-rc1.tgz", + "sha": "666a7df02488b48732d96e8ab9bdd34f61dd4238", + "registry": "npmjs" + }, + "jquery-2.1.1-rc2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.1-rc2.tgz", + "sha": "99833e415efa7ac8a4efecc5df6894b2f938a598", + "registry": "npmjs" + }, + "jquery-1.11.1-rc2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.1-rc2.tgz", + "sha": "a4ef3edde0864d8524c5e72f59c459fd7a9ebd17", + "registry": "npmjs" + }, + "jquery-2.1.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.1.tgz", + "sha": "828fc60f50f7ee5983363ef4eb01c5f70af4bd5b", + "registry": "npmjs" + }, + "jquery-1.11.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.1.tgz", + "sha": "b6ec928590112ebed69e1e49cbfd0025ccd60ddb", + "registry": "npmjs" + }, + "jquery-1.9.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.9.1.tgz", + "sha": "e4cd4835faaefbade535857613c0fc3ff2adaf34", + "registry": "npmjs" + }, + "jquery-2.1.2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.2.tgz", + "sha": "b68f154cb2ea4731924883e9fe20ec199d1dc1e2", + "registry": "npmjs" + }, + "jquery-1.11.2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.2.tgz", + "sha": "30ab26857211c37caa83da0f6903155fe49bb72d", + "registry": "npmjs" + }, + "jquery-2.1.3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.3.tgz", + "sha": "6ec55204673d505d39432c5bf5cfad10e1dbad2e", + "registry": "npmjs" + }, + "jquery-2.1.4.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.1.4.tgz", + "sha": "228bde698a0c61431dc2630a6a154f15890d2317", + "registry": "npmjs" + }, + "jquery-1.11.3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.11.3.tgz", + "sha": "dd8b74278b27102d29df63eae28308a8cfa1b583", + "registry": "npmjs" + }, + "jquery-3.0.0-alpha1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.0.0-alpha1.tgz", + "sha": "3493d672266e21c2dffb2714f935448edebe3c62", + "registry": "npmjs" + }, + "jquery-1.12.0.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.12.0.tgz", + "sha": "44653be4e3e4628b106bf2141dfd10fbca6021ef", + "registry": "npmjs" + }, + "jquery-2.2.0.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.2.0.tgz", + "sha": "d0e84ebbf199da51bf7ec39307f19b35754e9cba", + "registry": "npmjs" + }, + "jquery-3.0.0-beta1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.0.0-beta1.tgz", + "sha": "d2a4e368e2eed7050bf66abbbb54db2ea345349d", + "registry": "npmjs" + }, + "jquery-1.12.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.12.1.tgz", + "sha": "9cc34ce4780d4ceb90c44328f071064f01960c18", + "registry": "npmjs" + }, + "jquery-2.2.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.2.1.tgz", + "sha": "3c3e16854ad3d2ac44ac65021b17426d22ad803f", + "registry": "npmjs" + }, + "jquery-1.12.2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.12.2.tgz", + "sha": "b8a8b45937312a19eebbcf5a0589b0311c8220bb", + "registry": "npmjs" + }, + "jquery-2.2.2.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.2.2.tgz", + "sha": "3e302dc61eb329a21e9efac937d731f061134c59", + "registry": "npmjs" + }, + "jquery-1.12.3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.12.3.tgz", + "sha": "1298b88b908e7c7f7501eb8c1a61f1ac8337b531", + "registry": "npmjs" + }, + "jquery-2.2.3.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.2.3.tgz", + "sha": "45e07e4190334de36c9e1a64b43b1f1373d91758", + "registry": "npmjs" + }, + "jquery-1.12.4.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-1.12.4.tgz", + "sha": "01e1dfba290fe73deba77ceeacb0f9ba2fec9e0c", + "registry": "npmjs" + }, + "jquery-2.2.4.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-2.2.4.tgz", + "sha": "2c89d6889b5eac522a7eea32c14521559c6cbf02", + "registry": "npmjs" + }, + "jquery-3.0.0-rc1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.0.0-rc1.tgz", + "sha": "d69fc540b0a56be13e8aecde5a8766ade7a44f8e", + "registry": "npmjs" + }, + "jquery-3.0.0.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.0.0.tgz", + "sha": "95a2a9541291a9f819e016f85ba247116d03e4ab", + "registry": "npmjs" + }, + "jquery-3.1.0.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.1.0.tgz", + "sha": "129f6f1ae94b18f09010b008d0d6011e40613d7f", + "registry": "npmjs" + }, + "jquery-3.1.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.1.1.tgz", + "sha": "347c1c21c7e004115e0a4da32cece041fad3c8a3", + "registry": "npmjs" + }, + "jquery-3.2.0.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.2.0.tgz", + "sha": "3bdbba66e1eee0785532dddadb0e0d2521ca584b", + "registry": "npmjs" + }, + "jquery-3.2.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.2.1.tgz", + "sha": "5c4d9de652af6cd0a770154a631bba12b015c787", + "registry": "npmjs" + }, + "jquery-3.3.0.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.3.0.tgz", + "sha": "06004bc2d0204ce92822a794ee8efb50283bb9ff", + "registry": "npmjs" + }, + "jquery-3.3.1.tgz": { + "url": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz", + "sha": "958ce29e81c9790f31be7792df5d4d95fc57fbca", + "registry": "npmjs" + } + }, + "_attachments": { + "jquery-1.5.1.tgz": { + "shasum": "2ae2d661e906c1a01e044a71bb5b2743942183e5" + } + }, + "_rev": "60-fed4915c27b9c1e6", + "readme": "# jQuery\n\n> jQuery is a fast, small, and feature-rich JavaScript library.\n\nFor information on how to get started and how to use jQuery, please see [jQuery's documentation](http://api.jquery.com/).\nFor source files and issues, please visit the [jQuery repo](https://github.com/jquery/jquery).\n\nIf upgrading, please see the [blog post for 3.3.1](https://blog.jquery.com/2017/03/20/jquery-3.3.1-now-available/). This includes notable differences from the previous version and a more readable changelog.\n\n## Including jQuery\n\nBelow are some of the most common ways to include jQuery.\n\n### Browser\n\n#### Script tag\n\n```html\n\n```\n\n#### Babel\n\n[Babel](http://babeljs.io/) is a next generation JavaScript compiler. One of the features is the ability to use ES6/ES2015 modules now, even though browsers do not yet support this feature natively.\n\n```js\nimport $ from \"jquery\";\n```\n\n#### Browserify/Webpack\n\nThere are several ways to use [Browserify](http://browserify.org/) and [Webpack](https://webpack.github.io/). For more information on using these tools, please refer to the corresponding project's documention. In the script, including jQuery will usually look like this...\n\n```js\nvar $ = require(\"jquery\");\n```\n\n#### AMD (Asynchronous Module Definition)\n\nAMD is a module format built for the browser. For more information, we recommend [require.js' documentation](http://requirejs.org/docs/whyamd.html).\n\n```js\ndefine([\"jquery\"], function($) {\n\n});\n```\n\n### Node\n\nTo include jQuery in [Node](nodejs.org), first install with npm.\n\n```sh\nnpm install jquery\n```\n\nFor jQuery to work in Node, a window with a document is required. Since no such window exists natively in Node, one can be mocked by tools such as [jsdom](https://github.com/tmpvar/jsdom). This can be useful for testing purposes.\n\n```js\nrequire(\"jsdom\").env(\"\", function(err, window) {\n\tif (err) {\n\t\tconsole.error(err);\n\t\treturn;\n\t}\n\n\tvar $ = require(\"jquery\")(window);\n});\n```" +} \ No newline at end of file diff --git a/packages/server/test/storage/mock/store/npm_test/package.json b/packages/server/test/storage/mock/store/npm_test/package.json new file mode 100644 index 000000000..037dba1e7 --- /dev/null +++ b/packages/server/test/storage/mock/store/npm_test/package.json @@ -0,0 +1,87 @@ +{ + "_id": "npm_test", + "name": "npm_test", + "description": "", + "dist-tags": { + "latest": "1.0.0" + }, + "versions": { + "1.0.0": { + "name": "npm_test", + "version": "1.0.0", + "description": "", + "main": "index.js", + "dependencies": { + "test": "^1.4.0" + }, + "devDependencies": { + + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [ + + ], + "author": "", + "license": "ISC", + "readme": "ERROR: No README data found!", + "_id": "npm_test@1.0.0", + "_npmVersion": "5.5.1", + "_nodeVersion": "9.3.0", + "_npmUser": { + + }, + "dist": { + "integrity": "sha512-tfzM1OFjWwg2d2Wke\/DV6icjeTZUVOZYLkbf8wmONRSAgMovL\/F+zyI24OhTtWyOXd1Kbj2YUMBvLpmpAjv8zg==", + "shasum": "3e4e6bd5097b295e520b947c9be3259a9509a673", + "tarball": "http:\/\/localhost:4873\/npm_test\/-\/npm_test-1.0.0.tgz" + } + }, + "2.0.0": { + "name": "npm_test", + "version": "2.0.0", + "description": "", + "main": "index.js", + "dependencies": { + "test": "^2.4.0" + }, + "devDependencies": { + + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [ + + ], + "author": "", + "license": "ISC", + "readme": "ERROR: No README data found!", + "_id": "npm_test@2.0.0", + "_npmVersion": "5.5.1", + "_nodeVersion": "9.3.0", + "_npmUser": { + + }, + "dist": { + "integrity": "sha512-tzzM1OFjWwg2d2Wke\/DV6icjeTZUVOZYLkbf8wmONRSAgMovL\/F+zyI24OhTtWyOXd1Kbj2YUMBvLpmpAjv8zg==", + "shasum": "3a4e6bd5097b295e520b947c9be3259a9509a673", + "tarball": "http:\/\/localhost:4873\/npm_test\/-\/npm_test-2.0.0.tgz" + } + } + }, + "readme": "ERROR: No README data found!", + "_attachments": { + "npm_test-1.0.0.tgz": { + "content_type": "application\/octet-stream", + "data": "H4sIAAAAAAAAE+2ST08CMRDFOe+nmPTAyawt7ELCVT149ihqmu4gI9I2bUGM4bvbbhGM4eYmxmR\/l6bvtW+mf6xUK\/mMlzaP5Ys3etAxnPNJVcE5PVHV0RPjkairsZiK0YALUU+mMOBdN3KOjQ\/SxVZ+m5PPAsfxn\/BRADAt18hmwDxpY0k+BfSBXSRni86T0ckUJS95Vhv0ypENByeLa0ntjHSDu\/iPvpZajIJWhD66qRwcC6Xlj6KsYm7U94cN2+sfe7KRS34LabuMCaiWBubsxjnjZqANJAO8RUULwmbOYDgE3FEAcSqzwvc345oUd\/\/QKnITlsadzvNKCrVv7+X27ooV++Kv36qnp6enSz4B8bhKUwAIAAA=", + "length": 281 + }, + "npm_test-2.0.0.tgz": { + "content_type": "application\/octet-stream", + "data": "H4sIAAAAAAAAE+2ST08CMRDFOe+nmPTAyawt7ELCVT149ihqmu4gI9I2bUGM4bvbbhGM4eYmxmR\/l6bvtW+mf6xUK\/mMlzaP5Ys3etAxnPNJVcE5PVHV0RPjkairsZiK0YALUU+mMOBdN3KOjQ\/SxVZ+m5PPAsfxn\/BRADAt18hmwDxpY0k+BfSBXSRni86T0ckUJS95Vhv0ypENByeLa0ntjHSDu\/iPvpZajIJWhD66qRwcC6Xlj6KsYm7U94cN2+sfe7KRS34LabuMCaiWBubsxjnjZqANJAO8RUULwmbOYDgE3FEAcSqzwvc345oUd\/\/QKnITlsadzvNKCrVv7+X27ooV++Kv36qnp6enSz4B8bhKUwAIAAA=", + "length": 281 + } + } +} diff --git a/test/unit/partials/config/yaml/store.spec.yaml b/packages/server/test/storage/store.spec.yaml similarity index 83% rename from test/unit/partials/config/yaml/store.spec.yaml rename to packages/server/test/storage/store.spec.yaml index 14e344562..9580c7c0c 100644 --- a/test/unit/partials/config/yaml/store.spec.yaml +++ b/packages/server/test/storage/store.spec.yaml @@ -1,6 +1,9 @@ -uplinks: - npmjs: - url: http://localhost:4873/ +storage: ./storage + +auth: + htpasswd: + file: ./htpasswd + packages: '@*/*': access: $all @@ -17,5 +20,6 @@ packages: 'npm_test': access: $all publish: $all + logs: - { type: stdout, format: pretty, level: warn } diff --git a/test/unit/modules/api/token.spec.ts b/packages/server/test/token/index.spec.ts similarity index 73% rename from test/unit/modules/api/token.spec.ts rename to packages/server/test/token/index.spec.ts index d2b28e9a9..0755eef76 100644 --- a/test/unit/modules/api/token.spec.ts +++ b/packages/server/test/token/index.spec.ts @@ -1,25 +1,20 @@ import request from 'supertest'; import path from 'path'; -import rimraf from 'rimraf'; import _ from 'lodash'; -import configDefault from '../../partials/config'; -import endPointAPI from '../../../../src/api'; - +import endPointAPI from '@verdaccio/server'; import { HEADERS, HTTP_STATUS, - HEADER_TYPE, - TOKEN_BEARER, - API_ERROR, - SUPPORT_ERRORS -} from '../../../../src/lib/constants'; -import { mockServer } from '../../__helper/mock'; -import { DOMAIN_SERVERS } from '../../../functional/config.functional'; -import { getNewToken } from '../../__helper/api'; -import { buildToken } from '../../../../src/lib/utils'; + HEADER_TYPE, TOKEN_BEARER, API_ERROR, SUPPORT_ERRORS, +} from '@verdaccio/dev-commons'; -require('../../../../src/lib/logger').setup([{ type: 'stdout', format: 'pretty', level: 'trace' }]); +import {buildToken} from '@verdaccio/utils'; +import {generateRamdonStorage, DOMAIN_SERVERS, mockServer, getNewToken, configExample} from '@verdaccio/mock'; + +import {setup, logger} from '@verdaccio/logger'; + +setup([]); const credentials = { name: 'jota_token', password: 'secretPass' }; @@ -31,13 +26,13 @@ const generateTokenCLI = async (app, token, payload): Promise => { .send(JSON.stringify(payload)) .set(HEADERS.AUTHORIZATION, buildToken(TOKEN_BEARER, token)) .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) - .end(function (err, resp) { + .end(function(err, resp) { if (err) { return reject([err, resp]); } resolve([err, resp]); }); - }); + }); }; const deleteTokenCLI = async (app, token, tokenToDelete): Promise => { @@ -47,7 +42,7 @@ const deleteTokenCLI = async (app, token, tokenToDelete): Promise => { .set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON) .set(HEADERS.AUTHORIZATION, buildToken(TOKEN_BEARER, token)) .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) - .end(function (err, resp) { + .end(function(err, resp) { if (err) { return reject([err, resp]); } @@ -61,39 +56,32 @@ describe('endpoint unit test', () => { let mockRegistry; let token; - beforeAll(function (done) { - const store = path.join(__dirname, '../../partials/store/test-storage-token-spec'); + beforeAll(async function(done) { + const store = generateRamdonStorage(); const mockServerPort = 55543; - rimraf(store, async () => { - const configForTest = configDefault( - { - auth: { - htpasswd: { - file: './test-storage-token-spec/.htpasswd-token' - } - }, - storage: store, - self_path: store, - uplinks: { - npmjs: { - url: `http://${DOMAIN_SERVERS}:${mockServerPort}` - } - }, - logs: [{ type: 'stdout', format: 'pretty', level: 'trace' }] - }, - 'token.spec.yaml' - ); + const configForTest = configExample({ + storage: store, + self_path: store, + uplinks: { + npmjs: { + url: `http://${DOMAIN_SERVERS}:${mockServerPort}` + } + } + }, 'token.spec.yaml', __dirname); - app = await endPointAPI(configForTest); - mockRegistry = await mockServer(mockServerPort).init(); - token = await getNewToken(request(app), credentials); - - done(); - }); + app = await endPointAPI(configForTest); + const binPath = require.resolve('verdaccio/bin/verdaccio'); + const storePath = path.join(__dirname, '/mock/store'); + mockRegistry = await mockServer(mockServerPort, { storePath, silence: true }).init(binPath); + token = await getNewToken(request(app), credentials); + done(); }); - afterAll(function (done) { - mockRegistry[0].stop(); + afterAll(function(done) { + const [registry, pid] = mockRegistry; + registry.stop(); + logger.info(`registry ${pid} has been stopped`); + done(); }); @@ -104,12 +92,12 @@ describe('endpoint unit test', () => { .set(HEADERS.AUTHORIZATION, buildToken(TOKEN_BEARER, token)) .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(HTTP_STATUS.OK) - .end(function (err, resp) { + .end(function(err, resp) { if (err) { return done(err); } - const { objects, urls } = resp.body; + const { objects, urls} = resp.body; expect(objects).toHaveLength(0); expect(urls.next).toEqual(''); done(); @@ -128,12 +116,12 @@ describe('endpoint unit test', () => { .set(HEADERS.AUTHORIZATION, buildToken(TOKEN_BEARER, token)) .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(HTTP_STATUS.OK) - .end(function (err, resp) { + .end(function(err, resp) { if (err) { return done(err); } - const { objects, urls } = resp.body; + const { objects, urls} = resp.body; expect(objects).toHaveLength(1); const [tokenGenerated] = objects; @@ -164,7 +152,7 @@ describe('endpoint unit test', () => { .set(HEADERS.AUTHORIZATION, buildToken(TOKEN_BEARER, token)) .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(HTTP_STATUS.OK) - .end(function (err) { + .end(function(err) { if (err) { return done(err); } @@ -213,7 +201,7 @@ describe('endpoint unit test', () => { try { const res = await generateTokenCLI(app, token, { password: credentials.password, - readonly: false + readonly: false, }); expect(res[0]).toBeNull(); diff --git a/packages/server/test/token/mock/store/.gitkeep b/packages/server/test/token/mock/store/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/test/unit/partials/config/yaml/token.spec.yaml b/packages/server/test/token/token.spec.yaml similarity index 73% rename from test/unit/partials/config/yaml/token.spec.yaml rename to packages/server/test/token/token.spec.yaml index 87ddb880a..5ca283b92 100644 --- a/test/unit/partials/config/yaml/token.spec.yaml +++ b/packages/server/test/token/token.spec.yaml @@ -1,7 +1,6 @@ -storage: ./storage_default_storage -uplinks: - npmjs: - url: http://localhost:4873/ +storage: ./storage +plugins: ./plugins + security: api: jwt: @@ -9,6 +8,11 @@ security: expiresIn: 5m # to avoid invalid verification token, more info on JWT page notBefore: 0 + +auth: + htpasswd: + file: ./htpasswd + packages: '@token/*': access: $authenticated @@ -17,7 +21,7 @@ packages: access: $authenticated publish: $authenticated logs: - - { type: stdout, format: pretty, level: trace } + - { type: stdout, format: pretty, level: error } experiments: ## enable token for testing token: true diff --git a/test/unit/modules/web/api.web.spec.ts b/packages/server/test/web/index.spec.ts similarity index 74% rename from test/unit/modules/web/api.web.spec.ts rename to packages/server/test/web/index.spec.ts index 9aae329e2..7c2305899 100644 --- a/test/unit/modules/web/api.web.spec.ts +++ b/packages/server/test/web/index.spec.ts @@ -1,60 +1,49 @@ import request from 'supertest'; import path from 'path'; -import rimraf from 'rimraf'; -import configDefault from '../../partials/config'; -import publishMetadata from '../../partials/publish-api'; -import forbiddenPlace from '../../partials/forbidden-place'; -import endPointAPI from '../../../../src/api'; +import publishMetadata from './partials/publish-api'; +import forbiddenPlace from './partials/forbidden-place'; -import { - HEADERS, - API_ERROR, - HTTP_STATUS, - HEADER_TYPE, - DIST_TAGS -} from '../../../../src/lib/constants'; -import { DOMAIN_SERVERS } from '../../../functional/config.functional'; -import { mockServer } from '../../__helper/mock'; -import { addUser } from '../../__helper/api'; +import endPointAPI from '../../src'; +import { HEADERS, API_ERROR, HTTP_STATUS, HEADER_TYPE, DIST_TAGS} from '@verdaccio/dev-commons'; -require('../../../../src/lib/logger').setup([]); +import {addUser, mockServer, DOMAIN_SERVERS, configExample, generateRamdonStorage} from '@verdaccio/mock'; + +import {setup, logger} from '@verdaccio/logger'; + +setup([]); const credentials = { name: 'user-web', password: 'secretPass' }; + describe('endpoint web unit test', () => { - jest.setTimeout(20000); + jest.setTimeout(40000); let app; let mockRegistry; - beforeAll(function (done) { - const store = path.join(__dirname, '../../partials/store/web-api-storage'); - const mockServerPort = 55544; - rimraf(store, async () => { - const configForTest = configDefault( - { - auth: { - htpasswd: { - file: './web-api-storage/.htpasswd-web-api' - } - }, - storage: store, - uplinks: { - npmjs: { - url: `http://${DOMAIN_SERVERS}:${mockServerPort}` - } - }, - self_path: store - }, - 'api.web.spec.yaml' - ); - app = await endPointAPI(configForTest); - mockRegistry = await mockServer(mockServerPort).init(); - done(); - }); + beforeAll(async (done) => { + const store = generateRamdonStorage(); + const mockServerPort = 55523; + const configForTest = configExample({ + storage: store, + self_path: store, + uplinks: { + remote: { + url: `http://${DOMAIN_SERVERS}:${mockServerPort}` + } + }, + }, 'web.yaml', __dirname); + app = await endPointAPI(configForTest); + const binPath = require.resolve('verdaccio/bin/verdaccio'); + const storePath = path.join(__dirname, '/mock/store'); + mockRegistry = await mockServer(mockServerPort, { storePath, silence: true }).init(binPath); + done(); }); - afterAll(function (done) { - mockRegistry[0].stop(); + afterAll(function(done) { + const [registry, pid] = mockRegistry; + registry.stop(); + logger.info(`registry ${pid} has been stopped`); + done(); }); @@ -76,9 +65,9 @@ describe('endpoint web unit test', () => { describe('Packages', () => { test('should display all packages', (done) => { request(app) - .get('/-/verdaccio/packages') + .get('/-/verdaccio/packages' ) .expect(HTTP_STATUS.OK) - .end(function (err, res) { + .end(function(err, res) { expect(res.body).toHaveLength(1); done(); }); @@ -89,7 +78,7 @@ describe('endpoint web unit test', () => { .get('/-/verdaccio/package/readme/@scope/pk1-test') .expect(HTTP_STATUS.OK) .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.TEXT_CHARSET) - .end(function (err, res) { + .end(function(err, res) { expect(res.text).toMatch('

test

\n'); done(); }); @@ -101,7 +90,7 @@ describe('endpoint web unit test', () => { .get('/-/verdaccio/package/readme/@scope/404') .expect(HTTP_STATUS.OK) .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.TEXT_CHARSET) - .end(function (err, res) { + .end(function(err, res) { expect(res.body.error).toMatch(API_ERROR.NO_PACKAGE); done(); }); @@ -112,7 +101,10 @@ describe('endpoint web unit test', () => { .get('/-/verdaccio/sidebar/@scope/pk1-test') .expect(HTTP_STATUS.OK) .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) - .end(function (err, res) { + .end(function(err, res) { + // console.log("-->", res); + // expect(err).toBeNull(); + const sideBarInfo = res.body; const latestVersion = publishMetadata.versions[publishMetadata[DIST_TAGS].latest]; @@ -129,7 +121,7 @@ describe('endpoint web unit test', () => { .get('/-/verdaccio/sidebar/@scope/pk1-test?v=1.0.6') .expect(HTTP_STATUS.OK) .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) - .end(function (err, res) { + .end(function(err, res) { const sideBarInfo = res.body; const latestVersion = publishMetadata.versions[publishMetadata[DIST_TAGS].latest]; @@ -146,7 +138,7 @@ describe('endpoint web unit test', () => { .get('/-/verdaccio/sidebar/@scope/404') .expect(HTTP_STATUS.NOT_FOUND) .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) - .end(function () { + .end(function() { done(); }); }); @@ -156,18 +148,19 @@ describe('endpoint web unit test', () => { .get('/-/verdaccio/sidebar/@scope/pk1-test?v=0.0.0-not-found') .expect(HTTP_STATUS.NOT_FOUND) .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) - .end(function () { + .end(function() { done(); }); }); }); describe('Search', () => { + test('should search pk1-test', (done) => { request(app) .get('/-/verdaccio/search/scope') .expect(HTTP_STATUS.OK) - .end(function (err, res) { + .end(function(err, res) { expect(res.body).toHaveLength(1); done(); }); @@ -177,7 +170,7 @@ describe('endpoint web unit test', () => { request(app) .get('/-/verdaccio/search/@') .expect(HTTP_STATUS.OK) - .end(function (err, res) { + .end(function(err, res) { // in a normal world, the output would be 1 // https://github.com/verdaccio/verdaccio/issues/345 // should fix this @@ -190,7 +183,7 @@ describe('endpoint web unit test', () => { request(app) .get('/-/verdaccio/search/forbidden-place') .expect(HTTP_STATUS.OK) - .end(function (err, res) { + .end(function(err, res) { // this is expected since we are not logged // and forbidden-place is allow_access: 'nobody' expect(res.body).toHaveLength(0); @@ -213,7 +206,8 @@ describe('endpoint web unit test', () => { password: credentials.password }) .expect(HTTP_STATUS.OK) - .end(function (err, res) { + .end(function(err, res) { + expect(err).toBeNull(); expect(res.body.error).toBeUndefined(); expect(res.body.token).toBeDefined(); expect(res.body.token).toBeTruthy(); @@ -225,15 +219,13 @@ describe('endpoint web unit test', () => { test('should fails on log unvalid user', (done) => { request(app) .post('/-/verdaccio/login') - .send( - JSON.stringify({ - username: 'fake', - password: 'fake' - }) - ) + .send(JSON.stringify({ + username: 'fake', + password: 'fake' + })) // FIXME: there should be 401 .expect(HTTP_STATUS.OK) - .end(function (err, res) { + .end(function(err, res) { expect(res.body.error).toMatch(/bad username\/password, access denied/); done(); }); diff --git a/packages/server/test/web/mock/store/.gitkeep b/packages/server/test/web/mock/store/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/test/unit/partials/forbidden-place.js b/packages/server/test/web/partials/forbidden-place.js similarity index 100% rename from test/unit/partials/forbidden-place.js rename to packages/server/test/web/partials/forbidden-place.js diff --git a/test/e2e/partials/pkg-scoped.js b/packages/server/test/web/partials/publish-api.js similarity index 100% rename from test/e2e/partials/pkg-scoped.js rename to packages/server/test/web/partials/publish-api.js diff --git a/test/unit/partials/config/yaml/api.web.spec.yaml b/packages/server/test/web/web.yaml similarity index 55% rename from test/unit/partials/config/yaml/api.web.spec.yaml rename to packages/server/test/web/web.yaml index 4510a627e..a4619aecc 100644 --- a/test/unit/partials/config/yaml/api.web.spec.yaml +++ b/packages/server/test/web/web.yaml @@ -1,20 +1,21 @@ storage: ./storage_default_storage -uplinks: - npmjs: - url: http://localhost:4873/ +auth: + htpasswd: + file: ./htpasswd + packages: '@*/*': access: $all publish: $all proxy: npmjs - unpublish: npmjs + unpublish: remote 'forbidden-place': - access: nobody + access: nobody_can_access_this_package publish: $all '*': access: $all publish: $all unpublish: xxx - proxy: npmjs + proxy: remote logs: - - { type: stdout, format: pretty, level: trace } + - { type: stdout, format: pretty, level: error } diff --git a/packages/server/tsconfig.json b/packages/server/tsconfig.json new file mode 100644 index 000000000..2be65b934 --- /dev/null +++ b/packages/server/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./build" + }, + "include": ["src/**/*", "types/*.d.ts"], + "exclude": ["src/**/*.test.ts"] +} diff --git a/packages/server/types/custom.d.ts b/packages/server/types/custom.d.ts new file mode 100644 index 000000000..733e88c70 --- /dev/null +++ b/packages/server/types/custom.d.ts @@ -0,0 +1,16 @@ +import { Logger, RemoteUser } from "@verdaccio/types"; + +declare global { + namespace Express { + export interface Request { + remote_user: RemoteUser; + log: Logger; + } + + export interface Response { + report_error: any; + _verdaccio_error: any; + socket?: any; + } + } +} diff --git a/packages/store/.babelrc b/packages/store/.babelrc new file mode 100644 index 000000000..28397a1bd --- /dev/null +++ b/packages/store/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": [["@verdaccio"]] +} diff --git a/packages/store/jest.config.js b/packages/store/jest.config.js new file mode 100644 index 000000000..d639ba9fc --- /dev/null +++ b/packages/store/jest.config.js @@ -0,0 +1,9 @@ +module.exports = { + moduleFileExtensions: ['ts', 'js'], + transform: { + '^.+\\.(js|ts)$': 'babel-jest', + }, + verbose: true, + // FIXME: coverage fails here + collectCoverage: false +}; diff --git a/packages/store/package.json b/packages/store/package.json new file mode 100644 index 000000000..2fe087c48 --- /dev/null +++ b/packages/store/package.json @@ -0,0 +1,42 @@ +{ + "name": "@verdaccio/store", + "version": "5.0.0-alpha.0", + "description": "loaders logic", + "main": "./build/index.js", + "types": "build/index.d.ts", + "author": { + "name": "Juan Picado", + "email": "juanpicado19@gmail.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/verdaccio/verdaccio" + }, + "license": "MIT", + "homepage": "https://verdaccio.org", + "scripts": { + "clean": "rimraf ./build", + "test": "cross-env NODE_ENV=test BABEL_ENV=test jest", + "type-check": "tsc --noEmit", + "build:types": "tsc --emitDeclarationOnly --declaration true", + "build:js": "cross-env BABEL_ENV=registry babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "build": "npm run build:js && npm run build:types" + }, + "dependencies": { + "@verdaccio/commons-api": "^9.0.0", + "@verdaccio/dev-commons": "5.0.0-alpha.0", + "@verdaccio/loaders": "5.0.0-alpha.0", + "@verdaccio/local-storage": "^9.0.0", + "@verdaccio/logger": "5.0.0-alpha.0", + "@verdaccio/proxy": "5.0.0-alpha.0", + "@verdaccio/streams": "^9.3.0", + "@verdaccio/utils": "5.0.0-alpha.0", + "async": "3.1.1", + "lodash": "^4.17.15", + "semver": "^7.1.2" + }, + "devDependencies": { + "@verdaccio/types": "^9.3.0" + }, + "gitHead": "7c246ede52ff717707fcae66dd63fc4abd536982" +} diff --git a/packages/store/src/index.ts b/packages/store/src/index.ts new file mode 100644 index 000000000..4d715f0c9 --- /dev/null +++ b/packages/store/src/index.ts @@ -0,0 +1,4 @@ +export * from './storage'; +export * from './metadata-utils'; +export * from './storage-utils'; +export * from './search'; diff --git a/src/lib/local-storage.ts b/packages/store/src/local-storage.ts similarity index 91% rename from src/lib/local-storage.ts rename to packages/store/src/local-storage.ts index 77ac88248..8d72a82ba 100644 --- a/src/lib/local-storage.ts +++ b/packages/store/src/local-storage.ts @@ -1,7 +1,10 @@ import assert from 'assert'; import UrlNode from 'url'; -import builDebug from 'debug'; import _ from 'lodash'; +import { ErrorCode, isObject, getLatestVersion, tagVersion, validateName } from '@verdaccio/utils'; +import {API_ERROR, DIST_TAGS, HTTP_STATUS, STORAGE, SUPPORT_ERRORS, USERS} from '@verdaccio/dev-commons'; +import { createTarballHash } from '@verdaccio/utils'; +import { loadPlugin } from '@verdaccio/loaders'; import LocalDatabase from '@verdaccio/local-storage'; import { UploadTarball, ReadTarball } from '@verdaccio/streams'; import { @@ -21,19 +24,21 @@ import { Author, CallbackAction, onSearchPackage, - onEndSearchPackage, - StorageUpdateCallback, + onEndSearchPackage, StorageUpdateCallback, } from '@verdaccio/types'; +import { IStorage, StringValue } from '@verdaccio/dev-types'; import { VerdaccioError } from '@verdaccio/commons-api'; -import loadPlugin from '../lib/plugin-loader'; -import { IStorage, StringValue } from '../../types'; -import { ErrorCode, isObject, getLatestVersion, tagVersion, validateName } from './utils'; -import { generatePackageTemplate, normalizePackage, generateRevision, getLatestReadme, cleanUpReadme, normalizeContributors } from './storage-utils'; -import { API_ERROR, DIST_TAGS, HTTP_STATUS, STORAGE, SUPPORT_ERRORS, USERS } from './constants'; -import { createTarballHash } from './crypto-utils'; -import { prepareSearchPackage } from './storage-utils'; -const debug = builDebug('verdaccio:local-storage'); +import { + prepareSearchPackage , + generatePackageTemplate, + normalizePackage, + generateRevision, + getLatestReadme, + cleanUpReadme, + normalizeContributors +} from './storage-utils'; + /** * Implements Storage interface (same for storage.js, local-storage.js, up-storage.js). */ @@ -43,7 +48,7 @@ class LocalStorage implements IStorage { public logger: Logger; public constructor(config: Config, logger: Logger) { - this.logger = logger; + this.logger = logger.child({ sub: 'fs' }); this.config = config; this.storagePlugin = this._loadStorage(config, logger); } @@ -55,7 +60,7 @@ class LocalStorage implements IStorage { return callback(ErrorCode.getNotFound('this package cannot be added')); } - storage.createPackage(name, generatePackageTemplate(name), (err) => { + storage.createPackage(name, generatePackageTemplate(name), err => { // FIXME: it will be fixed here https://github.com/verdaccio/verdaccio/pull/1360 // @ts-ignore if (_.isNull(err) === false && (err.code === STORAGE.FILE_EXIST_ERROR || err.code === HTTP_STATUS.CONFLICT)) { @@ -79,7 +84,8 @@ class LocalStorage implements IStorage { */ public removePackage(name: string, callback: Callback): void { const storage: any = this._getLocalStorage(name); - debug('[storage] removing package %o', name); + this.logger.debug({ name }, `[storage] removing package @{name}`); + if (_.isNil(storage)) { return callback(ErrorCode.getNotFound()); } @@ -97,7 +103,8 @@ class LocalStorage implements IStorage { this.storagePlugin.remove(name, (removeFailed: Error): void => { if (removeFailed) { // This will happen when database is locked - this.logger.error({ name }, `[storage/removePackage] the database is locked, removed has failed for @{name}`); + this.logger.debug({ name }, `[storage/removePackage] the database is locked, removed has failed for @{name}`); + return callback(ErrorCode.getBadData(removeFailed.message)); } @@ -192,8 +199,8 @@ class LocalStorage implements IStorage { } if (change) { - debug('updating package %o info', name); - this._writePackage(name, packageLocalJson, function (err): void { + this.logger.debug({ name }, 'updating package @{name} info'); + this._writePackage(name, packageLocalJson, function(err): void { callback(err, packageLocalJson); }); } else { @@ -330,10 +337,11 @@ class LocalStorage implements IStorage { */ public changePackage(name: string, incomingPkg: Package, revision: string | void, callback: Callback): void { if (!isObject(incomingPkg.versions) || !isObject(incomingPkg[DIST_TAGS])) { - this.logger.error({ name }, `changePackage bad data for @{name}`); + this.logger.debug({name}, `changePackage bad data for @{name}`); return callback(ErrorCode.getBadData()); } - debug('changePackage udapting package for %o', name); + + this.logger.debug({name}, `changePackage udapting package for @{name}`); this._updatePackage( name, (localData: Package, cb: CallbackAction): void => { @@ -370,7 +378,7 @@ class LocalStorage implements IStorage { localData[DIST_TAGS] = incomingPkg[DIST_TAGS]; cb(null); }, - function (err): void { + function(err): void { if (err) { return callback(err); } @@ -426,10 +434,10 @@ class LocalStorage implements IStorage { const _transform = uploadStream._transform; const storage = this._getLocalStorage(name); - uploadStream.abort = function (): void {}; - uploadStream.done = function (): void {}; + uploadStream.abort = function(): void {}; + uploadStream.done = function(): void {}; - uploadStream._transform = function (data, ...args): void { + uploadStream._transform = function(data, ...args): void { shaOneHash.update(data); // measure the length for validation reasons length += data.length; @@ -455,15 +463,15 @@ class LocalStorage implements IStorage { const writeStream: IUploadTarball = storage.writeTarball(filename); - writeStream.on('error', (err) => { + writeStream.on('error', err => { // @ts-ignore if (err.code === STORAGE.FILE_EXIST_ERROR || err.code === HTTP_STATUS.CONFLICT) { uploadStream.emit('error', ErrorCode.getConflict()); uploadStream.abort(); - // @ts-ignore + // @ts-ignore } else if (err.code === STORAGE.NO_SUCH_FILE_ERROR || err.code === HTTP_STATUS.NOT_FOUND) { // check if package exists to throw an appropriate message - this.getPackageMetadata(name, function (_err: VerdaccioError, _res: Package): void { + this.getPackageMetadata(name, function(_err: VerdaccioError, _res: Package): void { if (_err) { uploadStream.emit('error', _err); } else { @@ -475,7 +483,7 @@ class LocalStorage implements IStorage { } }); - writeStream.on('open', function (): void { + writeStream.on('open', function(): void { // re-emitting open because it's handled in storage.js uploadStream.emit('open'); }); @@ -489,7 +497,7 @@ class LocalStorage implements IStorage { }; cb(null); }, - function (err): void { + function(err): void { if (err) { uploadStream.emit('error', err); } else { @@ -499,11 +507,11 @@ class LocalStorage implements IStorage { ); }); - uploadStream.abort = function (): void { + uploadStream.abort = function(): void { writeStream.abort(); }; - uploadStream.done = function (): void { + uploadStream.done = function(): void { if (!length) { uploadStream.emit('error', ErrorCode.getBadData('refusing to accept zero-length file')); writeStream.abort(); @@ -561,13 +569,13 @@ class LocalStorage implements IStorage { const readTarballStream = storage.readTarball(filename); const e404 = ErrorCode.getNotFound; - stream.abort = function (): void { + stream.abort = function(): void { if (_.isNil(readTarballStream) === false) { readTarballStream.abort(); } }; - readTarballStream.on('error', function (err) { + readTarballStream.on('error', function(err) { // @ts-ignore if (err.code === STORAGE.NO_SUCH_FILE_ERROR || err.code === HTTP_STATUS.NOT_FOUND) { stream.emit('error', e404('no such file available')); @@ -576,11 +584,11 @@ class LocalStorage implements IStorage { } }); - readTarballStream.on('content-length', function (content): void { + readTarballStream.on('content-length', function(content): void { stream.emit('content-length', content); }); - readTarballStream.on('open', function (): void { + readTarballStream.on('open', function(): void { // re-emitting open because it's handled in storage.js stream.emit('open'); readTarballStream.pipe(stream); @@ -778,21 +786,21 @@ class LocalStorage implements IStorage { } private _deleteAttachments(storage: any, attachments: string[], callback: Callback): void { - debug('[storage/_deleteAttachments] delete attachments total: %o', attachments?.length); - const unlinkNext = function (cb): void { + this.logger.debug({l: attachments.length }, `[storage/_deleteAttachments] delete attachments total: @{l}`); + const unlinkNext = function(cb): void { if (_.isEmpty(attachments)) { return cb(); } const attachment = attachments.shift(); - storage.deletePackage(attachment, function (): void { + storage.deletePackage(attachment, function(): void { unlinkNext(cb); }); }; - unlinkNext(function (): void { + unlinkNext(function(): void { // try to unlink the directory, but ignore errors because it can fail - storage.removePackage(function (err): void { + storage.removePackage(function(err): void { callback(err); }); }); @@ -841,15 +849,10 @@ class LocalStorage implements IStorage { logger: this.logger, }; - // eslint-disable-next-line max-len - const plugins: IPluginStorage[] = loadPlugin>( - this.config, - this.config.store, - plugin_params, - (plugin): IPluginStorage => { - return plugin.getPackageStorage; - } - ); + const plugins: IPluginStorage[] = loadPlugin>(this.config, this.config.store, plugin_params, (plugin): IPluginStorage => { + return plugin.getPackageStorage; + }); + return _.head(plugins); } @@ -870,7 +873,7 @@ class LocalStorage implements IStorage { return this.storagePlugin.deleteToken(user, tokenKey); } - public readTokens(filter: TokenFilter): Promise { + public readTokens(filter: TokenFilter): Promise> { if (_.isFunction(this.storagePlugin.readTokens) === false) { return Promise.reject(ErrorCode.getCode(HTTP_STATUS.SERVICE_UNAVAILABLE, SUPPORT_ERRORS.PLUGIN_MISSING_INTERFACE)); } @@ -879,4 +882,4 @@ class LocalStorage implements IStorage { } } -export default LocalStorage; +export { LocalStorage }; diff --git a/src/lib/metadata-utils.ts b/packages/store/src/metadata-utils.ts similarity index 93% rename from src/lib/metadata-utils.ts rename to packages/store/src/metadata-utils.ts index a10886ea5..f4bd50bfb 100644 --- a/src/lib/metadata-utils.ts +++ b/packages/store/src/metadata-utils.ts @@ -1,12 +1,8 @@ -/** - * @prettier - * @flow - */ - import semver from 'semver'; import _ from 'lodash'; +import { DIST_TAGS } from '@verdaccio/dev-commons'; + import { Package } from '@verdaccio/types'; -import { DIST_TAGS } from './constants'; /** * Function gets a local info and an info from uplinks and tries to merge it diff --git a/src/lib/search.ts b/packages/store/src/search.ts similarity index 94% rename from src/lib/search.ts rename to packages/store/src/search.ts index 2816f3193..4b912a32f 100644 --- a/src/lib/search.ts +++ b/packages/store/src/search.ts @@ -2,7 +2,7 @@ import lunrMutable from 'lunr-mutable-indexes'; import { Version } from '@verdaccio/types'; -import { IStorageHandler, IWebSearch, IStorage } from '../../types'; +import { IStorageHandler, IWebSearch, IStorage } from '@verdaccio/dev-types'; /** * Handle the search Indexer. */ @@ -101,4 +101,8 @@ class Search implements IWebSearch { } } -export default new Search(); +const SearchInstance = new Search(); + +export { + SearchInstance +} diff --git a/src/lib/storage-utils.ts b/packages/store/src/storage-utils.ts similarity index 59% rename from src/lib/storage-utils.ts rename to packages/store/src/storage-utils.ts index da1c4f2d3..db6dd00af 100644 --- a/src/lib/storage-utils.ts +++ b/packages/store/src/storage-utils.ts @@ -1,11 +1,11 @@ import _ from 'lodash'; -import { Package, Version, Author } from '@verdaccio/types'; -import { generateRandomHexString } from '../lib/crypto-utils'; -import { IStorage } from '../../types'; -import { ErrorCode, isObject, normalizeDistTags, semverSort } from './utils'; -import Search from './search'; +import { SearchInstance } from './search'; -import { API_ERROR, HTTP_STATUS, DIST_TAGS, USERS, STORAGE } from './constants'; +import { ErrorCode, isObject, normalizeDistTags, semverSort, generateRandomHexString } from '@verdaccio/utils'; + +import { Package, Version, Author } from '@verdaccio/types'; +import { IStorage } from '@verdaccio/dev-types'; +import { API_ERROR, HTTP_STATUS, DIST_TAGS, USERS, STORAGE } from '@verdaccio/dev-commons'; export function generatePackageTemplate(name: string): Package { return { @@ -18,7 +18,7 @@ export function generatePackageTemplate(name: string): Package { _uplinks: {}, _distfiles: {}, _attachments: {}, - _rev: '' + _rev: '', }; } @@ -29,13 +29,15 @@ export function generatePackageTemplate(name: string): Package { export function normalizePackage(pkg: Package): Package { const pkgProperties = ['versions', 'dist-tags', '_distfiles', '_attachments', '_uplinks', 'time']; - pkgProperties.forEach((key): void => { - const pkgProp = pkg[key]; + pkgProperties.forEach( + (key): void => { + const pkgProp = pkg[key]; - if (_.isNil(pkgProp) || isObject(pkgProp) === false) { - pkg[key] = {}; + if (_.isNil(pkgProp) || isObject(pkgProp) === false) { + pkg[key] = {}; + } } - }); + ); if (_.isString(pkg._rev) === false) { pkg._rev = STORAGE.DEFAULT_REVISION; @@ -69,7 +71,7 @@ export function getLatestReadme(pkg: Package): string { // In case of empty readme - trying to get ANY readme in the following order: 'next','beta','alpha','test','dev','canary' const readmeDistTagsPriority = ['next', 'beta', 'alpha', 'test', 'dev', 'canary']; - readmeDistTagsPriority.map(function (tag): string | void { + readmeDistTagsPriority.forEach(function(tag): string | void { if (readme) { return readme; } @@ -81,7 +83,6 @@ export function getLatestReadme(pkg: Package): string { export function cleanUpReadme(version: Version): Version { if (_.isNil(version) === false) { - // @ts-ignore delete version.readme; } @@ -98,24 +99,15 @@ export function normalizeContributors(contributors: Author[]): Author[] { } else if (_.isString(contributors)) { return [ { - name: contributors - } + name: contributors, + }, ]; } return contributors; } -export const WHITELIST = [ - '_rev', - 'name', - 'versions', - 'dist-tags', - 'readme', - 'time', - '_id', - 'users' -]; +export const WHITELIST = ['_rev', 'name', 'versions', 'dist-tags', 'readme', 'time', '_id', 'users']; export function cleanUpLinksRef(keepUpLinkData: boolean, result: Package): Package { const propertyToKeep = [...WHITELIST]; @@ -138,67 +130,81 @@ export function cleanUpLinksRef(keepUpLinkData: boolean, result: Package): Packa * @param {*} name * @param {*} localStorage */ -export function checkPackageLocal(name: string, localStorage: IStorage): Promise { - return new Promise((resolve, reject): void => { - localStorage.getPackageMetadata(name, (err, results): void => { - if (!_.isNil(err) && err.status !== HTTP_STATUS.NOT_FOUND) { - return reject(err); - } - if (results) { - return reject(ErrorCode.getConflict(API_ERROR.PACKAGE_EXIST)); - } - return resolve(); - }); - }); -} - -export function publishPackage(name: string, metadata: any, localStorage: IStorage): Promise { - return new Promise((resolve, reject): void => { - localStorage.addPackage(name, metadata, (err, latest): void => { - if (!_.isNull(err)) { - return reject(err); - } else if (!_.isUndefined(latest)) { - Search.add(latest); - } - return resolve(); - }); - }); -} - -export function checkPackageRemote( - name: string, - isAllowPublishOffline: boolean, - syncMetadata: Function -): Promise { - return new Promise((resolve, reject): void => { - syncMetadata(name, null, {}, (err, packageJsonLocal, upLinksErrors): void => { - // something weird - if (err && err.status !== HTTP_STATUS.NOT_FOUND) { - return reject(err); - } - - // checking package exist already - if (_.isNil(packageJsonLocal) === false) { - return reject(ErrorCode.getConflict(API_ERROR.PACKAGE_EXIST)); - } - - for (let errorItem = 0; errorItem < upLinksErrors.length; errorItem++) { - // checking error - // if uplink fails with a status other than 404, we report failure - if (_.isNil(upLinksErrors[errorItem][0]) === false) { - if (upLinksErrors[errorItem][0].status !== HTTP_STATUS.NOT_FOUND) { - if (isAllowPublishOffline) { - return resolve(); - } - - return reject(ErrorCode.getServiceUnavailable(API_ERROR.UPLINK_OFFLINE_PUBLISH)); +export function checkPackageLocal(name: string, localStorage: IStorage): Promise { + return new Promise( + (resolve, reject): void => { + localStorage.getPackageMetadata( + name, + (err, results): void => { + if (!_.isNil(err) && err.status !== HTTP_STATUS.NOT_FOUND) { + return reject(err); } + if (results) { + return reject(ErrorCode.getConflict(API_ERROR.PACKAGE_EXIST)); + } + return resolve(); } - } + ); + } + ); +} - return resolve(); - }); - }); +export function publishPackage(name: string, metadata: any, localStorage: IStorage): Promise { + return new Promise( + (resolve, reject): void => { + localStorage.addPackage( + name, + metadata, + (err, latest): void => { + if (!_.isNull(err)) { + return reject(err); + } else if (!_.isUndefined(latest)) { + SearchInstance.add(latest); + } + return resolve(); + } + ); + } + ); +} + +export function checkPackageRemote(name: string, isAllowPublishOffline: boolean, syncMetadata: Function): Promise { + return new Promise( + (resolve, reject): void => { + syncMetadata( + name, + null, + {}, + (err, packageJsonLocal, upLinksErrors): void => { + // something weird + if (err && err.status !== HTTP_STATUS.NOT_FOUND) { + return reject(err); + } + + // checking package exist already + if (_.isNil(packageJsonLocal) === false) { + return reject(ErrorCode.getConflict(API_ERROR.PACKAGE_EXIST)); + } + + for (let errorItem = 0; errorItem < upLinksErrors.length; errorItem++) { + // checking error + // if uplink fails with a status other than 404, we report failure + if (_.isNil(upLinksErrors[errorItem][0]) === false) { + if (upLinksErrors[errorItem][0].status !== HTTP_STATUS.NOT_FOUND) { + if (isAllowPublishOffline) { + return resolve(); + } + + return reject(ErrorCode.getServiceUnavailable(API_ERROR.UPLINK_OFFLINE_PUBLISH)); + } + } + } + + return resolve(); + } + ); + } + ); } export function mergeUplinkTimeIntoLocal(localMetadata: Package, remoteMetadata: Package): any { @@ -212,8 +218,7 @@ export function mergeUplinkTimeIntoLocal(localMetadata: Package, remoteMetadata: export function prepareSearchPackage(data: Package, time: unknown): any { const listVersions: string[] = Object.keys(data.versions); const versions: string[] = semverSort(listVersions); - const latest: string | undefined = - data[DIST_TAGS] && data[DIST_TAGS].latest ? data[DIST_TAGS].latest : versions.pop(); + const latest: string | undefined = data[DIST_TAGS] && data[DIST_TAGS].latest ? data[DIST_TAGS].latest : versions.pop(); if (latest && data.versions[latest]) { const version: Version = data.versions[latest]; @@ -231,21 +236,11 @@ export function prepareSearchPackage(data: Package, time: unknown): any { bugs: version.bugs, license: version.license, time: { - modified: time + modified: time, }, - versions + versions, }; return pkg; } } - -/** - * Check whether the package metadta has enough data to be published - * @param pkg metadata - */ -export function isPublishablePackage(pkg: Package): boolean { - const keys: string[] = Object.keys(pkg); - - return _.includes(keys, 'versions'); -} diff --git a/src/lib/storage.ts b/packages/store/src/storage.ts similarity index 68% rename from src/lib/storage.ts rename to packages/store/src/storage.ts index 72d2953c0..008c205db 100644 --- a/src/lib/storage.ts +++ b/packages/store/src/storage.ts @@ -1,37 +1,27 @@ -import assert from 'assert'; -import Stream from 'stream'; import _ from 'lodash'; +import assert from 'assert'; import async, { AsyncResultArrayCallback } from 'async'; +import Stream from 'stream'; +import { ProxyStorage } from '@verdaccio/proxy'; +import { SearchInstance }from './search'; +import { API_ERROR, HTTP_STATUS, DIST_TAGS } from '@verdaccio/dev-commons'; import { ReadTarball } from '@verdaccio/streams'; import { - IReadTarball, - IUploadTarball, - Versions, - Package, - Config, - MergeTags, - Version, - DistFile, - Callback, - Logger -} from '@verdaccio/types'; + ErrorCode, + normalizeDistTags, + validateMetadata, + isObject, + hasProxyTo, +} from '@verdaccio/utils'; +import { setupUpLinks, updateVersionsHiddenUpLink } from '@verdaccio/proxy'; +import { IReadTarball, IUploadTarball, Versions, Package, Config, MergeTags, Version, DistFile, Callback, Logger } from '@verdaccio/types'; +import { IStorage, IProxy, IStorageHandler, ProxyList, StringValue, IGetPackageOptions, ISyncUplinks, IPluginFilters } from '@verdaccio/dev-types'; import { GenericBody, TokenFilter, Token } from '@verdaccio/types'; +import { logger } from '@verdaccio/logger'; import { VerdaccioError } from '@verdaccio/commons-api'; -import { - IStorage, - IProxy, - IStorageHandler, - ProxyList, - StringValue, - IGetPackageOptions, - ISyncUplinks, - IPluginFilters -} from '../../types'; -import { logger } from '../lib/logger'; -import ProxyStorage from './up-storage'; -import Search from './search'; -import { API_ERROR, HTTP_STATUS, DIST_TAGS } from './constants'; -import LocalStorage from './local-storage'; + +import { LocalStorage } from './local-storage'; +import { mergeVersions } from './metadata-utils'; import { checkPackageLocal, publishPackage, @@ -40,10 +30,6 @@ import { mergeUplinkTimeIntoLocal, generatePackageTemplate } from './storage-utils'; -import { setupUpLinks, updateVersionsHiddenUpLink } from './uplink-util'; -import { mergeVersions } from './metadata-utils'; -import { ErrorCode, normalizeDistTags, validateMetadata, isObject } from './utils'; -import { hasProxyTo } from './config-utils'; class Storage implements IStorageHandler { public localStorage: IStorage; @@ -77,11 +63,7 @@ class Storage implements IStorageHandler { public async addPackage(name: string, metadata: any, callback: Function): Promise { try { await checkPackageLocal(name, this.localStorage); - await checkPackageRemote( - name, - this._isAllowPublishOffline(), - this._syncUplinksMetadata.bind(this) - ); + await checkPackageRemote(name, this._isAllowPublishOffline(), this._syncUplinksMetadata.bind(this)); await publishPackage(name, metadata, this.localStorage as IStorage); callback(); } catch (err) { @@ -90,14 +72,10 @@ class Storage implements IStorageHandler { } private _isAllowPublishOffline(): boolean { - return ( - typeof this.config.publish !== 'undefined' && - _.isBoolean(this.config.publish.allow_offline) && - this.config.publish.allow_offline - ); + return typeof this.config.publish !== 'undefined' && _.isBoolean(this.config.publish.allow_offline) && this.config.publish.allow_offline; } - public readTokens(filter: TokenFilter): Promise { + public readTokens(filter: TokenFilter): Promise> { return this.localStorage.readTokens(filter); } @@ -113,13 +91,7 @@ class Storage implements IStorageHandler { * Add a new version of package {name} to a system Used storages: local (write) */ - public addVersion( - name: string, - version: string, - metadata: Version, - tag: StringValue, - callback: Callback - ): void { + public addVersion(name: string, version: string, metadata: Version, tag: StringValue, callback: Callback): void { this.localStorage.addVersion(name, version, metadata, tag, callback); } @@ -136,12 +108,7 @@ class Storage implements IStorageHandler { Function changes a package info from local storage and all uplinks with write access./ Used storages: local (write) */ - public changePackage( - name: string, - metadata: Package, - revision: string, - callback: Callback - ): void { + public changePackage(name: string, metadata: Package, revision: string, callback: Callback): void { this.localStorage.changePackage(name, metadata, revision, callback); } @@ -153,7 +120,7 @@ class Storage implements IStorageHandler { public removePackage(name: string, callback: Callback): void { this.localStorage.removePackage(name, callback); // update the indexer - Search.remove(name); + SearchInstance.remove(name); } /** @@ -185,7 +152,7 @@ class Storage implements IStorageHandler { */ public getTarball(name: string, filename: string): IReadTarball { const readStream = new ReadTarball({}); - readStream.abort = function () {}; + readStream.abort = function() {}; const self = this; @@ -196,37 +163,48 @@ class Storage implements IStorageHandler { // flow: should be IReadTarball let localStream: any = self.localStorage.getTarball(name, filename); let isOpen = false; - localStream.on('error', (err): any => { - if (isOpen || err.status !== HTTP_STATUS.NOT_FOUND) { - return readStream.emit('error', err); - } - - // local reported 404 - const err404 = err; - localStream.abort(); - localStream = null; // we force for garbage collector - self.localStorage.getPackageMetadata(name, (err, info: Package): void => { - if (_.isNil(err) && info._distfiles && _.isNil(info._distfiles[filename]) === false) { - // information about this file exists locally - serveFile(info._distfiles[filename]); - } else { - // we know nothing about this file, trying to get information elsewhere - self._syncUplinksMetadata(name, info, {}, (err, info: Package): any => { - if (_.isNil(err) === false) { - return readStream.emit('error', err); - } - if (_.isNil(info._distfiles) || _.isNil(info._distfiles[filename])) { - return readStream.emit('error', err404); - } - serveFile(info._distfiles[filename]); - }); + localStream.on( + 'error', + (err): any => { + if (isOpen || err.status !== HTTP_STATUS.NOT_FOUND) { + return readStream.emit('error', err); } - }); - }); - localStream.on('content-length', function (v): void { + + // local reported 404 + const err404 = err; + localStream.abort(); + localStream = null; // we force for garbage collector + self.localStorage.getPackageMetadata( + name, + (err, info: Package): void => { + if (_.isNil(err) && info._distfiles && _.isNil(info._distfiles[filename]) === false) { + // information about this file exists locally + serveFile(info._distfiles[filename]); + } else { + // we know nothing about this file, trying to get information elsewhere + self._syncUplinksMetadata( + name, + info, + {}, + (err, info: Package): any => { + if (_.isNil(err) === false) { + return readStream.emit('error', err); + } + if (_.isNil(info._distfiles) || _.isNil(info._distfiles[filename])) { + return readStream.emit('error', err404); + } + serveFile(info._distfiles[filename]); + } + ); + } + } + ); + } + ); + localStream.on('content-length', function(v): void { readStream.emit('content-length', v); }); - localStream.on('open', function (): void { + localStream.on('open', function(): void { isOpen = true; localStream.pipe(readStream); }); @@ -250,7 +228,7 @@ class Storage implements IStorageHandler { { url: file.url, cache: true, - _autogenerated: true + _autogenerated: true, }, self.config ); @@ -261,24 +239,24 @@ class Storage implements IStorageHandler { savestream = self.localStorage.addTarball(name, filename); } - let on_open = function (): void { + let on_open = function(): void { // prevent it from being called twice - on_open = function () {}; + on_open = function() {}; const rstream2 = uplink.fetchTarball(file.url); - rstream2.on('error', function (err): void { + rstream2.on('error', function(err): void { if (savestream) { savestream.abort(); } savestream = null; readStream.emit('error', err); }); - rstream2.on('end', function (): void { + rstream2.on('end', function(): void { if (savestream) { savestream.done(); } }); - rstream2.on('content-length', function (v): void { + rstream2.on('content-length', function(v): void { readStream.emit('content-length', v); if (savestream) { savestream.emit('content-length', v); @@ -291,15 +269,12 @@ class Storage implements IStorageHandler { }; if (savestream) { - savestream.on('open', function (): void { + savestream.on('open', function(): void { on_open(); }); - savestream.on('error', function (err): void { - self.logger.warn( - { err: err, fileName: file }, - 'error saving file @{fileName}: @{err.message}\n@{err.stack}' - ); + savestream.on('error', function(err): void { + self.logger.warn({ err: err, fileName: file }, 'error saving file @{fileName}: @{err.message}\n@{err.stack}'); if (savestream) { savestream.abort(); } @@ -326,17 +301,19 @@ class Storage implements IStorageHandler { * @property {function} options.callback Callback for receive data */ public getPackage(options: IGetPackageOptions): void { - this.localStorage.getPackageMetadata(options.name, (err, data): void => { - if (err && (!err.status || err.status >= HTTP_STATUS.INTERNAL_ERROR)) { - // report internal errors right away - return options.callback(err); - } + this.localStorage.getPackageMetadata( + options.name, + (err, data): void => { + if (err && (!err.status || err.status >= HTTP_STATUS.INTERNAL_ERROR)) { + // report internal errors right away + return options.callback(err); + } - this._syncUplinksMetadata( - options.name, - data, - { req: options.req, uplinksLook: options.uplinksLook }, - function getPackageSynUpLinksCallback(err, result: Package, uplinkErrors): void { + this._syncUplinksMetadata(options.name, data, { req: options.req, uplinksLook: options.uplinksLook }, function getPackageSynUpLinksCallback( + err, + result: Package, + uplinkErrors + ): void { if (err) { return options.callback(err); } @@ -347,9 +324,9 @@ class Storage implements IStorageHandler { result._attachments = {}; options.callback(null, result, uplinkErrors); - } - ); - }); + }); + } + ); } /** @@ -371,7 +348,7 @@ class Storage implements IStorageHandler { async.eachSeries( Object.keys(this.uplinks), - function (up_name, cb): void { + function(up_name, cb): void { // shortcut: if `local=1` is supplied, don't call uplinks if (options.req.query.local !== undefined) { return cb(); @@ -379,34 +356,40 @@ class Storage implements IStorageHandler { // search by keyword for each uplink const lstream: IUploadTarball = self.uplinks[up_name].search(options); // join streams - lstream.pipe(stream, { end: false }); - lstream.on('error', function (err): void { + lstream.pipe( + stream, + { end: false } + ); + lstream.on('error', function(err): void { self.logger.error({ err: err }, 'uplink error: @{err.message}'); cb(); - cb = function (): void {}; + cb = function(): void {}; }); - lstream.on('end', function (): void { + lstream.on('end', function(): void { cb(); - cb = function (): void {}; + cb = function(): void {}; }); - stream.abort = function (): void { + stream.abort = function(): void { if (lstream.abort) { lstream.abort(); } cb(); - cb = function (): void {}; + cb = function(): void {}; }; }, // executed after all series - function (): void { + function(): void { // attach a local search results const lstream: IReadTarball = self.localStorage.search(startkey, options); - stream.abort = function (): void { + stream.abort = function(): void { lstream.abort(); }; - lstream.pipe(stream, { end: true }); - lstream.on('error', function (err: VerdaccioError): void { + lstream.pipe( + stream, + { end: true } + ); + lstream.on('error', function(err: VerdaccioError): void { self.logger.error({ err: err }, 'search error: @{err.message}'); stream.end(); }); @@ -422,16 +405,15 @@ class Storage implements IStorageHandler { */ public getLocalDatabase(callback: Callback): void { const self = this; - this.localStorage.storagePlugin.get((err, locals): void => { - if (err) { - callback(err); - } + this.localStorage.storagePlugin.get( + (err, locals): void => { + if (err) { + callback(err); + } - const packages: Version[] = []; - const getPackage = function (itemPkg): void { - self.localStorage.getPackageMetadata( - locals[itemPkg], - function (err, pkgMetadata: Package): void { + const packages: Version[] = []; + const getPackage = function(itemPkg): void { + self.localStorage.getPackageMetadata(locals[itemPkg], function(err, pkgMetadata: Package): void { if (_.isNil(err)) { const latest = pkgMetadata[DIST_TAGS].latest; if (latest && pkgMetadata.versions[latest]) { @@ -447,10 +429,7 @@ class Storage implements IStorageHandler { packages.push(version); } else { - self.logger.warn( - { package: locals[itemPkg] }, - 'package @{package} does not have a "latest" tag?' - ); + self.logger.warn({ package: locals[itemPkg] }, 'package @{package} does not have a "latest" tag?'); } } @@ -459,16 +438,16 @@ class Storage implements IStorageHandler { } else { getPackage(itemPkg + 1); } - } - ); - }; + }); + }; - if (locals.length) { - getPackage(0); - } else { - callback(null, []); + if (locals.length) { + getPackage(0); + } else { + callback(null, []); + } } - }); + ); } /** @@ -476,12 +455,7 @@ class Storage implements IStorageHandler { if package is available locally, it MUST be provided in pkginfo returns callback(err, result, uplink_errors) */ - public _syncUplinksMetadata( - name: string, - packageInfo: Package, - options: ISyncUplinks, - callback: Callback - ): void { + public _syncUplinksMetadata(name: string, packageInfo: Package, options: ISyncUplinks, callback: Callback): void { let found = true; const self = this; const upLinks: IProxy[] = []; @@ -514,55 +488,59 @@ class Storage implements IStorageHandler { _options.etag = upLinkMeta.etag; } - upLink.getRemoteMetadata(name, _options, (err, upLinkResponse, eTag): void => { - if (err && err.remoteStatus === 304) { - upLinkMeta.fetched = Date.now(); + upLink.getRemoteMetadata( + name, + _options, + (err, upLinkResponse, eTag): void => { + if (err && err.remoteStatus === 304) { + upLinkMeta.fetched = Date.now(); + } + + if (err || !upLinkResponse) { + return cb(null, [err || ErrorCode.getInternalError('no data')]); + } + + try { + validateMetadata(upLinkResponse, name); + } catch (err) { + self.logger.error( + { + sub: 'out', + err: err, + }, + 'package.json validating error @{!err.message}\n@{err.stack}' + ); + return cb(null, [err]); + } + + packageInfo._uplinks[upLink.upname] = { + etag: eTag, + fetched: Date.now(), + }; + + packageInfo.time = mergeUplinkTimeIntoLocal(packageInfo, upLinkResponse); + + updateVersionsHiddenUpLink(upLinkResponse.versions, upLink); + + try { + mergeVersions(packageInfo, upLinkResponse); + } catch (err) { + self.logger.error( + { + sub: 'out', + err: err, + }, + 'package.json parsing error @{!err.message}\n@{err.stack}' + ); + return cb(null, [err]); + } + + // if we got to this point, assume that the correct package exists + // on the uplink + found = true; + cb(); } - - if (err || !upLinkResponse) { - return cb(null, [err || ErrorCode.getInternalError('no data')]); - } - - try { - validateMetadata(upLinkResponse, name); - } catch (err) { - self.logger.error( - { - sub: 'out', - err: err - }, - 'package.json validating error @{!err.message}\n@{err.stack}' - ); - return cb(null, [err]); - } - - packageInfo._uplinks[upLink.upname] = { - etag: eTag, - fetched: Date.now() - }; - - packageInfo.time = mergeUplinkTimeIntoLocal(packageInfo, upLinkResponse); - - updateVersionsHiddenUpLink(upLinkResponse.versions, upLink); - - try { - mergeVersions(packageInfo, upLinkResponse); - } catch (err) { - self.logger.error( - { - sub: 'out', - err: err - }, - 'package.json parsing error @{!err.message}\n@{err.stack}' - ); - return cb(null, [err]); - } - - // if we got to this point, assume that the correct package exists - // on the uplink - found = true; - cb(); - }); + ); }, // @ts-ignore (err: Error, upLinksErrors: any): AsyncResultArrayCallback => { @@ -642,4 +620,4 @@ class Storage implements IStorageHandler { } } -export default Storage; +export { Storage } diff --git a/test/unit/partials/addTarball b/packages/store/test/fixtures/addTarball similarity index 100% rename from test/unit/partials/addTarball rename to packages/store/test/fixtures/addTarball diff --git a/test/unit/partials/changePackage/metadata-change b/packages/store/test/fixtures/changePackage/metadata-change similarity index 100% rename from test/unit/partials/changePackage/metadata-change rename to packages/store/test/fixtures/changePackage/metadata-change diff --git a/test/unit/partials/metadata b/packages/store/test/fixtures/metadata similarity index 100% rename from test/unit/partials/metadata rename to packages/store/test/fixtures/metadata diff --git a/test/unit/partials/metadata-update-versions-tags b/packages/store/test/fixtures/metadata-update-versions-tags similarity index 100% rename from test/unit/partials/metadata-update-versions-tags rename to packages/store/test/fixtures/metadata-update-versions-tags diff --git a/packages/store/test/fixtures/test.utils.ts b/packages/store/test/fixtures/test.utils.ts new file mode 100644 index 000000000..9dc2cec88 --- /dev/null +++ b/packages/store/test/fixtures/test.utils.ts @@ -0,0 +1,8 @@ +import fs from 'fs'; +import path from 'path'; + +function readFile(filePath) { + return fs.readFileSync(path.join(__dirname, `/${filePath}`)); +} + +export { readFile } diff --git a/test/unit/modules/storage/local-storage.spec.ts b/packages/store/test/local-storage.spec.ts similarity index 83% rename from test/unit/modules/storage/local-storage.spec.ts rename to packages/store/test/local-storage.spec.ts index b11a362d5..43ac80c13 100644 --- a/test/unit/modules/storage/local-storage.spec.ts +++ b/packages/store/test/local-storage.spec.ts @@ -1,21 +1,19 @@ import rimRaf from 'rimraf'; import path from 'path'; -import LocalStorage from '../../../../src/lib/local-storage'; -import AppConfig from '../../../../src/lib/config'; +import { LocalStorage } from '@verdaccio/store/src/local-storage'; +import {Config as AppConfig } from '@verdaccio/config'; // @ts-ignore -import configExample from '../../partials/config'; -import { logger, setup } from '../../../../src/lib/logger'; -import { readFile } from '../../../functional/lib/test.utils'; -import { generatePackageTemplate } from '../../../../src/lib/storage-utils'; -import { generateNewVersion } from '../../../lib/utils-test'; +import { logger, setup} from '@verdaccio/logger'; +import { configExample, generateNewVersion } from '@verdaccio/mock'; +import {IStorage} from '@verdaccio/dev-types'; -const readMetadata = (fileName = 'metadata') => - readFile(`../../unit/partials/${fileName}`).toString(); +import {generatePackageTemplate} from '../src/storage-utils'; +import {readFile} from './fixtures/test.utils'; -import { Config, MergeTags, Package } from '@verdaccio/types'; -import { IStorage } from '../../../../types'; -import { API_ERROR, HTTP_STATUS, DIST_TAGS } from '../../../../src/lib/constants'; +const readMetadata = (fileName = 'metadata') => readFile(`../fixtures/${fileName}`).toString(); +import {Config, MergeTags, Package} from '@verdaccio/types'; +import { API_ERROR, HTTP_STATUS, DIST_TAGS} from '@verdaccio/dev-commons'; import { VerdaccioError } from '@verdaccio/commons-api'; setup([]); @@ -28,18 +26,16 @@ describe('LocalStorage', () => { const tarballName2 = `${pkgName}-add-tarball-1.0.5.tgz`; const getStorage = (LocalStorageClass = LocalStorage) => { - const config: Config = new AppConfig( - configExample({ - self_path: path.join('../partials/store') - }) - ); + const config: Config = new AppConfig(configExample({ + self_path: path.join('../partials/store') + })); return new LocalStorageClass(config, logger); - }; + } const getPackageMetadataFromStore = (pkgName: string): Promise => { return new Promise((resolve) => { - storage.getPackageMetadata(pkgName, (err, data) => { + storage.getPackageMetadata(pkgName, (err, data ) => { resolve(data); }); }); @@ -47,15 +43,9 @@ describe('LocalStorage', () => { const addNewVersion = (pkgName: string, version: string) => { return new Promise((resolve) => { - storage.addVersion( - pkgName, - version, - generateNewVersion(pkgName, version), - '', - (err, data) => { - resolve(data); - } - ); + storage.addVersion(pkgName, version, generateNewVersion(pkgName, version), '', (err, data) => { + resolve(data); + }); }); }; const addTarballToStore = (pkgName: string, tarballName) => { @@ -212,17 +202,11 @@ describe('LocalStorage', () => { await addTarballToStore(pkgName, `${pkgName}-9.0.0.tgz`); await addTarballToStore(pkgName, tarballName); - storage.addVersion( - pkgName, - version, - generateNewVersion(pkgName, version), - '', - (err, data) => { - expect(err).toBeNull(); - expect(data).toBeUndefined(); - done(); - } - ); + storage.addVersion(pkgName, version, generateNewVersion(pkgName, version), '', (err, data) => { + expect(err).toBeNull(); + expect(data).toBeUndefined(); + done(); + }); }); test('should fails on add a duplicated version without tag', async (done) => { @@ -231,7 +215,7 @@ describe('LocalStorage', () => { await addPackageToStore(pkgName, generatePackageTemplate(pkgName)); await addNewVersion(pkgName, version); - storage.addVersion(pkgName, version, generateNewVersion(pkgName, version), '', (err) => { + storage.addVersion(pkgName, version, generateNewVersion(pkgName, version), '', err => { expect(err).not.toBeNull(); expect(err.statusCode).toEqual(HTTP_STATUS.CONFLICT); expect(err.message).toMatch(API_ERROR.PACKAGE_EXIST); @@ -246,18 +230,12 @@ describe('LocalStorage', () => { const tarballName = `${pkgName}-${version}.tgz`; await addTarballToStore(pkgName, tarballName); - storage.addVersion( - pkgName, - version, - generateNewVersion(pkgName, version, 'fake'), - '', - (err) => { - expect(err).not.toBeNull(); - expect(err.statusCode).toEqual(HTTP_STATUS.BAD_REQUEST); - expect(err.message).toMatch(/shasum error/); - done(); - } - ); + storage.addVersion(pkgName, version, generateNewVersion(pkgName, version, 'fake'), '', err => { + expect(err).not.toBeNull(); + expect(err.statusCode).toEqual(HTTP_STATUS.BAD_REQUEST); + expect(err.message).toMatch(/shasum error/); + done(); + }); }); test('should add new second version without tag', async (done) => { @@ -267,17 +245,11 @@ describe('LocalStorage', () => { await addNewVersion(pkgName, '1.0.1'); await addNewVersion(pkgName, '1.0.3'); - storage.addVersion( - pkgName, - version, - generateNewVersion(pkgName, version), - 'beta', - (err, data) => { - expect(err).toBeNull(); - expect(data).toBeUndefined(); - done(); - } - ); + storage.addVersion(pkgName, version, generateNewVersion(pkgName, version), 'beta', (err, data) => { + expect(err).toBeNull(); + expect(data).toBeUndefined(); + done(); + }); }); }); @@ -286,18 +258,18 @@ describe('LocalStorage', () => { const pkgName = 'add-update-versions-test-1'; const version = '1.0.2'; let _storage; - beforeEach((done) => { + beforeEach(done => { class MockLocalStorage extends LocalStorage {} // @ts-ignore - MockLocalStorage.prototype._writePackage = jest.fn(LocalStorage.prototype._writePackage); + MockLocalStorage.prototype._writePackage = jest.fn(LocalStorage.prototype._writePackage) _storage = getStorage(MockLocalStorage); rimRaf(path.join(configExample().storage, pkgName), async () => { await addPackageToStore(pkgName, generatePackageTemplate(pkgName)); await addNewVersion(pkgName, '1.0.1'); await addNewVersion(pkgName, version); done(); - }); - }); + }) + }) test('should update versions from external source', async (done) => { _storage.updateVersions(pkgName, metadata, (err, data) => { @@ -318,22 +290,22 @@ describe('LocalStorage', () => { }); }); - test('should not update if the metadata match', (done) => { - _storage.updateVersions(pkgName, metadata, (e) => { - expect(e).toBeNull(); - _storage.updateVersions(pkgName, metadata, (err) => { - expect(err).toBeNull(); + test('should not update if the metadata match', done => { + _storage.updateVersions(pkgName, metadata, e => { + expect(e).toBeNull() + _storage.updateVersions(pkgName, metadata, err => { + expect(err).toBeNull() expect(_storage._writePackage).toHaveBeenCalledTimes(1); - done(); - }); - }); - }); + done() + }) + }) + }) }); describe('LocalStorage::changePackage', () => { const pkgName = 'change-package'; - test('should unpublish a version', async (done) => { + test('should unpublish a version', async done => { await addPackageToStore(pkgName, generatePackageTemplate(pkgName)); await addNewVersion(pkgName, '1.0.1'); await addNewVersion(pkgName, '1.0.2'); @@ -343,7 +315,7 @@ describe('LocalStorage', () => { storage.changePackage(pkgName, metadata, rev, (err) => { expect(err).toBeUndefined(); - storage.getPackageMetadata(pkgName, (err, data) => { + storage.getPackageMetadata(pkgName, (err, data ) => { expect(err).toBeNull(); expect(data.versions['1.0.1']).toBeDefined(); expect(data.versions['1.0.2']).toBeUndefined(); @@ -355,7 +327,9 @@ describe('LocalStorage', () => { }); describe('LocalStorage::tarball operations', () => { + describe('LocalStorage::addTarball', () => { + test('should add a new tarball', (done) => { const tarballData = JSON.parse(readMetadata('addTarball')); const stream = storage.addTarball(pkgName, tarballName); @@ -364,7 +338,7 @@ describe('LocalStorage', () => { expect(err).toBeNull(); done(); }); - stream.on('success', function () { + stream.on('success', function() { done(); }); @@ -379,7 +353,7 @@ describe('LocalStorage', () => { expect(err).toBeNull(); done(); }); - stream.on('success', function () { + stream.on('success', function() { done(); }); @@ -387,7 +361,7 @@ describe('LocalStorage', () => { stream.done(); }); - test('should fails on add a duplicated new tarball', (done) => { + test('should fails on add a duplicated new tarball ', (done) => { const tarballData = JSON.parse(readMetadata('addTarball')); const stream = storage.addTarball(pkgName, tarballName); stream.on('error', (err: VerdaccioError) => { @@ -420,7 +394,7 @@ describe('LocalStorage', () => { test('should fails on use invalid package name on add a new tarball', (done) => { const stream = storage.addTarball(pkgName, `${pkgName}-fails-add-tarball-1.0.4.tgz`); - stream.on('error', function (err: VerdaccioError) { + stream.on('error', function(err: VerdaccioError) { expect(err).not.toBeNull(); expect(err.statusCode).toEqual(HTTP_STATUS.BAD_DATA); expect(err.message).toMatch(/refusing to accept zero-length file/); @@ -433,7 +407,7 @@ describe('LocalStorage', () => { test('should fails on abort on add a new tarball', (done) => { const stream = storage.addTarball('__proto__', `${pkgName}-fails-add-tarball-1.0.4.tgz`); stream.abort(); - stream.on('error', function (err: VerdaccioError) { + stream.on('error', function(err: VerdaccioError) { expect(err).not.toBeNull(); expect(err.statusCode).toEqual(HTTP_STATUS.FORBIDDEN); expect(err.message).toMatch(/can't use this filename/); @@ -442,8 +416,10 @@ describe('LocalStorage', () => { stream.done(); }); + }); describe('LocalStorage::removeTarball', () => { + test('should remove a tarball', (done) => { storage.removeTarball(pkgName, tarballName2, 'rev', (err, pkg) => { expect(err).toBeNull(); @@ -465,18 +441,18 @@ describe('LocalStorage', () => { describe('LocalStorage::getTarball', () => { test('should get a existing tarball', (done) => { const stream = storage.getTarball(pkgName, tarballName); - stream.on('content-length', function (contentLength) { + stream.on('content-length', function(contentLength) { expect(contentLength).toBe(279); done(); }); - stream.on('open', function () { + stream.on('open', function() { done(); }); }); test('should fails on get a tarball that does not exist', (done) => { const stream = storage.getTarball('fake', tarballName); - stream.on('error', function (err: VerdaccioError) { + stream.on('error', function(err: VerdaccioError) { expect(err).not.toBeNull(); expect(err.statusCode).toEqual(HTTP_STATUS.NOT_FOUND); expect(err.message).toMatch(/no such file available/); @@ -494,15 +470,16 @@ describe('LocalStorage', () => { expect(pkg.name).toEqual(pkgName); }); - stream.on('error', function (err) { + stream.on('error', function(err) { expect(err).not.toBeNull(); done(); }); - stream.on('end', function () { + stream.on('end', function() { done(); }); }); + }); }); @@ -525,7 +502,7 @@ describe('LocalStorage', () => { test('should fails with package not found', (done) => { const pkgName = 'npm_test_fake'; - storage.removePackage(pkgName, (err) => { + storage.removePackage(pkgName, err => { expect(err).not.toBeNull(); expect(err.message).toMatch(/no such package available/); done(); @@ -533,7 +510,7 @@ describe('LocalStorage', () => { }); test('should fails with @scoped package not found', (done) => { - storage.removePackage(pkgNameScoped, (err) => { + storage.removePackage(pkgNameScoped, err => { expect(err).not.toBeNull(); expect(err.message).toMatch(API_ERROR.NO_PACKAGE); done(); @@ -541,4 +518,5 @@ describe('LocalStorage', () => { }); }); }); + }); diff --git a/packages/store/test/merge.dist.tags.spec.ts b/packages/store/test/merge.dist.tags.spec.ts new file mode 100644 index 000000000..72fecab20 --- /dev/null +++ b/packages/store/test/merge.dist.tags.spec.ts @@ -0,0 +1,75 @@ +import assert from 'assert'; +import { semverSort } from '@verdaccio/utils'; +import { setup } from '@verdaccio/logger'; + +import {mergeVersions} from '../src/metadata-utils'; + +setup([]); + +describe('Storage._merge_versions versions', () => { + + test('simple', () => { + let pkg = { + 'versions': {a: 1, b: 1, c: 1}, + 'dist-tags': {}, + }; + + // @ts-ignore + mergeVersions(pkg, {versions: {a: 2, q: 2}}); + + assert.deepEqual(pkg, { + 'versions': {a: 1, b: 1, c: 1, q: 2}, + 'dist-tags': {}, + }); + }); + + test('dist-tags - compat', () => { + let pkg = { + 'versions': {}, + 'dist-tags': {q: '1.1.1', w: '2.2.2'}, + }; + + // @ts-ignore + mergeVersions(pkg, {'dist-tags': {q: '2.2.2', w: '3.3.3', t: '4.4.4'}}); + + assert.deepEqual(pkg, { + 'versions': {}, + 'dist-tags': {q: '2.2.2', w: '3.3.3', t: '4.4.4'}, + }); + }); + + test('dist-tags - staging', () => { + + let pkg = { + versions: {}, + // we've been locally publishing 1.1.x in preparation for the next + // public release + 'dist-tags': {q:'1.1.10',w:'2.2.2'}, + }; + // 1.1.2 is the latest public release, but we want to continue testing + // against our local 1.1.10, which may end up published as 1.1.3 in the + // future + + // @ts-ignore + mergeVersions(pkg, {'dist-tags':{q:'1.1.2',w:'3.3.3',t:'4.4.4'}}) + + assert.deepEqual(pkg, { + versions: {}, + 'dist-tags': {q:'1.1.10',w:'3.3.3',t:'4.4.4'}, + }); + + }); + + test('semverSort', () => { + + assert.deepEqual(semverSort(['1.2.3', '1.2', '1.2.3a', '1.2.3c', '1.2.3-b']), + ['1.2.3a', + '1.2.3-b', + '1.2.3c', + '1.2.3'] + ); + + }); + +}); + diff --git a/packages/store/test/search.spec.ts b/packages/store/test/search.spec.ts new file mode 100644 index 000000000..dadd1e922 --- /dev/null +++ b/packages/store/test/search.spec.ts @@ -0,0 +1,67 @@ +import { Config } from '@verdaccio/config'; +import { Storage } from '@verdaccio/store'; +import { configExample } from '@verdaccio/mock'; +import { setup } from '@verdaccio/logger'; + +import { SearchInstance } from '../src/search'; + +setup([]); + +const packages = [ + { + name: 'test1', + description: 'description', + _npmUser: { + name: 'test_user', + }, + }, + { + name: 'test2', + description: 'description', + _npmUser: { + name: 'test_user', + }, + }, + { + name: 'test3', + description: 'description', + _npmUser: { + name: 'test_user', + }, + }, +]; + +describe('search', () => { + beforeAll(async function() { + const config = new Config(configExample()); + const storage = new Storage(config); + await storage.init(config); + SearchInstance.configureStorage(storage); + packages.map(function(item) { + // @ts-ignore + SearchInstance.add(item); + }); + }); + + test('search query item', () => { + const result = SearchInstance.query('t'); + expect(result).toHaveLength(3); + }); + + test('search remove item', () => { + const item = { + name: 'test6', + description: 'description', + _npmUser: { + name: 'test_user', + }, + }; + // @ts-ignore + SearchInstance.add(item); + let result = SearchInstance.query('test6'); + expect(result).toHaveLength(1); + SearchInstance.remove(item.name); + result = SearchInstance.query('test6'); + expect(result).toHaveLength(0); + }); +}); diff --git a/test/unit/modules/storage/storage-utils.spec.ts b/packages/store/test/storage-utils.spec.ts similarity index 64% rename from test/unit/modules/storage/storage-utils.spec.ts rename to packages/store/test/storage-utils.spec.ts index 27e4534f7..e6b6aa708 100644 --- a/test/unit/modules/storage/storage-utils.spec.ts +++ b/packages/store/test/storage-utils.spec.ts @@ -1,10 +1,8 @@ -import { normalizePackage, mergeUplinkTimeIntoLocal } from '../../../../src/lib/storage-utils'; -import { STORAGE, DIST_TAGS } from '../../../../src/lib/constants'; -import { readFile } from '../../../functional/lib/test.utils'; +import {normalizePackage, mergeUplinkTimeIntoLocal} from '../src/storage-utils'; +import {Package} from '@verdaccio/types'; +import { STORAGE, DIST_TAGS } from '@verdaccio/dev-commons'; -import { Package } from '@verdaccio/types'; - -const readMetadata = (fileName = 'metadata') => readFile(`../../unit/partials/${fileName}`); +import {readFile} from "./fixtures/test.utils"; describe('Storage Utils', () => { describe('normalizePackage', () => { @@ -16,7 +14,7 @@ describe('Storage Utils', () => { _uplinks: {}, name: '', versions: {}, - [DIST_TAGS]: {} + [DIST_TAGS]: {}, }); expect(pkg).toBeDefined(); expect(pkg.time).toBeInstanceOf(Object); @@ -29,7 +27,7 @@ describe('Storage Utils', () => { test('normalizePackage partial metadata', () => { // @ts-ignore - const pkg = normalizePackage(readMetadata('metadata')); + const pkg = normalizePackage(readFile('metadata')); expect(pkg).toBeDefined(); expect(pkg.time).toBeInstanceOf(Object); expect(pkg.versions).toBeInstanceOf(Object); @@ -41,7 +39,7 @@ describe('Storage Utils', () => { test('normalizePackage partial default revision', () => { // @ts-ignore - const pkg = normalizePackage(readMetadata('metadata')); + const pkg = normalizePackage(readFile('metadata')); expect(pkg).toBeDefined(); expect(pkg._rev).toBeDefined(); expect(pkg._rev).toBe(STORAGE.DEFAULT_REVISION); @@ -50,13 +48,13 @@ describe('Storage Utils', () => { describe('mergeTime', () => { const vGroup1 = { - '1.0.15': '2018-06-12T23:15:05.864Z', - '1.0.16': '2018-06-12T23:17:46.578Z', - '1.0.17': '2018-06-12T23:20:59.106Z' + "1.0.15": "2018-06-12T23:15:05.864Z", + "1.0.16": "2018-06-12T23:17:46.578Z", + "1.0.17": "2018-06-12T23:20:59.106Z" }; const vGroup2 = { - '1.0.6': '2018-06-07T05:50:21.505Z', - '1.0.7': '2018-06-12T20:35:07.621Z' + "1.0.6": "2018-06-07T05:50:21.505Z", + "1.0.7": "2018-06-12T20:35:07.621Z" }; test('mergeTime basic', () => { const pkg1: Package = { @@ -65,13 +63,13 @@ describe('Storage Utils', () => { _rev: '', _uplinks: {}, time: { - modified: '2018-06-13T06:44:45.747Z', - created: '2018-06-07T05:50:21.505Z', + "modified": "2018-06-13T06:44:45.747Z", + "created": "2018-06-07T05:50:21.505Z", ...vGroup1 }, name: '', versions: {}, - [DIST_TAGS]: {} + [DIST_TAGS]: {}, }; const pkg2: Package = { @@ -81,21 +79,17 @@ describe('Storage Utils', () => { _uplinks: {}, name: '', time: { - modified: '2019-06-13T06:44:45.747Z', - created: '2019-06-07T05:50:21.505Z', + "modified": "2019-06-13T06:44:45.747Z", + "created": "2019-06-07T05:50:21.505Z", ...vGroup2 }, versions: {}, - [DIST_TAGS]: {} + [DIST_TAGS]: {}, }; const mergedPkg = mergeUplinkTimeIntoLocal(pkg1, pkg2); - expect(Object.keys(mergedPkg)).toEqual([ - 'modified', - 'created', - ...Object.keys(vGroup1), - ...Object.keys(vGroup2) - ]); + expect(Object.keys(mergedPkg)).toEqual(["modified", "created", + ...Object.keys(vGroup1), ...Object.keys(vGroup2)]); }); test('mergeTime remote empty', () => { @@ -106,12 +100,12 @@ describe('Storage Utils', () => { _uplinks: {}, name: '', time: { - modified: '2018-06-13T06:44:45.747Z', - created: '2018-06-07T05:50:21.505Z', + "modified": "2018-06-13T06:44:45.747Z", + "created": "2018-06-07T05:50:21.505Z", ...vGroup1 }, versions: {}, - [DIST_TAGS]: {} + [DIST_TAGS]: {}, }; const pkg2: Package = { @@ -121,10 +115,10 @@ describe('Storage Utils', () => { _uplinks: {}, name: '', versions: {}, - [DIST_TAGS]: {} + [DIST_TAGS]: {}, }; const mergedPkg = mergeUplinkTimeIntoLocal(pkg1, pkg2); - expect(Object.keys(mergedPkg)).toEqual(['modified', 'created', ...Object.keys(vGroup1)]); + expect(Object.keys(mergedPkg)).toEqual(["modified", "created", ...Object.keys(vGroup1)]); }); }); }); diff --git a/packages/store/tsconfig.json b/packages/store/tsconfig.json new file mode 100644 index 000000000..6531bd3e4 --- /dev/null +++ b/packages/store/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./build" + }, + "include": ["src/**/*"], + "exclude": ["src/**/*.test.ts"] +} diff --git a/packages/types/.babelrc b/packages/types/.babelrc new file mode 100644 index 000000000..28397a1bd --- /dev/null +++ b/packages/types/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": [["@verdaccio"]] +} diff --git a/packages/types/custom.d.ts b/packages/types/custom.d.ts new file mode 100644 index 000000000..733e88c70 --- /dev/null +++ b/packages/types/custom.d.ts @@ -0,0 +1,16 @@ +import { Logger, RemoteUser } from "@verdaccio/types"; + +declare global { + namespace Express { + export interface Request { + remote_user: RemoteUser; + log: Logger; + } + + export interface Response { + report_error: any; + _verdaccio_error: any; + socket?: any; + } + } +} diff --git a/types/index.ts b/packages/types/index.ts similarity index 100% rename from types/index.ts rename to packages/types/index.ts diff --git a/packages/types/package.json b/packages/types/package.json new file mode 100644 index 000000000..81744e8ae --- /dev/null +++ b/packages/types/package.json @@ -0,0 +1,21 @@ +{ + "name": "@verdaccio/dev-types", + "version": "5.0.0-alpha.0", + "private": true, + "description": "types for verdaccio local dev", + "main": "./index.ts", + "author": { + "name": "Juan Picado", + "email": "juanpicado19@gmail.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/verdaccio/verdaccio" + }, + "homepage": "https://verdaccio.org", + "license": "MIT", + "scripts": { + "clean": "rimraf ./build", + "test": "echo \"Error: no test specified\" && exit 0" + } +} diff --git a/packages/types/tsconfig.json b/packages/types/tsconfig.json new file mode 100644 index 000000000..41716a7dd --- /dev/null +++ b/packages/types/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "../../tsconfig" +} diff --git a/packages/utils/.babelrc b/packages/utils/.babelrc new file mode 100644 index 000000000..28397a1bd --- /dev/null +++ b/packages/utils/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": [["@verdaccio"]] +} diff --git a/packages/utils/jest.config.js b/packages/utils/jest.config.js new file mode 100644 index 000000000..9c48852a3 --- /dev/null +++ b/packages/utils/jest.config.js @@ -0,0 +1,9 @@ +module.exports = { + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'], + transform: { + '^.+\\.(js|jsx|ts|tsx)$': 'babel-jest', + }, + verbose: true, + collectCoverage: false, + coveragePathIgnorePatterns: ['node_modules', 'fixtures'], +}; diff --git a/packages/utils/package.json b/packages/utils/package.json new file mode 100644 index 000000000..59b2363b0 --- /dev/null +++ b/packages/utils/package.json @@ -0,0 +1,38 @@ +{ + "name": "@verdaccio/utils", + "version": "5.0.0-alpha.0", + "description": "verdaccio utilities", + "main": "./build/index.js", + "types": "build/index.d.ts", + "author": { + "name": "Juan Picado", + "email": "juanpicado19@gmail.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/verdaccio/verdaccio" + }, + "license": "MIT", + "homepage": "https://verdaccio.org", + "dependencies": { + "@verdaccio/dev-commons": "5.0.0-alpha.0", + "@verdaccio/readme": "9.3.0", + "js-yaml": "3.13.1", + "jsonwebtoken": "8.5.1", + "minimatch": "3.0.4", + "semver": "7.1.2" + }, + "devDependencies": { + "@types/minimatch": "3.0.3", + "@verdaccio/dev-types": "5.0.0-alpha.0" + }, + "scripts": { + "clean": "rimraf ./build", + "test": "cross-env NODE_ENV=test BABEL_ENV=test jest", + "type-check": "tsc --noEmit", + "build:types": "tsc --emitDeclarationOnly --declaration true", + "build:js": "cross-env BABEL_ENV=registry babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "build": "npm run build:js && npm run build:types" + }, + "gitHead": "7c246ede52ff717707fcae66dd63fc4abd536982" +} diff --git a/src/lib/auth-utils.ts b/packages/utils/src/auth-utils.ts similarity index 82% rename from src/lib/auth-utils.ts rename to packages/utils/src/auth-utils.ts index 7ecfcb021..a80aeee7f 100644 --- a/src/lib/auth-utils.ts +++ b/packages/utils/src/auth-utils.ts @@ -1,18 +1,15 @@ import _ from 'lodash'; -import buildDebug from 'debug'; + +import { API_ERROR, HTTP_STATUS, ROLES, TIME_EXPIRATION_7D, TOKEN_BASIC, TOKEN_BEARER, DEFAULT_MIN_LIMIT_PASSWORD } from '@verdaccio/dev-commons'; +import { CookieSessionToken, IAuthWebUI, AuthMiddlewarePayload, AuthTokenHeader, BasicPayload } from '@verdaccio/dev-types'; import { RemoteUser, Package, Callback, Config, Security, APITokenOptions, JWTOptions, IPluginAuth } from '@verdaccio/types'; -import { CookieSessionToken, IAuthWebUI, AuthMiddlewarePayload, AuthTokenHeader, BasicPayload } from '../../types'; -import { logger } from '../lib/logger'; + import { convertPayloadToBase64, ErrorCode } from './utils'; -import { API_ERROR, HTTP_STATUS, ROLES, TIME_EXPIRATION_7D, TOKEN_BASIC, TOKEN_BEARER, DEFAULT_MIN_LIMIT_PASSWORD } from './constants'; import { aesDecrypt, verifyPayload } from './crypto-utils'; -const debug = buildDebug('verdaccio'); +import { logger } from '@verdaccio/logger'; -export function validatePassword( - password: string, // pragma: allowlist secret - minLength: number = DEFAULT_MIN_LIMIT_PASSWORD -): boolean { +export function validatePassword(password: string, minLength: number = DEFAULT_MIN_LIMIT_PASSWORD): boolean { return typeof password === 'string' && password.length >= minLength; } @@ -45,15 +42,15 @@ export function createAnonymousRemoteUser(): RemoteUser { } export function allow_action(action: string): Function { - return function (user: RemoteUser, pkg: Package, callback: Callback): void { - debug('[auth/allow_action]: user: %o', user?.name); + return function(user: RemoteUser, pkg: Package, callback: Callback): void { + logger.trace({remote: user.name}, `[auth/allow_action]: user: @{user.name}`); const { name, groups } = user; const groupAccess = pkg[action]; - const hasPermission = groupAccess.some((group) => name === group || groups.includes(group)); - debug('[auth/allow_action]: hasPermission? %o} for user: %o', hasPermission, user?.name); + const hasPermission = groupAccess.some(group => name === group || groups.includes(group)); + logger.trace({pkgName: pkg.name, hasPermission, remote: user.name, groupAccess}, `[auth/allow_action]: hasPermission? @{hasPermission} for user: @{user}`); if (hasPermission) { - logger.info({ remote: user.name }, `auth/allow_action: access granted to: @{user}`); + logger.trace({remote: user.name}, `auth/allow_action: access granted to: @{user}`); return callback(null, true); } @@ -69,37 +66,37 @@ export function allow_action(action: string): Function { * */ export function handleSpecialUnpublish(): any { - return function (user: RemoteUser, pkg: Package, callback: Callback): void { + return function(user: RemoteUser, pkg: Package, callback: Callback): void { const action = 'unpublish'; // verify whether the unpublish prop has been defined const isUnpublishMissing: boolean = _.isNil(pkg[action]); const hasGroups: boolean = isUnpublishMissing ? false : pkg[action].length > 0; - debug('fallback unpublish for @{name} has groups: %o for %o', hasGroups, user?.name); + logger.trace({user: user.name, name: pkg.name, hasGroups}, `fallback unpublish for @{name} has groups: @{hasGroups} for @{user}`); + if (isUnpublishMissing || hasGroups === false) { return callback(null, undefined); } - debug('allow_action for %o for %o has groups: %o for %o', action, user?.name, hasGroups, user); + + logger.trace({user: user.name, name: pkg.name, action, hasGroups}, `allow_action for @{action} for @{name} has groups: @{hasGroups} for @{user}`); return allow_action(action)(user, pkg, callback); }; } -export function getDefaultPlugins(logger: any): IPluginAuth { +export function getDefaultPlugins(): IPluginAuth { return { - authenticate(_user: string, _password: string, cb: Callback): void { - // pragma: allowlist secret + authenticate(user: string, password: string, cb: Callback): void { cb(ErrorCode.getForbidden(API_ERROR.BAD_USERNAME_PASSWORD)); }, - add_user(_user: string, _password: string, cb: Callback): void { - // pragma: allowlist secret + add_user(user: string, password: string, cb: Callback): void { return cb(ErrorCode.getConflict(API_ERROR.BAD_USERNAME_PASSWORD)); }, // FIXME: allow_action and allow_publish should be in the @verdaccio/types // @ts-ignore - allow_access: allow_action('access', logger), + allow_access: allow_action('access'), // @ts-ignore - allow_publish: allow_action('publish', logger), + allow_publish: allow_action('publish'), allow_unpublish: handleSpecialUnpublish(), }; } @@ -170,6 +167,7 @@ export async function getApiToken(auth: IAuthWebUI, config: Config, remoteUser: return await new Promise((resolve): void => { resolve(auth.aesEncrypt(buildUserBuffer(remoteUser.name as string, aesPassword)).toString('base64')); }); + } export function parseAuthTokenHeader(authorizationHeader: string): AuthTokenHeader { diff --git a/src/lib/config-utils.ts b/packages/utils/src/config-utils.ts similarity index 82% rename from src/lib/config-utils.ts rename to packages/utils/src/config-utils.ts index a91ff9909..6f49617d4 100644 --- a/src/lib/config-utils.ts +++ b/packages/utils/src/config-utils.ts @@ -1,22 +1,18 @@ -/** - * @prettier - * @flow - */ - -import assert from 'assert'; import _ from 'lodash'; +import assert from 'assert'; import minimatch from 'minimatch'; -import { PackageList, UpLinksConfList } from '@verdaccio/types'; -import { MatchedPackage, LegacyPackageList } from '../../types'; import { ErrorCode } from './utils'; +import { PackageList, UpLinksConfList } from '@verdaccio/types'; +import { MatchedPackage, LegacyPackageList } from '@verdaccio/dev-types'; + const BLACKLIST = { all: true, anonymous: true, undefined: true, owner: true, - none: true + none: true, }; /** @@ -46,10 +42,7 @@ export function normalizeUserList(oldFormat: any, newFormat: any): any { return _.flatten(result); } -export function uplinkSanityCheck( - uplinks: UpLinksConfList, - users: any = BLACKLIST -): UpLinksConfList { +export function uplinkSanityCheck(uplinks: UpLinksConfList, users: any = BLACKLIST): UpLinksConfList { const newUplinks = _.clone(uplinks); let newUsers = _.clone(users); @@ -67,11 +60,7 @@ export function uplinkSanityCheck( export function sanityCheckNames(item: string, users: any): any { assert( - item !== 'all' && - item !== 'owner' && - item !== 'anonymous' && - item !== 'undefined' && - item !== 'none', + item !== 'all' && item !== 'owner' && item !== 'anonymous' && item !== 'undefined' && item !== 'none', 'CONFIG: reserved uplink name: ' + item ); assert(!item.match(/\s/), 'CONFIG: invalid uplink name: ' + item); @@ -102,7 +91,7 @@ export function hasProxyTo(pkg: string, upLink: string, packages: PackageList): const matchedPkg: MatchedPackage = getMatchedPackagesSpec(pkg, packages); const proxyList = typeof matchedPkg !== 'undefined' ? matchedPkg.proxy : []; if (proxyList) { - return proxyList.some((curr) => upLink === curr); + return proxyList.some(curr => upLink === curr); } return false; @@ -130,20 +119,11 @@ export function normalisePackageAccess(packages: LegacyPackageList): LegacyPacka _.isObject(packages[pkg]) && _.isArray(packages[pkg]) === false, `CONFIG: bad "'${pkg}'" package description (object expected)` ); - normalizedPkgs[pkg].access = normalizeUserList( - packages[pkg].allow_access, - packages[pkg].access - ); + normalizedPkgs[pkg].access = normalizeUserList(packages[pkg].allow_access, packages[pkg].access); delete normalizedPkgs[pkg].allow_access; - normalizedPkgs[pkg].publish = normalizeUserList( - packages[pkg].allow_publish, - packages[pkg].publish - ); + normalizedPkgs[pkg].publish = normalizeUserList(packages[pkg].allow_publish, packages[pkg].publish); delete normalizedPkgs[pkg].allow_publish; - normalizedPkgs[pkg].proxy = normalizeUserList( - packages[pkg].proxy_access, - packages[pkg].proxy - ); + normalizedPkgs[pkg].proxy = normalizeUserList(packages[pkg].proxy_access, packages[pkg].proxy); delete normalizedPkgs[pkg].proxy_access; // if unpublish is not defined, we set to false to fallback in publish access normalizedPkgs[pkg].unpublish = _.isUndefined(packages[pkg].unpublish) diff --git a/src/lib/crypto-utils.ts b/packages/utils/src/crypto-utils.ts similarity index 100% rename from src/lib/crypto-utils.ts rename to packages/utils/src/crypto-utils.ts diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts new file mode 100644 index 000000000..d7b4ff7d5 --- /dev/null +++ b/packages/utils/src/index.ts @@ -0,0 +1,5 @@ +export * from './auth-utils'; +export * from './string'; +export * from './utils'; +export * from './crypto-utils'; +export * from './config-utils'; diff --git a/src/utils/string.ts b/packages/utils/src/string.ts similarity index 94% rename from src/utils/string.ts rename to packages/utils/src/string.ts index 3f047fd4f..56c6fe4fa 100644 --- a/src/utils/string.ts +++ b/packages/utils/src/string.ts @@ -1,5 +1,3 @@ -// @flow - export function spliceURL(...args: string[]): string { return Array.from(args) .reduce((lastResult, current) => lastResult + current) diff --git a/src/lib/utils.ts b/packages/utils/src/utils.ts similarity index 69% rename from src/lib/utils.ts rename to packages/utils/src/utils.ts index b85451224..3173e84c2 100644 --- a/src/lib/utils.ts +++ b/packages/utils/src/utils.ts @@ -1,34 +1,45 @@ import fs from 'fs'; import assert from 'assert'; -import DefaultURL, { URL } from 'url'; +import URL from 'url'; import _ from 'lodash'; -import buildDebug from 'debug'; import semver from 'semver'; import YAML from 'js-yaml'; -import validator from 'validator'; -import memoizee from 'memoizee'; +import { Request } from 'express'; + import sanitizyReadme from '@verdaccio/readme'; +import { + APP_ERROR, + DEFAULT_PORT, + DEFAULT_DOMAIN, + DEFAULT_PROTOCOL, + CHARACTER_ENCODING, + HEADERS, + DIST_TAGS, + DEFAULT_USER, +} from '@verdaccio/dev-commons'; import { Package, Version, Author } from '@verdaccio/types'; -import { Request } from 'express'; -// eslint-disable-next-line max-len -import { getConflict, getBadData, getBadRequest, getInternalError, getUnauthorized, getForbidden, getServiceUnavailable, getNotFound, getCode } from '@verdaccio/commons-api'; -import { generateGravatarUrl, GENERIC_AVATAR } from '../utils/user'; -import { StringValue, AuthorAvatar } from '../../types'; -import { APP_ERROR, DEFAULT_PORT, DEFAULT_DOMAIN, DEFAULT_PROTOCOL, HEADERS, DIST_TAGS, DEFAULT_USER } from './constants'; +import { StringValue } from '@verdaccio/dev-types'; -import { normalizeContributors } from './storage-utils'; +import { + getConflict, + getBadData, + getBadRequest, + getInternalError, + getUnauthorized, + getForbidden, + getServiceUnavailable, + getNotFound, + getCode, +} from '@verdaccio/commons-api'; -import { logger } from './logger'; - -const debug = buildDebug('verdaccio'); +import { IncomingHttpHeaders } from 'http2'; // eslint-disable-next-line @typescript-eslint/no-unused-vars // eslint-disable-next-line @typescript-eslint/no-var-requires -require('pkginfo')(module); -const pkgVersion = module.exports.version; -const pkgName = module.exports.name; -const validProtocols = ['https', 'http']; + +const pkgVersion = '5.0.0'; +const pkgName = 'verdaccio'; export function getUserAgent(): string { assert(_.isString(pkgName)); @@ -119,9 +130,32 @@ export function validateMetadata(object: Package, name: string): Package { return object; } +/** + * Create base url for registry. + * @return {String} base registry url + */ +export function combineBaseUrl(protocol: string, host: string | void, prefix?: string | void): string { + const result = `${protocol}://${host}`; + + const prefixOnlySlash = prefix === '/'; + if (prefix && !prefixOnlySlash) { + if (prefix.endsWith('/')) { + prefix = prefix.slice(0, -1); + } + + if (prefix.startsWith('/')) { + return `${result}${prefix}`; + } + + return prefix; + } + + return result; +} + export function extractTarballFromUrl(url: string): string { // @ts-ignore - return DefaultURL.parse(url).pathname.replace(/^.*\//, ''); + return URL.parse(url).pathname.replace(/^.*\//, ''); } /** @@ -144,25 +178,37 @@ export function convertDistRemoteToLocalTarballUrls(pkg: Package, req: Request, return pkg; } -const memoizedgetPublicUrl = memoizee(getPublicUrl); - /** * Filter a tarball url. * @param {*} uri * @return {String} a parsed url */ -export function getLocalRegistryTarballUri(uri: string, pkgName: string, req: Request, urlPrefix: string | void): string { +export function getLocalRegistryTarballUri( + uri: string, + pkgName: string, + req: Request, + urlPrefix: string | void +): string { const currentHost = req.headers.host; if (!currentHost) { return uri; } const tarballName = extractTarballFromUrl(uri); - const domainRegistry = memoizedgetPublicUrl(urlPrefix || '', req); + const headers = req.headers as IncomingHttpHeaders; + const protocol = getWebProtocol(req.get(HEADERS.FORWARDED_PROTO), req.protocol); + const domainRegistry = combineBaseUrl(protocol, headers.host, urlPrefix); - return `${domainRegistry}${encodeScopedUri(pkgName)}/-/${tarballName}`; + return `${domainRegistry}/${encodeScopedUri(pkgName)}/-/${tarballName}`; } +/** + * Create a tag for a package + * @param {*} data + * @param {*} version + * @param {*} tag + * @return {Boolean} whether a package has been tagged + */ export function tagVersion(data: Package, version: string, tag: StringValue): boolean { if (tag && data[DIST_TAGS][tag] !== version && semver.parse(version, true)) { // valid version - store @@ -240,12 +286,13 @@ export function parseAddress(urlAddress: any): any { * Function filters out bad semver versions and sorts the array. * @return {Array} sorted Array */ -export function semverSort(listVersions: string[]): string[] { +export function semverSort(listVersions: string[], /* logger */): string[] { return ( listVersions - .filter(function (x): boolean { + .filter(function(x): boolean { if (!semver.parse(x, true)) { - logger.warn({ ver: x }, 'ignoring bad version @{ver}'); + // FIXME: logger is always undefined + // logger.warn({ ver: x }, 'ignoring bad version @{ver}'); return false; } return true; @@ -317,8 +364,8 @@ export function parseInterval(interval: any): number { } let result = 0; let last_suffix = Infinity; - interval.split(/\s+/).forEach(function (x): void { - if (!x) { + interval.split(/\s+/).forEach(function(x): void { + if (!x){ return; } const m = x.match(/^((0|[1-9][0-9]*)(\.[0-9]+)?)(ms|s|m|h|d|w|M|y|)$/); @@ -335,19 +382,12 @@ export function parseInterval(interval: any): number { * Detect running protocol (http or https) */ export function getWebProtocol(headerProtocol: string | void, protocol: string): string { - let returnProtocol; - const [, defaultProtocol] = validProtocols; - // HAProxy variant might return http,http with X-Forwarded-Proto if (typeof headerProtocol === 'string' && headerProtocol !== '') { - debug('header protocol: %o', protocol); const commaIndex = headerProtocol.indexOf(','); - returnProtocol = commaIndex > 0 ? headerProtocol.substr(0, commaIndex) : headerProtocol; - } else { - debug('req protocol: %o', headerProtocol); - returnProtocol = protocol; + return commaIndex > 0 ? headerProtocol.substr(0, commaIndex) : headerProtocol; } - return validProtocols.includes(returnProtocol) ? returnProtocol : defaultProtocol; + return protocol; } export function getLatestVersion(pkgInfo: Package): string { @@ -369,12 +409,10 @@ export const ErrorCode = { export function parseConfigFile(configPath: string): any { try { if (/\.ya?ml$/i.test(configPath)) { - return YAML.load(fs.readFileSync(configPath, 'utf-8')); + return YAML.safeLoad(fs.readFileSync(configPath, CHARACTER_ENCODING.UTF8)); } - debug('yaml parsed'); return require(configPath); } catch (e) { - debug('yaml parse failed'); if (e.code !== 'MODULE_NOT_FOUND') { e.message = APP_ERROR.CONFIG_NOT_VALID; } @@ -412,7 +450,7 @@ export function fileExists(path: string): boolean { } export function sortByName(packages: any[], orderAscending: boolean | void = true): string[] { - return packages.slice().sort(function (a, b): number { + return packages.slice().sort(function(a, b): number { const comparatorNames = a.name.toLowerCase() < b.name.toLowerCase(); return orderAscending ? (comparatorNames ? -1 : 1) : comparatorNames ? 1 : -1; @@ -431,63 +469,13 @@ export function deleteProperties(propertiesToDelete: string[], objectItem: any): return objectItem; } -export function addGravatarSupport(pkgInfo: Package, online = true): AuthorAvatar { - const pkgInfoCopy = { ...pkgInfo } as any; - const author: any = _.get(pkgInfo, 'latest.author', null) as any; - const contributors: AuthorAvatar[] = normalizeContributors(_.get(pkgInfo, 'latest.contributors', [])); - const maintainers = _.get(pkgInfo, 'latest.maintainers', []); - - // for author. - if (author && _.isObject(author)) { - const { email } = author as Author; - pkgInfoCopy.latest.author.avatar = generateGravatarUrl(email, online); - } - - if (author && _.isString(author)) { - pkgInfoCopy.latest.author = { - avatar: GENERIC_AVATAR, - email: '', - author, - }; - } - - // for contributors - if (_.isEmpty(contributors) === false) { - pkgInfoCopy.latest.contributors = contributors.map( - (contributor): AuthorAvatar => { - if (isObject(contributor)) { - contributor.avatar = generateGravatarUrl(contributor.email, online); - } else if (_.isString(contributor)) { - contributor = { - avatar: GENERIC_AVATAR, - email: contributor, - name: contributor, - }; - } - - return contributor; - } - ); - } - - // for maintainers - if (_.isEmpty(maintainers) === false) { - pkgInfoCopy.latest.maintainers = maintainers.map((maintainer): void => { - maintainer.avatar = generateGravatarUrl(maintainer.email, online); - return maintainer; - }); - } - - return pkgInfoCopy; -} - /** * parse package readme - markdown/ascii * @param {String} packageName name of package * @param {String} readme package readme * @return {String} converted html template */ -export function parseReadme(packageName: string, readme: string): string | void { +export function parseReadme(packageName: string, readme: string, logger): string | void { if (_.isEmpty(readme) === false) { return sanitizyReadme(readme); } @@ -605,77 +593,3 @@ export function isRelatedToDeprecation(pkgInfo: Package): boolean { } return false; } - -export function validateURL(publicUrl: string | void) { - try { - const parsed = new URL(publicUrl as string); - if (!validProtocols.includes(parsed.protocol.replace(':', ''))) { - throw Error('invalid protocol'); - } - return true; - } catch (err) { - // TODO: add error logger here - return false; - } -} - -export function isHost(url: string = '', options = {}): boolean { - return validator.isURL(url, { - require_host: true, - allow_trailing_dot: false, - require_valid_protocol: false, - // @ts-ignore - require_port: false, - require_tld: false, - ...options, - }); -} - -export function getPublicUrl(url_prefix: string = '', req): string { - if (validateURL(process.env.VERDACCIO_PUBLIC_URL as string)) { - const envURL = new URL(wrapPrefix(url_prefix), process.env.VERDACCIO_PUBLIC_URL as string).href; - debug('public url by env %o', envURL); - return envURL; - } else if (req.get('host')) { - const host = req.get('host'); - if (!isHost(host)) { - throw new Error('invalid host'); - } - const protoHeader = process.env.VERDACCIO_FORWARDED_PROTO ?? HEADERS.FORWARDED_PROTO; - const protocol = getWebProtocol(req.get(protoHeader), req.protocol); - const combinedUrl = combineBaseUrl(protocol, host, url_prefix); - debug('public url by request %o', combinedUrl); - return combinedUrl; - } else { - return '/'; - } -} - -/** - * Create base url for registry. - * @return {String} base registry url - */ -export function combineBaseUrl(protocol: string, host: string, prefix: string = ''): string { - debug('combined protocol %o', protocol); - debug('combined host %o', host); - const newPrefix = wrapPrefix(prefix); - debug('combined prefix %o', newPrefix); - const groupedURI = new URL(wrapPrefix(prefix), `${protocol}://${host}`); - const result = groupedURI.href; - debug('combined url %o', result); - return result; -} - -export function wrapPrefix(prefix: string | void): string { - if (prefix === '' || typeof prefix === 'undefined' || prefix === null) { - return ''; - } else if (!prefix.startsWith('/') && prefix.endsWith('/')) { - return `/${prefix}`; - } else if (!prefix.startsWith('/') && !prefix.endsWith('/')) { - return `/${prefix}/`; - } else if (prefix.startsWith('/') && !prefix.endsWith('/')) { - return `${prefix}/`; - } else { - return prefix; - } -} diff --git a/test/unit/modules/utils/__snapshots__/utils.spec.ts.snap b/packages/utils/test/__snapshots__/utils.spec.ts.snap similarity index 100% rename from test/unit/modules/utils/__snapshots__/utils.spec.ts.snap rename to packages/utils/test/__snapshots__/utils.spec.ts.snap diff --git a/test/unit/modules/utils/config-utils.spec.ts b/packages/utils/test/config-utils.spec.ts similarity index 79% rename from test/unit/modules/utils/config-utils.spec.ts rename to packages/utils/test/config-utils.spec.ts index 245952f64..214e0d775 100644 --- a/test/unit/modules/utils/config-utils.spec.ts +++ b/packages/utils/test/config-utils.spec.ts @@ -1,59 +1,59 @@ import path from 'path'; import _ from 'lodash'; -import { spliceURL } from '../../../../src/utils/string'; -import { parseConfigFile } from '../../../../src/lib/utils'; + +import {PACKAGE_ACCESS, ROLES} from '@verdaccio/dev-commons'; + +import {spliceURL} from '../src/string'; +import {parseConfigFile} from '../src/utils'; import { getMatchedPackagesSpec, hasProxyTo, - normalisePackageAccess, - sanityCheckUplinksProps, + normalisePackageAccess, sanityCheckUplinksProps, uplinkSanityCheck -} from '../../../../src/lib/config-utils'; -import { PACKAGE_ACCESS, ROLES } from '../../../../src/lib/constants'; +} from '../src/config-utils'; describe('Config Utilities', () => { + const parseConfigurationFile = (conf) => { const { name, ext } = path.parse(conf); const format = ext.startsWith('.') ? ext.substring(1) : 'yaml'; - return path.join(__dirname, `../../partials/config/${format}/${name}.${format}`); + return path.join(__dirname, `./partials/config/${format}/${name}.${format}`); }; describe('uplinkSanityCheck', () => { - test('should test basic conversion', () => { - const uplinks = uplinkSanityCheck( - parseConfigFile(parseConfigurationFile('uplink-basic')).uplinks - ); + test('should test basic conversion', ()=> { + const uplinks = uplinkSanityCheck(parseConfigFile(parseConfigurationFile('uplink-basic')).uplinks); expect(Object.keys(uplinks)).toContain('server1'); expect(Object.keys(uplinks)).toContain('server2'); }); - test('should throw error on blacklisted uplink name', () => { - const { uplinks } = parseConfigFile(parseConfigurationFile('uplink-wrong')); + test('should throw error on blacklisted uplink name', ()=> { + const {uplinks} = parseConfigFile(parseConfigurationFile('uplink-wrong')); expect(() => { - uplinkSanityCheck(uplinks); + uplinkSanityCheck(uplinks) }).toThrow('CONFIG: reserved uplink name: anonymous'); }); }); describe('sanityCheckUplinksProps', () => { - test('should fails if url prop is missing', () => { - const { uplinks } = parseConfigFile(parseConfigurationFile('uplink-wrong')); + test('should fails if url prop is missing', ()=> { + const {uplinks} = parseConfigFile(parseConfigurationFile('uplink-wrong')); expect(() => { - sanityCheckUplinksProps(uplinks); + sanityCheckUplinksProps(uplinks) }).toThrow('CONFIG: no url for uplink: none-url'); }); - test('should bypass an empty uplink list', () => { + test('should bypass an empty uplink list', ()=> { // @ts-ignore expect(sanityCheckUplinksProps([])).toHaveLength(0); }); }); describe('normalisePackageAccess', () => { - test('should test basic conversion', () => { - const { packages } = parseConfigFile(parseConfigurationFile('pkgs-basic')); + test('should test basic conversion', ()=> { + const {packages} = parseConfigFile(parseConfigurationFile('pkgs-basic')); const access = normalisePackageAccess(packages); expect(access).toBeDefined(); @@ -64,8 +64,8 @@ describe('Config Utilities', () => { expect(all).toBeDefined(); }); - test('should define an empty publish array even if is not defined in packages', () => { - const { packages } = parseConfigFile(parseConfigurationFile('pkgs-basic-no-publish')); + test('should define an empty publish array even if is not defined in packages', ()=> { + const {packages} = parseConfigFile(parseConfigurationFile('pkgs-basic-no-publish')); const access = normalisePackageAccess(packages); const scoped = access[`${PACKAGE_ACCESS.SCOPE}`]; @@ -77,8 +77,8 @@ describe('Config Utilities', () => { expect(all.publish).toHaveLength(0); }); - test('should define an empty access array even if is not defined in packages', () => { - const { packages } = parseConfigFile(parseConfigurationFile('pkgs-basic-no-access')); + test('should define an empty access array even if is not defined in packages', ()=> { + const {packages} = parseConfigFile(parseConfigurationFile('pkgs-basic-no-access')); const access = normalisePackageAccess(packages); const scoped = access[`${PACKAGE_ACCESS.SCOPE}`]; @@ -90,8 +90,8 @@ describe('Config Utilities', () => { expect(all.access).toHaveLength(0); }); - test('should define an empty proxy array even if is not defined in package', () => { - const { packages } = parseConfigFile(parseConfigurationFile('pkgs-basic-no-proxy')); + test('should define an empty proxy array even if is not defined in package', ()=> { + const {packages} = parseConfigFile(parseConfigurationFile('pkgs-basic-no-proxy')); const access = normalisePackageAccess(packages); const scoped = access[`${PACKAGE_ACCESS.SCOPE}`]; @@ -103,8 +103,8 @@ describe('Config Utilities', () => { expect(all.proxy).toHaveLength(0); }); - test('should test multi user group definition', () => { - const { packages } = parseConfigFile(parseConfigurationFile('pkgs-multi-group')); + test('should test multi user group definition', ()=> { + const {packages} = parseConfigFile(parseConfigurationFile('pkgs-multi-group')); const access = normalisePackageAccess(packages); expect(access).toBeDefined(); @@ -123,10 +123,12 @@ describe('Config Utilities', () => { expect(all.access).toContain('$all'); expect(all.publish).toHaveLength(1); expect(all.publish).toContain('admin'); + }); - test('should normalize deprecated packages into the new ones (backward props compatible)', () => { - const { packages } = parseConfigFile(parseConfigurationFile('deprecated-pkgs-basic')); + + test('should normalize deprecated packages into the new ones (backward props compatible)', ()=> { + const {packages} = parseConfigFile(parseConfigurationFile('deprecated-pkgs-basic')); const access = normalisePackageAccess(packages); expect(access).toBeDefined(); @@ -161,7 +163,7 @@ describe('Config Utilities', () => { expect(all.proxy_access).toBeUndefined(); }); - test('should check not default packages access', () => { + test('should check not default packages access', ()=> { const { packages } = parseConfigFile(parseConfigurationFile('pkgs-empty')); const access = normalisePackageAccess(packages); expect(access).toBeDefined(); @@ -177,12 +179,13 @@ describe('Config Utilities', () => { expect(_.isArray(all.access)).toBeTruthy(); expect(all.publish).toBeDefined(); expect(_.isArray(all.publish)).toBeTruthy(); + }); }); describe('getMatchedPackagesSpec', () => { test('should test basic config', () => { - const { packages } = parseConfigFile(parseConfigurationFile('pkgs-custom')); + const {packages} = parseConfigFile(parseConfigurationFile('pkgs-custom')); // @ts-ignore expect(getMatchedPackagesSpec('react', packages).proxy).toMatch('facebook'); // @ts-ignore @@ -194,7 +197,7 @@ describe('Config Utilities', () => { }); test('should test no ** wildcard on config', () => { - const { packages } = parseConfigFile(parseConfigurationFile('pkgs-nosuper-wildcard-custom')); + const {packages} = parseConfigFile(parseConfigurationFile('pkgs-nosuper-wildcard-custom')); // @ts-ignore expect(getMatchedPackagesSpec('react', packages).proxy).toMatch('facebook'); // @ts-ignore @@ -208,9 +211,7 @@ describe('Config Utilities', () => { describe('hasProxyTo', () => { test('should test basic config', () => { - const packages = normalisePackageAccess( - parseConfigFile(parseConfigurationFile('pkgs-basic')).packages - ); + const packages = normalisePackageAccess(parseConfigFile(parseConfigurationFile('pkgs-basic')).packages); // react expect(hasProxyTo('react', 'facebook', packages)).toBeFalsy(); expect(hasProxyTo('react', 'google', packages)).toBeFalsy(); @@ -225,9 +226,7 @@ describe('Config Utilities', () => { }); test('should test resolve based on custom package access', () => { - const packages = normalisePackageAccess( - parseConfigFile(parseConfigurationFile('pkgs-custom')).packages - ); + const packages = normalisePackageAccess(parseConfigFile(parseConfigurationFile('pkgs-custom')).packages); // react expect(hasProxyTo('react', 'facebook', packages)).toBeTruthy(); expect(hasProxyTo('react', 'google', packages)).toBeFalsy(); @@ -242,9 +241,7 @@ describe('Config Utilities', () => { }); test('should not resolve any proxy', () => { - const packages = normalisePackageAccess( - parseConfigFile(parseConfigurationFile('pkgs-empty')).packages - ); + const packages = normalisePackageAccess(parseConfigFile(parseConfigurationFile('pkgs-empty')).packages); // react expect(hasProxyTo('react', 'npmjs', packages)).toBeFalsy(); expect(hasProxyTo('react', 'npmjs', packages)).toBeFalsy(); @@ -283,13 +280,13 @@ describe('Config Utilities', () => { }); test('parse invalid.json', () => { - expect(function () { + expect(function ( ) { parseConfigFile(parseConfigurationFile('invalid.json')); }).toThrow(/Error/); }); test('parse not-exists.json', () => { - expect(function () { + expect(function ( ) { parseConfigFile(parseConfigurationFile('not-exists.json')); }).toThrow(/Error/); }); @@ -303,13 +300,13 @@ describe('Config Utilities', () => { }); test('parse invalid.js', () => { - expect(function () { + expect(function ( ) { parseConfigFile(parseConfigurationFile('invalid.js')); }).toThrow(/Error/); }); test('parse not-exists.js', () => { - expect(function () { + expect(function ( ) { parseConfigFile(parseConfigurationFile('not-exists.js')); }).toThrow(/Error/); }); diff --git a/test/unit/modules/cli/parseAddress.spec.ts b/packages/utils/test/parseAddress.spec.ts similarity index 90% rename from test/unit/modules/cli/parseAddress.spec.ts rename to packages/utils/test/parseAddress.spec.ts index d2d897322..480f0cd9b 100644 --- a/test/unit/modules/cli/parseAddress.spec.ts +++ b/packages/utils/test/parseAddress.spec.ts @@ -1,6 +1,6 @@ import _ from 'lodash'; -import { parseAddress as parse } from '../../../../src/lib/utils'; -import { DEFAULT_DOMAIN, DEFAULT_PORT } from '../../../../src/lib/constants'; +import {parseAddress as parse} from '@verdaccio/utils'; +import {DEFAULT_DOMAIN, DEFAULT_PORT} from '@verdaccio/dev-commons'; describe('Parse listen address', () => { const useCases: any[] = []; @@ -39,12 +39,12 @@ describe('Parse listen address', () => { expect(parsed).toEqual({ proto, host, - port + port, }); } else { expect(parsed).toEqual({ proto, - path: host + path: host, }); } }); diff --git a/test/unit/modules/utils/parseInterval.spec.ts b/packages/utils/test/parseInterval.spec.ts similarity index 93% rename from test/unit/modules/utils/parseInterval.spec.ts rename to packages/utils/test/parseInterval.spec.ts index 5ea96380f..9d93fab5b 100644 --- a/test/unit/modules/utils/parseInterval.spec.ts +++ b/packages/utils/test/parseInterval.spec.ts @@ -1,5 +1,5 @@ import assert from 'assert'; -import { parseInterval } from '../../../../src/lib/utils'; +import { parseInterval } from '../src/utils'; describe('Parse interval', () => { function addTest(str, res) { diff --git a/test/unit/partials/config/js/default.js b/packages/utils/test/partials/config/js/default.js similarity index 100% rename from test/unit/partials/config/js/default.js rename to packages/utils/test/partials/config/js/default.js diff --git a/test/unit/partials/config/js/invalid.js b/packages/utils/test/partials/config/js/invalid.js similarity index 100% rename from test/unit/partials/config/js/invalid.js rename to packages/utils/test/partials/config/js/invalid.js diff --git a/test/unit/partials/config/json/README.md b/packages/utils/test/partials/config/json/README.md similarity index 100% rename from test/unit/partials/config/json/README.md rename to packages/utils/test/partials/config/json/README.md diff --git a/test/unit/partials/config/json/default.json b/packages/utils/test/partials/config/json/default.json similarity index 100% rename from test/unit/partials/config/json/default.json rename to packages/utils/test/partials/config/json/default.json diff --git a/test/unit/partials/config/json/invalid.json b/packages/utils/test/partials/config/json/invalid.json similarity index 100% rename from test/unit/partials/config/json/invalid.json rename to packages/utils/test/partials/config/json/invalid.json diff --git a/test/unit/partials/config/yaml/deprecated-pkgs-basic.yaml b/packages/utils/test/partials/config/yaml/deprecated-pkgs-basic.yaml similarity index 100% rename from test/unit/partials/config/yaml/deprecated-pkgs-basic.yaml rename to packages/utils/test/partials/config/yaml/deprecated-pkgs-basic.yaml diff --git a/test/unit/partials/config/yaml/pkgs-basic-no-access.yaml b/packages/utils/test/partials/config/yaml/pkgs-basic-no-access.yaml similarity index 100% rename from test/unit/partials/config/yaml/pkgs-basic-no-access.yaml rename to packages/utils/test/partials/config/yaml/pkgs-basic-no-access.yaml diff --git a/test/unit/partials/config/yaml/pkgs-basic-no-proxy.yaml b/packages/utils/test/partials/config/yaml/pkgs-basic-no-proxy.yaml similarity index 100% rename from test/unit/partials/config/yaml/pkgs-basic-no-proxy.yaml rename to packages/utils/test/partials/config/yaml/pkgs-basic-no-proxy.yaml diff --git a/test/unit/partials/config/yaml/pkgs-basic-no-publish.yaml b/packages/utils/test/partials/config/yaml/pkgs-basic-no-publish.yaml similarity index 100% rename from test/unit/partials/config/yaml/pkgs-basic-no-publish.yaml rename to packages/utils/test/partials/config/yaml/pkgs-basic-no-publish.yaml diff --git a/test/unit/partials/config/yaml/pkgs-basic.yaml b/packages/utils/test/partials/config/yaml/pkgs-basic.yaml similarity index 100% rename from test/unit/partials/config/yaml/pkgs-basic.yaml rename to packages/utils/test/partials/config/yaml/pkgs-basic.yaml diff --git a/test/unit/partials/config/yaml/pkgs-custom.yaml b/packages/utils/test/partials/config/yaml/pkgs-custom.yaml similarity index 100% rename from test/unit/partials/config/yaml/pkgs-custom.yaml rename to packages/utils/test/partials/config/yaml/pkgs-custom.yaml diff --git a/test/unit/partials/config/yaml/pkgs-empty.yaml b/packages/utils/test/partials/config/yaml/pkgs-empty.yaml similarity index 100% rename from test/unit/partials/config/yaml/pkgs-empty.yaml rename to packages/utils/test/partials/config/yaml/pkgs-empty.yaml diff --git a/test/unit/partials/config/yaml/pkgs-multi-group.yaml b/packages/utils/test/partials/config/yaml/pkgs-multi-group.yaml similarity index 100% rename from test/unit/partials/config/yaml/pkgs-multi-group.yaml rename to packages/utils/test/partials/config/yaml/pkgs-multi-group.yaml diff --git a/test/unit/partials/config/yaml/pkgs-nosuper-wildcard-custom.yaml b/packages/utils/test/partials/config/yaml/pkgs-nosuper-wildcard-custom.yaml similarity index 100% rename from test/unit/partials/config/yaml/pkgs-nosuper-wildcard-custom.yaml rename to packages/utils/test/partials/config/yaml/pkgs-nosuper-wildcard-custom.yaml diff --git a/test/unit/partials/config/yaml/uplink-basic.yaml b/packages/utils/test/partials/config/yaml/uplink-basic.yaml similarity index 100% rename from test/unit/partials/config/yaml/uplink-basic.yaml rename to packages/utils/test/partials/config/yaml/uplink-basic.yaml diff --git a/test/unit/partials/config/yaml/uplink-wrong.yaml b/packages/utils/test/partials/config/yaml/uplink-wrong.yaml similarity index 100% rename from test/unit/partials/config/yaml/uplink-wrong.yaml rename to packages/utils/test/partials/config/yaml/uplink-wrong.yaml diff --git a/test/unit/partials/readme/ascii.adoc b/packages/utils/test/partials/readme/ascii.adoc similarity index 100% rename from test/unit/partials/readme/ascii.adoc rename to packages/utils/test/partials/readme/ascii.adoc diff --git a/test/unit/partials/readme/markdown.md b/packages/utils/test/partials/readme/markdown.md similarity index 100% rename from test/unit/partials/readme/markdown.md rename to packages/utils/test/partials/readme/markdown.md diff --git a/test/unit/modules/utils/tag.version.spec.ts b/packages/utils/test/tag.version.spec.ts similarity index 87% rename from test/unit/modules/utils/tag.version.spec.ts rename to packages/utils/test/tag.version.spec.ts index bc29647c3..47b363a92 100644 --- a/test/unit/modules/utils/tag.version.spec.ts +++ b/packages/utils/test/tag.version.spec.ts @@ -1,9 +1,6 @@ import assert from 'assert'; -import { tagVersion } from '../../../../src/lib/utils'; +import { tagVersion } from '../src/utils'; -import { setup } from '../../../../src/lib/logger'; - -setup([]); describe('tagVersion', () => { test('add new one', () => { diff --git a/packages/utils/test/utils.spec.ts b/packages/utils/test/utils.spec.ts new file mode 100644 index 000000000..1d0732310 --- /dev/null +++ b/packages/utils/test/utils.spec.ts @@ -0,0 +1,427 @@ +import { + spliceURL, + validateName, + convertDistRemoteToLocalTarballUrls, + parseReadme, + validatePackage, + validateMetadata, + combineBaseUrl, + getVersion, + normalizeDistTags, + getWebProtocol, + getVersionFromTarball, + sortByName, + formatAuthor, + isHTTPProtocol, +} from '../src/index'; + +import { DIST_TAGS, DEFAULT_USER } from '@verdaccio/dev-commons'; +import fs from "fs"; +import path from "path"; + + +const readmeFile = (fileName = 'markdown.md') => { + return fs.readFileSync(path.join(__dirname, `./partials/readme/${fileName}`)); +} + +describe('Utilities', () => { + const buildURI = (host, version) => + `http://${host}/npm_test/-/npm_test-${version}.tgz`; + const fakeHost = 'fake.com'; + const metadata: any = { + name: 'npm_test', + versions: { + '1.0.0': { + dist: { + tarball: 'http://registry.org/npm_test/-/npm_test-1.0.0.tgz' + } + }, + '1.0.1': { + dist: { + tarball: 'http://registry.org/npm_test/-/npm_test-1.0.1.tgz' + } + } + } + }; + + const cloneMetadata = (pkg = metadata) => Object.assign({}, pkg); + + describe('API utilities', () => { + describe('Sort packages', () => { + const packages = [ + { + name: 'ghc' + }, + { + name: 'abc' + }, + { + name: 'zxy' + } + ]; + test('should order ascending', () => { + expect(sortByName(packages)).toEqual([ + { + name: 'abc' + }, + { + name: 'ghc' + }, + { + name: 'zxy' + } + ]); + }); + + test('should order descending', () => { + expect(sortByName(packages, false)).toEqual([ + { + name: 'zxy' + }, + { + name: 'ghc' + }, + { + name: 'abc' + } + ]); + }); + }); + + describe('getWebProtocol', () => { + test('should handle undefined header', () => { + expect(getWebProtocol(undefined, 'http')).toBe('http'); + }); + + test('should handle emtpy string', () => { + expect(getWebProtocol('', 'http')).toBe('http'); + }); + + test('should have header priority over request protocol', () => { + expect(getWebProtocol("https", 'http')).toBe('https'); + }); + + test('should have handle empty protocol', () => { + expect(getWebProtocol("https", '')).toBe('https'); + }); + + describe('getWebProtocol and HAProxy variant', () => { + // https://github.com/verdaccio/verdaccio/issues/695 + + test('should handle http', () => { + expect(getWebProtocol("http,http", 'https')).toBe('http'); + }); + + test('should handle https', () => { + expect(getWebProtocol("https,https", 'http')).toBe('https'); + }); + }); + }); + + describe('convertDistRemoteToLocalTarballUrls', () => { + test('should build a URI for dist tarball based on new domain', () => { + const convertDist = convertDistRemoteToLocalTarballUrls(cloneMetadata(), + { + headers: { + host: fakeHost + }, + // @ts-ignore + get: () => 'http', + protocol: 'http' + }); + expect(convertDist.versions['1.0.0'].dist.tarball).toEqual(buildURI(fakeHost, '1.0.0')); + expect(convertDist.versions['1.0.1'].dist.tarball).toEqual(buildURI(fakeHost, '1.0.1')); + }); + + test('should return same URI whether host is missing', () => { + const convertDist = convertDistRemoteToLocalTarballUrls(cloneMetadata(), + { + headers: {}, + // @ts-ignore + get: () => 'http', + protocol: 'http' + }); + expect(convertDist.versions['1.0.0'].dist.tarball).toEqual(convertDist.versions['1.0.0'].dist.tarball); + }); + }); + + describe('normalizeDistTags', () => { + test('should delete a invalid latest version', () => { + const pkg = cloneMetadata(); + pkg[DIST_TAGS] = { + latest: '20000' + }; + + normalizeDistTags(pkg) + + expect(Object.keys(pkg[DIST_TAGS])).toHaveLength(0); + }); + + test('should define last published version as latest', () => { + const pkg = cloneMetadata(); + pkg[DIST_TAGS] = {}; + + normalizeDistTags(pkg) + + expect(pkg[DIST_TAGS]).toEqual({latest: '1.0.1'}); + }); + + test('should define last published version as latest with a custom dist-tag', () => { + const pkg = cloneMetadata(); + pkg[DIST_TAGS] = { + beta: '1.0.1' + }; + + normalizeDistTags(pkg); + + expect(pkg[DIST_TAGS]).toEqual({beta: '1.0.1', latest: '1.0.1'}); + }); + + test('should convert any array of dist-tags to a plain string', () => { + const pkg = cloneMetadata(); + pkg[DIST_TAGS] = { + latest: ['1.0.1'] + }; + + normalizeDistTags(pkg); + + expect(pkg[DIST_TAGS]).toEqual({latest: '1.0.1'}); + }); + }); + + describe('getVersion', () => { + test('should get the right version', () => { + expect(getVersion(cloneMetadata(), '1.0.0')).toEqual(metadata.versions['1.0.0']); + expect(getVersion(cloneMetadata(), 'v1.0.0')).toEqual(metadata.versions['1.0.0']); + }); + + test('should return nothing on get non existing version', () => { + expect(getVersion(cloneMetadata(), '0')).toBeUndefined(); + expect(getVersion(cloneMetadata(), '2.0.0')).toBeUndefined(); + expect(getVersion(cloneMetadata(), 'v2.0.0')).toBeUndefined(); + expect(getVersion(cloneMetadata(), undefined)).toBeUndefined(); + expect(getVersion(cloneMetadata(), null)).toBeUndefined(); + expect(getVersion(cloneMetadata(), 2)).toBeUndefined(); + }) + }); + + describe('combineBaseUrl', () => { + test('should create a URI', () => { + expect(combineBaseUrl("http", 'domain')).toEqual('http://domain'); + }); + + test('should create a base url for registry', () => { + expect(combineBaseUrl("http", 'domain', '')).toEqual('http://domain'); + expect(combineBaseUrl("http", 'domain', '/')).toEqual('http://domain'); + expect(combineBaseUrl("http", 'domain', '/prefix/')).toEqual('http://domain/prefix'); + expect(combineBaseUrl("http", 'domain', '/prefix/deep')).toEqual('http://domain/prefix/deep'); + expect(combineBaseUrl("http", 'domain', 'only-prefix')).toEqual('only-prefix'); + }); + + }); + + describe('validatePackage', () => { + test('should validate package names', () => { + expect(validatePackage("package-name")).toBeTruthy(); + expect(validatePackage("@scope/package-name")).toBeTruthy(); + }); + + test('should fails on validate package names', () => { + expect(validatePackage("package-name/test/fake")).toBeFalsy(); + expect(validatePackage("@/package-name")).toBeFalsy(); + expect(validatePackage("$%$%#$%$#%#$%$#")).toBeFalsy(); + expect(validatePackage("node_modules")).toBeFalsy(); + expect(validatePackage("__proto__")).toBeFalsy(); + expect(validatePackage("favicon.ico")).toBeFalsy(); + }); + + describe('validateName', () => { + test('should fails with no string', () => { + // intended to fail with Typescript, do not remove + // @ts-ignore + expect(validateName(null)).toBeFalsy(); + // @ts-ignore + expect(validateName(undefined)).toBeFalsy(); + }); + + test('good ones', () => { + expect(validateName('verdaccio')).toBeTruthy(); + expect(validateName('some.weird.package-zzz')).toBeTruthy(); + expect(validateName('old-package@0.1.2.tgz')).toBeTruthy(); + // fix https://github.com/verdaccio/verdaccio/issues/1400 + expect(validateName('-build-infra')).toBeTruthy(); + }); + + test('should be valid using uppercase', () => { + expect(validateName('ETE')).toBeTruthy(); + expect(validateName('JSONStream')).toBeTruthy(); + }); + + test('should fails with path seps', () => { + expect(validateName('some/thing')).toBeFalsy(); + expect(validateName('some\\thing')).toBeFalsy(); + }); + + test('should fail with no hidden files', () => { + expect(validateName('.bin')).toBeFalsy(); + }); + + test('should fails with reserved words', () => { + expect(validateName('favicon.ico')).toBeFalsy(); + expect(validateName('node_modules')).toBeFalsy(); + expect(validateName('__proto__')).toBeFalsy(); + }); + + test('should fails with other options', () => { + expect(validateName('pk g')).toBeFalsy(); + expect(validateName('pk\tg')).toBeFalsy(); + expect(validateName('pk%20g')).toBeFalsy(); + expect(validateName('pk+g')).toBeFalsy(); + expect(validateName('pk:g')).toBeFalsy(); + }); + }); + }); + + describe('validateMetadata', () => { + test('should fills an empty metadata object', () => { + // intended to fail with flow, do not remove + // @ts-ignore + expect(Object.keys(validateMetadata({}))).toContain(DIST_TAGS); + // @ts-ignore + expect(Object.keys(validateMetadata({}))).toContain('versions'); + // @ts-ignore + expect(Object.keys(validateMetadata({}))).toContain('time'); + }); + + test('should fails the assertions is not an object', () => { + expect(function ( ) { + // @ts-ignore + validateMetadata(''); + // @ts-ignore + }).toThrow(expect.hasAssertions()); + }); + + test('should fails the assertions is name does not match', () => { + expect(function ( ) { + // @ts-ignore + validateMetadata({}, "no-name"); + // @ts-ignore + }).toThrow(expect.hasAssertions()); + }); + }); + + describe('getVersionFromTarball', () => { + test('should get the right version', () => { + const simpleName = 'test-name-4.2.12.tgz' + const complexName = 'test-5.6.4-beta.2.tgz' + const otherComplexName = 'test-3.5.0-6.tgz' + expect(getVersionFromTarball(simpleName)).toEqual('4.2.12') + expect(getVersionFromTarball(complexName)).toEqual('5.6.4-beta.2') + expect(getVersionFromTarball(otherComplexName)).toEqual('3.5.0-6') + }) + + test('should don\'n fall at incorrect tarball name', () => { + expect(getVersionFromTarball('incorrectName')).toBeUndefined() + }) + }); + }); + + describe('String utilities', () => { + test('should splice two strings and generate a url', () => { + const url: string = spliceURL('http://domain.com', '/-/static/logo.png'); + + expect(url).toMatch('http://domain.com/-/static/logo.png'); + }); + + test('should splice a empty strings and generate a url', () => { + const url: string = spliceURL('', '/-/static/logo.png'); + + expect(url).toMatch('/-/static/logo.png'); + }); + + test('should check HTTP protocol correctly', () => { + expect(isHTTPProtocol('http://domain.com/-/static/logo.png')).toBeTruthy(); + expect(isHTTPProtocol('https://www.domain.com/-/static/logo.png')).toBeTruthy(); + expect(isHTTPProtocol('//domain.com/-/static/logo.png')).toBeTruthy(); + expect(isHTTPProtocol('file:///home/user/logo.png')).toBeFalsy(); + expect(isHTTPProtocol('file:///F:/home/user/logo.png')).toBeFalsy(); + // Note that uses ftp protocol in src was deprecated in modern browsers + expect(isHTTPProtocol('ftp://1.2.3.4/home/user/logo.png')).toBeFalsy(); + expect(isHTTPProtocol('./logo.png')).toBeFalsy(); + expect(isHTTPProtocol('.\\logo.png')).toBeFalsy(); + expect(isHTTPProtocol('../logo.png')).toBeFalsy(); + expect(isHTTPProtocol('..\\logo.png')).toBeFalsy(); + expect(isHTTPProtocol('../../static/logo.png')).toBeFalsy(); + expect(isHTTPProtocol('..\\..\\static\\logo.png')).toBeFalsy(); + expect(isHTTPProtocol('logo.png')).toBeFalsy(); + expect(isHTTPProtocol('.logo.png')).toBeFalsy(); + expect(isHTTPProtocol('/static/logo.png')).toBeFalsy(); + expect(isHTTPProtocol('F:\\static\\logo.png')).toBeFalsy(); + }); + }); + + describe('parseReadme', () => { + test('should parse makrdown text to html template', () => { + const markdown = '# markdown'; + expect(parseReadme('testPackage', markdown)).toEqual( + '

markdown

' + ); + expect( + parseReadme('testPackage', String(readmeFile('markdown.md'))) + ).toMatchSnapshot(); + }); + + test('should pass for conversion of non-ascii to markdown text', () => { + const simpleText = 'simple text'; + const randomText = '%%%%%**##=='; + const randomTextMarkdown = 'simple text \n # markdown'; + + expect(parseReadme('testPackage', randomText)).toEqual( + '

%%%%%**##==

' + ); + expect(parseReadme('testPackage', simpleText)).toEqual( + '

simple text

' + ); + expect(parseReadme('testPackage', randomTextMarkdown)).toEqual( + '

simple text

\n

markdown

' + ); + }); + + test('should show error for no readme data', () => { + const noData = ''; + const loggerError = jest.fn(); + const logger = { + error: loggerError + }; + expect(parseReadme('testPackage', noData, logger)).toEqual( + '

ERROR: No README data found!

' + ); + expect(loggerError).toHaveBeenCalledWith( + { packageName: 'testPackage' }, + '@{packageName}: No readme found' + ); + }); + }); + + describe('formatAuthor', () => { + test('should check author field different values', () => { + const author = 'verdaccioNpm'; + expect(formatAuthor(author).name).toEqual(author); + }); + test('should check author field for object value', () => { + const user = { + name: 'Verdaccion NPM', + email: 'verdaccio@verdaccio.org', + url: 'https://verdaccio.org' + }; + expect(formatAuthor(user).url).toEqual(user.url); + expect(formatAuthor(user).email).toEqual(user.email); + expect(formatAuthor(user).name).toEqual(user.name); + }); + test('should check author field for other value', () => { + expect(formatAuthor(null).name).toEqual(DEFAULT_USER); + expect(formatAuthor({}).name).toEqual(DEFAULT_USER); + expect(formatAuthor([]).name).toEqual(DEFAULT_USER); + }); + }); +}); diff --git a/packages/utils/tsconfig.json b/packages/utils/tsconfig.json new file mode 100644 index 000000000..6531bd3e4 --- /dev/null +++ b/packages/utils/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./build" + }, + "include": ["src/**/*"], + "exclude": ["src/**/*.test.ts"] +} diff --git a/packages/verdaccio/.babelrc b/packages/verdaccio/.babelrc new file mode 100644 index 000000000..28397a1bd --- /dev/null +++ b/packages/verdaccio/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": [["@verdaccio"]] +} diff --git a/packages/verdaccio/.eslintignore b/packages/verdaccio/.eslintignore new file mode 100644 index 000000000..40f6cf88f --- /dev/null +++ b/packages/verdaccio/.eslintignore @@ -0,0 +1,5 @@ +node_modules +build/ +*.md +*.yaml +test/ diff --git a/packages/verdaccio/README.md b/packages/verdaccio/README.md new file mode 100644 index 000000000..ff9fa361c --- /dev/null +++ b/packages/verdaccio/README.md @@ -0,0 +1,5 @@ +# Verdaccio Core + +```bash +npm install --global verdaccio +``` diff --git a/packages/verdaccio/bin/verdaccio b/packages/verdaccio/bin/verdaccio new file mode 100755 index 000000000..11ee67277 --- /dev/null +++ b/packages/verdaccio/bin/verdaccio @@ -0,0 +1,3 @@ +#!/usr/bin/env node + +require('@verdaccio/cli'); diff --git a/jest.config.js b/packages/verdaccio/jest.config.js similarity index 83% rename from jest.config.js rename to packages/verdaccio/jest.config.js index de75148a8..d122efaf7 100644 --- a/jest.config.js +++ b/packages/verdaccio/jest.config.js @@ -3,15 +3,14 @@ module.exports = { name: 'verdaccio-unit-jest', verbose: true, - collectCoverage: true, - reporters: ["default", ["jest-junit", { outputDirectory: 'reports' }]], + collectCoverage: false, + // reporters: ["default", ["jest-junit", { outputDirectory: 'reports' }]], moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'], - testURL: 'http://localhost', testRegex: '(test/unit.*\\.spec)\\.ts', // Some unit tests rely on data folders that look like packages. This confuses jest-hast-map // when it tries to scan for package.json files. transform: { - '^.+\\.(js|jsx|ts|tsx)$': 'babel-jest' + '^.+\\.[t|j]sx?$': 'babel-jest' }, modulePathIgnorePatterns: [ '/test/unit/partials/mock-store/.*/package.json', @@ -23,9 +22,7 @@ module.exports = { '/scripts', '/.circleci', '/tools', - '/wiki', '/systemd', - '/flow-typed', 'test/unit/partials/mock-store/.*/package.json', '/test/functional/store/.*/package.json', '/build', diff --git a/jestEnvironment.js b/packages/verdaccio/jestEnvironment.js similarity index 100% rename from jestEnvironment.js rename to packages/verdaccio/jestEnvironment.js diff --git a/packages/verdaccio/package.json b/packages/verdaccio/package.json new file mode 100644 index 000000000..964790a59 --- /dev/null +++ b/packages/verdaccio/package.json @@ -0,0 +1,64 @@ +{ + "name": "verdaccio", + "version": "5.0.0-alpha.0", + "description": "A lightweight private npm proxy registry", + "main": "build/index.js", + "types": "build/index.d.ts", + "bin": { + "verdaccio": "./bin/verdaccio" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + }, + "files": [ + "bin", + "build" + ], + "scripts": { + "clean": "rimraf ./build", + "lint": "eslint . --ext .js,.ts", + "test": "cross-env NODE_ENV=test jest --config ./test/jest.config.functional.js --testPathPattern ./test/functional/index* --passWithNoTests", + "format": "prettier --single-quote --trailing-comma none --write \"{src,test}/**/*.ts\"", + "build:types": "tsc --emitDeclarationOnly --declaration true", + "build:js": "cross-env BABEL_ENV=registry babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "build": "npm run build:js && npm run build:types", + "code:build": "cross-env BABEL_ENV=registry babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps inline", + "code:docker-build": "cross-env BABEL_ENV=registry-docker babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\"", + "build:docker": "docker build -t verdaccio/verdaccio:local . --no-cache" + }, + "author": { + "name": "Juan Picado", + "email": "juanpicado19@gmail.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/verdaccio/verdaccio" + }, + "homepage": "https://verdaccio.org", + "dependencies": { + "@verdaccio/cli": "5.0.0-alpha.0" + }, + "keywords": [ + "private", + "package", + "repository", + "registry", + "enterprise", + "modules", + "proxy", + "server", + "verdaccio" + ], + "engines": { + "node": ">=10", + "npm": ">=6" + }, + "preferGlobal": true, + "collective": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio", + "logo": "https://opencollective.com/verdaccio/logo.txt" + }, + "gitHead": "7c246ede52ff717707fcae66dd63fc4abd536982" +} diff --git a/packages/verdaccio/src/index.ts b/packages/verdaccio/src/index.ts new file mode 100644 index 000000000..2968d5931 --- /dev/null +++ b/packages/verdaccio/src/index.ts @@ -0,0 +1,3 @@ +// @verdaccio-cli is only accesible via .bin/ folder + +export { default } from '@verdaccio/node-api'; diff --git a/test/.eslintrc b/packages/verdaccio/test/.eslintrc similarity index 100% rename from test/.eslintrc rename to packages/verdaccio/test/.eslintrc diff --git a/test/README.md b/packages/verdaccio/test/README.md similarity index 100% rename from test/README.md rename to packages/verdaccio/test/README.md diff --git a/test/functional/adduser/adduser.js b/packages/verdaccio/test/functional/adduser/adduser.js similarity index 91% rename from test/functional/adduser/adduser.js rename to packages/verdaccio/test/functional/adduser/adduser.js index ce9adea42..b25a2058a 100644 --- a/test/functional/adduser/adduser.js +++ b/packages/verdaccio/test/functional/adduser/adduser.js @@ -1,4 +1,4 @@ -import {API_ERROR, HTTP_STATUS} from "../../../src/lib/constants"; +import {API_ERROR, HTTP_STATUS} from "@verdaccio/dev-commons"; export default function(server) { describe('npm adduser', () => { diff --git a/test/functional/adduser/logout.js b/packages/verdaccio/test/functional/adduser/logout.js similarity index 79% rename from test/functional/adduser/logout.js rename to packages/verdaccio/test/functional/adduser/logout.js index 89f70ad99..856c23bed 100644 --- a/test/functional/adduser/logout.js +++ b/packages/verdaccio/test/functional/adduser/logout.js @@ -1,4 +1,4 @@ -import {HTTP_STATUS} from "../../../src/lib/constants"; +import {HTTP_STATUS} from "@verdaccio/dev-commons"; export default function(server) { diff --git a/test/functional/basic/basic.ts b/packages/verdaccio/test/functional/basic/basic.ts similarity index 63% rename from test/functional/basic/basic.ts rename to packages/verdaccio/test/functional/basic/basic.ts index 7fa413ebd..796e2f7e2 100644 --- a/test/functional/basic/basic.ts +++ b/packages/verdaccio/test/functional/basic/basic.ts @@ -1,14 +1,9 @@ import fs from 'fs'; import path from 'path'; -import { createTarballHash } from '../../../src/lib/crypto-utils'; -import { HTTP_STATUS, DIST_TAGS } from '../../../src/lib/constants'; -import { - CREDENTIALS, - DOMAIN_SERVERS, - PORT_SERVER_1, - PORT_SERVER_2, - TARBALL -} from '../config.functional'; +import {createTarballHash} from "@verdaccio/utils"; +import { HTTP_STATUS, DIST_TAGS} from "@verdaccio/dev-commons"; + +import {CREDENTIALS, DOMAIN_SERVERS, PORT_SERVER_1, PORT_SERVER_2, TARBALL} from "../config.functional"; import whoIam from './whoIam'; import ping from './ping'; import fixturePkg from '../fixtures/package'; @@ -21,14 +16,14 @@ function getPackage(name) { return fixturePkg(name); } -export default function (server: any, server2: any) { +export default function(server: any, server2: any) { describe('basic test endpoints', () => { + const PKG_NAME = 'testpkg'; const PKG_VERSION = '0.0.1'; - beforeAll(function () { - return server - .auth(CREDENTIALS.user, CREDENTIALS.password) + beforeAll(function() { + return server.auth(CREDENTIALS.user, CREDENTIALS.password) .status(HTTP_STATUS.CREATED) .body_ok(/'test'/); }); @@ -37,6 +32,7 @@ export default function (server: any, server2: any) { ping(server); describe('handling packages', () => { + beforeAll(function () { return server.addPackage(PKG_NAME); }); @@ -45,37 +41,29 @@ export default function (server: any, server2: any) { return server.addPackage('testpkg-single-tarball'); }); - test('creating new package', () => { - /* test for before() */ + test('creating new package', () => {/* test for before() */ }); test('downloading non-existent tarball', () => { - return server - .getTarball(PKG_NAME, TARBALL) + return server.getTarball(PKG_NAME, TARBALL) .status(HTTP_STATUS.NOT_FOUND) .body_error(/no such file/); }); test('uploading incomplete tarball', () => { - return server.putTarballIncomplete( - PKG_NAME, - 'blahblah1', - readfile('../fixtures/binary'), - 3000 - ); + return server.putTarballIncomplete(PKG_NAME, 'blahblah1', readfile('../fixtures/binary'), 3000); }); describe('publishing package', () => { + beforeAll(function () { - return server - .putTarball(PKG_NAME, TARBALL, readfile('../fixtures/binary')) + return server.putTarball(PKG_NAME, TARBALL, readfile('../fixtures/binary')) .status(HTTP_STATUS.CREATED) .body_ok(/.*/); }); beforeAll(function () { - return server - .putTarball('testpkg-single-tarball', 'single', readfile('../fixtures/binary')) + return server.putTarball('testpkg-single-tarball', 'single', readfile('../fixtures/binary')) .status(HTTP_STATUS.CREATED) .body_ok(/.*/); }); @@ -103,16 +91,13 @@ export default function (server: any, server2: any) { // testexp-incomplete test('remove existing single tarball', () => { - return server - .removeSingleTarball('testpkg-single-tarball', 'single') - .status(HTTP_STATUS.CREATED); + return server.removeSingleTarball('testpkg-single-tarball', 'single').status(HTTP_STATUS.CREATED); }); // testexp-incomplete test('downloading newly created tarball', () => { - return server - .getTarball(PKG_NAME, TARBALL) + return server.getTarball(PKG_NAME, TARBALL) .status(200) .then(function (body) { expect(body).toEqual(readfile('../fixtures/binary')); @@ -123,43 +108,36 @@ export default function (server: any, server2: any) { let pkg = getPackage(PKG_NAME); pkg.dist.shasum = createTarballHash().update('fake').digest('hex'); - return server - .putVersion(PKG_NAME, PKG_VERSION, pkg) + return server.putVersion(PKG_NAME, PKG_VERSION, pkg) .status(HTTP_STATUS.BAD_REQUEST) .body_error(/shasum error/); }); describe('publishing version', () => { + beforeAll(function () { const pkg = getPackage(PKG_NAME); - pkg.dist.shasum = createTarballHash() - .update(readfile('../fixtures/binary')) - .digest('hex'); - return server - .putVersion(PKG_NAME, PKG_VERSION, pkg) + pkg.dist.shasum = createTarballHash().update(readfile('../fixtures/binary')).digest('hex'); + return server.putVersion(PKG_NAME, PKG_VERSION, pkg) .status(HTTP_STATUS.CREATED) .body_ok(/published/); }); describe('should download a package', () => { - beforeAll(function () { - return server - .auth(CREDENTIALS.user, CREDENTIALS.password) + beforeAll(function() { + return server.auth(CREDENTIALS.user, CREDENTIALS.password) .status(HTTP_STATUS.CREATED) .body_ok(new RegExp(CREDENTIALS.user)); }); test('should download a newly created package from server1', () => { - return server - .getPackage(PKG_NAME) + return server.getPackage(PKG_NAME) .status(HTTP_STATUS.OK) .then(function (body) { expect(body.name).toEqual(PKG_NAME); expect(body.versions[PKG_VERSION].name).toEqual(PKG_NAME); - expect(body.versions[PKG_VERSION].dist.tarball).toEqual( - `http://${DOMAIN_SERVERS}:${PORT_SERVER_1}/${PKG_NAME}/-/${TARBALL}` - ); + expect(body.versions[PKG_VERSION].dist.tarball).toEqual(`http://${DOMAIN_SERVERS}:${PORT_SERVER_1}/${PKG_NAME}/-/${TARBALL}`); expect(body[DIST_TAGS]).toEqual({ latest: PKG_VERSION }); @@ -167,53 +145,51 @@ export default function (server: any, server2: any) { }); test('should downloading a package from server2', () => { - return server2 - .getPackage(PKG_NAME) + return server2.getPackage(PKG_NAME) .status(HTTP_STATUS.OK) .then(function (body) { expect(body.name).toEqual(PKG_NAME); expect(body.versions[PKG_VERSION].name).toEqual(PKG_NAME); - expect(body.versions[PKG_VERSION].dist.tarball).toEqual( - `http://${DOMAIN_SERVERS}:${PORT_SERVER_2}/${PKG_NAME}/-/${TARBALL}` - ); + expect(body.versions[PKG_VERSION].dist.tarball).toEqual(`http://${DOMAIN_SERVERS}:${PORT_SERVER_2}/${PKG_NAME}/-/${TARBALL}`); expect(body[DIST_TAGS]).toEqual({ latest: PKG_VERSION }); }); }); + }); + }); }); }); describe('handle failures on endpoints', () => { + test('should fails trying to fetch non-existent package', () => { - return server - .getPackage(PKG_NAME) - .status(HTTP_STATUS.NOT_FOUND) - .body_error(/no such package/); + return server.getPackage(PKG_NAME).status(HTTP_STATUS.NOT_FOUND).body_error(/no such package/); }); - test('should fails on publish a version for non existing package', () => { - return server - .putVersion('testpxg', PKG_VERSION, getPackage('testpxg')) - .status(HTTP_STATUS.NOT_FOUND) - .body_error(/no such package/); - }); + test( + 'should fails on publish a version for non existing package', + () => { + return server.putVersion('testpxg', PKG_VERSION, getPackage('testpxg')) + .status(HTTP_STATUS.NOT_FOUND) + .body_error(/no such package/); + } + ); test('should be a package not found', () => { - return server - .putTarball('nonExistingPackage', TARBALL, readfile('../fixtures/binary')) + return server.putTarball('nonExistingPackage', TARBALL, readfile('../fixtures/binary')) .status(HTTP_STATUS.NOT_FOUND) .body_error(/no such/); }); test('should fails on publish package in a bad uplink', () => { - return server - .putPackage('baduplink', getPackage('baduplink')) + return server.putPackage('baduplink', getPackage('baduplink')) .status(HTTP_STATUS.SERVICE_UNAVAILABLE) .body_error(/one of the uplinks is down, refuse to publish/); }); + }); }); } diff --git a/test/functional/basic/ping.ts b/packages/verdaccio/test/functional/basic/ping.ts similarity index 100% rename from test/functional/basic/ping.ts rename to packages/verdaccio/test/functional/basic/ping.ts diff --git a/test/functional/basic/whoIam.ts b/packages/verdaccio/test/functional/basic/whoIam.ts similarity index 100% rename from test/functional/basic/whoIam.ts rename to packages/verdaccio/test/functional/basic/whoIam.ts diff --git a/test/functional/config.functional.js b/packages/verdaccio/test/functional/config.functional.js similarity index 100% rename from test/functional/config.functional.js rename to packages/verdaccio/test/functional/config.functional.js diff --git a/test/functional/fixtures/binary b/packages/verdaccio/test/functional/fixtures/binary similarity index 100% rename from test/functional/fixtures/binary rename to packages/verdaccio/test/functional/fixtures/binary diff --git a/test/functional/fixtures/package.ts b/packages/verdaccio/test/functional/fixtures/package.ts similarity index 100% rename from test/functional/fixtures/package.ts rename to packages/verdaccio/test/functional/fixtures/package.ts diff --git a/test/functional/fixtures/plugins/middlewares.js b/packages/verdaccio/test/functional/fixtures/plugins/middleware-es5/index.js similarity index 100% rename from test/functional/fixtures/plugins/middlewares.js rename to packages/verdaccio/test/functional/fixtures/plugins/middleware-es5/index.js diff --git a/test/functional/fixtures/plugins/middlewares.es6.js b/packages/verdaccio/test/functional/fixtures/plugins/middleware-es6/index.js similarity index 100% rename from test/functional/fixtures/plugins/middlewares.es6.js rename to packages/verdaccio/test/functional/fixtures/plugins/middleware-es6/index.js diff --git a/test/functional/fixtures/plugins/middlewares.uplink.js b/packages/verdaccio/test/functional/fixtures/plugins/uplink-fail/index.js similarity index 100% rename from test/functional/fixtures/plugins/middlewares.uplink.js rename to packages/verdaccio/test/functional/fixtures/plugins/uplink-fail/index.js diff --git a/test/functional/fixtures/publish.json5 b/packages/verdaccio/test/functional/fixtures/publish.json5 similarity index 100% rename from test/functional/fixtures/publish.json5 rename to packages/verdaccio/test/functional/fixtures/publish.json5 diff --git a/test/functional/fixtures/tags.json b/packages/verdaccio/test/functional/fixtures/tags.json similarity index 100% rename from test/functional/fixtures/tags.json rename to packages/verdaccio/test/functional/fixtures/tags.json diff --git a/test/functional/index.spec.ts b/packages/verdaccio/test/functional/index.spec.ts similarity index 82% rename from test/functional/index.spec.ts rename to packages/verdaccio/test/functional/index.spec.ts index 20a303d3e..b968c4edb 100644 --- a/test/functional/index.spec.ts +++ b/packages/verdaccio/test/functional/index.spec.ts @@ -1,9 +1,9 @@ // we need this for notifications -import { setup } from '../../src/lib/logger'; +import { setup } from '@verdaccio/logger'; setup({}); -import { IServerBridge } from '../types'; +// import {IServerBridge} from '../types'; import basic from './basic/basic'; import packageAccess from './package/access'; @@ -29,14 +29,14 @@ import middleware from './plugins/middleware'; import upLinkCache from './uplinks/cache'; import uplinkTimeout from './uplinks/timeout'; -describe('functional test verdaccio', function () { +describe('functional test verdaccio', function() { jest.setTimeout(20000); // @ts-ignore const server1: IServerBridge = global.__SERVERS__[0]; // @ts-ignore - const server2: IServerBridge = global.__SERVERS__[1]; + const server2 = global.__SERVERS__[1]; // @ts-ignore - const server3: IServerBridge = global.__SERVERS__[2]; + const server3 = global.__SERVERS__[2]; // @ts-ignore const app = global.__WEB_SERVER__.app; @@ -65,12 +65,13 @@ describe('functional test verdaccio', function () { adduser(server1); logout(server1); basic(server1, server2); - simpleSearch(server1, server2, app); + simpleSearch(server1, server2, app) + }); -process.on('unhandledRejection', function (err) { - console.error('unhandledRejection', err); - process.nextTick(function () { +process.on('unhandledRejection', function(err) { + console.error("unhandledRejection", err); + process.nextTick(function() { throw err; }); }); diff --git a/test/functional/lib/environment.ts b/packages/verdaccio/test/functional/lib/environment.ts similarity index 56% rename from test/functional/lib/environment.ts rename to packages/verdaccio/test/functional/lib/environment.ts index b1ad51a9f..d44e90aa1 100644 --- a/test/functional/lib/environment.ts +++ b/packages/verdaccio/test/functional/lib/environment.ts @@ -1,12 +1,9 @@ import { yellow, green, blue, magenta } from 'kleur'; import path from 'path'; import NodeEnvironment from 'jest-environment-node'; -import { VerdaccioConfig } from '../../lib/verdaccio-server'; -import VerdaccioProcess from '../../lib/server_process'; -import Server from '../../lib/server'; +import {mockServer} from '@verdaccio/mock'; import ExpressServer from './simple_server'; -import { IServerBridge } from '../../types'; -import { DOMAIN_SERVERS, PORT_SERVER_1, PORT_SERVER_2, PORT_SERVER_3 } from '../config.functional'; +import {PORT_SERVER_1, PORT_SERVER_2, PORT_SERVER_3} from '../config.functional'; const EXPRESS_PORT = 55550; @@ -14,7 +11,7 @@ class FunctionalEnvironment extends NodeEnvironment { public config: any; public constructor(config: any) { - super(config); + super(config) } public async startWeb() { @@ -23,30 +20,30 @@ class FunctionalEnvironment extends NodeEnvironment { return await express.start(EXPRESS_PORT); } + public async setup() { - const SILENCE_LOG = !process.env.VERDACCIO_DEBUG; + // const SILENCE_LOG = !process.env.VERDACCIO_PROCESS_SILENCE || false; // @ts-ignore - const DEBUG_INJECT: boolean = process.env.VERDACCIO_DEBUG_INJECT - ? process.env.VERDACCIO_DEBUG_INJECT - : false; - const forkList: any[] = []; - const serverList: IServerBridge[] = []; + // const DEBUG_INJECT: boolean = process.env.VERDACCIO_DEBUG_INJECT ? process.env.VERDACCIO_DEBUG_INJECT : false; + const forkList: any = []; + const serverList: any = []; const pathStore = path.join(__dirname, '../store'); + const binPath = path.join(__dirname, '../../../bin/verdaccio'); const listServers = [ { port: PORT_SERVER_1, config: '/config-1.yaml', - storage: '/test-storage' + storage: '/server1' }, { port: PORT_SERVER_2, config: '/config-2.yaml', - storage: '/test-storage2' + storage: '/server2' }, { port: PORT_SERVER_3, config: '/config-3.yaml', - storage: '/test-storage3' + storage: '/server3' } ]; console.log(green('Setup Verdaccio Servers')); @@ -55,19 +52,19 @@ class FunctionalEnvironment extends NodeEnvironment { // @ts-ignore this.global.__WEB_SERVER__ = app; - for (let config of listServers) { - const verdaccioConfig = new VerdaccioConfig( - path.join(pathStore, config.storage), - path.join(pathStore, config.config), - `http://${DOMAIN_SERVERS}:${config.port}/`, - config.port - ); - console.log(magenta(`Running registry ${config.config} on port ${config.port}`)); - const server: IServerBridge = new Server(verdaccioConfig.domainPath); - serverList.push(server); - const process = new VerdaccioProcess(verdaccioConfig, server, SILENCE_LOG, DEBUG_INJECT); + for (let serverConf of listServers) { + const storePath = path.join(pathStore, serverConf.storage); + const configPath = path.join(storePath, serverConf.config); + const server = mockServer(serverConf.port, { + storePath, + configPath, + silence: true + }); - const fork = await process.init(); + const fork = await server.init(binPath); + console.log(magenta(`Running registry ${serverConf.config} on port ${serverConf.port}`)); + // @ts-ignore + serverList.push(server.bridge); console.log(blue(`Fork PID ${fork[1]}`)); forkList.push(fork); } @@ -83,7 +80,7 @@ class FunctionalEnvironment extends NodeEnvironment { console.log(yellow('Teardown Test Environment.')); // @ts-ignore if (!this.global.__SERVERS_PROCESS__) { - throw new Error('There are no servers to stop'); + throw new Error("There are no servers to stop"); } // shutdown verdaccio @@ -98,7 +95,7 @@ class FunctionalEnvironment extends NodeEnvironment { // @ts-ignore public runScript(script: string) { - // @ts-ignore + // @ts-ignore return super.runScript(script); } } diff --git a/test/functional/lib/setup.ts b/packages/verdaccio/test/functional/lib/setup.ts similarity index 100% rename from test/functional/lib/setup.ts rename to packages/verdaccio/test/functional/lib/setup.ts diff --git a/test/functional/lib/simple_server.ts b/packages/verdaccio/test/functional/lib/simple_server.ts similarity index 100% rename from test/functional/lib/simple_server.ts rename to packages/verdaccio/test/functional/lib/simple_server.ts diff --git a/test/functional/lib/test.utils.ts b/packages/verdaccio/test/functional/lib/test.utils.ts similarity index 100% rename from test/functional/lib/test.utils.ts rename to packages/verdaccio/test/functional/lib/test.utils.ts diff --git a/packages/verdaccio/test/functional/notifications/notify.ts b/packages/verdaccio/test/functional/notifications/notify.ts new file mode 100644 index 000000000..d76eef07b --- /dev/null +++ b/packages/verdaccio/test/functional/notifications/notify.ts @@ -0,0 +1,156 @@ +import _ from 'lodash'; + +import {HEADERS} from '@verdaccio/dev-commons'; +import {notify} from '@verdaccio/hooks'; +import {DOMAIN_SERVERS, PORT_SERVER_APP} from '../config.functional'; +import { RemoteUser } from '@verdaccio/types'; + +export default function(express) { + const config = { + notify: { + method: 'POST', + headers: [{ + 'Content-Type': HEADERS.JSON + }], + endpoint: `http://${DOMAIN_SERVERS}:${PORT_SERVER_APP}/api/notify`, + content: `{"color":"green","message":"New package published: * {{ name }}*. Publisher name: * {{ publisher.name }} *.","notify":true,"message_format":"text"}` + } + }; + + const publisherInfo: RemoteUser = { + name: "publisher-name-test", + real_groups: [], + groups: [] + }; + + describe('notifications', () => { + + function parseBody(notification) { + const jsonBody = JSON.parse(notification); + + return jsonBody; + } + + beforeAll(function () { + express.post('/api/notify', function (req, res) { + res.send(req.body); + }); + express.post('/api/notify/bad', function (req, res) { + res.status(400); + res.send('bad response'); + }); + }); + + test('notification should be send', done => { + const metadata = { + name: "pkg-test" + }; + + // @ts-ignore + notify(metadata, config, publisherInfo, 'foo').then(function (body) { + const jsonBody = parseBody(body); + expect( + `New package published: * ${metadata.name}*. Publisher name: * ${publisherInfo.name} *.`).toBe(jsonBody.message); + done(); + }, function (err) { + expect(err).toBeDefined(); + done(); + }); + }); + + test('notification should be send single header', done => { + const metadata = { + name: "pkg-test" + }; + + const configMultipleHeader = _.cloneDeep(config); + configMultipleHeader.notify.headers = { + // @ts-ignore + 'Content-Type': HEADERS.JSON + }; + + // @ts-ignore + notify(metadata, configMultipleHeader, publisherInfo).then(function (body) { + const jsonBody = parseBody(body); + expect(`New package published: * ${metadata.name}*. Publisher name: * ${publisherInfo.name} *.`).toBe(jsonBody.message); + done(); + }, function (err) { + expect(err).toBeDefined(); + done(); + }); + }); + + test('notification should be send multiple notifications endpoints', done => { + const metadata = { + name: "pkg-test" + }; + // let notificationsCounter = 0; + + const multipleNotificationsEndpoint = { + notify: [] + }; + + for (let i = 0; i < 10; i++) { + const notificationSettings = _.cloneDeep(config.notify); + // basically we allow al notifications + // @ts-ignore + notificationSettings.packagePattern = /^pkg-test$/; + // notificationSettings.packagePatternFlags = 'i'; + // @ts-ignore + multipleNotificationsEndpoint.notify.push(notificationSettings); + } + + // @ts-ignore + notify(metadata, multipleNotificationsEndpoint, publisherInfo).then(function (body) { + body.forEach(function(notification) { + const jsonBody = parseBody(notification); + expect(`New package published: * ${metadata.name}*. Publisher name: * ${publisherInfo.name} *.`).toBe(jsonBody.message); + }); + done(); + }, function (err) { + expect(err).toBeDefined(); + done(); + }); + }); + + test('notification should fails', done => { + const metadata = { + name: "pkg-test" + }; + const configFail = _.cloneDeep(config); + configFail.notify.endpoint = `http://${DOMAIN_SERVERS}:${PORT_SERVER_APP}/api/notify/bad`; + + // @ts-ignore + notify(metadata, configFail, publisherInfo).then(function () { + expect(false).toBe('This service should fails with status code 400'); + done(); + }, function (err) { + expect(err).toEqual('bad response'); + done(); + }); + }); + + test('publisher property should not be overridden if it exists in metadata', done => { + const metadata = { + name: 'pkg-test', + publisher: { + name: 'existing-publisher-name' + } + }; + + // @ts-ignore + notify(metadata, config, publisherInfo).then( + function(body) { + const jsonBody = parseBody(body); + expect(`New package published: * ${metadata.name}*. Publisher name: * ${metadata.publisher.name} *.`).toBe(jsonBody.message); + done(); + }, + function(err) { + expect(err).toBeDefined(); + done(); + } + ); + }); + + }); +} diff --git a/test/functional/package/access.ts b/packages/verdaccio/test/functional/package/access.ts similarity index 80% rename from test/functional/package/access.ts rename to packages/verdaccio/test/functional/package/access.ts index 16a822751..49c6799d6 100644 --- a/test/functional/package/access.ts +++ b/packages/verdaccio/test/functional/package/access.ts @@ -1,12 +1,14 @@ -import { buildToken } from '../../../src/lib/utils'; -import { API_ERROR, HTTP_STATUS, TOKEN_BASIC } from '../../../src/lib/constants'; -import { CREDENTIALS } from '../config.functional'; +import {buildToken} from "@verdaccio/utils"; +import {API_ERROR, HTTP_STATUS, TOKEN_BASIC} from "@verdaccio/dev-commons"; + +import {CREDENTIALS} from "../config.functional"; import fixturePkg from '../fixtures/package'; -export default function (server) { +export default function(server) { + describe('package access control', () => { const buildAccesToken = (auth) => { - return buildToken(TOKEN_BASIC, `${Buffer.from(auth).toString('base64')}`); + return buildToken(TOKEN_BASIC, `${(Buffer.from(auth).toString('base64'))}`); }; /** @@ -16,16 +18,18 @@ export default function (server) { * @param status {boolean} */ function checkAccess(auth, pkg, status) { - test(`${status ? 'allows' : 'forbids'} access ${auth} to ${pkg}`, () => { - server.authstr = auth ? buildAccesToken(auth) : undefined; - const req = server.getPackage(pkg); + test( + `${(status ? 'allows' : 'forbids')} access ${auth} to ${pkg}`, () => { + server.authstr = auth ? buildAccesToken(auth) : undefined; + const req = server.getPackage(pkg); - if (status === HTTP_STATUS.NOT_FOUND) { - return req.status(HTTP_STATUS.NOT_FOUND).body_error(API_ERROR.NO_PACKAGE); - } else if (status === HTTP_STATUS.FORBIDDEN) { - return req.status(HTTP_STATUS.FORBIDDEN).body_error(API_ERROR.NOT_ALLOWED); + if (status === HTTP_STATUS.NOT_FOUND) { + return req.status(HTTP_STATUS.NOT_FOUND).body_error(API_ERROR.NO_PACKAGE); + } else if (status === HTTP_STATUS.FORBIDDEN) { + return req.status(HTTP_STATUS.FORBIDDEN).body_error(API_ERROR.NOT_ALLOWED); + } } - }); + ); } /** @@ -35,7 +39,7 @@ export default function (server) { * @param status {boolean} */ function checkPublish(auth, pkg, status) { - test(`${status ? 'allows' : 'forbids'} publish ${auth} to ${pkg}`, () => { + test(`${(status ? 'allows' : 'forbids')} publish ${auth} to ${pkg}`, () => { server.authstr = auth ? buildAccesToken(auth) : undefined; const req = server.putPackage(pkg, fixturePkg(pkg)); if (status === HTTP_STATUS.NOT_FOUND) { diff --git a/test/functional/package/gzip.ts b/packages/verdaccio/test/functional/package/gzip.ts similarity index 64% rename from test/functional/package/gzip.ts rename to packages/verdaccio/test/functional/package/gzip.ts index f9c050b6c..fdfaaaf9b 100644 --- a/test/functional/package/gzip.ts +++ b/packages/verdaccio/test/functional/package/gzip.ts @@ -1,23 +1,21 @@ -/* eslint-disable jest/no-standalone-expect */ import zlib from 'zlib'; -import { readFile } from '../lib/test.utils'; -import { HEADER_TYPE, HEADERS, HTTP_STATUS, CHARACTER_ENCODING } from '../../../src/lib/constants'; +import {readFile} from '../lib/test.utils'; +import {HEADER_TYPE, HEADERS, HTTP_STATUS, CHARACTER_ENCODING} from "@verdaccio/dev-commons"; -export default function (server, express) { +export default function(server, express) { const PKG_NAME = 'testexp_gzip'; const PKG_VERSION = '0.0.1'; const PKG_BAD_DATA = 'testexp_baddata'; const VERSION_TOTAL = 4; + describe('test gzip support', () => { - beforeAll(function () { - express.get(`/${PKG_NAME}`, function (req, res) { - const pkg = JSON.parse( - readFile('../fixtures/publish.json5') - .toString('utf-8') - .replace(/__NAME__/g, PKG_NAME) - .replace(/__VERSION__/g, PKG_VERSION) - ); + beforeAll(function() { + express.get(`/${PKG_NAME}`, function(req, res) { + const pkg = JSON.parse(readFile('../fixtures/publish.json5') + .toString(CHARACTER_ENCODING.UTF8) + .replace(/__NAME__/g, PKG_NAME) + .replace(/__VERSION__/g, PKG_VERSION)); // overcoming compress threshold for (let i = 1; i <= VERSION_TOTAL; i++) { @@ -32,7 +30,7 @@ export default function (server, express) { }); }); - express.get(`/${PKG_BAD_DATA}`, function (req, res) { + express.get(`/${PKG_BAD_DATA}`, function(req, res) { expect(req).toBeDefined(); expect(res).toBeDefined(); expect(req.headers[HEADER_TYPE.ACCEPT_ENCODING]).toBe(HEADERS.GZIP); @@ -46,48 +44,43 @@ export default function (server, express) { }); test('should understand non gzipped data from uplink', () => { - return server - .getPackage(PKG_NAME) + return server.getPackage(PKG_NAME) .status(HTTP_STATUS.OK) .response((res) => { expect(res.headers[HEADER_TYPE.CONTENT_ENCODING]).toBeUndefined(); - }) - .then((body) => { + }).then(body => { expect(body.name).toBe(PKG_NAME); expect(Object.keys(body.versions)).toHaveLength(VERSION_TOTAL); }); }); test('should serve gzipped data', () => { - return server - .request({ - uri: `/${PKG_NAME}`, - encoding: null, - headers: { - [HEADER_TYPE.ACCEPT_ENCODING]: HEADERS.GZIP - }, - json: false - }) - .status(HTTP_STATUS.OK) - .response(function (res) { + return server.request({ + uri: `/${PKG_NAME}`, + encoding: null, + headers: { + [HEADER_TYPE.ACCEPT_ENCODING]: HEADERS.GZIP, + }, + json: false, + }).status(HTTP_STATUS.OK) + .response(function(res) { expect(res.headers[HEADER_TYPE.CONTENT_ENCODING]).toBe(HEADERS.GZIP); }) - .then(async function (body) { + .then(async function(body) { // should fails since is zipped - expect(function () { + expect(function() { JSON.parse(body.toString(CHARACTER_ENCODING.UTF8)); }).toThrow(/Unexpected/); // we unzip content and check content - await new Promise(function (resolve) { - zlib.gunzip(body, function (err, buffer) { + await new Promise(function(resolve) { + zlib.gunzip(body, function(err, buffer) { expect(err).toBeNull(); expect(buffer).not.toBeNull(); const unzipedBody = JSON.parse(buffer.toString()); expect(unzipedBody.name).toBe(PKG_NAME); expect(Object.keys(unzipedBody.versions)).toHaveLength(VERSION_TOTAL); - // @ts-ignore resolve(); }); }); diff --git a/test/functional/package/scoped.json b/packages/verdaccio/test/functional/package/scoped.json similarity index 100% rename from test/functional/package/scoped.json rename to packages/verdaccio/test/functional/package/scoped.json diff --git a/packages/verdaccio/test/functional/package/scoped.ts b/packages/verdaccio/test/functional/package/scoped.ts new file mode 100644 index 000000000..16689927a --- /dev/null +++ b/packages/verdaccio/test/functional/package/scoped.ts @@ -0,0 +1,74 @@ +import {DOMAIN_SERVERS, PORT_SERVER_1, PORT_SERVER_2} from '../config.functional'; +import {generateSha} from '../lib/test.utils'; + +import {HEADERS, HTTP_STATUS} from '@verdaccio/dev-commons'; +import {DIST_TAGS} from "@verdaccio/dev-commons"; + +export default function(server, server2) { + const SCOPE = '@test/scoped'; + const PKG_VERSION = '1.0.0'; + const PKG_NAME = 'scoped'; + + describe('test-scoped', () => { + beforeAll(function() { + return server.request({ + uri: '/@test%2fscoped', + headers: { + 'content-type': HEADERS.JSON, + }, + method: 'PUT', + json: require('./scoped.json'), + }).status(HTTP_STATUS.CREATED); + }); + + test('should publish scope package', () => {}); + + describe('should get scoped packages tarball', () => { + const uploadScopedTarBall = (server) => { + return server.getTarball(SCOPE, `${PKG_NAME}-${PKG_VERSION}.tgz`) + .status(HTTP_STATUS.OK) + .then(function(body) { + // not real sha due to utf8 conversion + expect(generateSha(body)).toEqual('6e67b14e2c0e450b942e2bc8086b49e90f594790'); + }); + }; + + test('should be a scoped tarball from server1', () => { + return uploadScopedTarBall(server); + }); + + test('should be a scoped tarball from server2', () => { + return uploadScopedTarBall(server2); + }); + + }); + + describe('should retrieve scoped packages', () => { + const testScopePackage = (server, port) => server.getPackage(SCOPE) + .status(HTTP_STATUS.OK) + .then(function(body) { + expect(body.name).toBe(SCOPE); + expect(body.versions[PKG_VERSION].name).toBe(SCOPE); + expect(body.versions[PKG_VERSION].dist.tarball).toBe( + `http://${DOMAIN_SERVERS}:${port}/@test%2fscoped/-/${PKG_NAME}-${PKG_VERSION}.tgz`); + expect(body[DIST_TAGS]).toEqual({latest: PKG_VERSION}); + }); + + test('scoped package on server1', () => testScopePackage(server, PORT_SERVER_1)); + test('scoped package on server2', () => testScopePackage(server2, PORT_SERVER_2)); + }); + + describe('should retrieve a scoped packages under nginx', () => { + test('should work nginx workaround', () => { + return server2.request({ + uri: '/@test/scoped/1.0.0' + }).status(HTTP_STATUS.OK) + .then(function(body) { + expect(body.name).toEqual(SCOPE); + expect(body.dist.tarball).toEqual( + `http://${DOMAIN_SERVERS}:${PORT_SERVER_2}/@test%2fscoped/-/${PKG_NAME}-${PKG_VERSION}.tgz`); + }); + }); + }); + }); +} diff --git a/test/functional/performance/race.ts b/packages/verdaccio/test/functional/performance/race.ts similarity index 68% rename from test/functional/performance/race.ts rename to packages/verdaccio/test/functional/performance/race.ts index 23354d465..a54b9661b 100644 --- a/test/functional/performance/race.ts +++ b/packages/verdaccio/test/functional/performance/race.ts @@ -1,10 +1,11 @@ import async from 'async'; -import { HTTP_STATUS } from '../../../src/lib/constants'; +import { HTTP_STATUS } from "@verdaccio/dev-commons"; let okTotalSum = 0; -import racePkg from '../fixtures/package'; +import racePkg from '../fixtures/package'; + +export default function(server) { -export default function (server) { describe('should test race condition on publish packages', () => { const MAX_COUNT = 20; const PKG_NAME = 'race'; @@ -13,15 +14,14 @@ export default function (server) { const UNAVAILABLE = 'unavailable'; beforeAll(function () { - return server - .putPackage(PKG_NAME, racePkg(PKG_NAME)) + return server.putPackage(PKG_NAME, racePkg(PKG_NAME)) .status(HTTP_STATUS.CREATED) .body_ok(/created new package/); }); test('creating new package', () => {}); - test('should uploading 10 same versions and ignore 9', (callback) => { + test('should uploading 10 same versions and ignore 9', callback => { let listOfRequest = []; for (let i = 0; i < MAX_COUNT; i++) { // @ts-ignore @@ -30,14 +30,11 @@ export default function (server) { data.rand = Math.random(); let _res; - server - .putVersion(PKG_NAME, '0.0.1', data) - .response(function (res) { - _res = res; - }) - .then(function (body) { - callback(null, [_res, body]); - }); + server.putVersion(PKG_NAME, '0.0.1', data).response(function (res) { + _res = res; + }).then(function (body) { + callback(null, [_res, body]); + }); }); } @@ -60,10 +57,7 @@ export default function (server) { failCount++; } - if ( - resp.statusCode === HTTP_STATUS.SERVICE_UNAVAILABLE && - ~body.error.indexOf(UNAVAILABLE) - ) { + if (resp.statusCode === HTTP_STATUS.SERVICE_UNAVAILABLE && ~body.error.indexOf(UNAVAILABLE)) { failCount++; } }); @@ -77,15 +71,14 @@ export default function (server) { }); }); - test('shoul uploading 10 diff versions and accept 10', (callback) => { + test('shoul uploading 10 diff versions and accept 10', callback => { const listofRequest = []; for (let i = 0; i < MAX_COUNT; i++) { // @ts-ignore listofRequest.push(function (callback) { let _res; - server - .putVersion(PKG_NAME, '0.1.' + String(i), racePkg(PKG_NAME)) + server.putVersion(PKG_NAME, '0.1.' + String(i), racePkg(PKG_NAME)) .response(function (res) { _res = res; }) @@ -111,10 +104,7 @@ export default function (server) { if (response.statusCode === HTTP_STATUS.CONFLICT && ~body.error.indexOf(PRESENT)) { failcount++; } - if ( - response.statusCode === HTTP_STATUS.SERVICE_UNAVAILABLE && - ~body.error.indexOf(UNAVAILABLE) - ) { + if (response.statusCode === HTTP_STATUS.SERVICE_UNAVAILABLE && ~body.error.indexOf(UNAVAILABLE)) { failcount++; } }); @@ -130,14 +120,10 @@ export default function (server) { }); }); - afterAll(function () { - return server - .getPackage(PKG_NAME) - .status(HTTP_STATUS.OK) - .then(function (body) { - // eslint-disable-next-line jest/no-standalone-expect - expect(Object.keys(body.versions)).toHaveLength(okTotalSum); - }); + afterAll(function() { + return server.getPackage(PKG_NAME).status(HTTP_STATUS.OK).then(function (body) { + expect(Object.keys(body.versions)).toHaveLength(okTotalSum); + }); }); }); } diff --git a/test/functional/plugins/auth.ts b/packages/verdaccio/test/functional/plugins/auth.ts similarity index 69% rename from test/functional/plugins/auth.ts rename to packages/verdaccio/test/functional/plugins/auth.ts index cb4f1b9c3..27bfdbc21 100644 --- a/test/functional/plugins/auth.ts +++ b/packages/verdaccio/test/functional/plugins/auth.ts @@ -1,6 +1,6 @@ -import { HTTP_STATUS, API_ERROR } from '../../../src/lib/constants'; +import {HTTP_STATUS, API_ERROR} from "@verdaccio/dev-commons"; -export default function (server2) { +export default function(server2) { // credentials const USER1 = 'authtest'; const USER2 = 'authtest2'; @@ -13,48 +13,39 @@ export default function (server2) { const UNEXISTING_PKG_NAME = 'test-auth-allow'; const requestAuthFail = (user, pass, message, statusCode) => { - return server2 - .auth(user, pass) + return server2.auth(user, pass) .status(statusCode) .body_error(message) - .then(function () { + .then(function() { return server2.whoami(); }) - .then(function (username) { + .then(function(username) { expect(username).toBeUndefined(); }); }; const requestAuthOk = (user, pass, regex, statusCode) => { - return server2 - .auth(user, pass) + return server2.auth(user, pass) .status(statusCode) .body_ok(regex) - .then(function () { + .then(function() { return server2.whoami(); }) - .then(function (username) { + .then(function(username) { expect(username).toBe(user); }); + }; describe('plugin authentication', () => { + describe('test users authentication', () => { + test('should not authenticate user1 with wrong password', () => { - return requestAuthFail( - USER1, - WRONG_PASSWORD, - "i don't like your password", - HTTP_STATUS.UNAUTHORIZED - ); + return requestAuthFail(USER1, WRONG_PASSWORD, 'i don\'t like your password', HTTP_STATUS.UNAUTHORIZED); }); test('should not authenticate user2 with wrong password', () => { - return requestAuthFail( - USER2, - WRONG_PASSWORD, - "i don't like your password", - HTTP_STATUS.UNAUTHORIZED - ); + return requestAuthFail(USER2, WRONG_PASSWORD, 'i don\'t like your password', HTTP_STATUS.UNAUTHORIZED); }); test('should right user2 password handled by plugin', () => { @@ -64,68 +55,63 @@ export default function (server2) { test('should right user1 password handled by plugin', () => { return requestAuthOk(USER1, CORRECT_PASSWORD, new RegExp(USER1), HTTP_STATUS.CREATED); }); + }); describe('test package access authorization', () => { + describe(`access with user ${USER1} on server2`, () => { - beforeAll(function () { - return server2 - .auth(USER1, CORRECT_PASSWORD) + beforeAll(function() { + return server2.auth(USER1, CORRECT_PASSWORD) .status(HTTP_STATUS.CREATED) .body_ok(new RegExp(USER1)); }); test(`should fails (404) on access ${UNEXISTING_PKG_NAME}`, () => { - return server2 - .getPackage(UNEXISTING_PKG_NAME) + return server2.getPackage(UNEXISTING_PKG_NAME) .status(HTTP_STATUS.NOT_FOUND) .body_error(API_ERROR.NO_PACKAGE); }); test(`should fails (403) access ${ONLY_ACCESS_BY_USER_2}`, () => { - return server2 - .getPackage(ONLY_ACCESS_BY_USER_2) + return server2.getPackage(ONLY_ACCESS_BY_USER_2) .status(HTTP_STATUS.FORBIDDEN) .body_error(API_ERROR.NOT_ALLOWED); }); test(`should fails (404) access ${AUTH_PKG_ACCESS_NAME}`, () => { - return server2 - .getPackage(AUTH_PKG_ACCESS_NAME) + return server2.getPackage(AUTH_PKG_ACCESS_NAME) .status(HTTP_STATUS.NOT_FOUND) .body_error(API_ERROR.NO_PACKAGE); }); }); describe(`access with user ${USER2} on server2`, () => { - beforeAll(function () { - return server2 - .auth(USER2, CORRECT_PASSWORD) + beforeAll(function() { + return server2.auth(USER2, CORRECT_PASSWORD) .status(HTTP_STATUS.CREATED) .body_ok(new RegExp(USER2)); }); test(`should fails (403) on access ${UNEXISTING_PKG_NAME}`, () => { - return server2 - .getPackage(UNEXISTING_PKG_NAME) + return server2.getPackage(UNEXISTING_PKG_NAME) .status(HTTP_STATUS.FORBIDDEN) .body_error(API_ERROR.NOT_ALLOWED); }); test(`should fails (403) on access ${DENY_PKG_NAME}`, () => { - return server2 - .getPackage(DENY_PKG_NAME) + return server2.getPackage(DENY_PKG_NAME) .status(HTTP_STATUS.FORBIDDEN) .body_error(API_ERROR.NOT_ALLOWED); }); test(`should fails (404) access ${AUTH_PKG_ACCESS_NAME}`, () => { - return server2 - .getPackage(AUTH_PKG_ACCESS_NAME) + return server2.getPackage(AUTH_PKG_ACCESS_NAME) .status(HTTP_STATUS.NOT_FOUND) .body_error(API_ERROR.NO_PACKAGE); }); }); + }); }); } diff --git a/packages/verdaccio/test/functional/plugins/middleware.ts b/packages/verdaccio/test/functional/plugins/middleware.ts new file mode 100644 index 000000000..18ffeef2c --- /dev/null +++ b/packages/verdaccio/test/functional/plugins/middleware.ts @@ -0,0 +1,23 @@ +import {HTTP_STATUS} from "@verdaccio/dev-commons"; + +export default function (server2) { + describe('test plugin middlewares', () => { + test('should serve the registered route ES5', () => { + return server2.request({ + uri: '/test/route', + method: 'GET' + }) + .status(HTTP_STATUS.OK) + .body_ok('this is a custom route') + }); + + test('should serve the registered route ES6', () => { + return server2.request({ + uri: '/test/route/es6', + method: 'GET' + }) + .status(HTTP_STATUS.OK) + .body_ok('this is a custom route es6') + }); + }) +} diff --git a/test/functional/pre-setup.js b/packages/verdaccio/test/functional/pre-setup.js similarity index 100% rename from test/functional/pre-setup.js rename to packages/verdaccio/test/functional/pre-setup.js diff --git a/test/functional/readme/pkg-no-readme.json b/packages/verdaccio/test/functional/readme/pkg-no-readme.json similarity index 100% rename from test/functional/readme/pkg-no-readme.json rename to packages/verdaccio/test/functional/readme/pkg-no-readme.json diff --git a/test/functional/readme/pkg-readme.json b/packages/verdaccio/test/functional/readme/pkg-readme.json similarity index 100% rename from test/functional/readme/pkg-readme.json rename to packages/verdaccio/test/functional/readme/pkg-readme.json diff --git a/packages/verdaccio/test/functional/readme/readme.ts b/packages/verdaccio/test/functional/readme/readme.ts new file mode 100644 index 000000000..d245e480f --- /dev/null +++ b/packages/verdaccio/test/functional/readme/readme.ts @@ -0,0 +1,51 @@ +import {DEFAULT_NO_README, HTTP_STATUS} from '@verdaccio/dev-commons'; + +import pkgReadmeJSON from './pkg-readme.json'; +import pkgNoReadmeJSON from './pkg-no-readme.json'; + +export default function (server, server2) { + + describe('should test readme', () => { + const README_PKG1 = 'readme-test'; + const README_PKG2 = 'readme-test-no-readme'; + const README_MESSAGE = 'this is a readme'; + + beforeAll(async function() { + await server.putPackage('readme-test', pkgReadmeJSON) + .status(HTTP_STATUS.CREATED); + await server.putPackage(README_PKG2, pkgNoReadmeJSON) + .status(HTTP_STATUS.CREATED); + }); + + test('add pkg', () => {}); + + describe('should check readme file', () => { + const matchReadme = (serverRef, pkgName = README_PKG1, readmeMessage = README_MESSAGE) => { + return serverRef.request({ + uri: `/-/verdaccio/package/readme/${pkgName}` + }).status(HTTP_STATUS.OK).then(function(body) { + + expect(body).toEqual(`

${readmeMessage}

`); + }); + }; + + test('should fetch server2 over uplink server1', () => { + return matchReadme(server, README_PKG1, README_MESSAGE); + }); + + test('should fetch package on local server1', () => { + return matchReadme(server2, README_PKG1, README_MESSAGE); + }); + + test.skip('should fetch not found readme server2 over uplink server1', () => { + return matchReadme(server, README_PKG2, DEFAULT_NO_README); + }); + + test.skip('should fetch not found readme package on local server1', () => { + return matchReadme(server2, README_PKG2, DEFAULT_NO_README); + }); + + + }); + }); +} diff --git a/test/functional/sanity/incomplete.ts b/packages/verdaccio/test/functional/sanity/incomplete.ts similarity index 60% rename from test/functional/sanity/incomplete.ts rename to packages/verdaccio/test/functional/sanity/incomplete.ts index d3c890e12..75a6bdf5c 100644 --- a/test/functional/sanity/incomplete.ts +++ b/packages/verdaccio/test/functional/sanity/incomplete.ts @@ -1,32 +1,34 @@ -import { API_ERROR, HEADER_TYPE, HTTP_STATUS } from '../../../src/lib/constants'; -import { DOMAIN_SERVERS, PORT_SERVER_APP } from '../config.functional'; +import {API_ERROR, HEADER_TYPE, HTTP_STATUS} from '@verdaccio/dev-commons'; + +import {DOMAIN_SERVERS, PORT_SERVER_APP} from '../config.functional'; const defaultPkg = { - name: 'testexp-incomplete', - versions: { + 'name': 'testexp-incomplete', + 'versions': { '0.1.0': { - name: 'testexp_tags', - version: '0.1.0', - dist: { - shasum: 'fake', - tarball: `http://${DOMAIN_SERVERS}:${PORT_SERVER_APP}/testexp-incomplete/-/content-length.tar.gz` - } + 'name': 'testexp_tags', + 'version': '0.1.0', + 'dist': { + 'shasum': 'fake', + 'tarball': `http://${DOMAIN_SERVERS}:${PORT_SERVER_APP}/testexp-incomplete/-/content-length.tar.gz`, + }, }, '0.1.1': { - name: 'testexp_tags', - version: '0.1.1', - dist: { - shasum: 'fake', - tarball: `http://${DOMAIN_SERVERS}:${PORT_SERVER_APP}/testexp-incomplete/-/chunked.tar.gz` - } - } - } + 'name': 'testexp_tags', + 'version': '0.1.1', + 'dist': { + 'shasum': 'fake', + 'tarball': `http://${DOMAIN_SERVERS}:${PORT_SERVER_APP}/testexp-incomplete/-/chunked.tar.gz`, + }, + }, + }, }; export default function (server, express) { const listofCalls = [HEADER_TYPE.CONTENT_LENGTH, 'chunked']; describe('test send incomplete packages', () => { + beforeAll(function () { express.get('/testexp-incomplete', function (_, res) { res.send(defaultPkg); @@ -34,7 +36,7 @@ export default function (server, express) { }); listofCalls.forEach((type) => { - test(`should not store tarballs / ${type}`, (callback) => { + test(`should not store tarballs / ${type}`, callback => { let called; express.get(`/testexp-incomplete/-/${type}.tar.gz`, function (_, response) { if (called) { @@ -55,21 +57,18 @@ export default function (server, express) { }, 10); }); - server - .request({ uri: '/testexp-incomplete/-/' + type + '.tar.gz' }) + server.request({uri: '/testexp-incomplete/-/' + type + '.tar.gz'}) .status(HTTP_STATUS.OK) .response(function (res) { if (type !== 'chunked') { expect(parseInt(res.headers[HEADER_TYPE.CONTENT_LENGTH], 10)).toBe(1e6); } - }) - .then(function (body) { + }).then(function (body) { expect(body).toMatch(/test test test/); }); function cb() { - server - .request({ uri: '/testexp-incomplete/-/' + type + '.tar.gz' }) + server.request({uri: '/testexp-incomplete/-/' + type + '.tar.gz'}) .body_error(API_ERROR.INTERNAL_SERVER_ERROR) .then(function () { callback(); diff --git a/test/functional/sanity/mirror.ts b/packages/verdaccio/test/functional/sanity/mirror.ts similarity index 72% rename from test/functional/sanity/mirror.ts rename to packages/verdaccio/test/functional/sanity/mirror.ts index f06d5f318..12b89c10b 100644 --- a/test/functional/sanity/mirror.ts +++ b/packages/verdaccio/test/functional/sanity/mirror.ts @@ -1,16 +1,16 @@ -import { readFile } from '../lib/test.utils'; -import { API_MESSAGE, HTTP_STATUS } from '../../../src/lib/constants'; -import generatePkg from '../fixtures/package'; -import { TARBALL } from '../config.functional'; +import {API_MESSAGE, HTTP_STATUS} from "@verdaccio/dev-commons"; -const getBinary = () => readFile('../fixtures/binary'); +import generatePkg from '../fixtures/package'; +import {readFile} from '../lib/test.utils'; +import {TARBALL} from '../config.functional'; + +const getBinary = () => readFile('../fixtures/binary'); export default function (server, server2) { + describe('anti-loop testing', () => { test('testing anti-loop', () => { - return server2 - .getPackage('testloop') - .status(HTTP_STATUS.NOT_FOUND) + return server2.getPackage('testloop').status(HTTP_STATUS.NOT_FOUND) .body_error(/no such package/); }); }); @@ -24,8 +24,7 @@ export default function (server, server2) { describe(`testing mirror for ${pkg}`, () => { beforeAll(function () { - return server2 - .putPackage(pkg, generatePkg(pkg)) + return server2.putPackage(pkg, generatePkg(pkg)) .status(HTTP_STATUS.CREATED) .body_ok(API_MESSAGE.PKG_CREATED); }); @@ -34,8 +33,7 @@ export default function (server, server2) { describe(`${pkg}`, () => { beforeAll(function () { - return server2 - .putVersion(pkg, '0.1.1', generatePkg(pkg)) + return server2.putVersion(pkg, '0.1.1', generatePkg(pkg)) .status(HTTP_STATUS.CREATED) .body_ok(/published/); }); @@ -48,8 +46,7 @@ export default function (server, server2) { describe('should put a tarball', () => { beforeAll(function () { - return server2 - .putTarball(pkg, TARBALL, getBinary()) + return server2.putTarball(pkg, TARBALL, getBinary()) .status(HTTP_STATUS.CREATED) .body_ok(/.*/); }); @@ -57,8 +54,7 @@ export default function (server, server2) { test(`should ${prefix} uploading new tarball`, () => {}); test(`should ${prefix} downloading tarball from server2`, () => { - return server2 - .getTarball(pkg, TARBALL) + return server2.getTarball(pkg, TARBALL) .status(HTTP_STATUS.OK) .then(function (body) { expect(body).toEqual(getBinary()); @@ -70,8 +66,7 @@ export default function (server, server2) { }); test(`should ${prefix} downloading tarball from server1`, () => { - return server - .getTarball(pkg, TARBALL) + return server.getTarball(pkg, TARBALL) .status(HTTP_STATUS.OK) .then(function (body) { expect(body).toEqual(getBinary()); diff --git a/test/functional/sanity/nullstorage.ts b/packages/verdaccio/test/functional/sanity/nullstorage.ts similarity index 53% rename from test/functional/sanity/nullstorage.ts rename to packages/verdaccio/test/functional/sanity/nullstorage.ts index 8e510279a..443d5ae94 100644 --- a/test/functional/sanity/nullstorage.ts +++ b/packages/verdaccio/test/functional/sanity/nullstorage.ts @@ -1,86 +1,73 @@ -import { readFile } from '../lib/test.utils'; -import { createTarballHash } from '../../../src/lib/crypto-utils'; -import { API_ERROR, HTTP_STATUS } from '../../../src/lib/constants'; -import { DOMAIN_SERVERS, PORT_SERVER_1, TARBALL } from '../config.functional'; -import generatePkg from '../fixtures/package'; -import { DIST_TAGS } from '../../../src/lib/constants'; +import {createTarballHash} from "@verdaccio/utils"; +import {API_ERROR, HTTP_STATUS} from "@verdaccio/dev-commons"; +import {DIST_TAGS} from '@verdaccio/dev-commons'; + +import {DOMAIN_SERVERS, PORT_SERVER_1, TARBALL} from '../config.functional'; +import generatePkg from '../fixtures/package'; +import {readFile} from '../lib/test.utils'; function getBinary() { return readFile('../fixtures/binary'); } export default function (server, server2) { + const PKG_NAME = 'test-nullstorage2'; const PKG_VERSION = '0.0.1'; // const TARBALL = `${PKG_NAME}-file.name`; describe('should test a scenario when tarball is being fetch from uplink', () => { + describe(`should check whether ${PKG_NAME} is on server1`, () => { test('should fails on fetch non-existent package on server1', () => { - return server - .getPackage('test-nullstorage-nonexist') - .status(HTTP_STATUS.NOT_FOUND) + return server.getPackage('test-nullstorage-nonexist').status(HTTP_STATUS.NOT_FOUND) .body_error(API_ERROR.NO_PACKAGE); }); }); describe(`should check whether ${PKG_NAME} is on server2`, () => { - beforeAll(function () { + beforeAll(function() { return server2.addPackage(PKG_NAME); }); - test('should create a new package on server2', () => { - /* test for before() */ - }); + test('should create a new package on server2', () => {/* test for before() */}); test('should fails on download a non existent tarball from server1', () => { - return server - .getTarball(PKG_NAME, TARBALL) + return server.getTarball(PKG_NAME, TARBALL) .status(HTTP_STATUS.NOT_FOUND) .body_error(/no such file/); }); describe(`should succesfully publish ${PKG_NAME} package on server2`, () => { - beforeAll(function () { - return server2 - .putTarball(PKG_NAME, TARBALL, getBinary()) - .status(HTTP_STATUS.CREATED) - .body_ok(/.*/); + beforeAll(function() { + return server2.putTarball(PKG_NAME, TARBALL, getBinary()).status(HTTP_STATUS.CREATED).body_ok(/.*/); }); - beforeAll(function () { + beforeAll(function() { let pkg = generatePkg(PKG_NAME); pkg.dist.shasum = createTarballHash().update(getBinary()).digest('hex'); - return server2 - .putVersion(PKG_NAME, PKG_VERSION, pkg) - .status(HTTP_STATUS.CREATED) - .body_ok(/published/); + return server2.putVersion(PKG_NAME, PKG_VERSION, pkg) + .status(HTTP_STATUS.CREATED).body_ok(/published/); }); - test(`should publish a new version for ${PKG_NAME} on server 2`, () => { - /* test for before() */ - }); + test(`should publish a new version for ${PKG_NAME} on server 2`, () => {/* test for before() */}); test(`should fetch the newly created published tarball for ${PKG_NAME} from server1 on server2`, () => { - return server - .getTarball(PKG_NAME, TARBALL) + return server.getTarball(PKG_NAME, TARBALL) .status(HTTP_STATUS.OK) - .then(function (body) { + .then(function(body) { expect(body).toEqual(getBinary()); }); }); test(`should fetch metadata for ${PKG_NAME} match from server1`, () => { - return server - .getPackage(PKG_NAME) + return server.getPackage(PKG_NAME) .status(HTTP_STATUS.OK) - .then(function (body) { + .then(function(body) { expect(body.name).toBe(PKG_NAME); expect(body.versions[PKG_VERSION].name).toBe(PKG_NAME); - expect(body.versions[PKG_VERSION].dist.tarball).toBe( - `http://${DOMAIN_SERVERS}:${PORT_SERVER_1}/${PKG_NAME}/-/${TARBALL}` - ); - expect(body[DIST_TAGS]).toEqual({ latest: PKG_VERSION }); + expect(body.versions[PKG_VERSION].dist.tarball).toBe(`http://${DOMAIN_SERVERS}:${PORT_SERVER_1}/${PKG_NAME}/-/${TARBALL}`); + expect(body[DIST_TAGS]).toEqual({latest: PKG_VERSION}); }); }); }); diff --git a/packages/verdaccio/test/functional/sanity/racycrash.ts b/packages/verdaccio/test/functional/sanity/racycrash.ts new file mode 100644 index 000000000..8a750e89c --- /dev/null +++ b/packages/verdaccio/test/functional/sanity/racycrash.ts @@ -0,0 +1,67 @@ +import {DOMAIN_SERVERS, PORT_SERVER_APP} from '../config.functional'; +import {API_ERROR, HEADER_TYPE, HTTP_STATUS} from '@verdaccio/dev-commons'; + +export default function(server, express) { + + describe('shoul test for unexpected client hangs', () => { + let handleResponseTarball; + + beforeAll(function() { + express.get('/testexp-racycrash', function(request, response) { + response.send({ + 'name': 'testexp-racycrash', + 'versions': { + '0.1.0': { + 'name': 'testexp_tags', + 'version': '0.1.0', + 'dist': { + 'shasum': 'fake', + 'tarball': `http://${DOMAIN_SERVERS}:${PORT_SERVER_APP}/testexp-racycrash/-/test.tar.gz`, + }, + }, + }, + }); + }); + + express.get('/testexp-racycrash/-/test.tar.gz', function(request, response) { + handleResponseTarball(response); + }); + }); + + test('should not crash on error if client disconnects', callback => { + handleResponseTarball = function(res) { + res.header(HEADER_TYPE.CONTENT_LENGTH, 1e6); + res.write('test test test'); + setTimeout(function() { + res.write('-'); + // destroy the connection + res.socket.destroy(); + cb(); + }, HTTP_STATUS.OK); + }; + + server.request({uri: '/testexp-racycrash/-/test.tar.gz'}) + .then(function(body) { + expect(body).toEqual('test test test'); + }); + + function cb() { + // test for NOT crashing + server.request({uri: '/testexp-racycrash'}) + .status(HTTP_STATUS.OK) + .then(function() { + callback(); + }); + } + }); + + test('should not store tarball', () => { + handleResponseTarball = function(res) { + res.socket.destroy(); + }; + + return server.request({uri: '/testexp-racycrash/-/test.tar.gz'}) + .body_error(API_ERROR.INTERNAL_SERVER_ERROR); + }); + }); +} diff --git a/test/functional/sanity/security.ts b/packages/verdaccio/test/functional/sanity/security.ts similarity index 56% rename from test/functional/sanity/security.ts rename to packages/verdaccio/test/functional/sanity/security.ts index 1caec5b09..b707433e3 100644 --- a/test/functional/sanity/security.ts +++ b/packages/verdaccio/test/functional/sanity/security.ts @@ -1,76 +1,67 @@ import _ from 'lodash'; -import { HTTP_STATUS } from '../../../src/lib/constants'; +import {HTTP_STATUS} from '@verdaccio/dev-commons'; + +export default function(server) { -export default function (server) { describe('should test security on endpoints', () => { beforeAll(function () { return server.addPackage('testpkg-sec'); }); test('should fails on fetch bad pkg #1', () => { - return server - .getPackage('__proto__') + return server.getPackage('__proto__') .status(HTTP_STATUS.FORBIDDEN) .body_error(/invalid package/); }); test('should fails on fetch bad pkg #2', () => { - return server - .getPackage('__proto__') + return server.getPackage('__proto__') .status(HTTP_STATUS.FORBIDDEN) .body_error(/invalid package/); }); test('should do not fails on __proto__, connect stuff', () => { - return server.request({ uri: '/testpkg-sec?__proto__=1' }).then(function (body) { - // test for NOT outputting stack trace - expect(_.isNil(body) || _.isObject(body) || body.indexOf('node_modules')).toBeTruthy(); + return server.request({uri: '/testpkg-sec?__proto__=1'}) + .then(function (body) { + // test for NOT outputting stack trace + expect(_.isNil(body) || _.isObject(body) || body.indexOf('node_modules')).toBeTruthy(); - // test for NOT crashing - return server.request({ uri: '/testpkg-sec' }).status(HTTP_STATUS.OK); - }); + // test for NOT crashing + return server.request({uri: '/testpkg-sec'}).status(HTTP_STATUS.OK); + }); }); test('should fails and do not return __proto__ as an attachment', () => { - return server - .request({ uri: '/testpkg-sec/-/__proto__' }) + return server.request({uri: '/testpkg-sec/-/__proto__'}) .status(HTTP_STATUS.FORBIDDEN) .body_error(/invalid filename/); }); test('should fails on fetch silly things - reading #1', () => { - return server - .request({ uri: '/testpkg-sec/-/../../../../../../../../etc/passwd' }) + return server.request({uri: '/testpkg-sec/-/../../../../../../../../etc/passwd'}) .status(HTTP_STATUS.NOT_FOUND); }); test('should fails on fetch silly things - reading #2', () => { - return server - .request({ - uri: - '/testpkg-sec/-/%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2fetc%2fpasswd' - }) + return server.request({uri: '/testpkg-sec/-/%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2fetc%2fpasswd'}) .status(HTTP_STATUS.FORBIDDEN) .body_error(/invalid filename/); }); test('should fails on fetch silly things - writing #1', () => { - return server - .putTarball('testpkg-sec', '__proto__', '{}') + return server.putTarball('testpkg-sec', '__proto__', '{}') .status(HTTP_STATUS.FORBIDDEN) .body_error(/invalid filename/); }); test('should fails on fetch silly things - writing #3', () => { - return server - .putTarball('testpkg-sec', 'node_modules', '{}') + return server.putTarball('testpkg-sec', 'node_modules', '{}') .status(HTTP_STATUS.FORBIDDEN) .body_error(/invalid filename/); }); test('should fails on fetch silly things - writing #4', () => { - return server - .putTarball('testpkg-sec', '../testpkg.tgz', '{}') + return server.putTarball('testpkg-sec', '../testpkg.tgz', '{}') .status(HTTP_STATUS.FORBIDDEN) .body_error(/invalid filename/); }); diff --git a/test/functional/scenarios/gh29.ts b/packages/verdaccio/test/functional/scenarios/gh29.ts similarity index 66% rename from test/functional/scenarios/gh29.ts rename to packages/verdaccio/test/functional/scenarios/gh29.ts index 49b5135b6..fb65d3f96 100644 --- a/test/functional/scenarios/gh29.ts +++ b/packages/verdaccio/test/functional/scenarios/gh29.ts @@ -1,12 +1,13 @@ import fs from 'fs'; import path from 'path'; -import { TARBALL } from '../config.functional'; -import { HTTP_STATUS } from '../../../src/lib/constants'; -import { createTarballHash } from '../../../src/lib/crypto-utils'; +import {HTTP_STATUS} from "@verdaccio/dev-commons"; +import {createTarballHash} from "@verdaccio/utils"; + +import {TARBALL} from '../config.functional'; import requirePackage from '../fixtures/package'; function readfile(filePath) { - const folder = path.join(__dirname, filePath); + const folder = path.join(__dirname , filePath); return fs.readFileSync(folder); } @@ -17,17 +18,15 @@ const pkgName = 'testpkg-gh29'; export default function (server, server2) { describe('pkg-gh29 #1', () => { test('downloading non-existent tarball #1 / srv2', () => { - return server2 - .getTarball(pkgName, TARBALL) + return server2.getTarball(pkgName, TARBALL) .status(HTTP_STATUS.NOT_FOUND) .body_error(/no such package/); }); }); describe('pkg-gh29 #2', () => { - beforeAll(function () { - return server - .putPackage(pkgName, requirePackage(pkgName)) + beforeAll(function() { + return server.putPackage(pkgName, requirePackage(pkgName)) .status(HTTP_STATUS.CREATED) .body_ok(/created new package/); }); @@ -35,16 +34,14 @@ export default function (server, server2) { test('creating new package / srv1', () => {}); test('downloading non-existent tarball #2 / srv2', () => { - return server2 - .getTarball(pkgName, TARBALL) + return server2.getTarball(pkgName, TARBALL) .status(HTTP_STATUS.NOT_FOUND) .body_error(/no such file available/); }); describe('tarball', () => { - beforeAll(function () { - return server - .putTarball(pkgName, TARBALL, readfile(binary)) + beforeAll(function() { + return server.putTarball(pkgName, TARBALL, readfile(binary)) .status(HTTP_STATUS.CREATED) .body_ok(/.*/); }); @@ -52,11 +49,10 @@ export default function (server, server2) { test('uploading new tarball / srv1', () => {}); describe('pkg version', () => { - beforeAll(function () { + beforeAll(function() { const pkg = requirePackage(pkgName); pkg.dist.shasum = createTarballHash().update(readfile(binary)).digest('hex'); - return server - .putVersion(pkgName, '0.0.1', pkg) + return server.putVersion(pkgName, '0.0.1', pkg) .status(HTTP_STATUS.CREATED) .body_ok(/published/); }); @@ -64,10 +60,9 @@ export default function (server, server2) { test('uploading new package version / srv1', () => {}); test('downloading newly created tarball / srv2', () => { - return server2 - .getTarball(pkgName, TARBALL) + return server2.getTarball(pkgName, TARBALL) .status(HTTP_STATUS.OK) - .then(function (body) { + .then(function(body) { expect(body).toEqual(readfile(binary)); }); }); diff --git a/test/functional/search/search.json b/packages/verdaccio/test/functional/search/search.json similarity index 100% rename from test/functional/search/search.json rename to packages/verdaccio/test/functional/search/search.json diff --git a/packages/verdaccio/test/functional/search/simple.search.ts b/packages/verdaccio/test/functional/search/simple.search.ts new file mode 100644 index 000000000..df1817d8b --- /dev/null +++ b/packages/verdaccio/test/functional/search/simple.search.ts @@ -0,0 +1,63 @@ +import {API_MESSAGE, HTTP_STATUS} from '@verdaccio/dev-commons'; +import pkgExample from './search.json'; + +export default function(server, server2, express) { + + describe('should test search a published package', () => { + const PKG_NAME = 'testpkg-search'; + + beforeAll(function() { + return server.putPackage(PKG_NAME, pkgExample) + .status(HTTP_STATUS.CREATED) + .body_ok(API_MESSAGE.PKG_CREATED); + }); + + describe('should test simple search', () => { + const check = (medatada) => { + medatada[PKG_NAME].time.modified = '2014-10-02T07:07:51.000Z'; + expect(medatada[PKG_NAME]).toEqual( + { + 'name': PKG_NAME, + 'description': '', + 'author': '', + 'license': 'ISC', + 'dist-tags': { + latest: '0.0.1' + }, + 'maintainers': [{ + name: 'alex', + email: 'user@domain.com' + }], + 'readmeFilename': '', + 'time': { + modified: '2014-10-02T07:07:51.000Z' + }, + 'versions': { + "0.0.1": "latest" + }, + 'repository': { + type: 'git', url: ''} + }); + }; + + beforeAll(function() { + express.get('/-/all', (req, res) => { + res.send({}); + }); + }); + + test('server1 - search', () => { + return server.request({uri: '/-/all'}) + .status(HTTP_STATUS.OK) + .then(check); + }); + + test('server2 - search', () => { + return server2.request({uri: '/-/all'}) + .status(HTTP_STATUS.OK) + .then(check); + }); + + }); + }); +} diff --git a/test/functional/store/config-1.yaml b/packages/verdaccio/test/functional/store/server1/config-1.yaml similarity index 91% rename from test/functional/store/config-1.yaml rename to packages/verdaccio/test/functional/store/server1/config-1.yaml index d5fa343e3..1e1bcd9bb 100644 --- a/test/functional/store/config-1.yaml +++ b/packages/verdaccio/test/functional/store/server1/config-1.yaml @@ -1,5 +1,7 @@ storage: ./test-storage +plugins: ./test/functional/fixtures/plugins + max_users: 2 web: @@ -7,8 +9,8 @@ web: title: verdaccio-server-1 middlewares: - ../fixtures/plugins/middlewares.uplink: - message: provides uplink mocking (e.g. simulates socket timeout) + uplink-fail: + # message: provides uplink mocking (e.g. simulates socket timeout) auth: auth-memory: @@ -29,7 +31,8 @@ uplinks: baduplink: url: http://localhost:55666/ -logs: { type: stdout, format: pretty, level: trace } +logs: + - { type: stdout, format: pretty, level: info } packages: '@test/*': diff --git a/packages/verdaccio/test/functional/store/server1/mock/store/.gitkeep b/packages/verdaccio/test/functional/store/server1/mock/store/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/test/functional/store/config-2.yaml b/packages/verdaccio/test/functional/store/server2/config-2.yaml similarity index 95% rename from test/functional/store/config-2.yaml rename to packages/verdaccio/test/functional/store/server2/config-2.yaml index 8e8edc4fa..82c80e46f 100644 --- a/test/functional/store/config-2.yaml +++ b/packages/verdaccio/test/functional/store/server2/config-2.yaml @@ -1,5 +1,7 @@ storage: ./test-storage2 +plugins: ./test/functional/fixtures/plugins + uplinks: server1: url: http://localhost:55551/ @@ -10,10 +12,10 @@ web: title: verdaccio-server-2 middlewares: - ../fixtures/plugins/middlewares: - message: this is a custom route - ../fixtures/plugins/middlewares.es6: + middleware-es6: message: this is a custom route es6 + middleware-es5: + message: this is a custom route max_users: 3 diff --git a/packages/verdaccio/test/functional/store/server2/mock/store/.gitkeep b/packages/verdaccio/test/functional/store/server2/mock/store/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/test/functional/store/config-3.yaml b/packages/verdaccio/test/functional/store/server3/config-3.yaml similarity index 93% rename from test/functional/store/config-3.yaml rename to packages/verdaccio/test/functional/store/server3/config-3.yaml index 2daee6f31..5b14c22bf 100644 --- a/test/functional/store/config-3.yaml +++ b/packages/verdaccio/test/functional/store/server3/config-3.yaml @@ -1,5 +1,7 @@ storage: ./test-storage3 +plugins: ./test/functional/fixtures/plugins + web: enable: true title: verdaccio-server-3 diff --git a/packages/verdaccio/test/functional/store/server3/mock/store/.gitkeep b/packages/verdaccio/test/functional/store/server3/mock/store/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/test/functional/tags/addtag.ts b/packages/verdaccio/test/functional/tags/addtag.ts similarity index 60% rename from test/functional/tags/addtag.ts rename to packages/verdaccio/test/functional/tags/addtag.ts index f154b490d..1de80d882 100644 --- a/test/functional/tags/addtag.ts +++ b/packages/verdaccio/test/functional/tags/addtag.ts @@ -1,56 +1,47 @@ -import { readFile } from '../lib/test.utils'; -import { API_ERROR, HTTP_STATUS } from '../../../src/lib/constants'; +import {API_ERROR, HTTP_STATUS, CHARACTER_ENCODING} from "@verdaccio/dev-commons"; + +import {readFile} from '../lib/test.utils'; const readTags = () => readFile('../fixtures/publish.json5'); -export default function (server) { +export default function(server) { + describe('should test add tag', () => { + const PKG_NAME = 'testpkg-tag'; const PKG_VERSION = '0.0.1'; test('should fails on add tag to non existing package', () => { - return server - .addTag(PKG_NAME, 'tagtagtag', PKG_VERSION) - .status(HTTP_STATUS.NOT_FOUND) - .body_error(API_ERROR.NO_PACKAGE); + return server.addTag(PKG_NAME, 'tagtagtag', PKG_VERSION) + .status(HTTP_STATUS.NOT_FOUND).body_error(API_ERROR.NO_PACKAGE); }); describe('should test add tag to a package', () => { - beforeAll(function () { - return server - .putPackage( - PKG_NAME, - JSON.parse( - readTags() - .toString('utf-8') - .replace(/__NAME__/g, PKG_NAME) - .replace(/__VERSION__/g, PKG_VERSION) - ) - ) - .status(HTTP_STATUS.CREATED); + beforeAll(function() { + return server.putPackage(PKG_NAME, + JSON.parse(readTags().toString(CHARACTER_ENCODING.UTF8).replace(/__NAME__/g, PKG_NAME) + .replace(/__VERSION__/g, PKG_VERSION)) + ).status(HTTP_STATUS.CREATED); }); describe('should test valid formats tags', () => { test('should fails on add a tag that do not exist', () => { - return server - .addTag(PKG_NAME, 'tagtagtag', '4.0.0-no-exist') + return server.addTag(PKG_NAME, 'tagtagtag', '4.0.0-no-exist') .status(HTTP_STATUS.NOT_FOUND) .body_error(API_ERROR.VERSION_NOT_EXIST); }); test('should add tag succesfully minor version', () => { - return server - .addTag(PKG_NAME, 'tagtagtag', PKG_VERSION) + return server.addTag(PKG_NAME, 'tagtagtag', PKG_VERSION) .status(HTTP_STATUS.CREATED) .body_ok(/tagged/); }); }); describe('should test handle invalid tag and version names', () => { - const INVALID_TAG = 'tag/tag/tag'; - const handleInvalidTag = function (tag, version) { - return server - .addTag(PKG_NAME, tag, version) + const INVALID_TAG ='tag/tag/tag'; + const handleInvalidTag = function(tag, version) { + return server.addTag(PKG_NAME, tag, version) .status(HTTP_STATUS.FORBIDDEN) .body_error(/invalid tag/); }; diff --git a/test/functional/tags/dist-tags-merge.json b/packages/verdaccio/test/functional/tags/dist-tags-merge.json similarity index 100% rename from test/functional/tags/dist-tags-merge.json rename to packages/verdaccio/test/functional/tags/dist-tags-merge.json diff --git a/test/functional/tags/dist-tags-merge.ts b/packages/verdaccio/test/functional/tags/dist-tags-merge.ts similarity index 63% rename from test/functional/tags/dist-tags-merge.ts rename to packages/verdaccio/test/functional/tags/dist-tags-merge.ts index 4dacb3d06..c57ca6cc3 100644 --- a/test/functional/tags/dist-tags-merge.ts +++ b/packages/verdaccio/test/functional/tags/dist-tags-merge.ts @@ -1,53 +1,50 @@ -import { generateSha } from '../lib/test.utils'; -import { API_MESSAGE, HTTP_STATUS } from '../../../src/lib/constants'; -import { DOMAIN_SERVERS, PORT_SERVER_1, PORT_SERVER_2, PORT_SERVER_3 } from '../config.functional'; -import { DIST_TAGS } from '../../../src/lib/constants'; +import {API_MESSAGE, HTTP_STATUS} from '@verdaccio/dev-commons'; +import {DIST_TAGS} from '@verdaccio/dev-commons'; + +import {DOMAIN_SERVERS, PORT_SERVER_1, PORT_SERVER_2, PORT_SERVER_3} from '../config.functional'; +import {generateSha} from '../lib/test.utils'; import pkgExample from './dist-tags-merge.json'; -export default function (server, server2, server3) { +export default function(server, server2, server3) { + describe('should test preserve tags when publishing something', () => { const PKG_NAME = 'testpkg-preserve'; const PKG_VERSION = '0.0.1'; - beforeAll(function () { - return server - .putPackage(PKG_NAME, pkgExample) + beforeAll(function() { + return server.putPackage(PKG_NAME, pkgExample) .status(HTTP_STATUS.CREATED) .body_ok(API_MESSAGE.PKG_CREATED); }); describe('should check sha integrity', () => { + const matchTarBallSha = (server) => { - return server - .getTarball(PKG_NAME, `${PKG_NAME}-${PKG_VERSION}.tgz`) + return server.getTarball(PKG_NAME, `${PKG_NAME}-${PKG_VERSION}.tgz`) .status(HTTP_STATUS.OK) - .then(function (body) { + .then(function(body) { // not real sha due to utf8 conversion expect(generateSha(body)).toBe(pkgExample.versions[PKG_VERSION].dist.shasum); }); }; - test('server1 should match with sha key from published package', () => - matchTarBallSha(server)); - test('server2 should match with sha key from published package', () => - matchTarBallSha(server2)); + test('server1 should match with sha key from published package', () => matchTarBallSha(server)); + test('server2 should match with sha key from published package', () => matchTarBallSha(server2)); + }); describe('should match dist-tags', () => { const matchDisTags = (verdaccioServer, port) => { - return verdaccioServer - .getPackage(PKG_NAME) + return verdaccioServer.getPackage(PKG_NAME) .status(HTTP_STATUS.OK) - .then(function (body) { + .then(function(body) { expect(body.name).toBe(PKG_NAME); expect(body.time).toBeDefined(); expect(body.time[PKG_VERSION]).toBeDefined(); expect(body.time).toBeDefined(); expect(body.versions[PKG_VERSION].name).toBe(PKG_NAME); - expect(body.versions[PKG_VERSION].dist.tarball).toBe( - `http://${DOMAIN_SERVERS}:${port}/${PKG_NAME}/-/${PKG_NAME}-${PKG_VERSION}.tgz` - ); - expect(body[DIST_TAGS]).toEqual({ foo: PKG_VERSION, latest: PKG_VERSION }); + expect(body.versions[PKG_VERSION].dist.tarball).toBe(`http://${DOMAIN_SERVERS}:${port}/${PKG_NAME}/-/${PKG_NAME}-${PKG_VERSION}.tgz`); + expect(body[DIST_TAGS]).toEqual({foo: PKG_VERSION, latest: PKG_VERSION}); }); }; diff --git a/packages/verdaccio/test/functional/tags/tags.ts b/packages/verdaccio/test/functional/tags/tags.ts new file mode 100644 index 000000000..bcd165d99 --- /dev/null +++ b/packages/verdaccio/test/functional/tags/tags.ts @@ -0,0 +1,163 @@ +import _ from 'lodash'; +import { HTTP_STATUS } from '@verdaccio/dev-commons'; + +import {readFile} from '../lib/test.utils'; + +const readTags = () => readFile('../fixtures/tags.json'); + +export default function(server, express) { + + test('tags - testing for 404', () => { + return server.getPackage('testexp_tags') + // shouldn't exist yet + .status(HTTP_STATUS.NOT_FOUND) + .body_error(/no such package/); + }); + + describe('tags', () => { + beforeAll(function() { + express.get('/testexp_tags', function(req, res) { + let f = readTags().toString().replace(/__NAME__/g, 'testexp_tags'); + res.send(JSON.parse(f)); + }); + }); + + test('fetching package again', () => { + return server.getPackage('testexp_tags') + .status(200) + .then(function(body) { + expect(_.isObject(body.versions['1.1.0'])).toBe(true); + // note: 5.4.3 is invalid tag, 0.1.3alpha is highest semver + expect(body['dist-tags'].latest).toEqual('1.1.0'); + expect(body['dist-tags'].bad).toEqual(undefined); + }); + }); + + const versions = ['0.1.1alpha', '0.1.1-alpha', '0000.00001.001-alpha']; + + versions.forEach(function(ver) { + test('fetching '+ver, () => { + return server.request({uri: '/testexp_tags/'+ver}) + .status(200) + .then(function(body) { + expect(body.version).toEqual('0.1.1alpha'); + }); + }); + }); + }); + + describe('dist-tags methods', () => { + + beforeAll(function() { + + express.get('/testexp_tags2', function(req, res) { + let f = readTags().toString().replace(/__NAME__/g, 'testexp_tags2'); + res.send(JSON.parse(f)); + }); + + }); + + // populate cache + beforeAll(function() { + return server.getPackage('testexp_tags2').status(200); + }); + + test('fetching tags', () => { + return server.request({ + method: 'GET', + uri: '/-/package/testexp_tags2/dist-tags', + }).status(200).then(function(body) { + const expected = { + latest: "1.1.0" + }; + + expect(body).toEqual(expected); + }); + }); + + test('merging tags', () => { + return server.request({ + method: 'POST', + uri: '/-/package/testexp_tags2/dist-tags', + json: { + foo: '0.1.2', + quux: '0.1.0', + }, + }).status(201).body_ok(/updated/).then(function() { + return server.request({ + method: 'GET', + uri: '/-/package/testexp_tags2/dist-tags', + }).status(200).then(function(body) { + const expected = { + "latest": "1.1.0", + "foo": "0.1.2", + "quux": "0.1.0" + }; + + expect(body).toEqual(expected); + }); + }); + }); + + test('should add a dist-tag called foo', () => { + return server.request({ + method: 'PUT', + uri: '/-/package/testexp_tags2/dist-tags/foo', + json: '0.1.3alpha', + }).status(201).body_ok(/tagged/).then(function() { + return server.request({ + method: 'GET', + uri: '/-/package/testexp_tags2/dist-tags', + }).status(200).then(function(body) { + const expected = { + foo: '0.1.3alpha', + quux: '0.1.0', + latest: '1.1.0' + }; + + expect(body).toEqual(expected); + }); + }); + }); + + test('should remove a dis-tag called quux', () => { + return server.request({ + method: 'DELETE', + uri: '/-/package/testexp_tags2/dist-tags/latest', + }).status(201).body_ok(/removed/).then(function() { + return server.request({ + method: 'GET', + uri: '/-/package/testexp_tags2/dist-tags', + }).status(200).then(function(body) { + const expected = { + latest: '1.1.0', + "quux": "0.1.0", + foo: "0.1.3alpha" + }; + + expect(body).toEqual(expected); + }); + }); + }); + + test('should remove a dis-tag called foo', () => { + return server.request({ + method: 'DELETE', + uri: '/-/package/testexp_tags2/dist-tags/foo', + }).status(201).body_ok(/removed/).then(function() { + return server.request({ + method: 'GET', + uri: '/-/package/testexp_tags2/dist-tags', + }).status(200).then(function(body) { + const expected = { + latest: '1.1.0', + "quux": "0.1.0" + }; + + expect(body).toEqual(expected); + }); + }); + }); + + }); +} diff --git a/test/functional/teardown.js b/packages/verdaccio/test/functional/teardown.js similarity index 100% rename from test/functional/teardown.js rename to packages/verdaccio/test/functional/teardown.js diff --git a/test/functional/test-environment.js b/packages/verdaccio/test/functional/test-environment.js similarity index 100% rename from test/functional/test-environment.js rename to packages/verdaccio/test/functional/test-environment.js diff --git a/test/functional/uplinks/cache.ts b/packages/verdaccio/test/functional/uplinks/cache.ts similarity index 72% rename from test/functional/uplinks/cache.ts rename to packages/verdaccio/test/functional/uplinks/cache.ts index f65d373db..094e95a09 100644 --- a/test/functional/uplinks/cache.ts +++ b/packages/verdaccio/test/functional/uplinks/cache.ts @@ -1,10 +1,11 @@ import fs from 'fs'; import path from 'path'; import crypto from 'crypto'; +import {HTTP_STATUS} from "@verdaccio/dev-commons"; +import { createTarballHash } from '@verdaccio/utils'; + +import {TARBALL} from '../config.functional'; import { readFile } from '../lib/test.utils'; -import { HTTP_STATUS } from '../../../src/lib/constants'; -import { TARBALL } from '../config.functional'; -import { createTarballHash } from '../../../src/lib/crypto-utils'; import requirePackage from '../fixtures/package'; function getBinary() { @@ -23,15 +24,16 @@ function isCached(pkgName, tarballName) { } export default function (server, server2, server3) { + describe('storage tarball cache test', () => { + // more info #131 beforeAll(function () { return server.addPackage(PKG_GH131); }); beforeAll(function () { - return server - .putTarball(PKG_GH131, TARBALL, getBinary()) + return server.putTarball(PKG_GH131, TARBALL, getBinary()) .status(HTTP_STATUS.CREATED) .body_ok(/.*/); }); @@ -40,8 +42,7 @@ export default function (server, server2, server3) { const pkg = requirePackage(PKG_GH131); pkg.dist.shasum = crypto.createHash('sha1').update(getBinary()).digest('hex'); - return server - .putVersion(PKG_GH131, '0.0.1', pkg) + return server.putVersion(PKG_GH131, '0.0.1', pkg) .status(HTTP_STATUS.CREATED) .body_ok(/published/); }); @@ -51,10 +52,11 @@ export default function (server, server2, server3) { }); beforeAll(function () { - return server3.getTarball(PKG_GH131, TARBALL).status(HTTP_STATUS.OK); + return server3.getTarball(PKG_GH131, TARBALL) + .status(HTTP_STATUS.OK); }); - test('should be caching packages from uplink server1', () => { + test.skip('should be caching packages from uplink server1', () => { expect(isCached(PKG_GH131, TARBALL)).toEqual(true); }); @@ -63,8 +65,7 @@ export default function (server, server2, server3) { }); beforeAll(function () { - return server2 - .putTarball(PKG_GH1312, TARBALL, getBinary()) + return server2.putTarball(PKG_GH1312, TARBALL, getBinary()) .status(HTTP_STATUS.CREATED) .body_ok(/.*/); }); @@ -73,22 +74,24 @@ export default function (server, server2, server3) { const pkg = requirePackage(PKG_GH1312); pkg.dist.shasum = createTarballHash().update(getBinary()).digest('hex'); - return server2 - .putVersion(PKG_GH1312, '0.0.1', pkg) + return server2.putVersion(PKG_GH1312, '0.0.1', pkg) .status(HTTP_STATUS.CREATED) .body_ok(/published/); }); beforeAll(function () { - return server3.getPackage(PKG_GH1312).status(HTTP_STATUS.OK); + return server3.getPackage(PKG_GH1312) + .status(HTTP_STATUS.OK); }); beforeAll(function () { - return server3.getTarball(PKG_GH1312, TARBALL).status(HTTP_STATUS.OK); + return server3.getTarball(PKG_GH1312, TARBALL) + .status(HTTP_STATUS.OK); }); test('must not be caching packages from uplink server2', () => { expect(isCached(PKG_GH1312, TARBALL)).toEqual(false); }); + }); } diff --git a/test/functional/uplinks/timeout.ts b/packages/verdaccio/test/functional/uplinks/timeout.ts similarity index 92% rename from test/functional/uplinks/timeout.ts rename to packages/verdaccio/test/functional/uplinks/timeout.ts index c894d9f80..b5f0efca3 100644 --- a/test/functional/uplinks/timeout.ts +++ b/packages/verdaccio/test/functional/uplinks/timeout.ts @@ -1,10 +1,12 @@ -import { HTTP_STATUS } from '../../../src/lib/constants'; +import {HTTP_STATUS} from "@verdaccio/dev-commons"; const PKG_SINGLE_UPLINK = 'test-uplink-timeout-single'; const PKG_MULTIPLE_UPLINKS = 'test-uplink-timeout-multiple'; export default function (server, server2, server3) { + describe('uplink connection timeouts', () => { + // more info: https://github.com/verdaccio/verdaccio/pull/1331 jest.setTimeout(20000); @@ -20,8 +22,10 @@ export default function (server, server2, server3) { }); test('200 response even though one uplink timeout', () => { - return server.getPackage(PKG_MULTIPLE_UPLINKS).status(HTTP_STATUS.OK); + return server.getPackage(PKG_MULTIPLE_UPLINKS).status(HTTP_STATUS.OK) }); }); + }); + } diff --git a/test/jest.config.functional.js b/packages/verdaccio/test/jest.config.functional.js similarity index 100% rename from test/jest.config.functional.js rename to packages/verdaccio/test/jest.config.functional.js diff --git a/test/lib/helper/register.js b/packages/verdaccio/test/lib/helper/register.js similarity index 77% rename from test/lib/helper/register.js rename to packages/verdaccio/test/lib/helper/register.js index 0c0f6e597..ffb09d0bd 100644 --- a/test/lib/helper/register.js +++ b/packages/verdaccio/test/lib/helper/register.js @@ -3,4 +3,4 @@ require('@babel/register')({ sourceMap: 'inline', }); -require('../../../src/lib/cli'); +require('@verdaccio/cli'); diff --git a/test/lib/helper/verdaccio-test b/packages/verdaccio/test/lib/helper/verdaccio-test similarity index 71% rename from test/lib/helper/verdaccio-test rename to packages/verdaccio/test/lib/helper/verdaccio-test index 93f7060a7..d2c06b6df 100755 --- a/test/lib/helper/verdaccio-test +++ b/packages/verdaccio/test/lib/helper/verdaccio-test @@ -2,4 +2,4 @@ require('@babel/register')({ extensions: [".ts", ".js"] }); -require('../../../src/lib/cli'); +require('@verdaccio/cli'); diff --git a/test/test.conf.js b/packages/verdaccio/test/test.conf.js similarity index 100% rename from test/test.conf.js rename to packages/verdaccio/test/test.conf.js diff --git a/test/types-test/.eslintrc b/packages/verdaccio/test/types-test/.eslintrc similarity index 100% rename from test/types-test/.eslintrc rename to packages/verdaccio/test/types-test/.eslintrc diff --git a/test/types-test/README.md b/packages/verdaccio/test/types-test/README.md similarity index 100% rename from test/types-test/README.md rename to packages/verdaccio/test/types-test/README.md diff --git a/test/types-test/plugins/auth/example.auth.plugin.ts b/packages/verdaccio/test/types-test/plugins/auth/example.auth.plugin.ts similarity index 95% rename from test/types-test/plugins/auth/example.auth.plugin.ts rename to packages/verdaccio/test/types-test/plugins/auth/example.auth.plugin.ts index 676c2f038..eaaf7eef7 100644 --- a/test/types-test/plugins/auth/example.auth.plugin.ts +++ b/packages/verdaccio/test/types-test/plugins/auth/example.auth.plugin.ts @@ -1,7 +1,7 @@ // this file is not aim to be tested, just to check flow definitions -import Config from '../../../../src/lib/config'; -import { logger } from '../../../../src/lib/logger'; +import Config from '../../../../packages/config/src/config'; +import { logger } from '../../../../packages/logger/src/logger'; import { Callback } from '@verdaccio/types'; import { diff --git a/test/types-test/plugins/middleware/example.middleware.plugin.ts b/packages/verdaccio/test/types-test/plugins/middleware/example.middleware.plugin.ts similarity index 72% rename from test/types-test/plugins/middleware/example.middleware.plugin.ts rename to packages/verdaccio/test/types-test/plugins/middleware/example.middleware.plugin.ts index 5f1312c3c..8195903f8 100644 --- a/test/types-test/plugins/middleware/example.middleware.plugin.ts +++ b/packages/verdaccio/test/types-test/plugins/middleware/example.middleware.plugin.ts @@ -2,23 +2,22 @@ /* eslint-disable @typescript-eslint/no-unused-vars */ /* eslint-disable no-unused-vars */ -import Config from '../../../../src/lib/config'; -import { generatePackageTemplate } from '../../../../src/lib/storage-utils'; -import { readFile } from '../../../functional/lib/test.utils'; +import Config from '../../../../packages/config/src/config'; +import { generatePackageTemplate } from '@verdaccio/store'; +import {readFile} from '../../../functional/lib/test.utils'; import { Package } from '@verdaccio/types'; -const readMetadata = (fileName: string): Package => - JSON.parse(readFile(`../../unit/partials/${fileName}`).toString()) as Package; +const readMetadata = (fileName: string): Package => JSON.parse(readFile(`../../unit/partials/${fileName}`).toString()) as Package; import { Config as AppConfig, IPluginMiddleware, IStorageManager, RemoteUser, - IBasicAuth + IBasicAuth, } from '@verdaccio/types'; import { IUploadTarball, IReadTarball } from '@verdaccio/streams'; -import { generateVersion } from '../../../unit/__helper/utils'; +import { generateVersion } from "../../../unit/__helper/utils"; export default class ExampleMiddlewarePlugin implements IPluginMiddleware<{}> { register_middlewares(app: any, auth: IBasicAuth<{}>, storage: IStorageManager<{}>): void { @@ -28,16 +27,16 @@ export default class ExampleMiddlewarePlugin implements IPluginMiddleware<{}> { name: 'test' }; auth.authenticate('user', 'password', () => {}); - auth.allow_access({ packageName: 'packageName' }, remoteUser, () => {}); + auth.allow_access({packageName: 'packageName'}, remoteUser, () => {}); auth.add_user('user', 'password', () => {}); auth.aesEncrypt(Buffer.from('pass')); // storage storage.addPackage('name', generatePackageTemplate('test'), () => {}); storage.addVersion('name', 'version', generateVersion('name', '1.0.0'), 'tag', () => {}); - storage.mergeTags('name', { latest: '1.0.0' }, () => {}); + storage.mergeTags('name', {'latest': '1.0.0'}, () => {}); storage.changePackage('name', readMetadata('metadata'), 'revision', () => {}); storage.removePackage('name', () => {}); - storage.mergeTags('name', { latest: '1.0.0' }, () => {}); + storage.mergeTags('name', {'latest': '1.0.0'}, () => {}); storage.removeTarball('name', 'filename', 'revision', () => {}); const config1: AppConfig = new Config({ storage: './storage', @@ -49,3 +48,4 @@ export default class ExampleMiddlewarePlugin implements IPluginMiddleware<{}> { const search: IReadTarball = storage.search('test', {}); } } + diff --git a/packages/verdaccio/test/types-test/plugins/partials/config.example.js b/packages/verdaccio/test/types-test/plugins/partials/config.example.js new file mode 100644 index 000000000..e69de29bb diff --git a/test/types-test/plugins/storage/example.storage.plugin.ts b/packages/verdaccio/test/types-test/plugins/storage/example.storage.plugin.ts similarity index 77% rename from test/types-test/plugins/storage/example.storage.plugin.ts rename to packages/verdaccio/test/types-test/plugins/storage/example.storage.plugin.ts index 165035e31..03848c0ff 100644 --- a/test/types-test/plugins/storage/example.storage.plugin.ts +++ b/packages/verdaccio/test/types-test/plugins/storage/example.storage.plugin.ts @@ -7,16 +7,19 @@ import { Package, Token, TokenFilter, - IUploadTarball, - IReadTarball + IUploadTarball, IReadTarball } from '@verdaccio/types'; -import { IPluginStorage, IPackageStorageManager, IPackageStorage } from '@verdaccio/types'; -import { UploadTarball, ReadTarball } from '@verdaccio/streams'; +import { + IPluginStorage, + IPackageStorageManager, + IPackageStorage +} from '@verdaccio/types'; +import { UploadTarball, ReadTarball} from '@verdaccio/streams'; -import Config from '../../../../src/lib/config'; -import { logger } from '../../../../src/lib/logger'; -import { generatePackageTemplate } from '../../../../src/lib/storage-utils'; +import Config from '../../../../packages/config/src/config'; +import {logger} from '../../../../packages/logger/src/logger'; +import { generatePackageTemplate } from '@verdaccio/store'; class PackageStorage implements IPackageStorageManager { path: string; @@ -27,13 +30,10 @@ class PackageStorage implements IPackageStorageManager { this.logger = logger; } - updatePackage( - name: string, - updateHandler: Callback, + updatePackage(name: string, updateHandler: Callback, onWrite: Callback, transformPackage: Function, - onEnd: Callback - ) { + onEnd: Callback) { onEnd(); } @@ -58,7 +58,7 @@ class PackageStorage implements IPackageStorageManager { } writeTarball(name): IUploadTarball { - this.logger.debug({ name }, 'some name @name'); + this.logger.debug({name}, 'some name @name'); const uploadStream = new UploadTarball({}); uploadStream.on('close', () => {}); if (uploadStream.abort) { @@ -73,7 +73,7 @@ class PackageStorage implements IPackageStorageManager { } readTarball(name): IReadTarball { - this.logger.debug({ name }, 'some name @name'); + this.logger.debug({name}, 'some name @name'); const readTarballStream: IReadTarball = new ReadTarball({}); if (readTarballStream.abort) { @@ -94,9 +94,9 @@ class ExampleStoragePlugin implements IPluginStorage<{}> { } saveToken(token: Token): Promise { - return Promise.resolve(token); + return Promise.resolve(token) } - deleteToken(user: string, tokenKey: string): Promise { + deleteToken(user: string, tokenKey: string): Promise{ return Promise.resolve([user, tokenKey]); } @@ -107,7 +107,7 @@ class ExampleStoragePlugin implements IPluginStorage<{}> { token: '12321', // pragma: allowlist secret readonly: false, created: '123232' - }; + } return Promise.resolve([token, token]); } @@ -116,8 +116,7 @@ class ExampleStoragePlugin implements IPluginStorage<{}> { return Promise.resolve(); } - setSecret(secret: string): Promise { - // pragma: allowlist secret + setSecret(secret: string): Promise { // pragma: allowlist secret return Promise.resolve(secret); // pragma: allowlist secret } @@ -149,17 +148,14 @@ const config1: AppConfig = new Config({ self_path: '/home/sotrage' }); + const storage = new ExampleStoragePlugin(config1, logger.child()); storage.add('test', () => {}); storage.remove('test', () => {}); storage.getSecret().then(() => {}); storage.setSecret('newSecret').then(() => {}); -storage.search( - () => {}, - () => {}, - 'validateName' -); +storage.search(() => {}, () => {}, 'validateName'); storage.get(() => {}); const storageManager: IPackageStorage = storage.getPackageStorage('test'); @@ -168,14 +164,7 @@ if (storageManager) { storageManager.createPackage('test', generatePackageTemplate('test'), () => {}); storageManager.savePackage('fileName', generatePackageTemplate('test'), () => {}); // @ts-ignore - storageManager.updatePackage( - 'pkgFileName', - () => {}, - () => {}, - // @ts-ignore - () => {}, - () => {} - ); + storageManager.updatePackage('pkgFileName', () => {}, () => {}, () => {}, () => {}); storageManager.deletePackage('test', () => {}); storageManager.removePackage(() => {}); storageManager.readPackage('test', () => {}); diff --git a/test/unit/modules/utils/api.__test.template.ts b/packages/verdaccio/test/unit/__helper/__template/api.__test.ts similarity index 86% rename from test/unit/modules/utils/api.__test.template.ts rename to packages/verdaccio/test/unit/__helper/__template/api.__test.ts index c83ac63fc..0159314ae 100644 --- a/test/unit/modules/utils/api.__test.template.ts +++ b/packages/verdaccio/test/unit/__helper/__template/api.__test.ts @@ -11,13 +11,13 @@ import _ from 'lodash'; import path from 'path'; import rimraf from 'rimraf'; -import endPointAPI from '../../../../src/api/index'; -import { mockServer } from '../../__helper/mock'; -import { DOMAIN_SERVERS } from '../../../functional/config.functional'; -import { parseConfigFile } from '../../../../src/lib/utils'; -import { parseConfigurationFile } from '../../__helper'; -import { addUser } from '../../__helper/api'; -import { setup } from '../../../../src/lib/logger'; +import endPointAPI from '@verdaccio/server'; +import {mockServer} from '../../__helper/mock'; +import {DOMAIN_SERVERS} from '../../../functional/config.functional'; +import {parseConfigFile} from '@verdaccio/utils/src/utils'; +import {parseConfigurationFile} from '../../__helper'; +import {addUser} from '../../__helper/api'; +import {setup} from '@verdaccio/logger'; // we must start logging without output setup([]); @@ -33,7 +33,7 @@ describe('endpoint example unit test', () => { let app; let mockRegistry; - beforeAll(function (done) { + beforeAll(function(done) { // 1. We create a route for a custom storage folder for this test const store = path.join(__dirname, '../../partials/store/test-template-storage'); // 2. The port must be unique (at this point this is not automated, need to be checked manually) @@ -68,7 +68,7 @@ describe('endpoint example unit test', () => { }); }); - afterAll(function (done) { + afterAll(function(done) { // 10. Do not forget to stop the API, or it will run forever. mockRegistry[0].stop(); done(); diff --git a/test/unit/__helper/api.ts b/packages/verdaccio/test/unit/__helper/api.ts similarity index 57% rename from test/unit/__helper/api.ts rename to packages/verdaccio/test/unit/__helper/api.ts index 31774151d..6ebd2855c 100644 --- a/test/unit/__helper/api.ts +++ b/packages/verdaccio/test/unit/__helper/api.ts @@ -1,11 +1,12 @@ import _ from 'lodash'; import request from 'supertest'; -import { HEADER_TYPE, HEADERS, HTTP_STATUS, TOKEN_BEARER } from '../../../src/lib/constants'; -import { buildToken, encodeScopedUri } from '../../../src/lib/utils'; +import {HEADER_TYPE, HEADERS, HTTP_STATUS, TOKEN_BEARER} from '@verdaccio/dev-commons'; +import {buildToken, encodeScopedUri} from '@verdaccio/utils'; +import {generateRandomHexString} from "@verdaccio/utils"; import { Package } from '@verdaccio/types'; -import { getTaggedVersionFromPackage } from './expects'; -import { generateRandomHexString } from '../../../src/lib/crypto-utils'; + +import {getTaggedVersionFromPackage} from "./expects"; // API Helpers @@ -19,43 +20,42 @@ export function putPackage( request: any, pkgName: string, publishMetadata: Package, - token?: string -): Promise { + token?: string): Promise { return new Promise((resolve) => { - let put = request - .put(pkgName) - .set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON) - .send(JSON.stringify(publishMetadata)); + let put = request.put(pkgName) + .set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON) + .send(JSON.stringify(publishMetadata)); - if (_.isEmpty(token) === false) { - expect(token).toBeDefined(); - put.set(HEADERS.AUTHORIZATION, buildToken(TOKEN_BEARER, token as string)); + if (_.isEmpty(token) === false ) { + expect(token).toBeDefined(); + put.set(HEADERS.AUTHORIZATION, buildToken(TOKEN_BEARER, token as string)) } - put - .set('accept', 'gzip') - .set('accept-encoding', HEADERS.JSON) - .expect(HTTP_STATUS.CREATED) - .end(function (err, res) { + put.set('accept', 'gzip') + .set('accept-encoding', HEADERS.JSON) + .expect(HTTP_STATUS.CREATED) + .end(function(err, res) { resolve([err, res]); - }); + }); }); } -export function deletePackage(request: any, pkgName: string, token?: string): Promise { +export function deletePackage( + request: any, + pkgName: string, + token?: string +): Promise { return new Promise((resolve) => { - let del = request - .put(`/${encodeScopedUri(pkgName)}/-rev/${generateRandomHexString(8)}`) + let del = request.put(`/${encodeScopedUri(pkgName)}/-rev/${generateRandomHexString(8)}`) .set(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON); - if (_.isNil(token) === false) { - del.set(HEADERS.AUTHORIZATION, buildToken(TOKEN_BEARER, token as string)); + if (_.isNil(token) === false ) { + del.set(HEADERS.AUTHORIZATION, buildToken(TOKEN_BEARER, token as string)) } - del - .set('accept-encoding', HEADERS.JSON) + del.set('accept-encoding', HEADERS.JSON) .expect(HTTP_STATUS.CREATED) - .end(function (err, res) { + .end(function(err, res) { resolve([err, res]); }); }); @@ -65,8 +65,7 @@ export function getPackage( request: any, token: string, pkgName: string, - statusCode: number = HTTP_STATUS.OK -): Promise { + statusCode: number = HTTP_STATUS.OK): Promise { return new Promise((resolve) => { let getRequest = request.get(`/${pkgName}`); @@ -78,47 +77,39 @@ export function getPackage( getRequest .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(statusCode) - .end(function (err, res) { + .end(function(err, res) { resolve([err, res]); }); }); } -export function loginUserToken( - request: any, - user: string, - credentials: any, - token: string, - statusCode: number = HTTP_STATUS.CREATED -): Promise { +export function loginUserToken(request: any, + user: string, + credentials: any, + token: string, + statusCode: number = HTTP_STATUS.CREATED): Promise { // $FlowFixMe return new Promise((resolve) => { - request - .put(`/-/user/org.couchdb.user:${user}`) + request.put(`/-/user/org.couchdb.user:${user}`) .send(credentials) .set('authorization', buildToken(TOKEN_BEARER, token)) .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(statusCode) - .end(function (err, res) { + .end(function(err, res) { return resolve([err, res]); }); }); } -export function addUser( - request: any, - user: string, - credentials: any, - statusCode: number = HTTP_STATUS.CREATED -): Promise { +export function addUser(request: any, user: string, credentials: any, + statusCode: number = HTTP_STATUS.CREATED): Promise { // $FlowFixMe return new Promise((resolve) => { - request - .put(`/-/user/org.couchdb.user:${user}`) + request.put(`/-/user/org.couchdb.user:${user}`) .send(credentials) .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(statusCode) - .end(function (err, res) { + .end(function(err, res) { return resolve([err, res]); }); }); @@ -129,7 +120,7 @@ export async function getNewToken(request: any, credentials: any): Promise { const [err, res] = await addUser(request, credentials.name, credentials); expect(err).toBeNull(); - const { token, ok } = res.body; + const {token, ok} = res.body; expect(ok).toBeDefined(); expect(token).toBeDefined(); expect(typeof token).toBe('string'); @@ -137,53 +128,36 @@ export async function getNewToken(request: any, credentials: any): Promise { +export function getProfile(request: any, token: string, statusCode: number = HTTP_STATUS.OK): Promise { // $FlowFixMe return new Promise((resolve) => { - request - .get(`/-/npm/v1/user`) + request.get(`/-/npm/v1/user`) .set('authorization', buildToken(TOKEN_BEARER, token)) .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(statusCode) - .end(function (err, res) { + .end(function(err, res) { return resolve([err, res]); }); }); } -export function postProfile( - request: any, - body: any, - token: string, - statusCode: number = HTTP_STATUS.OK -): Promise { +export function postProfile(request: any, body: any, token: string, statusCode: number = HTTP_STATUS.OK): Promise { // $FlowFixMe return new Promise((resolve) => { - request - .post(`/-/npm/v1/user`) + request.post(`/-/npm/v1/user`) .send(body) .set(HEADERS.AUTHORIZATION, `Bearer ${token}`) .expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET) .expect(statusCode) - .end(function (err, res) { + .end(function(err, res) { return resolve([err, res]); }); }); } -export async function fetchPackageByVersionAndTag( - app, - encodedPkgName, - pkgName, - version, - tag = 'latest' -) { +export async function fetchPackageByVersionAndTag(app, encodedPkgName, pkgName, version, tag = 'latest') { // we retrieve the package to verify - const [err, resp] = await getPackage(request(app), '', encodedPkgName); + const [err, resp]= await getPackage(request(app), '', encodedPkgName); expect(err).toBeNull(); @@ -192,18 +166,13 @@ export async function fetchPackageByVersionAndTag( } export async function isExistPackage(app, packageName) { - const [err] = await getPackage(request(app), '', encodeScopedUri(packageName), HTTP_STATUS.OK); + const [err]= await getPackage(request(app), '', encodeScopedUri(packageName), HTTP_STATUS.OK); return _.isNull(err); } export async function verifyPackageVersionDoesExist(app, packageName, version, token?: string) { - const [, res] = await getPackage( - request(app), - token as string, - encodeScopedUri(packageName), - HTTP_STATUS.OK - ); + const [, res]= await getPackage(request(app), token as string, encodeScopedUri(packageName), HTTP_STATUS.OK); const { versions } = res.body; const versionsKeys = Object.keys(versions); diff --git a/packages/verdaccio/test/unit/__helper/expects.ts b/packages/verdaccio/test/unit/__helper/expects.ts new file mode 100644 index 000000000..7dfdb579f --- /dev/null +++ b/packages/verdaccio/test/unit/__helper/expects.ts @@ -0,0 +1,20 @@ +import {DIST_TAGS, LATEST} from "@verdaccio/dev-commons"; + + +/** + * Verify whether the package tag match with the desired version. + */ +export function getTaggedVersionFromPackage(pkg, pkgName, tag: string = LATEST, version: string) { + // extract the tagged version + const taggedVersion = pkg[DIST_TAGS][tag]; + expect(taggedVersion).toBeDefined(); + expect(taggedVersion).toEqual(version); + + // the version must exist + const latestPkg = pkg.versions[taggedVersion]; + expect(latestPkg).toBeDefined(); + // the name must match + expect(latestPkg.name).toEqual(pkgName); + + return latestPkg; +} diff --git a/packages/verdaccio/test/unit/__helper/index.ts b/packages/verdaccio/test/unit/__helper/index.ts new file mode 100644 index 000000000..94426ab36 --- /dev/null +++ b/packages/verdaccio/test/unit/__helper/index.ts @@ -0,0 +1,5 @@ +import path from 'path'; + +export const parseConfigurationFile = (name) => { + return path.join(__dirname, `../partials/config/yaml/${name}.yaml`); +}; diff --git a/packages/verdaccio/test/unit/__helper/utils.ts b/packages/verdaccio/test/unit/__helper/utils.ts new file mode 100644 index 000000000..919138af1 --- /dev/null +++ b/packages/verdaccio/test/unit/__helper/utils.ts @@ -0,0 +1,73 @@ +import { Package } from "@verdaccio/types"; + +export function generateAttachment() { + return { + "content_type": "application\/octet-stream", + "data": "H4sIAAAAAAAAE+2W32vbMBDH85y\/QnjQp9qxLEeBMsbGlocNBmN7bFdQ5WuqxJaEpGQdo\/\/79KPeQsnIw5KUDX\/9IOvurLuz\/DHSjK\/YAiY6jcXSKjk6sMqypHWNdtmD6hlBI0wqQmo8nVbVqMR4OsNoVB66kF1aW8eML+Vv10m9oF\/jP6IfY4QyyTrILlD2eqkcm+gVzpdrJrPz4NuAsULJ4MZFWdBkbcByI7R79CRjx0ScCdnAvf+SkjUFWu8IubzBgXUhDPidQlfZ3BhlLpBUKDiQ1cDFrYDmKkNnZwjuhUM4808+xNVW8P2bMk1Y7vJrtLC1u1MmLPjBF40+Cc4ahV6GDmI\/DWygVRpMwVX3KtXUCg7Sxp7ff3nbt6TBFy65gK1iffsN41yoEHtdFbOiisWMH8bPvXUH0SP3k+KG3UBr+DFy7OGfEJr4x5iWVeS\/pLQe+D+FIv\/agIWI6GX66kFuIhT+1gDjrp\/4d7WAvAwEJPh0u14IufWkM0zaW2W6nLfM2lybgJ4LTJ0\/jWiAK8OcMjt8MW3OlfQppcuhhQ6k+2OgkK2Q8DssFPi\/IHpU9fz3\/+xj5NjDf8QFE39VmE4JDfzPCBn4P4X6\/f88f\/Pu47zomiPk2Lv\/dOv8h+P\/34\/D\/p9CL+Kp67mrGDRo0KBBp9ZPsETQegASAAA=", + "length": 512 + } +} + +export function generateVersion(pkgName, version) { + return { + "name": pkgName, + "version": version, + "description": "some foo dependency", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": { + "name": "User NPM", + "email": "user@domain.com" + }, + "license": "ISC", + "dependencies": { + "verdaccio": "^4.0.0" + }, + "readme": "# test", + "readmeFilename": "README.md", + "_id": `${pkgName}@${version}`, + "_npmVersion": "5.5.1", + "_npmUser": { + 'name': 'foo', + }, + "dist": { + "integrity": "sha512-6gHiERpiDgtb3hjqpQH5\/i7zRmvYi9pmCjQf2ZMy3QEa9wVk9RgdZaPWUt7ZOnWUPFjcr9cmE6dUBf+XoPoH4g==", + "shasum": "2c03764f651a9f016ca0b7620421457b619151b9", // pragma: allowlist secret + "tarball": `http:\/\/localhost:5555\/${pkgName}\/-\/${pkgName}-${version}.tgz` + } + } +} + +/** + * Generates a metadata body including attachments. + * If you intent to build a body for npm publish, please include only one version. + * if you intent to to generate a complete metadata include multiple versions. + */ +export function generatePackageBody(pkgName: string, _versions: string[] = ['1.0.0']): Package { + const latest: string = _versions[_versions.length - 1]; + const versions = _versions.reduce((cat, version) => { + cat[version] = generateVersion(pkgName, version); + return cat; + }, {}); + + const attachtment = _versions.reduce((cat, version) => { + cat[`${pkgName}-${version}.tgz`] = generateAttachment(); + return cat; + }, {}); + + // @ts-ignore + return { + "_id": pkgName, + "name": pkgName, + "readme": "# test", + "dist-tags": { + "latest": latest + }, + "versions": versions, + "_attachments": attachtment + } +} + diff --git a/test/unit/partials/config/yaml/README.md b/packages/verdaccio/test/unit/partials/config/yaml/README.md similarity index 100% rename from test/unit/partials/config/yaml/README.md rename to packages/verdaccio/test/unit/partials/config/yaml/README.md diff --git a/test/unit/partials/config/yaml/api.spec/web-config.yaml b/packages/verdaccio/test/unit/partials/config/yaml/api.spec/web-config.yaml similarity index 100% rename from test/unit/partials/config/yaml/api.spec/web-config.yaml rename to packages/verdaccio/test/unit/partials/config/yaml/api.spec/web-config.yaml diff --git a/test/e2e/partials/pkg-protected.js b/packages/verdaccio/test/unit/partials/forbidden-place.js similarity index 84% rename from test/e2e/partials/pkg-protected.js rename to packages/verdaccio/test/unit/partials/forbidden-place.js index fb1d1b880..b9a32a09b 100644 --- a/test/e2e/partials/pkg-protected.js +++ b/packages/verdaccio/test/unit/partials/forbidden-place.js @@ -1,14 +1,14 @@ const json = { - "_id": "protected-pkg", - "name": "protected-pkg", + "_id": "forbidden-place", + "name": "forbidden-place", "description": "", "dist-tags": { - "latest": "5.0.5" + "latest": "1.0.6" }, "versions": { - "5.0.5": { - "name": "protected-pkg", - "version": "5.0.5", + "1.0.6": { + "name": "forbidden-place", + "version": "1.0.6", "description": "", "main": "index.js", "scripts": { @@ -27,7 +27,7 @@ const json = { }, "readme": "# test", "readmeFilename": "README.md", - "_id": "protected-pkg@5.0.5", + "_id": "forbidden-place@1.0.6", "_npmVersion": "5.5.1", "_nodeVersion": "8.7.0", "_npmUser": { @@ -36,13 +36,13 @@ const json = { "dist": { "integrity": "sha512-6gHiERpiDgtb3hjqpQH5\/i7zRmvYi9pmCjQf2ZMy3QEa9wVk9RgdZaPWUt7ZOnWUPFjcr9cmE6dUBf+XoPoH4g==", "shasum": "2c03764f651a9f016ca0b7620421457b619151b9", - "tarball": "http:\/\/localhost:5555\/protected-pkg\/-\/protected-pkg-5.0.5.tgz" + "tarball": "http:\/\/localhost:5555\/forbidden-place\/-\/forbidden-place-1.0.6.tgz" } } }, "readme": "# test", "_attachments": { - "protected-pkg-5.0.5.tgz": { + "forbidden-place-1.0.6.tgz": { "content_type": "application\/octet-stream", // eslint-disable-next-line max-len "data": "H4sIAAAAAAAAE+2W32vbMBDH85y\/QnjQp9qxLEeBMsbGlocNBmN7bFdQ5WuqxJaEpGQdo\/\/79KPeQsnIw5KUDX\/9IOvurLuz\/DHSjK\/YAiY6jcXSKjk6sMqypHWNdtmD6hlBI0wqQmo8nVbVqMR4OsNoVB66kF1aW8eML+Vv10m9oF\/jP6IfY4QyyTrILlD2eqkcm+gVzpdrJrPz4NuAsULJ4MZFWdBkbcByI7R79CRjx0ScCdnAvf+SkjUFWu8IubzBgXUhDPidQlfZ3BhlLpBUKDiQ1cDFrYDmKkNnZwjuhUM4808+xNVW8P2bMk1Y7vJrtLC1u1MmLPjBF40+Cc4ahV6GDmI\/DWygVRpMwVX3KtXUCg7Sxp7ff3nbt6TBFy65gK1iffsN41yoEHtdFbOiisWMH8bPvXUH0SP3k+KG3UBr+DFy7OGfEJr4x5iWVeS\/pLQe+D+FIv\/agIWI6GX66kFuIhT+1gDjrp\/4d7WAvAwEJPh0u14IufWkM0zaW2W6nLfM2lybgJ4LTJ0\/jWiAK8OcMjt8MW3OlfQppcuhhQ6k+2OgkK2Q8DssFPi\/IHpU9fz3\/+xj5NjDf8QFE39VmE4JDfzPCBn4P4X6\/f88f\/Pu47zomiPk2Lv\/dOv8h+P\/34\/D\/p9CL+Kp67mrGDRo0KBBp9ZPsETQegASAAA=", diff --git a/test/unit/partials/storage/verdaccio-corrupted.db.json b/packages/verdaccio/test/unit/partials/storage/verdaccio-corrupted.db.json similarity index 100% rename from test/unit/partials/storage/verdaccio-corrupted.db.json rename to packages/verdaccio/test/unit/partials/storage/verdaccio-corrupted.db.json diff --git a/test/unit/partials/storage/verdaccio.db.json b/packages/verdaccio/test/unit/partials/storage/verdaccio.db.json similarity index 100% rename from test/unit/partials/storage/verdaccio.db.json rename to packages/verdaccio/test/unit/partials/storage/verdaccio.db.json diff --git a/packages/verdaccio/tsconfig.json b/packages/verdaccio/tsconfig.json new file mode 100644 index 000000000..6531bd3e4 --- /dev/null +++ b/packages/verdaccio/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./build" + }, + "include": ["src/**/*"], + "exclude": ["src/**/*.test.ts"] +} diff --git a/packages/web/.babelrc b/packages/web/.babelrc new file mode 100644 index 000000000..28397a1bd --- /dev/null +++ b/packages/web/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": [["@verdaccio"]] +} diff --git a/packages/web/jest.config.js b/packages/web/jest.config.js new file mode 100644 index 000000000..9c48852a3 --- /dev/null +++ b/packages/web/jest.config.js @@ -0,0 +1,9 @@ +module.exports = { + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'], + transform: { + '^.+\\.(js|jsx|ts|tsx)$': 'babel-jest', + }, + verbose: true, + collectCoverage: false, + coveragePathIgnorePatterns: ['node_modules', 'fixtures'], +}; diff --git a/packages/web/package.json b/packages/web/package.json new file mode 100644 index 000000000..5acd37683 --- /dev/null +++ b/packages/web/package.json @@ -0,0 +1,29 @@ +{ + "name": "@verdaccio/web", + "version": "5.0.0-alpha.0", + "description": "web ui middleware", + "main": "./build/index.js", + "types": "build/index.d.ts", + "license": "MIT", + "dependencies": { + "@verdaccio/loaders": "5.0.0-alpha.0", + "@verdaccio/middleware": "5.0.0-alpha.0", + "@verdaccio/store": "5.0.0-alpha.0", + "@verdaccio/utils": "5.0.0-alpha.0", + "body-parse": "^0.1.0", + "body-parser": "^1.19.0", + "express": "^4.17.1" + }, + "devDependencies": { + "@verdaccio/dev-types": "5.0.0-alpha.0", + "@verdaccio/types": "^9.3.0" + }, + "scripts": { + "clean": "rimraf ./build", + "type-check": "tsc --noEmit", + "build:types": "tsc --emitDeclarationOnly --declaration true", + "build:js": "cross-env BABEL_ENV=registry babel src/ --out-dir build/ --copy-files --extensions \".ts,.tsx\" --source-maps", + "build": "npm run build:js && npm run build:types" + }, + "gitHead": "7c246ede52ff717707fcae66dd63fc4abd536982" +} diff --git a/src/api/web/endpoint/package.ts b/packages/web/src/endpoint/package.ts similarity index 56% rename from src/api/web/endpoint/package.ts rename to packages/web/src/endpoint/package.ts index c2066443c..1f5ff2a14 100644 --- a/src/api/web/endpoint/package.ts +++ b/packages/web/src/endpoint/package.ts @@ -1,9 +1,6 @@ import _ from 'lodash'; -import { Router } from 'express'; -import { Config, Package } from '@verdaccio/types'; import { addScope, - addGravatarSupport, deleteProperties, sortByName, parseReadme, @@ -11,40 +8,48 @@ import { convertDistRemoteToLocalTarballUrls, getLocalRegistryTarballUri, isVersionValid, - ErrorCode, -} from '../../../lib/utils'; -import { allow } from '../../middleware'; -import { DIST_TAGS, HEADER_TYPE, HEADERS, HTTP_STATUS } from '../../../lib/constants'; -import { generateGravatarUrl } from '../../../utils/user'; -import { logger } from '../../../lib/logger'; -import { IAuth, $ResponseExtend, $RequestExtend, $NextFunctionVer, IStorageHandler, $SidebarPackage } from '../../../../types'; +} from '@verdaccio/utils'; +import { allow } from '@verdaccio/middleware'; +import { DIST_TAGS, HEADER_TYPE, HEADERS, HTTP_STATUS } from '@verdaccio/dev-commons'; +import { logger } from '@verdaccio/logger'; +import { Router } from 'express'; +import { IAuth, $ResponseExtend, $RequestExtend, $NextFunctionVer, IStorageHandler, $SidebarPackage } from '@verdaccio/dev-types'; +import { Config, Package } from '@verdaccio/types'; +import { addGravatarSupport } from '../web-utils'; +import { generateGravatarUrl } from '../user'; const getOrder = (order = 'asc') => { return order === 'asc'; }; -export type PackcageExt = Package & { author: any; dist?: { tarball: string } }; +export type PackcageExt = Package & { author: any, dist?: {tarball: string} }; function addPackageWebApi(route: Router, storage: IStorageHandler, auth: IAuth, config: Config): void { const can = allow(auth); const checkAllow = (name, remoteUser): Promise => - new Promise((resolve, reject): void => { - try { - auth.allow_access({ packageName: name }, remoteUser, (err, allowed): void => { - if (err) { - resolve(false); - } - resolve(allowed); - }); - } catch (err) { - reject(err); + new Promise( + (resolve, reject): void => { + try { + auth.allow_access( + { packageName: name }, + remoteUser, + (err, allowed): void => { + if (err) { + resolve(false); + } + resolve(allowed); + } + ); + } catch (err) { + reject(err); + } } - }); + ); // Get list of all visible package - route.get('/packages', function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { - storage.getLocalDatabase(async function (err, packages): Promise { + route.get('/packages', function(req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { + storage.getLocalDatabase(async function(err, packages): Promise { if (err) { throw err; } @@ -66,7 +71,7 @@ function addPackageWebApi(route: Router, storage: IStorageHandler, auth: IAuth, permissions.push(pkgCopy); } } catch (err) { - logger.error({ name: pkg.name, error: err }, 'permission process for @{name} has failed: @{error}'); + logger.logger.error({ name: pkg.name, error: err }, 'permission process for @{name} has failed: @{error}'); throw err; } } @@ -78,34 +83,30 @@ function addPackageWebApi(route: Router, storage: IStorageHandler, auth: IAuth, // @ts-ignore const order: boolean = config.web ? getOrder(web.sort_packages) : true; - try { - next(sortByName(await processPackages(packages), order)); - } catch (error) { - next(ErrorCode.getInternalError()); - } + next(sortByName(await processPackages(packages), order)); }); }); // Get package readme - route.get('/package/readme/(@:scope/)?:package/:version?', can('access'), function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { + route.get('/package/readme/(@:scope/)?:package/:version?', can('access'), function(req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { const packageName = req.params.scope ? addScope(req.params.scope, req.params.package) : req.params.package; storage.getPackage({ name: packageName, uplinksLook: true, req, - callback: function (err, info): void { + callback: function(err, info): void { if (err) { return next(err); } res.set(HEADER_TYPE.CONTENT_TYPE, HEADERS.TEXT_PLAIN); - next(parseReadme(info.name, info.readme)); + next(parseReadme(info.name, info.readme, logger)); }, }); }); - route.get('/sidebar/(@:scope/)?:package', can('access'), function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { + route.get('/sidebar/(@:scope/)?:package', can('access'), function(req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { const packageName: string = req.params.scope ? addScope(req.params.scope, req.params.package) : req.params.package; storage.getPackage({ @@ -113,37 +114,37 @@ function addPackageWebApi(route: Router, storage: IStorageHandler, auth: IAuth, uplinksLook: true, keepUpLinkData: true, req, - callback: function (err: Error, info: $SidebarPackage): void { + callback: function(err: Error, info: $SidebarPackage): void { if (_.isNil(err)) { - const { v } = req.query; + const {v} = req.query; let sideBarInfo: any = _.clone(info); sideBarInfo.versions = convertDistRemoteToLocalTarballUrls(info, req, config.url_prefix).versions; if (isVersionValid(info, v)) { // @ts-ignore sideBarInfo.latest = sideBarInfo.versions[v]; sideBarInfo.latest.author = formatAuthor(sideBarInfo.latest.author); - } else { - sideBarInfo.latest = sideBarInfo.versions[info[DIST_TAGS].latest]; - if (sideBarInfo?.latest) { - sideBarInfo.latest.author = formatAuthor(sideBarInfo.latest.author); } else { - res.status(HTTP_STATUS.NOT_FOUND); - res.end(); - return; + sideBarInfo.latest = sideBarInfo.versions[info[DIST_TAGS].latest]; + if (sideBarInfo?.latest) { + sideBarInfo.latest.author = formatAuthor(sideBarInfo.latest.author); + } else { + res.status(HTTP_STATUS.NOT_FOUND); + res.end(); + return; + } } - } - sideBarInfo = deleteProperties(['readme', '_attachments', '_rev', 'name'], sideBarInfo); - if (config.web) { - sideBarInfo = addGravatarSupport(sideBarInfo, config.web.gravatar); + sideBarInfo = deleteProperties(['readme', '_attachments', '_rev', 'name'], sideBarInfo); + if (config.web) { + sideBarInfo = addGravatarSupport(sideBarInfo, config.web.gravatar); + } else { + sideBarInfo = addGravatarSupport(sideBarInfo); + } + next(sideBarInfo); } else { - sideBarInfo = addGravatarSupport(sideBarInfo); + res.status(HTTP_STATUS.NOT_FOUND); + res.end(); } - next(sideBarInfo); - } else { - res.status(HTTP_STATUS.NOT_FOUND); - res.end(); } - }, }); }); } diff --git a/packages/web/src/endpoint/search.ts b/packages/web/src/endpoint/search.ts new file mode 100644 index 000000000..c6ecb874d --- /dev/null +++ b/packages/web/src/endpoint/search.ts @@ -0,0 +1,51 @@ +/** + * @prettier + * @flow + */ + +import { SearchInstance } from '@verdaccio/store'; +import { DIST_TAGS } from '@verdaccio/dev-commons'; +import { Router } from 'express'; +import { IAuth, $ResponseExtend, $RequestExtend, $NextFunctionVer, IStorageHandler } from '@verdaccio/dev-types'; +import { Package } from '@verdaccio/types'; + +function addSearchWebApi(route: Router, storage: IStorageHandler, auth: IAuth): void { + // Search package + route.get('/search/:anything', function(req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { + const results: any = SearchInstance.query(req.params.anything); + // FUTURE: figure out here the correct type + const packages: any[] = []; + + const getPackageInfo = function(i): void { + storage.getPackage({ + name: results[i].ref, + uplinksLook: false, + callback: (err, entry: Package): void => { + if (!err && entry) { + auth.allow_access({ packageName: entry.name }, req.remote_user, function(err, allowed): void { + if (err || !allowed) { + return; + } + + packages.push(entry.versions[entry[DIST_TAGS].latest]); + }); + } + + if (i >= results.length - 1) { + next(packages); + } else { + getPackageInfo(i + 1); + } + }, + }); + }; + + if (results.length) { + getPackageInfo(0); + } else { + next([]); + } + }); +} + +export default addSearchWebApi; diff --git a/packages/web/src/endpoint/user.ts b/packages/web/src/endpoint/user.ts new file mode 100644 index 000000000..ad7a51138 --- /dev/null +++ b/packages/web/src/endpoint/user.ts @@ -0,0 +1,62 @@ +import _ from 'lodash'; +import { Router, Response, Request } from 'express'; + +import { Config, RemoteUser, JWTSignOptions } from '@verdaccio/types'; + +import { API_ERROR, APP_ERROR, HTTP_STATUS } from '@verdaccio/dev-commons'; +import { IAuth, $NextFunctionVer } from '@verdaccio/dev-types'; +import { getSecurity, validatePassword, ErrorCode } from '@verdaccio/utils'; + +function addUserAuthApi(route: Router, auth: IAuth, config: Config): void { + route.post('/login', function(req: Request, res: Response, next: $NextFunctionVer): void { + const { username, password } = req.body; + + auth.authenticate( + username, + password, + async (err, user: RemoteUser): Promise => { + if (err) { + const errorCode = err.message ? HTTP_STATUS.UNAUTHORIZED : HTTP_STATUS.INTERNAL_ERROR; + next(ErrorCode.getCode(errorCode, err.message)); + } else { + req.remote_user = user; + const jWTSignOptions: JWTSignOptions = getSecurity(config).web.sign; + + next({ + token: await auth.jwtEncrypt(user, jWTSignOptions), + username: req.remote_user.name, + }); + } + } + ); + }); + + route.put('/reset_password', function(req: Request, res: Response, next: $NextFunctionVer): void { + if (_.isNil(req.remote_user.name)) { + res.status(HTTP_STATUS.UNAUTHORIZED); + return next({ + // FUTURE: update to a more meaningful message + message: API_ERROR.MUST_BE_LOGGED, + }); + } + + const { password } = req.body; + const { name } = req.remote_user; + + if (validatePassword(password.new) === false) { + auth.changePassword(name as string, password.old, password.new, (err, isUpdated): void => { + if (_.isNil(err) && isUpdated) { + next({ + ok: true, + }); + } else { + return next(ErrorCode.getInternalError(API_ERROR.INTERNAL_SERVER_ERROR)); + } + }); + } else { + return next(ErrorCode.getCode(HTTP_STATUS.BAD_REQUEST, APP_ERROR.PASSWORD_VALIDATION)); + } + }); +} + +export default addUserAuthApi; diff --git a/packages/web/src/index.ts b/packages/web/src/index.ts new file mode 100644 index 000000000..860fa3838 --- /dev/null +++ b/packages/web/src/index.ts @@ -0,0 +1,4 @@ +export * from './web-api'; +export * from './render-web'; +export * from './web-utils'; +export * from './user'; diff --git a/packages/web/src/render-web.ts b/packages/web/src/render-web.ts new file mode 100644 index 000000000..91dae5983 --- /dev/null +++ b/packages/web/src/render-web.ts @@ -0,0 +1,132 @@ +import _ from 'lodash'; +import fs from 'fs'; + +import path from 'path'; +import express from 'express'; + +import { combineBaseUrl, getWebProtocol, isHTTPProtocol } from '@verdaccio/utils'; +import { SearchInstance } from '@verdaccio/store'; +import { HEADERS, HTTP_STATUS, WEB_TITLE } from '@verdaccio/dev-commons'; +import { loadPlugin } from '@verdaccio/loaders'; +import { setSecurityWebHeaders } from '@verdaccio/middleware'; + +const pkgJSON = require('../package.json'); + +const DEFAULT_LANGUAGE = 'es-US'; + +export function loadTheme(config) { + if (_.isNil(config.theme) === false) { + return _.head( + loadPlugin( + config, + config.theme, + {}, + function(plugin) { + return _.isString(plugin); + }, + 'verdaccio-theme' + ) + ); + } +} + +export function validatePrimaryColor(primaryColor) { + const isHex = /^#+([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/i.test(primaryColor); + if (!isHex) { + return ''; + } + + return primaryColor; +} + +const sendFileCallback = next => err => { + if (!err) { + return; + } + if (err.status === HTTP_STATUS.NOT_FOUND) { + next(); + } else { + next(err); + } +}; + +export function renderWebMiddleware(config, auth, storage): any { + SearchInstance.configureStorage(storage); + /* eslint new-cap:off */ + const router = express.Router(); + + router.use(auth.webUIJWTmiddleware()); + router.use(setSecurityWebHeaders); + const themePath = loadTheme(config) || require('@verdaccio/ui-theme')(); + const indexTemplate = path.join(themePath, 'index.html'); + const template = fs.readFileSync(indexTemplate).toString(); + + // Logo + let logoURI = _.get(config, 'web.logo') ? config.web.logo : ''; + if (logoURI && !isHTTPProtocol(logoURI)) { + // URI related to a local file + + // Note: `path.join` will break on Windows, because it transforms `/` to `\` + // Use POSIX version `path.posix.join` instead. + logoURI = path.posix.join('/-/static/', path.basename(logoURI)); + router.get(logoURI, function(req, res, next) { + res.sendFile(path.resolve(config.web.logo), sendFileCallback(next)); + }); + } + + // Static + router.get('/-/static/*', function(req, res, next) { + const filename = req.params[0]; + const file = `${themePath}/${filename}`; + res.sendFile(file, sendFileCallback(next)); + }); + + function renderHTML(req, res) { + const protocol = getWebProtocol(req.get(HEADERS.FORWARDED_PROTO), req.protocol); + const host = req.get('host'); + const { url_prefix } = config; + const uri = `${protocol}://${host}`; + const base = combineBaseUrl(protocol, host, url_prefix); + const language = config?.i18n?.web ?? DEFAULT_LANGUAGE; + const darkMode = config?.web?.darkMode ?? false; + const primaryColor = validatePrimaryColor(config?.web?.primary_color); + const title = _.get(config, 'web.title') ? config.web.title : WEB_TITLE; + const scope = _.get(config, 'web.scope') ? config.web.scope : ''; + const options = { + uri, + darkMode, + protocol, + host, + url_prefix, + base, + primaryColor, + title, + scope, + language, + }; + + const webPage = template + .replace(/ToReplaceByVerdaccioUI/g, JSON.stringify(options)) + .replace(/ToReplaceByVerdaccio/g, base) + .replace(/ToReplaceByPrefix/g, url_prefix) + .replace(/ToReplaceByVersion/g, pkgJSON.version) + .replace(/ToReplaceByTitle/g, title) + .replace(/ToReplaceByLogo/g, logoURI) + .replace(/ToReplaceByPrimaryColor/g, primaryColor) + .replace(/ToReplaceByScope/g, scope); + + res.setHeader('Content-Type', HEADERS.TEXT_HTML); + + res.send(webPage); + } + + router.get('/-/web/:section/*', function(req, res) { + renderHTML(req, res); + }); + + router.get('/', function(req, res) { + renderHTML(req, res); + }); + + return router; +} diff --git a/packages/web/src/user.ts b/packages/web/src/user.ts new file mode 100644 index 000000000..028e8ffab --- /dev/null +++ b/packages/web/src/user.ts @@ -0,0 +1,36 @@ +import _ from 'lodash'; + +import {stringToMD5} from '@verdaccio/utils'; + +// this is a generic avatar +// https://www.iconfinder.com/icons/403017/anonym_avatar_default_head_person_unknown_user_icon +// license: free commercial usage +export const GENERIC_AVATAR = 'data:image/svg+xml;utf8,' + +encodeURIComponent( +'' +); + +/** + * Generate gravatar url from email address + */ +export function generateGravatarUrl(email: string | void = '', online: boolean = true): string { + if (online && _.isString(email) && _.size(email) > 0) { + email = email.trim().toLocaleLowerCase(); + const emailMD5 = stringToMD5(email); + return `https://www.gravatar.com/avatar/${emailMD5}`; + } + return GENERIC_AVATAR; +} diff --git a/src/api/web/api.ts b/packages/web/src/web-api.ts similarity index 77% rename from src/api/web/api.ts rename to packages/web/src/web-api.ts index 3db484ef6..cebe98fc7 100644 --- a/src/api/web/api.ts +++ b/packages/web/src/web-api.ts @@ -1,20 +1,21 @@ import { Router } from 'express'; import bodyParser from 'body-parser'; -import { Config } from '@verdaccio/types'; -import Search from '../../lib/search'; -import { match, validateName, validatePackage, setSecurityWebHeaders } from '../middleware'; -import { IAuth, IStorageHandler } from '../../../types'; import addUserAuthApi from './endpoint/user'; import addPackageWebApi from './endpoint/package'; import addSearchWebApi from './endpoint/search'; +import { SearchInstance } from '@verdaccio/store'; +import { match, validateName, validatePackage, setSecurityWebHeaders } from '@verdaccio/middleware'; +import { Config } from '@verdaccio/types'; +import { IAuth, IStorageHandler } from '@verdaccio/dev-types'; + const route = Router(); /* eslint new-cap: 0 */ /* This file include all verdaccio only API(Web UI), for npm API please see ../endpoint/ */ -export default function (config: Config, auth: IAuth, storage: IStorageHandler): Router { - Search.configureStorage(storage); +export function webAPI(config: Config, auth: IAuth, storage: IStorageHandler): Router { + SearchInstance.configureStorage(storage); // validate all of these params as a package name // this might be too harsh, so ask if it causes trouble @@ -36,7 +37,7 @@ export default function (config: Config, auth: IAuth, storage: IStorageHandler): // What are you looking for? logout? client side will remove token when user click logout, // or it will auto expire after 24 hours. // This token is different with the token send to npm client. - // We will/may replace current token with JWT in next major release, and it will not expire at all(configurable). + // With JWT you will be able to setup expire tokens. return route; } diff --git a/packages/web/src/web-utils.ts b/packages/web/src/web-utils.ts new file mode 100644 index 000000000..598d91276 --- /dev/null +++ b/packages/web/src/web-utils.ts @@ -0,0 +1,57 @@ +import _ from 'lodash'; +import { isObject } from "@verdaccio/utils"; +import { Package, Author } from '@verdaccio/types'; +import { normalizeContributors } from '@verdaccio/store'; +import { AuthorAvatar } from '@verdaccio/dev-types'; + +import {generateGravatarUrl, GENERIC_AVATAR} from "./user"; + +export function addGravatarSupport(pkgInfo: Package, online = true): AuthorAvatar { + const pkgInfoCopy = { ...pkgInfo } as any; + const author: any = _.get(pkgInfo, 'latest.author', null) as any; + const contributors: AuthorAvatar[] = normalizeContributors(_.get(pkgInfo, 'latest.contributors', [])); + const maintainers = _.get(pkgInfo, 'latest.maintainers', []); + + // for author. + if (author && _.isObject(author)) { + const { email } = author as Author; + pkgInfoCopy.latest.author.avatar = generateGravatarUrl(email, online); + } + + if (author && _.isString(author)) { + pkgInfoCopy.latest.author = { + avatar: GENERIC_AVATAR, + email: '', + author, + }; + } + + // for contributors + if (_.isEmpty(contributors) === false) { + pkgInfoCopy.latest.contributors = contributors.map( + (contributor): AuthorAvatar => { + if (isObject(contributor)) { + contributor.avatar = generateGravatarUrl(contributor.email, online); + } else if (_.isString(contributor)) { + contributor = { + avatar: GENERIC_AVATAR, + email: contributor, + name: contributor, + }; + } + + return contributor; + } + ); + } + + // for maintainers + if (_.isEmpty(maintainers) === false) { + pkgInfoCopy.latest.maintainers = maintainers.map((maintainer): void => { + maintainer.avatar = generateGravatarUrl(maintainer.email, online); + return maintainer; + }); + } + + return pkgInfoCopy; +} diff --git a/packages/web/test/utils.spec.ts b/packages/web/test/utils.spec.ts new file mode 100644 index 000000000..1cabb60d6 --- /dev/null +++ b/packages/web/test/utils.spec.ts @@ -0,0 +1,217 @@ +import { addGravatarSupport } from '../src/web-utils'; +import { generateGravatarUrl, GENERIC_AVATAR } from '../src/user'; + +describe('Utilities', () => { + describe('User utilities', () => { + test('should generate gravatar url with email', () => { + const gravatarUrl: string = generateGravatarUrl('user@verdaccio.org'); + + expect(gravatarUrl).toMatch('https://www.gravatar.com/avatar/'); + expect(gravatarUrl).not.toMatch('000000000'); + }); + + test('should generate generic gravatar url', () => { + const gravatarUrl: string = generateGravatarUrl(); + + expect(gravatarUrl).toMatch(GENERIC_AVATAR); + }); + }); + + describe('addGravatarSupport', () => { + test('check for blank object', () => { + // @ts-ignore + expect(addGravatarSupport({})).toEqual({}); + }); + + test('author, contributors and maintainers fields are not present', () => { + const packageInfo = { + latest: {} + }; + + // @ts-ignore + expect(addGravatarSupport(packageInfo)).toEqual(packageInfo); + }); + + test('author field is a blank object', () => { + const packageInfo = { latest: { author: {} } }; + + // @ts-ignore + expect(addGravatarSupport(packageInfo)).toEqual(packageInfo); + }); + + test('author field is a string type', () => { + const packageInfo = { + latest: { author: 'user@verdccio.org' } + }; + const result = { + latest: { + author: { + author: 'user@verdccio.org', + avatar: GENERIC_AVATAR, + email: '' + } + } + }; + + // @ts-ignore + expect(addGravatarSupport(packageInfo)).toEqual(result); + }); + + test('author field is an object type with author information', () => { + const packageInfo = { + latest: { author: { name: 'verdaccio', email: 'user@verdccio.org' } } + }; + const result = { + latest: { + author: { + avatar: + 'https://www.gravatar.com/avatar/794d7f6ef93d0689437de3c3e48fadc7', + email: 'user@verdccio.org', + name: 'verdaccio' + } + } + }; + + // @ts-ignore + expect(addGravatarSupport(packageInfo)).toEqual(result); + }); + + test('contributor field is a blank array', () => { + const packageInfo = { + latest: { + contributors: [] + } + }; + + // @ts-ignore + expect(addGravatarSupport(packageInfo)).toEqual(packageInfo); + }); + + describe("contributors", () => { + test('contributors field has contributors', () => { + const packageInfo = { + latest: { + contributors: [ + { name: 'user', email: 'user@verdccio.org' }, + { name: 'user1', email: 'user1@verdccio.org' } + ] + } + }; + + const result = { + latest: { + contributors: [ + { + avatar: + 'https://www.gravatar.com/avatar/794d7f6ef93d0689437de3c3e48fadc7', + email: 'user@verdccio.org', + name: 'user' + }, + { + avatar: + 'https://www.gravatar.com/avatar/51105a49ce4a9c2bfabf0f6a2cba3762', + email: 'user1@verdccio.org', + name: 'user1' + } + ] + } + }; + + // @ts-ignore + expect(addGravatarSupport(packageInfo)).toEqual(result); + }); + + test('contributors field is an object', () => { + const packageInfo = { + latest: { + contributors: { name: 'user', email: 'user@verdccio.org' } + } + }; + + const result = { + latest: { + contributors: [ + { + avatar: 'https://www.gravatar.com/avatar/794d7f6ef93d0689437de3c3e48fadc7', + email: 'user@verdccio.org', + name: 'user' + } + ] + } + }; + + // @ts-ignore + expect(addGravatarSupport(packageInfo)).toEqual(result); + }); + + test('contributors field is a string', () => { + const contributor = 'Barney Rubble (http://barnyrubble.tumblr.com/)'; + const packageInfo = { + latest: { + contributors: contributor + } + }; + + const result = { + latest: { + contributors: [ + { + avatar: GENERIC_AVATAR, + email: contributor, + name: contributor + } + ] + } + }; + + // @ts-ignore + expect(addGravatarSupport(packageInfo)).toEqual(result); + }); + }); + + test('maintainers field is a blank array', () => { + const packageInfo = { + latest: { + maintainers: [] + } + }; + + // @ts-ignore + expect(addGravatarSupport(packageInfo)).toEqual(packageInfo); + }); + + test('maintainers field has maintainers', () => { + const packageInfo = { + latest: { + maintainers: [ + { name: 'user', email: 'user@verdccio.org' }, + { name: 'user1', email: 'user1@verdccio.org' } + ] + } + }; + + const result = { + latest: { + maintainers: [ + { + avatar: + 'https://www.gravatar.com/avatar/794d7f6ef93d0689437de3c3e48fadc7', + email: 'user@verdccio.org', + name: 'user' + }, + { + avatar: + 'https://www.gravatar.com/avatar/51105a49ce4a9c2bfabf0f6a2cba3762', + email: 'user1@verdccio.org', + name: 'user1' + } + ] + } + }; + + // @ts-ignore + expect(addGravatarSupport(packageInfo)).toEqual(result); + }); + }); + +}); diff --git a/packages/web/tsconfig.json b/packages/web/tsconfig.json new file mode 100644 index 000000000..2be65b934 --- /dev/null +++ b/packages/web/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./build" + }, + "include": ["src/**/*", "types/*.d.ts"], + "exclude": ["src/**/*.test.ts"] +} diff --git a/packages/web/types/custom.d.ts b/packages/web/types/custom.d.ts new file mode 100644 index 000000000..733e88c70 --- /dev/null +++ b/packages/web/types/custom.d.ts @@ -0,0 +1,16 @@ +import { Logger, RemoteUser } from "@verdaccio/types"; + +declare global { + namespace Express { + export interface Request { + remote_user: RemoteUser; + log: Logger; + } + + export interface Response { + report_error: any; + _verdaccio_error: any; + socket?: any; + } + } +} diff --git a/src/api/endpoint/api/dist-tags.ts b/src/api/endpoint/api/dist-tags.ts deleted file mode 100644 index 12508160c..000000000 --- a/src/api/endpoint/api/dist-tags.ts +++ /dev/null @@ -1,111 +0,0 @@ -import mime from 'mime'; -import _ from 'lodash'; -import { Router } from 'express'; -import { VerdaccioError } from '@verdaccio/commons-api'; -import { Package } from '@verdaccio/types'; -import { media, allow } from '../../middleware'; -import { - IAuth, - $ResponseExtend, - $RequestExtend, - $NextFunctionVer, - IStorageHandler -} from '../../../../types'; -import { API_MESSAGE, HTTP_STATUS, DIST_TAGS } from '../../../lib/constants'; - -export default function (route: Router, auth: IAuth, storage: IStorageHandler): void { - const can = allow(auth); - const tag_package_version = function ( - req: $RequestExtend, - res: $ResponseExtend, - next: $NextFunctionVer - ): $NextFunctionVer { - if (_.isString(req.body) === false) { - return next('route'); - } - - const tags = {}; - tags[req.params.tag] = req.body; - storage.mergeTags(req.params.package, tags, function (err: Error): $NextFunctionVer { - if (err) { - return next(err); - } - res.status(HTTP_STATUS.CREATED); - return next({ ok: API_MESSAGE.TAG_ADDED }); - }); - }; - - // tagging a package - route.put('/:package/:tag', can('publish'), media(mime.getType('json')), tag_package_version); - - route.post( - '/-/package/:package/dist-tags/:tag', - can('publish'), - media(mime.getType('json')), - tag_package_version - ); - - route.put( - '/-/package/:package/dist-tags/:tag', - can('publish'), - media(mime.getType('json')), - tag_package_version - ); - - route.delete( - '/-/package/:package/dist-tags/:tag', - can('publish'), - function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { - const tags = {}; - tags[req.params.tag] = null; - storage.mergeTags(req.params.package, tags, function (err: VerdaccioError): $NextFunctionVer { - if (err) { - return next(err); - } - res.status(HTTP_STATUS.CREATED); - return next({ - ok: API_MESSAGE.TAG_REMOVED - }); - }); - } - ); - - route.get( - '/-/package/:package/dist-tags', - can('access'), - function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { - storage.getPackage({ - name: req.params.package, - uplinksLook: true, - req, - callback: function (err: VerdaccioError, info: Package): $NextFunctionVer { - if (err) { - return next(err); - } - - next(info[DIST_TAGS]); - } - }); - } - ); - - route.post( - '/-/package/:package/dist-tags', - can('publish'), - function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { - storage.mergeTags( - req.params.package, - req.body, - function (err: VerdaccioError): $NextFunctionVer { - if (err) { - return next(err); - } - res.status(HTTP_STATUS.CREATED); - return next({ - ok: API_MESSAGE.TAG_UPDATED - }); - } - ); - } - ); -} diff --git a/src/api/endpoint/api/package.ts b/src/api/endpoint/api/package.ts deleted file mode 100644 index 894aad5d5..000000000 --- a/src/api/endpoint/api/package.ts +++ /dev/null @@ -1,102 +0,0 @@ -import _ from 'lodash'; -import { Router } from 'express'; -import { Config, Package } from '@verdaccio/types'; -import { allow } from '../../middleware'; -import { convertDistRemoteToLocalTarballUrls, getVersion, ErrorCode } from '../../../lib/utils'; -import { HEADERS, DIST_TAGS, API_ERROR } from '../../../lib/constants'; -import { - IAuth, - $ResponseExtend, - $RequestExtend, - $NextFunctionVer, - IStorageHandler -} from '../../../../types'; - -const downloadStream = ( - packageName: string, - filename: string, - storage: any, - req: $RequestExtend, - res: $ResponseExtend -): void => { - const stream = storage.getTarball(packageName, filename); - - stream.on('content-length', function (content): void { - res.header('Content-Length', content); - }); - - stream.on('error', function (err): void { - return res.locals.report_error(err); - }); - - res.header(HEADERS.CONTENT_TYPE, HEADERS.OCTET_STREAM); - stream.pipe(res); -}; - -export default function ( - route: Router, - auth: IAuth, - storage: IStorageHandler, - config: Config -): void { - const can = allow(auth); - // TODO: anonymous user? - route.get( - '/:package/:version?', - can('access'), - function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { - const getPackageMetaCallback = function (err, metadata: Package): void { - if (err) { - return next(err); - } - metadata = convertDistRemoteToLocalTarballUrls(metadata, req, config.url_prefix); - - let queryVersion = req.params.version; - if (_.isNil(queryVersion)) { - return next(metadata); - } - - let version = getVersion(metadata, queryVersion); - if (_.isNil(version) === false) { - return next(version); - } - - if (_.isNil(metadata[DIST_TAGS]) === false) { - if (_.isNil(metadata[DIST_TAGS][queryVersion]) === false) { - queryVersion = metadata[DIST_TAGS][queryVersion]; - version = getVersion(metadata, queryVersion); - if (_.isNil(version) === false) { - return next(version); - } - } - } - return next(ErrorCode.getNotFound(`${API_ERROR.VERSION_NOT_EXIST}: ${req.params.version}`)); - }; - - storage.getPackage({ - name: req.params.package, - uplinksLook: true, - req, - callback: getPackageMetaCallback - }); - } - ); - - route.get( - '/:scopedPackage/-/:scope/:filename', - can('access'), - function (req: $RequestExtend, res: $ResponseExtend): void { - const { scopedPackage, filename } = req.params; - - downloadStream(scopedPackage, filename, storage, req, res); - } - ); - - route.get( - '/:package/-/:filename', - can('access'), - function (req: $RequestExtend, res: $ResponseExtend): void { - downloadStream(req.params.package, req.params.filename, storage, req, res); - } - ); -} diff --git a/src/api/endpoint/api/stars.ts b/src/api/endpoint/api/stars.ts deleted file mode 100644 index c01cece5e..000000000 --- a/src/api/endpoint/api/stars.ts +++ /dev/null @@ -1,37 +0,0 @@ -/** - * @prettier - - */ -import _ from 'lodash'; -import { Response, Router } from 'express'; -import { Package } from '@verdaccio/types'; -import { USERS, HTTP_STATUS } from '../../../lib/constants'; -import { $RequestExtend, $NextFunctionVer, IStorageHandler } from '../../../../types'; - -type Packages = Package[]; - -export default function (route: Router, storage: IStorageHandler): void { - route.get( - '/-/_view/starredByUser', - (req: $RequestExtend, res: Response, next: $NextFunctionVer): void => { - const remoteUsername = req.remote_user.name; - - storage.getLocalDatabase((err, localPackages: Packages) => { - if (err) { - return next(err); - } - - const filteredPackages: Packages = localPackages.filter((localPackage: Package) => - _.keys(localPackage[USERS]).includes(remoteUsername) - ); - - res.status(HTTP_STATUS.OK); - next({ - rows: filteredPackages.map((filteredPackage: Package) => ({ - value: filteredPackage.name - })) - }); - }); - } - ); -} diff --git a/src/api/endpoint/api/v1/profile.ts b/src/api/endpoint/api/v1/profile.ts deleted file mode 100644 index 887d1afe0..000000000 --- a/src/api/endpoint/api/v1/profile.ts +++ /dev/null @@ -1,94 +0,0 @@ -import _ from 'lodash'; -import { Response, Router } from 'express'; -import { API_ERROR, APP_ERROR, HTTP_STATUS, SUPPORT_ERRORS } from '../../../../lib/constants'; -import { ErrorCode } from '../../../../lib/utils'; -import { validatePassword } from '../../../../lib/auth-utils'; - -import { $NextFunctionVer, $RequestExtend, IAuth } from '../../../../../types'; - -export interface Profile { - tfa: boolean; - name: string; - email: string; - email_verified: boolean; - created: string; - updated: string; - cidr_whitelist: string[] | null; - fullname: string; -} - -export default function (route: Router, auth: IAuth): void { - function buildProfile(name: string): Profile { - return { - tfa: false, - name, - email: '', - email_verified: false, - created: '', - updated: '', - cidr_whitelist: null, - fullname: '' - }; - } - - route.get( - '/-/npm/v1/user', - function (req: $RequestExtend, res: Response, next: $NextFunctionVer): void { - if (_.isNil(req.remote_user.name) === false) { - return next(buildProfile(req.remote_user.name)); - } - - res.status(HTTP_STATUS.UNAUTHORIZED); - return next({ - message: API_ERROR.MUST_BE_LOGGED - }); - } - ); - - route.post( - '/-/npm/v1/user', - function (req: $RequestExtend, res: Response, next: $NextFunctionVer): void { - if (_.isNil(req.remote_user.name)) { - res.status(HTTP_STATUS.UNAUTHORIZED); - return next({ - message: API_ERROR.MUST_BE_LOGGED - }); - } - - const { password, tfa } = req.body; - const { name } = req.remote_user; - - if (_.isNil(password) === false) { - if (validatePassword(password.new) === false) { - /* eslint new-cap:off */ - return next(ErrorCode.getCode(HTTP_STATUS.UNAUTHORIZED, API_ERROR.PASSWORD_SHORT())); - /* eslint new-cap:off */ - } - - auth.changePassword( - name, - password.old, - password.new, - (err, isUpdated): $NextFunctionVer => { - if (_.isNull(err) === false) { - return next( - ErrorCode.getCode(err.status, err.message) || ErrorCode.getConflict(err.message) - ); - } - - if (isUpdated) { - return next(buildProfile(req.remote_user.name)); - } - return next(ErrorCode.getInternalError(API_ERROR.INTERNAL_SERVER_ERROR)); - } - ); - } else if (_.isNil(tfa) === false) { - return next( - ErrorCode.getCode(HTTP_STATUS.SERVICE_UNAVAILABLE, SUPPORT_ERRORS.TFA_DISABLED) - ); - } else { - return next(ErrorCode.getCode(HTTP_STATUS.INTERNAL_ERROR, APP_ERROR.PROFILE_ERROR)); - } - } - ); -} diff --git a/src/api/endpoint/api/v1/token.ts b/src/api/endpoint/api/v1/token.ts deleted file mode 100644 index 84d5c5446..000000000 --- a/src/api/endpoint/api/v1/token.ts +++ /dev/null @@ -1,128 +0,0 @@ -import _ from 'lodash'; -import buildDebug from 'debug'; -import { Response, Router } from 'express'; -import { Config, RemoteUser, Token } from '@verdaccio/types'; -import { HTTP_STATUS, SUPPORT_ERRORS } from '../../../../lib/constants'; -import { ErrorCode, mask } from '../../../../lib/utils'; -import { getApiToken } from '../../../../lib/auth-utils'; -import { stringToMD5 } from '../../../../lib/crypto-utils'; -import { logger } from '../../../../lib/logger'; - -import { $NextFunctionVer, $RequestExtend, IAuth, IStorageHandler } from '../../../../../types'; - -const debug = buildDebug('verdaccio:token'); -export type NormalizeToken = Token & { - created: string; -}; - -function normalizeToken(token: Token): NormalizeToken { - return { - ...token, - created: new Date(token.created).toISOString(), - }; -} - -// https://github.com/npm/npm-profile/blob/latest/lib/index.js -export default function (route: Router, auth: IAuth, storage: IStorageHandler, config: Config): void { - route.get('/-/npm/v1/tokens', async function (req: $RequestExtend, res: Response, next: $NextFunctionVer) { - const { name } = req.remote_user; - - if (_.isNil(name) === false) { - try { - const tokens = await storage.readTokens({ user: name }); - const totalTokens = tokens.length; - debug('token list retrieved: %o', totalTokens); - res.status(HTTP_STATUS.OK); - return next({ - objects: tokens.map(normalizeToken), - urls: { - next: '', // TODO: pagination? - }, - }); - } catch (error) { - logger.error({ error: error.msg }, 'token list has failed: @{error}'); - return next(ErrorCode.getCode(HTTP_STATUS.INTERNAL_ERROR, error.message)); - } - } - return next(ErrorCode.getUnauthorized()); - }); - - route.post('/-/npm/v1/tokens', function (req: $RequestExtend, res: Response, next: $NextFunctionVer) { - const { password, readonly, cidr_whitelist } = req.body; - const { name } = req.remote_user; - - if (!_.isBoolean(readonly) || !_.isArray(cidr_whitelist)) { - return next(ErrorCode.getCode(HTTP_STATUS.BAD_DATA, SUPPORT_ERRORS.PARAMETERS_NOT_VALID)); - } - - auth.authenticate(name, password, async (err, user: RemoteUser) => { - if (err) { - const errorCode = err.message ? HTTP_STATUS.UNAUTHORIZED : HTTP_STATUS.INTERNAL_ERROR; - return next(ErrorCode.getCode(errorCode, err.message)); - } - - req.remote_user = user; - - if (!_.isFunction(storage.saveToken)) { - return next(ErrorCode.getCode(HTTP_STATUS.NOT_IMPLEMENTED, SUPPORT_ERRORS.STORAGE_NOT_IMPLEMENT)); - } - - try { - const token = await getApiToken(auth, config, user, password); - const key = stringToMD5(token); - // TODO: use a utility here - const maskedToken = mask(token, 5); - const created = new Date().getTime(); - - /** - * cidr_whitelist: is not being used, we pass it through - * token: we do not store the real token (it is generated once and retrieved to the user), just a mask of it. - */ - const saveToken: Token = { - user: name, - token: maskedToken, - key, - cidr: cidr_whitelist, - readonly, - created, - }; - - await storage.saveToken(saveToken); - debug('token %o was created for user %o', key, name); - return next( - normalizeToken({ - token, - user: name, - key: saveToken.key, - cidr: cidr_whitelist, - readonly, - created: saveToken.created, - }) - ); - } catch (error) { - logger.error({ error: error.msg }, 'token creation has failed: @{error}'); - return next(ErrorCode.getCode(HTTP_STATUS.INTERNAL_ERROR, error.message)); - } - }); - }); - - route.delete('/-/npm/v1/tokens/token/:tokenKey', async (req: $RequestExtend, res: Response, next: $NextFunctionVer) => { - const { - params: { tokenKey }, - } = req; - const { name } = req.remote_user; - - if (_.isNil(name) === false) { - debug('%o has requested remove a token', name); - try { - await storage.deleteToken(name, tokenKey); - logger.info({ tokenKey, name }, 'token id @{tokenKey} was revoked for user @{name}'); - return next({}); - } catch (error) { - logger.error({ error: error.msg }, 'token creation has failed: @{error}'); - return next(ErrorCode.getCode(HTTP_STATUS.INTERNAL_ERROR, error.message)); - } - } - return next(ErrorCode.getUnauthorized()); - }); -} diff --git a/src/api/web/endpoint/search.ts b/src/api/web/endpoint/search.ts deleted file mode 100644 index bfadc8330..000000000 --- a/src/api/web/endpoint/search.ts +++ /dev/null @@ -1,64 +0,0 @@ -/** - * @prettier - * @flow - */ - -import { Router } from 'express'; -import { Package } from '@verdaccio/types'; -import Search from '../../../lib/search'; -import { DIST_TAGS } from '../../../lib/constants'; -import { - IAuth, - $ResponseExtend, - $RequestExtend, - $NextFunctionVer, - IStorageHandler -} from '../../../../types'; - -function addSearchWebApi(route: Router, storage: IStorageHandler, auth: IAuth): void { - // Search package - route.get( - '/search/:anything', - function (req: $RequestExtend, res: $ResponseExtend, next: $NextFunctionVer): void { - const results: any = Search.query(req.params.anything); - // FUTURE: figure out here the correct type - const packages: any[] = []; - - const getPackageInfo = function (i): void { - storage.getPackage({ - name: results[i].ref, - uplinksLook: false, - callback: (err, entry: Package): void => { - if (!err && entry) { - auth.allow_access( - { packageName: entry.name }, - req.remote_user, - function (err, allowed): void { - if (err || !allowed) { - return; - } - - packages.push(entry.versions[entry[DIST_TAGS].latest]); - } - ); - } - - if (i >= results.length - 1) { - next(packages); - } else { - getPackageInfo(i + 1); - } - } - }); - }; - - if (results.length) { - getPackageInfo(0); - } else { - next([]); - } - } - ); -} - -export default addSearchWebApi; diff --git a/src/api/web/endpoint/user.ts b/src/api/web/endpoint/user.ts deleted file mode 100644 index 11754bf90..000000000 --- a/src/api/web/endpoint/user.ts +++ /dev/null @@ -1,70 +0,0 @@ -/** - * @prettier - * @flow - */ - -import _ from 'lodash'; - -import { Router, Response, Request } from 'express'; -import { Config, RemoteUser, JWTSignOptions } from '@verdaccio/types'; -import { API_ERROR, APP_ERROR, HTTP_STATUS } from '../../../lib/constants'; -import { IAuth, $NextFunctionVer } from '../../../../types'; -import { ErrorCode } from '../../../lib/utils'; -import { getSecurity, validatePassword } from '../../../lib/auth-utils'; - -function addUserAuthApi(route: Router, auth: IAuth, config: Config): void { - route.post('/login', function (req: Request, res: Response, next: $NextFunctionVer): void { - const { username, password } = req.body; - - auth.authenticate( - username, - password, - async (err, user: RemoteUser): Promise => { - if (err) { - const errorCode = err.message ? HTTP_STATUS.UNAUTHORIZED : HTTP_STATUS.INTERNAL_ERROR; - next(ErrorCode.getCode(errorCode, err.message)); - } else { - req.remote_user = user; - const jWTSignOptions: JWTSignOptions = getSecurity(config).web.sign; - - next({ - token: await auth.jwtEncrypt(user, jWTSignOptions), - username: req.remote_user.name - }); - } - } - ); - }); - - route.put( - '/reset_password', - function (req: Request, res: Response, next: $NextFunctionVer): void { - if (_.isNil(req.remote_user.name)) { - res.status(HTTP_STATUS.UNAUTHORIZED); - return next({ - // FUTURE: update to a more meaningful message - message: API_ERROR.MUST_BE_LOGGED - }); - } - - const { password } = req.body; - const { name } = req.remote_user; - - if (validatePassword(password.new) === false) { - auth.changePassword(name as string, password.old, password.new, (err, isUpdated): void => { - if (_.isNil(err) && isUpdated) { - next({ - ok: true - }); - } else { - return next(ErrorCode.getInternalError(API_ERROR.INTERNAL_SERVER_ERROR)); - } - }); - } else { - return next(ErrorCode.getCode(HTTP_STATUS.BAD_REQUEST, APP_ERROR.PASSWORD_VALIDATION)); - } - } - ); -} - -export default addUserAuthApi; diff --git a/src/api/web/index.ts b/src/api/web/index.ts deleted file mode 100644 index 8536632bc..000000000 --- a/src/api/web/index.ts +++ /dev/null @@ -1,80 +0,0 @@ -import _ from 'lodash'; -import express from 'express'; -import buildDebug from 'debug'; - -import Search from '../../lib/search'; -import { HTTP_STATUS } from '../../lib/constants'; -import loadPlugin from '../../lib/plugin-loader'; -import renderHTML from './html/renderHTML'; - -const { setSecurityWebHeaders } = require('../middleware'); - -const debug = buildDebug('verdaccio'); - -export function loadTheme(config) { - if (_.isNil(config.theme) === false) { - return _.head( - loadPlugin( - config, - config.theme, - {}, - function (plugin) { - return _.isString(plugin); - }, - 'verdaccio-theme' - ) - ); - } -} - -export function validatePrimaryColor(primaryColor) { - const isHex = /^#+([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/i.test(primaryColor); - if (!isHex) { - debug('invalid primary color %o', primaryColor); - return; - } - - return primaryColor; -} - -const sendFileCallback = (next) => (err) => { - if (!err) { - return; - } - if (err.status === HTTP_STATUS.NOT_FOUND) { - next(); - } else { - next(err); - } -}; - -export default function (config, auth, storage) { - let { staticPath, manifest, manifestFiles } = loadTheme(config) || require('@verdaccio/ui-theme')(); - debug('static path %o', staticPath); - Search.configureStorage(storage); - - /* eslint new-cap:off */ - const router = express.Router(); - router.use(auth.webUIJWTmiddleware()); - router.use(setSecurityWebHeaders); - - // static assets - router.get('/-/static/*', function (req, res, next) { - const filename = req.params[0]; - const file = `${staticPath}/${filename}`; - debug('render static file %o', file); - res.sendFile(file, sendFileCallback(next)); - }); - - router.get('/-/web/:section/*', function (req, res) { - renderHTML(config, manifest, manifestFiles, req, res); - debug('render html section'); - }); - - router.get('/', function (req, res) { - renderHTML(config, manifest, manifestFiles, req, res); - debug('render root'); - }); - - return router; -} diff --git a/src/config/env.ts b/src/config/env.ts deleted file mode 100644 index 4f1620400..000000000 --- a/src/config/env.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * @prettier - */ - -const path = require('path'); - -const APP_ROOT = path.resolve(__dirname, '../../'); - -module.exports = { - APP_ROOT, - SRC_ROOT: path.resolve(APP_ROOT, 'src/'), - DIST_PATH: path.resolve(APP_ROOT, 'static/') -}; diff --git a/src/index.ts b/src/index.ts deleted file mode 100644 index e41843bd6..000000000 --- a/src/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -// @flow - -import { startVerdaccio } from './lib/bootstrap'; - -export default startVerdaccio; diff --git a/src/lib/cli.ts b/src/lib/cli.ts deleted file mode 100644 index ec1155f16..000000000 --- a/src/lib/cli.ts +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env node - -/* eslint no-sync:0 */ -/* eslint no-empty:0 */ - -if (process.getuid && process.getuid() === 0) { - process.emitWarning(`Verdaccio doesn't need superuser privileges. don't run it under root`); -} - -// eslint-disable-next-line import/order -const logger = require('./logger'); -logger.setup(null, { logStart: false }); // default setup - -require('./cli/cli'); - -process.on('uncaughtException', function (err) { - logger.logger.fatal( - { - err: err, - }, - 'uncaught exception, please report this\n@{err.stack}' - ); - process.exit(255); -}); diff --git a/src/lib/logger/utils.ts b/src/lib/logger/utils.ts deleted file mode 100644 index fed81d2b6..000000000 --- a/src/lib/logger/utils.ts +++ /dev/null @@ -1,16 +0,0 @@ -import dayjs from 'dayjs'; - -export const FORMAT_DATE = 'YYYY-MM-DD HH:mm:ss'; -export const CUSTOM_PAD_LENGTH = 1; - -export function formatLoggingDate(time: string): string { - return dayjs(time).format(FORMAT_DATE); -} - -export function padLeft(message: string) { - return message.padStart(message.length + CUSTOM_PAD_LENGTH, ' '); -} - -export function padRight(message: string, max = message.length + CUSTOM_PAD_LENGTH ) { - return message.padEnd(max, ' '); -} diff --git a/src/lib/notify/notify-request.ts b/src/lib/notify/notify-request.ts deleted file mode 100644 index ff73fd4ca..000000000 --- a/src/lib/notify/notify-request.ts +++ /dev/null @@ -1,24 +0,0 @@ -import isNil from 'lodash/isNil'; -import buildDebug from 'debug'; -import request, { RequiredUriUrl } from 'request'; -import { logger } from '../logger'; -import { HTTP_STATUS } from '../constants'; - -const debug = buildDebug('verdaccio:notify-request'); -export function notifyRequest(options: RequiredUriUrl, content): Promise { - return new Promise((resolve, reject): void => { - request(options, function (err, response, body): void { - if (err || response.statusCode >= HTTP_STATUS.BAD_REQUEST) { - const errorMessage = isNil(err) ? response.body : err.message; - logger.error({ errorMessage }, 'notify service has thrown an error: @{errorMessage}'); - reject(errorMessage); - } - logger.info({ content }, 'A notification has been shipped: @{content}'); - if (isNil(body) === false) { - logger.debug({ body }, ' body: @{body}'); - resolve(body); - } - reject(Error('body is missing')); - }); - }); -} diff --git a/src/utils/user.ts b/src/utils/user.ts deleted file mode 100644 index c8cc6a768..000000000 --- a/src/utils/user.ts +++ /dev/null @@ -1,37 +0,0 @@ -// @flow -import _ from 'lodash'; -import { stringToMD5 } from '../lib/crypto-utils'; - -// this is a generic avatar -// https://www.iconfinder.com/icons/403017/anonym_avatar_default_head_person_unknown_user_icon -// license: free commercial usage -export const GENERIC_AVATAR = - 'data:image/svg+xml;utf8,' + - encodeURIComponent( - '' - ); - -/** - * Generate gravatar url from email address - */ -export function generateGravatarUrl(email: string | void = '', online: boolean = true): string { - if (online && _.isString(email) && _.size(email) > 0) { - email = email.trim().toLocaleLowerCase(); - const emailMD5 = stringToMD5(email); - return `https://www.gravatar.com/avatar/${emailMD5}`; - } - return GENERIC_AVATAR; -} diff --git a/test/e2e-cli/setup/test_environment.ts b/test/e2e-cli/setup/test_environment.ts index ab47909a8..f56963737 100644 --- a/test/e2e-cli/setup/test_environment.ts +++ b/test/e2e-cli/setup/test_environment.ts @@ -3,7 +3,6 @@ import os from 'os'; import path from 'path'; import NodeEnvironment from 'jest-environment-node'; const __global = require('../utils/global'); -// import { npm } from '../utils/process'; class E2ECliTestEnvironment extends NodeEnvironment { constructor(config) { diff --git a/test/e2e/.eslintrc b/test/e2e/.eslintrc deleted file mode 100644 index cbfb89d2f..000000000 --- a/test/e2e/.eslintrc +++ /dev/null @@ -1,6 +0,0 @@ -{ - "rules": { - "@typescript-eslint/no-var-requires": 0, - "@typescript-eslint/explicit-member-accessibility": 0 - } -} diff --git a/test/e2e/config/config-protected-e2e.yaml b/test/e2e/config/config-protected-e2e.yaml deleted file mode 100644 index 9ec9b06f1..000000000 --- a/test/e2e/config/config-protected-e2e.yaml +++ /dev/null @@ -1,27 +0,0 @@ -web: - enable: true - title: verdaccio-server-protected-e2e - -store: - memory: - limit: 10 - -auth: - auth-memory: - users: - test: - name: test - password: test - -logs: - - { type: stdout, format: pretty, level: warn } - -packages: - 'protected-*': - access: $authenticated - publish: $authenticated - -listen: 0.0.0.0:55552 - -# expose internal methods -_debug: true diff --git a/test/e2e/config/config-scoped-e2e.yaml b/test/e2e/config/config-scoped-e2e.yaml deleted file mode 100644 index d9f59dfd8..000000000 --- a/test/e2e/config/config-scoped-e2e.yaml +++ /dev/null @@ -1,30 +0,0 @@ -web: - enable: true - title: verdaccio-server-e2e - -store: - memory: - limit: 10 - -auth: - auth-memory: - users: - test: - name: test - password: test - -logs: - - { type: stdout, format: pretty, level: warn } - -packages: - '@*/*': - access: $all - publish: $all - '**': - access: $all - publish: $authenticated - -listen: 0.0.0.0:55558 - -# expose internal methods -_debug: true diff --git a/test/e2e/e2e.spec.js b/test/e2e/e2e.spec.js deleted file mode 100644 index 84bd75313..000000000 --- a/test/e2e/e2e.spec.js +++ /dev/null @@ -1,208 +0,0 @@ -const protectedPackageMetadata = require('./partials/pkg-protected'); -const scopedPackageMetadata = require('./partials/pkg-scoped'); - -describe('/ (Verdaccio Page)', () => { - let page; - // this might be increased based on the delays included in all test - jest.setTimeout(20000); - - const clickElement = async function(selector, options = { delay: 100 }) { - const button = await page.$(selector); - await button.focus(); - await button.click(options); - }; - - const evaluateSignIn = async function(matchText = 'Login') { - const text = await page.evaluate(() => { - return document.querySelector('button[data-testid="header--button-login"]').textContent; - }); - - expect(text).toMatch(matchText); - }; - - const getPackages = async function() { - return await page.$$('.package-title'); - }; - - const logIn = async function() { - await clickElement('button[data-testid="header--button-login"]'); - // we fill the sign in form - const signInDialog = await page.$('#login--dialog'); - const userInput = await signInDialog.$('#login--dialog-username'); - expect(userInput).not.toBeNull(); - const passInput = await signInDialog.$('#login--dialog-password'); - expect(passInput).not.toBeNull(); - await userInput.type('test', { delay: 100 }); - await passInput.type('test', { delay: 100 }); - await passInput.dispose(); - // click on log in - const loginButton = await page.$('#login--dialog-button-submit'); - expect(loginButton).toBeDefined(); - await loginButton.focus(); - await loginButton.click({ delay: 100 }); - await page.waitFor(500); - }; - - beforeAll(async () => { - page = await global.__BROWSER__.newPage(); - await page.goto('http://0.0.0.0:55558'); - page.on('console', msg => console.log('PAGE LOG:', msg.text())); - }); - - afterAll(async () => { - await page.close(); - }); - - test('should display title', async () => { - const text = await page.title(); - await page.waitFor(1000); - - expect(text).toContain('verdaccio-server-e2e'); - }); - // - - test('should match title with no packages published', async () => { - const text = await page.evaluate(() => document.querySelector('#help-card__title').textContent); - expect(text).toMatch('No Package Published Yet.'); - }); - // - - test('should match title with first step', async () => { - const text = await page.evaluate(() => document.querySelector('#help-card').textContent); - expect(text).toContain('npm adduser --registry http://0.0.0.0:55558'); - }); - // - - test('should match title with second step', async () => { - const text = await page.evaluate(() => document.querySelector('#help-card').textContent); - expect(text).toContain('npm publish --registry http://0.0.0.0:55558'); - }); - // - - test('should match button Login to sign in', async () => { - await evaluateSignIn(); - }); - // - - test('should click on sign in button', async () => { - const signInButton = await page.$('button[data-testid="header--button-login"]'); - await signInButton.click(); - await page.waitFor(1000); - const signInDialog = await page.$('#login--dialog'); - expect(signInDialog).not.toBeNull(); - const closeButton = await page.$('button[data-testid="close-login-dialog-button"]'); - await closeButton.click(); - await page.waitFor(500); - }); - // - - test('should log in an user', async () => { - // we open the dialog - await logIn(); - // check whether user is logged - const buttonLogout = await page.$('#header--button-logout'); - expect(buttonLogout).toBeDefined(); - }); - - test('should logout an user', async () => { - // we assume the user is logged already - await clickElement('#header--button-account', { delay: 500 }); - await page.waitFor(1000); - await clickElement('#header--button-logout > span', { delay: 500 }); - await page.waitFor(1000); - await evaluateSignIn(); - }); - // - - test('should check registry info dialog', async () => { - const registryInfoButton = await page.$('#header--button-registryInfo'); - registryInfoButton.click(); - await page.waitFor(500); - - const registryInfoDialog = await page.$('#registryInfo--dialog-container'); - expect(registryInfoDialog).not.toBeNull(); - - const closeButton = await page.$('#registryInfo--dialog-close'); - await closeButton.click(); - }); - // - - test('should publish a package', async () => { - await global.__SERVER__.putPackage(scopedPackageMetadata.name, scopedPackageMetadata); - await page.waitFor(1000); - await page.reload(); - await page.waitFor(1000); - const packagesList = await getPackages(); - expect(packagesList).toHaveLength(1); - }); - // - - test('should navigate to the package detail', async () => { - const packagesList = await getPackages(); - // console.log("-->packagesList:", packagesList); - const firstPackage = packagesList[0]; - await firstPackage.click({ delay: 200 }); - await page.waitFor(1000); - const readmeText = await page.evaluate(() => document.querySelector('.markdown-body').textContent); - - expect(readmeText).toMatch('test'); - }); - - test('should contains last sync information', async () => { - const versionList = await page.$$('.sidebar-info .detail-info'); - expect(versionList).toHaveLength(1); - }); - // - - test('should display dependencies tab', async () => { - const dependenciesTab = await page.$$('#dependencies-tab'); - expect(dependenciesTab).toHaveLength(1); - await dependenciesTab[0].click({ delay: 200 }); - await page.waitFor(1000); - const tags = await page.$$('.dep-tag'); - const tag = tags[0]; - const label = await page.evaluate(el => el.innerText, tag); - expect(label).toMatch('verdaccio@'); - }); - - test('should display version tab', async () => { - const versionsTab = await page.$$('#versions-tab'); - expect(versionsTab).toHaveLength(1); - await versionsTab[0].click({ delay: 200 }); - await page.waitFor(1000); - const versionItems = await page.$$('.version-item'); - expect(versionItems).toHaveLength(2); - }); - - test('should display uplinks tab', async () => { - const upLinksTab = await page.$$('#uplinks-tab'); - expect(upLinksTab).toHaveLength(1); - await upLinksTab[0].click({ delay: 200 }); - await page.waitFor(1000); - }); - - test('should display readme tab', async () => { - const readmeTab = await page.$$('#readme-tab'); - expect(readmeTab).toHaveLength(1); - await readmeTab[0].click({ delay: 200 }); - await page.waitFor(1000); - }); - - test('should publish a protected package', async () => { - await page.goto('http://0.0.0.0:55552'); - await page.waitFor(500); - await global.__SERVER_PROTECTED__.putPackage(protectedPackageMetadata.name, protectedPackageMetadata); - await page.waitFor(500); - await page.reload(); - await page.waitFor(500); - const text = await page.evaluate(() => document.querySelector('#help-card__title').textContent); - expect(text).toMatch('No Package Published Yet'); - }); - - test('should go to 404 page', async () => { - await page.goto('http://0.0.0.0:55552/-/web/detail/@verdaccio/not-found'); - await page.waitFor(500); - const text = await page.evaluate(() => document.querySelector('.not-found-text').textContent); - expect(text).toMatch("Sorry, we couldn't find it..."); - }); -}); diff --git a/test/e2e/pre-setup.js b/test/e2e/pre-setup.js deleted file mode 100644 index 1a5055183..000000000 --- a/test/e2e/pre-setup.js +++ /dev/null @@ -1,4 +0,0 @@ -require('@babel/register')({ - extensions: [".ts", ".js"] -}); -module.exports = require('./setup'); diff --git a/test/e2e/puppeteer_environment.js b/test/e2e/puppeteer_environment.js deleted file mode 100644 index e0a506cba..000000000 --- a/test/e2e/puppeteer_environment.js +++ /dev/null @@ -1,60 +0,0 @@ -/* eslint new-cap: 0 */ - -const { yellow } = require('kleur'); -const NodeEnvironment = require('jest-environment-node'); -const puppeteer = require('puppeteer'); -const fs = require('fs'); -const os = require('os'); -const path = require('path'); -const {VerdaccioConfig} = require("../lib/verdaccio-server"); -const VerdaccioProcess = require("../lib/server_process"); -const Server = require("../lib/server"); - - -const DIR = path.join(os.tmpdir(), 'jest_puppeteer_global_setup'); - -class PuppeteerEnvironment extends NodeEnvironment { - constructor(config) { - super(config) - } - - async setup() { - const config1 = new VerdaccioConfig(path.join(__dirname, './store-e2e'), - path.join(__dirname, './config/config-scoped-e2e.yaml'), 'http://0.0.0.0:55558/', 55558); - const config2 = new VerdaccioConfig(path.join(__dirname, './store-e2e'), - path.join(__dirname, './config/config-protected-e2e.yaml'), 'http://0.0.0.0:55552/', 55552); - const server1 = new Server.default(config1.domainPath); - const server2 = new Server.default(config2.domainPath); - const process1 = new VerdaccioProcess.default(config1, server1, false); - const process2 = new VerdaccioProcess.default(config2, server2, false); - const fork = await process1.init(); - const fork2 = await process2.init(); - this.global.__VERDACCIO_E2E__ = fork[0]; - this.global.__VERDACCIO__PROTECTED_E2E__ = fork2[0]; - - console.log(yellow('Setup Test Environment.')); - await super.setup(); - const wsEndpoint = fs.readFileSync(path.join(DIR, 'wsEndpoint'), 'utf8'); - if (!wsEndpoint) { - throw new Error('wsEndpoint not found') - } - this.global.__SERVER__ = server1; - this.global.__SERVER_PROTECTED__ = server2; - this.global.__BROWSER__ = await puppeteer.connect({ - browserWSEndpoint: wsEndpoint, - }) - } - - async teardown() { - console.log(yellow('Teardown Test Environment.')); - await super.teardown(); - this.global.__VERDACCIO_E2E__.stop(); - this.global.__VERDACCIO__PROTECTED_E2E__.stop(); - } - - runScript(script) { - return super.runScript(script); - } -} - -module.exports = PuppeteerEnvironment; diff --git a/test/e2e/setup.js b/test/e2e/setup.js deleted file mode 100644 index 5fd4d283e..000000000 --- a/test/e2e/setup.js +++ /dev/null @@ -1,16 +0,0 @@ -const { green } = require('kleur'); -const puppeteer = require('puppeteer'); -const fs = require('fs'); -const mkdirp = require('mkdirp'); -const os = require('os'); -const path = require('path'); - -const DIR = path.join(os.tmpdir(), 'jest_puppeteer_global_setup'); - -module.exports = async function() { - console.log(green('Setup Puppeteer')); - const browser = await puppeteer.launch({ headless: true, /* slowMo: 300 */ args: ['--no-sandbox'] }); - global.__BROWSER__ = browser; - mkdirp.sync(DIR); - fs.writeFileSync(path.join(DIR, 'wsEndpoint'), browser.wsEndpoint()); -}; diff --git a/test/e2e/teardown.js b/test/e2e/teardown.js deleted file mode 100644 index defef307f..000000000 --- a/test/e2e/teardown.js +++ /dev/null @@ -1,12 +0,0 @@ -const { green } = require('kleur'); -const rimraf = require('rimraf'); -const os = require('os'); -const path = require('path'); - -const DIR = path.join(os.tmpdir(), 'jest_puppeteer_global_setup'); - -module.exports = async function() { - console.log(green('Teardown Puppeteer')); - await global.__BROWSER__.close(); - rimraf.sync(DIR) -}; diff --git a/test/functional/notifications/notify.ts b/test/functional/notifications/notify.ts deleted file mode 100644 index 6f1642d86..000000000 --- a/test/functional/notifications/notify.ts +++ /dev/null @@ -1,177 +0,0 @@ -import _ from 'lodash'; - -import { HEADERS } from '../../../src/lib/constants'; -import { notify } from '../../../src/lib/notify'; -import { DOMAIN_SERVERS, PORT_SERVER_APP } from '../config.functional'; -import { RemoteUser } from '@verdaccio/types'; - -export default function (express) { - const config = { - notify: { - method: 'POST', - headers: [ - { - 'Content-Type': HEADERS.JSON - } - ], - endpoint: `http://${DOMAIN_SERVERS}:${PORT_SERVER_APP}/api/notify`, - // eslint-disable-next-line max-len - content: `{"color":"green","message":"New package published: * {{ name }}*. Publisher name: * {{ publisher.name }} *.","notify":true,"message_format":"text"}` - } - }; - - const publisherInfo: RemoteUser = { - name: 'publisher-name-test', - real_groups: [], - groups: [] - }; - - describe('notifications', () => { - function parseBody(notification) { - const jsonBody = JSON.parse(notification); - - return jsonBody; - } - - beforeAll(function () { - express.post('/api/notify', function (req, res) { - res.send(req.body); - }); - express.post('/api/notify/bad', function (req, res) { - res.status(400); - res.send('bad response'); - }); - }); - - test('notification should be send', (done) => { - const metadata = { - name: 'pkg-test' - }; - - // @ts-ignore - notify(metadata, config, publisherInfo, 'foo').then( - function (body) { - const jsonBody = parseBody(body); - expect( - `New package published: * ${metadata.name}*. Publisher name: * ${publisherInfo.name} *.` - ).toBe(jsonBody.message); - done(); - }, - function (err) { - expect(err).toBeDefined(); - done(); - } - ); - }); - - test('notification should be send single header', (done) => { - const metadata = { - name: 'pkg-test' - }; - - const configMultipleHeader = _.cloneDeep(config); - configMultipleHeader.notify.headers = { - // @ts-ignore - 'Content-Type': HEADERS.JSON - }; - - // @ts-ignore - notify(metadata, configMultipleHeader, publisherInfo).then( - function (body) { - const jsonBody = parseBody(body); - expect( - `New package published: * ${metadata.name}*. Publisher name: * ${publisherInfo.name} *.` - ).toBe(jsonBody.message); - done(); - }, - function (err) { - expect(err).toBeDefined(); - done(); - } - ); - }); - - test('notification should be send multiple notifications endpoints', (done) => { - const metadata = { - name: 'pkg-test' - }; - // let notificationsCounter = 0; - - const multipleNotificationsEndpoint = { - notify: [] - }; - - for (let i = 0; i < 10; i++) { - const notificationSettings = _.cloneDeep(config.notify); - // basically we allow al notifications - // @ts-ignore - notificationSettings.packagePattern = /^pkg-test$/; - // notificationSettings.packagePatternFlags = 'i'; - // @ts-ignore - multipleNotificationsEndpoint.notify.push(notificationSettings); - } - - // @ts-ignore - notify(metadata, multipleNotificationsEndpoint, publisherInfo).then( - function (body) { - console.log('--->body', body); - body.forEach(function (notification) { - const jsonBody = parseBody(notification); - expect( - `New package published: * ${metadata.name}*. Publisher name: * ${publisherInfo.name} *.` - ).toBe(jsonBody.message); - }); - done(); - }, - function (err) { - expect(err).toBeDefined(); - done(); - } - ); - }); - - test('notification should fails', (done) => { - const metadata = { - name: 'pkg-test' - }; - const configFail = _.cloneDeep(config); - configFail.notify.endpoint = `http://${DOMAIN_SERVERS}:${PORT_SERVER_APP}/api/notify/bad`; - - // @ts-ignore - notify(metadata, configFail, publisherInfo).then( - function () { - expect(false).toBe('This service should fails with status code 400'); - done(); - }, - function (err) { - expect(err).toEqual('bad response'); - done(); - } - ); - }); - - test('publisher property should not be overridden if it exists in metadata', (done) => { - const metadata = { - name: 'pkg-test', - publisher: { - name: 'existing-publisher-name' - } - }; - - // @ts-ignore - notify(metadata, config, publisherInfo).then( - function (body) { - const jsonBody = parseBody(body); - expect( - `New package published: * ${metadata.name}*. Publisher name: * ${metadata.publisher.name} *.` - ).toBe(jsonBody.message); - done(); - }, - function (err) { - expect(err).toBeDefined(); - done(); - } - ); - }); - }); -} diff --git a/test/functional/package/scoped.ts b/test/functional/package/scoped.ts deleted file mode 100644 index 12605d965..000000000 --- a/test/functional/package/scoped.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { HEADERS, HTTP_STATUS } from '../../../src/lib/constants'; -import { DOMAIN_SERVERS, PORT_SERVER_1, PORT_SERVER_2 } from '../config.functional'; -import { generateSha } from '../lib/test.utils'; -import { DIST_TAGS } from '../../../src/lib/constants'; - -export default function (server, server2) { - const SCOPE = '@test/scoped'; - const PKG_VERSION = '1.0.0'; - const PKG_NAME = 'scoped'; - - describe('test-scoped', () => { - beforeAll(function () { - return server - .request({ - uri: '/@test%2fscoped', - headers: { - 'content-type': HEADERS.JSON - }, - method: 'PUT', - json: require('./scoped.json') - }) - .status(HTTP_STATUS.CREATED); - }); - - test('should publish scope package', () => {}); - - describe('should get scoped packages tarball', () => { - const uploadScopedTarBall = (server) => { - return server - .getTarball(SCOPE, `${PKG_NAME}-${PKG_VERSION}.tgz`) - .status(HTTP_STATUS.OK) - .then(function (body) { - // not real sha due to utf8 conversion - expect(generateSha(body)).toEqual('6e67b14e2c0e450b942e2bc8086b49e90f594790'); - }); - }; - - test('should be a scoped tarball from server1', () => { - return uploadScopedTarBall(server); - }); - - test('should be a scoped tarball from server2', () => { - return uploadScopedTarBall(server2); - }); - }); - - describe('should retrieve scoped packages', () => { - const testScopePackage = (server, port) => - server - .getPackage(SCOPE) - .status(HTTP_STATUS.OK) - .then(function (body) { - expect(body.name).toBe(SCOPE); - expect(body.versions[PKG_VERSION].name).toBe(SCOPE); - expect(body.versions[PKG_VERSION].dist.tarball).toBe( - `http://${DOMAIN_SERVERS}:${port}/@test%2fscoped/-/${PKG_NAME}-${PKG_VERSION}.tgz` - ); - expect(body[DIST_TAGS]).toEqual({ latest: PKG_VERSION }); - }); - - test('scoped package on server1', () => testScopePackage(server, PORT_SERVER_1)); - test('scoped package on server2', () => testScopePackage(server2, PORT_SERVER_2)); - }); - - describe('should retrieve a scoped packages under nginx', () => { - test('should work nginx workaround', () => { - return server2 - .request({ - uri: '/@test/scoped/1.0.0' - }) - .status(HTTP_STATUS.OK) - .then(function (body) { - expect(body.name).toEqual(SCOPE); - expect(body.dist.tarball).toEqual( - `http://${DOMAIN_SERVERS}:${PORT_SERVER_2}/@test%2fscoped/-/${PKG_NAME}-${PKG_VERSION}.tgz` - ); - }); - }); - }); - }); -} diff --git a/test/functional/plugins/middleware.ts b/test/functional/plugins/middleware.ts deleted file mode 100644 index 49f88c56f..000000000 --- a/test/functional/plugins/middleware.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { HTTP_STATUS } from '../../../src/lib/constants'; - -export default function (server2) { - describe('test plugin middlewares', () => { - test('should serve the registered route ES5', () => { - return server2 - .request({ - uri: '/test/route', - method: 'GET' - }) - .status(HTTP_STATUS.OK) - .body_ok('this is a custom route'); - }); - - test('should serve the registered route ES6', () => { - return server2 - .request({ - uri: '/test/route/es6', - method: 'GET' - }) - .status(HTTP_STATUS.OK) - .body_ok('this is a custom route es6'); - }); - }); -} diff --git a/test/functional/readme/readme.ts b/test/functional/readme/readme.ts deleted file mode 100644 index 96f708874..000000000 --- a/test/functional/readme/readme.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { DEFAULT_NO_README, HTTP_STATUS } from '../../../src/lib/constants'; - -import pkgReadmeJSON from './pkg-readme.json'; -import pkgNoReadmeJSON from './pkg-no-readme.json'; -import pkgNoReadmeJSONOldFormat from './pkg-readme-npm6.json'; - -export default function (server, server2) { - describe('should test readme', () => { - const README_PKG1 = 'readme-test'; - const README_PKG2 = 'readme-test-no-readme'; - const README_MESSAGE = 'this is a readme'; - const README_PKG3 = 'readme-test-npm6'; - - beforeAll(async function () { - await server.putPackage('readme-test', pkgReadmeJSON).status(HTTP_STATUS.CREATED); - await server.putPackage(README_PKG2, pkgNoReadmeJSON).status(HTTP_STATUS.CREATED); - await server.putPackage(README_PKG3, pkgNoReadmeJSONOldFormat).status(HTTP_STATUS.CREATED); - }); - - test('add pkg', () => {}); - - describe('should check readme file', () => { - const matchReadme = (serverRef, pkgName = README_PKG1, readmeMessage = README_MESSAGE) => { - return serverRef - .request({ - uri: `/-/verdaccio/package/readme/${pkgName}` - }) - .status(HTTP_STATUS.OK) - .then(function (body) { - expect(body).toEqual(`

${readmeMessage}

`); - }); - }; - - test('should fetch server2 over uplink server1', () => { - return matchReadme(server, README_PKG1, README_MESSAGE); - }); - - test('should fetch package on local server1', () => { - return matchReadme(server2, README_PKG1, README_MESSAGE); - }); - - test('should fetch not found readme server2 over uplink server1', () => { - return matchReadme(server, README_PKG2, DEFAULT_NO_README); - }); - - test('should fetch found readme special case for npm6', () => { - return matchReadme(server, README_PKG3, DEFAULT_NO_README); - }); - - test('should fetch not found readme package on local server1', () => { - return matchReadme(server2, README_PKG2, DEFAULT_NO_README); - }); - }); - }); -} diff --git a/test/functional/sanity/racycrash.ts b/test/functional/sanity/racycrash.ts deleted file mode 100644 index 86a303bd3..000000000 --- a/test/functional/sanity/racycrash.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { DOMAIN_SERVERS, PORT_SERVER_APP } from '../config.functional'; -import { API_ERROR, HEADER_TYPE, HTTP_STATUS } from '../../../src/lib/constants'; - -export default function (server, express) { - describe('shoul test for unexpected client hangs', () => { - let handleResponseTarball; - - beforeAll(function () { - express.get('/testexp-racycrash', function (request, response) { - response.send({ - name: 'testexp-racycrash', - versions: { - '0.1.0': { - name: 'testexp_tags', - version: '0.1.0', - dist: { - shasum: 'fake', - tarball: `http://${DOMAIN_SERVERS}:${PORT_SERVER_APP}/testexp-racycrash/-/test.tar.gz` - } - } - } - }); - }); - - express.get('/testexp-racycrash/-/test.tar.gz', function (request, response) { - handleResponseTarball(response); - }); - }); - - test('should not crash on error if client disconnects', (callback) => { - handleResponseTarball = function (res) { - res.header(HEADER_TYPE.CONTENT_LENGTH, 1e6); - res.write('test test test'); - setTimeout(function () { - res.write('-'); - // destroy the connection - res.socket.destroy(); - cb(); - }, HTTP_STATUS.OK); - }; - - server.request({ uri: '/testexp-racycrash/-/test.tar.gz' }).then(function (body) { - expect(body).toEqual('test test test'); - }); - - function cb() { - // test for NOT crashing - server - .request({ uri: '/testexp-racycrash' }) - .status(HTTP_STATUS.OK) - .then(function () { - callback(); - }); - } - }); - - test('should not store tarball', () => { - handleResponseTarball = function (res) { - res.socket.destroy(); - }; - - return server - .request({ uri: '/testexp-racycrash/-/test.tar.gz' }) - .body_error(API_ERROR.INTERNAL_SERVER_ERROR); - }); - }); -} diff --git a/test/functional/search/simple.search.ts b/test/functional/search/simple.search.ts deleted file mode 100644 index 6544859aa..000000000 --- a/test/functional/search/simple.search.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { API_MESSAGE, HTTP_STATUS } from '../../../src/lib/constants'; -import pkgExample from './search.json'; - -export default function (server, server2, express) { - describe('should test search a published package', () => { - const PKG_NAME = 'testpkg-search'; - - beforeAll(function () { - return server - .putPackage(PKG_NAME, pkgExample) - .status(HTTP_STATUS.CREATED) - .body_ok(API_MESSAGE.PKG_CREATED); - }); - - describe('should test simple search', () => { - const check = (medatada) => { - medatada[PKG_NAME].time.modified = '2014-10-02T07:07:51.000Z'; - expect(medatada[PKG_NAME]).toEqual({ - name: PKG_NAME, - description: '', - author: '', - license: 'ISC', - 'dist-tags': { - latest: '0.0.1' - }, - maintainers: [ - { - name: 'alex', - email: 'user@domain.com' - } - ], - readmeFilename: '', - time: { - modified: '2014-10-02T07:07:51.000Z' - }, - versions: { - '0.0.1': 'latest' - }, - repository: { - type: 'git', - url: '' - } - }); - }; - - beforeAll(function () { - express.get('/-/all', (req, res) => { - res.send({}); - }); - }); - - test('server1 - search', () => { - return server.request({ uri: '/-/all' }).status(HTTP_STATUS.OK).then(check); - }); - - test('server2 - search', () => { - return server2.request({ uri: '/-/all' }).status(HTTP_STATUS.OK).then(check); - }); - }); - }); -} diff --git a/test/functional/tags/tags.ts b/test/functional/tags/tags.ts deleted file mode 100644 index 01c17c2ba..000000000 --- a/test/functional/tags/tags.ts +++ /dev/null @@ -1,197 +0,0 @@ -import _ from 'lodash'; -import { readFile } from '../lib/test.utils'; -import { HTTP_STATUS } from '../../../src/lib/constants'; - -const readTags = () => readFile('../fixtures/tags.json'); - -export default function (server, express) { - test('tags - testing for 404', () => { - return ( - server - .getPackage('testexp_tags') - // shouldn't exist yet - .status(HTTP_STATUS.NOT_FOUND) - .body_error(/no such package/) - ); - }); - - describe('tags', () => { - beforeAll(function () { - express.get('/testexp_tags', function (req, res) { - let f = readTags() - .toString() - .replace(/__NAME__/g, 'testexp_tags'); - res.send(JSON.parse(f)); - }); - }); - - test('fetching package again', () => { - return server - .getPackage('testexp_tags') - .status(200) - .then(function (body) { - expect(_.isObject(body.versions['1.1.0'])).toBe(true); - // note: 5.4.3 is invalid tag, 0.1.3alpha is highest semver - expect(body['dist-tags'].latest).toEqual('1.1.0'); - expect(body['dist-tags'].bad).toEqual(undefined); - }); - }); - - const versions = ['0.1.1alpha', '0.1.1-alpha', '0000.00001.001-alpha']; - - versions.forEach(function (ver) { - test('fetching ' + ver, () => { - return server - .request({ uri: '/testexp_tags/' + ver }) - .status(200) - .then(function (body) { - expect(body.version).toEqual('0.1.1alpha'); - }); - }); - }); - }); - - describe('dist-tags methods', () => { - beforeAll(function () { - express.get('/testexp_tags2', function (req, res) { - let f = readTags() - .toString() - .replace(/__NAME__/g, 'testexp_tags2'); - res.send(JSON.parse(f)); - }); - }); - - // populate cache - beforeAll(function () { - return server.getPackage('testexp_tags2').status(200); - }); - - test('fetching tags', () => { - return server - .request({ - method: 'GET', - uri: '/-/package/testexp_tags2/dist-tags' - }) - .status(200) - .then(function (body) { - const expected = { - latest: '1.1.0' - }; - - expect(body).toEqual(expected); - }); - }); - - test('merging tags', () => { - return server - .request({ - method: 'POST', - uri: '/-/package/testexp_tags2/dist-tags', - json: { - foo: '0.1.2', - quux: '0.1.0' - } - }) - .status(201) - .body_ok(/updated/) - .then(function () { - return server - .request({ - method: 'GET', - uri: '/-/package/testexp_tags2/dist-tags' - }) - .status(200) - .then(function (body) { - const expected = { - latest: '1.1.0', - foo: '0.1.2', - quux: '0.1.0' - }; - - expect(body).toEqual(expected); - }); - }); - }); - - test('should add a dist-tag called foo', () => { - return server - .request({ - method: 'PUT', - uri: '/-/package/testexp_tags2/dist-tags/foo', - json: '0.1.3alpha' - }) - .status(201) - .body_ok(/tagged/) - .then(function () { - return server - .request({ - method: 'GET', - uri: '/-/package/testexp_tags2/dist-tags' - }) - .status(200) - .then(function (body) { - const expected = { - foo: '0.1.3alpha', - quux: '0.1.0', - latest: '1.1.0' - }; - - expect(body).toEqual(expected); - }); - }); - }); - - test('should remove a dis-tag called quux', () => { - return server - .request({ - method: 'DELETE', - uri: '/-/package/testexp_tags2/dist-tags/latest' - }) - .status(201) - .body_ok(/removed/) - .then(function () { - return server - .request({ - method: 'GET', - uri: '/-/package/testexp_tags2/dist-tags' - }) - .status(200) - .then(function (body) { - const expected = { - latest: '1.1.0', - quux: '0.1.0', - foo: '0.1.3alpha' - }; - - expect(body).toEqual(expected); - }); - }); - }); - - test('should remove a dis-tag called foo', () => { - return server - .request({ - method: 'DELETE', - uri: '/-/package/testexp_tags2/dist-tags/foo' - }) - .status(201) - .body_ok(/removed/) - .then(function () { - return server - .request({ - method: 'GET', - uri: '/-/package/testexp_tags2/dist-tags' - }) - .status(200) - .then(function (body) { - const expected = { - latest: '1.1.0', - quux: '0.1.0' - }; - - expect(body).toEqual(expected); - }); - }); - }); - }); -} diff --git a/test/jest.config.e2e.js b/test/jest.config.e2e.js deleted file mode 100644 index c64b29ebe..000000000 --- a/test/jest.config.e2e.js +++ /dev/null @@ -1,29 +0,0 @@ -/* eslint comma-dangle: 0 */ - -module.exports = { - name: 'verdaccio-e2e-jest', - verbose: true, - collectCoverage: false, - globalSetup: './e2e/pre-setup.js', - globalTeardown: './e2e/teardown.js', - testEnvironment: './e2e/puppeteer_environment.js', - testRegex: '(/e2e.*\\.spec)\\.js', - modulePathIgnorePatterns: [ - '/unit/partials/mock-store/.*/package.json', - '/functional/store/.*/package.json', - '/unit/partials/store/.*/package.json', - '/../coverage', - '/../docs', - '/../debug', - '/../scripts', - '/../.circleci', - '/../tools', - '/../wiki', - '/../systemd', - '/../flow-typed', - 'unit/partials/mock-store/.*/package.json', - 'functional/store/.*/package.json', - '/../build', - '/../.vscode/', - ] -}; diff --git a/test/lib/server_process.ts b/test/lib/server_process.ts deleted file mode 100644 index c064085b7..000000000 --- a/test/lib/server_process.ts +++ /dev/null @@ -1,93 +0,0 @@ -import _ from 'lodash'; -import rimRaf from 'rimraf'; -import path from 'path'; -import { fork } from 'child_process'; -import { CREDENTIALS } from '../functional/config.functional'; -import { HTTP_STATUS } from '../../src/lib/constants'; -import { IVerdaccioConfig, IServerBridge, IServerProcess } from '../types'; - -export default class VerdaccioProcess implements IServerProcess { - private bridge: IServerBridge; - private config: IVerdaccioConfig; - private childFork: any; - private isDebug: boolean; - private silence: boolean; - private cleanStore: boolean; - - public constructor( - config: IVerdaccioConfig, - bridge: IServerBridge, - silence = true, - isDebug = false, - cleanStore = true - ) { - this.config = config; - this.bridge = bridge; - this.silence = silence; - this.isDebug = isDebug; - this.cleanStore = cleanStore; - } - - public init(verdaccioPath = '../../bin/verdaccio'): Promise { - return new Promise((resolve, reject) => { - if (this.cleanStore) { - rimRaf(this.config.storagePath, (err) => { - if (_.isNil(err) === false) { - reject(err); - } - - this._start(verdaccioPath, resolve, reject); - }); - } else { - this._start(verdaccioPath, resolve, reject); - } - }); - } - - private _start(verdaccioPath: string, resolve: Function, reject: Function) { - const verdaccioRegisterWrap: string = path.join(__dirname, verdaccioPath); - let childOptions = { - silent: true - }; - - if (this.isDebug) { - // @ts-ignore - const debugPort = parseInt(this.config.port, 10) + 5; - - childOptions = Object.assign({}, childOptions, { - execArgv: [`--inspect=${debugPort}`] - }); - } - - const { configPath, port } = this.config; - this.childFork = fork( - verdaccioRegisterWrap, - ['-c', configPath, '-l', port as string], - childOptions - ); - - this.childFork.on('message', (msg) => { - // verdaccio_started is a message that comes from verdaccio in debug mode that notify has been started - if ('verdaccio_started' in msg) { - this.bridge - .debug() - .status(HTTP_STATUS.OK) - .then((body) => { - this.bridge - .auth(CREDENTIALS.user, CREDENTIALS.password) - .status(HTTP_STATUS.CREATED) - .body_ok(new RegExp(CREDENTIALS.user)) - .then(() => resolve([this, body.pid]), reject); - }, reject); - } - }); - - this.childFork.on('error', (err) => reject([err, this])); - this.childFork.on('disconnect', (err) => reject([err, this])); - this.childFork.on('exit', (err) => reject([err, this])); - } - - public stop(): void { - return this.childFork.kill('SIGINT'); - } -} diff --git a/test/lib/utils-test.ts b/test/lib/utils-test.ts deleted file mode 100644 index 831da540d..000000000 --- a/test/lib/utils-test.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { Version } from '@verdaccio/types'; - -export function generateNewVersion( - pkgName: string, - version: string, - shashum = '238e7641e59508dc9c20eb4ad37a8aa57ab777b4' -): Version { - // $FlowFixMe - return { - name: pkgName, - version: version, - description: '', - main: 'index.js', - dependencies: { - test: '^1.4.1' - }, - author: '', - license: 'ISC', - readme: 'ERROR: No README data found!', - _id: `${pkgName}@${version}`, - _npmVersion: '5.5.1', - _npmUser: { - name: 'Foo' - }, - dist: { - integrity: - 'sha512-zVEqt1JUCOPsash9q4wMkJEDPD+QCx95TRhQII+JnoS31uBUKoZxhzvvUJCcLVy2CQG4QdwXARU7dYWPnrwhGg==', - shasum: shashum, - tarball: `http:\/\/localhost:4873\/${pkgName}\/-\/${pkgName}-${version}.tgz` - } - }; -} diff --git a/test/unit/__helper/expects.ts b/test/unit/__helper/expects.ts deleted file mode 100644 index 350ea02d6..000000000 --- a/test/unit/__helper/expects.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { DIST_TAGS, LATEST } from '../../../src/lib/constants'; - -/** - * Verify whether the package tag match with the desired version. - */ -export function getTaggedVersionFromPackage(pkg, pkgName, tag: string = LATEST, version: string) { - // extract the tagged version - const taggedVersion = pkg[DIST_TAGS][tag]; - expect(taggedVersion).toBeDefined(); - expect(taggedVersion).toEqual(version); - - // the version must exist - const latestPkg = pkg.versions[taggedVersion]; - expect(latestPkg).toBeDefined(); - // the name must match - expect(latestPkg.name).toEqual(pkgName); - - return latestPkg; -} diff --git a/test/unit/__helper/mock.ts b/test/unit/__helper/mock.ts deleted file mode 100644 index 705c72e90..000000000 --- a/test/unit/__helper/mock.ts +++ /dev/null @@ -1,66 +0,0 @@ -import path from 'path'; -import { DOMAIN_SERVERS } from '../../functional/config.functional'; -import VerdaccioProcess from '../../lib/server_process'; -import { VerdaccioConfig } from '../../lib/verdaccio-server'; -import Server from '../../lib/server'; -import { IServerBridge } from '../../types'; - -/** - * Fork a Verdaccio process with a custom configuration. - * - * Usage: - * - * - Fork the process within the beforeAll body. - * - Define a storage (use a specific name) - * - Define a unique port (be careful with conflicts) - * - Set a configuration - * - await / mockServer - * - call done(); - * - * beforeAll(function(done) { - const store = path.join(__dirname, '../partials/store/test-profile-storage'); - const mockServerPort = 55544; - rimraf(store, async () => { - const parsedConfig = parseConfigFile(parseConfigurationProfile()); - const configForTest = _.assign({}, _.cloneDeep(parsedConfig), { - storage: store, - auth: { - htpasswd: { - file: './test-profile-storage/.htpasswd' - } - }, - self_path: store - }); - app = await endPointAPI(configForTest); - mockRegistry = await mockServer(mockServerPort).init(); - done(); - }); - - On finish the test we must close the server - - afterAll(function(done) { - mockRegistry[0].stop(); - done(); - }); - - * - * - * @param port - * @returns {VerdaccioProcess} - */ -export function mockServer(port: number) { - const pathStore = path.join(__dirname, '../partials'); - const storePath = path.join(pathStore, '/mock-store'); - const configPath = path.join(pathStore, '/config-unit-mock-server-test.yaml'); - - const verdaccioConfig = new VerdaccioConfig( - storePath, - configPath, - `http://${DOMAIN_SERVERS}:${port}/`, - port - ); - - const server: IServerBridge = new Server(verdaccioConfig.domainPath); - - return new VerdaccioProcess(verdaccioConfig, server, false, false, false); -} diff --git a/test/unit/__helper/utils.ts b/test/unit/__helper/utils.ts deleted file mode 100644 index 8504800dc..000000000 --- a/test/unit/__helper/utils.ts +++ /dev/null @@ -1,178 +0,0 @@ -import { Package } from '@verdaccio/types'; - -export function generateAttachment() { - return { - content_type: 'application/octet-stream', - data: - 'H4sIAAAAAAAAE+2W32vbMBDH85y/QnjQp9qxLEeBMsbGlocNBmN7bFdQ5WuqxJaEpGQdo//79KPeQsnIw5KUDX/9IOvurLuz/DHSjK/YAiY6jcXSKjk6sMqypHWNdtmD6hlBI0wqQmo8nVbVqMR4OsNoVB66kF1aW8eML+Vv10m9oF/jP6IfY4QyyTrILlD2eqkcm+gVzpdrJrPz4NuAsULJ4MZFWdBkbcByI7R79CRjx0ScCdnAvf+SkjUFWu8IubzBgXUhDPidQlfZ3BhlLpBUKDiQ1cDFrYDmKkNnZwjuhUM4808+xNVW8P2bMk1Y7vJrtLC1u1MmLPjBF40+Cc4ahV6GDmI/DWygVRpMwVX3KtXUCg7Sxp7ff3nbt6TBFy65gK1iffsN41yoEHtdFbOiisWMH8bPvXUH0SP3k+KG3UBr+DFy7OGfEJr4x5iWVeS/pLQe+D+FIv/agIWI6GX66kFuIhT+1gDjrp/4d7WAvAwEJPh0u14IufWkM0zaW2W6nLfM2lybgJ4LTJ0/jWiAK8OcMjt8MW3OlfQppcuhhQ6k+2OgkK2Q8DssFPi/IHpU9fz3/+xj5NjDf8QFE39VmE4JDfzPCBn4P4X6/f88f/Pu47zomiPk2Lv/dOv8h+P/34/D/p9CL+Kp67mrGDRo0KBBp9ZPsETQegASAAA=', - length: 512 - }; -} - -export function generateVersion(pkgName, version) { - return { - name: pkgName, - version: version, - description: 'some foo dependency', - main: 'index.js', - scripts: { - test: 'echo "Error: no test specified" && exit 1' - }, - keywords: [], - author: { - name: 'User NPM', - email: 'user@domain.com' - }, - license: 'ISC', - dependencies: { - verdaccio: '^4.0.0' - }, - readme: '# test', - readmeFilename: 'README.md', - _id: `${pkgName}@${version}`, - _npmVersion: '5.5.1', - _npmUser: { - name: 'foo' - }, - dist: { - integrity: - 'sha512-6gHiERpiDgtb3hjqpQH5/i7zRmvYi9pmCjQf2ZMy3QEa9wVk9RgdZaPWUt7ZOnWUPFjcr9cmE6dUBf+XoPoH4g==', - shasum: '2c03764f651a9f016ca0b7620421457b619151b9', // pragma: allowlist secret - tarball: `http:\/\/localhost:5555\/${pkgName}\/-\/${pkgName}-${version}.tgz` - } - }; -} - -/** - * Generates a metadata body including attachments. - * If you intent to build a body for npm publish, please include only one version. - * if you intent to to generate a complete metadata include multiple versions. - */ -export function generatePackageBody(pkgName: string, _versions: string[] = ['1.0.0']): Package { - const latest: string = _versions[_versions.length - 1]; - const versions = _versions.reduce((cat, version) => { - cat[version] = generateVersion(pkgName, version); - return cat; - }, {}); - - const attachtment = _versions.reduce((cat, version) => { - cat[`${pkgName}-${version}.tgz`] = generateAttachment(); - return cat; - }, {}); - - // @ts-ignore - return { - _id: pkgName, - name: pkgName, - readme: '# test', - 'dist-tags': { - latest: latest - }, - versions: versions, - _attachments: attachtment - }; -} - -/** - * The metadata that comes from npm unpublish only contains the versions won't be removed and - * also does not includes any _attachment. - * @param pkgName - * @param _versions - */ -export function generatePackageUnpublish( - pkgName: string, - _versions: string[] = ['1.0.0'] -): Package { - const latest: string = _versions[_versions.length - 1]; - const versions = _versions.reduce((cat, version) => { - cat[version] = generateVersion(pkgName, version); - return cat; - }, {}); - - // @ts-ignore - return { - _id: pkgName, - name: pkgName, - readme: '# test', - // users usually is present when run npm star [pkg] - users: {}, - 'dist-tags': { - latest: latest - }, - versions: versions - }; -} - -export function generateStarMedatada(pkgName: string, users): any { - return { - _id: pkgName, - _rev: '3-b0cdaefc9bdb77c8', - users: users - }; -} - -export function generatePackageMetadata(pkgName: string, version = '1.0.0'): Package { - // @ts-ignore - return { - _id: pkgName, - name: pkgName, - 'dist-tags': { - latest: version - }, - versions: { - [version]: { - name: pkgName, - version: version, - description: '', - main: 'index.js', - scripts: { - test: 'echo "Error: no test specified" && exit 1' - }, - keywords: [], - author: { - name: 'User NPM', - email: 'user@domain.com' - }, - license: 'ISC', - dependencies: { - verdaccio: '^2.7.2' - }, - readme: '# test', - readmeFilename: 'README.md', - _id: `${pkgName}@${version}`, - _npmVersion: '5.5.1', - _npmUser: { - name: 'foo' - }, - dist: { - integrity: - 'sha512-6gHiERpiDgtb3hjqpQH5/i7zRmvYi9pmCjQf2ZMy3QEa9wVk9RgdZaPWUt7ZOnWUPFjcr9cmE6dUBf+XoPoH4g==', - shasum: '2c03764f651a9f016ca0b7620421457b619151b9', // pragma: allowlist secret - tarball: `http:\/\/localhost:5555\/${pkgName}\/-\/${pkgName}-${version}.tgz` - } - } - }, - readme: '# test', - _attachments: { - [`${pkgName}-${version}.tgz`]: { - content_type: 'application/octet-stream', - data: - 'H4sIAAAAAAAAE+2W32vbMBDH85y/QnjQp9qxLEeBMsbGlocNBmN7bFdQ5WuqxJaEpGQdo//79KPeQsnIw5KUDX/9IOvurLuz/DHSjK/YAiY6jcXSKjk6sMqypHWNdtmD6hlBI0wqQmo8nVbVqMR4OsNoVB66kF1aW8eML+Vv10m9oF/jP6IfY4QyyTrILlD2eqkcm+gVzpdrJrPz4NuAsULJ4MZFWdBkbcByI7R79CRjx0ScCdnAvf+SkjUFWu8IubzBgXUhDPidQlfZ3BhlLpBUKDiQ1cDFrYDmKkNnZwjuhUM4808+xNVW8P2bMk1Y7vJrtLC1u1MmLPjBF40+Cc4ahV6GDmI/DWygVRpMwVX3KtXUCg7Sxp7ff3nbt6TBFy65gK1iffsN41yoEHtdFbOiisWMH8bPvXUH0SP3k+KG3UBr+DFy7OGfEJr4x5iWVeS/pLQe+D+FIv/agIWI6GX66kFuIhT+1gDjrp/4d7WAvAwEJPh0u14IufWkM0zaW2W6nLfM2lybgJ4LTJ0/jWiAK8OcMjt8MW3OlfQppcuhhQ6k+2OgkK2Q8DssFPi/IHpU9fz3/+xj5NjDf8QFE39VmE4JDfzPCBn4P4X6/f88f/Pu47zomiPk2Lv/dOv8h+P/34/D/p9CL+Kp67mrGDRo0KBBp9ZPsETQegASAAA=', - length: 512 - } - } - }; -} - -export function generateDeprecateMetadata( - pkgName: string, - version = '1.0.0', - deprecated: string = '' -): Package { - const res = { - ...generatePackageMetadata(pkgName, version), - _attachments: {} - }; - res.versions[version].deprecated = deprecated; - return res; -} diff --git a/test/unit/functionalLibs/request.spec.ts b/test/unit/functionalLibs/request.spec.ts deleted file mode 100644 index f05878a6f..000000000 --- a/test/unit/functionalLibs/request.spec.ts +++ /dev/null @@ -1,89 +0,0 @@ -import _ from 'lodash'; -import smartRequest, { PromiseAssert } from '../../lib/request'; -import { mockServer } from '../__helper/mock'; -import { HTTP_STATUS } from '../../../src/lib/constants'; -import { IRequestPromise } from '../../types'; -import { VerdaccioError } from '@verdaccio/commons-api'; - -describe('Request Functional', () => { - jest.setTimeout(20000); - const mockServerPort = 55547; - const restTest = `http://localhost:${55547}/jquery`; - let mockRegistry; - - describe('Request Functional', () => { - test('PromiseAssert', () => { - expect(_.isFunction(smartRequest)).toBeTruthy(); - }); - - test('basic resolve', (done) => { - const requestPromise: IRequestPromise = new PromiseAssert((resolve) => { - resolve(1); - }); - // @ts-ignore - requestPromise.then((result) => { - expect(result).toBe(1); - done(); - }); - }); - }); - describe('smartRequest Rest', () => { - beforeAll(async () => { - mockRegistry = await mockServer(mockServerPort).init(); - }); - - afterAll(function (done) { - mockRegistry[0].stop(); - done(); - }); - - test('basic rest', (done) => { - const options: any = { - url: restTest, - method: 'GET' - }; - - smartRequest(options).then((result) => { - expect(_.isString(result)).toBeTruthy(); - done(); - }); - }); - - describe('smartRequest Status', () => { - test('basic check status 200', (done) => { - const options: any = { - url: restTest, - method: 'GET' - }; - // @ts-ignore - smartRequest(options) - // @ts-ignore - .status(HTTP_STATUS.OK) - .then((result) => { - expect(JSON.parse(result).name).toBe('jquery'); - done(); - }); - }); - - test('basic check status 404', (done) => { - const options: any = { - url: 'http://www.google.fake', - method: 'GET' - }; - // @ts-ignore - smartRequest(options) - // @ts-ignore - .status(HTTP_STATUS.NOT_FOUND) - .then( - () => { - // we do not intent to resolve this - }, - (error: VerdaccioError) => { - expect(error.code).toBe('ENOTFOUND'); - done(); - } - ); - }); - }); - }); -}); diff --git a/test/unit/modules/access/pkg.access.spec.ts b/test/unit/modules/access/pkg.access.spec.ts deleted file mode 100644 index 126f5d76f..000000000 --- a/test/unit/modules/access/pkg.access.spec.ts +++ /dev/null @@ -1,112 +0,0 @@ -import request from 'supertest'; -import path from 'path'; -import rimraf from 'rimraf'; - -import { setup } from '../../../../src/lib/logger'; - -setup([]); - -import { HEADERS, HTTP_STATUS } from '../../../../src/lib/constants'; -import configDefault from '../../partials/config'; -import endPointAPI from '../../../../src/api'; -import { mockServer } from '../../__helper/mock'; -import { DOMAIN_SERVERS } from '../../../functional/config.functional'; - -require('../../../../src/lib/logger').setup([]); - -describe('api with no limited access configuration', () => { - let app; - let mockRegistry; - const store = path.join(__dirname, '../../partials/store/access-storage'); - jest.setTimeout(10000); - - beforeAll(function (done) { - const mockServerPort = 55530; - - rimraf(store, async () => { - const configForTest = configDefault( - { - auth: { - htpasswd: { - file: './access-storage/htpasswd-pkg-access' - } - }, - self_path: store, - uplinks: { - remote: { - url: `http://${DOMAIN_SERVERS}:${mockServerPort}` - } - }, - logs: [{ type: 'stdout', format: 'pretty', level: 'warn' }] - }, - 'pkg.access.spec.yaml' - ); - - app = await endPointAPI(configForTest); - mockRegistry = await mockServer(mockServerPort).init(); - done(); - }); - }); - - afterAll(function (done) { - rimraf(store, (err) => { - if (err) { - mockRegistry[0].stop(); - return done(err); - } - - mockRegistry[0].stop(); - return done(); - }); - }); - - describe('test proxy packages partially restricted', () => { - test('should test fails on fetch endpoint /-/not-found', (done) => { - request(app) - // @ts-ignore - .get('/not-found-for-sure') - .set(HEADERS.CONTENT_TYPE, HEADERS.JSON_CHARSET) - .expect(HEADERS.CONTENT_TYPE, /json/) - .expect(HTTP_STATUS.NOT_FOUND) - .end(function (err) { - if (err) { - return done(err); - } - - done(); - }); - }); - - test('should test fetch endpoint /-/jquery', (done) => { - request(app) - // @ts-ignore - .get('/jquery') - .set(HEADERS.CONTENT_TYPE, HEADERS.JSON_CHARSET) - .expect(HEADERS.CONTENT_TYPE, /json/) - .expect(HTTP_STATUS.OK) - .end(function (err) { - if (err) { - return done(err); - } - - done(); - }); - }); - - test('should success on fetch endpoint /-/vue', (done) => { - request(app) - // @ts-ignore - .get('/vue') - .set(HEADERS.CONTENT_TYPE, HEADERS.JSON_CHARSET) - .expect(HEADERS.CONTENT_TYPE, /json/) - .expect(HTTP_STATUS.OK) - .end(function (err) { - if (err) { - return done(err); - } - - done(); - }); - }); - }); -}); diff --git a/test/unit/modules/auth/crypto-utils.spec.ts b/test/unit/modules/auth/crypto-utils.spec.ts deleted file mode 100644 index d94288768..000000000 --- a/test/unit/modules/auth/crypto-utils.spec.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { aesDecrypt, aesEncrypt } from '../../../../src/lib/crypto-utils'; -import { convertPayloadToBase64 } from '../../../../src/lib/utils'; - -describe('test crypto utils', () => { - describe('default encryption', () => { - test('decrypt payload flow', () => { - const payload = 'juan'; - const token = aesEncrypt(Buffer.from(payload), '12345').toString('base64'); - - const data = aesDecrypt(convertPayloadToBase64(token), '12345').toString('utf8'); - - expect(payload).toEqual(data); - }); - }); -}); diff --git a/test/unit/modules/basic_system.spec.ts b/test/unit/modules/basic_system.spec.ts deleted file mode 100644 index 2c1ea5e24..000000000 --- a/test/unit/modules/basic_system.spec.ts +++ /dev/null @@ -1,62 +0,0 @@ -import endPointAPI from '../../../src/api/index'; -import { API_ERROR } from '../../../src/lib/constants'; - -import express from 'express'; -import request from 'request'; -import rimraf from 'rimraf'; -import config from '../partials/config/index'; - -import { setup } from '../../../src/lib/logger'; - -setup([{ type: 'stdout', format: 'pretty', level: 'trace' }]); - -const app = express(); -const server = require('http').createServer(app); - -describe('basic system test', () => { - let port; - jest.setTimeout(20000); - - beforeAll(function (done) { - rimraf(__dirname + '/store/test-storage', done); - }); - - beforeAll(async function (done) { - app.use(await endPointAPI(config())); - - server.listen(0, function () { - port = server.address().port; - done(); - }); - }); - - afterAll((done) => { - server.close(done); - }); - - test('server should respond on /', (done) => { - request( - { - url: 'http://localhost:' + port + '/' - }, - function (err, res, body) { - expect(err).toBeNull(); - expect(body).toMatch(/Verdaccio/); - done(); - } - ); - }); - - test('server should respond on /___not_found_package', (done) => { - request( - { - url: `http://localhost:${port}/___not_found_package` - }, - function (err, res, body) { - expect(err).toBeNull(); - expect(body).toMatch(API_ERROR.NO_PACKAGE); - done(); - } - ); - }); -}); diff --git a/test/unit/modules/plugin/helper/plugin.ts b/test/unit/modules/plugin/helper/plugin.ts deleted file mode 100644 index d16fb9e06..000000000 --- a/test/unit/modules/plugin/helper/plugin.ts +++ /dev/null @@ -1,20 +0,0 @@ -import path from 'path'; -import config from '../../../partials/config'; - -export const authProfileConf = config({ - auth: { - [`${path.join(__dirname, '../../../partials/plugin/authenticate.success')}`]: {} - } -}); - -export const authPluginFailureConf = config({ - auth: { - [`${path.join(__dirname, '../../../partials/plugin/authenticate.fail')}`]: {} - } -}); - -export const authPluginPassThrougConf = config({ - auth: { - [`${path.join(__dirname, '../../../partials/plugin/authenticate.passthroug')}`]: {} - } -}); diff --git a/test/unit/modules/search/search.spec.ts b/test/unit/modules/search/search.spec.ts deleted file mode 100644 index 81a454dd8..000000000 --- a/test/unit/modules/search/search.spec.ts +++ /dev/null @@ -1,66 +0,0 @@ -import Search from '../../../../src/lib/search'; -import Config from '../../../../src/lib/config'; -import Storage from '../../../../src/lib/storage'; -import buildConfig from '../../partials/config'; -import { setup } from '../../../../src/lib/logger'; - -setup([]); - -let packages = [ - { - name: 'test1', - description: 'description', - _npmUser: { - name: 'test_user' - } - }, - { - name: 'test2', - description: 'description', - _npmUser: { - name: 'test_user' - } - }, - { - name: 'test3', - description: 'description', - _npmUser: { - name: 'test_user' - } - } -]; - -describe('search', () => { - beforeAll(async function () { - let config = new Config(buildConfig()); - const storage = new Storage(config); - await storage.init(config); - Search.configureStorage(storage); - packages.map(function (item) { - // @ts-ignore - Search.add(item); - }); - }); - - test('search query item', () => { - let result = Search.query('t'); - expect(result).toHaveLength(3); - }); - - test('search remove item', () => { - let item = { - name: 'test6', - description: 'description', - _npmUser: { - name: 'test_user' - } - }; - // @ts-ignore - Search.add(item); - let result = Search.query('test6'); - expect(result).toHaveLength(1); - Search.remove(item.name); - result = Search.query('test6'); - expect(result).toHaveLength(0); - }); -}); diff --git a/test/unit/modules/storage/merge.dist.tags.spec.ts b/test/unit/modules/storage/merge.dist.tags.spec.ts deleted file mode 100644 index 3ef5ff711..000000000 --- a/test/unit/modules/storage/merge.dist.tags.spec.ts +++ /dev/null @@ -1,66 +0,0 @@ -import assert from 'assert'; -let semverSort = require('../../../../src/lib/utils').semverSort; -import { mergeVersions } from '../../../../src/lib/metadata-utils'; - -require('../../../../src/lib/logger').setup([]); - -describe('Storage._merge_versions versions', () => { - test('simple', () => { - let pkg = { - versions: { a: 1, b: 1, c: 1 }, - 'dist-tags': {} - }; - - // @ts-ignore - mergeVersions(pkg, { versions: { a: 2, q: 2 } }); - - assert.deepEqual(pkg, { - versions: { a: 1, b: 1, c: 1, q: 2 }, - 'dist-tags': {} - }); - }); - - test('dist-tags - compat', () => { - let pkg = { - versions: {}, - 'dist-tags': { q: '1.1.1', w: '2.2.2' } - }; - - // @ts-ignore - mergeVersions(pkg, { 'dist-tags': { q: '2.2.2', w: '3.3.3', t: '4.4.4' } }); - - assert.deepEqual(pkg, { - versions: {}, - 'dist-tags': { q: '2.2.2', w: '3.3.3', t: '4.4.4' } - }); - }); - - test('dist-tags - staging', () => { - let pkg = { - versions: {}, - // we've been locally publishing 1.1.x in preparation for the next - // public release - 'dist-tags': { q: '1.1.10', w: '2.2.2' } - }; - // 1.1.2 is the latest public release, but we want to continue testing - // against our local 1.1.10, which may end up published as 1.1.3 in the - // future - - // @ts-ignore - mergeVersions(pkg, { 'dist-tags': { q: '1.1.2', w: '3.3.3', t: '4.4.4' } }); - - assert.deepEqual(pkg, { - versions: {}, - 'dist-tags': { q: '1.1.10', w: '3.3.3', t: '4.4.4' } - }); - }); - - test('semverSort', () => { - assert.deepEqual(semverSort(['1.2.3', '1.2', '1.2.3a', '1.2.3c', '1.2.3-b']), [ - '1.2.3a', - '1.2.3-b', - '1.2.3c', - '1.2.3' - ]); - }); -}); diff --git a/test/unit/modules/uplinks/noProxy.spec.ts b/test/unit/modules/uplinks/noProxy.spec.ts deleted file mode 100644 index 8f5a38d04..000000000 --- a/test/unit/modules/uplinks/noProxy.spec.ts +++ /dev/null @@ -1,96 +0,0 @@ -import ProxyStorage from '../../../../src/lib/up-storage'; - -require('../../../../src/lib/logger').setup([]); - -function setupProxy(host, uplinkConf, appConfig) { - uplinkConf.url = host; - - return new ProxyStorage(uplinkConf, appConfig); -} - -describe('Use proxy', () => { - test('should work fine without proxy', () => { - let x = setupProxy('http://x/x', {}, {}); - - expect(x.proxy).toEqual(undefined); - }); - - test('local config should take priority', () => { - let x = setupProxy('http://x/x', { http_proxy: '123' }, { http_proxy: '456' }); - expect(x.proxy).toEqual('123'); - }); - - test('no_proxy is invalid', () => { - let x = setupProxy('http://x/x', { http_proxy: '123', no_proxy: false }, {}); - - expect(x.proxy).toEqual('123'); - x = setupProxy('http://x/x', { http_proxy: '123', no_proxy: null }, {}); - expect(x.proxy).toEqual('123'); - x = setupProxy('http://x/x', { http_proxy: '123', no_proxy: [] }, {}); - expect(x.proxy).toEqual('123'); - x = setupProxy('http://x/x', { http_proxy: '123', no_proxy: '' }, {}); - expect(x.proxy).toEqual('123'); - }); - - test('no_proxy - simple/include', () => { - let x = setupProxy('http://localhost', { http_proxy: '123' }, { no_proxy: 'localhost' }); - - expect(x.proxy).toEqual(undefined); - }); - - test('no_proxy - simple/not', () => { - let x = setupProxy('http://localhost', { http_proxy: '123' }, { no_proxy: 'blah' }); - - expect(x.proxy).toEqual('123'); - }); - - test('no_proxy - various, single string', () => { - let x = setupProxy('http://blahblah', { http_proxy: '123' }, { no_proxy: 'blah' }); - - expect(x.proxy).toEqual('123'); - x = setupProxy('http://blah.blah', {}, { http_proxy: '123', no_proxy: 'blah' }); - expect(x.proxy).toEqual(undefined); - x = setupProxy('http://blahblah', {}, { http_proxy: '123', no_proxy: '.blah' }); - expect(x.proxy).toEqual('123'); - x = setupProxy('http://blah.blah', { http_proxy: '123', no_proxy: '.blah' }, {}); - expect(x.proxy).toEqual(undefined); - x = setupProxy('http://blah', { http_proxy: '123', no_proxy: '.blah' }, {}); - expect(x.proxy).toEqual(undefined); - x = setupProxy('http://blahh', { http_proxy: '123', no_proxy: 'blah' }, {}); - expect(x.proxy).toEqual('123'); - }); - - test('no_proxy - various, array', () => { - let x = setupProxy('http://blahblah', { http_proxy: '123' }, { no_proxy: 'foo,bar,blah' }); - - expect(x.proxy).toEqual('123'); - x = setupProxy('http://blah.blah', { http_proxy: '123' }, { no_proxy: 'foo,bar,blah' }); - expect(x.proxy).toEqual(undefined); - x = setupProxy('http://blah.foo', { http_proxy: '123' }, { no_proxy: 'foo,bar,blah' }); - expect(x.proxy).toEqual(undefined); - x = setupProxy('http://foo.baz', { http_proxy: '123' }, { no_proxy: 'foo,bar,blah' }); - expect(x.proxy).toEqual('123'); - x = setupProxy('http://blahblah', { http_proxy: '123' }, { no_proxy: ['foo', 'bar', 'blah'] }); - expect(x.proxy).toEqual('123'); - x = setupProxy('http://blah.blah', { http_proxy: '123' }, { no_proxy: ['foo', 'bar', 'blah'] }); - expect(x.proxy).toEqual(undefined); - }); - - test('no_proxy - hostport', () => { - let x = setupProxy('http://localhost:80', { http_proxy: '123' }, { no_proxy: 'localhost' }); - - expect(x.proxy).toEqual(undefined); - x = setupProxy('http://localhost:8080', { http_proxy: '123' }, { no_proxy: 'localhost' }); - expect(x.proxy).toEqual(undefined); - }); - - test('no_proxy - secure', () => { - let x = setupProxy('https://something', { http_proxy: '123' }, {}); - - expect(x.proxy).toEqual(undefined); - x = setupProxy('https://something', { https_proxy: '123' }, {}); - expect(x.proxy).toEqual('123'); - x = setupProxy('https://something', { http_proxy: '456', https_proxy: '123' }, {}); - expect(x.proxy).toEqual('123'); - }); -}); diff --git a/test/unit/modules/utils/utils.spec.ts b/test/unit/modules/utils/utils.spec.ts deleted file mode 100644 index 7808f6540..000000000 --- a/test/unit/modules/utils/utils.spec.ts +++ /dev/null @@ -1,891 +0,0 @@ -import * as httpMocks from 'node-mocks-http'; -import { HEADERS } from '@verdaccio/commons-api'; -import { generateGravatarUrl, GENERIC_AVATAR } from '../../../../src/utils/user'; -import { spliceURL } from '../../../../src/utils/string'; -import { - validateName, - convertDistRemoteToLocalTarballUrls, - parseReadme, - addGravatarSupport, - validatePackage, - validateMetadata, - combineBaseUrl, - getVersion, - normalizeDistTags, - getWebProtocol, - getVersionFromTarball, - sortByName, - formatAuthor, - isHTTPProtocol, - getPublicUrl, -} from '../../../../src/lib/utils'; -import { DIST_TAGS, DEFAULT_USER } from '../../../../src/lib/constants'; -import { logger, setup } from '../../../../src/lib/logger'; -import { readFile } from '../../../functional/lib/test.utils'; - -const readmeFile = (fileName = 'markdown.md') => readFile(`../../unit/partials/readme/${fileName}`); - -setup([]); - -describe('Utilities', () => { - const buildURI = (host, version) => `http://${host}/npm_test/-/npm_test-${version}.tgz`; - const fakeHost = 'fake.com'; - const metadata: any = { - name: 'npm_test', - versions: { - '1.0.0': { - dist: { - tarball: 'http://registry.org/npm_test/-/npm_test-1.0.0.tgz', - }, - }, - '1.0.1': { - dist: { - tarball: 'http://registry.org/npm_test/-/npm_test-1.0.1.tgz', - }, - }, - }, - }; - - const cloneMetadata = (pkg = metadata) => Object.assign({}, pkg); - - describe('API utilities', () => { - describe('Sort packages', () => { - const packages = [ - { - name: 'ghc', - }, - { - name: 'abc', - }, - { - name: 'zxy', - }, - ]; - test('should order ascending', () => { - expect(sortByName(packages)).toEqual([ - { - name: 'abc', - }, - { - name: 'ghc', - }, - { - name: 'zxy', - }, - ]); - }); - - test('should order descending', () => { - expect(sortByName(packages, false)).toEqual([ - { - name: 'zxy', - }, - { - name: 'ghc', - }, - { - name: 'abc', - }, - ]); - }); - }); - - describe('getWebProtocol', () => { - test('should handle undefined header', () => { - expect(getWebProtocol(undefined, 'http')).toBe('http'); - }); - - test('should handle emtpy string', () => { - expect(getWebProtocol('', 'http')).toBe('http'); - }); - - test('should have header priority over request protocol', () => { - expect(getWebProtocol('https', 'http')).toBe('https'); - }); - - test('should have handle empty protocol', () => { - expect(getWebProtocol('https', '')).toBe('https'); - }); - - test('should have handle invalid protocol', () => { - expect(getWebProtocol('ftp', '')).toBe('http'); - }); - - describe('getWebProtocol and HAProxy variant', () => { - // https://github.com/verdaccio/verdaccio/issues/695 - test('should handle http', () => { - expect(getWebProtocol('http,http', 'https')).toBe('http'); - }); - - test('should handle https', () => { - expect(getWebProtocol('https,https', 'http')).toBe('https'); - }); - }); - }); - - describe('convertDistRemoteToLocalTarballUrls', () => { - test('should build a URI for dist tarball based on new domain', () => { - const req = httpMocks.createRequest({ - method: 'GET', - headers: { - host: fakeHost, - }, - protocol: 'http', - url: '/', - }); - const convertDist = convertDistRemoteToLocalTarballUrls(cloneMetadata(), req); - expect(convertDist.versions['1.0.0'].dist.tarball).toEqual(buildURI(fakeHost, '1.0.0')); - expect(convertDist.versions['1.0.1'].dist.tarball).toEqual(buildURI(fakeHost, '1.0.1')); - }); - - test('should return same URI whether host is missing', () => { - const convertDist = convertDistRemoteToLocalTarballUrls(cloneMetadata(), { - headers: {}, - // @ts-ignore - get: () => 'http', - protocol: 'http', - }); - expect(convertDist.versions['1.0.0'].dist.tarball).toEqual(convertDist.versions['1.0.0'].dist.tarball); - }); - }); - - describe('normalizeDistTags', () => { - test('should delete a invalid latest version', () => { - const pkg = cloneMetadata(); - pkg[DIST_TAGS] = { - latest: '20000', - }; - - normalizeDistTags(pkg); - - expect(Object.keys(pkg[DIST_TAGS])).toHaveLength(0); - }); - - test('should define last published version as latest', () => { - const pkg = cloneMetadata(); - pkg[DIST_TAGS] = {}; - - normalizeDistTags(pkg); - - expect(pkg[DIST_TAGS]).toEqual({ latest: '1.0.1' }); - }); - - test('should define last published version as latest with a custom dist-tag', () => { - const pkg = cloneMetadata(); - pkg[DIST_TAGS] = { - beta: '1.0.1', - }; - - normalizeDistTags(pkg); - - expect(pkg[DIST_TAGS]).toEqual({ beta: '1.0.1', latest: '1.0.1' }); - }); - - test('should convert any array of dist-tags to a plain string', () => { - const pkg = cloneMetadata(); - pkg[DIST_TAGS] = { - latest: ['1.0.1'], - }; - - normalizeDistTags(pkg); - - expect(pkg[DIST_TAGS]).toEqual({ latest: '1.0.1' }); - }); - }); - - describe('getVersion', () => { - test('should get the right version', () => { - expect(getVersion(cloneMetadata(), '1.0.0')).toEqual(metadata.versions['1.0.0']); - expect(getVersion(cloneMetadata(), 'v1.0.0')).toEqual(metadata.versions['1.0.0']); - }); - - test('should return nothing on get non existing version', () => { - expect(getVersion(cloneMetadata(), '0')).toBeUndefined(); - expect(getVersion(cloneMetadata(), '2.0.0')).toBeUndefined(); - expect(getVersion(cloneMetadata(), 'v2.0.0')).toBeUndefined(); - expect(getVersion(cloneMetadata(), undefined)).toBeUndefined(); - expect(getVersion(cloneMetadata(), null)).toBeUndefined(); - expect(getVersion(cloneMetadata(), 2)).toBeUndefined(); - }); - }); - - describe('combineBaseUrl', () => { - test('should create a URI', () => { - expect(combineBaseUrl('http', 'domain')).toEqual('http://domain/'); - }); - - test('should create a base url for registry', () => { - expect(combineBaseUrl('http', 'domain.com', '')).toEqual('http://domain.com/'); - expect(combineBaseUrl('http', 'domain.com', '/')).toEqual('http://domain.com/'); - expect(combineBaseUrl('http', 'domain.com', '/prefix/')).toEqual('http://domain.com/prefix/'); - expect(combineBaseUrl('http', 'domain.com', '/prefix/deep')).toEqual('http://domain.com/prefix/deep/'); - expect(combineBaseUrl('http', 'domain.com', 'prefix/')).toEqual('http://domain.com/prefix/'); - expect(combineBaseUrl('http', 'domain.com', 'prefix')).toEqual('http://domain.com/prefix/'); - }); - - test('invalid url prefix', () => { - expect(combineBaseUrl('http', 'domain.com', 'only-prefix')).toEqual('http://domain.com/only-prefix/'); - expect(combineBaseUrl('https', 'domain.com', 'only-prefix')).toEqual('https://domain.com/only-prefix/'); - }); - }); - - describe('validatePackage', () => { - test('should validate package names', () => { - expect(validatePackage('package-name')).toBeTruthy(); - expect(validatePackage('@scope/package-name')).toBeTruthy(); - }); - - test('should fails on validate package names', () => { - expect(validatePackage('package-name/test/fake')).toBeFalsy(); - expect(validatePackage('@/package-name')).toBeFalsy(); - expect(validatePackage('$%$%#$%$#%#$%$#')).toBeFalsy(); - expect(validatePackage('node_modules')).toBeFalsy(); - expect(validatePackage('__proto__')).toBeFalsy(); - expect(validatePackage('favicon.ico')).toBeFalsy(); - }); - - describe('validateName', () => { - test('should fails with no string', () => { - // intended to fail with Typescript, do not remove - // @ts-ignore - expect(validateName(null)).toBeFalsy(); - // @ts-ignore - expect(validateName(undefined)).toBeFalsy(); - }); - - test('good ones', () => { - expect(validateName('verdaccio')).toBeTruthy(); - expect(validateName('some.weird.package-zzz')).toBeTruthy(); - expect(validateName('old-package@0.1.2.tgz')).toBeTruthy(); - // fix https://github.com/verdaccio/verdaccio/issues/1400 - expect(validateName('-build-infra')).toBeTruthy(); - }); - - test('should be valid using uppercase', () => { - expect(validateName('ETE')).toBeTruthy(); - expect(validateName('JSONStream')).toBeTruthy(); - }); - - test('should fails with path seps', () => { - expect(validateName('some/thing')).toBeFalsy(); - expect(validateName('some\\thing')).toBeFalsy(); - }); - - test('should fail with no hidden files', () => { - expect(validateName('.bin')).toBeFalsy(); - }); - - test('should fails with reserved words', () => { - expect(validateName('favicon.ico')).toBeFalsy(); - expect(validateName('node_modules')).toBeFalsy(); - expect(validateName('__proto__')).toBeFalsy(); - }); - - test('should fails with other options', () => { - expect(validateName('pk g')).toBeFalsy(); - expect(validateName('pk\tg')).toBeFalsy(); - expect(validateName('pk%20g')).toBeFalsy(); - expect(validateName('pk+g')).toBeFalsy(); - expect(validateName('pk:g')).toBeFalsy(); - }); - }); - }); - - describe('validateMetadata', () => { - test('should fills an empty metadata object', () => { - // intended to fail with flow, do not remove - // @ts-ignore - expect(Object.keys(validateMetadata({}))).toContain(DIST_TAGS); - // @ts-ignore - expect(Object.keys(validateMetadata({}))).toContain('versions'); - // @ts-ignore - expect(Object.keys(validateMetadata({}))).toContain('time'); - }); - - test('should fails the assertions is not an object', () => { - expect(function () { - // @ts-ignore - validateMetadata(''); - // @ts-ignore - }).toThrow(expect.hasAssertions()); - }); - - test('should fails the assertions is name does not match', () => { - expect(function () { - // @ts-ignore - validateMetadata({}, 'no-name'); - // @ts-ignore - }).toThrow(expect.hasAssertions()); - }); - }); - - describe('getVersionFromTarball', () => { - test('should get the right version', () => { - const simpleName = 'test-name-4.2.12.tgz'; - const complexName = 'test-5.6.4-beta.2.tgz'; - const otherComplexName = 'test-3.5.0-6.tgz'; - expect(getVersionFromTarball(simpleName)).toEqual('4.2.12'); - expect(getVersionFromTarball(complexName)).toEqual('5.6.4-beta.2'); - expect(getVersionFromTarball(otherComplexName)).toEqual('3.5.0-6'); - }); - - test("should don'n fall at incorrect tarball name", () => { - expect(getVersionFromTarball('incorrectName')).toBeUndefined(); - }); - }); - }); - - describe('String utilities', () => { - test('should splice two strings and generate a url', () => { - const url: string = spliceURL('http://domain.com', '/-/static/logo.png'); - - expect(url).toMatch('http://domain.com/-/static/logo.png'); - }); - - test('should splice a empty strings and generate a url', () => { - const url: string = spliceURL('', '/-/static/logo.png'); - - expect(url).toMatch('/-/static/logo.png'); - }); - - test('should check HTTP protocol correctly', () => { - expect(isHTTPProtocol('http://domain.com/-/static/logo.png')).toBeTruthy(); - expect(isHTTPProtocol('https://www.domain.com/-/static/logo.png')).toBeTruthy(); - expect(isHTTPProtocol('//domain.com/-/static/logo.png')).toBeTruthy(); - expect(isHTTPProtocol('file:///home/user/logo.png')).toBeFalsy(); - expect(isHTTPProtocol('file:///F:/home/user/logo.png')).toBeFalsy(); - // Note that uses ftp protocol in src was deprecated in modern browsers - expect(isHTTPProtocol('ftp://1.2.3.4/home/user/logo.png')).toBeFalsy(); - expect(isHTTPProtocol('./logo.png')).toBeFalsy(); - expect(isHTTPProtocol('.\\logo.png')).toBeFalsy(); - expect(isHTTPProtocol('../logo.png')).toBeFalsy(); - expect(isHTTPProtocol('..\\logo.png')).toBeFalsy(); - expect(isHTTPProtocol('../../static/logo.png')).toBeFalsy(); - expect(isHTTPProtocol('..\\..\\static\\logo.png')).toBeFalsy(); - expect(isHTTPProtocol('logo.png')).toBeFalsy(); - expect(isHTTPProtocol('.logo.png')).toBeFalsy(); - expect(isHTTPProtocol('/static/logo.png')).toBeFalsy(); - expect(isHTTPProtocol('F:\\static\\logo.png')).toBeFalsy(); - }); - }); - - describe('User utilities', () => { - test('should generate gravatar url with email', () => { - const gravatarUrl: string = generateGravatarUrl('user@verdaccio.org'); - - expect(gravatarUrl).toMatch('https://www.gravatar.com/avatar/'); - expect(gravatarUrl).not.toMatch('000000000'); - }); - - test('should generate generic gravatar url', () => { - const gravatarUrl: string = generateGravatarUrl(); - - expect(gravatarUrl).toMatch(GENERIC_AVATAR); - }); - }); - - describe('parseReadme', () => { - test('should parse makrdown text to html template', () => { - const markdown = '# markdown'; - expect(parseReadme('testPackage', markdown)).toEqual('

markdown

'); - expect(parseReadme('testPackage', String(readmeFile('markdown.md')))).toMatchSnapshot(); - }); - - test('should pass for conversion of non-ascii to markdown text', () => { - const simpleText = 'simple text'; - const randomText = '%%%%%**##=='; - const randomTextMarkdown = 'simple text \n # markdown'; - - expect(parseReadme('testPackage', randomText)).toEqual('

%%%%%**##==

'); - expect(parseReadme('testPackage', simpleText)).toEqual('

simple text

'); - expect(parseReadme('testPackage', randomTextMarkdown)).toEqual('

simple text

\n

markdown

'); - }); - - test('should show error for no readme data', () => { - const noData = ''; - const spy = jest.spyOn(logger, 'error'); - expect(parseReadme('testPackage', noData)).toEqual('

ERROR: No README data found!

'); - expect(spy).toHaveBeenCalledWith({ packageName: 'testPackage' }, '@{packageName}: No readme found'); - }); - }); - - describe('addGravatarSupport', () => { - test('check for blank object', () => { - // @ts-ignore - expect(addGravatarSupport({})).toEqual({}); - }); - - test('author, contributors and maintainers fields are not present', () => { - const packageInfo = { - latest: {}, - }; - - // @ts-ignore - expect(addGravatarSupport(packageInfo)).toEqual(packageInfo); - }); - - test('author field is a blank object', () => { - const packageInfo = { latest: { author: {} } }; - - // @ts-ignore - expect(addGravatarSupport(packageInfo)).toEqual(packageInfo); - }); - - test('author field is a string type', () => { - const packageInfo = { - latest: { author: 'user@verdccio.org' }, - }; - const result = { - latest: { - author: { - author: 'user@verdccio.org', - avatar: GENERIC_AVATAR, - email: '', - }, - }, - }; - - // @ts-ignore - expect(addGravatarSupport(packageInfo)).toEqual(result); - }); - - test('author field is an object type with author information', () => { - const packageInfo = { - latest: { author: { name: 'verdaccio', email: 'user@verdccio.org' } }, - }; - const result = { - latest: { - author: { - avatar: 'https://www.gravatar.com/avatar/794d7f6ef93d0689437de3c3e48fadc7', - email: 'user@verdccio.org', - name: 'verdaccio', - }, - }, - }; - - // @ts-ignore - expect(addGravatarSupport(packageInfo)).toEqual(result); - }); - - test('contributor field is a blank array', () => { - const packageInfo = { - latest: { - contributors: [], - }, - }; - - // @ts-ignore - expect(addGravatarSupport(packageInfo)).toEqual(packageInfo); - }); - - describe('contributors', () => { - test('contributors field has contributors', () => { - const packageInfo = { - latest: { - contributors: [ - { name: 'user', email: 'user@verdccio.org' }, - { name: 'user1', email: 'user1@verdccio.org' }, - ], - }, - }; - - const result = { - latest: { - contributors: [ - { - avatar: 'https://www.gravatar.com/avatar/794d7f6ef93d0689437de3c3e48fadc7', - email: 'user@verdccio.org', - name: 'user', - }, - { - avatar: 'https://www.gravatar.com/avatar/51105a49ce4a9c2bfabf0f6a2cba3762', - email: 'user1@verdccio.org', - name: 'user1', - }, - ], - }, - }; - - // @ts-ignore - expect(addGravatarSupport(packageInfo)).toEqual(result); - }); - - test('contributors field is an object', () => { - const packageInfo = { - latest: { - contributors: { name: 'user', email: 'user@verdccio.org' }, - }, - }; - - const result = { - latest: { - contributors: [ - { - avatar: 'https://www.gravatar.com/avatar/794d7f6ef93d0689437de3c3e48fadc7', - email: 'user@verdccio.org', - name: 'user', - }, - ], - }, - }; - - // @ts-ignore - expect(addGravatarSupport(packageInfo)).toEqual(result); - }); - - test('contributors field is a string', () => { - const contributor = 'Barney Rubble (http://barnyrubble.tumblr.com/)'; - const packageInfo = { - latest: { - contributors: contributor, - }, - }; - - const result = { - latest: { - contributors: [ - { - avatar: GENERIC_AVATAR, - email: contributor, - name: contributor, - }, - ], - }, - }; - - // @ts-ignore - expect(addGravatarSupport(packageInfo)).toEqual(result); - }); - }); - - test('maintainers field is a blank array', () => { - const packageInfo = { - latest: { - maintainers: [], - }, - }; - - // @ts-ignore - expect(addGravatarSupport(packageInfo)).toEqual(packageInfo); - }); - - test('maintainers field has maintainers', () => { - const packageInfo = { - latest: { - maintainers: [ - { name: 'user', email: 'user@verdccio.org' }, - { name: 'user1', email: 'user1@verdccio.org' }, - ], - }, - }; - - const result = { - latest: { - maintainers: [ - { - avatar: 'https://www.gravatar.com/avatar/794d7f6ef93d0689437de3c3e48fadc7', - email: 'user@verdccio.org', - name: 'user', - }, - { - avatar: 'https://www.gravatar.com/avatar/51105a49ce4a9c2bfabf0f6a2cba3762', - email: 'user1@verdccio.org', - name: 'user1', - }, - ], - }, - }; - - // @ts-ignore - expect(addGravatarSupport(packageInfo)).toEqual(result); - }); - }); - - describe('formatAuthor', () => { - test('should check author field different values', () => { - const author = 'verdaccioNpm'; - expect(formatAuthor(author).name).toEqual(author); - }); - test('should check author field for object value', () => { - const user = { - name: 'Verdaccion NPM', - email: 'verdaccio@verdaccio.org', - url: 'https://verdaccio.org', - }; - expect(formatAuthor(user).url).toEqual(user.url); - expect(formatAuthor(user).email).toEqual(user.email); - expect(formatAuthor(user).name).toEqual(user.name); - }); - test('should check author field for other value', () => { - expect(formatAuthor(null).name).toEqual(DEFAULT_USER); - expect(formatAuthor({}).name).toEqual(DEFAULT_USER); - expect(formatAuthor([]).name).toEqual(DEFAULT_USER); - }); - }); - - describe('host', () => { - // this scenario is usual when reverse proxy is setup - // without the host header - test('get empty string with missing host header', () => { - const req = httpMocks.createRequest({ - method: 'GET', - url: '/', - }); - expect(getPublicUrl(undefined, req)).toEqual('/'); - }); - - test('get a valid host', () => { - const req = httpMocks.createRequest({ - method: 'GET', - headers: { - host: 'some.com', - }, - url: '/', - }); - expect(getPublicUrl(undefined, req)).toEqual('http://some.com/'); - }); - - test('check a valid host header injection', () => { - const req = httpMocks.createRequest({ - method: 'GET', - headers: { - host: `some.com">`, - }, - url: '/', - }); - expect(function () { - // @ts-expect-error - getPublicUrl({}, req); - }).toThrow('invalid host'); - }); - - test('get a valid host with prefix', () => { - const req = httpMocks.createRequest({ - method: 'GET', - headers: { - host: 'some.com', - }, - url: '/', - }); - - expect(getPublicUrl('/prefix/', req)).toEqual('http://some.com/prefix/'); - }); - - test('get a valid host with prefix no trailing', () => { - const req = httpMocks.createRequest({ - method: 'GET', - headers: { - host: 'some.com', - }, - url: '/', - }); - - expect(getPublicUrl('/prefix-no-trailing', req)).toEqual('http://some.com/prefix-no-trailing/'); - }); - - test('get a valid host with null prefix', () => { - const req = httpMocks.createRequest({ - method: 'GET', - headers: { - host: 'some.com', - }, - url: '/', - }); - - // @ts-ignore - expect(getPublicUrl(null, req)).toEqual('http://some.com/'); - }); - }); - - describe('X-Forwarded-Proto', () => { - test('with a valid X-Forwarded-Proto https', () => { - const req = httpMocks.createRequest({ - method: 'GET', - headers: { - host: 'some.com', - [HEADERS.FORWARDED_PROTO]: 'https', - }, - url: '/', - }); - - expect(getPublicUrl(undefined, req)).toEqual('https://some.com/'); - }); - - test('with a invalid X-Forwarded-Proto https', () => { - const req = httpMocks.createRequest({ - method: 'GET', - headers: { - host: 'some.com', - [HEADERS.FORWARDED_PROTO]: 'invalidProto', - }, - url: '/', - }); - - expect(getPublicUrl(undefined, req)).toEqual('http://some.com/'); - }); - - test('with a HAProxy X-Forwarded-Proto https', () => { - const req = httpMocks.createRequest({ - method: 'GET', - headers: { - host: 'some.com', - [HEADERS.FORWARDED_PROTO]: 'https,https', - }, - url: '/', - }); - - expect(getPublicUrl(undefined, req)).toEqual('https://some.com/'); - }); - - test('with a HAProxy X-Forwarded-Proto different protocol', () => { - const req = httpMocks.createRequest({ - method: 'GET', - headers: { - host: 'some.com', - [HEADERS.FORWARDED_PROTO]: 'http,https', - }, - url: '/', - }); - - expect(getPublicUrl(undefined, req)).toEqual('http://some.com/'); - }); - }); - - describe('env variable', () => { - test('with a valid X-Forwarded-Proto https and env variable', () => { - process.env.VERDACCIO_PUBLIC_URL = 'https://env.domain.com/'; - const req = httpMocks.createRequest({ - method: 'GET', - headers: { - host: 'some.com', - [HEADERS.FORWARDED_PROTO]: 'https', - }, - url: '/', - }); - - expect(getPublicUrl(undefined, req)).toEqual('https://env.domain.com/'); - delete process.env.VERDACCIO_PUBLIC_URL; - }); - - test('with a valid X-Forwarded-Proto https and env variable with prefix', () => { - process.env.VERDACCIO_PUBLIC_URL = 'https://env.domain.com/urlPrefix/'; - const req = httpMocks.createRequest({ - method: 'GET', - headers: { - host: 'some.com', - [HEADERS.FORWARDED_PROTO]: 'http', - }, - url: '/', - }); - - expect(getPublicUrl(undefined, req)).toEqual('https://env.domain.com/urlPrefix/'); - delete process.env.VERDACCIO_PUBLIC_URL; - }); - - test('with a valid X-Forwarded-Proto https and env variable with prefix as url prefix', () => { - process.env.VERDACCIO_PUBLIC_URL = 'https://env.domain.com/urlPrefix/'; - const req = httpMocks.createRequest({ - method: 'GET', - headers: { - host: 'some.com', - [HEADERS.FORWARDED_PROTO]: 'https', - }, - url: '/', - }); - - expect(getPublicUrl('conf_url_prefix', req)).toEqual('https://env.domain.com/conf_url_prefix/'); - delete process.env.VERDACCIO_PUBLIC_URL; - }); - - test('with a valid X-Forwarded-Proto https and env variable with prefix as root url prefix', () => { - process.env.VERDACCIO_PUBLIC_URL = 'https://env.domain.com/urlPrefix/'; - const req = httpMocks.createRequest({ - method: 'GET', - headers: { - host: 'some.com', - [HEADERS.FORWARDED_PROTO]: 'https', - }, - url: '/', - }); - - expect(getPublicUrl('/', req)).toEqual('https://env.domain.com/'); - delete process.env.VERDACCIO_PUBLIC_URL; - }); - - test('with a invalid X-Forwarded-Proto https and env variable', () => { - process.env.VERDACCIO_PUBLIC_URL = 'https://env.domain.com'; - const req = httpMocks.createRequest({ - method: 'GET', - headers: { - host: 'some.com', - [HEADERS.FORWARDED_PROTO]: 'invalidProtocol', - }, - url: '/', - }); - - expect(getPublicUrl(undefined, req)).toEqual('https://env.domain.com/'); - delete process.env.VERDACCIO_PUBLIC_URL; - }); - - test('with a invalid X-Forwarded-Proto https and invalid url with env variable', () => { - process.env.VERDACCIO_PUBLIC_URL = 'ftp://env.domain.com'; - const req = httpMocks.createRequest({ - method: 'GET', - headers: { - host: 'some.com', - [HEADERS.FORWARDED_PROTO]: 'invalidProtocol', - }, - url: '/', - }); - - expect(getPublicUrl(undefined, req)).toEqual('http://some.com/'); - delete process.env.VERDACCIO_PUBLIC_URL; - }); - - test('with a invalid X-Forwarded-Proto https and host injection with host', () => { - process.env.VERDACCIO_PUBLIC_URL = 'http://injection.test.com">'; - const req = httpMocks.createRequest({ - method: 'GET', - headers: { - host: 'some.com', - [HEADERS.FORWARDED_PROTO]: 'invalidProtocol', - }, - url: '/', - }); - - expect(getPublicUrl(undefined, req)).toEqual('http://some.com/'); - delete process.env.VERDACCIO_PUBLIC_URL; - }); - - test('with a invalid X-Forwarded-Proto https and host injection with invalid host', () => { - process.env.VERDACCIO_PUBLIC_URL = 'http://injection.test.com">'; - const req = httpMocks.createRequest({ - method: 'GET', - headers: { - host: 'some', - [HEADERS.FORWARDED_PROTO]: 'invalidProtocol', - }, - url: '/', - }); - - expect(getPublicUrl(undefined, req)).toEqual('http://some/'); - delete process.env.VERDACCIO_PUBLIC_URL; - }); - - test('with the VERDACCIO_FORWARDED_PROTO to override valid X-Forwarded-Proto https', () => { - process.env.VERDACCIO_FORWARDED_PROTO = 'http'; - const req = httpMocks.createRequest({ - method: 'GET', - headers: { - host: 'some.com', - 'CloudFront-Forwarded-Proto': 'http', - [HEADERS.FORWARDED_PROTO]: 'https', - }, - url: '/', - }); - - expect(getPublicUrl(undefined, req)).toEqual('http://some.com/'); - delete process.env.VERDACCIO_FORWARDED_PROTO; - }); - }); -}); diff --git a/test/unit/partials/config/config_access.ts b/test/unit/partials/config/config_access.ts deleted file mode 100644 index 0874c8e98..000000000 --- a/test/unit/partials/config/config_access.ts +++ /dev/null @@ -1,26 +0,0 @@ -import path from 'path'; - -const config = { - storage: path.join(__dirname, '../store/access-storage'), - uplinks: { - 'npmjs': { - 'url': 'http://never_use:0000/' - } - }, - packages: { - 'jquery': { - allow_access: '$all', - allow_publish: '$all' - }, - '**': { - allow_access: '$all', - allow_publish: '$all', - proxy: 'npmjs' - } - }, - logs: [ - {type: 'stdout', format: 'pretty', level: 'fatal'}, - ], -}; - -export default config; diff --git a/test/unit/partials/config/index.js b/test/unit/partials/config/index.js deleted file mode 100644 index 5edf37675..000000000 --- a/test/unit/partials/config/index.js +++ /dev/null @@ -1,15 +0,0 @@ - -import _ from 'lodash'; -import path from 'path'; - -import {parseConfigFile} from '../../../../src/lib/utils'; - -/** - * Override the default.yaml configuration file with any new config provided. - */ -export default (options, url = 'default.yaml') => { - const locationFile = path.join(__dirname, `../config/yaml/${url}`); - const config = parseConfigFile(locationFile); - - return _.assign({}, _.cloneDeep(config), options); -} diff --git a/test/unit/partials/mock-store/.sinopia-db.json b/test/unit/partials/mock-store/.sinopia-db.json deleted file mode 100644 index 6ad4f3455..000000000 --- a/test/unit/partials/mock-store/.sinopia-db.json +++ /dev/null @@ -1 +0,0 @@ -{"list":[],"secret":"12c39716d7c75d50b9988255fff332e1b066bad04e10fff9cba42434bc5fe19e"} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 71292d233..5aba5daef 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,4 +1,5 @@ { + "compileOnSave": false, "compilerOptions": { "target": "esnext", "module": "commonjs", @@ -7,22 +8,21 @@ "strict": true, "strictNullChecks": true, "resolveJsonModule": true, - "outDir": "lib", "allowSyntheticDefaultImports": true, "esModuleInterop": true, "typeRoots": [ "./node_modules/@verdaccio/types/lib/verdaccio", - "./node_modules/@types", - "./types/custom.d.ts" + "./node_modules/@types" ] }, "exclude": [ + "**/build", "node_modules", - "**/*.spec.ts" - ], - "include": [ - "src/**/*.ts", - "test/**/*.ts", - "types/*.d.ts" + "**/node_modules", + "**/coverage", + "**/*.spec.ts", + "**/test", + "**/__tests__", + "**/*.test.ts" ] } diff --git a/yarn.lock b/yarn.lock index 9bf06f7c1..ae14f060a 100644 Binary files a/yarn.lock and b/yarn.lock differ