update for breaking blueprintjs style changes

it is no longer feasible to build the blueprintjs css ourselves, so we
just use all of the default variable values and override things using
selectors instead.
This commit is contained in:
David Lechner
2022-05-11 18:13:36 -05:00
parent 896b3eae3e
commit 65623f801d
16 changed files with 152 additions and 269 deletions
-9
View File
@@ -182,15 +182,6 @@ module.exports = function (webpackEnv) {
loader: require.resolve(preProcessor),
options: {
sourceMap: true,
sassOptions: {
functions: {
// https://github.com/palantir/blueprint/issues/4759#issuecomment-1112218581
"svg-icon($path, $selectors: null)": require("@vgrid/sass-inline-svg")("blueprints-icons", {
optimize: true,
encodingFormat: "uri",
}),
}
}
},
}
);
-1
View File
@@ -34,7 +34,6 @@
"@types/web-locks-api": "^0.0.2",
"@types/wicg-file-system-access": "^2020.9.5",
"@types/zen-push": "^0.1.1",
"@vgrid/sass-inline-svg": "^1.0.1",
"babel-jest": "^27.4.2",
"babel-loader": "^8.2.3",
"babel-plugin-macros": "^3.0.1",
+17 -17
View File
@@ -3,44 +3,44 @@
// Custom styling for the App control.
@import '../variables.scss';
@use '@blueprintjs/core/lib/scss/variables' as bp;
@use '../variables' as pb;
.pb-app {
background-color: $pt-app-background-color;
}
background-color: bp.$pt-app-background-color;
.#{$ns}-dark .pb-app {
background-color: $pt-dark-app-background-color;
.#{bp.$ns}-dark & {
background-color: bp.$pt-dark-app-background-color;
}
}
.pb-app-body {
// height makes everything fit without scrolling
height: calc(
var(--pb-vh, 100vh) - #{$pb-toolbar-height} - #{$pb-status-bar-height}
var(--pb-vh, 100vh) - #{pb.$toolbar-height} - #{pb.$status-bar-height}
) !important;
}
.#{$ns}-dark .splitter-layout > .layout-splitter {
// make layout splitter match app color scheme
background-color: $pt-dark-app-background-color;
}
// make layout splitter match app color scheme
.splitter-layout > .layout-splitter {
// make layout splitter match app color scheme
background-color: $pt-app-background-color;
background-color: bp.$pt-divider-black;
.#{bp.$ns}-dark & {
background-color: bp.$pt-dark-divider-white;
}
}
.splitter-layout .layout-pane {
overflow: hidden;
}
.#{$ns}-dark .pb-app-terminal-padding {
background-color: black;
}
.pb-app-terminal-padding {
padding-left: 10px;
background-color: white;
.#{bp.$ns}-dark & {
background-color: black;
}
}
// hide the docs and resize separator
+4 -4
View File
@@ -3,7 +3,7 @@
// Custom styling for the Editor control.
@import '../variables.scss';
@use '@blueprintjs/core/lib/scss/variables' as bp;
// add "BETA" watermark
@@ -19,8 +19,8 @@
pointer-events: none;
}
.#{$ns}-dark .pb-editor-placeholder {
color: $pt-dark-text-color-muted;
.#{bp.$ns}-dark .pb-editor-placeholder {
color: bp.$pt-dark-text-color-muted;
}
.pb-editor-tab {
@@ -34,7 +34,7 @@
.pb-editor-placeholder {
pointer-events: none;
width: max-content;
color: $pt-text-color-muted;
color: bp.$pt-text-color-muted;
font-style: italic;
padding-left: 4px;
}
+2 -2
View File
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: MIT
// Copyright (c) 2022 The Pybricks Authors
@import '../variables.scss';
@use '@blueprintjs/core/lib/scss/variables' as bp;
.pb-explorer-file-tree {
// to allow for focus outline
@@ -9,6 +9,6 @@
}
// reveal file action buttons on hover
.#{$ns}-tree-node-content:not(:hover) .pb-explorer-file-action-button-group {
.#{bp.$ns}-tree-node-content:not(:hover) .pb-explorer-file-action-button-group {
display: none;
}
+85 -57
View File
@@ -1,11 +1,16 @@
// SPDX-License-Identifier: MIT
// Copyright (c) 2020-2022 The Pybricks Authors
// css files
@use 'normalize.css/normalize';
@use '@blueprintjs/core/lib/css/blueprint';
@use '@blueprintjs/popover2/lib/css/blueprint-popover2';
// sass files
@use 'sass:color';
@use 'sass:math';
@import './variables.scss';
@import '~normalize.css';
@import '~@blueprintjs/core/src/blueprint.scss';
@import '~@blueprintjs/popover2/src/blueprint-popover2.scss';
@use 'variables' as pb;
@use '@blueprintjs/core/lib/scss/variables' as bp;
:root {
--pb-vh: 100vh;
@@ -37,78 +42,101 @@ body {
// global style tweaks
.#{$ns}-toast {
.#{bp.$ns}-toast {
user-select: text;
max-width: 700px;
}
.#{$ns}-button {
.#{bp.$ns}-button {
user-select: none;
&.#{bp.$ns}-intent-primary {
background-color: pb.$pybricks-blue;
&:hover {
background-color: color.adjust(pb.$pybricks-blue, $lightness: -5%);
}
&:disabled,
&.#{bp.$ns}-disabled {
background-color: rgba(pb.$pybricks-blue, 0.5);
}
}
&-text > img {
display: block;
}
&-group:not(.#{bp.$ns}-minimal) {
& > .#{bp.$ns}-popover-wrapper:not(:last-child) .#{bp.$ns}-button,
& > .#{bp.$ns}-button:not(:last-child) {
margin-right: 0px;
}
}
}
a.#{$ns}-button {
a.#{bp.$ns}-button {
text-align: left;
}
.#{$ns}-button-text > img {
display: block;
}
.#{$ns}-button-group:not(.#{$ns}-minimal)
> .#{$ns}-popover-wrapper:not(:last-child)
.#{$ns}-button,
.#{$ns}-button-group:not(.#{$ns}-minimal) > .#{$ns}-button:not(:last-child) {
margin-right: 0px;
}
.#{$ns}-dialog-footer-actions {
.#{bp.$ns}-dialog-footer-actions {
flex-wrap: wrap;
row-gap: 10px;
}
.#{bp.$ns}-control {
& input:checked ~ .#{bp.$ns}-control-indicator,
&.#{bp.$ns}-switch input:checked ~ .#{bp.$ns}-control-indicator {
background-color: pb.$pybricks-blue;
.#{$ns}-form-group > .#{$ns}-label {
.#{bp.$ns}-dark & {
background-color: pb.$pybricks-blue;
}
}
}
.#{bp.$ns}-form-group > .#{bp.$ns}-label {
font-weight: bolder;
}
::-webkit-scrollbar {
width: 16px;
}
.#{$ns}-dark ::-webkit-scrollbar-track {
background: $pt-dark-app-background-color;
}
::-webkit-scrollbar-track {
background: $pt-app-background-color;
}
.#{$ns}-dark ::-webkit-scrollbar-thumb {
border-color: $pt-dark-app-background-color;
background: $pt-dark-icon-color;
}
::-webkit-scrollbar-thumb {
border-width: 3px;
border-style: solid;
border-radius: 8px;
border-color: $pt-app-background-color;
background: $pt-icon-color;
}
.#{$ns}-dark ::-webkit-scrollbar-thumb:hover {
background: $pt-dark-icon-color-hover;
}
::-webkit-scrollbar-thumb:hover {
background: $pt-icon-color-hover;
}
.#{$ns}-input-group .#{$ns}-icon {
.#{bp.$ns}-input-group .#{bp.$ns}-icon {
margin: 7px;
}
// don't take up so much space when there is no caret
.#{$ns}-tree-node-caret-none {
// $pt-grid-size / 2 matches padding on .#{$ns}-tree-node-conent
min-width: math.div($pt-grid-size, 2);
.#{bp.$ns}-tree-node-caret-none {
// $pt-grid-size / 2 matches padding on .#{bp.$ns}-tree-node-conent
min-width: math.div(bp.$pt-grid-size, 2);
}
::-webkit-scrollbar {
width: 16px;
&-track {
background: bp.$pt-app-background-color;
.#{bp.$ns}-dark & {
background: bp.$pt-dark-app-background-color;
}
}
&-thumb {
border-width: 3px;
border-style: solid;
border-radius: 8px;
border-color: bp.$pt-app-background-color;
background: bp.$pt-icon-color;
&:hover {
background: bp.$pt-icon-color-hover;
}
.#{bp.$ns}-dark & {
border-color: bp.$pt-dark-app-background-color;
background: bp.$pt-dark-icon-color;
&:hover {
background: bp.$pt-dark-icon-color-hover;
}
}
}
}
+1 -1
View File
@@ -3,7 +3,7 @@
// Custom styling for the LicenseDialog control.
@import '../variables.scss';
@use '@blueprintjs/core/lib/scss/variables' as bp;
.pb-license-dialog {
width: 1200px;
@@ -1,10 +1,10 @@
// SPDX-License-Identifier: MIT
// Copyright (c) 2022 The Pybricks Authors
@import '../variables.scss';
@use '@blueprintjs/core/lib/scss/variables' as bp;
pre.pb-notification-stack-trace {
max-width: $pt-grid-size * 50;
max-height: $pt-grid-size * 50;
max-width: bp.$pt-grid-size * 50;
max-height: bp.$pt-grid-size * 50;
overflow: auto;
}
+3 -3
View File
@@ -1,11 +1,11 @@
// SPDX-License-Identifier: MIT
// Copyright (c) 2021 The Pybricks Authors
// Copyright (c) 2021-2022 The Pybricks Authors
// Custom styling for the settings controls.
@import '../variables.scss';
@use '@blueprintjs/core/lib/scss/variables' as bp;
.pb-hub-name-input .#{$ns}-input {
.pb-hub-name-input .#{bp.$ns}-input {
width: 200px;
margin-left: 8px;
}
+17 -16
View File
@@ -1,15 +1,16 @@
// SPDX-License-Identifier: MIT
// Copyright (c) 2020-2021 The Pybricks Authors
// Copyright (c) 2020-2022 The Pybricks Authors
// Custom styling for the StatusBar control.
@import '../variables.scss';
@use '@blueprintjs/core/lib/scss/variables' as bp;
@use '../variables' as pb;
.pb-status-bar {
position: fixed;
top: calc(var(--pb-vh, 100vh) - #{$pb-status-bar-height});
background-color: $pb-pybricks-blue;
height: $pb-status-bar-height;
top: calc(var(--pb-vh, 100vh) - #{pb.$status-bar-height});
background-color: pb.$pybricks-blue;
height: pb.$status-bar-height;
width: 100vw;
padding-inline: 5px;
display: flex;
@@ -30,31 +31,31 @@
.pb-battery-indicator-body {
border-radius: 3px;
border: 2px solid $pt-text-color;
background-color: $pt-text-color;
border: 2px solid bp.$pt-text-color;
background-color: bp.$pt-text-color;
width: 30px;
}
.pb-battery-indicator-body .#{$ns}-progress-bar {
.pb-battery-indicator-body .#{bp.$ns}-progress-bar {
height: 12px;
}
.pb-battery-indicator-body .#{$ns}-progress-bar,
.pb-battery-indicator-body .#{$ns}-progress-meter {
.pb-battery-indicator-body .#{bp.$ns}-progress-bar,
.pb-battery-indicator-body .#{bp.$ns}-progress-meter {
border-radius: 3px;
}
.pb-battery-indicator-tip {
border-top-right-radius: 1px;
border-bottom-right-radius: 1px;
border: 1px solid $pt-text-color;
background-color: $pt-text-color;
border: 1px solid bp.$pt-text-color;
background-color: bp.$pt-text-color;
width: 3px;
height: 8px;
}
.#{$ns}-dark .pb-battery-indicator-body,
.#{$ns}-dark .pb-battery-indicator-tip {
border-color: $pt-dark-text-color;
background-color: $pt-dark-text-color;
.#{bp.$ns}-dark .pb-battery-indicator-body,
.#{bp.$ns}-dark .pb-battery-indicator-tip {
border-color: bp.$pt-dark-text-color;
background-color: bp.$pt-dark-text-color;
}
+9 -8
View File
@@ -1,16 +1,17 @@
// SPDX-License-Identifier: MIT
// Copyright (c) 2020-2021 The Pybricks Authors
// Copyright (c) 2020-2022 The Pybricks Authors
// Custom styling for the Toolbar control.
@import '../variables.scss';
@use '@blueprintjs/core/lib/scss/variables' as bp;
@use '../variables' as pb;
.pb-toolbar {
height: $pb-toolbar-height;
padding: 0 $pt-grid-size * 1.5;
height: pb.$toolbar-height;
padding: 0 bp.$pt-grid-size * 1.5;
position: relative;
width: 100%;
z-index: $pt-z-index-content;
z-index: bp.$pt-z-index-content;
}
.pb-toolbar * {
@@ -23,18 +24,18 @@
&.pb-align-left {
float: left;
margin-right: $pt-grid-size * 2;
margin-right: bp.$pt-grid-size * 2;
}
&.pb-align-right {
float: right;
margin-left: $pt-grid-size * 2;
margin-left: bp.$pt-grid-size * 2;
}
}
// make small buttons more square and slightly smaller
@media screen and (max-width: 700px) {
.pb-toolbar .#{$ns}-button {
.pb-toolbar .#{bp.$ns}-button {
padding: 5px;
}
}
+3 -3
View File
@@ -1,13 +1,13 @@
// SPDX-License-Identifier: MIT
// Copyright (c) 2021 The Pybricks Authors
// Copyright (c) 2021-2022 The Pybricks Authors
@import '../variables.scss';
@use '@blueprintjs/core/lib/scss/variables' as bp;
span.pb-external-link {
white-space: nowrap;
}
// override some button magic in case this is used in a button
.#{$ns}-button .pb-external-link .#{$ns}-icon:first-child:last-child {
.#{bp.$ns}-button .pb-external-link .#{bp.$ns}-icon:first-child:last-child {
margin: 0;
}
-11
View File
@@ -1,11 +0,0 @@
// SPDX-License-Identifier: MIT
// Copyright (c) 2022 The Pybricks Authors
@import '../variables.scss';
// HACK: work around https://github.com/palantir/blueprint/issues/5229
// TODO: this can be removed when https://github.com/palantir/blueprint/pull/5235 is merged and released
.#{$ns}-focus-disabled .pb-focus-manager-ignore :focus {
outline: $pt-outline-color auto 2px !important;
}
+1 -2
View File
@@ -6,7 +6,6 @@
// based on https://github.com/lukasbach/react-complex-tree/blob/239fb0c5f49f3c24e307142fb3d7e828440c3f55/packages/blueprintjs-renderers/src/renderers.tsx
// Copyright (c) 2021 Lukas Bach
import './tree-renderer.scss';
import {
Button,
Classes,
@@ -44,7 +43,7 @@ export const renderers: Omit<
> = {
renderTreeContainer: (props) => (
<div
className={cx(Classes.TREE, 'pb-focus-manager-ignore')}
className={cx(Classes.TREE, Classes.FOCUS_STYLE_MANAGER_IGNORE)}
{...props.containerProps}
>
{props.children}
+4 -16
View File
@@ -1,19 +1,7 @@
// SPDX-License-Identifier: MIT
// Copyright (c) 2020-2021 The Pybricks Authors
// Copyright (c) 2020-2022 The Pybricks Authors
@import '~@blueprintjs/core/lib/scss/variables.scss';
$toolbar-height: 72px;
$status-bar-height: 30px;
// override variables here
// See https://blueprintjs.com/docs/#core/variables
$pt-font-size: $pt-grid-size * 1.6;
$pt-font-size-large: $pt-grid-size * 1.8;
$pt-font-size-small: $pt-grid-size * 1.4;
$pb-toolbar-height: 72px;
$pb-status-bar-height: 30px;
$pb-pybricks-blue: #0088ce;
$pt-app-background-color: #e8e8e8;
$pt-intent-primary: $pb-pybricks-blue;
$pt-outline-color: rgba($pb-pybricks-blue, 0.6);
$pybricks-blue: #0088ce;
+3 -116
View File
@@ -2497,7 +2497,6 @@ __metadata:
"@types/zen-push": ^0.1.1
"@typescript-eslint/eslint-plugin": ^4.33.0
"@typescript-eslint/parser": ^4.33.0
"@vgrid/sass-inline-svg": ^1.0.1
babel-jest: ^27.4.2
babel-loader: ^8.2.3
babel-plugin-macros: ^3.0.1
@@ -3832,22 +3831,6 @@ __metadata:
languageName: node
linkType: hard
"@vgrid/sass-inline-svg@npm:^1.0.1":
version: 1.0.1
resolution: "@vgrid/sass-inline-svg@npm:1.0.1"
dependencies:
css-select: ^3.1.0
deasync: ^0.1.20
dom-serializer: ^1.1.0
htmlparser2: ^5.0.1
mini-svg-data-uri: ^1.2.3
svgo: ^1.3.2
peerDependencies:
sass: ^1.28.0
checksum: b1d1ea10e41a624db8d286743f761a4af93094d040962944846034f7bf7589aa526883365eddc50c899e51c2767b6cb26129c835ce7be818ec3f8505c82ed0a8
languageName: node
linkType: hard
"@webassemblyjs/ast@npm:1.11.1":
version: 1.11.1
resolution: "@webassemblyjs/ast@npm:1.11.1"
@@ -4747,15 +4730,6 @@ __metadata:
languageName: node
linkType: hard
"bindings@npm:^1.5.0":
version: 1.5.0
resolution: "bindings@npm:1.5.0"
dependencies:
file-uri-to-path: 1.0.0
checksum: 65b6b48095717c2e6105a021a7da4ea435aa8d3d3cd085cb9e85bcb6e5773cf318c4745c3f7c504412855940b585bdf9b918236612a1c7a7942491de176f1ae7
languageName: node
linkType: hard
"bluebird@npm:^3.5.5":
version: 3.7.2
resolution: "bluebird@npm:3.7.2"
@@ -5688,19 +5662,6 @@ __metadata:
languageName: node
linkType: hard
"css-select@npm:^3.1.0":
version: 3.1.2
resolution: "css-select@npm:3.1.2"
dependencies:
boolbase: ^1.0.0
css-what: ^4.0.0
domhandler: ^4.0.0
domutils: ^2.4.3
nth-check: ^2.0.0
checksum: a54b73ee896c1c29fa3f01701e0907fcdb4ede8885e4d07bf95c16f4dd62caabe6d67f62b11d285e467491e0d0f5968299bce75cfd1a25d8386e11feb01fc795
languageName: node
linkType: hard
"css-select@npm:^4.1.3":
version: 4.2.1
resolution: "css-select@npm:4.2.1"
@@ -5741,13 +5702,6 @@ __metadata:
languageName: node
linkType: hard
"css-what@npm:^4.0.0":
version: 4.0.0
resolution: "css-what@npm:4.0.0"
checksum: 69b557491213de51c444a462d5b94535c2b2c61ea61b7965bf2debe3f79f326dafafe2389d2f02f0bbf9477b6419d7ba3ea9052c6bf8401b57f7739f224e8662
languageName: node
linkType: hard
"css-what@npm:^5.1.0":
version: 5.1.0
resolution: "css-what@npm:5.1.0"
@@ -5907,16 +5861,6 @@ __metadata:
languageName: node
linkType: hard
"deasync@npm:^0.1.20":
version: 0.1.26
resolution: "deasync@npm:0.1.26"
dependencies:
bindings: ^1.5.0
node-addon-api: ^1.7.1
checksum: 4ac04ba620a2a1d2954e6c54b4fcc2b4d79866d8981fc5eab7cec1b031af4133fa799f4c9f875479d096f2384e5e7f789991e062f486630fea8fd75faaed10e2
languageName: node
linkType: hard
"debug@npm:2.6.9, debug@npm:^2.6.0, debug@npm:^2.6.9":
version: 2.6.9
resolution: "debug@npm:2.6.9"
@@ -6267,17 +6211,6 @@ __metadata:
languageName: node
linkType: hard
"dom-serializer@npm:^1.1.0":
version: 1.4.1
resolution: "dom-serializer@npm:1.4.1"
dependencies:
domelementtype: ^2.0.1
domhandler: ^4.2.0
entities: ^2.0.0
checksum: fbb0b01f87a8a2d18e6e5a388ad0f7ec4a5c05c06d219377da1abc7bb0f674d804f4a8a94e3f71ff15f6cb7dcfc75704a54b261db672b9b3ab03da6b758b0b22
languageName: node
linkType: hard
"dom4@npm:^2.1.5":
version: 2.1.6
resolution: "dom4@npm:2.1.6"
@@ -6317,15 +6250,6 @@ __metadata:
languageName: node
linkType: hard
"domhandler@npm:^3.3.0":
version: 3.3.0
resolution: "domhandler@npm:3.3.0"
dependencies:
domelementtype: ^2.0.1
checksum: 850e5e9fee7834ab4314811e18bc1f4294d7eafbf6a79ad03cbe50cf964108935c97257ac248944d72a9312b4a18dfa8323e857d23278964dc83b1f124467fa3
languageName: node
linkType: hard
"domhandler@npm:^4.0.0, domhandler@npm:^4.2.0, domhandler@npm:^4.3.0":
version: 4.3.0
resolution: "domhandler@npm:4.3.0"
@@ -6345,7 +6269,7 @@ __metadata:
languageName: node
linkType: hard
"domutils@npm:^2.4.2, domutils@npm:^2.4.3, domutils@npm:^2.5.2, domutils@npm:^2.8.0":
"domutils@npm:^2.5.2, domutils@npm:^2.8.0":
version: 2.8.0
resolution: "domutils@npm:2.8.0"
dependencies:
@@ -7286,13 +7210,6 @@ __metadata:
languageName: node
linkType: hard
"file-uri-to-path@npm:1.0.0":
version: 1.0.0
resolution: "file-uri-to-path@npm:1.0.0"
checksum: b648580bdd893a008c92c7ecc96c3ee57a5e7b6c4c18a9a09b44fb5d36d79146f8e442578bc0e173dc027adf3987e254ba1dfd6e3ec998b7c282873010502144
languageName: node
linkType: hard
"filelist@npm:^1.0.1":
version: 1.0.3
resolution: "filelist@npm:1.0.3"
@@ -7928,18 +7845,6 @@ __metadata:
languageName: node
linkType: hard
"htmlparser2@npm:^5.0.1":
version: 5.0.1
resolution: "htmlparser2@npm:5.0.1"
dependencies:
domelementtype: ^2.0.1
domhandler: ^3.3.0
domutils: ^2.4.2
entities: ^2.0.0
checksum: b67ac02e44629ec76b712fc06702451bea64e522cfcd7cc22fa85023b81b44cde5060662faa81d34f18c0fe5a43ced1cac73528d30a6df5ac5825a4d479c7ea5
languageName: node
linkType: hard
"htmlparser2@npm:^6.1.0":
version: 6.1.0
resolution: "htmlparser2@npm:6.1.0"
@@ -9807,15 +9712,6 @@ __metadata:
languageName: node
linkType: hard
"mini-svg-data-uri@npm:^1.2.3":
version: 1.4.4
resolution: "mini-svg-data-uri@npm:1.4.4"
bin:
mini-svg-data-uri: cli.js
checksum: 997f1fbd8d59a70f03761e18626d335197a3479cb9d1ff75678e4b64b864d32a0b8fc18115eabde035e5299b8b4a354a78e57dd6ac10f9d604162a6170898d09
languageName: node
linkType: hard
"minimalistic-assert@npm:^1.0.0":
version: 1.0.1
resolution: "minimalistic-assert@npm:1.0.1"
@@ -10085,15 +9981,6 @@ __metadata:
languageName: node
linkType: hard
"node-addon-api@npm:^1.7.1":
version: 1.7.2
resolution: "node-addon-api@npm:1.7.2"
dependencies:
node-gyp: latest
checksum: 938922b3d7cb34ee137c5ec39df6289a3965e8cab9061c6848863324c21a778a81ae3bc955554c56b6b86962f6ccab2043dd5fa3f33deab633636bd28039333f
languageName: node
linkType: hard
"node-fetch@npm:^2.6.5":
version: 2.6.7
resolution: "node-fetch@npm:2.6.7"
@@ -10237,7 +10124,7 @@ __metadata:
languageName: node
linkType: hard
"nth-check@npm:^2.0.0, nth-check@npm:^2.0.1":
"nth-check@npm:^2.0.1":
version: 2.0.1
resolution: "nth-check@npm:2.0.1"
dependencies:
@@ -13280,7 +13167,7 @@ __metadata:
languageName: node
linkType: hard
"svgo@npm:^1.2.2, svgo@npm:^1.3.2":
"svgo@npm:^1.2.2":
version: 1.3.2
resolution: "svgo@npm:1.3.2"
dependencies: