Unverified Commit 1ba4f9a2 authored by markcarver's avatar markcarver Committed by markcarver

Issue #3020589 by markcarver, cilefen: Default to Bootstrap 3.4.0

parent fdc01270
......@@ -15,11 +15,11 @@ This base theme bridges the gap between Drupal and the [Bootstrap Framework].
- Extensive integration and template/preprocessor overrides for most of the
[Bootstrap Framework] CSS, Components and JavaScript
- Theme settings to further enhance the Drupal Bootstrap integration:
- [Breadcrumbs](https://getbootstrap.com/docs/3.3/components/#breadcrumbs)
- [Navbar](https://getbootstrap.com/docs/3.3/components/#navbar)
- [Popovers](https://getbootstrap.com/docs/3.3/javascript/#popovers)
- [Tooltips](https://getbootstrap.com/docs/3.3/javascript/#tooltips)
- [Wells](https://getbootstrap.com/docs/3.3/components/#wells) (per region)
- [Breadcrumbs](https://getbootstrap.com/docs/3.4/components/#breadcrumbs)
- [Navbar](https://getbootstrap.com/docs/3.4/components/#navbar)
- [Popovers](https://getbootstrap.com/docs/3.4/javascript/#popovers)
- [Tooltips](https://getbootstrap.com/docs/3.4/javascript/#tooltips)
- [Wells](https://getbootstrap.com/docs/3.4/components/#wells) (per region)
### Documentation
Visit the project's [official documentation site](https://drupal-bootstrap.org)
......@@ -41,4 +41,4 @@ or the markdown files inside the `./docs` directory.
### 5 Year Evolution (gource)
https://youtu.be/Cvq6MPJp2dI
[Bootstrap Framework]: https://getbootstrap.com/docs/3.3/
[Bootstrap Framework]: https://getbootstrap.com/docs/3.4/
......@@ -116,7 +116,7 @@ function _drush_bootstrap_generate_docs_settings(Theme $bootstrap) {
// Ensure we have link references at the bottom.
$output[] = '';
$output[] = '[Drupal Bootstrap]: https://www.drupal.org/project/bootstrap';
$output[] = '[Bootstrap Framework]: https://getbootstrap.com/docs/3.3/';
$output[] = '[Bootstrap Framework]: https://getbootstrap.com/docs/3.4/';
// Save the generated output to the appropriate file.
return file_put_contents(realpath($bootstrap->getPath() . '/docs/Theme-Settings.md'), implode("\n", $output)) !== FALSE;
......
......@@ -65,4 +65,4 @@ Please keep in mind though, this **IS NOT** a "support" channel. It's primary
use is to discuss issues and to help fix bugs with the base theme itself.
[Drupal Bootstrap]: https://www.drupal.org/project/bootstrap
[Bootstrap Framework]: https://getbootstrap.com/docs/3.3/
[Bootstrap Framework]: https://getbootstrap.com/docs/3.4/
......@@ -12,16 +12,16 @@ Generally speaking, you should really read the entire [Bootstrap Framework]
documentation site, if you haven't already. Here are the four basic "sections"
that site is split into:
- [Getting Started](https://getbootstrap.com/docs/3.3/getting-started) - An overview of
- [Getting Started](https://getbootstrap.com/docs/3.4/getting-started) - An overview of
the [Bootstrap Framework], how to download and use, basic templates and
examples, and more.
- [CSS](https://getbootstrap.com/docs/3.3/css/) - Global CSS settings, fundamental HTML
- [CSS](https://getbootstrap.com/docs/3.4/css/) - Global CSS settings, fundamental HTML
elements styled and enhanced with extensible classes, and an advanced grid
system.
- [Components](https://getbootstrap.com/docs/3.3/components/) - Over a dozen reusable
- [Components](https://getbootstrap.com/docs/3.4/components/) - Over a dozen reusable
components built to provide iconography, dropdowns, input groups, navigation,
alerts, and much more.
- [JavaScript](https://getbootstrap.com/docs/3.3/javascript/) - Bring the
- [JavaScript](https://getbootstrap.com/docs/3.4/javascript/) - Bring the
[Bootstrap Framework] components to life with over a dozen custom jQuery
plugins. Easily include them all, or one by one.
......@@ -75,7 +75,7 @@ you are attempting to integrate the base theme with.
**A: No, not "officially"**
The [Bootstrap Framework] itself does not officially support older Internet
Explorer [compatibility modes](https://getbootstrap.com/docs/3.3/getting-started/#support-ie-compatibility-modes).
Explorer [compatibility modes](https://getbootstrap.com/docs/3.4/getting-started/#support-ie-compatibility-modes).
To ensure you are using the latest rendering mode for IE, consider installing
the [HTML5 Tools](https://www.drupal.org/project/html5_tools) module.
......@@ -123,5 +123,5 @@ Instead, you should create a custom sub-theme that isn't hosted on Drupal.org.
[Respond.js]: https://github.com/scottjehl/Respond
[Drush]: http://www.drush.org
[Drupal Bootstrap]: https://www.drupal.org/project/bootstrap
[Bootstrap Framework]: https://getbootstrap.com/docs/3.3/
[Bootstrap Framework]: https://getbootstrap.com/docs/3.4/
[jQuery Update]: https://www.drupal.org/project/jquery_update
......@@ -52,7 +52,7 @@ documentation. For clarity, we will always attempt to use this word verbosely
in one of the following ways:
- **[Drupal Bootstrap]** refers to the Drupal base theme project.
- **[Bootstrap Framework](https://getbootstrap.com/docs/3.3/)** refers to the external
- **[Bootstrap Framework](https://getbootstrap.com/docs/3.4/)** refers to the external
front end framework.
- **[drupal_bootstrap](https://api.drupal.org/apis/drupal_bootstrap)** refers
to Drupal's bootstrapping process or phase.
......
......@@ -61,7 +61,7 @@ enabled your starterkit, please refer to the starterkit's documentation page
to customize.
[Drupal Bootstrap]: https://www.drupal.org/project/bootstrap
[Bootstrap Framework]: https://getbootstrap.com/docs/3.3/
[Bootstrap Framework]: https://getbootstrap.com/docs/3.4/
[jsDelivr CDN]: http://www.jsdelivr.com
[Less]: http://lesscss.org
[Sass]: http://sass-lang.com
......@@ -96,7 +96,7 @@ flexibility if the need ever arises.
</div>
<pre class=" language-yaml"><code>
cdn_custom_css:
'https://cdn.jsdelivr.net/bootstrap/3.3.7/css/bootstrap.css'
'https://cdn.jsdelivr.net/npm/bootstrap@3.4.0/dist/css/bootstrap.css'
</code></pre>
</td>
......@@ -112,7 +112,7 @@ used instead if site aggregation is enabled.
</div>
<pre class=" language-yaml"><code>
cdn_custom_css_min:
'https://cdn.jsdelivr.net/bootstrap/3.3.7/css/bootstrap.min.css'
'https://cdn.jsdelivr.net/npm/bootstrap@3.4.0/dist/css/bootstrap.min.css'
</code></pre>
</td>
......@@ -127,7 +127,8 @@ It is best to use <code>https</code> protocols here as it will allow more
flexibility if the need ever arises.
</div>
<pre class=" language-yaml"><code>
cdn_custom_js: 'https://cdn.jsdelivr.net/bootstrap/3.3.7/js/bootstrap.js'
cdn_custom_js:
'https://cdn.jsdelivr.net/npm/bootstrap@3.4.0/dist/js/bootstrap.js'
</code></pre>
</td>
......@@ -143,7 +144,7 @@ used instead if site aggregation is enabled.
</div>
<pre class=" language-yaml"><code>
cdn_custom_js_min:
'https://cdn.jsdelivr.net/bootstrap/3.3.7/js/bootstrap.min.js'
'https://cdn.jsdelivr.net/npm/bootstrap@3.4.0/dist/js/bootstrap.min.js'
</code></pre>
</td>
......@@ -157,7 +158,7 @@ cdn_jsdelivr_version
Choose the Bootstrap version from jsdelivr
</div>
<pre class=" language-yaml"><code>
cdn_jsdelivr_version: 3.3.7
cdn_jsdelivr_version: 3.4.0
</code></pre>
</td>
......@@ -673,10 +674,9 @@ modal_jquery_ui_bridge
<td>
<div class="help-block">
Enabling this replaces the core/jquery.ui.dialog dependency in the
core/drupal.dialog library with a bridge. This bridge adds support to
Bootstrap Modals so that it may interpret jQuery UI Dialog functionality.
It is highly recommended that this remain enabled unless you know what
you're really doing.
core/drupal.dialog library with a jQuery UI Dialog widget bridge. This
bridge adds support to Bootstrap Modals so that it may interpret jQuery UI
Dialog functionality.
</div>
<pre class=" language-yaml"><code>
modal_jquery_ui_bridge: 1
......@@ -720,7 +720,8 @@ modal_focus_input
<td>
<div class="help-block">
Enabling this focuses on the first available and visible input found in the
modal after it's opened.
modal after it's opened. If no element is found, the close button (if
visible) is focused instead.
</div>
<pre class=" language-yaml"><code>
modal_focus_input: 1
......@@ -1130,4 +1131,4 @@ tooltip_trigger: hover
</table>
[Drupal Bootstrap]: https://www.drupal.org/project/bootstrap
[Bootstrap Framework]: https://getbootstrap.com/docs/3.3/
\ No newline at end of file
[Bootstrap Framework]: https://getbootstrap.com/docs/3.4/
......@@ -113,7 +113,16 @@ module.exports = function (grunt) {
// Then, import the variable overrides.
'@import "' + path.join('starterkits', 'less', 'less', 'variable-overrides.less') + '"',
// Finally, import the base-theme overrides.
'@import "' + path.join('starterkits', 'less', 'less', 'overrides.less') + '"'
'@import "' + path.join('starterkits', 'less', 'less', 'overrides.less') + '"',
// Add some default variables that may not be available.
'@form-group-margin-bottom: 15px',
'@screen-sm-min: @screen-sm',
'@screen-md-min: @screen-md',
'@screen-lg-min: @screen-lg',
'@container-sm: @container-tablet',
'@container-md: @container-desktop',
'@container-large-desktop: (1140px + @grid-gutter-width)',
'@container-lg: @container-large-desktop'
];
grunt.log.debug("\noptions: " + JSON.stringify(options, null, 2));
grunt.log.debug(imports.join("\n"));
......
......@@ -7,6 +7,12 @@ module.exports = function (grunt) {
var force = grunt.option('force');
var path = require('path');
var pkg = require('../package');
var mapSeries = require('promise-map-series');
var simpleJsonRequest = require('simple-json-request');
var semver = require('semver');
var getJson = function (uri) {
return simpleJsonRequest.get({url: uri});
};
// Internal variables.
var libraries = {};
......@@ -27,25 +33,71 @@ module.exports = function (grunt) {
grunt.verbose.writeln((expired ? 'EXPIRED' : 'VALID')[expired ? 'red' : 'green']);
}
var getApiV1Json = function ($package) {
var $json = {name: $package, assets: []};
var $latest = '0.0.0';
var $versions = [];
return getJson('https://data.jsdelivr.com/v1/package/npm/' + $package)
.catch(function (error) {
if (!(error instanceof Error)) {
error = new Error(error);
}
grunt.verbose.error(error);
})
.then(function ($packageJson) {
if (!$packageJson) {
$packageJson = {versions: []};
}
if ($packageJson.versions === void 0) {
$packageJson.versions = [];
}
return mapSeries($packageJson.versions, function ($version, $key) {
// Skip irrelevant versions.
if (!$version.match(/^3\.\d+\.\d+$/)) {
return Promise.resolve();
}
return getJson('https://data.jsdelivr.com/v1/package/npm/' + $package + '@' + $version + '/flat')
.then(function ($versionJson) {
// Skip empty files.
if (!$versionJson.files || !$versionJson.files.length) {
return;
}
$versions.push($version);
if (semver.compare($latest, $version) === -1) {
$latest = $version;
}
var $asset = {files: [], version: $version};
$versionJson.files.forEach(function ($file) {
// Skip old bootswatch file structure.
if ($package === 'bootswatch' && $file.name.match(/^\/2|\/bower_components/)) {
return;
}
var $matches = $file.name.match(/([^/]*)\/bootstrap(-theme)?(\.min)?\.(js|css)$/, $file['name']);
if ($matches && $matches[1] !== void 0 && $matches[4] !== void 0 && $matches[1] !== 'custom') {
$asset.files.push($file.name);
}
});
$json.assets.push($asset);
$json.lastversion = $latest;
$json.versions = $versions;
})
});
})
.then(function () {
return $json;
});
};
// Register a private sub-task. Doing this inside the main task prevents
// this private sub-task from being executed directly and also prevents it
// from showing up on the list of available tasks on --help.
grunt.registerTask('sync:api', function () {
var done = this.async();
var request = require('request');
grunt.verbose.write(pkg.urls.jsdelivr + ' ');
request(pkg.urls.jsdelivr, function (error, response, body) {
if (!error && response.statusCode == 200) {
grunt.verbose.ok();
var json;
grunt.verbose.write("\nParsing JSON response...");
try {
json = JSON.parse(body);
grunt.verbose.ok();
} catch (e) {
grunt.verbose.error();
throw grunt.util.error('Unable to parse the response value (' + e.message + ').', e);
}
mapSeries(['bootstrap', 'bootswatch'], function ($package) {
return getApiV1Json($package);
}).then(function (json) {
grunt.verbose.write("\nExtracting versions and themes from libraries...");
libraries = {};
json.forEach(function (library) {
......@@ -60,7 +112,7 @@ module.exports = function (grunt) {
libraries[library.name][asset.version]['bootstrap'] = true;
}
else {
libraries[library.name][asset.version][file.split(path.sep)[0]] = true;
libraries[library.name][asset.version][file.split(path.sep).filter(Boolean)[0]] = true;
}
});
}
......@@ -90,18 +142,8 @@ module.exports = function (grunt) {
grunt.file.write(librariesCache, JSON.stringify(libraries, null, 2));
grunt.log.ok('Synced');
}
else {
grunt.verbose.error();
if (error) grunt.verbose.error(error);
grunt.verbose.error('Request URL: ' + pkg.urls.jsdelivr);
grunt.verbose.error('Status Code: ' + response.statusCode);
grunt.verbose.error('Response Headers: ' + JSON.stringify(response.headers, null, 2));
grunt.verbose.error('Response:');
grunt.verbose.error(body);
grunt.fail.fatal('Unable to establish a connection. Run with --verbose to view the response received.');
}
return done(error);
done();
});
});
......
......@@ -13,7 +13,7 @@ use Drupal\bootstrap\Bootstrap;
function bootstrap_icon_providers() {
$providers['bootstrap'] = [
'title' => t('Bootstrap'),
'url' => 'https://getbootstrap.com/docs/3.3/components/#glyphicons',
'url' => 'https://getbootstrap.com/docs/3.4/components/#glyphicons',
];
return $providers;
}
......
......@@ -169,7 +169,7 @@
// Unfortunately getbootstrap.com does not have HTTPS enabled, so the
// preview image cannot be protocol relative.
// @todo Make protocol relative if/when Bootstrap enables HTTPS.
$preview.append('<a id="bootstrap-theme-preview-bootstrap_theme" class="bootswatch-preview element-invisible" href="https://getbootstrap.com/docs/3.3/examples/theme/" target="_blank"><img class="img-responsive" src="//getbootstrap.com/docs/3.3/examples/screenshots/theme.jpg" alt="' + Drupal.t('Preview of the Bootstrap theme') + '" /></a>');
$preview.append('<a id="bootstrap-theme-preview-bootstrap_theme" class="bootswatch-preview element-invisible" href="https://getbootstrap.com/docs/3.4/examples/theme/" target="_blank"><img class="img-responsive" src="//getbootstrap.com/docs/3.4/examples/screenshots/theme.jpg" alt="' + Drupal.t('Preview of the Bootstrap theme') + '" /></a>');
// Retrieve the Bootswatch theme preview images.
// @todo This should be moved into PHP.
......
......@@ -15,8 +15,10 @@
"less-plugin-autoprefix": "^1.4.2",
"less-plugin-clean-css": "^1.5.1",
"load-grunt-config": "^0.19.2",
"promise-map-series": "^0.2.3",
"queue": "^4.4.1",
"request": "^2.83.0",
"semver": "^5.6.0",
"simple-json-request": "^0.5.2",
"sync-exec": "^0.6.1",
"time-grunt": "^1.4.0"
},
......@@ -31,9 +33,6 @@
"js": "js",
"libraries": "lib"
},
"urls": {
"jsdelivr": "https://api.jsdelivr.com/v1/bootstrap/libraries"
},
"githooks": {
"post-checkout": [
{
......
......@@ -61,14 +61,14 @@ class Bootstrap {
*
* @var string
*/
const FRAMEWORK_VERSION = '3.3.7';
const FRAMEWORK_VERSION = '3.4.0';
/**
* The Bootstrap Framework documentation site.
*
* @var string
*/
const FRAMEWORK_HOMEPAGE = 'https://getbootstrap.com/docs/3.3/';
const FRAMEWORK_HOMEPAGE = 'https://getbootstrap.com/docs/3.4/';
/**
* The Bootstrap Framework repository.
......@@ -1009,6 +1009,7 @@ class Bootstrap {
$versions['3.3.5'] = $versions['3.3.4'];
$versions['3.3.6'] = $versions['3.3.5'];
$versions['3.3.7'] = $versions['3.3.6'];
$versions['3.4.0'] = $versions['3.3.7'];
}
// Return a specific versions icon set.
......
......@@ -25,7 +25,7 @@ class FormElement extends PreprocessBase implements PreprocessInterface {
$variables['is_autocomplete'] = TRUE;
}
// See https://getbootstrap.com/docs/3.3/css/#forms-controls.
// See https://getbootstrap.com/docs/3.4/css/#forms-controls.
$checkbox = $variables['is_checkbox'] = $element->isType('checkbox');
$radio = $variables['is_radio'] = $element->isType('radio');
......
......@@ -15,7 +15,7 @@ use Drupal\bootstrap\Plugin\Setting\SettingBase;
* type = "textfield",
* weight = 1,
* title = @Translation("Bootstrap CSS URL"),
* defaultValue = "https://cdn.jsdelivr.net/bootstrap/3.3.7/css/bootstrap.css",
* defaultValue = "https://cdn.jsdelivr.net/npm/bootstrap@3.4.0/dist/css/bootstrap.css",
* description = @Translation("It is best to use <code>https</code> protocols here as it will allow more flexibility if the need ever arises."),
* groups = {
* "advanced" = @Translation("Advanced"),
......
......@@ -15,7 +15,7 @@ use Drupal\bootstrap\Plugin\Setting\SettingBase;
* type = "textfield",
* weight = 2,
* title = @Translation("Minified Bootstrap CSS URL"),
* defaultValue = "https://cdn.jsdelivr.net/bootstrap/3.3.7/css/bootstrap.min.css",
* defaultValue = "https://cdn.jsdelivr.net/npm/bootstrap@3.4.0/dist/css/bootstrap.min.css",
* description = @Translation("Additionally, you can provide the minimized version of the file. It will be used instead if site aggregation is enabled."),
* groups = {
* "advanced" = @Translation("Advanced"),
......
......@@ -15,7 +15,7 @@ use Drupal\bootstrap\Plugin\Setting\SettingBase;
* type = "textfield",
* weight = 3,
* title = @Translation("Bootstrap JavaScript URL"),
* defaultValue = "https://cdn.jsdelivr.net/bootstrap/3.3.7/js/bootstrap.js",
* defaultValue = "https://cdn.jsdelivr.net/npm/bootstrap@3.4.0/dist/js/bootstrap.js",
* description = @Translation("It is best to use <code>https</code> protocols here as it will allow more flexibility if the need ever arises."),
* groups = {
* "advanced" = @Translation("Advanced"),
......
......@@ -15,7 +15,7 @@ use Drupal\bootstrap\Plugin\Setting\SettingBase;
* type = "textfield",
* weight = 4,
* title = @Translation("Minified Bootstrap JavaScript URL"),
* defaultValue = "https://cdn.jsdelivr.net/bootstrap/3.3.7/js/bootstrap.min.js",
* defaultValue = "https://cdn.jsdelivr.net/npm/bootstrap@3.4.0/dist/js/bootstrap.min.js",
* description = @Translation("Additionally, you can provide the minimized version of the file. It will be used instead if site aggregation is enabled."),
* groups = {
* "advanced" = @Translation("Advanced"),
......
......@@ -39,7 +39,7 @@ class CdnJsdelivrTheme extends CdnProvider {
$setting->setProperty('suffix', '<div id="bootstrap-theme-preview"></div>');
$setting->setProperty('description', t('Choose the example <a href=":bootstrap_theme" target="_blank">Bootstrap Theme</a> provided by Bootstrap or one of the many, many <a href=":bootswatch" target="_blank">Bootswatch</a> themes!', [
':bootswatch' => 'https://bootswatch.com',
':bootstrap_theme' => 'https://getbootstrap.com/docs/3.3/examples/theme/',
':bootstrap_theme' => 'https://getbootstrap.com/docs/3.4/examples/theme/',
]));
$options = [];
......
......@@ -31,7 +31,7 @@ use Drupal\Core\Form\FormStateInterface;
* "region_wells" = @Translation("Region Wells"),
* },
* see = {
* "https://getbootstrap.com/docs/3.3/components/#wells" = @Translation("Bootstrap Wells"),
* "https://getbootstrap.com/docs/3.4/components/#wells" = @Translation("Bootstrap Wells"),
* },
* )
*/
......
......@@ -20,7 +20,7 @@ use Drupal\bootstrap\Plugin\Setting\SettingBase;
* "button" = @Translation("Buttons"),
* },
* see = {
* "https://getbootstrap.com/docs/3.3/css/#buttons" = @Translation("Buttons"),
* "https://getbootstrap.com/docs/3.4/css/#buttons" = @Translation("Buttons"),
* "https://drupal-bootstrap.org/apis/hook_bootstrap_colorize_text_alter" = @Translation("hook_bootstrap_colorize_text_alter()"),
* },
* )
......
......@@ -20,7 +20,7 @@ use Drupal\bootstrap\Plugin\Setting\SettingBase;
* "container" = @Translation("Container"),
* },
* see = {
* "https://getbootstrap.com/docs/3.3/css/#grid-example-fluid" = @Translation("Fluid container"),
* "https://getbootstrap.com/docs/3.4/css/#grid-example-fluid" = @Translation("Fluid container"),
* },
* )
*/
......
......@@ -26,7 +26,7 @@ use Drupal\bootstrap\Plugin\Setting\SettingBase;
* "img-thumbnail" = @Translation("Thumbnail"),
* },
* see = {
* "https://getbootstrap.com/docs/3.3/css/#images-shapes" = @Translation("Image Shapes"),
* "https://getbootstrap.com/docs/3.4/css/#images-shapes" = @Translation("Image Shapes"),
* },
* )
*/
......
......@@ -32,7 +32,7 @@ class ModalEnabled extends SettingBase {
parent::alterFormElement($form, $form_state, $form_id);
$group = $this->getGroupElement($form, $form_state);
$group->setProperty('description', t('Modals are streamlined, but flexible, dialog prompts with the minimum required functionality and smart defaults. See <a href=":url" target="_blank">Bootstrap Modals</a> for more documentation.', [
':url' => 'https://getbootstrap.com/docs/3.3/javascript/#modals',
':url' => 'https://getbootstrap.com/docs/3.4/javascript/#modals',
]));
}
......
......@@ -34,7 +34,7 @@ class TooltipEnabled extends SettingBase {
$group = $this->getGroupElement($form, $form_state);
$group->setProperty('description', t('Inspired by the excellent jQuery.tipsy plugin written by Jason Frame; Tooltips are an updated version, which don\'t rely on images, use CSS3 for animations, and data-attributes for local title storage. See <a href=":url" target="_blank">Bootstrap tooltips</a> for more documentation.', [
':url' => 'https://getbootstrap.com/docs/3.3/javascript/#tooltips',
':url' => 'https://getbootstrap.com/docs/3.4/javascript/#tooltips',
]));
}
......
......@@ -25,5 +25,5 @@ Please refer to the @link theme_settings Sub-theme Settings @endlink topic.
Please refer to the @link registry Theme Registry @endlink topic.
[Drupal Bootstrap]: https://www.drupal.org/project/bootstrap
[Bootstrap Framework]: https://getbootstrap.com/docs/3.3/
[Bootstrap Framework]: https://getbootstrap.com/docs/3.4/
[jsDelivr CDN]: http://www.jsdelivr.com
......@@ -61,6 +61,6 @@ extension of course).
- @link templates Templates @endlink
- @link plugins Plugin System @endlink
[Bootstrap Framework]: https://getbootstrap.com/docs/3.3/
[Bootstrap Framework]: https://getbootstrap.com/docs/3.4/
[Bootstrap Framework Source Files]: https://github.com/twbs/bootstrap/releases
[Less]: http://lesscss.org
......@@ -54,6 +54,6 @@ name, using a different extension of course).
- @link templates Templates @endlink
- @link plugins Plugin System @endlink
[Bootstrap Framework]: https://getbootstrap.com/docs/3.3/
[Bootstrap Framework]: https://getbootstrap.com/docs/3.4/
[Bootstrap Framework Source Files]: https://github.com/twbs/bootstrap-sass
[Sass]: http://sass-lang.com
......@@ -351,6 +351,12 @@ decamelize@^1.1.2:
version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
decompress-response@^3.3.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3"
dependencies:
mimic-response "^1.0.0"
delayed-stream@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
......@@ -995,6 +1001,10 @@ mimic-fn@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18"
mimic-response@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4, minimatch@~3.0.0, minimatch@~3.0.2:
version "3.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
......@@ -1073,7 +1083,7 @@ on-finished@~2.3.0:
dependencies:
ee-first "1.1.1"
once@^1.3.0:
once@^1.3.0, once@^1.3.1:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
dependencies:
......@@ -1180,6 +1190,12 @@ pretty-ms@^2.1.0:
parse-ms "^1.0.0"
plur "^1.0.0"
promise-map-series@^0.2.3:
version "0.2.3"
resolved "https://registry.yarnpkg.com/promise-map-series/-/promise-map-series-0.2.3.tgz#c2d377afc93253f6bd03dbb77755eb88ab20a847"
dependencies:
rsvp "^3.0.14"
promise@^7.1.1:
version "7.3.1"
resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf"
......@@ -1248,7 +1264,7 @@ repeating@^2.0.0:
dependencies:
is-finite "^1.0.0"
request@^2.72.0, request@^2.83.0:
request@^2.72.0:
version "2.83.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356"
dependencies:
......@@ -1302,6 +1318,10 @@ rimraf@~2.2.8:
version "2.2.8"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582"
rsvp@^3.0.14:
version "3.6.2"
resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a"
run-async@^2.2.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
......@@ -1333,10 +1353,32 @@ safefs@^4.0.0:
version "5.4.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e"
semver@^5.6.0:
version "5.6.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004"
signal-exit@^3.0.0, signal-exit@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
simple-concat@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6"
simple-get@^3.0.2:
version "3.0.3"
resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.0.3.tgz#924528ac3f9d7718ce5e9ec1b1a69c0be4d62efa"
dependencies:
decompress-response "^3.3.0"
once "^1.3.1"
simple-concat "^1.0.0"
simple-json-request@^0.5.2:
version "0.5.2"
resolved "https://registry.yarnpkg.com/simple-json-request/-/simple-json-request-0.5.2.tgz#9ccb9376dbb600b150e666336197c9371c874075"
dependencies:
simple-get "^3.0.2"
sntp@2.x.x:
version "2.0.2"
resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.0.2.tgz#5064110f0af85f7cfdb7d6b67a40028ce52b4b2b"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment