From 233610175192744c84bc2982203967b54295d44c Mon Sep 17 00:00:00 2001 From: Andrej Zachar Date: Tue, 2 May 2017 20:22:56 +0200 Subject: [PATCH] feat: vcsType support Initial support, working unit tests only --- .travis.yml | 1 + README.md | 35 +- src/circleci-request.coffee | 2 +- src/routes.json | 26 +- tests/helpers/api-helper.coffee | 2 +- tests/integration/cancel-build-spec.coffee | 1 + tests/integration/clear-build-cache.coffee | 1 + tests/integration/delete-env-var-spec.coffee | 1 + .../integration/get-branch-builds-spec.coffee | 1 + .../get-build-artifacts-spec.coffee | 1 + tests/integration/get-build-spec.coffee | 1 + tests/integration/get-builds-spec.coffee | 1 + tests/integration/get-env-var-spec.coffee | 1 + tests/integration/get-env-vars-spec.coffee | 1 + .../integration/get-test-metadata-spec.coffee | 1 + tests/integration/retry-build-spec.coffee | 1 + tests/integration/set-env-var-spec.coffee | 1 + tests/integration/start-build-spec.coffee | 2 + tests/unit/circleci-request-spec.coffee | 16 +- tests/unit/circleci-spec.coffee | 53 +- yarn.lock | 826 ++++++++++++++++++ 21 files changed, 919 insertions(+), 56 deletions(-) create mode 100644 yarn.lock diff --git a/.travis.yml b/.travis.yml index ba412f2..b81c657 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,3 +14,4 @@ env: - secure: Z8erqjVrrwFEa8d8UXcuaTOPlEw/sf5FTEZ0rzZgb3rMdfFikb0EhfQ99WrBvgNEKczEHc0LtrepEr5/A4GCXXdr6Amuj9+Edlg04+cBbrRJwACYoydOpFppiMg718Iq++VxCEReIlRBJLn4VSPbc2l83ylcYmg++ItnCSl/hyo= - CIRCLE_USER=jpstevens - CIRCLE_PROJECT=circleci + - CIRCLE_VCSTYPE=github diff --git a/README.md b/README.md index e94f097..e9cd71e 100644 --- a/README.md +++ b/README.md @@ -91,6 +91,7 @@ ci.getBuilds({ username: "jpstevens", project: "circleci" }) #### Options - **username** [required] - The username for the project you wish to look up - **project** [required] - The project (repo) name you wish to look up +- **vcsType** [required] - The vcsType github or bitbucket you wish to look up - **limit** [optional] - The number of builds to return. Maximum 100, defaults to 30) - **offset** [optional] - The API returns builds starting from this offset, defaults to 0) - **filter** [optional] - Show only successful/failed/running/pending builds @@ -113,6 +114,7 @@ ci.getBranchBuilds({ username: "jpstevens", project: "circleci", branch: "master #### Options - **username** [required] - The username for the project you wish to look up - **project** [required] - The project (repo) name you wish to look up +- **vcsType** [required] - The vcsType github or bitbucket you wish to look up - **branch** [required] - The branch name you wish to use as filter - **limit** [optional] - The number of builds to return. Maximum 100, defaults to 30) - **offset** [optional] - The API returns builds starting from this offset, defaults to 0) @@ -128,6 +130,7 @@ Full details for a single build. The response includes all of the fields from th ci.getBuild({ username: "jpstevens", project: "circleci", + vcsType: "github", build_num: 1 }).then(function(build){ console.log(build); @@ -137,6 +140,7 @@ ci.getBuild({ #### Options - **username** [required] - The username for the project you wish to look up - **project** [required] - The project (repo) name you wish to look up +- **vcsType** [required] - The vcsType github or bitbucket you wish to look up - **build_num** [required] - CircleCI build number ### startBuild @@ -149,6 +153,7 @@ Triggers a new build, returns a summary of the build. ci.startBuild({ username: "jpstevens", project: "circleci", + vcsType: "github", branch: "master" }).then(function(build){ console.log(build); @@ -158,6 +163,7 @@ ci.startBuild({ #### Options - **username** [required] - The username for the project - **project** [required] - The project (repo) name +- **vcsType** [required] - The vcsType github or bitbucket - **branch** [required] - The branch you wish to start the build for - **options** [optional] - Additional parameters you can pass in @@ -167,17 +173,20 @@ ci.startBuild({ ci.startBuild({ username: "jpstevens", project: "circleci", + vcsType: "github", branch: "master", - body: - parallel: null - revision: null - build_parameters: - NODE_ENV: "production" + body:{ + parallel: null, + revision: null, + build_parameters:{ + NODE_ENV: "production", FOO: "bar" + } + } }).then(function(build){ console.log(build); }); -``` +``` ### cancelBuild @@ -189,6 +198,7 @@ Cancels the build, returns a summary of the build. ci.cancelBuild({ username: "jpstevens", project: "circleci", + vcsType: "github", build_num: 1 }).then(function(build){ console.log(build); @@ -197,6 +207,7 @@ ci.cancelBuild({ #### Options - **username** [required] - The username for the project you wish to look up - **project** [required] - The project (repo) name you wish to look up +- **vcsType** [required] - The vcsType github or bitbucket you wish to look up - **build_num** [required] - CircleCI build number ### retryBuild @@ -207,6 +218,7 @@ ci.cancelBuild({ ci.retryBuild({ username: "jpstevens", project: "circleci", + vcsType: "github", build_num: 1 }).then(function(build){ console.log(build); @@ -216,6 +228,7 @@ ci.retryBuild({ #### Options - **username** [required] - The username for the project you wish to look up - **project** [required] - The project (repo) name you wish to look up +- **vcsType** [required] - The vcsType github or bitbucket you wish to look up - **build_num** [required] - CircleCI build number ### getBuildArtifacts @@ -228,6 +241,7 @@ List the artifacts produced by a given build. ci.getBuildArtifacts({ username: "jpstevens", project: "circleci", + vcsType: "github", build_num: 1 }).then(function(artifacts){ console.log(artifacts); // logs an array of artifacts @@ -237,6 +251,7 @@ ci.getBuildArtifacts({ #### Options - **username** [required] - The username for the project you wish to look up - **project** [required] - The project (repo) name you wish to look up +- **vcsType** [required] - The vcsType github or bitbucket you wish to look up - **build_num** [required] - CircleCI build number @@ -258,6 +273,7 @@ ci.clearBuildCache({ #### Options - **username** [required] - The username for the project you wish to look up - **project** [required] - The project (repo) name you wish to look up +- **vcsType** [required] - The vcsType github or bitbucket you wish to look up ### getEnvVars @@ -278,6 +294,7 @@ ci.getEnvVars({ #### Options - **username** [required] - The username for the project you wish to look up - **project** [required] - The project (repo) name you wish to look up +- **vcsType** [required] - The vcsType github or bitbucket you wish to look up ### getEnvVar @@ -290,6 +307,7 @@ Get a single environment variable for a project by name ci.getEnvVar({ username: "jpstevens", project: "circleci", + vcsType: "github", name: "NPM_TOKEN" }).then(function(envvar){ console.log(envvar); // logs an object with the environment variable @@ -299,6 +317,7 @@ ci.getEnvVar({ #### Options - **username** [required] - The username for the project you wish to look up - **project** [required] - The project (repo) name you wish to look up +- **vcsType** [required] - The vcsType github or bitbucket you wish to look up - **name** [required] - The name of the environment variable you wish to look up @@ -312,6 +331,7 @@ Set a environment variable for a project by name and value ci.setEnvVar({ username: "jpstevens", project: "circleci", + vcsType: "github", body: { name: "NPM_TOKEN", value: "123-456-789", @@ -324,6 +344,7 @@ ci.setEnvVar({ #### Options - **username** [required] - The username for the project you wish to add the environment variable to - **project** [required] - The project (repo) name you wish to add the environment variable to +- **vcsType** [required] - The vcsType github or bitbucket you wish to add the environment variable to - **body** [required] - Object with the `name` and the `value` of the environment variable you wish to add to the project ### deleteEnvVar @@ -336,6 +357,7 @@ Delete an environment variable from a project by name ci.deleteEnvVar({ username: "jpstevens", project: "circleci", + vcsType: "github", name: "NPM_TOKEN" }).then(function(envvar){ console.log(envvar); // logs an object with status of the deletion @@ -345,6 +367,7 @@ ci.deleteEnvVar({ #### Options - **username** [required] - The username for the project you wish to delete the environment variable from - **project** [required] - The project (repo) name you wish to delete the environment variable from +- **vcsType** [required] - The vcsType github or bitbucket you wish to delete the environment variable from - **name** [required] - The name of the environment variable you wish to delete from the project diff --git a/src/circleci-request.coffee b/src/circleci-request.coffee index 3c2da8a..c87f006 100644 --- a/src/circleci-request.coffee +++ b/src/circleci-request.coffee @@ -6,7 +6,7 @@ CircleCIResponse = require "./circleci-response" class CircleCIRequest constructor: (config = {}) -> - @url = "https://circleci.com/api/v1/" + @url = "https://circleci.com/api/v1.1/" @auth = config.auth @request = require "request" diff --git a/src/routes.json b/src/routes.json index 07caadf..8c86cdc 100644 --- a/src/routes.json +++ b/src/routes.json @@ -17,7 +17,7 @@ }, "getBuilds": { "method": "GET", - "path": "\/project\/:username\/:project", + "path": "\/project\/:vcsType\/:username\/:project", "options": [ "limit", "offset", @@ -26,7 +26,7 @@ }, "getBranchBuilds": { "method": "GET", - "path": "\/project\/:username\/:project\/tree\/:branch", + "path": "\/project\/:vcsType\/:username\/:project\/tree\/:branch", "options": [ "limit", "offset", @@ -34,47 +34,47 @@ ] }, "getBuild": { - "path": "\/project\/:username\/:project\/:build_num", + "path": "\/project\/:vcsType\/:username\/:project\/:build_num", "method": "GET" }, "startBuild": { - "path": "\/project\/:username\/:project\/tree\/:branch", + "path": "\/project\/:vcsType\/:username\/:project\/tree\/:branch", "method": "POST" }, "cancelBuild": { - "path": "\/project\/:username\/:project\/:build_num\/cancel", + "path": "\/project\/:vcsType\/:username\/:project\/:build_num\/cancel", "method": "POST" }, "retryBuild": { - "path": "\/project\/:username\/:project\/:build_num\/retry", + "path": "\/project\/:vcsType\/:username\/:project\/:build_num\/retry", "method": "POST" }, "getBuildArtifacts": { - "path": "\/project\/:username\/:project\/:build_num\/artifacts", + "path": "\/project\/:vcsType\/:username\/:project\/:build_num\/artifacts", "method": "GET" }, "clearBuildCache": { - "path": "\/project\/:username\/:project\/build-cache", + "path": "\/project\/:vcsType\/:username\/:project\/build-cache", "method": "DELETE" }, "getTestMetadata": { - "path": "\/project\/:username\/:project\/:build_num\/tests", + "path": "\/project\/:vcsType\/:username\/:project\/:build_num\/tests", "method": "GET" }, "getEnvVars": { - "path": "\/project\/:username\/:project\/envvar", + "path": "\/project\/:vcsType\/:username\/:project\/envvar", "method": "GET" }, "getEnvVar": { - "path": "\/project\/:username\/:project\/envvar\/:name", + "path": "\/project\/:vcsType\/:username\/:project\/envvar\/:name", "method": "GET" }, "setEnvVar": { - "path": "\/project\/:username\/:project\/envvar", + "path": "\/project\/:vcsType\/:username\/:project\/envvar", "method": "POST" }, "deleteEnvVar": { - "path": "\/project\/:username\/:project\/envvar\/:name", + "path": "\/project\/:vcsType\/:username\/:project\/envvar\/:name", "method": "DELETE" } } diff --git a/tests/helpers/api-helper.coffee b/tests/helpers/api-helper.coffee index b3b774a..4c27e93 100644 --- a/tests/helpers/api-helper.coffee +++ b/tests/helpers/api-helper.coffee @@ -1,6 +1,6 @@ request = require "request" -baseUrl = "https://circleci.com/api/v1/project" +baseUrl = "https://circleci.com/api/v1.1/project" projectUrl = "#{baseUrl}/#{process.env.CIRCLE_USER}/#{process.env.CIRCLE_PROJECT}" exports.createBuild = (callback) -> diff --git a/tests/integration/cancel-build-spec.coffee b/tests/integration/cancel-build-spec.coffee index c780b76..2cb377d 100644 --- a/tests/integration/cancel-build-spec.coffee +++ b/tests/integration/cancel-build-spec.coffee @@ -9,6 +9,7 @@ describe "cancelBuild", -> @config = username: process.env.CIRCLE_USER project: process.env.CIRCLE_PROJECT + vcsType: process.env.CIRCLE_VCSTYPE build_num: build_num next() diff --git a/tests/integration/clear-build-cache.coffee b/tests/integration/clear-build-cache.coffee index af64dcf..8a55e37 100644 --- a/tests/integration/clear-build-cache.coffee +++ b/tests/integration/clear-build-cache.coffee @@ -7,6 +7,7 @@ describe "clearBuildCache", -> @config = username: process.env.CIRCLE_USER project: process.env.CIRCLE_PROJECT + vcsType: process.env.CIRCLE_VCSTYPE it "clears the build cache", (done) -> diff --git a/tests/integration/delete-env-var-spec.coffee b/tests/integration/delete-env-var-spec.coffee index 38fb814..a1881e6 100644 --- a/tests/integration/delete-env-var-spec.coffee +++ b/tests/integration/delete-env-var-spec.coffee @@ -7,6 +7,7 @@ describe "deleteEnvVar", -> @config = username: process.env.CIRCLE_USER project: process.env.CIRCLE_PROJECT + vcsType: process.env.CIRCLE_VCSTYPE name: 'TEST_ENV_VAR' it "returns an object of the status of deleting an env var for a given project", (done) -> diff --git a/tests/integration/get-branch-builds-spec.coffee b/tests/integration/get-branch-builds-spec.coffee index fd37b4f..7373999 100644 --- a/tests/integration/get-branch-builds-spec.coffee +++ b/tests/integration/get-branch-builds-spec.coffee @@ -7,6 +7,7 @@ describe "getBranchBuilds", -> @config = username: process.env.CIRCLE_USER project: process.env.CIRCLE_PROJECT + vcsType: process.env.CIRCLE_VCSTYPE branch: "master" limit: 1 diff --git a/tests/integration/get-build-artifacts-spec.coffee b/tests/integration/get-build-artifacts-spec.coffee index 7ed1651..e08d6c5 100644 --- a/tests/integration/get-build-artifacts-spec.coffee +++ b/tests/integration/get-build-artifacts-spec.coffee @@ -7,6 +7,7 @@ describe "getBuildArtifacts", -> @config = username: process.env.CIRCLE_USER project: process.env.CIRCLE_PROJECT + vcsType: process.env.CIRCLE_VCSTYPE build_num: "7" it "returns the build artifacts", (done) -> diff --git a/tests/integration/get-build-spec.coffee b/tests/integration/get-build-spec.coffee index c568201..24d224e 100644 --- a/tests/integration/get-build-spec.coffee +++ b/tests/integration/get-build-spec.coffee @@ -7,6 +7,7 @@ describe "getBuild", -> @config = username: process.env.CIRCLE_USER project: process.env.CIRCLE_PROJECT + vcsType: process.env.CIRCLE_VCSTYPE build_num: "7" it "returns the build", (done) -> diff --git a/tests/integration/get-builds-spec.coffee b/tests/integration/get-builds-spec.coffee index d81ae09..39a7d2e 100644 --- a/tests/integration/get-builds-spec.coffee +++ b/tests/integration/get-builds-spec.coffee @@ -7,6 +7,7 @@ describe "getBuilds", -> @config = username: process.env.CIRCLE_USER project: process.env.CIRCLE_PROJECT + vcsType: process.env.CIRCLE_VCSTYPE limit: 1 it "returns an array of builds for a given project", (done) -> diff --git a/tests/integration/get-env-var-spec.coffee b/tests/integration/get-env-var-spec.coffee index 2a4f7f8..8d14811 100644 --- a/tests/integration/get-env-var-spec.coffee +++ b/tests/integration/get-env-var-spec.coffee @@ -7,6 +7,7 @@ describe "getEnvVar", -> @config = username: process.env.CIRCLE_USER project: process.env.CIRCLE_PROJECT + vcsType: process.env.CIRCLE_VCSTYPE name: process.env.CIRCLE_USER it "returns an object of a given env var for a given project", (done) -> diff --git a/tests/integration/get-env-vars-spec.coffee b/tests/integration/get-env-vars-spec.coffee index 6a0537a..206ef0e 100644 --- a/tests/integration/get-env-vars-spec.coffee +++ b/tests/integration/get-env-vars-spec.coffee @@ -7,6 +7,7 @@ describe "getEnvVars", -> @config = username: process.env.CIRCLE_USER project: process.env.CIRCLE_PROJECT + vcsType: process.env.CIRCLE_VCSTYPE it "returns an array of the env vars for a given project", (done) -> diff --git a/tests/integration/get-test-metadata-spec.coffee b/tests/integration/get-test-metadata-spec.coffee index 2045534..12b8df3 100644 --- a/tests/integration/get-test-metadata-spec.coffee +++ b/tests/integration/get-test-metadata-spec.coffee @@ -7,6 +7,7 @@ describe "getTestMetadata", -> @config = username: process.env.CIRCLE_USER project: process.env.CIRCLE_PROJECT + vcsType: process.env.CIRCLE_VCSTYPE build_num: "7" it "returns an array of the test metadata for a given build", (done) -> diff --git a/tests/integration/retry-build-spec.coffee b/tests/integration/retry-build-spec.coffee index 2f4b62c..9a5a351 100644 --- a/tests/integration/retry-build-spec.coffee +++ b/tests/integration/retry-build-spec.coffee @@ -8,6 +8,7 @@ describe "retryBuild", -> @config = username: process.env.CIRCLE_USER project: process.env.CIRCLE_PROJECT + vcsType: process.env.CIRCLE_VCSTYPE build_num: "7" it "retries the build", (done) -> diff --git a/tests/integration/set-env-var-spec.coffee b/tests/integration/set-env-var-spec.coffee index 3d430f3..5026b05 100644 --- a/tests/integration/set-env-var-spec.coffee +++ b/tests/integration/set-env-var-spec.coffee @@ -7,6 +7,7 @@ describe "setEnvVar", -> @config = username: process.env.CIRCLE_USER project: process.env.CIRCLE_PROJECT + vcsType: process.env.CIRCLE_VCSTYPE body: name: 'TEST_ENV_VAR' value: 'TEST_ENV_VALUE' diff --git a/tests/integration/start-build-spec.coffee b/tests/integration/start-build-spec.coffee index 9625814..b11b956 100644 --- a/tests/integration/start-build-spec.coffee +++ b/tests/integration/start-build-spec.coffee @@ -11,6 +11,8 @@ describe "startBuild", -> @config = username: process.env.CIRCLE_USER project: process.env.CIRCLE_PROJECT + vcsType: process.env.CIRCLE_VCSTYPE + vcsType: process.env.CIRCLE_VCSTYPE branch: process.env.CIRCLE_BRANCH or "master" body: parallel: null diff --git a/tests/unit/circleci-request-spec.coffee b/tests/unit/circleci-request-spec.coffee index 6a456ca..c17acd4 100644 --- a/tests/unit/circleci-request-spec.coffee +++ b/tests/unit/circleci-request-spec.coffee @@ -49,19 +49,19 @@ describe "CircleCI Request", -> it "generates the base API url with an auth token by default", -> expect @request.buildUrl() - .to.equal "https://circleci.com/api/v1?circle-token=example-token" + .to.equal "https://circleci.com/api/v1.1?circle-token=example-token" it "can build a URL from a path", -> expect @request.buildUrl("projects") - .to.equal "https://circleci.com/api/v1/projects?circle-token=example-token" + .to.equal "https://circleci.com/api/v1.1/projects?circle-token=example-token" it "can build a URL from a path with query params", -> expect @request.buildUrl("projects", { limit: 10 }) - .to.equal "https://circleci.com/api/v1/projects?limit=10&circle-token=example-token" + .to.equal "https://circleci.com/api/v1.1/projects?limit=10&circle-token=example-token" it "can build a URL from a path with url params", -> expect @request.buildUrl("project/:username/:project", {}, { project: "circleci", username: "jpstevens" }) - .to.equal "https://circleci.com/api/v1/project/jpstevens/circleci?circle-token=example-token" + .to.equal "https://circleci.com/api/v1.1/project/jpstevens/circleci?circle-token=example-token" describe "building query object", -> @@ -77,9 +77,9 @@ describe "CircleCI Request", -> before -> @route = { path: "/:param/endpoint", method: "GET", options: ["limit", "offset"] } @data = { param: "example", limit: 10, offset: 10 } - @expectedConfig = + @expectedConfig = method: "GET" - url: "https://circleci.com/api/v1/example/endpoint?limit=10&offset=10&circle-token=example-token" + url: "https://circleci.com/api/v1.1/example/endpoint?limit=10&offset=10&circle-token=example-token" json: true it "builds the expected config object", -> @@ -90,9 +90,9 @@ describe "CircleCI Request", -> before -> @route = { path: "/:param/endpoint", method: "GET", options: ["limit", "offset"] } @data = { param: "example", limit: 10, offset: 10 } - @expectedConfig = + @expectedConfig = method: "GET" - url: "https://circleci.com/api/v1/example/endpoint?limit=10&offset=10&circle-token=example-token" + url: "https://circleci.com/api/v1.1/example/endpoint?limit=10&offset=10&circle-token=example-token" json: true beforeEach -> diff --git a/tests/unit/circleci-spec.coffee b/tests/unit/circleci-spec.coffee index 4e4c321..20d9126 100644 --- a/tests/unit/circleci-spec.coffee +++ b/tests/unit/circleci-spec.coffee @@ -61,8 +61,8 @@ describe "CircleCI Client", -> describe "getBuilds", -> before -> - @route = { path: "/project/:username/:project", method: "GET", options: ["limit", "offset", "filter"] } - @options = { username: "jpstevens", project: "circleci", limit: 10, offset: 100, filter: 'running' } + @route = { path: "/project/:vcsType/:username/:project", method: "GET", options: ["limit", "offset", "filter"] } + @options = { username: "jpstevens", project: "circleci", vcsType:'github', limit: 10, offset: 100, filter: 'running' } it "gets the builds for a project", -> @circleci.getBuilds(@options) @@ -75,8 +75,8 @@ describe "CircleCI Client", -> describe "getBranchBuilds", -> before -> - @route = { path: "/project/:username/:project/tree/:branch", method: "GET", options: ["limit", "offset", "filter"] } - @options = { username: "jpstevens", project: "circleci", branch: "master", limit: 10, offset: 100 } + @route = { path: "/project/:vcsType/:username/:project/tree/:branch", method: "GET", options: ["limit", "offset", "filter"] } + @options = { username: "jpstevens", project: "circleci", vcsType:'github', branch: "master", limit: 10, offset: 100 } it "gets the builds for a project", -> @circleci.getBranchBuilds(@options) @@ -92,8 +92,8 @@ describe "CircleCI Client", -> describe "getBuild", -> before -> - @route = { path: "/project/:username/:project/:build_num", method: "GET" } - @options = { username: "jpstevens", project: "circleci", build_num: 123 } + @route = { path: "/project/:vcsType/:username/:project/:build_num", method: "GET" } + @options = { username: "jpstevens", project: "circleci", vcsType:'github', build_num: 123 } it "getting a single build for a project", -> @circleci.getBuild(@options) @@ -106,8 +106,8 @@ describe "CircleCI Client", -> describe "getBuildArtifacts", -> before -> - @route = { path: "/project/:username/:project/:build_num/artifacts", method: "GET" } - @options = { username: "jpstevens", project: "circleci", build_num: 123 } + @route = { path: "/project/:vcsType/:username/:project/:build_num/artifacts", method: "GET" } + @options = { username: "jpstevens", project: "circleci", vcsType:'github', build_num: 123 } it "gets the artifacts for a build", -> @circleci.getBuildArtifacts(@options) @@ -120,8 +120,8 @@ describe "CircleCI Client", -> describe "retryBuild", -> before -> - @route = { path: "/project/:username/:project/:build_num/retry", method: "POST" } - @options = { username: "jpstevens", project: "circleci", build_num: 123 } + @route = { path: "/project/:vcsType/:username/:project/:build_num/retry", method: "POST" } + @options = { username: "jpstevens", project: "circleci", vcsType:'github', build_num: 123 } it "retries the build", -> @circleci.retryBuild(@options) @@ -134,8 +134,8 @@ describe "CircleCI Client", -> describe "cancelBuild", -> before -> - @route = { path: "/project/:username/:project/:build_num/cancel", method: "POST" } - @options = { username: "jpstevens", project: "circleci", build_num: 123 } + @route = { path: "/project/:vcsType/:username/:project/:build_num/cancel", method: "POST" } + @options = { username: "jpstevens", project: "circleci", vcsType:'github', build_num: 123 } it "cancels a build", -> @circleci.cancelBuild(@options) @@ -148,8 +148,8 @@ describe "CircleCI Client", -> describe "startBuild", -> before -> - @route = { path: "/project/:username/:project/tree/:branch", method: "POST" } - @options = { username: "jpstevens", project: "circleci", branch: "master" } + @route = { path: "/project/:vcsType/:username/:project/tree/:branch", method: "POST" } + @options = { username: "jpstevens", project: "circleci", vcsType:'github', branch: "master" } it "starts a build", -> @circleci.startBuild(@options) @@ -162,8 +162,8 @@ describe "CircleCI Client", -> describe "clearBuildCache", -> before -> - @route = { path: "/project/:username/:project/build-cache", method: "DELETE" } - @options = { username: "jpstevens", project: "circleci" } + @route = { path: "/project/:vcsType/:username/:project/build-cache", method: "DELETE" } + @options = { username: "jpstevens", project: "circleci", vcsType:'github' } it "clears the cache for a project", -> @circleci.clearBuildCache(@options) @@ -176,8 +176,8 @@ describe "CircleCI Client", -> describe "getTestMetadata", -> before -> - @route = { path: "/project/:username/:project/:build_num/tests", method: "GET" } - @options = { username: "jpstevens", project: "circleci", build_num: 123 } + @route = { path: "/project/:vcsType/:username/:project/:build_num/tests", method: "GET" } + @options = { username: "jpstevens", project: "circleci", vcsType:'github', build_num: 123 } it "gets the artifacts for a build", -> @circleci.getTestMetadata(@options) @@ -190,8 +190,8 @@ describe "CircleCI Client", -> describe "getEnvVars", -> before -> - @route = { path: "/project/:username/:project/envvar", method: "GET" } - @options = { username: "jpstevens", project: "circleci" } + @route = { path: "/project/:vcsType/:username/:project/envvar", method: "GET" } + @options = { username: "jpstevens", project: "circleci", vcsType:'github' } it "gets the env vars for a project", -> @circleci.getEnvVars(@options) @@ -204,8 +204,8 @@ describe "CircleCI Client", -> describe "getEnvVar", -> before -> - @route = { path: "/project/:username/:project/envvar/:name", method: "GET" } - @options = { username: "jpstevens", project: "circleci", name: "NPM_TOKEN" } + @route = { path: "/project/:vcsType/:username/:project/envvar/:name", method: "GET" } + @options = { username: "jpstevens", project: "circleci", vcsType:'github', name: "NPM_TOKEN" } it "gets and env var by name for a project", -> @circleci.getEnvVar(@options) @@ -218,8 +218,8 @@ describe "CircleCI Client", -> describe "setEnvVar", -> before -> - @route = { path: "/project/:username/:project/envvar", method: "POST" } - @options = { username: "jpstevens", project: "circleci", body: { name: "NPM_TOKEN", value: "123-456-789" } } + @route = { path: "/project/:vcsType/:username/:project/envvar", method: "POST" } + @options = { username: "jpstevens", project: "circleci", vcsType:'github', body: { name: "NPM_TOKEN", value: "123-456-789" } } it "sets env var for a project", -> @circleci.setEnvVar(@options) @@ -232,8 +232,8 @@ describe "CircleCI Client", -> describe "deleteEnvVar", -> before -> - @route = { path: "/project/:username/:project/envvar/:name", method: "DELETE" } - @options = { username: "jpstevens", project: "circleci", name: "NPM_TOKEN" } + @route = { path: "/project/:vcsType/:username/:project/envvar/:name", method: "DELETE" } + @options = { username: "jpstevens", project: "circleci", vcsType:'github', name: "NPM_TOKEN" } it "sets env var for a project", -> @circleci.deleteEnvVar(@options) @@ -242,4 +242,3 @@ describe "CircleCI Client", -> it "throws an error when options are missing", -> expect(-> @circleci.deleteEnvVar()).to.throw - diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..355b639 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,826 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +abbrev@1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" + +ajv@^4.9.1: + version "4.11.8" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" + dependencies: + co "^4.6.0" + json-stable-stringify "^1.0.1" + +ansi-styles@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" + +"argparse@~ 0.1.11": + version "0.1.16" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-0.1.16.tgz#cfd01e0fbba3d6caed049fbd758d40f65196f57c" + dependencies: + underscore "~1.7.0" + underscore.string "~2.4.0" + +array-differ@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-0.1.0.tgz#12e2c9b706bed47c8b483b57e487473fb0861f3a" + +array-union@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-0.1.0.tgz#ede98088330665e699e1ebf0227cbc6034e627db" + dependencies: + array-uniq "^0.1.0" + +array-uniq@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-0.1.1.tgz#5861f3ed4e4bb6175597a4e078e8aa78ebe958c7" + +asn1@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + +assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + +assertion-error@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.0.tgz#c7f85438fdd466bc7ca16ab90c81513797a5d23b" + +async@~0.1.22: + version "0.1.22" + resolved "https://registry.yarnpkg.com/async/-/async-0.1.22.tgz#0fc1aaa088a0e3ef0ebe2d8831bab0dcf8845061" + +async@~0.2.9: + version "0.2.10" + resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + +aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + +aws4@^1.2.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" + +bcrypt-pbkdf@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" + dependencies: + tweetnacl "^0.14.3" + +boom@2.x.x: + version "2.10.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + dependencies: + hoek "2.x.x" + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + +chai@^1.9.1: + version "1.10.0" + resolved "https://registry.yarnpkg.com/chai/-/chai-1.10.0.tgz#e4031cc87654461a75943e5a35ab46eaf39c1eb9" + dependencies: + assertion-error "1.0.0" + deep-eql "0.1.3" + +chalk@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" + dependencies: + ansi-styles "~1.0.0" + has-color "~0.1.0" + strip-ansi "~0.1.0" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + +coffee-script@^1.7.1: + version "1.12.5" + resolved "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.12.5.tgz#809f4585419112bbfe46a073ad7543af18c27346" + +coffee-script@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.3.3.tgz#150d6b4cb522894369efed6a2101c20bc7f4a4f4" + +coffee-script@~1.7, coffee-script@~1.7.0: + version "1.7.1" + resolved "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.7.1.tgz#62996a861780c75e6d5069d13822723b73404bfc" + dependencies: + mkdirp "~0.3.5" + +coffeelint-stylish@~0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/coffeelint-stylish/-/coffeelint-stylish-0.0.1.tgz#02f1e1022a53626520c5bc29b461eb6c9fe8b632" + dependencies: + chalk "~0.4.0" + text-table "~0.2.0" + +coffeelint@~1.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/coffeelint/-/coffeelint-1.1.0.tgz#0a2c6a4e08b2a90c5b11355334ffa64af0b2090f" + dependencies: + coffee-script "~1.7" + glob ">=3.1.9" + optimist ">=0.2.8" + +colors@~0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/colors/-/colors-0.6.2.tgz#2423fe6678ac0c5dae8852e5d0e5be08c997abcc" + +combined-stream@^1.0.5, combined-stream@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" + dependencies: + delayed-stream "~1.0.0" + +commander@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-0.6.1.tgz#fa68a14f6a945d54dbbe50d8cdb3320e9e3b1a06" + +commander@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.0.0.tgz#d1b86f901f8b64bd941bdeadaf924530393be928" + +cryptiles@2.x.x: + version "2.0.5" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + dependencies: + boom "2.x.x" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + dependencies: + assert-plus "^1.0.0" + +dateformat@1.0.2-1.2.3: + version "1.0.2-1.2.3" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.2-1.2.3.tgz#b0220c02de98617433b72851cf47de3df2cdbee9" + +debug@*, debug@~0.7.0: + version "0.7.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39" + +deep-eql@0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2" + dependencies: + type-detect "0.1.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + +diff@1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/diff/-/diff-1.0.7.tgz#24bbb001c4a7d5522169e7cabdb2c2814ed91cf4" + +ecc-jsbn@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" + dependencies: + jsbn "~0.1.0" + +"esprima@~ 1.0.2": + version "1.0.4" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.0.4.tgz#9f557e08fc3b4d26ece9dd34f8fbf476b62585ad" + +eventemitter2@~0.4.13: + version "0.4.14" + resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-0.4.14.tgz#8f61b75cde012b2e9eb284d4545583b5643b61ab" + +exit@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + +extend@~3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" + +extsprintf@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" + +faye-websocket@~0.4.3: + version "0.4.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.4.4.tgz#c14c5b3bf14d7417ffbfd990c0a7495cd9f337bc" + +findup-sync@^0.1.2, findup-sync@~0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.1.3.tgz#7f3e7a97b82392c653bf06589bd85190e93c3683" + dependencies: + glob "~3.2.9" + lodash "~2.4.1" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + +form-data@~2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + +formatio@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/formatio/-/formatio-1.1.1.tgz#5ed3ccd636551097383465d996199100e86161e9" + dependencies: + samsam "~1.1" + +fs-extra@~0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.9.1.tgz#87dbfc01383a8ddce7d9d5496f3608564889f156" + dependencies: + jsonfile "~1.1.0" + mkdirp "^0.5.0" + ncp "^0.5.1" + rimraf "^2.2.8" + +gaze@~0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/gaze/-/gaze-0.5.2.tgz#40b709537d24d1d45767db5a908689dfe69ac44f" + dependencies: + globule "~0.1.0" + +getobject@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/getobject/-/getobject-0.1.0.tgz#047a449789fa160d018f5486ed91320b6ec7885c" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + dependencies: + assert-plus "^1.0.0" + +glob@3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.3.tgz#e313eeb249c7affaa5c475286b0e115b59839467" + dependencies: + graceful-fs "~2.0.0" + inherits "2" + minimatch "~0.2.11" + +glob@>=3.1.9, glob@~3.2.9: + version "3.2.11" + resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.11.tgz#4a973f635b9190f715d10987d5c00fd2815ebe3d" + dependencies: + inherits "2" + minimatch "0.3" + +glob@~3.1.21: + version "3.1.21" + resolved "https://registry.yarnpkg.com/glob/-/glob-3.1.21.tgz#d29e0a055dea5138f4d07ed40e8982e83c2066cd" + dependencies: + graceful-fs "~1.2.0" + inherits "1" + minimatch "~0.2.11" + +globule@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/globule/-/globule-0.1.0.tgz#d9c8edde1da79d125a151b79533b978676346ae5" + dependencies: + glob "~3.1.21" + lodash "~1.0.1" + minimatch "~0.2.11" + +graceful-fs@~1.2.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-1.2.3.tgz#15a4806a57547cb2d2dbf27f42e89a8c3451b364" + +graceful-fs@~2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-2.0.3.tgz#7cd2cdb228a4a3f36e95efa6cc142de7d1a136d0" + +growl@1.7.x: + version "1.7.0" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.7.0.tgz#de2d66136d002e112ba70f3f10c31cf7c350b2da" + +grunt-coffeelint@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/grunt-coffeelint/-/grunt-coffeelint-0.0.10.tgz#c120449a114fafcad95167096748f839a5c0bfdf" + dependencies: + coffeelint "~1.1" + coffeelint-stylish "~0.0.1" + +grunt-contrib-clean@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/grunt-contrib-clean/-/grunt-contrib-clean-0.5.0.tgz#f53dfdee0849b1c7b40e9ebbba69f48c4c6079c5" + dependencies: + rimraf "~2.2.1" + +grunt-contrib-coffee@^0.10.1: + version "0.10.1" + resolved "https://registry.yarnpkg.com/grunt-contrib-coffee/-/grunt-contrib-coffee-0.10.1.tgz#ed22c6829f458aa8ea47f86768433e9813140186" + dependencies: + chalk "~0.4.0" + coffee-script "~1.7.0" + lodash "~2.4.1" + +grunt-contrib-copy@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/grunt-contrib-copy/-/grunt-contrib-copy-0.5.0.tgz#410075ac45a5856ba191b1cc725725450d4a0215" + +grunt-contrib-watch@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/grunt-contrib-watch/-/grunt-contrib-watch-0.6.1.tgz#64fdcba25a635f5b4da1b6ce6f90da0aeb6e3f15" + dependencies: + async "~0.2.9" + gaze "~0.5.1" + lodash "~2.4.1" + tiny-lr-fork "0.0.5" + +grunt-legacy-log-utils@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz#c0706b9dd9064e116f36f23fe4e6b048672c0f7e" + dependencies: + colors "~0.6.2" + lodash "~2.4.1" + underscore.string "~2.3.3" + +grunt-legacy-log@~0.1.0: + version "0.1.3" + resolved "https://registry.yarnpkg.com/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz#ec29426e803021af59029f87d2f9cd7335a05531" + dependencies: + colors "~0.6.2" + grunt-legacy-log-utils "~0.1.1" + hooker "~0.2.3" + lodash "~2.4.1" + underscore.string "~2.3.3" + +grunt-legacy-util@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz#93324884dbf7e37a9ff7c026dff451d94a9e554b" + dependencies: + async "~0.1.22" + exit "~0.1.1" + getobject "~0.1.0" + hooker "~0.2.3" + lodash "~0.9.2" + underscore.string "~2.2.1" + which "~1.0.5" + +grunt-mocha-test@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/grunt-mocha-test/-/grunt-mocha-test-0.11.0.tgz#75e41ba107590e4acbd29860925c012e443ca322" + dependencies: + fs-extra "~0.9.1" + hooker "~0.2.3" + mocha "~1.20.0" + +grunt@^0.4.5: + version "0.4.5" + resolved "https://registry.yarnpkg.com/grunt/-/grunt-0.4.5.tgz#56937cd5194324adff6d207631832a9d6ba4e7f0" + dependencies: + async "~0.1.22" + coffee-script "~1.3.3" + colors "~0.6.2" + dateformat "1.0.2-1.2.3" + eventemitter2 "~0.4.13" + exit "~0.1.1" + findup-sync "~0.1.2" + getobject "~0.1.0" + glob "~3.1.21" + grunt-legacy-log "~0.1.0" + grunt-legacy-util "~0.2.0" + hooker "~0.2.3" + iconv-lite "~0.2.11" + js-yaml "~2.0.5" + lodash "~0.9.2" + minimatch "~0.2.12" + nopt "~1.0.10" + rimraf "~2.2.8" + underscore.string "~2.2.1" + which "~1.0.5" + +har-schema@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" + +har-validator@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" + dependencies: + ajv "^4.9.1" + har-schema "^1.0.5" + +has-color@~0.1.0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" + +hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + +hoek@2.x.x: + version "2.16.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + +hooker@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/hooker/-/hooker-0.2.3.tgz#b834f723cc4a242aa65963459df6d984c5d3d959" + +http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +iconv-lite@~0.2.11: + version "0.2.11" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.2.11.tgz#1ce60a3a57864a292d1321ff4609ca4bb965adc8" + +inherits@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-1.0.2.tgz#ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b" + +inherits@2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + +jade@0.26.3: + version "0.26.3" + resolved "https://registry.yarnpkg.com/jade/-/jade-0.26.3.tgz#8f10d7977d8d79f2f6ff862a81b0513ccb25686c" + dependencies: + commander "0.6.1" + mkdirp "0.3.0" + +jodid25519@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" + dependencies: + jsbn "~0.1.0" + +js-yaml@~2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-2.0.5.tgz#a25ae6509999e97df278c6719da11bd0687743a8" + dependencies: + argparse "~ 0.1.11" + esprima "~ 1.0.2" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + +json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + +jsonfile@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-1.1.1.tgz#da4fd6ad77f1a255203ea63c7bc32dc31ef64433" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + +jsprim@^1.2.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.0.tgz#a3b87e40298d8c380552d8cc7628a0bb95a22918" + dependencies: + assert-plus "1.0.0" + extsprintf "1.0.2" + json-schema "0.2.3" + verror "1.3.6" + +load-grunt-tasks@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/load-grunt-tasks/-/load-grunt-tasks-0.6.0.tgz#043c04ad69ecc85e02a82258fdf25b7a79e0db6c" + dependencies: + findup-sync "^0.1.2" + multimatch "^0.3.0" + +lodash@~0.9.2: + version "0.9.2" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-0.9.2.tgz#8f3499c5245d346d682e5b0d3b40767e09f1a92c" + +lodash@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-1.0.2.tgz#8f57560c83b59fc270bd3d561b690043430e2551" + +lodash@~2.4.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-2.4.2.tgz#fadd834b9683073da179b3eae6d9c0d15053f73e" + +lolex@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/lolex/-/lolex-1.3.2.tgz#7c3da62ffcb30f0f5a80a2566ca24e45d8a01f31" + +lru-cache@2: + version "2.7.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" + +mime-db@~1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1" + +mime-types@^2.1.12, mime-types@~2.1.7: + version "2.1.15" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed" + dependencies: + mime-db "~1.27.0" + +minimatch@0.3, minimatch@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.3.0.tgz#275d8edaac4f1bb3326472089e7949c8394699dd" + dependencies: + lru-cache "2" + sigmund "~1.0.0" + +minimatch@~0.2.11, minimatch@~0.2.12: + version "0.2.14" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz#c74e780574f63c6f9a090e90efbe6ef53a6a756a" + dependencies: + lru-cache "2" + sigmund "~1.0.0" + +minimist@0.0.8, minimist@~0.0.1: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +mkdirp@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e" + +mkdirp@0.3.5, mkdirp@~0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.5.tgz#de3e5f8961c88c787ee1368df849ac4413eca8d7" + +mkdirp@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +mocha@~1.20.0: + version "1.20.1" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-1.20.1.tgz#f343832d9fe0c7d97c64fc70448f5136df9fed5b" + dependencies: + commander "2.0.0" + debug "*" + diff "1.0.7" + glob "3.2.3" + growl "1.7.x" + jade "0.26.3" + mkdirp "0.3.5" + +multimatch@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-0.3.0.tgz#603dbc3fe3281d338094a1e1b93a8b5f2be038da" + dependencies: + array-differ "^0.1.0" + array-union "^0.1.0" + minimatch "^0.3.0" + +ncp@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/ncp/-/ncp-0.5.1.tgz#743985316e3db459281b587169e845735a05439f" + +nopt@~1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" + dependencies: + abbrev "1" + +nopt@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-2.0.0.tgz#ca7416f20a5e3f9c3b86180f96295fa3d0b52e0d" + dependencies: + abbrev "1" + +noptify@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/noptify/-/noptify-0.0.3.tgz#58f654a73d9753df0c51d9686dc92104a67f4bbb" + dependencies: + nopt "~2.0.0" + +oauth-sign@~0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + +optimist@>=0.2.8: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + +performance-now@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" + +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +q@^1.0.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1" + +qs@~0.5.2: + version "0.5.6" + resolved "https://registry.yarnpkg.com/qs/-/qs-0.5.6.tgz#31b1ad058567651c526921506b9a8793911a0384" + +qs@~6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" + +request@^2.36.0: + version "2.81.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~4.2.1" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + performance-now "^0.2.0" + qs "~6.4.0" + safe-buffer "^5.0.1" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "^0.6.0" + uuid "^3.0.0" + +rimraf@^2.2.8, rimraf@~2.2.1, rimraf@~2.2.8: + version "2.2.8" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" + +safe-buffer@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" + +samsam@1.1.2, samsam@~1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.1.2.tgz#bec11fdc83a9fda063401210e40176c3024d1567" + +sigmund@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" + +sinon@^1.10.2: + version "1.17.7" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-1.17.7.tgz#4542a4f49ba0c45c05eb2e9dd9d203e2b8efe0bf" + dependencies: + formatio "1.1.1" + lolex "1.3.2" + samsam "1.1.2" + util ">=0.10.3 <1" + +sntp@1.x.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + dependencies: + hoek "2.x.x" + +sshpk@^1.7.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.0.tgz#ff2a3e4fd04497555fed97b39a0fd82fafb3a33c" + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + dashdash "^1.12.0" + getpass "^0.1.1" + optionalDependencies: + bcrypt-pbkdf "^1.0.0" + ecc-jsbn "~0.1.1" + jodid25519 "^1.0.0" + jsbn "~0.1.0" + tweetnacl "~0.14.0" + +stringstream@~0.0.4: + version "0.0.5" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" + +strip-ansi@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" + +text-table@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + +tiny-lr-fork@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/tiny-lr-fork/-/tiny-lr-fork-0.0.5.tgz#1e99e1e2a8469b736ab97d97eefa98c71f76ed0a" + dependencies: + debug "~0.7.0" + faye-websocket "~0.4.3" + noptify "~0.0.3" + qs "~0.5.2" + +tough-cookie@~2.3.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" + dependencies: + punycode "^1.4.1" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + +type-detect@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822" + +underscore.string@~2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.2.1.tgz#d7c0fa2af5d5a1a67f4253daee98132e733f0f19" + +underscore.string@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.3.3.tgz#71c08bf6b428b1133f37e78fa3a21c82f7329b0d" + +underscore.string@~2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.4.0.tgz#8cdd8fbac4e2d2ea1e7e2e8097c42f442280f85b" + +underscore@~1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209" + +"util@>=0.10.3 <1": + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + dependencies: + inherits "2.0.1" + +uuid@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" + +verror@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" + dependencies: + extsprintf "1.0.2" + +which@~1.0.5: + version "1.0.9" + resolved "https://registry.yarnpkg.com/which/-/which-1.0.9.tgz#460c1da0f810103d0321a9b633af9e575e64486f" + +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"