Compare commits

..

1 Commits

Author SHA1 Message Date
Ben
3e9e8d7d38 Update README.md
Change year to 2017
2017-08-14 12:43:19 +02:00
22 changed files with 111 additions and 3070 deletions

View File

@@ -15,4 +15,5 @@ trim_trailing_whitespace = false
insert_final_newline = false
[{package,bower}.json]
indent_style = space
indent_size = 2

View File

@@ -2,31 +2,24 @@ sudo: false
language: node_js
# Use node 8 for build
node_js:
- "8"
# Then test with specific node version
env:
- TEST_NODE_VERSION="0.10"
- TEST_NODE_VERSION="0.12"
- TEST_NODE_VERSION="4"
- TEST_NODE_VERSION="6"
- TEST_NODE_VERSION="8"
- TEST_NODE_VERSION="9"
before_install:
- node --version
- curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version 1.5.1
- export PATH=$HOME/.yarn/bin:$PATH
cache:
yarn: true
- "0.10"
- "0.11"
- "0.12"
- "4.0"
- "4.1"
- "4.2"
- "5"
- "6"
- "7"
install:
- yarn
- nvm install $TEST_NODE_VERSION
- npm install -g grunt
- node --version
- npm --version
- git --version
- svn --version | head -n 1
- npm install -g grunt-cli
- npm install
os:
- osx
@@ -36,8 +29,8 @@ matrix:
fast_finish: true
allow_failures:
- os: osx
- env: "NODE_VERSION=0.11"
- env: "NODE_VERSION=7"
script:
- nvm use $TEST_NODE_VERSION
- node --version && npm --version && git --version && svn --version | head -n 1
- grunt travis

View File

@@ -1,4 +1,4 @@
Copyright (c) 2013-present Twitter and other contributors
Copyright (c) 2017 Twitter and other contributors
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in

View File

@@ -195,6 +195,7 @@ Become a sponsor and get your logo on our README on Github with a link to your s
## License
Copyright (c) 2012-present Twitter and [other contributors](https://github.com/bower/bower/graphs/contributors)
Copyright (c) 2017 Twitter and [other contributors](https://github.com/bower/bower/graphs/contributors)
Licensed under the MIT License

View File

@@ -12,10 +12,11 @@ environment:
matrix:
- nodejs_version: "0.10"
- nodejs_version: "0.12"
- nodejs_version: "4"
- nodejs_version: "4.0"
- nodejs_version: "4.1"
- nodejs_version: "4.2"
- nodejs_version: "5"
- nodejs_version: "6"
- nodejs_version: "8"
- nodejs_version: "9"
# Finish on first failed build
matrix:
@@ -23,12 +24,10 @@ matrix:
# Install node, display versions, install dependencies
install:
- ps: Install-Product node 8
- ps: Install-Product node $env:nodejs_version
- node --version && npm --version
- git --version && svn --version
- npm install -g yarn grunt
- yarn
- ps: Install-Product node $env:nodejs_version
- npm install
# Post-install test scripts.
test_script:
@@ -43,4 +42,4 @@ deploy: off
# Cache node modules, and refresh if package.json changes
cache:
- "%LOCALAPPDATA%\\Yarn"
- node_modules -> package.json

View File

@@ -10,10 +10,7 @@ function info(logger, endpoint, property, config) {
}
// handle @ as version divider
var splitParts = endpoint.split('/');
splitParts[splitParts.length - 1] = splitParts[splitParts.length - 1].replace('@', '#');
endpoint = splitParts.join('/');
endpoint = endpoint.replace('@', '#');
var repository;
var decEndpoint;
@@ -27,33 +24,33 @@ function info(logger, endpoint, property, config) {
getPkgMeta(repository, decEndpoint, property),
decEndpoint.target === '*' && !property ? repository.versions(decEndpoint.source) : null
])
.spread(function (pkgMeta, versions) {
if (versions) {
return {
name: decEndpoint.source,
versions: versions,
latest: pkgMeta
};
}
.spread(function (pkgMeta, versions) {
if (versions) {
return {
name: decEndpoint.source,
versions: versions,
latest: pkgMeta
};
}
return pkgMeta;
});
return pkgMeta;
});
}
function getPkgMeta(repository, decEndpoint, property) {
return repository.fetch(decEndpoint)
.spread(function (canonicalDir, pkgMeta) {
pkgMeta = mout.object.filter(pkgMeta, function (value, key) {
return key.charAt(0) !== '_';
});
// Retrieve specific property
if (property) {
pkgMeta = mout.object.get(pkgMeta, property);
}
return pkgMeta;
.spread(function (canonicalDir, pkgMeta) {
pkgMeta = mout.object.filter(pkgMeta, function (value, key) {
return key.charAt(0) !== '_';
});
// Retrieve specific property
if (property) {
pkgMeta = mout.object.get(pkgMeta, property);
}
return pkgMeta;
});
}
// -------------------

View File

@@ -16,12 +16,8 @@ function install(logger, endpoints, options, config) {
// Convert endpoints to decomposed endpoints
endpoints = endpoints || [];
decEndpoints = endpoints.map(function (endpoint) {
// handle @ as version divider
var splitParts = endpoint.split('/');
splitParts[splitParts.length - 1] = splitParts[splitParts.length - 1].replace('@', '#');
endpoint = splitParts.join('/');
endpoint = endpoint.replace('@', '#');
return endpointParser.decompose(endpoint);
});
@@ -34,11 +30,11 @@ install.readOptions = function (argv) {
var cli = require('../util/cli');
var options = cli.readOptions({
'force-latest': {type: Boolean, shorthand: 'F'},
'production': {type: Boolean, shorthand: 'p'},
'save': {type: Boolean, shorthand: 'S'},
'save-dev': {type: Boolean, shorthand: 'D'},
'save-exact': {type: Boolean, shorthand: 'E'}
'force-latest': { type: Boolean, shorthand: 'F'},
'production': { type: Boolean, shorthand: 'p' },
'save': { type: Boolean, shorthand: 'S' },
'save-dev': { type: Boolean, shorthand: 'D' },
'save-exact': { type: Boolean, shorthand: 'E' }
}, argv);
var packages = options.argv.remain.slice(1);

View File

@@ -19,14 +19,14 @@ function GitRemoteResolver(decEndpoint, config, logger) {
this._name = this._name.slice(0, -4);
}
// Get the remote of this source
// Get the host of this source
if (!/:\/\//.test(this._source)) {
this._remote = url.parse('ssh://' + this._source);
this._host = url.parse('ssh://' + this._source).host;
} else {
this._remote = url.parse(this._source);
this._host = url.parse(this._source).host;
}
this._host = this._remote.host;
this._remote = url.parse(this._source);
// Verify whether the server supports shallow cloning
this._shallowClone = this._supportsShallowCloning;

View File

@@ -69,10 +69,6 @@
{
"flag": "--no-color",
"description": "Disable colors"
},
{
"flag": "--config.interactive=false",
"description": "Disable prompts"
}
]
}

View File

@@ -18,7 +18,7 @@ sudo, please spend a few minutes learning more about how your system should work
make any necessary repairs.\n\n\
http://www.joyent.com/blog/installing-node-and-npm\n\
https://gist.github.com/isaacs/579814\n\n\
You can however run a command with sudo using "--allow-root" option';
You can however run a command with sudo using --allow-root option';
if (isRoot()) {
var cli = require('./cli');

View File

@@ -17,7 +17,7 @@
"dependencies": {
"abbrev": "^1.0.5",
"archy": "1.0.0",
"bower-config": "^1.4.1",
"bower-config": "^1.4.0",
"bower-endpoint-parser": "^0.2.2",
"bower-json": "^0.8.1",
"bower-logger": "^0.2.2",
@@ -45,6 +45,7 @@
"mkdirp": "0.5.0",
"mout": "^0.11.0",
"nopt": "^3.0.1",
"opencollective": "^1.0.3",
"opn": "^4.0.0",
"p-throttler": "0.1.1",
"promptly": "0.2.0",
@@ -81,7 +82,7 @@
"load-grunt-tasks": "^3.5.0",
"mocha": "^2.5.3",
"multiline": "^1.0.2",
"nock": "^9.2.3",
"nock": "^7.7.2",
"node-uuid": "^1.4.7",
"proxyquire": "^1.7.9",
"spawn-sync": "1.0.15",
@@ -91,10 +92,16 @@
"test": "grunt test",
"ci": "grunt travis",
"coveralls": "coveralls",
"prepublish": "in-publish && echo 'You need to use \"grunt publish\" to publish bower' && false || not-in-publish"
"prepublish": "in-publish && echo 'You need to use \"grunt publish\" to publish bower' && false || not-in-publish",
"postinstall": "opencollective postinstall"
},
"files": [
"bin",
"lib"
]
],
"collective": {
"type": "opencollective",
"url": "https://opencollective.com/bower",
"logo": "https://opencollective.com/opencollective/logo.txt"
}
}

View File

@@ -10,7 +10,7 @@
"registry": {
"search": [
"http://localhost:8000",
"https://registry.bower.io"
"https://bower.herokuapp.com"
]
}
}

View File

@@ -21,7 +21,7 @@ var userAgent = !proxy && !httpsProxy
var defaults = {
'directory': 'bower_components',
'registry': 'https://registry.bower.io',
'registry': 'https://bower.herokuapp.com',
'shorthand-resolver': 'https://github.com/{{owner}}/{{package}}.git',
'tmp': paths.tmp,
'proxy': proxy,

View File

@@ -86,7 +86,7 @@ function expand(config) {
publish: config.registry
};
} else if (typeof config.registry === 'object') {
config.registry.default = config.registry.default || 'https://registry.bower.io';
config.registry.default = config.registry.default || 'https://bower.herokuapp.com';
config.registry = {
default: config.registry.default,

View File

@@ -12,12 +12,12 @@ describe('NPM Config on package.json', function () {
var config = require('../lib/Config').read(null, {});
assert.deepEqual(config.registry, {
'default': 'https://registry.bower.io',
'default': 'https://bower.herokuapp.com',
'search': [
'https://registry.bower.io'
'https://bower.herokuapp.com'
],
'register': 'https://registry.bower.io',
'publish': 'https://registry.bower.io'
'register': 'https://bower.herokuapp.com',
'publish': 'https://bower.herokuapp.com'
});
});
@@ -38,12 +38,12 @@ describe('NPM Config on package.json', function () {
var config = require('../lib/Config').read(null, { registry: { search: 'https://foobar' } });
assert.deepEqual(config.registry, {
'default': 'https://registry.bower.io',
'default': 'https://bower.herokuapp.com',
'search': [
'https://foobar',
],
'register': 'https://registry.bower.io',
'publish': 'https://registry.bower.io'
'register': 'https://bower.herokuapp.com',
'publish': 'https://bower.herokuapp.com'
});
});
@@ -70,12 +70,12 @@ describe('NPM Config on package.json', function () {
assert.deepEqual(config, {
'directory': 'bower_components',
'registry': {
'default': 'https://registry.bower.io',
'default': 'https://bower.herokuapp.com',
'search': [
'https://registry.bower.io'
'https://bower.herokuapp.com'
],
'register': 'https://registry.bower.io',
'publish': 'https://registry.bower.io'
'register': 'https://bower.herokuapp.com',
'publish': 'https://bower.herokuapp.com'
},
'shorthandResolver': 'https://github.com/{{owner}}/{{package}}.git',
'tmp': '/foo/bar',

View File

@@ -1,4 +1,4 @@
Copyright (c) 2012-present Twitter and other contributors
Copyright (c) 2016 Twitter and other contributors
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in

View File

@@ -447,7 +447,7 @@ describe('.normalize', function () {
describe('packages from bower registry', function () {
var packageList,
packageListUrl = 'http://registry.bower.io/packages';
packageListUrl = 'http://bower.herokuapp.com/packages';
this.timeout(60000);

View File

@@ -8,7 +8,7 @@ var Config = require('bower-config');
describe('RegistryClient', function () {
beforeEach(function () {
this.uri = 'https://registry.bower.io';
this.uri = 'https://bower.herokuapp.com';
this.timeoutVal = 5000;
this.registry = new RegistryClient(Config.read(process.cwd(), {
strictSsl: false,
@@ -104,7 +104,7 @@ describe('RegistryClient', function () {
describe('cache', function () {
beforeEach(function () {
nock('https://registry.bower.io:443')
nock('https://bower.herokuapp.com:443')
.get('/packages/search/jquery')
.replyWithFile(200, __dirname + '/fixtures/search.json');
@@ -114,7 +114,7 @@ describe('RegistryClient', function () {
}));
this.cacheDir = this.client._config.cache;
this.host = 'registry.bower.io';
this.host = 'bower.herokuapp.com';
this.method = 'search';
this.pkg = 'jquery';
@@ -164,7 +164,7 @@ describe('RegistryClient', function () {
//
describe('calling the lookup instance method with argument', function () {
beforeEach(function () {
nock('https://registry.bower.io:443')
nock('https://bower.herokuapp.com:443')
.get('/packages/jquery')
.reply(200, {
name: 'jquery',
@@ -260,7 +260,7 @@ describe('RegistryClient', function () {
describe('calling the lookup instance method with three registries', function () {
beforeEach(function () {
nock('https://registry.bower.io:443')
nock('https://bower.herokuapp.com:443')
.get('/packages/jquery')
.reply(404);
@@ -283,7 +283,7 @@ describe('RegistryClient', function () {
force: true,
registry: {
search: [
'https://registry.bower.io',
'https://bower.herokuapp.com',
'http://custom-registry.com',
'http://custom-registry2.com'
]
@@ -311,7 +311,7 @@ describe('RegistryClient', function () {
it('should respect order', function (next) {
this.registry._config.registry.search = [
'https://registry.bower.io',
'https://bower.herokuapp.com',
'http://custom-registry2.com',
'http://custom-registry.com'
];
@@ -330,7 +330,7 @@ describe('RegistryClient', function () {
//
describe('calling the register instance method with argument', function () {
beforeEach(function () {
nock('https://registry.bower.io:443')
nock('https://bower.herokuapp.com:443')
.post('/packages', 'name=test-ba&url=git%3A%2F%2Fgithub.com%2Ftest-ba%2Ftest-ba.git')
.reply(201);
@@ -368,7 +368,7 @@ describe('RegistryClient', function () {
describe('calling the register instance method without arguments', function () {
beforeEach(function () {
nock('https://registry.bower.io:443')
nock('https://bower.herokuapp.com:443')
.post('/packages', 'name=&url=')
.reply(400);
});
@@ -392,7 +392,7 @@ describe('RegistryClient', function () {
this.accessToken = '12345678';
this.registry._config.accessToken = this.accessToken;
nock('https://registry.bower.io:443')
nock('https://bower.herokuapp.com:443')
.delete('/packages/' + this.pkg + '?access_token=' + this.accessToken)
.reply(204);
});
@@ -420,7 +420,7 @@ describe('RegistryClient', function () {
this.pkg = 'testfoo';
this.registry._config.accessToken = '';
nock('https://registry.bower.io:443')
nock('https://bower.herokuapp.com:443')
.delete('/packages/' + this.pkg)
.reply(403);
});
@@ -440,7 +440,7 @@ describe('RegistryClient', function () {
this.accessToken = '12345678';
this.registry._config.accessToken = this.accessToken;
nock('https://registry.bower.io:443')
nock('https://bower.herokuapp.com:443')
.delete('/packages/' + this.notpkg + '?access_token=' + this.accessToken)
.reply(404);
});
@@ -459,7 +459,7 @@ describe('RegistryClient', function () {
//
describe('calling the search instance method with argument', function () {
beforeEach(function () {
nock('https://registry.bower.io:443')
nock('https://bower.herokuapp.com:443')
.get('/packages/search/jquery')
.replyWithFile(200, __dirname + '/fixtures/search.json');
@@ -505,7 +505,7 @@ describe('RegistryClient', function () {
describe('calling the search instance method with two registries', function () {
beforeEach(function () {
nock('https://registry.bower.io:443')
nock('https://bower.herokuapp.com:443')
.get('/packages/search/jquery')
.reply(200, []);
@@ -526,7 +526,7 @@ describe('RegistryClient', function () {
force: true,
registry: {
search: [
'https://registry.bower.io',
'https://bower.herokuapp.com',
'http://custom-registry.com'
]
}
@@ -566,7 +566,7 @@ describe('RegistryClient', function () {
describe('calling the search instance method without argument', function () {
beforeEach(function () {
nock('https://registry.bower.io:443')
nock('https://bower.herokuapp.com:443')
.get('/packages/search/')
.reply(404);
});
@@ -585,7 +585,7 @@ describe('RegistryClient', function () {
//
describe('calling the list instance method', function () {
beforeEach(function () {
nock('https://registry.bower.io:443')
nock('https://bower.herokuapp.com:443')
.get('/packages')
.reply(200, [], {});
@@ -610,7 +610,7 @@ describe('RegistryClient', function () {
describe('calling the list instance method with two registries', function () {
beforeEach(function () {
nock('https://registry.bower.io:443')
nock('https://bower.herokuapp.com:443')
.get('/packages')
.reply(200, []);
@@ -628,7 +628,7 @@ describe('RegistryClient', function () {
force: true,
registry: {
search: [
'https://registry.bower.io',
'https://bower.herokuapp.com',
'http://custom-registry.com'
]
}
@@ -669,7 +669,7 @@ describe('RegistryClient', function () {
describe('calling the list instance method', function () {
beforeEach(function () {
nock('https://registry.bower.io:443')
nock('https://bower.herokuapp.com:443')
.get('/packages')
.reply(200, [], {});
});

View File

@@ -124,7 +124,7 @@ describe('bower register', function () {
return helpers.expectEvent(promise.logger, 'confirm')
.spread(function (e) {
expect(e.type).to.be('confirm');
expect(e.message).to.be('Registering a package will make it installable via the registry (https://registry.bower.io), continue?');
expect(e.message).to.be('Registering a package will make it installable via the registry (https://bower.herokuapp.com), continue?');
expect(e.default).to.be(true);
});
});

View File

@@ -356,26 +356,6 @@ describe('GitRemoteResolver', function () {
});
});
it('should evaluate to true when source is a ssh protocol and host is defined to support shallow cloning', function (next) {
var testSource = 'git@foo:bar.git';
var MyGitRemoteResolver = gitRemoteResolverFactory(
createCmdHandlerFn(testSource, multiline(function () {/*
foo: bar
Content-Type: application/x-git-upload-pack-advertisement
1234: 5678
*/}))
);
var resolver = new MyGitRemoteResolver({ source: testSource }, defaultConfig({ shallowCloneHosts: ['foo'] }), logger);
resolver._shallowClone().then(function (shallowCloningSupported) {
expect(shallowCloningSupported).to.be(true);
next();
});
});
it('should cache hosts that support shallow cloning', function (next) {
var testSource = 'https://foo/bar.git';

View File

@@ -108,7 +108,7 @@ describe('download', function () {
nock.get('/package.tar.gz').times(6).delayConnection(1000).replyWithFile(200, source);
},
expectError: function (e) {
expect(e.code).to.be('ESOCKETTIMEDOUT');
expect(e.code).to.be('ETIMEDOUT');
expect(fs.readdirSync(tempDir.path)).to.be.empty();
},
downloadOpts: {

2929
yarn.lock

File diff suppressed because it is too large Load Diff