Compare commits

...

39 Commits

Author SHA1 Message Date
Chris Barber
bc7059403f Merge branch 'main' into vc-dev-hugo 2022-11-10 20:34:09 -06:00
Chris Barber
cbc72cfe77 Merge branch 'main' into vc-dev-hugo 2022-11-10 20:26:21 -06:00
Chris Barber
dcdc14cbbc Merge branch 'main' into vc-dev-hugo 2022-11-10 20:17:28 -06:00
Chris Barber
a83f837ff5 Merge branch 'main' into vc-dev-hugo 2022-11-10 11:45:12 -06:00
Chris Barber
dcfd0b0ff1 Reseting timeout back to 1 min 2022-11-10 11:44:44 -06:00
Chris Barber
17c3184150 Merge branch 'vc-dev-hugo' of github.com:vercel/vercel into vc-dev-hugo 2022-11-10 10:57:45 -06:00
Chris Barber
a52496a2e5 Bumped timeout 2022-11-10 10:57:27 -06:00
Chris Barber
d98112ddd3 Merge branch 'main' into vc-dev-hugo 2022-11-10 10:20:20 -06:00
Chris Barber
c8f920562f Cleanup 2022-11-10 04:01:25 -06:00
Chris Barber
292bb95930 Reverting to old Hugo and fixture 2022-11-10 03:47:58 -06:00
Chris Barber
ac49a09616 Wake up github 2022-11-10 03:22:18 -06:00
Chris Barber
285f8cde73 Swapped ananke theme for hyde 2022-11-10 03:12:43 -06:00
Chris Barber
72904733a7 Disabling Hugo test on Linux 2022-11-10 03:01:54 -06:00
Chris Barber
068331e4cc Switching linux to use hugo extended 2022-11-10 02:51:19 -06:00
Chris Barber
6f88aa8999 Merge branch 'main' into vc-dev-hugo 2022-11-10 02:38:32 -06:00
Chris Barber
dc0a3960e8 Fixed Hugo test fixture 2022-11-10 02:37:37 -06:00
Chris Barber
06763dcb1d Switch toMatch to toThrow 2022-11-10 02:24:15 -06:00
Chris Barber
910fbf6ca1 Fixed reject, updated hugo, enabled linux 2022-11-10 02:09:35 -06:00
Chris Barber
2774abad69 Think it's fixed 2022-11-10 01:34:35 -06:00
Chris Barber
14a07229d3 Skip the deploy the second time 2022-11-10 01:04:15 -06:00
Chris Barber
2ab22beeae Don't skip the deploy 2022-11-10 01:03:36 -06:00
Chris Barber
70beb39b83 Debugging 2022-11-09 23:52:00 -06:00
Chris Barber
73426aabef More logging 2022-11-09 23:14:51 -06:00
Chris Barber
0c37c3c05f Bumping timeout 2022-11-09 22:56:06 -06:00
Chris Barber
80c7ab2bd1 Cleaning up debug logging 2022-11-09 22:22:41 -06:00
Chris Barber
cdc320f2ec More hugo checks 2022-11-09 19:36:51 -06:00
Chris Barber
fc2ed00d8f More debug 2022-11-09 17:20:19 -06:00
Chris Barber
ec1fbdb4d0 Adding more debug logging 2022-11-09 16:41:34 -06:00
Chris Barber
f5a4c3df96 Trying to debug the abort error 2022-11-09 15:55:30 -06:00
Chris Barber
c24c5d0fa3 Fix AbortError check 2022-11-09 15:03:19 -06:00
Chris Barber
10d265b29b Re-enabled all tests 2022-11-09 13:06:44 -06:00
Chris Barber
4c06d6fe6c Fixed hugo test 2022-11-09 12:54:47 -06:00
Chris Barber
d5d30ce484 Added test for no hugo 2022-11-09 11:26:36 -06:00
Chris Barber
1bfd6d91d4 Merge branch 'main' into vc-dev-hugo 2022-11-09 10:32:03 -06:00
Chris Barber
660640708f Merge branch 'main' into vc-dev-hugo 2022-11-09 01:34:24 -06:00
Chris Barber
39ec0bc36d Merge branch 'main' into vc-dev-hugo 2022-11-09 00:12:48 -06:00
Chris Barber
8ec7d959d1 Merge branch 'main' into vc-dev-hugo 2022-11-08 16:33:25 -06:00
Chris Barber
1885f3457e Merge branch 'main' into vc-dev-hugo 2022-11-07 15:46:41 -06:00
Chris Barber
e3443f1240 [cli] Add node_modules/.bin to PATH instead of running npx/yarn run 2022-11-07 15:40:52 -06:00
22 changed files with 160 additions and 135 deletions

View File

@@ -172,7 +172,6 @@
"typescript": "4.7.4",
"universal-analytics": "0.4.20",
"utility-types": "2.1.0",
"which": "2.0.2",
"write-json-file": "2.2.0",
"xdg-app-paths": "5.1.0",
"yauzl-promise": "2.1.3"

View File

@@ -18,7 +18,6 @@ import directoryTemplate from 'serve-handler/src/directory';
import getPort from 'get-port';
import isPortReachable from 'is-port-reachable';
import deepEqual from 'fast-deep-equal';
import which from 'which';
import npa from 'npm-package-arg';
import type { ChildProcess } from 'child_process';
@@ -33,6 +32,7 @@ import {
Builder,
cloneEnv,
Env,
getNodeBinPath,
StartDevServerResult,
FileFsRef,
PackageJson,
@@ -2238,6 +2238,10 @@ export default class DevServer {
}
);
// add the node_modules/.bin directory to the PATH
const nodeBinPath = await getNodeBinPath({ cwd });
env.PATH = `${nodeBinPath}${path.delimiter}${env.PATH}`;
// This is necesary so that the dev command in the Project
// will work cross-platform (especially Windows).
let command = devCommand
@@ -2252,22 +2256,6 @@ export default class DevServer {
})}`
);
const isNpxAvailable = await which('npx')
.then(() => true)
.catch(() => false);
if (isNpxAvailable) {
command = `npx --no-install ${command}`;
} else {
const isYarnAvailable = await which('yarn')
.then(() => true)
.catch(() => false);
if (isYarnAvailable) {
command = `yarn run --silent ${command}`;
}
}
this.output.debug(`Spawning dev command: ${command}`);
const proxyPort = new RegExp(port.toString(), 'g');

View File

@@ -6,9 +6,9 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a
## [2.37] - 2018-12-26 (@budparr)
- Improve Readme with path to example site #146
- Improve Readme with path to example site #146
- Update asset dependencies a99f95ef1f4c1f9b0a278e534ce6ace1b7441fd8
- Improve social follow link accessibility #147
- Improve social follow link accessibility #147
## [2.35] - 2018-11-04 (@budparr)

View File

@@ -34,18 +34,15 @@ Also includes examples of Hugo Features or Functions:
- `where`
- Content Views
- Partials
- Template layouts (type "post" uses a special list template, single template, and a content view)
- Template layouts (type "post" uses a special list template, single template, and a content view)
- Tags
- `len`
- Conditionals
- `ge` (greater than or equal to)
- `.Site.Params.mainSections` to avoid hard-coding "blog," etc. [[release note](https://github.com/spf13/hugo/blob/66ec6305f6cb450ddf9c489854146bac02f7dca1/docs/content/meta/release-notes.md#enhancements)]
This theme uses the "Tachyons" CSS library. This will allow you to manipulate the design of the theme by changing class names in HTML without touching the original CSS files. For more information see the [Tachyons website](http://tachyons.io/).
## Installation
Inside the folder of your Hugo site run:
@@ -55,20 +52,16 @@ Inside the folder of your Hugo site run:
For more information read the official [setup guide](//gohugo.io/overview/installing/) of Hugo.
## Getting started
After installing the theme successfully it requires a just a few more steps to get your site running.
### The config file
Take a look inside the [`exampleSite`](https://github.com/budparr/gohugo-theme-ananke/tree/master/exampleSite) folder of this theme. You'll find a file called [`config.toml`](https://github.com/budparr/gohugo-theme-ananke/blob/master/exampleSite/config.toml). To use it, copy the [`config.toml`](https://github.com/budparr/gohugo-theme-ananke/blob/master/exampleSite/config.toml) in the root folder of your Hugo site. Feel free to change the strings in this theme.
You may need to delete the line: `themesDir = "../.."`
### Add comments
To enable comments, add following to your config file:
@@ -90,8 +83,6 @@ You don't need an image though. The default background color is black, but you c
example: `background_color_class = "bg-blue"` or `background_color_class = "bg-gray"`
### Activate the contact form
This theme includes a shortcode for a contact form that you can add to any page (there is an example on the contact page in the exampleSite folder). One option is to use [formspree.io](//formspree.io/) as proxy to send the actual email. Each month, visitors can send you up to one thousand emails without incurring extra charges. Visit the Formspree site to get the "action" link and add it to your shortcode like this:
@@ -119,10 +110,8 @@ You can find a list of available typefaces [here](https://github.com/tachyons-cs
And a list of background colors [here](https://github.com/tachyons-css/tachyons/blob/v4.7.0/src/_skins.css#L96).
_n.b. in future versions we will likely separate the typeface and other body classes._
### Custom CSS
You can override the built-in css by using your own. Just put your own css files in the `static` directory of your website (the one in the theme directory also works but is not recommended) and modify the `custom_css` parameter in your config file. The path referenced in the parameter should be relative to the `static` folder. These css files will be added through the `header` partial after the built-in css file.
@@ -138,7 +127,6 @@ For example, if your css files are `static/css/custom.css` and `static/css/custo
If you add a key of `show_reading_time` true to either the Config Params, a page or section's front matter, articles will show the reading time and word count.
### Nearly finished
In order to see your site in action, run Hugo's built-in local server.
@@ -159,9 +147,6 @@ HUGO_ENV=production hugo
If you find a bug or have an idea for a feature, feel free to use the [issue tracker](https://github.com/budparr/gohugo-theme-ananke/issues) to let me know.
TODO:
- fix hard-coded link to [section](https://github.com/budparr/gohugo-theme-ananke/blob/master/layouts/index.html#L32)

View File

@@ -3,4 +3,4 @@
"js": "js/app.3fc0f988d21662902933.js",
"css": "css/app.d98f2eb6bcd1eaedb7edf166bd16af26.css"
}
}
}

View File

@@ -1,6 +1,7 @@
---
title: "Ananke: a Hugo Theme"
title: 'Ananke: a Hugo Theme'
featured_image: '/images/gohugo-default-sample-hero-image.jpg'
description: "The last theme you'll ever need. Maybe."
---
Welcome to my blog with some of my work in progress. I've been working on this book idea. You can read some of the chapters below.

View File

@@ -1,8 +1,9 @@
---
title: "About"
description: "A few years ago, while visiting or, rather, rummaging about Notre-Dame, the author of this book found, in an obscure nook of one of the towers, the following word, engraved by hand upon the wall: —ANANKE."
title: 'About'
description: 'A few years ago, while visiting or, rather, rummaging about Notre-Dame, the author of this book found, in an obscure nook of one of the towers, the following word, engraved by hand upon the wall: —ANANKE.'
featured_image: ''
---
{{< figure src="/images/Victor_Hugo-Hunchback.jpg" title="Illustration from Victor Hugo et son temps (1881)" >}}
_The Hunchback of Notre-Dame_ (French: _Notre-Dame de Paris_) is a French Romantic/Gothic novel by Victor Hugo, published in 1831. The original French title refers to Notre Dame Cathedral, on which the story is centered. English translator Frederic Shoberl named the novel The Hunchback of Notre Dame in 1833 because at the time, Gothic novels were more popular than Romance novels in England. The story is set in Paris, France in the Late Middle Ages, during the reign of Louis XI.

View File

@@ -1,15 +1,13 @@
---
title: Contact
featured_image: "images/notebook.jpg"
featured_image: 'images/notebook.jpg'
omit_header_text: true
description: We'd love to hear from you
type: page
menu:
main: {}
---
This is an example of a custom shortcode that you can put right into your content. You will need to add a form action to the the shortcode to make it work. Check out [Formspree](https://formspree.io/) for a simple, free form service.
This is an example of a custom shortcode that you can put right into your content. You will need to add a form action to the the shortcode to make it work. Check out [Formspree](https://formspree.io/) for a simple, free form service.
{{< form-contact action="https://example.com" >}}

View File

@@ -1,5 +1,6 @@
---
title: "Articles"
title: 'Articles'
date: 2017-03-02T12:00:00-05:00
---
Articles are paginated with only three posts here for example. You can set the number of entries to show on this page with the "pagination" setting in the config file.

View File

@@ -1,9 +1,9 @@
---
date: 2017-04-09T10:58:08-04:00
description: "The Grand Hall"
featured_image: "/images/Pope-Edouard-de-Beaumont-1844.jpg"
tags: ["scene"]
title: "Chapter I: The Grand Hall"
description: 'The Grand Hall'
featured_image: '/images/Pope-Edouard-de-Beaumont-1844.jpg'
tags: ['scene']
title: 'Chapter I: The Grand Hall'
---
Three hundred and forty-eight years, six months, and nineteen days ago
@@ -66,7 +66,7 @@ which five or six streets, like so many mouths of rivers, discharged every
moment fresh floods of heads. The waves of this crowd, augmented
incessantly, dashed against the angles of the houses which projected here
and there, like so many promontories, into the irregular basin of the
place. In the centre of the lofty Gothic* façade of the palace, the grand
place. In the centre of the lofty Gothic\* façade of the palace, the grand
staircase, incessantly ascended and descended by a double current, which,
after parting on the intermediate landing-place, flowed in broad waves
along its lateral slopes,—the grand staircase, I say, trickled

View File

@@ -1,9 +1,9 @@
---
date: 2017-04-10T11:00:59-04:00
description: "Pierre Gringoire"
featured_image: ""
description: 'Pierre Gringoire'
featured_image: ''
tags: []
title: "Chapter II: Pierre Gringoire"
title: 'Chapter II: Pierre Gringoire'
---
Nevertheless, as be harangued them, the satisfaction and admiration

View File

@@ -1,9 +1,9 @@
---
date: 2017-04-11T11:13:32-04:00
description: "Monsieur the Cardinal"
featured_image: ""
description: 'Monsieur the Cardinal'
featured_image: ''
tags: []
title: "Chapter III: Monsieur the Cardinal"
title: 'Chapter III: Monsieur the Cardinal'
---
Poor Gringoire! the din of all the great double petards of the Saint-Jean,

View File

@@ -1,10 +1,11 @@
---
date: 2017-04-12T11:14:48-04:00
description: "Master Jacques Coppenole"
featured_image: ""
tags: ["scene"]
title: "Chapter IV: Master Jacques Coppenole"
description: 'Master Jacques Coppenole'
featured_image: ''
tags: ['scene']
title: 'Chapter IV: Master Jacques Coppenole'
---
While the pensioner of Ghent and his eminence were exchanging very low
bows and a few words in voices still lower, a man of lofty stature, with a
large face and broad shoulders, presented himself, in order to enter
@@ -51,7 +52,7 @@ Coppenole, hosier. Do you hear, usher? Nothing more, nothing less. Cross
of God! hosier; thats fine enough. Monsieur the Archduke has more than
once sought his _gant_\* in my hose.”
_* Got the first idea of a timing._
_\* Got the first idea of a timing._
Laughter and applause burst forth. A jest is always understood in Paris,
and, consequently, always applauded.

View File

@@ -1,9 +1,9 @@
---
date: 2017-04-13T11:15:58-04:00
description: "Quasimodo"
featured_image: ""
description: 'Quasimodo'
featured_image: ''
tags: []
title: "Chapter V: Quasimodo"
title: 'Chapter V: Quasimodo'
---
In the twinkling of an eye, all was ready to execute Coppenoles idea. Bourgeois, scholars and law clerks all set to work. The little chapel situated opposite the marble table was selected for the scene of the grinning match. A pane broken in the pretty rose window above the door, left free a circle of stone through which it was agreed that the competitors should thrust their heads. In order to reach it, it was only necessary to mount upon a couple of hogsheads, which had been produced from I know not where, and perched one upon the other, after a fashion. It was settled that each candidate, man or woman (for it was possible to choose a female pope), should, for the sake of leaving the impression of his grimace fresh and complete, cover his face and remain concealed in the chapel until the moment of his appearance. In less than an instant, the chapel was crowded with competitors, upon whom the door was then closed.

View File

@@ -1,10 +1,11 @@
---
date: 2017-04-14T11:25:05-04:00
description: "Esmeralda"
featured_image: "/images/esmeralda.jpg"
description: 'Esmeralda'
featured_image: '/images/esmeralda.jpg'
tags: []
title: "Chapter VI: Esmeralda"
title: 'Chapter VI: Esmeralda'
---
We are delighted to be able to inform the reader, that during the whole of
this scene, Gringoire and his piece had stood firm. His actors, spurred on
by him, had not ceased to spout his comedy, and he had not ceased to

View File

@@ -1,8 +1,8 @@
module.exports = {
plugins: {
'postcss-import': {},
'postcss-cssnext': {
browsers: ['last 2 versions', '> 5%'],
}
}
'postcss-import': {},
'postcss-cssnext': {
browsers: ['last 2 versions', '> 5%'],
},
},
};

View File

@@ -1,6 +1,5 @@
import styles from './../css/main.css';
// NOTE: TO use Jquery, just call the modules you want
// var $ = require('jquery/src/core');
// require('jquery/src/core/init');

View File

@@ -1,6 +1,6 @@
## Welcome to the SRC folder for the Gohugo Ananke Theme.
The contents of this folder are used to generate CSS and javascript. You may never have to touch anything here, unless you want to more deeply customize your styles.
The contents of this folder are used to generate CSS and javascript. You may never have to touch anything here, unless you want to more deeply customize your styles.
## Tools
@@ -13,8 +13,8 @@ We use [Yarn](https://yarnpkg.com) for package managment (instead of NPM) becaus
We use Webpack to manage our asset pipeline. Arguably, Webpack is overkill for this use-case, but we're using it here because once it's set up (which we've done for you), it's really easy to use. If you want to use an external script, just add it via Yarn, and reference it in main.js. You'll find instructions in the js/main.js file.
### PostCSS
PostCSS is just CSS. You'll find `postcss.config.js` in the css folder. There you'll find that we're using [`postcss-import`](https://github.com/postcss/postcss-import) which allows us import css files directly from the node_modules folder, [`postcss-cssnext`](http://cssnext.io/features/) which gives us the power to use upcoming CSS features today. If you miss Sass you can find PostCss modules for those capabilities, too.
PostCSS is just CSS. You'll find `postcss.config.js` in the css folder. There you'll find that we're using [`postcss-import`](https://github.com/postcss/postcss-import) which allows us import css files directly from the node_modules folder, [`postcss-cssnext`](http://cssnext.io/features/) which gives us the power to use upcoming CSS features today. If you miss Sass you can find PostCss modules for those capabilities, too.
### Tachyons
@@ -34,6 +34,7 @@ $ yarn install
$ npm start
```
This will process both the postcss and scripts.
For production, instead of `npm start`, run `npm run build:production,` which will output minified versions of your files.

View File

@@ -4,54 +4,54 @@ var webpack = require('webpack');
var AssetsPlugin = require('assets-webpack-plugin');
module.exports = {
entry: {
app: './js/main.js'
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: ['env']
}
}
},
{
test: /\.css$/,
use: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: 'css-loader?importLoaders=1!postcss-loader'
})
}
]
},
entry: {
app: './js/main.js',
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: ['env'],
},
},
},
{
test: /\.css$/,
use: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: 'css-loader?importLoaders=1!postcss-loader',
}),
},
],
},
output: {
path: path.join(__dirname, './../static/dist'),
filename: 'js/[name].[chunkhash].js'
},
output: {
path: path.join(__dirname, './../static/dist'),
filename: 'js/[name].[chunkhash].js',
},
resolve: {
modules: [path.resolve(__dirname, 'src'), 'node_modules']
},
resolve: {
modules: [path.resolve(__dirname, 'src'), 'node_modules'],
},
plugins: [
new AssetsPlugin({
filename: 'webpack_assets.json',
path: path.join(__dirname, '../data'),
prettyPrint: true
}),
new ExtractTextPlugin({
filename: getPath => {
return getPath('css/[name].[contenthash].css');
},
allChunks: true
})
],
watchOptions: {
watch: true
}
plugins: [
new AssetsPlugin({
filename: 'webpack_assets.json',
path: path.join(__dirname, '../data'),
prettyPrint: true,
}),
new ExtractTextPlugin({
filename: getPath => {
return getPath('css/[name].[contenthash].css');
},
allChunks: true,
}),
],
watchOptions: {
watch: true,
},
};

View File

@@ -104,13 +104,38 @@ test(
test('[vercel dev] 08-hugo', async () => {
if (process.platform === 'darwin') {
// Update PATH to find the Hugo executable installed via GH Actions
// 1. run the test without Hugo in the PATH
let tester = await testFixtureStdio(
'08-hugo',
async () => {
throw new Error('Expected dev server to fail to be ready');
},
{
readyTimeout: 2000,
// Important: for the first test, we MUST deploy this app so that the
// framework (e.g. Hugo) will be detected by the server and associated
// with the project since `vc dev` doesn't do framework detection
skipDeploy: false,
}
);
await expect(tester()).rejects.toThrow(
new Error('Dev server timed out while waiting to be ready')
);
// 2. Update PATH to find the Hugo executable installed via GH Actions
process.env.PATH = `${resolve(fixture('08-hugo'))}${delimiter}${
process.env.PATH
}`;
const tester = testFixtureStdio('08-hugo', async (testPath: any) => {
await testPath(200, '/', /Hugo/m);
});
// 3. Rerun the test now that Hugo is in the PATH
tester = testFixtureStdio(
'08-hugo',
async (testPath: any) => {
await testPath(200, '/', /Hugo/m);
},
{ skipDeploy: true }
);
await tester();
} else {
console.log(`Skipping 08-hugo on platform ${process.platform}`);

View File

@@ -61,8 +61,13 @@ function fetchWithRetry(url, opts = {}) {
function createResolver() {
let resolver;
const p = new Promise(res => (resolver = res));
let rejector;
const p = new Promise((resolve, reject) => {
resolver = resolve;
rejector = reject;
});
p.resolve = resolver;
p.reject = rejector;
return p;
}
@@ -274,7 +279,13 @@ async function testFixture(directory, opts = {}, args = []) {
function testFixtureStdio(
directory,
fn,
{ expectedCode = 0, skipDeploy, isExample, projectSettings } = {}
{
expectedCode = 0,
skipDeploy,
isExample,
projectSettings,
readyTimeout = 0,
} = {}
) {
return async () => {
const nodeMajor = Number(process.versions.node.split('.')[0]);
@@ -385,6 +396,18 @@ function testFixtureStdio(
const readyResolver = createResolver();
const exitResolver = createResolver();
// By default, tests will wait 6 minutes for the dev server to be ready and
// perform the tests, however a `readyTimeout` can be used to reduce the
// wait time if the dev server is expected to fail to start or hang
let readyTimer = null;
if (readyTimeout > 0) {
readyTimer = setTimeout(() => {
readyResolver.reject(
new Error('Dev server timed out while waiting to be ready')
);
}, readyTimeout);
}
try {
let printedOutput = false;
@@ -424,6 +447,7 @@ function testFixtureStdio(
stderr += data;
if (stripAnsi(data).includes('Ready! Available at')) {
clearTimeout(readyTimer);
readyResolver.resolve();
}
@@ -507,5 +531,6 @@ module.exports = {
shouldSkip,
fixture,
fetch,
fetchWithRetry,
validateResponseHeaders,
};

View File

@@ -13677,13 +13677,6 @@ which-module@^2.0.0:
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
which@2.0.2, which@^2.0.1:
version "2.0.2"
resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
dependencies:
isexe "^2.0.0"
which@^1.2.9, which@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
@@ -13691,6 +13684,13 @@ which@^1.2.9, which@^1.3.1:
dependencies:
isexe "^2.0.0"
which@^2.0.1:
version "2.0.2"
resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
dependencies:
isexe "^2.0.0"
wide-align@^1.1.0:
version "1.1.3"
resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"