Add initial next swc package with first transform (#27355)
* Set up next-swc package with no custom transforms * Add hook_optimizer transform * Fix lint * Build next-swc on CI * Add toolchain in rust action * Build binaries in manual workflow * Commit from GitHub Actions (Build next-swc native binaries) * Update dependencies * Update swc and use stable rust * Build next-swc binaries * Test compiled code * Dedupe @node-rs/helper * Add workflow to check next-swc binaries * Fix check native * PR feedback * PR feedback * Pr feedback * Build next-swc binaries * Combine native workflows * Add docs for contributors on less common platforms * PR feedback * Compare JsWord instead of converting to string * Fix workflow formatting * Add docs for building binaries for CI * Build next-swc binaries * Fix workflow if syntax * Add license info to copied code Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
This commit is contained in:
parent
317c1c4922
commit
4172a4c0a6
20 changed files with 3269 additions and 16 deletions
139
.github/workflows/build_native.yml
vendored
Normal file
139
.github/workflows/build_native.yml
vendored
Normal file
|
@ -0,0 +1,139 @@
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
pull_request:
|
||||||
|
types: [opened, synchronize]
|
||||||
|
paths:
|
||||||
|
- 'packages/next/build/swc/**'
|
||||||
|
|
||||||
|
name: Build next-swc native binaries
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-18.04, macos-latest, windows-latest]
|
||||||
|
|
||||||
|
name: stable - ${{ matrix.os }} - node@14
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Setup node
|
||||||
|
uses: actions/setup-node@v2
|
||||||
|
with:
|
||||||
|
node-version: 14
|
||||||
|
check-latest: true
|
||||||
|
|
||||||
|
- name: Install
|
||||||
|
uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
toolchain: stable
|
||||||
|
profile: minimal
|
||||||
|
|
||||||
|
- name: Cache cargo registry
|
||||||
|
uses: actions/cache@v1
|
||||||
|
with:
|
||||||
|
path: ~/.cargo/registry
|
||||||
|
key: stable-${{ matrix.os }}-node@14-cargo-registry-trimmed-${{ hashFiles('**/Cargo.lock') }}
|
||||||
|
|
||||||
|
- name: Cache cargo index
|
||||||
|
uses: actions/cache@v1
|
||||||
|
with:
|
||||||
|
path: ~/.cargo/git
|
||||||
|
key: stable-${{ matrix.os }}-node@14-cargo-index-trimmed-${{ hashFiles('**/Cargo.lock') }}
|
||||||
|
|
||||||
|
- name: Cache NPM dependencies
|
||||||
|
uses: actions/cache@v1
|
||||||
|
with:
|
||||||
|
path: node_modules
|
||||||
|
key: npm-cache-${{ matrix.os }}-node@14-${{ hashFiles('yarn.lock') }}
|
||||||
|
|
||||||
|
- name: 'Install dependencies'
|
||||||
|
run: yarn install --frozen-lockfile --registry https://registry.npmjs.org --network-timeout 300000
|
||||||
|
|
||||||
|
- name: 'Build'
|
||||||
|
run: yarn --cwd packages/next build-native
|
||||||
|
env:
|
||||||
|
MACOSX_DEPLOYMENT_TARGET: '10.13'
|
||||||
|
|
||||||
|
- name: Upload artifact
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: next-swc-binaries
|
||||||
|
path: packages/next/native
|
||||||
|
|
||||||
|
- name: Clear the cargo caches
|
||||||
|
run: |
|
||||||
|
cargo install cargo-cache --no-default-features --features ci-autoclean
|
||||||
|
cargo-cache
|
||||||
|
|
||||||
|
build-apple-silicon:
|
||||||
|
name: stable - aarch64-apple-darwin - node@14
|
||||||
|
runs-on: macos-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Setup node
|
||||||
|
uses: actions/setup-node@v2
|
||||||
|
with:
|
||||||
|
node-version: 14
|
||||||
|
|
||||||
|
- name: Install Rust
|
||||||
|
uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
profile: minimal
|
||||||
|
override: true
|
||||||
|
toolchain: stable
|
||||||
|
target: aarch64-apple-darwin
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: yarn install --frozen-lockfile --registry https://registry.npmjs.org --network-timeout 300000
|
||||||
|
|
||||||
|
- name: Cross build aarch64
|
||||||
|
run: yarn --cwd packages/next build-native --target aarch64-apple-darwin
|
||||||
|
|
||||||
|
- name: Upload artifact
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: next-swc-binaries
|
||||||
|
path: packages/next/native
|
||||||
|
|
||||||
|
- name: Clear the cargo caches
|
||||||
|
run: |
|
||||||
|
cargo install cargo-cache --no-default-features --features ci-autoclean
|
||||||
|
cargo-cache
|
||||||
|
|
||||||
|
commit:
|
||||||
|
needs: [build, build-apple-silicon]
|
||||||
|
runs-on: ubuntu-18.04
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
if: ${{ env.GITHUB_EVENT_NAME == 'workflow_dispatch' }}
|
||||||
|
- uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
name: next-swc-binaries
|
||||||
|
path: packages/next/native
|
||||||
|
if: ${{ env.GITHUB_EVENT_NAME == 'workflow_dispatch' }}
|
||||||
|
- uses: EndBug/add-and-commit@v7
|
||||||
|
with:
|
||||||
|
add: 'packages/next/native --force'
|
||||||
|
message: 'Build next-swc binaries'
|
||||||
|
if: ${{ env.GITHUB_EVENT_NAME == 'workflow_dispatch' }}
|
||||||
|
|
||||||
|
check:
|
||||||
|
needs: [build, build-apple-silicon]
|
||||||
|
runs-on: ubuntu-18.04
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
if: ${{ env.GITHUB_EVENT_NAME == 'pull_request' }}
|
||||||
|
- uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
name: next-swc-binaries
|
||||||
|
path: packages/next/native
|
||||||
|
if: ${{ env.GITHUB_EVENT_NAME == 'pull_request' }}
|
||||||
|
- run: git diff --exit-code
|
||||||
|
if: ${{ env.GITHUB_EVENT_NAME == 'pull_request' }}
|
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,6 +1,7 @@
|
||||||
# build output
|
# build output
|
||||||
dist
|
dist
|
||||||
.next
|
.next
|
||||||
|
target
|
||||||
|
|
||||||
# dependencies
|
# dependencies
|
||||||
node_modules
|
node_modules
|
||||||
|
|
|
@ -36,6 +36,8 @@ Make sure you have `chromedriver` installed for your Chrome version. You can ins
|
||||||
- `chocolatey install chromedriver` on Windows
|
- `chocolatey install chromedriver` on Windows
|
||||||
- Or manually download the version that matches your installed chrome version (if there's no match, download a version under it, but not above) from the [chromedriver repo](https://chromedriver.storage.googleapis.com/index.html) and add the binary to `<next-repo>/node_modules/.bin`
|
- Or manually download the version that matches your installed chrome version (if there's no match, download a version under it, but not above) from the [chromedriver repo](https://chromedriver.storage.googleapis.com/index.html) and add the binary to `<next-repo>/node_modules/.bin`
|
||||||
|
|
||||||
|
You may also have to [install Rust](https://www.rust-lang.org/tools/install) and build our native packages to see all tests pass locally. We check in binaries for the most common targets and those required for CI so that most people don't have to, but if you do not see a binary for your target in `packages/next/native`, you can build it by running `yarn --cwd packages/next build-native`. If you are working on the Rust code and you need to build the binaries for ci, you can manually trigger [the workflow](https://github.com/vercel/next.js/actions/workflows/build_native.yml) to build and commit with the "Run workflow" button.
|
||||||
|
|
||||||
Running all tests:
|
Running all tests:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
|
|
1955
packages/next/build/swc/Cargo.lock
generated
Normal file
1955
packages/next/build/swc/Cargo.lock
generated
Normal file
File diff suppressed because it is too large
Load diff
30
packages/next/build/swc/Cargo.toml
Normal file
30
packages/next/build/swc/Cargo.toml
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
[package]
|
||||||
|
edition = "2018"
|
||||||
|
name = "next-swc"
|
||||||
|
version = "0.0.0"
|
||||||
|
|
||||||
|
[lib]
|
||||||
|
crate-type = ["cdylib"]
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
anyhow = "1.0"
|
||||||
|
backtrace = "0.3"
|
||||||
|
napi = { version = "1", features = ["serde-json"] }
|
||||||
|
napi-derive = "1"
|
||||||
|
path-clean = "0.1"
|
||||||
|
regex = "1.5"
|
||||||
|
serde = "1"
|
||||||
|
serde_json = "1"
|
||||||
|
swc = "0.30"
|
||||||
|
swc_atoms = "0.2.6"
|
||||||
|
swc_common = { version = "0.11.1", features = ["tty-emitter", "sourcemap"] }
|
||||||
|
swc_node_base = "0.2.0"
|
||||||
|
swc_ecmascript = { version = "0.46.0", features = ["codegen", "optimization", "parser", "react", "transforms", "typescript", "utils", "visit"] }
|
||||||
|
swc_ecma_preset_env = "0.29.0"
|
||||||
|
|
||||||
|
|
||||||
|
[build-dependencies]
|
||||||
|
napi-build = "1"
|
||||||
|
|
||||||
|
[profile.release]
|
||||||
|
lto = true
|
5
packages/next/build/swc/build.rs
Normal file
5
packages/next/build/swc/build.rs
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
extern crate napi_build;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
napi_build::setup();
|
||||||
|
}
|
71
packages/next/build/swc/index.js
Normal file
71
packages/next/build/swc/index.js
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
const { loadBinding } = require('@node-rs/helper')
|
||||||
|
const path = require('path')
|
||||||
|
|
||||||
|
/**
|
||||||
|
* __dirname means load native addon from current dir
|
||||||
|
* 'next-swc' is the name of native addon
|
||||||
|
* the second arguments was decided by `napi.name` field in `package.json`
|
||||||
|
* the third arguments was decided by `name` field in `package.json`
|
||||||
|
* `loadBinding` helper will load `next-swc.[PLATFORM].node` from `__dirname` first
|
||||||
|
* If failed to load addon, it will fallback to load from `next-swc-[PLATFORM]`
|
||||||
|
*/
|
||||||
|
const bindings = loadBinding(
|
||||||
|
path.join(__dirname, '../../../native'),
|
||||||
|
'next-swc',
|
||||||
|
'next-swc'
|
||||||
|
)
|
||||||
|
|
||||||
|
async function transform(src, options) {
|
||||||
|
const isModule = typeof src !== 'string'
|
||||||
|
options = options || {}
|
||||||
|
|
||||||
|
if (options?.jsc?.parser) {
|
||||||
|
options.jsc.parser.syntax = options.jsc.parser.syntax ?? 'ecmascript'
|
||||||
|
}
|
||||||
|
|
||||||
|
const { plugin, ...newOptions } = options
|
||||||
|
|
||||||
|
if (plugin) {
|
||||||
|
const m =
|
||||||
|
typeof src === 'string'
|
||||||
|
? await this.parse(src, options?.jsc?.parser)
|
||||||
|
: src
|
||||||
|
return this.transform(plugin(m), newOptions)
|
||||||
|
}
|
||||||
|
|
||||||
|
return bindings.transform(
|
||||||
|
isModule ? JSON.stringify(src) : src,
|
||||||
|
isModule,
|
||||||
|
toBuffer(newOptions)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function transformSync(src, options) {
|
||||||
|
const isModule = typeof src !== 'string'
|
||||||
|
options = options || {}
|
||||||
|
|
||||||
|
if (options?.jsc?.parser) {
|
||||||
|
options.jsc.parser.syntax = options.jsc.parser.syntax ?? 'ecmascript'
|
||||||
|
}
|
||||||
|
|
||||||
|
const { plugin, ...newOptions } = options
|
||||||
|
|
||||||
|
if (plugin) {
|
||||||
|
const m =
|
||||||
|
typeof src === 'string' ? this.parseSync(src, options?.jsc?.parser) : src
|
||||||
|
return this.transformSync(plugin(m), newOptions)
|
||||||
|
}
|
||||||
|
|
||||||
|
return bindings.transformSync(
|
||||||
|
isModule ? JSON.stringify(src) : src,
|
||||||
|
isModule,
|
||||||
|
toBuffer(newOptions)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
function toBuffer(t) {
|
||||||
|
return Buffer.from(JSON.stringify(t))
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports.transform = transform
|
||||||
|
module.exports.transformSync = transformSync
|
119
packages/next/build/swc/src/hook_optimizer.rs
Normal file
119
packages/next/build/swc/src/hook_optimizer.rs
Normal file
|
@ -0,0 +1,119 @@
|
||||||
|
use swc_atoms::JsWord;
|
||||||
|
use swc_common::DUMMY_SP;
|
||||||
|
use swc_ecmascript::ast::{
|
||||||
|
ArrayPat, Decl, Expr, ExprOrSuper, Ident, ImportDecl, ImportSpecifier, KeyValuePatProp, Number,
|
||||||
|
ObjectPat, ObjectPatProp, Pat, PropName, VarDecl, VarDeclarator,
|
||||||
|
};
|
||||||
|
use swc_ecmascript::visit::{Fold, FoldWith};
|
||||||
|
|
||||||
|
pub fn hook_optimizer() -> impl Fold {
|
||||||
|
HookOptimizer::default()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Default)]
|
||||||
|
struct HookOptimizer {
|
||||||
|
hooks: Vec<JsWord>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Fold for HookOptimizer {
|
||||||
|
// Find hooks imported from react/preact
|
||||||
|
fn fold_import_decl(&mut self, decl: ImportDecl) -> ImportDecl {
|
||||||
|
let ImportDecl {
|
||||||
|
ref src,
|
||||||
|
ref specifiers,
|
||||||
|
..
|
||||||
|
} = decl;
|
||||||
|
if &src.value == "react" || &src.value == "preact/hooks" {
|
||||||
|
for specifier in specifiers {
|
||||||
|
if let ImportSpecifier::Named(named_specifier) = specifier {
|
||||||
|
if named_specifier.local.sym.starts_with("use") {
|
||||||
|
self.hooks.push(named_specifier.local.sym.clone())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
decl
|
||||||
|
}
|
||||||
|
// Transform array desctructing to object destructuring for relevant hooks
|
||||||
|
fn fold_decl(&mut self, node: Decl) -> Decl {
|
||||||
|
let node = node.fold_children_with(self);
|
||||||
|
match node {
|
||||||
|
Decl::Var(VarDecl {
|
||||||
|
decls,
|
||||||
|
span,
|
||||||
|
kind,
|
||||||
|
declare,
|
||||||
|
}) => {
|
||||||
|
let mut new_decls = Vec::with_capacity(decls.len());
|
||||||
|
for decl in decls {
|
||||||
|
new_decls.push(self.get_decl(decl));
|
||||||
|
}
|
||||||
|
|
||||||
|
Decl::Var(VarDecl {
|
||||||
|
decls: new_decls,
|
||||||
|
span,
|
||||||
|
kind,
|
||||||
|
declare,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
_ => node,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl HookOptimizer {
|
||||||
|
fn get_decl(&mut self, decl: VarDeclarator) -> VarDeclarator {
|
||||||
|
let VarDeclarator {
|
||||||
|
name,
|
||||||
|
init,
|
||||||
|
span,
|
||||||
|
definite,
|
||||||
|
} = &decl;
|
||||||
|
let init_clone = init.clone();
|
||||||
|
if let Pat::Array(a) = name {
|
||||||
|
if let Expr::Call(c) = &*init.as_deref().unwrap() {
|
||||||
|
if let ExprOrSuper::Expr(i) = &c.callee {
|
||||||
|
if let Expr::Ident(Ident { sym, .. }) = &**i {
|
||||||
|
if self.hooks.contains(&sym) {
|
||||||
|
let name = get_object_pattern(&a);
|
||||||
|
return VarDeclarator {
|
||||||
|
name,
|
||||||
|
init: init_clone,
|
||||||
|
span: *span,
|
||||||
|
definite: *definite,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return decl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_object_pattern(array_pattern: &ArrayPat) -> Pat {
|
||||||
|
let props: Vec<ObjectPatProp> = array_pattern
|
||||||
|
.elems
|
||||||
|
.iter()
|
||||||
|
.enumerate()
|
||||||
|
.filter_map(|(i, elem)| match elem {
|
||||||
|
Some(elem) => Some(ObjectPatProp::KeyValue(KeyValuePatProp {
|
||||||
|
key: PropName::Num(Number {
|
||||||
|
value: i as f64,
|
||||||
|
span: DUMMY_SP,
|
||||||
|
}),
|
||||||
|
value: Box::new(elem.clone()),
|
||||||
|
})),
|
||||||
|
None => None,
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
Pat::Object(ObjectPat {
|
||||||
|
props,
|
||||||
|
span: DUMMY_SP,
|
||||||
|
optional: false,
|
||||||
|
type_ann: None,
|
||||||
|
})
|
||||||
|
}
|
93
packages/next/build/swc/src/lib.rs
Normal file
93
packages/next/build/swc/src/lib.rs
Normal file
|
@ -0,0 +1,93 @@
|
||||||
|
/*
|
||||||
|
Copyright (c) 2017 The swc Project Developers
|
||||||
|
|
||||||
|
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 the
|
||||||
|
Software without restriction, including without
|
||||||
|
limitation the rights to use, copy, modify, merge,
|
||||||
|
publish, distribute, sublicense, and/or sell copies of
|
||||||
|
the Software, and to permit persons to whom the Software
|
||||||
|
is furnished to do so, subject to the following
|
||||||
|
conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice
|
||||||
|
shall be included in all copies or substantial portions
|
||||||
|
of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
|
||||||
|
ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
|
||||||
|
TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
|
||||||
|
SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||||
|
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||||
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
|
||||||
|
IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#![recursion_limit = "2048"]
|
||||||
|
//#![deny(clippy::all)]
|
||||||
|
|
||||||
|
#[macro_use]
|
||||||
|
extern crate napi_derive;
|
||||||
|
/// Explicit extern crate to use allocator.
|
||||||
|
extern crate swc_node_base;
|
||||||
|
|
||||||
|
use backtrace::Backtrace;
|
||||||
|
use napi::{CallContext, Env, JsObject, JsUndefined};
|
||||||
|
use std::{env, panic::set_hook, sync::Arc};
|
||||||
|
use swc::{Compiler, TransformOutput};
|
||||||
|
use swc_common::{
|
||||||
|
self,
|
||||||
|
errors::{ColorConfig, Handler},
|
||||||
|
sync::Lazy,
|
||||||
|
FilePathMapping, SourceMap,
|
||||||
|
};
|
||||||
|
|
||||||
|
mod hook_optimizer;
|
||||||
|
mod transform;
|
||||||
|
mod util;
|
||||||
|
|
||||||
|
static COMPILER: Lazy<Arc<Compiler>> = Lazy::new(|| {
|
||||||
|
let cm = Arc::new(SourceMap::new(FilePathMapping::empty()));
|
||||||
|
let handler = Arc::new(Handler::with_tty_emitter(
|
||||||
|
ColorConfig::Always,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
Some(cm.clone()),
|
||||||
|
));
|
||||||
|
|
||||||
|
Arc::new(Compiler::new(cm.clone(), handler))
|
||||||
|
});
|
||||||
|
|
||||||
|
#[module_exports]
|
||||||
|
fn init(mut exports: JsObject) -> napi::Result<()> {
|
||||||
|
if cfg!(debug_assertions) || env::var("SWC_DEBUG").unwrap_or_default() == "1" {
|
||||||
|
set_hook(Box::new(|panic_info| {
|
||||||
|
let backtrace = Backtrace::new();
|
||||||
|
println!("Panic: {:?}\nBacktrace: {:?}", panic_info, backtrace);
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.create_named_method("transform", transform::transform)?;
|
||||||
|
exports.create_named_method("transformSync", transform::transform_sync)?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_compiler(_ctx: &CallContext) -> Arc<Compiler> {
|
||||||
|
COMPILER.clone()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[js_function]
|
||||||
|
fn construct_compiler(ctx: CallContext) -> napi::Result<JsUndefined> {
|
||||||
|
// TODO: Assign swc::Compiler
|
||||||
|
ctx.env.get_undefined()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn complete_output(env: &Env, output: TransformOutput) -> napi::Result<JsObject> {
|
||||||
|
env.to_js_value(&output)?.coerce_to_object()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub type ArcCompiler = Arc<Compiler>;
|
222
packages/next/build/swc/src/transform.rs
Normal file
222
packages/next/build/swc/src/transform.rs
Normal file
|
@ -0,0 +1,222 @@
|
||||||
|
/*
|
||||||
|
Copyright (c) 2017 The swc Project Developers
|
||||||
|
|
||||||
|
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 the
|
||||||
|
Software without restriction, including without
|
||||||
|
limitation the rights to use, copy, modify, merge,
|
||||||
|
publish, distribute, sublicense, and/or sell copies of
|
||||||
|
the Software, and to permit persons to whom the Software
|
||||||
|
is furnished to do so, subject to the following
|
||||||
|
conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice
|
||||||
|
shall be included in all copies or substantial portions
|
||||||
|
of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
|
||||||
|
ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
|
||||||
|
TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
|
||||||
|
SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||||
|
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||||
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
|
||||||
|
IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
use crate::{
|
||||||
|
complete_output, get_compiler,
|
||||||
|
hook_optimizer::hook_optimizer,
|
||||||
|
util::{CtxtExt, MapErr},
|
||||||
|
};
|
||||||
|
use anyhow::{bail, Error};
|
||||||
|
use napi::{CallContext, Env, JsBoolean, JsObject, JsString, Task};
|
||||||
|
use std::sync::Arc;
|
||||||
|
use swc::config::{BuiltConfig, Options};
|
||||||
|
use swc::{Compiler, TransformOutput};
|
||||||
|
use swc_common::{chain, comments::Comment, BytePos, FileName, SourceFile};
|
||||||
|
use swc_ecmascript::ast::Program;
|
||||||
|
use swc_ecmascript::transforms::helpers::{self, Helpers};
|
||||||
|
use swc_ecmascript::utils::HANDLER;
|
||||||
|
use swc_ecmascript::visit::FoldWith;
|
||||||
|
|
||||||
|
/// Input to transform
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub enum Input {
|
||||||
|
/// json string
|
||||||
|
Program(String),
|
||||||
|
/// Raw source code.
|
||||||
|
Source(Arc<SourceFile>),
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct TransformTask {
|
||||||
|
pub c: Arc<Compiler>,
|
||||||
|
pub input: Input,
|
||||||
|
pub options: Options,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Task for TransformTask {
|
||||||
|
type Output = TransformOutput;
|
||||||
|
type JsValue = JsObject;
|
||||||
|
|
||||||
|
fn compute(&mut self) -> napi::Result<Self::Output> {
|
||||||
|
self.c
|
||||||
|
.run(|| match self.input {
|
||||||
|
Input::Program(ref s) => {
|
||||||
|
let program: Program =
|
||||||
|
serde_json::from_str(&s).expect("failed to deserialize Program");
|
||||||
|
// TODO: Source map
|
||||||
|
self.c.process_js(program, &self.options)
|
||||||
|
}
|
||||||
|
|
||||||
|
Input::Source(ref s) => process_js_custom(&self.c, s.clone(), &self.options),
|
||||||
|
})
|
||||||
|
.convert_err()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn resolve(self, env: Env, result: Self::Output) -> napi::Result<Self::JsValue> {
|
||||||
|
complete_output(&env, result)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// returns `compiler, (src / path), options, plugin, callback`
|
||||||
|
pub fn schedule_transform<F>(cx: CallContext, op: F) -> napi::Result<JsObject>
|
||||||
|
where
|
||||||
|
F: FnOnce(&Arc<Compiler>, String, bool, Options) -> TransformTask,
|
||||||
|
{
|
||||||
|
let c = get_compiler(&cx);
|
||||||
|
|
||||||
|
let s = cx.get::<JsString>(0)?.into_utf8()?.as_str()?.to_owned();
|
||||||
|
let is_module = cx.get::<JsBoolean>(1)?;
|
||||||
|
let options: Options = cx.get_deserialized(2)?;
|
||||||
|
|
||||||
|
let task = op(&c, s, is_module.get_value()?, options);
|
||||||
|
|
||||||
|
cx.env.spawn(task).map(|t| t.promise_object())
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn exec_transform<F>(cx: CallContext, op: F) -> napi::Result<JsObject>
|
||||||
|
where
|
||||||
|
F: FnOnce(&Compiler, String, &Options) -> Result<Arc<SourceFile>, Error>,
|
||||||
|
{
|
||||||
|
let c = get_compiler(&cx);
|
||||||
|
|
||||||
|
let s = cx.get::<JsString>(0)?.into_utf8()?;
|
||||||
|
let is_module = cx.get::<JsBoolean>(1)?;
|
||||||
|
let options: Options = cx.get_deserialized(2)?;
|
||||||
|
|
||||||
|
let output = c.run(|| -> napi::Result<_> {
|
||||||
|
if is_module.get_value()? {
|
||||||
|
let program: Program =
|
||||||
|
serde_json::from_str(s.as_str()?).expect("failed to deserialize Program");
|
||||||
|
c.process_js(program, &options).convert_err()
|
||||||
|
} else {
|
||||||
|
let fm = op(&c, s.as_str()?.to_string(), &options).expect("failed to create fm");
|
||||||
|
c.process_js_file(fm, &options).convert_err()
|
||||||
|
}
|
||||||
|
})?;
|
||||||
|
|
||||||
|
complete_output(cx.env, output)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[js_function(4)]
|
||||||
|
pub fn transform(cx: CallContext) -> napi::Result<JsObject> {
|
||||||
|
schedule_transform(cx, |c, src, is_module, options| {
|
||||||
|
let input = if is_module {
|
||||||
|
Input::Program(src)
|
||||||
|
} else {
|
||||||
|
Input::Source(c.cm.new_source_file(
|
||||||
|
if options.filename.is_empty() {
|
||||||
|
FileName::Anon
|
||||||
|
} else {
|
||||||
|
FileName::Real(options.filename.clone().into())
|
||||||
|
},
|
||||||
|
src,
|
||||||
|
))
|
||||||
|
};
|
||||||
|
|
||||||
|
TransformTask {
|
||||||
|
c: c.clone(),
|
||||||
|
input,
|
||||||
|
options,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
#[js_function(4)]
|
||||||
|
pub fn transform_sync(cx: CallContext) -> napi::Result<JsObject> {
|
||||||
|
exec_transform(cx, |c, src, options| {
|
||||||
|
Ok(c.cm.new_source_file(
|
||||||
|
if options.filename.is_empty() {
|
||||||
|
FileName::Anon
|
||||||
|
} else {
|
||||||
|
FileName::Real(options.filename.clone().into())
|
||||||
|
},
|
||||||
|
src,
|
||||||
|
))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fn process_js_custom(
|
||||||
|
compiler: &Arc<Compiler>,
|
||||||
|
source: Arc<SourceFile>,
|
||||||
|
options: &Options,
|
||||||
|
) -> Result<TransformOutput, Error> {
|
||||||
|
let config = compiler.run(|| compiler.config_for_file(options, &source.name))?;
|
||||||
|
let config = match config {
|
||||||
|
Some(v) => v,
|
||||||
|
None => {
|
||||||
|
bail!("cannot process file because it's ignored by .swcrc")
|
||||||
|
}
|
||||||
|
};
|
||||||
|
let config = BuiltConfig {
|
||||||
|
pass: chain!(hook_optimizer(), config.pass),
|
||||||
|
syntax: config.syntax,
|
||||||
|
target: config.target,
|
||||||
|
minify: config.minify,
|
||||||
|
external_helpers: config.external_helpers,
|
||||||
|
source_maps: config.source_maps,
|
||||||
|
input_source_map: config.input_source_map,
|
||||||
|
is_module: config.is_module,
|
||||||
|
output_path: config.output_path,
|
||||||
|
};
|
||||||
|
//let orig = compiler.get_orig_src_map(&source, &options.config.input_source_map)?;
|
||||||
|
let program = compiler.parse_js(
|
||||||
|
source.clone(),
|
||||||
|
config.target,
|
||||||
|
config.syntax,
|
||||||
|
config.is_module,
|
||||||
|
true,
|
||||||
|
)?;
|
||||||
|
|
||||||
|
//compiler.process_js_inner(program, orig.as_ref(), config)
|
||||||
|
|
||||||
|
compiler.run(|| {
|
||||||
|
if config.minify {
|
||||||
|
let preserve_excl = |_: &BytePos, vc: &mut Vec<Comment>| -> bool {
|
||||||
|
vc.retain(|c: &Comment| c.text.starts_with("!"));
|
||||||
|
!vc.is_empty()
|
||||||
|
};
|
||||||
|
compiler.comments().leading.retain(preserve_excl);
|
||||||
|
compiler.comments().trailing.retain(preserve_excl);
|
||||||
|
}
|
||||||
|
let mut pass = config.pass;
|
||||||
|
let program = helpers::HELPERS.set(&Helpers::new(config.external_helpers), || {
|
||||||
|
HANDLER.set(&compiler.handler, || {
|
||||||
|
// Fold module
|
||||||
|
program.fold_with(&mut pass)
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
compiler.print(
|
||||||
|
&program,
|
||||||
|
config.output_path,
|
||||||
|
config.target,
|
||||||
|
config.source_maps,
|
||||||
|
None, // TODO: figure out sourcemaps
|
||||||
|
config.minify,
|
||||||
|
)
|
||||||
|
})
|
||||||
|
}
|
61
packages/next/build/swc/src/util.rs
Normal file
61
packages/next/build/swc/src/util.rs
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
/*
|
||||||
|
Copyright (c) 2017 The swc Project Developers
|
||||||
|
|
||||||
|
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 the
|
||||||
|
Software without restriction, including without
|
||||||
|
limitation the rights to use, copy, modify, merge,
|
||||||
|
publish, distribute, sublicense, and/or sell copies of
|
||||||
|
the Software, and to permit persons to whom the Software
|
||||||
|
is furnished to do so, subject to the following
|
||||||
|
conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice
|
||||||
|
shall be included in all copies or substantial portions
|
||||||
|
of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
|
||||||
|
ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
|
||||||
|
TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
|
||||||
|
SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||||
|
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||||
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
|
||||||
|
IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
use anyhow::Context;
|
||||||
|
use napi::{CallContext, JsBuffer, Status};
|
||||||
|
use serde::de::DeserializeOwned;
|
||||||
|
|
||||||
|
pub trait MapErr<T>: Into<Result<T, anyhow::Error>> {
|
||||||
|
fn convert_err(self) -> napi::Result<T> {
|
||||||
|
self.into()
|
||||||
|
.map_err(|err| napi::Error::new(Status::GenericFailure, format!("{:?}", err)))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<T> MapErr<T> for Result<T, anyhow::Error> {}
|
||||||
|
|
||||||
|
pub trait CtxtExt {
|
||||||
|
/// Currently this uses JsBuffer
|
||||||
|
fn get_deserialized<T>(&self, index: usize) -> napi::Result<T>
|
||||||
|
where
|
||||||
|
T: DeserializeOwned;
|
||||||
|
}
|
||||||
|
|
||||||
|
impl CtxtExt for CallContext<'_> {
|
||||||
|
fn get_deserialized<T>(&self, index: usize) -> napi::Result<T>
|
||||||
|
where
|
||||||
|
T: DeserializeOwned,
|
||||||
|
{
|
||||||
|
let buffer = self.get::<JsBuffer>(index)?.into_value()?;
|
||||||
|
let v = serde_json::from_slice(&buffer)
|
||||||
|
.with_context(|| format!("Argument at `{}` is not JsBuffer", index))
|
||||||
|
.convert_err()?;
|
||||||
|
|
||||||
|
Ok(v)
|
||||||
|
}
|
||||||
|
}
|
143
packages/next/build/webpack/loaders/next-swc-loader.js
Normal file
143
packages/next/build/webpack/loaders/next-swc-loader.js
Normal file
|
@ -0,0 +1,143 @@
|
||||||
|
/*
|
||||||
|
Copyright (c) 2017 The swc Project Developers
|
||||||
|
|
||||||
|
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 the
|
||||||
|
Software without restriction, including without
|
||||||
|
limitation the rights to use, copy, modify, merge,
|
||||||
|
publish, distribute, sublicense, and/or sell copies of
|
||||||
|
the Software, and to permit persons to whom the Software
|
||||||
|
is furnished to do so, subject to the following
|
||||||
|
conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice
|
||||||
|
shall be included in all copies or substantial portions
|
||||||
|
of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
|
||||||
|
ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
|
||||||
|
TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
|
||||||
|
SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||||
|
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||||
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
|
||||||
|
IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { getOptions } from 'next/dist/compiled/loader-utils'
|
||||||
|
const { transform, transformSync } = require('../../swc/core')
|
||||||
|
|
||||||
|
function makeLoader() {
|
||||||
|
return function (source, inputSourceMap) {
|
||||||
|
// Make the loader async
|
||||||
|
const callback = this.async()
|
||||||
|
const filename = this.resourcePath
|
||||||
|
|
||||||
|
let loaderOptions = getOptions(this) || {}
|
||||||
|
|
||||||
|
// Standardize on 'sourceMaps' as the key passed through to Webpack, so that
|
||||||
|
// users may safely use either one alongside our default use of
|
||||||
|
// 'this.sourceMap' below without getting error about conflicting aliases.
|
||||||
|
if (
|
||||||
|
Object.prototype.hasOwnProperty.call(loaderOptions, 'sourceMap') &&
|
||||||
|
!Object.prototype.hasOwnProperty.call(loaderOptions, 'sourceMaps')
|
||||||
|
) {
|
||||||
|
loaderOptions = Object.assign({}, loaderOptions, {
|
||||||
|
sourceMaps: loaderOptions.sourceMap,
|
||||||
|
})
|
||||||
|
delete loaderOptions.sourceMap
|
||||||
|
}
|
||||||
|
|
||||||
|
if (inputSourceMap) {
|
||||||
|
inputSourceMap = JSON.stringify(inputSourceMap)
|
||||||
|
}
|
||||||
|
|
||||||
|
const programmaticOptions = Object.assign({}, loaderOptions, {
|
||||||
|
filename,
|
||||||
|
inputSourceMap: inputSourceMap || undefined,
|
||||||
|
|
||||||
|
// Set the default sourcemap behavior based on Webpack's mapping flag,
|
||||||
|
// but allow users to override if they want.
|
||||||
|
sourceMaps:
|
||||||
|
loaderOptions.sourceMaps === undefined
|
||||||
|
? this.sourceMap
|
||||||
|
: loaderOptions.sourceMaps,
|
||||||
|
|
||||||
|
// Ensure that Webpack will get a full absolute path in the sourcemap
|
||||||
|
// so that it can properly map the module back to its internal cached
|
||||||
|
// modules.
|
||||||
|
sourceFileName: filename,
|
||||||
|
})
|
||||||
|
if (!programmaticOptions.inputSourceMap) {
|
||||||
|
delete programmaticOptions.inputSourceMap
|
||||||
|
}
|
||||||
|
|
||||||
|
const sync = programmaticOptions.sync
|
||||||
|
const parseMap = programmaticOptions.parseMap
|
||||||
|
|
||||||
|
// Remove loader related options
|
||||||
|
delete programmaticOptions.sync
|
||||||
|
delete programmaticOptions.parseMap
|
||||||
|
delete programmaticOptions.customize
|
||||||
|
delete programmaticOptions.cacheDirectory
|
||||||
|
delete programmaticOptions.cacheIdentifier
|
||||||
|
delete programmaticOptions.cacheCompression
|
||||||
|
delete programmaticOptions.metadataSubscribers
|
||||||
|
|
||||||
|
// auto detect development mode
|
||||||
|
if (
|
||||||
|
this.mode &&
|
||||||
|
programmaticOptions.jsc &&
|
||||||
|
programmaticOptions.jsc.transform &&
|
||||||
|
programmaticOptions.jsc.transform.react &&
|
||||||
|
!Object.prototype.hasOwnProperty.call(
|
||||||
|
programmaticOptions.jsc.transform.react,
|
||||||
|
'development'
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
programmaticOptions.jsc.transform.react.development =
|
||||||
|
this.mode === 'development'
|
||||||
|
}
|
||||||
|
|
||||||
|
if (programmaticOptions.sourceMaps === 'inline') {
|
||||||
|
// Babel has this weird behavior where if you set "inline", we
|
||||||
|
// inline the sourcemap, and set 'result.map = null'. This results
|
||||||
|
// in bad behavior from Babel since the maps get put into the code,
|
||||||
|
// which Webpack does not expect, and because the map we return to
|
||||||
|
// Webpack is null, which is also bad. To avoid that, we override the
|
||||||
|
// behavior here so "inline" just behaves like 'true'.
|
||||||
|
programmaticOptions.sourceMaps = true
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (sync) {
|
||||||
|
const output = transformSync(source, programmaticOptions)
|
||||||
|
callback(
|
||||||
|
null,
|
||||||
|
output.code,
|
||||||
|
parseMap ? JSON.parse(output.map) : output.map
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
transform(source, programmaticOptions).then(
|
||||||
|
(output) => {
|
||||||
|
callback(
|
||||||
|
null,
|
||||||
|
output.code,
|
||||||
|
parseMap ? JSON.parse(output.map) : output.map
|
||||||
|
)
|
||||||
|
},
|
||||||
|
(err) => {
|
||||||
|
callback(err)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
callback(e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = makeLoader()
|
||||||
|
module.exports.custom = makeLoader
|
4
packages/next/native/.gitignore
vendored
Normal file
4
packages/next/native/.gitignore
vendored
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
# Ignore everything in this directory
|
||||||
|
*
|
||||||
|
# Except this file
|
||||||
|
!.gitignore
|
BIN
packages/next/native/next-swc.darwin-arm64.node
Normal file
BIN
packages/next/native/next-swc.darwin-arm64.node
Normal file
Binary file not shown.
BIN
packages/next/native/next-swc.darwin-x64.node
Normal file
BIN
packages/next/native/next-swc.darwin-x64.node
Normal file
Binary file not shown.
BIN
packages/next/native/next-swc.linux-x64-gnu.node
Normal file
BIN
packages/next/native/next-swc.linux-x64-gnu.node
Normal file
Binary file not shown.
BIN
packages/next/native/next-swc.win32-x64-msvc.node
Normal file
BIN
packages/next/native/next-swc.win32-x64-msvc.node
Normal file
Binary file not shown.
|
@ -53,7 +53,8 @@
|
||||||
"prepublish": "npm run release && yarn types",
|
"prepublish": "npm run release && yarn types",
|
||||||
"types": "tsc --declaration --emitDeclarationOnly --declarationDir dist",
|
"types": "tsc --declaration --emitDeclarationOnly --declarationDir dist",
|
||||||
"typescript": "tsc --noEmit --declaration",
|
"typescript": "tsc --noEmit --declaration",
|
||||||
"ncc-compiled": "ncc cache clean && taskr ncc"
|
"ncc-compiled": "ncc cache clean && taskr ncc",
|
||||||
|
"build-native": "napi build --platform --release --cargo-cwd build/swc native"
|
||||||
},
|
},
|
||||||
"taskr": {
|
"taskr": {
|
||||||
"requires": [
|
"requires": [
|
||||||
|
@ -69,6 +70,7 @@
|
||||||
"@next/polyfill-module": "11.0.2-canary.22",
|
"@next/polyfill-module": "11.0.2-canary.22",
|
||||||
"@next/react-dev-overlay": "11.0.2-canary.22",
|
"@next/react-dev-overlay": "11.0.2-canary.22",
|
||||||
"@next/react-refresh-utils": "11.0.2-canary.22",
|
"@next/react-refresh-utils": "11.0.2-canary.22",
|
||||||
|
"@node-rs/helper": "1.2.1",
|
||||||
"assert": "2.0.0",
|
"assert": "2.0.0",
|
||||||
"ast-types": "0.13.2",
|
"ast-types": "0.13.2",
|
||||||
"browserify-zlib": "0.2.0",
|
"browserify-zlib": "0.2.0",
|
||||||
|
@ -152,6 +154,7 @@
|
||||||
"@babel/preset-typescript": "7.12.7",
|
"@babel/preset-typescript": "7.12.7",
|
||||||
"@babel/traverse": "^7.12.10",
|
"@babel/traverse": "^7.12.10",
|
||||||
"@babel/types": "7.12.12",
|
"@babel/types": "7.12.12",
|
||||||
|
"@napi-rs/cli": "1.1.0",
|
||||||
"@next/polyfill-nomodule": "11.0.2-canary.22",
|
"@next/polyfill-nomodule": "11.0.2-canary.22",
|
||||||
"@taskr/clear": "1.1.0",
|
"@taskr/clear": "1.1.0",
|
||||||
"@taskr/esnext": "1.1.0",
|
"@taskr/esnext": "1.1.0",
|
||||||
|
@ -248,5 +251,11 @@
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12.0.0"
|
"node": ">=12.0.0"
|
||||||
|
},
|
||||||
|
"napi": {
|
||||||
|
"name": "next-swc",
|
||||||
|
"triples": {
|
||||||
|
"defaults": true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
51
test/unit/next-swc.unit.test.js
Normal file
51
test/unit/next-swc.unit.test.js
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
/* eslint-env jest */
|
||||||
|
import { transform } from 'next/dist/build/swc'
|
||||||
|
|
||||||
|
const swc = async (code) => {
|
||||||
|
let output = await transform(code)
|
||||||
|
return output.code
|
||||||
|
}
|
||||||
|
|
||||||
|
const trim = (s) => s.join('\n').trim().replace(/^\s+/gm, '')
|
||||||
|
|
||||||
|
describe('next/swc', () => {
|
||||||
|
describe('hook_optimizer', () => {
|
||||||
|
it('should transform Array-destructured hook return values use object destructuring', async () => {
|
||||||
|
const output = await swc(
|
||||||
|
trim`
|
||||||
|
import { useState } from 'react';
|
||||||
|
const [count, setCount] = useState(0);
|
||||||
|
`
|
||||||
|
)
|
||||||
|
|
||||||
|
expect(output).toMatch(trim`
|
||||||
|
var ref = useState(0), count = ref[0], setCount = ref[1];
|
||||||
|
`)
|
||||||
|
|
||||||
|
expect(output).toMatchInlineSnapshot(`
|
||||||
|
"import { useState } from 'react';
|
||||||
|
var ref = useState(0), count = ref[0], setCount = ref[1];
|
||||||
|
"
|
||||||
|
`)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should be able to ignore some Array-destructured hook return values', async () => {
|
||||||
|
const output = await swc(
|
||||||
|
trim`
|
||||||
|
import { useState } from 'react';
|
||||||
|
const [, setCount] = useState(0);
|
||||||
|
`
|
||||||
|
)
|
||||||
|
|
||||||
|
expect(output).toMatch(trim`
|
||||||
|
var ref = useState(0), setCount = ref[1];
|
||||||
|
`)
|
||||||
|
|
||||||
|
expect(output).toMatchInlineSnapshot(`
|
||||||
|
"import { useState } from 'react';
|
||||||
|
var ref = useState(0), setCount = ref[1];
|
||||||
|
"
|
||||||
|
`)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
378
yarn.lock
378
yarn.lock
|
@ -3247,19 +3247,34 @@
|
||||||
call-me-maybe "^1.0.1"
|
call-me-maybe "^1.0.1"
|
||||||
glob-to-regexp "^0.3.0"
|
glob-to-regexp "^0.3.0"
|
||||||
|
|
||||||
"@napi-rs/triples@^1.0.2":
|
"@napi-rs/cli@1.1.0":
|
||||||
version "1.0.2"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/@napi-rs/triples/-/triples-1.0.2.tgz#2ce4c6a78568358772008f564ee5009093d20a19"
|
resolved "https://registry.yarnpkg.com/@napi-rs/cli/-/cli-1.1.0.tgz#ca58a0ff18a0af133f009773282846fb4509f9d1"
|
||||||
integrity sha512-EL3SiX43m9poFSnhDx4d4fn9SSaqyO2rHsCNhETi9bWPmjXK3uPJ0QpPFtx39FEdHcz1vJmsiW41kqc0AgvtzQ==
|
integrity sha512-eGOOybqsuABoeocHron/R8cA4A1JJeLlt8dBsmyIbdXduEs0SPr+caLX5avdz8D4xG9tYfxj0k8fN/PAletLPA==
|
||||||
|
|
||||||
"@node-rs/helper@^1.0.0":
|
|
||||||
version "1.2.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/@node-rs/helper/-/helper-1.2.0.tgz#c72c9f04527ee5d65700ac4842e3ea21ad0714c1"
|
|
||||||
integrity sha512-pzIFIS0POyqWVqdcF0NQO2DjnO1IeI1UN/hENCZMW3o/ndEpTmZLRVhoXGSHjjzoQaEuHwzj79BnYUXI3syv8w==
|
|
||||||
dependencies:
|
dependencies:
|
||||||
"@napi-rs/triples" "^1.0.2"
|
"@octokit/rest" "^18.5.6"
|
||||||
|
chalk "^4.1.1"
|
||||||
|
clipanion "^2.6.2"
|
||||||
|
debug "^4.3.1"
|
||||||
|
fdir "^5.1.0"
|
||||||
|
inquirer "^8.1.0"
|
||||||
|
lodash "^4.17.21"
|
||||||
|
putasset "^5.0.3"
|
||||||
|
toml "^3.0.0"
|
||||||
tslib "^2.2.0"
|
tslib "^2.2.0"
|
||||||
|
|
||||||
|
"@napi-rs/triples@^1.0.3":
|
||||||
|
version "1.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@napi-rs/triples/-/triples-1.0.3.tgz#76d6d0c3f4d16013c61e45dfca5ff1e6c31ae53c"
|
||||||
|
integrity sha512-jDJTpta+P4p1NZTFVLHJ/TLFVYVcOqv6l8xwOeBKNPMgY/zDYH/YH7SJbvrr/h1RcS9GzbPcLKGzpuK9cV56UA==
|
||||||
|
|
||||||
|
"@node-rs/helper@1.2.1", "@node-rs/helper@^1.0.0":
|
||||||
|
version "1.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@node-rs/helper/-/helper-1.2.1.tgz#e079b05f21ff4329d82c4e1f71c0290e4ecdc70c"
|
||||||
|
integrity sha512-R5wEmm8nbuQU0YGGmYVjEc0OHtYsuXdpRG+Ut/3wZ9XAvQWyThN08bTh2cBJgoZxHQUPtvRfeQuxcAgLuiBISg==
|
||||||
|
dependencies:
|
||||||
|
"@napi-rs/triples" "^1.0.3"
|
||||||
|
|
||||||
"@nodelib/fs.scandir@2.1.3":
|
"@nodelib/fs.scandir@2.1.3":
|
||||||
version "2.1.3"
|
version "2.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b"
|
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b"
|
||||||
|
@ -3344,13 +3359,25 @@
|
||||||
puka "^1.0.1"
|
puka "^1.0.1"
|
||||||
read-package-json-fast "^2.0.1"
|
read-package-json-fast "^2.0.1"
|
||||||
|
|
||||||
"@octokit/auth-token@^2.4.4":
|
"@octokit/auth-token@^2.4.0", "@octokit/auth-token@^2.4.4":
|
||||||
version "2.4.5"
|
version "2.4.5"
|
||||||
resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.5.tgz#568ccfb8cb46f36441fac094ce34f7a875b197f3"
|
resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.5.tgz#568ccfb8cb46f36441fac094ce34f7a875b197f3"
|
||||||
integrity sha512-BpGYsPgJt05M7/L/5FoE1PiAbdxXFZkX/3kDYcsvd1v6UhlnE5e96dTDr0ezX/EFwciQxf3cNV0loipsURU+WA==
|
integrity sha512-BpGYsPgJt05M7/L/5FoE1PiAbdxXFZkX/3kDYcsvd1v6UhlnE5e96dTDr0ezX/EFwciQxf3cNV0loipsURU+WA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@octokit/types" "^6.0.3"
|
"@octokit/types" "^6.0.3"
|
||||||
|
|
||||||
|
"@octokit/core@^2.4.3":
|
||||||
|
version "2.5.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@octokit/core/-/core-2.5.4.tgz#f7fbf8e4f86c5cc2497a8887ba2561ec8d358054"
|
||||||
|
integrity sha512-HCp8yKQfTITYK+Nd09MHzAlP1v3Ii/oCohv0/TW9rhSLvzb98BOVs2QmVYuloE6a3l6LsfyGIwb6Pc4ycgWlIQ==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/auth-token" "^2.4.0"
|
||||||
|
"@octokit/graphql" "^4.3.1"
|
||||||
|
"@octokit/request" "^5.4.0"
|
||||||
|
"@octokit/types" "^5.0.0"
|
||||||
|
before-after-hook "^2.1.0"
|
||||||
|
universal-user-agent "^5.0.0"
|
||||||
|
|
||||||
"@octokit/core@^3.2.3":
|
"@octokit/core@^3.2.3":
|
||||||
version "3.2.5"
|
version "3.2.5"
|
||||||
resolved "https://registry.yarnpkg.com/@octokit/core/-/core-3.2.5.tgz#57becbd5fd789b0592b915840855f3a5f233d554"
|
resolved "https://registry.yarnpkg.com/@octokit/core/-/core-3.2.5.tgz#57becbd5fd789b0592b915840855f3a5f233d554"
|
||||||
|
@ -3363,6 +3390,19 @@
|
||||||
before-after-hook "^2.1.0"
|
before-after-hook "^2.1.0"
|
||||||
universal-user-agent "^6.0.0"
|
universal-user-agent "^6.0.0"
|
||||||
|
|
||||||
|
"@octokit/core@^3.5.0":
|
||||||
|
version "3.5.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@octokit/core/-/core-3.5.1.tgz#8601ceeb1ec0e1b1b8217b960a413ed8e947809b"
|
||||||
|
integrity sha512-omncwpLVxMP+GLpLPgeGJBF6IWJFjXDS5flY5VbppePYX9XehevbDykRH9PdCdvqt9TS5AOTiDide7h0qrkHjw==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/auth-token" "^2.4.4"
|
||||||
|
"@octokit/graphql" "^4.5.8"
|
||||||
|
"@octokit/request" "^5.6.0"
|
||||||
|
"@octokit/request-error" "^2.0.5"
|
||||||
|
"@octokit/types" "^6.0.3"
|
||||||
|
before-after-hook "^2.2.0"
|
||||||
|
universal-user-agent "^6.0.0"
|
||||||
|
|
||||||
"@octokit/endpoint@^6.0.1":
|
"@octokit/endpoint@^6.0.1":
|
||||||
version "6.0.11"
|
version "6.0.11"
|
||||||
resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.11.tgz#082adc2aebca6dcefa1fb383f5efb3ed081949d1"
|
resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.11.tgz#082adc2aebca6dcefa1fb383f5efb3ed081949d1"
|
||||||
|
@ -3372,6 +3412,15 @@
|
||||||
is-plain-object "^5.0.0"
|
is-plain-object "^5.0.0"
|
||||||
universal-user-agent "^6.0.0"
|
universal-user-agent "^6.0.0"
|
||||||
|
|
||||||
|
"@octokit/graphql@^4.3.1":
|
||||||
|
version "4.6.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.6.4.tgz#0c3f5bed440822182e972317122acb65d311a5ed"
|
||||||
|
integrity sha512-SWTdXsVheRmlotWNjKzPOb6Js6tjSqA2a8z9+glDJng0Aqjzti8MEWOtuT8ZSu6wHnci7LZNuarE87+WJBG4vg==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/request" "^5.6.0"
|
||||||
|
"@octokit/types" "^6.0.3"
|
||||||
|
universal-user-agent "^6.0.0"
|
||||||
|
|
||||||
"@octokit/graphql@^4.5.8":
|
"@octokit/graphql@^4.5.8":
|
||||||
version "4.6.0"
|
version "4.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.6.0.tgz#f9abca55f82183964a33439d5264674c701c3327"
|
resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.6.0.tgz#f9abca55f82183964a33439d5264674c701c3327"
|
||||||
|
@ -3386,11 +3435,23 @@
|
||||||
resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-4.0.2.tgz#4b2bb553a16ab9e0fdeb29bd453b1c88cf129929"
|
resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-4.0.2.tgz#4b2bb553a16ab9e0fdeb29bd453b1c88cf129929"
|
||||||
integrity sha512-quqmeGTjcVks8YaatVGCpt7QpUTs2PK0D3mW5aEQqmFKOuIZ/CxwWrgnggPjqP3CNp6eALdQRgf0jUpcG8X1/Q==
|
integrity sha512-quqmeGTjcVks8YaatVGCpt7QpUTs2PK0D3mW5aEQqmFKOuIZ/CxwWrgnggPjqP3CNp6eALdQRgf0jUpcG8X1/Q==
|
||||||
|
|
||||||
|
"@octokit/openapi-types@^8.2.1":
|
||||||
|
version "8.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-8.2.1.tgz#102e752a7378ff8d21057c70fd16f1c83856d8c5"
|
||||||
|
integrity sha512-BJz6kWuL3n+y+qM8Pv+UGbSxH6wxKf/SBs5yzGufMHwDefsa+Iq7ZGy1BINMD2z9SkXlIzk1qiu988rMuGXEMg==
|
||||||
|
|
||||||
"@octokit/plugin-enterprise-rest@^6.0.1":
|
"@octokit/plugin-enterprise-rest@^6.0.1":
|
||||||
version "6.0.1"
|
version "6.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz#e07896739618dab8da7d4077c658003775f95437"
|
resolved "https://registry.yarnpkg.com/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz#e07896739618dab8da7d4077c658003775f95437"
|
||||||
integrity sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==
|
integrity sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==
|
||||||
|
|
||||||
|
"@octokit/plugin-paginate-rest@^2.2.0":
|
||||||
|
version "2.14.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.14.0.tgz#f469cb4a908792fb44679c5973d8bba820c88b0f"
|
||||||
|
integrity sha512-S2uEu2uHeI7Vf+Lvj8tv3O5/5TCAa8GHS0dUQN7gdM7vKA6ZHAbR6HkAVm5yMb1mbedLEbxOuQ+Fa0SQ7tCDLA==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/types" "^6.18.0"
|
||||||
|
|
||||||
"@octokit/plugin-paginate-rest@^2.6.2":
|
"@octokit/plugin-paginate-rest@^2.6.2":
|
||||||
version "2.9.1"
|
version "2.9.1"
|
||||||
resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.9.1.tgz#e9bb34a89b7ed5b801f1c976feeb9b0078ecd201"
|
resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.9.1.tgz#e9bb34a89b7ed5b801f1c976feeb9b0078ecd201"
|
||||||
|
@ -3398,11 +3459,24 @@
|
||||||
dependencies:
|
dependencies:
|
||||||
"@octokit/types" "^6.8.0"
|
"@octokit/types" "^6.8.0"
|
||||||
|
|
||||||
|
"@octokit/plugin-request-log@^1.0.0":
|
||||||
|
version "1.0.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85"
|
||||||
|
integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==
|
||||||
|
|
||||||
"@octokit/plugin-request-log@^1.0.2":
|
"@octokit/plugin-request-log@^1.0.2":
|
||||||
version "1.0.3"
|
version "1.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.3.tgz#70a62be213e1edc04bb8897ee48c311482f9700d"
|
resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.3.tgz#70a62be213e1edc04bb8897ee48c311482f9700d"
|
||||||
integrity sha512-4RFU4li238jMJAzLgAwkBAw+4Loile5haQMQr+uhFq27BmyJXcXSKvoQKqh0agsZEiUlW6iSv3FAgvmGkur7OQ==
|
integrity sha512-4RFU4li238jMJAzLgAwkBAw+4Loile5haQMQr+uhFq27BmyJXcXSKvoQKqh0agsZEiUlW6iSv3FAgvmGkur7OQ==
|
||||||
|
|
||||||
|
"@octokit/plugin-rest-endpoint-methods@3.17.0":
|
||||||
|
version "3.17.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-3.17.0.tgz#d8ba04eb883849dd98666c55bf49d8c9fe7be055"
|
||||||
|
integrity sha512-NFV3vq7GgoO2TrkyBRUOwflkfTYkFKS0tLAPym7RNpkwLCttqShaEGjthOsPEEL+7LFcYv3mU24+F2yVd3npmg==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/types" "^4.1.6"
|
||||||
|
deprecation "^2.3.1"
|
||||||
|
|
||||||
"@octokit/plugin-rest-endpoint-methods@4.10.1":
|
"@octokit/plugin-rest-endpoint-methods@4.10.1":
|
||||||
version "4.10.1"
|
version "4.10.1"
|
||||||
resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-4.10.1.tgz#b7a9181d1f52fef70a13945c5b49cffa51862da1"
|
resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-4.10.1.tgz#b7a9181d1f52fef70a13945c5b49cffa51862da1"
|
||||||
|
@ -3411,6 +3485,14 @@
|
||||||
"@octokit/types" "^6.8.2"
|
"@octokit/types" "^6.8.2"
|
||||||
deprecation "^2.3.1"
|
deprecation "^2.3.1"
|
||||||
|
|
||||||
|
"@octokit/plugin-rest-endpoint-methods@5.4.1":
|
||||||
|
version "5.4.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.4.1.tgz#540ec90bb753dcaa682ee9f2cd6efdde9132fa90"
|
||||||
|
integrity sha512-Nx0g7I5ayAYghsLJP4Q1Ch2W9jYYM0FlWWWZocUro8rNxVwuZXGfFd7Rcqi9XDWepSXjg1WByiNJnZza2hIOvQ==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/types" "^6.18.1"
|
||||||
|
deprecation "^2.3.1"
|
||||||
|
|
||||||
"@octokit/request-error@^2.0.0":
|
"@octokit/request-error@^2.0.0":
|
||||||
version "2.0.5"
|
version "2.0.5"
|
||||||
resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.0.5.tgz#72cc91edc870281ad583a42619256b380c600143"
|
resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.0.5.tgz#72cc91edc870281ad583a42619256b380c600143"
|
||||||
|
@ -3420,6 +3502,15 @@
|
||||||
deprecation "^2.0.0"
|
deprecation "^2.0.0"
|
||||||
once "^1.4.0"
|
once "^1.4.0"
|
||||||
|
|
||||||
|
"@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0":
|
||||||
|
version "2.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.1.0.tgz#9e150357831bfc788d13a4fd4b1913d60c74d677"
|
||||||
|
integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/types" "^6.0.3"
|
||||||
|
deprecation "^2.0.0"
|
||||||
|
once "^1.4.0"
|
||||||
|
|
||||||
"@octokit/request@^5.3.0", "@octokit/request@^5.4.12":
|
"@octokit/request@^5.3.0", "@octokit/request@^5.4.12":
|
||||||
version "5.4.14"
|
version "5.4.14"
|
||||||
resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.4.14.tgz#ec5f96f78333bb2af390afa5ff66f114b063bc96"
|
resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.4.14.tgz#ec5f96f78333bb2af390afa5ff66f114b063bc96"
|
||||||
|
@ -3434,6 +3525,18 @@
|
||||||
once "^1.4.0"
|
once "^1.4.0"
|
||||||
universal-user-agent "^6.0.0"
|
universal-user-agent "^6.0.0"
|
||||||
|
|
||||||
|
"@octokit/request@^5.4.0", "@octokit/request@^5.6.0":
|
||||||
|
version "5.6.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.6.0.tgz#6084861b6e4fa21dc40c8e2a739ec5eff597e672"
|
||||||
|
integrity sha512-4cPp/N+NqmaGQwbh3vUsYqokQIzt7VjsgTYVXiwpUP2pxd5YiZB2XuTedbb0SPtv9XS7nzAKjAuQxmY8/aZkiA==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/endpoint" "^6.0.1"
|
||||||
|
"@octokit/request-error" "^2.1.0"
|
||||||
|
"@octokit/types" "^6.16.1"
|
||||||
|
is-plain-object "^5.0.0"
|
||||||
|
node-fetch "^2.6.1"
|
||||||
|
universal-user-agent "^6.0.0"
|
||||||
|
|
||||||
"@octokit/rest@15.2.6":
|
"@octokit/rest@15.2.6":
|
||||||
version "15.2.6"
|
version "15.2.6"
|
||||||
resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-15.2.6.tgz#16226f58fbf0ba88f631848fb622dfe0ad410c0c"
|
resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-15.2.6.tgz#16226f58fbf0ba88f631848fb622dfe0ad410c0c"
|
||||||
|
@ -3447,6 +3550,16 @@
|
||||||
node-fetch "^2.1.1"
|
node-fetch "^2.1.1"
|
||||||
url-template "^2.0.8"
|
url-template "^2.0.8"
|
||||||
|
|
||||||
|
"@octokit/rest@^17.1.3":
|
||||||
|
version "17.11.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-17.11.2.tgz#f3dbd46f9f06361c646230fd0ef8598e59183ead"
|
||||||
|
integrity sha512-4jTmn8WossTUaLfNDfXk4fVJgbz5JgZE8eCs4BvIb52lvIH8rpVMD1fgRCrHbSd6LRPE5JFZSfAEtszrOq3ZFQ==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/core" "^2.4.3"
|
||||||
|
"@octokit/plugin-paginate-rest" "^2.2.0"
|
||||||
|
"@octokit/plugin-request-log" "^1.0.0"
|
||||||
|
"@octokit/plugin-rest-endpoint-methods" "3.17.0"
|
||||||
|
|
||||||
"@octokit/rest@^18.1.0":
|
"@octokit/rest@^18.1.0":
|
||||||
version "18.1.0"
|
version "18.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-18.1.0.tgz#9bf72604911a3433165bcc924263c9a706d32804"
|
resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-18.1.0.tgz#9bf72604911a3433165bcc924263c9a706d32804"
|
||||||
|
@ -3457,6 +3570,30 @@
|
||||||
"@octokit/plugin-request-log" "^1.0.2"
|
"@octokit/plugin-request-log" "^1.0.2"
|
||||||
"@octokit/plugin-rest-endpoint-methods" "4.10.1"
|
"@octokit/plugin-rest-endpoint-methods" "4.10.1"
|
||||||
|
|
||||||
|
"@octokit/rest@^18.5.6":
|
||||||
|
version "18.6.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-18.6.7.tgz#89b8ecd13edd9603f00453640d1fb0b4175d4b31"
|
||||||
|
integrity sha512-Kn6WrI2ZvmAztdx+HEaf88RuJn+LK72S8g6OpciE4kbZddAN84fu4fiPGxcEu052WmqKVnA/cnQsbNlrYC6rqQ==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/core" "^3.5.0"
|
||||||
|
"@octokit/plugin-paginate-rest" "^2.6.2"
|
||||||
|
"@octokit/plugin-request-log" "^1.0.2"
|
||||||
|
"@octokit/plugin-rest-endpoint-methods" "5.4.1"
|
||||||
|
|
||||||
|
"@octokit/types@^4.1.6":
|
||||||
|
version "4.1.10"
|
||||||
|
resolved "https://registry.yarnpkg.com/@octokit/types/-/types-4.1.10.tgz#e4029c11e2cc1335051775bc1600e7e740e4aca4"
|
||||||
|
integrity sha512-/wbFy1cUIE5eICcg0wTKGXMlKSbaAxEr00qaBXzscLXpqhcwgXeS6P8O0pkysBhRfyjkKjJaYrvR1ExMO5eOXQ==
|
||||||
|
dependencies:
|
||||||
|
"@types/node" ">= 8"
|
||||||
|
|
||||||
|
"@octokit/types@^5.0.0":
|
||||||
|
version "5.5.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@octokit/types/-/types-5.5.0.tgz#e5f06e8db21246ca102aa28444cdb13ae17a139b"
|
||||||
|
integrity sha512-UZ1pErDue6bZNjYOotCNveTXArOMZQFG6hKJfOnGnulVCMcVVi7YIIuuR4WfBhjo7zgpmzn/BkPDnUXtNx+PcQ==
|
||||||
|
dependencies:
|
||||||
|
"@types/node" ">= 8"
|
||||||
|
|
||||||
"@octokit/types@^6.0.3", "@octokit/types@^6.7.1", "@octokit/types@^6.8.0", "@octokit/types@^6.8.2":
|
"@octokit/types@^6.0.3", "@octokit/types@^6.7.1", "@octokit/types@^6.8.0", "@octokit/types@^6.8.2":
|
||||||
version "6.8.3"
|
version "6.8.3"
|
||||||
resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.8.3.tgz#1960951103c836ab2e55fe47a8da2bf76402824f"
|
resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.8.3.tgz#1960951103c836ab2e55fe47a8da2bf76402824f"
|
||||||
|
@ -3465,6 +3602,13 @@
|
||||||
"@octokit/openapi-types" "^4.0.2"
|
"@octokit/openapi-types" "^4.0.2"
|
||||||
"@types/node" ">= 8"
|
"@types/node" ">= 8"
|
||||||
|
|
||||||
|
"@octokit/types@^6.16.1", "@octokit/types@^6.18.0", "@octokit/types@^6.18.1":
|
||||||
|
version "6.18.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.18.1.tgz#a6db178536e649fd5d67a7b747754bcc43940be4"
|
||||||
|
integrity sha512-5YsddjO1U+xC8ZYKV8yZYebW55PCc7qiEEeZ+wZRr6qyclynzfyD65KZ5FdtIeP0/cANyFaD7hV69qElf1nMsQ==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/openapi-types" "^8.2.1"
|
||||||
|
|
||||||
"@polka/url@^1.0.0-next.9":
|
"@polka/url@^1.0.0-next.9":
|
||||||
version "1.0.0-next.11"
|
version "1.0.0-next.11"
|
||||||
resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.11.tgz#aeb16f50649a91af79dbe36574b66d0f9e4d9f71"
|
resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.11.tgz#aeb16f50649a91af79dbe36574b66d0f9e4d9f71"
|
||||||
|
@ -5605,6 +5749,11 @@ before-after-hook@^2.1.0:
|
||||||
resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.1.1.tgz#99ae36992b5cfab4a83f6bee74ab27835f28f405"
|
resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.1.1.tgz#99ae36992b5cfab4a83f6bee74ab27835f28f405"
|
||||||
integrity sha512-5ekuQOvO04MDj7kYZJaMab2S8SPjGJbotVNyv7QYFCOAwrGZs/YnoDNlh1U+m5hl7H2D/+n0taaAV/tfyd3KMA==
|
integrity sha512-5ekuQOvO04MDj7kYZJaMab2S8SPjGJbotVNyv7QYFCOAwrGZs/YnoDNlh1U+m5hl7H2D/+n0taaAV/tfyd3KMA==
|
||||||
|
|
||||||
|
before-after-hook@^2.2.0:
|
||||||
|
version "2.2.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e"
|
||||||
|
integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==
|
||||||
|
|
||||||
bfj@7.0.2:
|
bfj@7.0.2:
|
||||||
version "7.0.2"
|
version "7.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/bfj/-/bfj-7.0.2.tgz#1988ce76f3add9ac2913fd8ba47aad9e651bfbb2"
|
resolved "https://registry.yarnpkg.com/bfj/-/bfj-7.0.2.tgz#1988ce76f3add9ac2913fd8ba47aad9e651bfbb2"
|
||||||
|
@ -5643,6 +5792,15 @@ bl@^4.0.1:
|
||||||
inherits "^2.0.4"
|
inherits "^2.0.4"
|
||||||
readable-stream "^3.4.0"
|
readable-stream "^3.4.0"
|
||||||
|
|
||||||
|
bl@^4.1.0:
|
||||||
|
version "4.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a"
|
||||||
|
integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==
|
||||||
|
dependencies:
|
||||||
|
buffer "^5.5.0"
|
||||||
|
inherits "^2.0.4"
|
||||||
|
readable-stream "^3.4.0"
|
||||||
|
|
||||||
block-stream@*:
|
block-stream@*:
|
||||||
version "0.0.9"
|
version "0.0.9"
|
||||||
resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
|
resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
|
||||||
|
@ -6170,6 +6328,14 @@ chalk@^3.0.0:
|
||||||
ansi-styles "^4.1.0"
|
ansi-styles "^4.1.0"
|
||||||
supports-color "^7.1.0"
|
supports-color "^7.1.0"
|
||||||
|
|
||||||
|
chalk@^4.1.1:
|
||||||
|
version "4.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad"
|
||||||
|
integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==
|
||||||
|
dependencies:
|
||||||
|
ansi-styles "^4.1.0"
|
||||||
|
supports-color "^7.1.0"
|
||||||
|
|
||||||
change-case@^3.0.2:
|
change-case@^3.0.2:
|
||||||
version "3.1.0"
|
version "3.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/change-case/-/change-case-3.1.0.tgz#0e611b7edc9952df2e8513b27b42de72647dd17e"
|
resolved "https://registry.yarnpkg.com/change-case/-/change-case-3.1.0.tgz#0e611b7edc9952df2e8513b27b42de72647dd17e"
|
||||||
|
@ -6228,6 +6394,11 @@ check-types@^11.1.1:
|
||||||
resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.1.2.tgz#86a7c12bf5539f6324eb0e70ca8896c0e38f3e2f"
|
resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.1.2.tgz#86a7c12bf5539f6324eb0e70ca8896c0e38f3e2f"
|
||||||
integrity sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ==
|
integrity sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ==
|
||||||
|
|
||||||
|
checkup@^1.3.0:
|
||||||
|
version "1.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/checkup/-/checkup-1.3.0.tgz#d3800276fea5d0f247ffc951be78c8b02f8e0d76"
|
||||||
|
integrity sha1-04ACdv6l0PJH/8lRvnjIsC+ODXY=
|
||||||
|
|
||||||
cheerio-select@^1.4.0:
|
cheerio-select@^1.4.0:
|
||||||
version "1.4.0"
|
version "1.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-1.4.0.tgz#3a16f21e37a2ef0f211d6d1aa4eff054bb22cdc9"
|
resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-1.4.0.tgz#3a16f21e37a2ef0f211d6d1aa4eff054bb22cdc9"
|
||||||
|
@ -6425,6 +6596,11 @@ cli-spinners@^2.2.0:
|
||||||
version "2.3.0"
|
version "2.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.3.0.tgz#0632239a4b5aa4c958610142c34bb7a651fc8df5"
|
resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.3.0.tgz#0632239a4b5aa4c958610142c34bb7a651fc8df5"
|
||||||
|
|
||||||
|
cli-spinners@^2.5.0:
|
||||||
|
version "2.6.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.0.tgz#36c7dc98fb6a9a76bd6238ec3f77e2425627e939"
|
||||||
|
integrity sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q==
|
||||||
|
|
||||||
cli-truncate@^0.2.1:
|
cli-truncate@^0.2.1:
|
||||||
version "0.2.1"
|
version "0.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574"
|
resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574"
|
||||||
|
@ -6441,6 +6617,11 @@ cli-width@^3.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6"
|
resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6"
|
||||||
integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==
|
integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==
|
||||||
|
|
||||||
|
clipanion@^2.6.2:
|
||||||
|
version "2.6.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/clipanion/-/clipanion-2.6.2.tgz#820e7440812052442455b248f927b187ed732f71"
|
||||||
|
integrity sha512-0tOHJNMF9+4R3qcbBL+4IxLErpaYSYvzs10aXuECDbZdJOuJHdagJMAqvLdeaUQTI/o2uSCDRpet6ywDiKOAYw==
|
||||||
|
|
||||||
cliui@^5.0.0:
|
cliui@^5.0.0:
|
||||||
version "5.0.0"
|
version "5.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5"
|
resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5"
|
||||||
|
@ -7083,7 +7264,7 @@ cross-spawn-async@^2.1.1:
|
||||||
lru-cache "^4.0.0"
|
lru-cache "^4.0.0"
|
||||||
which "^1.2.8"
|
which "^1.2.8"
|
||||||
|
|
||||||
cross-spawn@6.0.5, cross-spawn@^6.0.5:
|
cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5:
|
||||||
version "6.0.5"
|
version "6.0.5"
|
||||||
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
|
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -7543,6 +7724,13 @@ debug@^4.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
ms "2.1.2"
|
ms "2.1.2"
|
||||||
|
|
||||||
|
debug@^4.3.1:
|
||||||
|
version "4.3.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b"
|
||||||
|
integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==
|
||||||
|
dependencies:
|
||||||
|
ms "2.1.2"
|
||||||
|
|
||||||
debug@~0.8.1:
|
debug@~0.8.1:
|
||||||
version "0.8.1"
|
version "0.8.1"
|
||||||
resolved "https://registry.yarnpkg.com/debug/-/debug-0.8.1.tgz#20ff4d26f5e422cb68a1bacbbb61039ad8c1c130"
|
resolved "https://registry.yarnpkg.com/debug/-/debug-0.8.1.tgz#20ff4d26f5e422cb68a1bacbbb61039ad8c1c130"
|
||||||
|
@ -8597,6 +8785,19 @@ execa@^0.4.0:
|
||||||
path-key "^1.0.0"
|
path-key "^1.0.0"
|
||||||
strip-eof "^1.0.0"
|
strip-eof "^1.0.0"
|
||||||
|
|
||||||
|
execa@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
|
||||||
|
integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
|
||||||
|
dependencies:
|
||||||
|
cross-spawn "^6.0.0"
|
||||||
|
get-stream "^4.0.0"
|
||||||
|
is-stream "^1.1.0"
|
||||||
|
npm-run-path "^2.0.0"
|
||||||
|
p-finally "^1.0.0"
|
||||||
|
signal-exit "^3.0.0"
|
||||||
|
strip-eof "^1.0.0"
|
||||||
|
|
||||||
execa@^5.0.0:
|
execa@^5.0.0:
|
||||||
version "5.0.0"
|
version "5.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376"
|
resolved "https://registry.yarnpkg.com/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376"
|
||||||
|
@ -8862,6 +9063,11 @@ fd-slicer@~1.1.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
pend "~1.2.0"
|
pend "~1.2.0"
|
||||||
|
|
||||||
|
fdir@^5.1.0:
|
||||||
|
version "5.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/fdir/-/fdir-5.1.0.tgz#973e4934e6a3666b59ebdfc56f60bb8e9b16acb8"
|
||||||
|
integrity sha512-IgTtZwL52tx2wqWeuGDzXYTnNsEjNLahZpJw30hCQDyVnoHXwY5acNDnjGImTTL1R0z1PCyLw20VAbE5qLic3Q==
|
||||||
|
|
||||||
figgy-pudding@^3.5.1:
|
figgy-pudding@^3.5.1:
|
||||||
version "3.5.1"
|
version "3.5.1"
|
||||||
resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790"
|
resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790"
|
||||||
|
@ -9353,7 +9559,7 @@ get-stream@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
|
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
|
||||||
|
|
||||||
get-stream@^4.1.0:
|
get-stream@^4.0.0, get-stream@^4.1.0:
|
||||||
version "4.1.0"
|
version "4.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
|
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
|
||||||
integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
|
integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
|
||||||
|
@ -10430,6 +10636,26 @@ inquirer@7.3.3, inquirer@^7.3.3:
|
||||||
strip-ansi "^6.0.0"
|
strip-ansi "^6.0.0"
|
||||||
through "^2.3.6"
|
through "^2.3.6"
|
||||||
|
|
||||||
|
inquirer@^8.1.0:
|
||||||
|
version "8.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.1.1.tgz#7c53d94c6d03011c7bb2a947f0dca3b98246c26a"
|
||||||
|
integrity sha512-hUDjc3vBkh/uk1gPfMAD/7Z188Q8cvTGl0nxwaCdwSbzFh6ZKkZh+s2ozVxbE5G9ZNRyeY0+lgbAIOUFsFf98w==
|
||||||
|
dependencies:
|
||||||
|
ansi-escapes "^4.2.1"
|
||||||
|
chalk "^4.1.1"
|
||||||
|
cli-cursor "^3.1.0"
|
||||||
|
cli-width "^3.0.0"
|
||||||
|
external-editor "^3.0.3"
|
||||||
|
figures "^3.0.0"
|
||||||
|
lodash "^4.17.21"
|
||||||
|
mute-stream "0.0.8"
|
||||||
|
ora "^5.3.0"
|
||||||
|
run-async "^2.4.0"
|
||||||
|
rxjs "^6.6.6"
|
||||||
|
string-width "^4.1.0"
|
||||||
|
strip-ansi "^6.0.0"
|
||||||
|
through "^2.3.6"
|
||||||
|
|
||||||
internal-slot@^1.0.3:
|
internal-slot@^1.0.3:
|
||||||
version "1.0.3"
|
version "1.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c"
|
resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c"
|
||||||
|
@ -10935,6 +11161,11 @@ is-typedarray@^1.0.0, is-typedarray@~1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
|
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
|
||||||
|
|
||||||
|
is-unicode-supported@^0.1.0:
|
||||||
|
version "0.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7"
|
||||||
|
integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==
|
||||||
|
|
||||||
is-upper-case@^1.1.0:
|
is-upper-case@^1.1.0:
|
||||||
version "1.1.2"
|
version "1.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/is-upper-case/-/is-upper-case-1.1.2.tgz#8d0b1fa7e7933a1e58483600ec7d9661cbaf756f"
|
resolved "https://registry.yarnpkg.com/is-upper-case/-/is-upper-case-1.1.2.tgz#8d0b1fa7e7933a1e58483600ec7d9661cbaf756f"
|
||||||
|
@ -11528,6 +11759,11 @@ jest@27.0.0-next.8:
|
||||||
import-local "^3.0.2"
|
import-local "^3.0.2"
|
||||||
jest-cli "^27.0.0-next.8"
|
jest-cli "^27.0.0-next.8"
|
||||||
|
|
||||||
|
jju@^1.4.0:
|
||||||
|
version "1.4.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a"
|
||||||
|
integrity sha1-o6vicYryQaKykE+EpiWXDzia4yo=
|
||||||
|
|
||||||
js-base64@^2.1.8, js-base64@^2.1.9:
|
js-base64@^2.1.8, js-base64@^2.1.9:
|
||||||
version "2.5.1"
|
version "2.5.1"
|
||||||
resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121"
|
resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121"
|
||||||
|
@ -12295,6 +12531,14 @@ log-symbols@^3.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
chalk "^2.4.2"
|
chalk "^2.4.2"
|
||||||
|
|
||||||
|
log-symbols@^4.1.0:
|
||||||
|
version "4.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503"
|
||||||
|
integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==
|
||||||
|
dependencies:
|
||||||
|
chalk "^4.1.0"
|
||||||
|
is-unicode-supported "^0.1.0"
|
||||||
|
|
||||||
log-update@^2.3.0:
|
log-update@^2.3.0:
|
||||||
version "2.3.0"
|
version "2.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708"
|
resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708"
|
||||||
|
@ -12379,6 +12623,11 @@ lz-string@^1.4.4:
|
||||||
resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26"
|
resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26"
|
||||||
integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=
|
integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=
|
||||||
|
|
||||||
|
macos-release@^2.2.0:
|
||||||
|
version "2.5.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.5.0.tgz#067c2c88b5f3fb3c56a375b2ec93826220fa1ff2"
|
||||||
|
integrity sha512-EIgv+QZ9r+814gjJj0Bt5vSLJLzswGmSUbUpbi9AIr/fsN2IWFBl2NucV9PAiek+U1STK468tEkxmVYUtuAN3g==
|
||||||
|
|
||||||
magic-string@^0.25.7:
|
magic-string@^0.25.7:
|
||||||
version "0.25.7"
|
version "0.25.7"
|
||||||
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051"
|
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051"
|
||||||
|
@ -12869,12 +13118,24 @@ mime-db@1.47.0:
|
||||||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c"
|
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c"
|
||||||
integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==
|
integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==
|
||||||
|
|
||||||
|
mime-db@1.48.0:
|
||||||
|
version "1.48.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.48.0.tgz#e35b31045dd7eada3aaad537ed88a33afbef2d1d"
|
||||||
|
integrity sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==
|
||||||
|
|
||||||
mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24:
|
mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24:
|
||||||
version "2.1.26"
|
version "2.1.26"
|
||||||
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06"
|
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06"
|
||||||
dependencies:
|
dependencies:
|
||||||
mime-db "1.43.0"
|
mime-db "1.43.0"
|
||||||
|
|
||||||
|
mime-types@^2.1.21:
|
||||||
|
version "2.1.31"
|
||||||
|
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.31.tgz#a00d76b74317c61f9c2db2218b8e9f8e9c5c9e6b"
|
||||||
|
integrity sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==
|
||||||
|
dependencies:
|
||||||
|
mime-db "1.48.0"
|
||||||
|
|
||||||
mime-types@^2.1.27:
|
mime-types@^2.1.27:
|
||||||
version "2.1.30"
|
version "2.1.30"
|
||||||
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d"
|
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d"
|
||||||
|
@ -13650,6 +13911,13 @@ npm-run-path@^1.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
path-key "^1.0.0"
|
path-key "^1.0.0"
|
||||||
|
|
||||||
|
npm-run-path@^2.0.0:
|
||||||
|
version "2.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
|
||||||
|
integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
|
||||||
|
dependencies:
|
||||||
|
path-key "^2.0.0"
|
||||||
|
|
||||||
npm-run-path@^3.0.0:
|
npm-run-path@^3.0.0:
|
||||||
version "3.1.0"
|
version "3.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-3.1.0.tgz#7f91be317f6a466efed3c9f2980ad8a4ee8b0fa5"
|
resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-3.1.0.tgz#7f91be317f6a466efed3c9f2980ad8a4ee8b0fa5"
|
||||||
|
@ -13932,6 +14200,21 @@ ora@4.0.4:
|
||||||
strip-ansi "^6.0.0"
|
strip-ansi "^6.0.0"
|
||||||
wcwidth "^1.0.1"
|
wcwidth "^1.0.1"
|
||||||
|
|
||||||
|
ora@^5.3.0:
|
||||||
|
version "5.4.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18"
|
||||||
|
integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==
|
||||||
|
dependencies:
|
||||||
|
bl "^4.1.0"
|
||||||
|
chalk "^4.1.0"
|
||||||
|
cli-cursor "^3.1.0"
|
||||||
|
cli-spinners "^2.5.0"
|
||||||
|
is-interactive "^1.0.0"
|
||||||
|
is-unicode-supported "^0.1.0"
|
||||||
|
log-symbols "^4.1.0"
|
||||||
|
strip-ansi "^6.0.0"
|
||||||
|
wcwidth "^1.0.1"
|
||||||
|
|
||||||
os-browserify@0.3.0, os-browserify@^0.3.0:
|
os-browserify@0.3.0, os-browserify@^0.3.0:
|
||||||
version "0.3.0"
|
version "0.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
|
resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
|
||||||
|
@ -13941,6 +14224,14 @@ os-homedir@^1.0.0, os-homedir@^1.0.1:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
|
resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
|
||||||
|
|
||||||
|
os-name@^3.1.0:
|
||||||
|
version "3.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801"
|
||||||
|
integrity sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==
|
||||||
|
dependencies:
|
||||||
|
macos-release "^2.2.0"
|
||||||
|
windows-release "^3.1.0"
|
||||||
|
|
||||||
os-shim@^0.1.2:
|
os-shim@^0.1.2:
|
||||||
version "0.1.3"
|
version "0.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/os-shim/-/os-shim-0.1.3.tgz#6b62c3791cf7909ea35ed46e17658bb417cb3917"
|
resolved "https://registry.yarnpkg.com/os-shim/-/os-shim-0.1.3.tgz#6b62c3791cf7909ea35ed46e17658bb417cb3917"
|
||||||
|
@ -14351,7 +14642,7 @@ path-key@^1.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/path-key/-/path-key-1.0.0.tgz#5d53d578019646c0d68800db4e146e6bdc2ac7af"
|
resolved "https://registry.yarnpkg.com/path-key/-/path-key-1.0.0.tgz#5d53d578019646c0d68800db4e146e6bdc2ac7af"
|
||||||
integrity sha1-XVPVeAGWRsDWiADbThRua9wqx68=
|
integrity sha1-XVPVeAGWRsDWiADbThRua9wqx68=
|
||||||
|
|
||||||
path-key@^2.0.1:
|
path-key@^2.0.0, path-key@^2.0.1:
|
||||||
version "2.0.1"
|
version "2.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
|
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
|
||||||
|
|
||||||
|
@ -15632,6 +15923,19 @@ purgecss@^1.4.0:
|
||||||
postcss-selector-parser "^6.0.0"
|
postcss-selector-parser "^6.0.0"
|
||||||
yargs "^14.0.0"
|
yargs "^14.0.0"
|
||||||
|
|
||||||
|
putasset@^5.0.3:
|
||||||
|
version "5.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/putasset/-/putasset-5.0.3.tgz#2fa82a8fc5e2333869df8ffb0e1f8618b1c87b9b"
|
||||||
|
integrity sha512-LGRp0SLOC4PDP/BawMaG3/hw6iKgQPRXcBF7WIzx2XTYwHVk2sS3gpvZqz6bf9GhKMal2phs+DF7J6eIAXEL4w==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/rest" "^17.1.3"
|
||||||
|
checkup "^1.3.0"
|
||||||
|
mime-types "^2.1.21"
|
||||||
|
readjson "^2.0.1"
|
||||||
|
try-catch "^3.0.0"
|
||||||
|
try-to-catch "^3.0.0"
|
||||||
|
yargs-parser "^18.1.1"
|
||||||
|
|
||||||
q@^1.1.2, q@^1.5.1:
|
q@^1.1.2, q@^1.5.1:
|
||||||
version "1.5.1"
|
version "1.5.1"
|
||||||
resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
|
resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
|
||||||
|
@ -15976,6 +16280,14 @@ readdirp@~3.5.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
picomatch "^2.2.1"
|
picomatch "^2.2.1"
|
||||||
|
|
||||||
|
readjson@^2.0.1:
|
||||||
|
version "2.2.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/readjson/-/readjson-2.2.2.tgz#ed940ebdd72b88b383e02db7117402f980158959"
|
||||||
|
integrity sha512-PdeC9tsmLWBiL8vMhJvocq+OezQ3HhsH2HrN7YkhfYcTjQSa/iraB15A7Qvt7Xpr0Yd2rDNt6GbFwVQDg3HcAw==
|
||||||
|
dependencies:
|
||||||
|
jju "^1.4.0"
|
||||||
|
try-catch "^3.0.0"
|
||||||
|
|
||||||
recast@0.18.5:
|
recast@0.18.5:
|
||||||
version "0.18.5"
|
version "0.18.5"
|
||||||
resolved "https://registry.yarnpkg.com/recast/-/recast-0.18.5.tgz#9d5adbc07983a3c8145f3034812374a493e0fe4d"
|
resolved "https://registry.yarnpkg.com/recast/-/recast-0.18.5.tgz#9d5adbc07983a3c8145f3034812374a493e0fe4d"
|
||||||
|
@ -16695,6 +17007,13 @@ rxjs@^6.3.3, rxjs@^6.6.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib "^1.9.0"
|
tslib "^1.9.0"
|
||||||
|
|
||||||
|
rxjs@^6.6.6:
|
||||||
|
version "6.6.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9"
|
||||||
|
integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==
|
||||||
|
dependencies:
|
||||||
|
tslib "^1.9.0"
|
||||||
|
|
||||||
sade@^1.7.4:
|
sade@^1.7.4:
|
||||||
version "1.7.4"
|
version "1.7.4"
|
||||||
resolved "https://registry.yarnpkg.com/sade/-/sade-1.7.4.tgz#ea681e0c65d248d2095c90578c03ca0bb1b54691"
|
resolved "https://registry.yarnpkg.com/sade/-/sade-1.7.4.tgz#ea681e0c65d248d2095c90578c03ca0bb1b54691"
|
||||||
|
@ -18290,6 +18609,11 @@ toidentifier@1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
|
resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
|
||||||
|
|
||||||
|
toml@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee"
|
||||||
|
integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==
|
||||||
|
|
||||||
totalist@^1.0.0:
|
totalist@^1.0.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df"
|
resolved "https://registry.yarnpkg.com/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df"
|
||||||
|
@ -18367,6 +18691,16 @@ trough@^1.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
glob "^7.1.2"
|
glob "^7.1.2"
|
||||||
|
|
||||||
|
try-catch@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/try-catch/-/try-catch-3.0.0.tgz#7996d8b89895e2e8ae62cbdbeb4fe17470f8131b"
|
||||||
|
integrity sha512-3uAqUnoemzca1ENvZ72EVimR+E8lqBbzwZ9v4CEbLjkaV3Q+FtdmPUt7jRtoSoTiYjyIMxEkf6YgUpe/voJ1ng==
|
||||||
|
|
||||||
|
try-to-catch@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/try-to-catch/-/try-to-catch-3.0.0.tgz#a1903b44d13d5124c54d14a461d22ec1f52ea14b"
|
||||||
|
integrity sha512-eIm6ZXwR35jVF8By/HdbbkcaCDTBI5PpCPkejRKrYp0jyf/DbCCcRhHD7/O9jtFI3ewsqo9WctFEiJTS6i+CQA==
|
||||||
|
|
||||||
tryer@^1.0.1:
|
tryer@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8"
|
resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8"
|
||||||
|
@ -18793,6 +19127,13 @@ unistore@3.4.1:
|
||||||
version "3.4.1"
|
version "3.4.1"
|
||||||
resolved "https://registry.yarnpkg.com/unistore/-/unistore-3.4.1.tgz#effdee7d9f2e00fdc6cecad5ab598ccd54344d38"
|
resolved "https://registry.yarnpkg.com/unistore/-/unistore-3.4.1.tgz#effdee7d9f2e00fdc6cecad5ab598ccd54344d38"
|
||||||
|
|
||||||
|
universal-user-agent@^5.0.0:
|
||||||
|
version "5.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-5.0.0.tgz#a3182aa758069bf0e79952570ca757de3579c1d9"
|
||||||
|
integrity sha512-B5TPtzZleXyPrUMKCpEHFmVhMN6EhmJYjG5PQna9s7mXeSqGTLap4OpqLl5FCEFUI3UBmllkETwKf/db66Y54Q==
|
||||||
|
dependencies:
|
||||||
|
os-name "^3.1.0"
|
||||||
|
|
||||||
universal-user-agent@^6.0.0:
|
universal-user-agent@^6.0.0:
|
||||||
version "6.0.0"
|
version "6.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee"
|
resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee"
|
||||||
|
@ -19397,6 +19738,13 @@ widest-line@^3.1.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
string-width "^4.0.0"
|
string-width "^4.0.0"
|
||||||
|
|
||||||
|
windows-release@^3.1.0:
|
||||||
|
version "3.3.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.3.3.tgz#1c10027c7225743eec6b89df160d64c2e0293999"
|
||||||
|
integrity sha512-OSOGH1QYiW5yVor9TtmXKQvt2vjQqbYS+DqmsZw+r7xDwLXEeT3JGW0ZppFmHx4diyXmxt238KFR3N9jzevBRg==
|
||||||
|
dependencies:
|
||||||
|
execa "^1.0.0"
|
||||||
|
|
||||||
word-wrap@^1.2.3, word-wrap@~1.2.3:
|
word-wrap@^1.2.3, word-wrap@~1.2.3:
|
||||||
version "1.2.3"
|
version "1.2.3"
|
||||||
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
|
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
|
||||||
|
@ -19602,7 +19950,7 @@ yargs-parser@^15.0.0:
|
||||||
camelcase "^5.0.0"
|
camelcase "^5.0.0"
|
||||||
decamelize "^1.2.0"
|
decamelize "^1.2.0"
|
||||||
|
|
||||||
yargs-parser@^18.1.3:
|
yargs-parser@^18.1.1, yargs-parser@^18.1.3:
|
||||||
version "18.1.3"
|
version "18.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
|
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
Loading…
Reference in a new issue