From 09d5e5f4893219a6faa2f9185b1f48347e074245 Mon Sep 17 00:00:00 2001 From: sunli Date: Tue, 14 Apr 2020 09:53:17 +0800 Subject: [PATCH] v1.9.0 --- Cargo.toml | 12 +- README.md | 8 +- async-graphql-actix-web/Cargo.toml | 14 +- .../examples/subscription.rs | 143 - async-graphql-actix-web/examples/token.rs | 36 - .../examples/upload-file.rs | 88 - async-graphql-actix-web/src/lib.rs | 212 +- .../src/{session.rs => subscription.rs} | 16 +- async-graphql-derive/Cargo.toml | 2 +- async-graphql-derive/src/object.rs | 2 +- async-graphql-warp/Cargo.toml | 11 + async-graphql-warp/src/lib.rs | 169 + examples/actix-web.rs | 54 - examples/error_extensions.rs | 153 - examples/federation-accounts.rs | 68 - examples/federation-products.rs | 88 - examples/federation-reviews.rs | 131 - examples/federation/index.js | 19 - examples/federation/jest.config.js | 10 - examples/federation/package.json | 17 - examples/federation/yarn.lock | 4680 ----------------- examples/start-feceration.sh | 25 - examples/starwars/mod.rs | 135 - examples/starwars/model.rs | 173 - examples/tide.rs | 47 - src/error.rs | 5 +- src/http/http_request.rs | 110 - src/http/into_query_builder.rs | 89 + src/http/mod.rs | 44 +- .../src/request.rs => src/http/stream_body.rs | 50 +- src/lib.rs | 6 +- src/query.rs | 210 +- src/registry.rs | 10 +- src/schema.rs | 55 +- src/subscription/connection.rs | 4 +- src/subscription/ws_transport.rs | 1 + tests/enum.rs | 2 +- tests/input_object.rs | 2 +- 38 files changed, 518 insertions(+), 6383 deletions(-) delete mode 100644 async-graphql-actix-web/examples/subscription.rs delete mode 100644 async-graphql-actix-web/examples/token.rs delete mode 100644 async-graphql-actix-web/examples/upload-file.rs rename async-graphql-actix-web/src/{session.rs => subscription.rs} (85%) create mode 100644 async-graphql-warp/Cargo.toml create mode 100644 async-graphql-warp/src/lib.rs delete mode 100644 examples/actix-web.rs delete mode 100644 examples/error_extensions.rs delete mode 100644 examples/federation-accounts.rs delete mode 100644 examples/federation-products.rs delete mode 100644 examples/federation-reviews.rs delete mode 100644 examples/federation/index.js delete mode 100644 examples/federation/jest.config.js delete mode 100644 examples/federation/package.json delete mode 100644 examples/federation/yarn.lock delete mode 100755 examples/start-feceration.sh delete mode 100644 examples/starwars/mod.rs delete mode 100644 examples/starwars/model.rs delete mode 100644 examples/tide.rs delete mode 100644 src/http/http_request.rs create mode 100644 src/http/into_query_builder.rs rename async-graphql-actix-web/src/request.rs => src/http/stream_body.rs (54%) diff --git a/Cargo.toml b/Cargo.toml index ab5306dd..b245c494 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "async-graphql" -version = "1.8.1" +version = "1.9.0" authors = ["sunli "] edition = "2018" description = "The GraphQL server library implemented by rust" @@ -18,7 +18,7 @@ default = ["bson", "uuid", "url", "chrono-tz", "validators"] validators = ["regex"] [dependencies] -async-graphql-derive = { path = "async-graphql-derive", version = "1.8.1" } +async-graphql-derive = { path = "async-graphql-derive", version = "1.9.0" } graphql-parser = "=0.2.3" anyhow = "1.0.26" thiserror = "1.0.11" @@ -48,12 +48,12 @@ chrono-tz = { version = "0.5.1", optional = true } [dev-dependencies] async-std = { version = "1.5.0", features = ["attributes"] } -actix-rt = "1.0.0" -tide = "0.6.0" -actix-web = "2.0.0" +serde = "1.0.104" +serde_derive = "1.0.104" [workspace] members = [ "async-graphql-derive", - "async-graphql-actix-web" + "async-graphql-actix-web", + "async-graphql-warp", ] \ No newline at end of file diff --git a/README.md b/README.md index f24313dd..35541573 100644 --- a/README.md +++ b/README.md @@ -31,13 +31,9 @@ It supports all of the GraphQL specifications and is easy to integrate into exis * [Cargo package](https://crates.io/crates/async-graphql) * Minimum supported Rust version: 1.42 or later -## Example +## Examples -```shell script -cargo run --example actix_web -``` - -Open `http://localhost:8000` in browser +https://github.com/sunli829/async-graphql-examples ## Benchmark diff --git a/async-graphql-actix-web/Cargo.toml b/async-graphql-actix-web/Cargo.toml index 0da1e6c7..5e7bcb15 100644 --- a/async-graphql-actix-web/Cargo.toml +++ b/async-graphql-actix-web/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "async-graphql-actix-web" -version = "0.8.1" +version = "1.0.0" authors = ["sunli "] edition = "2018" description = "async-graphql for actix-web" @@ -13,19 +13,11 @@ keywords = ["futures", "async", "graphql"] categories = ["network-programming", "asynchronous"] [dependencies] -async-graphql = { path = "..", version = "1.8.1" } +async-graphql = { path = "..", version = "1.9.0" } actix-web = "2.0.0" -actix-multipart = "0.2.0" actix-web-actors = "2.0.0" actix = "0.9.0" +actix-rt = "1.0.0" futures = "0.3.0" mime = "0.3.16" bytes = "0.5.4" -serde = "1.0.104" -serde_derive = "1.0.104" -serde_json = "1.0.48" -slab = "0.4.2" -actix_derive = "0.5.0" - -[dev-dependencies] -actix-rt = "1.0.0" diff --git a/async-graphql-actix-web/examples/subscription.rs b/async-graphql-actix-web/examples/subscription.rs deleted file mode 100644 index b00e0469..00000000 --- a/async-graphql-actix-web/examples/subscription.rs +++ /dev/null @@ -1,143 +0,0 @@ -use actix::clock::Duration; -use actix_web::{web, App, HttpServer}; -use async_graphql::{Context, FieldResult, Schema, SimpleBroker, ID}; -use futures::lock::Mutex; -use futures::{Stream, StreamExt}; -use slab::Slab; -use std::sync::Arc; - -#[derive(Clone)] -struct Book { - id: ID, - name: String, - author: String, -} - -#[async_graphql::Object] -impl Book { - #[field] - async fn id(&self) -> &str { - &self.id - } - - #[field] - async fn name(&self) -> &str { - &self.name - } - - #[field] - async fn author(&self) -> &str { - &self.author - } -} - -type Storage = Arc>>; - -struct QueryRoot; - -#[async_graphql::Object] -impl QueryRoot { - #[field] - async fn books(&self, ctx: &Context<'_>) -> Vec { - let books = ctx.data::().lock().await; - books.iter().map(|(_, book)| book).cloned().collect() - } -} - -struct MutationRoot; - -#[async_graphql::Object] -impl MutationRoot { - #[field] - async fn create_book(&self, ctx: &Context<'_>, name: String, author: String) -> ID { - let mut books = ctx.data::().lock().await; - let entry = books.vacant_entry(); - let id: ID = entry.key().into(); - let book = Book { - id: id.clone(), - name, - author, - }; - entry.insert(book); - SimpleBroker::publish(BookChanged { - mutation_type: MutationType::Created, - id: id.clone(), - }); - id - } - - #[field] - async fn delete_book(&self, ctx: &Context<'_>, id: ID) -> FieldResult { - let mut books = ctx.data::().lock().await; - let id = id.parse::()?; - if books.contains(id) { - books.remove(id); - SimpleBroker::publish(BookChanged { - mutation_type: MutationType::Deleted, - id: id.into(), - }); - Ok(true) - } else { - Ok(false) - } - } -} - -#[async_graphql::Enum] -enum MutationType { - Created, - Deleted, -} - -#[async_graphql::SimpleObject] -#[derive(Clone)] -struct BookChanged { - #[field] - mutation_type: MutationType, - - #[field] - id: ID, -} - -struct SubscriptionRoot; - -#[async_graphql::Subscription] -impl SubscriptionRoot { - #[field] - async fn interval(&self, n: i32) -> impl Stream { - let mut value = 0; - actix_rt::time::interval(Duration::from_secs(1)).map(move |_| { - value += n; - value - }) - } - - #[field] - async fn books(&self, mutation_type: Option) -> impl Stream { - SimpleBroker::::subscribe().filter(move |event| { - let res = if let Some(mutation_type) = mutation_type { - event.mutation_type == mutation_type - } else { - true - }; - futures::future::ready(res) - }) - } -} - -#[actix_rt::main] -async fn main() -> std::io::Result<()> { - HttpServer::new(move || { - let schema = Schema::build(QueryRoot, MutationRoot, SubscriptionRoot) - .data(Storage::default()) - .finish(); - let handler = async_graphql_actix_web::HandlerBuilder::new(schema) - .enable_ui("http://localhost:8000", Some("ws://localhost:8000")) - .enable_subscription() - .build(); - App::new().service(web::resource("/").to(handler)) - }) - .bind("127.0.0.1:8000")? - .run() - .await -} diff --git a/async-graphql-actix-web/examples/token.rs b/async-graphql-actix-web/examples/token.rs deleted file mode 100644 index b239c316..00000000 --- a/async-graphql-actix-web/examples/token.rs +++ /dev/null @@ -1,36 +0,0 @@ -use actix_web::{web, App, HttpServer}; -use async_graphql::{Context, EmptyMutation, EmptySubscription, Schema}; - -struct MyToken(Option); - -struct QueryRoot; - -#[async_graphql::Object] -impl QueryRoot { - #[field] - async fn current_token<'a>(&self, ctx: &'a Context<'_>) -> Option<&'a str> { - ctx.data::().0.as_deref() - } -} - -#[actix_rt::main] -async fn main() -> std::io::Result<()> { - HttpServer::new(move || { - let schema = Schema::new(QueryRoot, EmptyMutation, EmptySubscription); - let handler = async_graphql_actix_web::HandlerBuilder::new(schema) - .enable_subscription() - .enable_ui("http://localhost:8000", None) - .on_request(|req, builder| { - builder.data(MyToken( - req.headers() - .get("Token") - .and_then(|value| value.to_str().map(ToString::to_string).ok()), - )) - }) - .build(); - App::new().service(web::resource("/").to(handler)) - }) - .bind("127.0.0.1:8000")? - .run() - .await -} diff --git a/async-graphql-actix-web/examples/upload-file.rs b/async-graphql-actix-web/examples/upload-file.rs deleted file mode 100644 index f2913028..00000000 --- a/async-graphql-actix-web/examples/upload-file.rs +++ /dev/null @@ -1,88 +0,0 @@ -use actix_web::{web, App, HttpServer}; -use async_graphql::{Context, EmptySubscription, Schema, Upload, ID}; -use futures::lock::Mutex; -use slab::Slab; - -#[async_graphql::SimpleObject] -#[derive(Clone)] -struct FileInfo { - #[field] - id: ID, - - #[field] - filename: String, - - #[field] - mimetype: Option, - - #[field] - path: String, -} - -type Storage = Mutex>; - -struct QueryRoot; - -#[async_graphql::Object] -impl QueryRoot { - #[field] - async fn uploads(&self, ctx: &Context<'_>) -> Vec { - let storage = ctx.data::().lock().await; - storage.iter().map(|(_, file)| file).cloned().collect() - } -} - -struct MutationRoot; - -#[async_graphql::Object] -impl MutationRoot { - #[field] - async fn single_upload(&self, ctx: &Context<'_>, file: Upload) -> FileInfo { - let mut storage = ctx.data::().lock().await; - println!("files count: {}", storage.len()); - let entry = storage.vacant_entry(); - let info = FileInfo { - id: entry.key().into(), - filename: file.filename, - mimetype: file.content_type, - path: file.path.display().to_string(), - }; - entry.insert(info.clone()); - info - } - - #[field] - async fn multiple_upload(&self, ctx: &Context<'_>, files: Vec) -> Vec { - let mut infos = Vec::new(); - let mut storage = ctx.data::().lock().await; - for file in files { - let entry = storage.vacant_entry(); - let info = FileInfo { - id: entry.key().into(), - filename: file.filename, - mimetype: file.content_type, - path: file.path.display().to_string(), - }; - entry.insert(info.clone()); - infos.push(info) - } - infos - } -} - -#[actix_rt::main] -async fn main() -> std::io::Result<()> { - let schema = Schema::build(QueryRoot, MutationRoot, EmptySubscription) - .data(Storage::default()) - .finish(); - - HttpServer::new(move || { - let handler = async_graphql_actix_web::HandlerBuilder::new(schema.clone()) - .enable_subscription() - .build(); - App::new().service(web::resource("/").to(handler)) - }) - .bind("127.0.0.1:8000")? - .run() - .await -} diff --git a/async-graphql-actix-web/src/lib.rs b/async-graphql-actix-web/src/lib.rs index 5f867818..b7ee00ed 100644 --- a/async-graphql-actix-web/src/lib.rs +++ b/async-graphql-actix-web/src/lib.rs @@ -1,166 +1,60 @@ -mod request; -mod session; +//! Async-graphql integration with Actix-web -use crate::request::RequestWrapper; -use crate::session::WsSession; -use actix_web::http::{header, Method}; -use actix_web::{web, HttpRequest, HttpResponse, Responder}; -use actix_web_actors::ws; -use async_graphql::http::{playground_source, GQLHttpRequest, GQLResponse, IntoQueryBuilder}; -use async_graphql::{ObjectType, QueryBuilder, Schema, SubscriptionType}; -use futures::Future; +#![warn(missing_docs)] + +mod subscription; + +use actix_web::dev::{Payload, PayloadStream}; +use actix_web::{http, web, Error, FromRequest, HttpRequest}; +use async_graphql::http::StreamBody; +use async_graphql::{IntoQueryBuilder, QueryBuilder}; +use futures::channel::mpsc; +use futures::{Future, SinkExt, StreamExt, TryFutureExt}; use std::pin::Pin; -use std::sync::Arc; -type BoxOnRequestFn = Arc< - dyn for<'a> Fn( - &HttpRequest, - QueryBuilder, - ) -> QueryBuilder, ->; +pub use subscription::WSSubscription; -pub struct HandlerBuilder { - schema: Schema, - enable_subscription: bool, - enable_ui: Option<(String, Option)>, - on_request: Option>, -} +/// Extractor for GraphQL request +/// +/// It's a wrapper of `QueryBuilder`, you can use `GQLRequest::into_inner` unwrap it to `QueryBuilder`. +pub struct GQLRequest(QueryBuilder); -impl HandlerBuilder -where - Query: ObjectType + Send + Sync + 'static, - Mutation: ObjectType + Send + Sync + 'static, - Subscription: SubscriptionType + Send + Sync + 'static, -{ - /// Create an HTTP handler builder - pub fn new(schema: Schema) -> Self { - Self { - schema, - enable_subscription: false, - enable_ui: None, - on_request: None, - } - } - - /// Enable GraphQL playground - /// - /// 'endpoint' is the endpoint of the GraphQL Request. - /// 'subscription_endpoint' is the endpoint of the GraphQL Subscription. - pub fn enable_ui(self, endpoint: &str, subscription_endpoint: Option<&str>) -> Self { - Self { - enable_ui: Some(( - endpoint.to_string(), - subscription_endpoint.map(|s| s.to_string()), - )), - ..self - } - } - - /// Enable GraphQL Subscription. - pub fn enable_subscription(self) -> Self { - Self { - enable_subscription: true, - ..self - } - } - - /// When a new request arrives, you can use this closure to append your own data to the `QueryBuilder`. - pub fn on_request< - F: for<'a> Fn( - &HttpRequest, - QueryBuilder, - ) -> QueryBuilder - + 'static, - >( - self, - f: F, - ) -> Self { - Self { - on_request: Some(Arc::new(f)), - ..self - } - } - - /// Create an HTTP handler. - pub fn build( - self, - ) -> impl Fn( - HttpRequest, - web::Payload, - ) -> Pin>>> - + Clone - + 'static { - let schema = self.schema.clone(); - let enable_ui = self.enable_ui; - let enable_subscription = self.enable_subscription; - let on_request = self.on_request; - - move |req: HttpRequest, payload: web::Payload| { - let schema = schema.clone(); - let enable_ui = enable_ui.clone(); - let on_request = on_request.clone(); - - Box::pin(async move { - if req.method() == Method::GET { - if enable_subscription { - if let Some(s) = req.headers().get(header::UPGRADE) { - if let Ok(s) = s.to_str() { - if s.to_ascii_lowercase().contains("websocket") { - return ws::start_with_protocols( - WsSession::new(schema.clone()), - &["graphql-ws"], - &req, - payload, - ); - } - } - } - } - - if let Some((endpoint, subscription_endpoint)) = &enable_ui { - return Ok(HttpResponse::Ok() - .content_type("text/html; charset=utf-8") - .body(playground_source( - endpoint, - subscription_endpoint.as_deref(), - ))); - } - } - - if req.method() == Method::POST { - let content_type = req - .headers() - .get(header::CONTENT_TYPE) - .and_then(|value| value.to_str().ok()) - .map(|s| s.to_string()); - let r = RequestWrapper(content_type, payload); - r.content_type(); - let mut builder = match IntoQueryBuilder::into_query_builder(r, &schema).await { - Ok(builder) => builder, - Err(err) => { - return Ok(web::Json(GQLResponse(Err(err))).respond_to(&req).await?) - } - }; - - let cache_control = builder.cache_control().value(); - if let Some(on_request) = &on_request { - builder = on_request(&req, builder); - } - - let mut resp = web::Json(GQLResponse(builder.execute().await)) - .respond_to(&req) - .await?; - if let Some(cache_control) = cache_control { - resp.headers_mut().insert( - header::CACHE_CONTROL, - header::HeaderValue::from_str(&cache_control).unwrap(), - ); - } - Ok(resp) - } else { - Ok(HttpResponse::MethodNotAllowed().finish()) - } - }) - } +impl GQLRequest { + /// Unwrap it to `QueryBuilder`. + pub fn into_inner(self) -> QueryBuilder { + self.0 + } +} + +impl FromRequest for GQLRequest { + type Error = Error; + type Future = Pin>>>; + type Config = (); + + fn from_request(req: &HttpRequest, payload: &mut Payload) -> Self::Future { + let content_type = req + .headers() + .get(http::header::CONTENT_TYPE) + .and_then(|value| value.to_str().ok()) + .map(|value| value.to_string()); + + let (mut tx, rx) = mpsc::channel(16); + + // Because Payload is !Send, so forward it to mpsc::Sender + let mut payload = web::Payload(payload.take()); + actix_rt::spawn(async move { + while let Some(item) = payload.next().await { + if tx.send(item).await.is_err() { + return; + } + } + }); + + Box::pin( + (content_type, StreamBody::new(rx)) + .into_query_builder() + .map_ok(GQLRequest) + .map_err(actix_web::error::ErrorBadRequest), + ) } } diff --git a/async-graphql-actix-web/src/session.rs b/async-graphql-actix-web/src/subscription.rs similarity index 85% rename from async-graphql-actix-web/src/session.rs rename to async-graphql-actix-web/src/subscription.rs index 3ea88341..a7334f32 100644 --- a/async-graphql-actix-web/src/session.rs +++ b/async-graphql-actix-web/src/subscription.rs @@ -11,21 +11,23 @@ use std::time::{Duration, Instant}; const HEARTBEAT_INTERVAL: Duration = Duration::from_secs(5); const CLIENT_TIMEOUT: Duration = Duration::from_secs(10); -pub struct WsSession { +/// Actor for subscription via websocket +pub struct WSSubscription { schema: Schema, hb: Instant, sink: Option>, } -impl WsSession +impl WSSubscription where Query: ObjectType + Send + Sync + 'static, Mutation: ObjectType + Send + Sync + 'static, Subscription: SubscriptionType + Send + Sync + 'static, { - pub fn new(schema: Schema) -> Self { + /// Create an actor for subscription connection via websocket. + pub fn new(schema: &Schema) -> Self { Self { - schema, + schema: schema.clone(), hb: Instant::now(), sink: None, } @@ -41,7 +43,7 @@ where } } -impl Actor for WsSession +impl Actor for WSSubscription where Query: ObjectType + Sync + Send + 'static, Mutation: ObjectType + Sync + Send + 'static, @@ -59,7 +61,7 @@ where } impl StreamHandler> - for WsSession + for WSSubscription where Query: ObjectType + Sync + Send + 'static, Mutation: ObjectType + Sync + Send + 'static, @@ -99,7 +101,7 @@ where } impl StreamHandler - for WsSession + for WSSubscription where Query: ObjectType + Send + Sync + 'static, Mutation: ObjectType + Send + Sync + 'static, diff --git a/async-graphql-derive/Cargo.toml b/async-graphql-derive/Cargo.toml index 26d1446c..41ef2c5f 100644 --- a/async-graphql-derive/Cargo.toml +++ b/async-graphql-derive/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "async-graphql-derive" -version = "1.8.1" +version = "1.9.0" authors = ["sunli "] edition = "2018" description = "Macros for async-graphql" diff --git a/async-graphql-derive/src/object.rs b/async-graphql-derive/src/object.rs index e73b850e..ca7c617f 100644 --- a/async-graphql-derive/src/object.rs +++ b/async-graphql-derive/src/object.rs @@ -427,7 +427,7 @@ pub fn generate(object_args: &args::Object, item_impl: &mut ItemImpl) -> Result< }.into_error(field.position)) } - async fn find_entity(&self, ctx: &#crate_name::Context<'_>, pos: #crate_name::Pos, params: &#crate_name::Value) -> #crate_name::Result { + async fn find_entity(&self, ctx: &#crate_name::Context<'_>, pos: #crate_name::Pos, params: &#crate_name::Value) -> #crate_name::Result<#crate_name::serde_json::Value> { let params = match params { #crate_name::Value::Object(params) => params, _ => return Err(#crate_name::QueryError::EntityNotFound.into_error(pos)), diff --git a/async-graphql-warp/Cargo.toml b/async-graphql-warp/Cargo.toml new file mode 100644 index 00000000..6611bd2c --- /dev/null +++ b/async-graphql-warp/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "async-graphql-warp" +version = "1.0.0" +authors = ["sunli "] +edition = "2018" + +[dependencies] +async-graphql = { path = "..", version = "1.9.0" } +warp = "0.2.2" +futures = "0.3.0" +bytes = "0.5.4" diff --git a/async-graphql-warp/src/lib.rs b/async-graphql-warp/src/lib.rs new file mode 100644 index 00000000..2255f70e --- /dev/null +++ b/async-graphql-warp/src/lib.rs @@ -0,0 +1,169 @@ +//! Async-graphql integration with Wrap + +#![warn(missing_docs)] +#![allow(clippy::type_complexity)] + +use async_graphql::http::StreamBody; +use async_graphql::{ + IntoQueryBuilder, ObjectType, QueryBuilder, Schema, SubscriptionType, WebSocketTransport, +}; +use bytes::Bytes; +use futures::select; +use futures::{SinkExt, StreamExt}; +use warp::filters::ws::Message; +use warp::filters::BoxedFilter; +use warp::reject::Reject; +use warp::{Filter, Rejection, Reply}; + +/// Bad request error +/// +/// It's a wrapper of `async_graphql::ParseRequestError`. +pub struct BadRequest(pub async_graphql::ParseRequestError); + +impl std::fmt::Debug for BadRequest { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "{}", self.0) + } +} + +impl Reject for BadRequest {} + +/// GraphQL request filter +/// +/// It outputs a tuple containing the `Schema` and `QuertBuilder`. +/// +/// # Examples +/// +/// ```no_run +/// +/// use async_graphql::*; +/// use warp::Filter; +/// use std::convert::Infallible; +/// +/// struct QueryRoot; +/// +/// #[Object] +/// impl QueryRoot { +/// #[field] +/// async fn value(&self, ctx: &Context<'_>) -> i32 { +/// unimplemented!() +/// } +/// } +/// +/// let schema = Schema::new(QueryRoot, EmptyMutation, EmptySubscription); +/// let filter = async_graphql_warp::graphql(schema).and_then(|schema, builder| async move { +/// let resp = builder.execute(&schema).await; +/// Ok::<_, Infallible>(warp::reply::json(&GQLResponse(resp)).into_response()) +/// }); +/// warp::serve(filter).run(([0, 0, 0, 0], 8000)).await; +/// ``` +pub fn graphql( + schema: Schema, +) -> BoxedFilter<((Schema, QueryBuilder),)> +where + Query: ObjectType + Send + Sync + 'static, + Mutation: ObjectType + Send + Sync + 'static, + Subscription: SubscriptionType + Send + Sync + 'static, +{ + warp::any() + .and(warp::post()) + .and(warp::header::optional::("content-type")) + .and(warp::body::stream()) + .and(warp::any().map(move || schema.clone())) + .and_then(|content_type, body, schema| async move { + let builder = (content_type, StreamBody::new(body)) + .into_query_builder() + .await + .map_err(|err| warp::reject::custom(BadRequest(err)))?; + Ok::<_, Rejection>((schema, builder)) + }) + .boxed() +} + +/// GraphQL subscription filter +/// +/// # Examples +/// +/// ```no_run +/// use async_graphql::*; +/// use warp::Filter; +/// use futures::{Stream, StreamExt}; +/// use tokio::time::Duration; +/// +/// struct QueryRoot; +/// +/// #[Object] +/// impl QueryRoot {} +/// +/// struct SubscriptionRoot; +/// +/// #[Subscription] +/// impl SubscriptionRoot { +/// #[field] +/// async fn tick(&self) -> impl Stream { +/// tokio::time::interval(Duration::from_secs(1)).map(|n| format!("{}", n.elapsed().as_secs_f32())) +/// } +/// } +/// +/// let schema = Schema::new(QueryRoot, EmptyMutation, SubscriptionRoot); +/// let filter = async_graphql_warp::graphql_subscription(schema); +/// warp::serve(filter).run(([0, 0, 0, 0], 8000)).await; +/// ``` +pub fn graphql_subscription( + schema: Schema, +) -> BoxedFilter<(impl Reply,)> +where + Query: ObjectType + Sync + Send + 'static, + Mutation: ObjectType + Sync + Send + 'static, + Subscription: SubscriptionType + Send + Sync + 'static, +{ + warp::any() + .and(warp::ws()) + .and(warp::any().map(move || schema.clone())) + .map( + |ws: warp::ws::Ws, schema: Schema| { + ws.on_upgrade(move |websocket| { + let (mut tx, rx) = websocket.split(); + let (mut stx, srx) = + schema.subscription_connection(WebSocketTransport::default()); + + let mut rx = rx.fuse(); + let mut srx = srx.fuse(); + + async move { + loop { + select! { + bytes = srx.next() => { + if let Some(bytes) = bytes { + if tx + .send(Message::text(unsafe { + String::from_utf8_unchecked(bytes.to_vec()) + })) + .await + .is_err() + { + return; + } + } else { + return; + } + } + msg = rx.next() => { + if let Some(Ok(msg)) = msg { + if msg.is_text() { + if stx.send(Bytes::copy_from_slice(msg.as_bytes())).await.is_err() { + return; + } + } + } + } + } + } + } + }) + }, + ).map(|reply| { + warp::reply::with_header(reply, "Sec-WebSocket-Protocol", "graphql-ws") + }) + .boxed() +} diff --git a/examples/actix-web.rs b/examples/actix-web.rs deleted file mode 100644 index 7b6cde51..00000000 --- a/examples/actix-web.rs +++ /dev/null @@ -1,54 +0,0 @@ -mod starwars; - -use actix_web::{guard, web, App, HttpResponse, HttpServer}; -use async_graphql::http::{ - graphiql_source, playground_source, GQLRequest, GQLResponse, IntoQueryBuilder, -}; -use async_graphql::{EmptyMutation, EmptySubscription, Schema}; -use futures::TryFutureExt; - -type StarWarsSchema = Schema; - -async fn index(s: web::Data, req: web::Json) -> web::Json { - web::Json(GQLResponse( - req.into_inner() - .into_query_builder(&s) - .and_then(|builder| builder.execute()) - .await, - )) -} - -async fn gql_playgound() -> HttpResponse { - HttpResponse::Ok() - .content_type("text/html; charset=utf-8") - .body(playground_source("/", None)) -} - -async fn gql_graphiql() -> HttpResponse { - HttpResponse::Ok() - .content_type("text/html; charset=utf-8") - .body(graphiql_source("/")) -} - -#[actix_rt::main] -async fn main() -> std::io::Result<()> { - HttpServer::new(move || { - App::new() - .data( - Schema::build(starwars::QueryRoot, EmptyMutation, EmptySubscription) - .data(starwars::StarWars::new()) - .extension(|| async_graphql::extensions::ApolloTracing::default()) - .finish(), - ) - .service(web::resource("/").guard(guard::Post()).to(index)) - .service(web::resource("/").guard(guard::Get()).to(gql_playgound)) - .service( - web::resource("/graphiql") - .guard(guard::Get()) - .to(gql_graphiql), - ) - }) - .bind("127.0.0.1:8000")? - .run() - .await -} diff --git a/examples/error_extensions.rs b/examples/error_extensions.rs deleted file mode 100644 index 859c670e..00000000 --- a/examples/error_extensions.rs +++ /dev/null @@ -1,153 +0,0 @@ -#[macro_use] -extern crate thiserror; - -use actix_rt; -use actix_web::{guard, web, App, HttpResponse, HttpServer}; -use async_graphql::http::{ - graphiql_source, playground_source, GQLRequest, GQLResponse, IntoQueryBuilder, -}; -use async_graphql::ErrorExtensions; -use async_graphql::*; -use futures::TryFutureExt; -use serde_json::json; - -#[derive(Debug, Error)] -pub enum MyError { - #[error("Could not find resource")] - NotFound, - - #[error("ServerError")] - ServerError(String), - - #[error("No Extensions")] - ErrorWithoutExtensions, -} - -impl ErrorExtensions for MyError { - // lets define our base extensions - fn extend(&self) -> FieldError { - let extensions = match self { - MyError::NotFound => json!({"code": "NOT_FOUND"}), - MyError::ServerError(reason) => json!({ "reason": reason }), - MyError::ErrorWithoutExtensions => { - json!("This will be ignored since it does not represent an object.") - } - }; - - FieldError(format!("{}", self), Some(extensions)) - } -} - -struct QueryRoot; - -#[Object] -impl QueryRoot { - // It works on foreign types without extensions as before - #[field] - async fn parse_without_extensions(&self) -> FieldResult { - Ok("234a".parse()?) - } - - // Foreign types can be extended - #[field] - async fn parse_with_extensions(&self) -> FieldResult { - Ok("234a" - .parse() - .map_err(|e: std::num::ParseIntError| e.extend_with(|_| json!({"code": 404})))?) - } - - // THIS does unfortunately NOT work because ErrorExtensions is implemented for &E and not E. - // Which is necessary for the overwrite by the user. - - //#[field] - // async fn parse_with_extensions_result(&self) -> FieldResult { - // Ok("234a".parse().extend_err(|_| json!({"code": 404}))?) - // } - - // Using our own types we can implement some base extensions - #[field] - async fn extend(&self) -> FieldResult { - Err(MyError::NotFound.extend())? - } - - // Or on the result - #[field] - async fn extend_result(&self) -> FieldResult { - Err(MyError::NotFound).extend()? - } - - // Base extensions can be further extended - #[field] - async fn more_extensions(&self) -> FieldResult { - // resolves to extensions: { "code": "NOT_FOUND", "reason": "my reason" } - Err(MyError::NotFound.extend_with(|_e| json!({"reason": "my reason"})))? - } - - // works with results as well - #[field] - async fn more_extensions_on_result(&self) -> FieldResult { - // resolves to extensions: { "code": "NOT_FOUND", "reason": "my reason" } - Err(MyError::NotFound).extend_err(|_e| json!({"reason": "my reason"}))? - } - - // extend_with is chainable - #[field] - async fn chainable_extensions(&self) -> FieldResult { - let err = MyError::NotFound - .extend_with(|_| json!({"ext1": 1})) - .extend_with(|_| json!({"ext2": 2})) - .extend_with(|_| json!({"ext3": 3})); - Err(err)? - } - - // extend_with overwrites keys which are already present - #[field] - async fn overwrite(&self) -> FieldResult { - Err(MyError::NotFound.extend_with(|_| json!({"code": "overwritten"})))? - } -} - -async fn index( - s: web::Data>, - req: web::Json, -) -> web::Json { - web::Json(GQLResponse( - req.into_inner() - .into_query_builder(&s) - .and_then(|builder| builder.execute()) - .await, - )) -} - -async fn gql_playgound() -> HttpResponse { - HttpResponse::Ok() - .content_type("text/html; charset=utf-8") - .body(playground_source("/", None)) -} - -async fn gql_graphiql() -> HttpResponse { - HttpResponse::Ok() - .content_type("text/html; charset=utf-8") - .body(graphiql_source("/")) -} - -#[actix_rt::main] -async fn main() -> std::io::Result<()> { - println!("Playground: http://localhost:8000"); - println!("Graphiql: http://localhost:8000/graphiql"); - - HttpServer::new(move || { - App::new() - .data(Schema::new(QueryRoot, EmptyMutation, EmptySubscription)) - .service(web::resource("/").guard(guard::Post()).to(index)) - .service(web::resource("/").guard(guard::Get()).to(gql_playgound)) - .service( - web::resource("/graphiql") - .guard(guard::Get()) - .to(gql_graphiql), - ) - }) - .bind("127.0.0.1:8000")? - .run() - .await -} diff --git a/examples/federation-accounts.rs b/examples/federation-accounts.rs deleted file mode 100644 index 7f1b997d..00000000 --- a/examples/federation-accounts.rs +++ /dev/null @@ -1,68 +0,0 @@ -use actix_web::{guard, web, App, HttpResponse, HttpServer}; -use async_graphql::http::{playground_source, GQLRequest, GQLResponse, IntoQueryBuilder}; -use async_graphql::{EmptyMutation, EmptySubscription, Object, Schema, SimpleObject, ID}; -use futures::TryFutureExt; - -type MySchema = Schema; - -#[SimpleObject] -struct User { - #[field] - id: ID, - - #[field] - username: String, -} - -struct Query; - -#[Object(extends)] -impl Query { - #[field] - async fn me(&self) -> User { - User { - id: "1234".into(), - username: "Me".to_string(), - } - } - - #[entity] - async fn find_user_by_id(&self, id: ID) -> User { - let username = if id == "1234" { - "Me".to_string() - } else { - format!("User {}", id) - }; - User { id, username } - } -} - -async fn index(s: web::Data, req: web::Json) -> web::Json { - web::Json(GQLResponse( - req.into_inner() - .into_query_builder(&s) - .and_then(|builder| builder.execute()) - .await, - )) -} - -async fn gql_playgound() -> HttpResponse { - HttpResponse::Ok() - .content_type("text/html; charset=utf-8") - .body(playground_source("/", None)) -} - -#[actix_rt::main] -async fn main() -> std::io::Result<()> { - let schema = Schema::new(Query, EmptyMutation, EmptySubscription); - - HttpServer::new(move || { - App::new() - .data(schema.clone()) - .service(web::resource("/").guard(guard::Post()).to(index)) - .service(web::resource("/").guard(guard::Get()).to(gql_playgound)) - }) - .bind("127.0.0.1:4001")? - .run() - .await -} diff --git a/examples/federation-products.rs b/examples/federation-products.rs deleted file mode 100644 index c423e6da..00000000 --- a/examples/federation-products.rs +++ /dev/null @@ -1,88 +0,0 @@ -use actix_web::{guard, web, App, HttpResponse, HttpServer}; -use async_graphql::http::{playground_source, GQLRequest, GQLResponse, IntoQueryBuilder}; -use async_graphql::{Context, EmptyMutation, EmptySubscription, Object, Schema, SimpleObject}; -use futures::TryFutureExt; - -type MySchema = Schema; - -#[SimpleObject] -struct Product { - #[field] - upc: String, - - #[field] - name: String, - - #[field] - price: i32, -} - -struct Query; - -#[Object(extends)] -impl Query { - #[field] - async fn top_products<'a>(&self, ctx: &'a Context<'_>) -> &'a Vec { - ctx.data::>() - } - - #[entity] - async fn find_product_by_upc<'a>( - &self, - ctx: &'a Context<'_>, - upc: String, - ) -> Option<&'a Product> { - let hats = ctx.data::>(); - hats.iter().find(|product| product.upc == upc) - } -} - -async fn index(s: web::Data, req: web::Json) -> web::Json { - web::Json(GQLResponse( - req.into_inner() - .into_query_builder(&s) - .and_then(|builder| builder.execute()) - .await, - )) -} - -async fn gql_playgound() -> HttpResponse { - HttpResponse::Ok() - .content_type("text/html; charset=utf-8") - .body(playground_source("/", None)) -} - -#[actix_rt::main] -async fn main() -> std::io::Result<()> { - let hats = vec![ - Product { - upc: "top-1".to_string(), - name: "Trilby".to_string(), - price: 11, - }, - Product { - upc: "top-2".to_string(), - name: "Fedora".to_string(), - price: 22, - }, - Product { - upc: "top-3".to_string(), - name: "Boater".to_string(), - price: 33, - }, - ]; - - let schema = Schema::build(Query, EmptyMutation, EmptySubscription) - .data(hats) - .finish(); - - HttpServer::new(move || { - App::new() - .data(schema.clone()) - .service(web::resource("/").guard(guard::Post()).to(index)) - .service(web::resource("/").guard(guard::Get()).to(gql_playgound)) - }) - .bind("127.0.0.1:4002")? - .run() - .await -} diff --git a/examples/federation-reviews.rs b/examples/federation-reviews.rs deleted file mode 100644 index af404e1d..00000000 --- a/examples/federation-reviews.rs +++ /dev/null @@ -1,131 +0,0 @@ -use actix_web::{guard, web, App, HttpResponse, HttpServer}; -use async_graphql::http::{playground_source, GQLRequest, GQLResponse, IntoQueryBuilder}; -use async_graphql::{Context, EmptyMutation, EmptySubscription, Object, Schema, SimpleObject, ID}; -use futures::TryFutureExt; - -type MySchema = Schema; - -struct User { - id: ID, -} - -#[Object(extends)] -impl User { - #[field(external)] - async fn id(&self) -> &ID { - &self.id - } - - #[field] - async fn reviews<'a>(&self, ctx: &'a Context<'_>) -> Vec<&'a Review> { - let reviews = ctx.data::>(); - reviews - .iter() - .filter(|review| review.author.id == self.id) - .collect() - } -} - -struct Product { - upc: String, -} - -#[Object(extends)] -impl Product { - #[field(external)] - async fn upc(&self) -> &String { - &self.upc - } - - #[field] - async fn reviews<'a>(&self, ctx: &'a Context<'_>) -> Vec<&'a Review> { - let reviews = ctx.data::>(); - reviews - .iter() - .filter(|review| review.product.upc == self.upc) - .collect() - } -} - -#[SimpleObject] -struct Review { - #[field] - body: String, - - #[field(provides = "username")] - author: User, - - #[field] - product: Product, -} - -struct Query; - -#[Object] -impl Query { - #[entity] - async fn find_user_by_id<'a>(&self, id: ID) -> User { - User { id } - } - - #[entity] - async fn find_product_by_upc<'a>(&self, upc: String) -> Product { - Product { upc } - } -} - -async fn index(s: web::Data, req: web::Json) -> web::Json { - web::Json(GQLResponse( - req.into_inner() - .into_query_builder(&s) - .and_then(|builder| builder.execute()) - .await, - )) -} - -async fn gql_playgound() -> HttpResponse { - HttpResponse::Ok() - .content_type("text/html; charset=utf-8") - .body(playground_source("/", None)) -} - -#[actix_rt::main] -async fn main() -> std::io::Result<()> { - let reviews = vec![ - Review { - body: "A highly effective form of birth control.".into(), - author: User { id: "1234".into() }, - product: Product { - upc: "top-1".to_string(), - }, - }, - Review { - body: "Fedoras are one of the most fashionable hats around and can look great with a variety of outfits.".into(), - author: User { id: "1234".into() }, - product: Product { - upc: "top-1".to_string(), - }, - }, - Review { - body: "This is the last straw. Hat you will wear. 11/10".into(), - author: User { id: "7777".into() }, - product: Product { - upc: "top-1".to_string(), - }, - }, - ]; - - let schema = Schema::build(Query, EmptyMutation, EmptySubscription) - .data(reviews) - .finish(); - - HttpServer::new(move || { - App::new() - .data(schema.clone()) - .service(web::resource("/").guard(guard::Post()).to(index)) - .service(web::resource("/").guard(guard::Get()).to(gql_playgound)) - }) - .bind("127.0.0.1:4003")? - .run() - .await -} diff --git a/examples/federation/index.js b/examples/federation/index.js deleted file mode 100644 index 103fd199..00000000 --- a/examples/federation/index.js +++ /dev/null @@ -1,19 +0,0 @@ -const { ApolloServer } = require('apollo-server'); -const { ApolloGateway } = require("@apollo/gateway"); - -const gateway = new ApolloGateway({ - serviceList: [ - { name: 'accounts', url: 'http://localhost:4001' }, - { name: 'products', url: 'http://localhost:4002' }, - { name: 'reviews', url: 'http://localhost:4003' } - ], -}); - -const server = new ApolloServer({ - gateway, - subscriptions: false, -}); - -server.listen().then(({ url }) => { - console.log(`🚀 Server ready at ${url}`); -}); diff --git a/examples/federation/jest.config.js b/examples/federation/jest.config.js deleted file mode 100644 index d7e4e6eb..00000000 --- a/examples/federation/jest.config.js +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = { - testEnvironment: "node", - testMatch: ["/**/*-test.js"], - testPathIgnorePatterns: ["/node_modules/"], - moduleFileExtensions: ["js"], - modulePaths: ["/node_modules"], - // transform: { - // '^.+\\.jsx?$': 'babel-jest', - // }, -}; diff --git a/examples/federation/package.json b/examples/federation/package.json deleted file mode 100644 index f483c070..00000000 --- a/examples/federation/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "gateway", - "version": "1.0.0", - "main": "index.js", - "dependencies": { - "@apollo/gateway": "^0.11.7", - "apollo-server": "^2.9.16", - "graphql": "^14.6.0" - }, - "devDependencies": { - "apollo-cache-inmemory": "^1.6.5", - "apollo-client": "^2.6.8", - "apollo-link-http": "^1.5.16", - "jest": "^25.1.0", - "node-fetch": "^2.6.0" - } -} diff --git a/examples/federation/yarn.lock b/examples/federation/yarn.lock deleted file mode 100644 index afb3447a..00000000 --- a/examples/federation/yarn.lock +++ /dev/null @@ -1,4680 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@apollo/federation@^0.11.3": - version "0.11.3" - resolved "https://registry.npm.taobao.org/@apollo/federation/download/@apollo/federation-0.11.3.tgz?cache=0&sync_timestamp=1586285544463&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40apollo%2Ffederation%2Fdownload%2F%40apollo%2Ffederation-0.11.3.tgz#82252205c7f90fc69034f2a0073efa71aad52d0e" - integrity sha1-giUiBcf5D8aQNPKgBz76carVLQ4= - dependencies: - apollo-graphql "^0.3.7" - apollo-server-env "^2.4.3" - core-js "^3.4.0" - lodash.xorby "^4.7.0" - -"@apollo/gateway@^0.11.7": - version "0.11.7" - resolved "https://registry.npm.taobao.org/@apollo/gateway/download/@apollo/gateway-0.11.7.tgz#d04b94ef15828209ccd01aa1706e88e56d54ea99" - integrity sha1-0EuU7xWCggnM0BqhcG6I5W1U6pk= - dependencies: - "@apollo/federation" "^0.11.3" - "@types/node-fetch" "2.5.4" - apollo-engine-reporting-protobuf "^0.4.4" - apollo-env "^0.6.1" - apollo-graphql "^0.3.7" - apollo-server-caching "^0.5.1" - apollo-server-core "^2.9.16" - apollo-server-env "^2.4.3" - apollo-server-types "^0.2.10" - graphql-extensions "^0.10.10" - loglevel "^1.6.1" - loglevel-debug "^0.0.1" - pretty-format "^24.7.0" - -"@apollo/protobufjs@^1.0.3": - version "1.0.3" - resolved "https://registry.npm.taobao.org/@apollo/protobufjs/download/@apollo/protobufjs-1.0.3.tgz#02c655aedd4ba7c7f64cbc3d2b1dd9a000a391ba" - integrity sha1-AsZVrt1Lp8f2TLw9Kx3ZoACjkbo= - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/long" "^4.0.0" - "@types/node" "^10.1.0" - long "^4.0.0" - -"@apollographql/apollo-tools@^0.4.3": - version "0.4.5" - resolved "https://registry.npm.taobao.org/@apollographql/apollo-tools/download/@apollographql/apollo-tools-0.4.5.tgz#e9f5b5c1395e837fd63bae6abc42671514ed4627" - integrity sha1-6fW1wTleg3/WO65qvEJnFRTtRic= - dependencies: - apollo-env "^0.6.2" - -"@apollographql/graphql-playground-html@1.6.24": - version "1.6.24" - resolved "https://registry.npm.taobao.org/@apollographql/graphql-playground-html/download/@apollographql/graphql-playground-html-1.6.24.tgz#3ce939cb127fb8aaa3ffc1e90dff9b8af9f2e3dc" - integrity sha1-POk5yxJ/uKqj/8HpDf+bivny49w= - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": - version "7.8.3" - resolved "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" - integrity sha1-M+JZA9dIEYFTThLsCiXxa2/PQZ4= - dependencies: - "@babel/highlight" "^7.8.3" - -"@babel/core@^7.1.0", "@babel/core@^7.7.5": - version "7.9.0" - resolved "https://registry.npm.taobao.org/@babel/core/download/@babel/core-7.9.0.tgz?cache=0&sync_timestamp=1584718830004&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fcore%2Fdownload%2F%40babel%2Fcore-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" - integrity sha1-rJd7U4t34TL/cG87ik260JwDxW4= - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.0" - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helpers" "^7.9.0" - "@babel/parser" "^7.9.0" - "@babel/template" "^7.8.6" - "@babel/traverse" "^7.9.0" - "@babel/types" "^7.9.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.13" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/generator@^7.9.0", "@babel/generator@^7.9.5": - version "7.9.5" - resolved "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.9.5.tgz#27f0917741acc41e6eaaced6d68f96c3fa9afaf9" - integrity sha1-J/CRd0GsxB5uqs7W1o+Ww/qa+vk= - dependencies: - "@babel/types" "^7.9.5" - jsesc "^2.5.1" - lodash "^4.17.13" - source-map "^0.5.0" - -"@babel/helper-function-name@^7.9.5": - version "7.9.5" - resolved "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.9.5.tgz#2b53820d35275120e1874a82e5aabe1376920a5c" - integrity sha1-K1OCDTUnUSDhh0qC5aq+E3aSClw= - dependencies: - "@babel/helper-get-function-arity" "^7.8.3" - "@babel/template" "^7.8.3" - "@babel/types" "^7.9.5" - -"@babel/helper-get-function-arity@^7.8.3": - version "7.8.3" - resolved "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" - integrity sha1-uJS5R70AQ4HOY+odufCFR+kgq9U= - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-member-expression-to-functions@^7.8.3": - version "7.8.3" - resolved "https://registry.npm.taobao.org/@babel/helper-member-expression-to-functions/download/@babel/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" - integrity sha1-ZZtxBJjqbB2ZB+DHPyBu7n2twkw= - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-module-imports@^7.8.3": - version "7.8.3" - resolved "https://registry.npm.taobao.org/@babel/helper-module-imports/download/@babel/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" - integrity sha1-f+OVibOcAWMxtrjD9EHo8LFBlJg= - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-module-transforms@^7.9.0": - version "7.9.0" - resolved "https://registry.npm.taobao.org/@babel/helper-module-transforms/download/@babel/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" - integrity sha1-Q7NN/hWWGRhwfSRzJ0MTiOn+luU= - dependencies: - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.6" - "@babel/helper-simple-access" "^7.8.3" - "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/template" "^7.8.6" - "@babel/types" "^7.9.0" - lodash "^4.17.13" - -"@babel/helper-optimise-call-expression@^7.8.3": - version "7.8.3" - resolved "https://registry.npm.taobao.org/@babel/helper-optimise-call-expression/download/@babel/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" - integrity sha1-ftBxgT0Jx1KY708giVYAa2ER7Lk= - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.8.3" - resolved "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.8.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" - integrity sha1-nqKTvhm6vA9S/4yoizTDYRsghnA= - -"@babel/helper-replace-supers@^7.8.6": - version "7.8.6" - resolved "https://registry.npm.taobao.org/@babel/helper-replace-supers/download/@babel/helper-replace-supers-7.8.6.tgz?cache=0&sync_timestamp=1582806192406&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-replace-supers%2Fdownload%2F%40babel%2Fhelper-replace-supers-7.8.6.tgz#5ada744fd5ad73203bf1d67459a27dcba67effc8" - integrity sha1-Wtp0T9WtcyA78dZ0WaJ9y6Z+/8g= - dependencies: - "@babel/helper-member-expression-to-functions" "^7.8.3" - "@babel/helper-optimise-call-expression" "^7.8.3" - "@babel/traverse" "^7.8.6" - "@babel/types" "^7.8.6" - -"@babel/helper-simple-access@^7.8.3": - version "7.8.3" - resolved "https://registry.npm.taobao.org/@babel/helper-simple-access/download/@babel/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" - integrity sha1-f4EJkotNq0ZUB2mGr1dSMd62Oa4= - dependencies: - "@babel/template" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helper-split-export-declaration@^7.8.3": - version "7.8.3" - resolved "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" - integrity sha1-ManzAHD5E2inGCzwX4MXgQZfx6k= - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-validator-identifier@^7.9.0", "@babel/helper-validator-identifier@^7.9.5": - version "7.9.5" - resolved "https://registry.npm.taobao.org/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" - integrity sha1-kJd6jm+/a0MafcMXUu7iM78FLYA= - -"@babel/helpers@^7.9.0": - version "7.9.2" - resolved "https://registry.npm.taobao.org/@babel/helpers/download/@babel/helpers-7.9.2.tgz#b42a81a811f1e7313b88cba8adc66b3d9ae6c09f" - integrity sha1-tCqBqBHx5zE7iMuorcZrPZrmwJ8= - dependencies: - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.9.0" - "@babel/types" "^7.9.0" - -"@babel/highlight@^7.8.3": - version "7.9.0" - resolved "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" - integrity sha1-TptFzLgreWBycbKXmtgse2gWMHk= - dependencies: - "@babel/helper-validator-identifier" "^7.9.0" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.7.5", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0": - version "7.9.4" - resolved "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.9.4.tgz#68a35e6b0319bbc014465be43828300113f2f2e8" - integrity sha1-aKNeawMZu8AURlvkOCgwARPy8ug= - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-async-generators/download/@babel/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha1-qYP7Gusuw/btBCohD2QOkOeG/g0= - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-bigint/download/@babel/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha1-TJpvZp9dDN8bkKFnHpoUa+UwDOo= - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.8.3": - version "7.8.3" - resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-class-properties/download/@babel/plugin-syntax-class-properties-7.8.3.tgz#6cb933a8872c8d359bfde69bbeaae5162fd1e8f7" - integrity sha1-bLkzqIcsjTWb/eabvqrlFi/R6Pc= - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-json-strings/download/@babel/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha1-AcohtmjNghjJ5kDLbdiMVBKyyWo= - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.8.3" - resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-logical-assignment-operators/download/@babel/plugin-syntax-logical-assignment-operators-7.8.3.tgz#3995d7d7ffff432f6ddc742b47e730c054599897" - integrity sha1-OZXX1///Qy9t3HQrR+cwwFRZmJc= - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-nullish-coalescing-operator/download/@babel/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha1-Fn7XA2iIYIH3S1w2xlqIwDtm0ak= - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.8.3" - resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-numeric-separator/download/@babel/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f" - integrity sha1-Dj+2Pgm+obEelkZyccgwgAfnxB8= - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-object-rest-spread/download/@babel/plugin-syntax-object-rest-spread-7.8.3.tgz?cache=0&sync_timestamp=1578950070697&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-syntax-object-rest-spread%2Fdownload%2F%40babel%2Fplugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha1-YOIl7cvZimQDMqLnLdPmbxr1WHE= - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-optional-catch-binding/download/@babel/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha1-YRGiZbz7Ag6579D9/X0mQCue1sE= - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-optional-chaining/download/@babel/plugin-syntax-optional-chaining-7.8.3.tgz?cache=0&sync_timestamp=1578952519472&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-syntax-optional-chaining%2Fdownload%2F%40babel%2Fplugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha1-T2nCq5UWfgGAzVM2YT+MV4j31Io= - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/template@^7.7.4", "@babel/template@^7.8.3", "@babel/template@^7.8.6": - version "7.8.6" - resolved "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.8.6.tgz?cache=0&sync_timestamp=1582806154512&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftemplate%2Fdownload%2F%40babel%2Ftemplate-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" - integrity sha1-hrIq8V+CjfsIZHT5ZNzD45xDzis= - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/parser" "^7.8.6" - "@babel/types" "^7.8.6" - -"@babel/traverse@^7.1.0", "@babel/traverse@^7.7.4", "@babel/traverse@^7.8.6", "@babel/traverse@^7.9.0": - version "7.9.5" - resolved "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.9.5.tgz#6e7c56b44e2ac7011a948c21e283ddd9d9db97a2" - integrity sha1-bnxWtE4qxwEalIwh4oPd2dnbl6I= - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.5" - "@babel/helper-function-name" "^7.9.5" - "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/parser" "^7.9.0" - "@babel/types" "^7.9.5" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.13" - -"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0", "@babel/types@^7.9.5": - version "7.9.5" - resolved "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.9.5.tgz#89231f82915a8a566a703b3b20133f73da6b9444" - integrity sha1-iSMfgpFailZqcDs7IBM/c9prlEQ= - dependencies: - "@babel/helper-validator-identifier" "^7.9.5" - lodash "^4.17.13" - to-fast-properties "^2.0.0" - -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.npm.taobao.org/@bcoe/v8-coverage/download/@bcoe/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha1-daLotRy3WKdVPWgEpZMteqznXDk= - -"@cnakazawa/watch@^1.0.3": - version "1.0.4" - resolved "https://registry.npm.taobao.org/@cnakazawa/watch/download/@cnakazawa/watch-1.0.4.tgz?cache=0&sync_timestamp=1581464245811&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40cnakazawa%2Fwatch%2Fdownload%2F%40cnakazawa%2Fwatch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" - integrity sha1-+GSuhQBND8q29QvpFBxNo2jRZWo= - dependencies: - exec-sh "^0.3.2" - minimist "^1.2.0" - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.0.0" - resolved "https://registry.npm.taobao.org/@istanbuljs/load-nyc-config/download/@istanbuljs/load-nyc-config-1.0.0.tgz#10602de5570baea82f8afbfa2630b24e7a8cfe5b" - integrity sha1-EGAt5VcLrqgvivv6JjCyTnqM/ls= - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" - -"@istanbuljs/schema@^0.1.2": - version "0.1.2" - resolved "https://registry.npm.taobao.org/@istanbuljs/schema/download/@istanbuljs/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" - integrity sha1-JlIL8Jq+SlZEzVQU43ElqJVCQd0= - -"@jest/console@^25.3.0": - version "25.3.0" - resolved "https://registry.npm.taobao.org/@jest/console/download/@jest/console-25.3.0.tgz?cache=0&sync_timestamp=1586352146663&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40jest%2Fconsole%2Fdownload%2F%40jest%2Fconsole-25.3.0.tgz#33b56b81238427bf3ebe3f7b3378d2f79cdbd409" - integrity sha1-M7VrgSOEJ78+vj97M3jS95zb1Ak= - dependencies: - "@jest/source-map" "^25.2.6" - chalk "^3.0.0" - jest-util "^25.3.0" - slash "^3.0.0" - -"@jest/core@^25.3.0": - version "25.3.0" - resolved "https://registry.npm.taobao.org/@jest/core/download/@jest/core-25.3.0.tgz?cache=0&sync_timestamp=1586352155391&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40jest%2Fcore%2Fdownload%2F%40jest%2Fcore-25.3.0.tgz#80f97a7a8b59dde741a24f30871cc26d0197d426" - integrity sha1-gPl6eotZ3edBok8whxzCbQGX1CY= - dependencies: - "@jest/console" "^25.3.0" - "@jest/reporters" "^25.3.0" - "@jest/test-result" "^25.3.0" - "@jest/transform" "^25.3.0" - "@jest/types" "^25.3.0" - ansi-escapes "^4.2.1" - chalk "^3.0.0" - exit "^0.1.2" - graceful-fs "^4.2.3" - jest-changed-files "^25.3.0" - jest-config "^25.3.0" - jest-haste-map "^25.3.0" - jest-message-util "^25.3.0" - jest-regex-util "^25.2.6" - jest-resolve "^25.3.0" - jest-resolve-dependencies "^25.3.0" - jest-runner "^25.3.0" - jest-runtime "^25.3.0" - jest-snapshot "^25.3.0" - jest-util "^25.3.0" - jest-validate "^25.3.0" - jest-watcher "^25.3.0" - micromatch "^4.0.2" - p-each-series "^2.1.0" - realpath-native "^2.0.0" - rimraf "^3.0.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/environment@^25.3.0": - version "25.3.0" - resolved "https://registry.npm.taobao.org/@jest/environment/download/@jest/environment-25.3.0.tgz?cache=0&sync_timestamp=1586352151925&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40jest%2Fenvironment%2Fdownload%2F%40jest%2Fenvironment-25.3.0.tgz#587f28ddb4b0dfe97404d3d4a4c9dbfa0245fb2e" - integrity sha1-WH8o3bSw3+l0BNPUpMnb+gJF+y4= - dependencies: - "@jest/fake-timers" "^25.3.0" - "@jest/types" "^25.3.0" - jest-mock "^25.3.0" - -"@jest/fake-timers@^25.3.0": - version "25.3.0" - resolved "https://registry.npm.taobao.org/@jest/fake-timers/download/@jest/fake-timers-25.3.0.tgz?cache=0&sync_timestamp=1586352148030&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40jest%2Ffake-timers%2Fdownload%2F%40jest%2Ffake-timers-25.3.0.tgz#995aad36d5c8984165ca5db12e740ab8dbf7042a" - integrity sha1-mVqtNtXImEFlyl2xLnQKuNv3BCo= - dependencies: - "@jest/types" "^25.3.0" - jest-message-util "^25.3.0" - jest-mock "^25.3.0" - jest-util "^25.3.0" - lolex "^5.0.0" - -"@jest/reporters@^25.3.0": - version "25.3.0" - resolved "https://registry.npm.taobao.org/@jest/reporters/download/@jest/reporters-25.3.0.tgz?cache=0&sync_timestamp=1586352149965&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40jest%2Freporters%2Fdownload%2F%40jest%2Freporters-25.3.0.tgz#7f39f0e6911561cc5112a1b54656de18faee269b" - integrity sha1-fznw5pEVYcxREqG1RlbeGPruJps= - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^25.3.0" - "@jest/test-result" "^25.3.0" - "@jest/transform" "^25.3.0" - "@jest/types" "^25.3.0" - chalk "^3.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.2" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^4.0.0" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.2" - jest-haste-map "^25.3.0" - jest-resolve "^25.3.0" - jest-util "^25.3.0" - jest-worker "^25.2.6" - slash "^3.0.0" - source-map "^0.6.0" - string-length "^3.1.0" - terminal-link "^2.0.0" - v8-to-istanbul "^4.0.1" - optionalDependencies: - node-notifier "^6.0.0" - -"@jest/source-map@^25.2.6": - version "25.2.6" - resolved "https://registry.npm.taobao.org/@jest/source-map/download/@jest/source-map-25.2.6.tgz#0ef2209514c6d445ebccea1438c55647f22abb4c" - integrity sha1-DvIglRTG1EXrzOoUOMVWR/Iqu0w= - dependencies: - callsites "^3.0.0" - graceful-fs "^4.2.3" - source-map "^0.6.0" - -"@jest/test-result@^25.3.0": - version "25.3.0" - resolved "https://registry.npm.taobao.org/@jest/test-result/download/@jest/test-result-25.3.0.tgz?cache=0&sync_timestamp=1586352149785&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40jest%2Ftest-result%2Fdownload%2F%40jest%2Ftest-result-25.3.0.tgz#137fab5e5c6fed36e5d40735d1eb029325e3bf06" - integrity sha1-E3+rXlxv7Tbl1Ac10esCkyXjvwY= - dependencies: - "@jest/console" "^25.3.0" - "@jest/types" "^25.3.0" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^25.3.0": - version "25.3.0" - resolved "https://registry.npm.taobao.org/@jest/test-sequencer/download/@jest/test-sequencer-25.3.0.tgz#271ad5f2b8f8137d092ccedc87e16a50f8676209" - integrity sha1-JxrV8rj4E30JLM7ch+FqUPhnYgk= - dependencies: - "@jest/test-result" "^25.3.0" - jest-haste-map "^25.3.0" - jest-runner "^25.3.0" - jest-runtime "^25.3.0" - -"@jest/transform@^25.3.0": - version "25.3.0" - resolved "https://registry.npm.taobao.org/@jest/transform/download/@jest/transform-25.3.0.tgz?cache=0&sync_timestamp=1586352148217&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40jest%2Ftransform%2Fdownload%2F%40jest%2Ftransform-25.3.0.tgz#083c5447d5307d9b9494d6968115b647460e71f1" - integrity sha1-CDxUR9UwfZuUlNaWgRW2R0YOcfE= - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^25.3.0" - babel-plugin-istanbul "^6.0.0" - chalk "^3.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.3" - jest-haste-map "^25.3.0" - jest-regex-util "^25.2.6" - jest-util "^25.3.0" - micromatch "^4.0.2" - pirates "^4.0.1" - realpath-native "^2.0.0" - slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" - -"@jest/types@^24.9.0": - version "24.9.0" - resolved "https://registry.npm.taobao.org/@jest/types/download/@jest/types-24.9.0.tgz?cache=0&sync_timestamp=1586352145866&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40jest%2Ftypes%2Fdownload%2F%40jest%2Ftypes-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" - integrity sha1-Y8smy3UA0Gnlo4lEGnxqtekJ/Fk= - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^13.0.0" - -"@jest/types@^25.3.0": - version "25.3.0" - resolved "https://registry.npm.taobao.org/@jest/types/download/@jest/types-25.3.0.tgz?cache=0&sync_timestamp=1586352145866&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40jest%2Ftypes%2Fdownload%2F%40jest%2Ftypes-25.3.0.tgz#88f94b277a1d028fd7117bc1f74451e0fc2131e7" - integrity sha1-iPlLJ3odAo/XEXvB90RR4PwhMec= - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^15.0.0" - chalk "^3.0.0" - -"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": - version "1.1.2" - resolved "https://registry.npm.taobao.org/@protobufjs/aspromise/download/@protobufjs/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" - integrity sha1-m4sMxmPWaafY9vXQiToU00jzD78= - -"@protobufjs/base64@^1.1.2": - version "1.1.2" - resolved "https://registry.npm.taobao.org/@protobufjs/base64/download/@protobufjs/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" - integrity sha1-TIVzDlm5ofHzSQR9vyQpYDS7JzU= - -"@protobufjs/codegen@^2.0.4": - version "2.0.4" - resolved "https://registry.npm.taobao.org/@protobufjs/codegen/download/@protobufjs/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" - integrity sha1-fvN/DQEPsCitGtWXIuUG2SYoFcs= - -"@protobufjs/eventemitter@^1.1.0": - version "1.1.0" - resolved "https://registry.npm.taobao.org/@protobufjs/eventemitter/download/@protobufjs/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" - integrity sha1-NVy8mLr61ZePntCV85diHx0Ga3A= - -"@protobufjs/fetch@^1.1.0": - version "1.1.0" - resolved "https://registry.npm.taobao.org/@protobufjs/fetch/download/@protobufjs/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" - integrity sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU= - dependencies: - "@protobufjs/aspromise" "^1.1.1" - "@protobufjs/inquire" "^1.1.0" - -"@protobufjs/float@^1.0.2": - version "1.0.2" - resolved "https://registry.npm.taobao.org/@protobufjs/float/download/@protobufjs/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" - integrity sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E= - -"@protobufjs/inquire@^1.1.0": - version "1.1.0" - resolved "https://registry.npm.taobao.org/@protobufjs/inquire/download/@protobufjs/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" - integrity sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik= - -"@protobufjs/path@^1.1.2": - version "1.1.2" - resolved "https://registry.npm.taobao.org/@protobufjs/path/download/@protobufjs/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" - integrity sha1-bMKyDFya1q0NzP0hynZz2Nf79o0= - -"@protobufjs/pool@^1.1.0": - version "1.1.0" - resolved "https://registry.npm.taobao.org/@protobufjs/pool/download/@protobufjs/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" - integrity sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q= - -"@protobufjs/utf8@^1.1.0": - version "1.1.0" - resolved "https://registry.npm.taobao.org/@protobufjs/utf8/download/@protobufjs/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" - integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= - -"@sinonjs/commons@^1.7.0": - version "1.7.2" - resolved "https://registry.npm.taobao.org/@sinonjs/commons/download/@sinonjs/commons-1.7.2.tgz#505f55c74e0272b43f6c52d81946bed7058fc0e2" - integrity sha1-UF9Vx04CcrQ/bFLYGUa+1wWPwOI= - dependencies: - type-detect "4.0.8" - -"@types/accepts@*", "@types/accepts@^1.3.5": - version "1.3.5" - resolved "https://registry.npm.taobao.org/@types/accepts/download/@types/accepts-1.3.5.tgz?cache=0&sync_timestamp=1580841236593&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Faccepts%2Fdownload%2F%40types%2Faccepts-1.3.5.tgz#c34bec115cfc746e04fe5a059df4ce7e7b391575" - integrity sha1-w0vsEVz8dG4E/loFnfTOfns5FXU= - dependencies: - "@types/node" "*" - -"@types/babel__core@^7.1.7": - version "7.1.7" - resolved "https://registry.npm.taobao.org/@types/babel__core/download/@types/babel__core-7.1.7.tgz?cache=0&sync_timestamp=1585697219730&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fbabel__core%2Fdownload%2F%40types%2Fbabel__core-7.1.7.tgz#1dacad8840364a57c98d0dd4855c6dd3752c6b89" - integrity sha1-HaytiEA2SlfJjQ3UhVxt03Usa4k= - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.1" - resolved "https://registry.npm.taobao.org/@types/babel__generator/download/@types/babel__generator-7.6.1.tgz?cache=0&sync_timestamp=1580841206027&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fbabel__generator%2Fdownload%2F%40types%2Fbabel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" - integrity sha1-SQF2ezl+hxGuuZ3405bXunt/DgQ= - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.0.2" - resolved "https://registry.npm.taobao.org/@types/babel__template/download/@types/babel__template-7.0.2.tgz?cache=0&sync_timestamp=1580847003660&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fbabel__template%2Fdownload%2F%40types%2Fbabel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" - integrity sha1-T/Y9a1Lt2sHee5daUiPtMuzqkwc= - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.0.10" - resolved "https://registry.npm.taobao.org/@types/babel__traverse/download/@types/babel__traverse-7.0.10.tgz#d9a99f017317d9b3d1abc2ced45d3bca68df0daf" - integrity sha1-2amfAXMX2bPRq8LO1F07ymjfDa8= - dependencies: - "@babel/types" "^7.3.0" - -"@types/body-parser@*", "@types/body-parser@1.19.0": - version "1.19.0" - resolved "https://registry.npm.taobao.org/@types/body-parser/download/@types/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f" - integrity sha1-BoWzxH6zAG/+0RfN1VFkth+AU48= - dependencies: - "@types/connect" "*" - "@types/node" "*" - -"@types/color-name@^1.1.1": - version "1.1.1" - resolved "https://registry.npm.taobao.org/@types/color-name/download/@types/color-name-1.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fcolor-name%2Fdownload%2F%40types%2Fcolor-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" - integrity sha1-HBJhu+qhCoBVu8XYq4S3sq/IRqA= - -"@types/connect@*": - version "3.4.33" - resolved "https://registry.npm.taobao.org/@types/connect/download/@types/connect-3.4.33.tgz#31610c901eca573b8713c3330abc6e6b9f588546" - integrity sha1-MWEMkB7KVzuHE8MzCrxua59YhUY= - dependencies: - "@types/node" "*" - -"@types/content-disposition@*": - version "0.5.3" - resolved "https://registry.npm.taobao.org/@types/content-disposition/download/@types/content-disposition-0.5.3.tgz#0aa116701955c2faa0717fc69cd1596095e49d96" - integrity sha1-CqEWcBlVwvqgcX/GnNFZYJXknZY= - -"@types/cookies@*": - version "0.7.4" - resolved "https://registry.npm.taobao.org/@types/cookies/download/@types/cookies-0.7.4.tgz?cache=0&sync_timestamp=1580847962150&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fcookies%2Fdownload%2F%40types%2Fcookies-0.7.4.tgz#26dedf791701abc0e36b5b79a5722f40e455f87b" - integrity sha1-Jt7feRcBq8Dja1t5pXIvQORV+Hs= - dependencies: - "@types/connect" "*" - "@types/express" "*" - "@types/keygrip" "*" - "@types/node" "*" - -"@types/cors@^2.8.4": - version "2.8.6" - resolved "https://registry.npm.taobao.org/@types/cors/download/@types/cors-2.8.6.tgz#cfaab33c49c15b1ded32f235111ce9123009bd02" - integrity sha1-z6qzPEnBWx3tMvI1ERzpEjAJvQI= - dependencies: - "@types/express" "*" - -"@types/express-serve-static-core@*": - version "4.17.4" - resolved "https://registry.npm.taobao.org/@types/express-serve-static-core/download/@types/express-serve-static-core-4.17.4.tgz#157c79c2d28b632d6418497c57c93185e392e444" - integrity sha1-FXx5wtKLYy1kGEl8V8kxheOS5EQ= - dependencies: - "@types/node" "*" - "@types/range-parser" "*" - -"@types/express@*": - version "4.17.6" - resolved "https://registry.npm.taobao.org/@types/express/download/@types/express-4.17.6.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fexpress%2Fdownload%2F%40types%2Fexpress-4.17.6.tgz#6bce49e49570507b86ea1b07b806f04697fac45e" - integrity sha1-a85J5JVwUHuG6hsHuAbwRpf6xF4= - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "*" - "@types/qs" "*" - "@types/serve-static" "*" - -"@types/express@4.17.3": - version "4.17.3" - resolved "https://registry.npm.taobao.org/@types/express/download/@types/express-4.17.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fexpress%2Fdownload%2F%40types%2Fexpress-4.17.3.tgz#38e4458ce2067873b09a73908df488870c303bd9" - integrity sha1-OORFjOIGeHOwmnOQjfSIhwwwO9k= - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "*" - "@types/serve-static" "*" - -"@types/fs-capacitor@*": - version "2.0.0" - resolved "https://registry.npm.taobao.org/@types/fs-capacitor/download/@types/fs-capacitor-2.0.0.tgz#17113e25817f584f58100fb7a08eed288b81956e" - integrity sha1-FxE+JYF/WE9YEA+3oI7tKIuBlW4= - dependencies: - "@types/node" "*" - -"@types/graphql-upload@^8.0.0": - version "8.0.3" - resolved "https://registry.npm.taobao.org/@types/graphql-upload/download/@types/graphql-upload-8.0.3.tgz#b371edb5f305a2a1f7b7843a890a2a7adc55c3ec" - integrity sha1-s3HttfMFoqH3t4Q6iQoqetxVw+w= - dependencies: - "@types/express" "*" - "@types/fs-capacitor" "*" - "@types/koa" "*" - graphql "^14.5.3" - -"@types/http-assert@*": - version "1.5.1" - resolved "https://registry.npm.taobao.org/@types/http-assert/download/@types/http-assert-1.5.1.tgz#d775e93630c2469c2f980fc27e3143240335db3b" - integrity sha1-13XpNjDCRpwvmA/CfjFDJAM12zs= - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.1" - resolved "https://registry.npm.taobao.org/@types/istanbul-lib-coverage/download/@types/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" - integrity sha1-QplbRG25pIoRoH7Ag0mahg6ROP8= - -"@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.npm.taobao.org/@types/istanbul-lib-report/download/@types/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" - integrity sha1-wUwk8Y6oGQwRjudWK3/5mjZVJoY= - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^1.1.1": - version "1.1.1" - resolved "https://registry.npm.taobao.org/@types/istanbul-reports/download/@types/istanbul-reports-1.1.1.tgz#7a8cbf6a406f36c8add871625b278eaf0b0d255a" - integrity sha1-eoy/akBvNsit2HFiWyeOrwsNJVo= - dependencies: - "@types/istanbul-lib-coverage" "*" - "@types/istanbul-lib-report" "*" - -"@types/keygrip@*": - version "1.0.2" - resolved "https://registry.npm.taobao.org/@types/keygrip/download/@types/keygrip-1.0.2.tgz#513abfd256d7ad0bf1ee1873606317b33b1b2a72" - integrity sha1-UTq/0lbXrQvx7hhzYGMXszsbKnI= - -"@types/koa-compose@*": - version "3.2.5" - resolved "https://registry.npm.taobao.org/@types/koa-compose/download/@types/koa-compose-3.2.5.tgz#85eb2e80ac50be95f37ccf8c407c09bbe3468e9d" - integrity sha1-hesugKxQvpXzfM+MQHwJu+NGjp0= - dependencies: - "@types/koa" "*" - -"@types/koa@*": - version "2.11.3" - resolved "https://registry.npm.taobao.org/@types/koa/download/@types/koa-2.11.3.tgz#540ece376581b12beadf9a417dd1731bc31c16ce" - integrity sha1-VA7ON2WBsSvq35pBfdFzG8McFs4= - dependencies: - "@types/accepts" "*" - "@types/content-disposition" "*" - "@types/cookies" "*" - "@types/http-assert" "*" - "@types/keygrip" "*" - "@types/koa-compose" "*" - "@types/node" "*" - -"@types/long@^4.0.0": - version "4.0.1" - resolved "https://registry.npm.taobao.org/@types/long/download/@types/long-4.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Flong%2Fdownload%2F%40types%2Flong-4.0.1.tgz#459c65fa1867dafe6a8f322c4c51695663cc55e9" - integrity sha1-RZxl+hhn2v5qjzIsTFFpVmPMVek= - -"@types/mime@*": - version "2.0.1" - resolved "https://registry.npm.taobao.org/@types/mime/download/@types/mime-2.0.1.tgz#dc488842312a7f075149312905b5e3c0b054c79d" - integrity sha1-3EiIQjEqfwdRSTEpBbXjwLBUx50= - -"@types/node-fetch@2.5.4": - version "2.5.4" - resolved "https://registry.npm.taobao.org/@types/node-fetch/download/@types/node-fetch-2.5.4.tgz?cache=0&sync_timestamp=1582590867350&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnode-fetch%2Fdownload%2F%40types%2Fnode-fetch-2.5.4.tgz#5245b6d8841fc3a6208b82291119bc11c4e0ce44" - integrity sha1-UkW22IQfw6Ygi4IpERm8EcTgzkQ= - dependencies: - "@types/node" "*" - -"@types/node-fetch@2.5.5": - version "2.5.5" - resolved "https://registry.npm.taobao.org/@types/node-fetch/download/@types/node-fetch-2.5.5.tgz?cache=0&sync_timestamp=1582590867350&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnode-fetch%2Fdownload%2F%40types%2Fnode-fetch-2.5.5.tgz#cd264e20a81f4600a6c52864d38e7fef72485e92" - integrity sha1-zSZOIKgfRgCmxShk045/73JIXpI= - dependencies: - "@types/node" "*" - form-data "^3.0.0" - -"@types/node@*", "@types/node@>=6": - version "13.11.1" - resolved "https://registry.npm.taobao.org/@types/node/download/@types/node-13.11.1.tgz#49a2a83df9d26daacead30d0ccc8762b128d53c7" - integrity sha1-SaKoPfnSbarOrTDQzMh2KxKNU8c= - -"@types/node@^10.1.0": - version "10.17.19" - resolved "https://registry.npm.taobao.org/@types/node/download/@types/node-10.17.19.tgz#1d31ddd5503dba2af7a901aafef3392e4955620e" - integrity sha1-HTHd1VA9uir3qQGq/vM5LklVYg4= - -"@types/prettier@^1.19.0": - version "1.19.1" - resolved "https://registry.npm.taobao.org/@types/prettier/download/@types/prettier-1.19.1.tgz#33509849f8e679e4add158959fdb086440e9553f" - integrity sha1-M1CYSfjmeeSt0ViVn9sIZEDpVT8= - -"@types/qs@*": - version "6.9.1" - resolved "https://registry.npm.taobao.org/@types/qs/download/@types/qs-6.9.1.tgz#937fab3194766256ee09fcd40b781740758617e7" - integrity sha1-k3+rMZR2YlbuCfzUC3gXQHWGF+c= - -"@types/range-parser@*": - version "1.2.3" - resolved "https://registry.npm.taobao.org/@types/range-parser/download/@types/range-parser-1.2.3.tgz?cache=0&sync_timestamp=1580843914182&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Frange-parser%2Fdownload%2F%40types%2Frange-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" - integrity sha1-fuMwunyq+5gJC+zoal7kQRWQTCw= - -"@types/serve-static@*": - version "1.13.3" - resolved "https://registry.npm.taobao.org/@types/serve-static/download/@types/serve-static-1.13.3.tgz?cache=0&sync_timestamp=1580844059264&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fserve-static%2Fdownload%2F%40types%2Fserve-static-1.13.3.tgz#eb7e1c41c4468272557e897e9171ded5e2ded9d1" - integrity sha1-634cQcRGgnJVfol+kXHe1eLe2dE= - dependencies: - "@types/express-serve-static-core" "*" - "@types/mime" "*" - -"@types/stack-utils@^1.0.1": - version "1.0.1" - resolved "https://registry.npm.taobao.org/@types/stack-utils/download/@types/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" - integrity sha1-CoUdO9lkmPolwzq3J47TvWXwbD4= - -"@types/ws@^6.0.0": - version "6.0.4" - resolved "https://registry.npm.taobao.org/@types/ws/download/@types/ws-6.0.4.tgz#7797707c8acce8f76d8c34b370d4645b70421ff1" - integrity sha1-d5dwfIrM6PdtjDSzcNRkW3BCH/E= - dependencies: - "@types/node" "*" - -"@types/yargs-parser@*": - version "15.0.0" - resolved "https://registry.npm.taobao.org/@types/yargs-parser/download/@types/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" - integrity sha1-yz+fdBhp4gzOMw/765JxWQSDiC0= - -"@types/yargs@^13.0.0": - version "13.0.8" - resolved "https://registry.npm.taobao.org/@types/yargs/download/@types/yargs-13.0.8.tgz?cache=0&sync_timestamp=1582664215643&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fyargs%2Fdownload%2F%40types%2Fyargs-13.0.8.tgz#a38c22def2f1c2068f8971acb3ea734eb3c64a99" - integrity sha1-o4wi3vLxwgaPiXGss+pzTrPGSpk= - dependencies: - "@types/yargs-parser" "*" - -"@types/yargs@^15.0.0": - version "15.0.4" - resolved "https://registry.npm.taobao.org/@types/yargs/download/@types/yargs-15.0.4.tgz?cache=0&sync_timestamp=1582664215643&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fyargs%2Fdownload%2F%40types%2Fyargs-15.0.4.tgz#7e5d0f8ca25e9d5849f2ea443cf7c402decd8299" - integrity sha1-fl0PjKJenVhJ8upEPPfEAt7Ngpk= - dependencies: - "@types/yargs-parser" "*" - -"@types/zen-observable@^0.8.0": - version "0.8.0" - resolved "https://registry.npm.taobao.org/@types/zen-observable/download/@types/zen-observable-0.8.0.tgz#8b63ab7f1aa5321248aad5ac890a485656dcea4d" - integrity sha1-i2OrfxqlMhJIqtWsiQpIVlbc6k0= - -"@wry/context@^0.4.0": - version "0.4.4" - resolved "https://registry.npm.taobao.org/@wry/context/download/@wry/context-0.4.4.tgz#e50f5fa1d6cfaabf2977d1fda5ae91717f8815f8" - integrity sha1-5Q9fodbPqr8pd9H9pa6RcX+IFfg= - dependencies: - "@types/node" ">=6" - tslib "^1.9.3" - -"@wry/equality@^0.1.2": - version "0.1.11" - resolved "https://registry.npm.taobao.org/@wry/equality/download/@wry/equality-0.1.11.tgz#35cb156e4a96695aa81a9ecc4d03787bc17f1790" - integrity sha1-NcsVbkqWaVqoGp7MTQN4e8F/F5A= - dependencies: - tslib "^1.9.3" - -abab@^2.0.0: - version "2.0.3" - resolved "https://registry.npm.taobao.org/abab/download/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" - integrity sha1-Yj4gdeAustPyR15J+ZyRhGRnkHo= - -accepts@^1.3.5, accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.npm.taobao.org/accepts/download/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha1-UxvHJlF6OytB+FACHGzBXqq1B80= - dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" - -acorn-globals@^4.3.2: - version "4.3.4" - resolved "https://registry.npm.taobao.org/acorn-globals/download/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" - integrity sha1-n6GSat3BHJcwjE5m163Q1Awycuc= - dependencies: - acorn "^6.0.1" - acorn-walk "^6.0.1" - -acorn-walk@^6.0.1: - version "6.2.0" - resolved "https://registry.npm.taobao.org/acorn-walk/download/acorn-walk-6.2.0.tgz?cache=0&sync_timestamp=1581612804260&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn-walk%2Fdownload%2Facorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" - integrity sha1-Ejy487hMIXHx9/slJhWxx4prGow= - -acorn@^6.0.1: - version "6.4.1" - resolved "https://registry.npm.taobao.org/acorn/download/acorn-6.4.1.tgz?cache=0&sync_timestamp=1583823913618&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" - integrity sha1-Ux5Yuj9RudrLmmZGyk3r9bFMpHQ= - -acorn@^7.1.0: - version "7.1.1" - resolved "https://registry.npm.taobao.org/acorn/download/acorn-7.1.1.tgz?cache=0&sync_timestamp=1583823913618&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" - integrity sha1-41Zo3gtALzWd5RXFSCoaufiaab8= - -ajv@^6.5.5: - version "6.12.0" - resolved "https://registry.npm.taobao.org/ajv/download/ajv-6.12.0.tgz?cache=0&sync_timestamp=1582379612319&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv%2Fdownload%2Fajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" - integrity sha1-BtYLlth7hFSlrauobnhU2mKdtLc= - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-escapes@^4.2.1: - version "4.3.1" - resolved "https://registry.npm.taobao.org/ansi-escapes/download/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" - integrity sha1-pcR8xDGB8fOP/XB2g3cA05VSKmE= - dependencies: - type-fest "^0.11.0" - -ansi-regex@^4.0.0, ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc= - -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha1-OIU59VF5vzkznIGvMKZU1p+Hy3U= - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0= - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.2.1" - resolved "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" - integrity sha1-kK51xCTQCNJiTFvynq0xd+v881k= - dependencies: - "@types/color-name" "^1.1.1" - color-convert "^2.0.1" - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/anymatch/download/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha1-vLJLTzeTTZqnrBe0ra+J58du8us= - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -anymatch@^3.0.3: - version "3.1.1" - resolved "https://registry.npm.taobao.org/anymatch/download/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - integrity sha1-xV7PAhheJGklk5kxDBc84xIzsUI= - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -apollo-cache-control@^0.9.1: - version "0.9.1" - resolved "https://registry.npm.taobao.org/apollo-cache-control/download/apollo-cache-control-0.9.1.tgz?cache=0&sync_timestamp=1586285514726&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fapollo-cache-control%2Fdownload%2Fapollo-cache-control-0.9.1.tgz#2af4c53ef697a87808285a25f2b93ca0f183880c" - integrity sha1-KvTFPvaXqHgIKFol8rk8oPGDiAw= - dependencies: - apollo-server-env "^2.4.3" - graphql-extensions "^0.11.1" - -apollo-cache-inmemory@^1.6.5: - version "1.6.5" - resolved "https://registry.npm.taobao.org/apollo-cache-inmemory/download/apollo-cache-inmemory-1.6.5.tgz#2ccaa3827686f6ed7fb634203dbf2b8d7015856a" - integrity sha1-LMqjgnaG9u1/tjQgPb8rjXAVhWo= - dependencies: - apollo-cache "^1.3.4" - apollo-utilities "^1.3.3" - optimism "^0.10.0" - ts-invariant "^0.4.0" - tslib "^1.10.0" - -apollo-cache@1.3.4, apollo-cache@^1.3.4: - version "1.3.4" - resolved "https://registry.npm.taobao.org/apollo-cache/download/apollo-cache-1.3.4.tgz#0c9f63c793e1cd6e34c450f7668e77aff58c9a42" - integrity sha1-DJ9jx5PhzW40xFD3Zo53r/WMmkI= - dependencies: - apollo-utilities "^1.3.3" - tslib "^1.10.0" - -apollo-client@^2.6.8: - version "2.6.8" - resolved "https://registry.npm.taobao.org/apollo-client/download/apollo-client-2.6.8.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fapollo-client%2Fdownload%2Fapollo-client-2.6.8.tgz#01cebc18692abf90c6b3806414e081696b0fa537" - integrity sha1-Ac68GGkqv5DGs4BkFOCBaWsPpTc= - dependencies: - "@types/zen-observable" "^0.8.0" - apollo-cache "1.3.4" - apollo-link "^1.0.0" - apollo-utilities "1.3.3" - symbol-observable "^1.0.2" - ts-invariant "^0.4.0" - tslib "^1.10.0" - zen-observable "^0.8.0" - -apollo-datasource@^0.7.0: - version "0.7.0" - resolved "https://registry.npm.taobao.org/apollo-datasource/download/apollo-datasource-0.7.0.tgz?cache=0&sync_timestamp=1583931392723&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fapollo-datasource%2Fdownload%2Fapollo-datasource-0.7.0.tgz#2a6d82edb2eba21b4ddf21877009ba39ff821945" - integrity sha1-Km2C7bLrohtN3yGHcAm6Of+CGUU= - dependencies: - apollo-server-caching "^0.5.1" - apollo-server-env "^2.4.3" - -apollo-engine-reporting-protobuf@^0.4.4: - version "0.4.4" - resolved "https://registry.npm.taobao.org/apollo-engine-reporting-protobuf/download/apollo-engine-reporting-protobuf-0.4.4.tgz?cache=0&sync_timestamp=1583931392574&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fapollo-engine-reporting-protobuf%2Fdownload%2Fapollo-engine-reporting-protobuf-0.4.4.tgz#73a064f8c9f2d6605192d1673729c66ec47d9cb7" - integrity sha1-c6Bk+Mny1mBRktFnNynGbsR9nLc= - dependencies: - "@apollo/protobufjs" "^1.0.3" - -apollo-engine-reporting@^1.7.1: - version "1.7.1" - resolved "https://registry.npm.taobao.org/apollo-engine-reporting/download/apollo-engine-reporting-1.7.1.tgz?cache=0&sync_timestamp=1586285515573&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fapollo-engine-reporting%2Fdownload%2Fapollo-engine-reporting-1.7.1.tgz#469d9711507ef4c3b03f193a9b422ecf7ecff7e9" - integrity sha1-Rp2XEVB+9MOwPxk6m0Iuz37P9+k= - dependencies: - apollo-engine-reporting-protobuf "^0.4.4" - apollo-graphql "^0.4.0" - apollo-server-caching "^0.5.1" - apollo-server-env "^2.4.3" - apollo-server-errors "^2.4.1" - apollo-server-types "^0.3.1" - async-retry "^1.2.1" - graphql-extensions "^0.11.1" - -apollo-env@^0.6.1, apollo-env@^0.6.2: - version "0.6.2" - resolved "https://registry.npm.taobao.org/apollo-env/download/apollo-env-0.6.2.tgz#7d456cf3f36e410ce5e7b5f81506efd15095aadf" - integrity sha1-fUVs8/NuQQzl57X4FQbv0VCVqt8= - dependencies: - "@types/node-fetch" "2.5.5" - core-js "^3.0.1" - node-fetch "^2.2.0" - sha.js "^2.4.11" - -apollo-graphql@^0.3.7: - version "0.3.7" - resolved "https://registry.npm.taobao.org/apollo-graphql/download/apollo-graphql-0.3.7.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fapollo-graphql%2Fdownload%2Fapollo-graphql-0.3.7.tgz#533232ed48b0b6dbcf5635f65e66cf8677a5b768" - integrity sha1-UzIy7UiwttvPVjX2XmbPhnelt2g= - dependencies: - apollo-env "^0.6.1" - lodash.sortby "^4.7.0" - -apollo-graphql@^0.4.0: - version "0.4.1" - resolved "https://registry.npm.taobao.org/apollo-graphql/download/apollo-graphql-0.4.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fapollo-graphql%2Fdownload%2Fapollo-graphql-0.4.1.tgz#c9470b11cf29f046f6e9b747034417c200222e91" - integrity sha1-yUcLEc8p8Eb26bdHA0QXwgAiLpE= - dependencies: - apollo-env "^0.6.2" - lodash.sortby "^4.7.0" - -apollo-link-http-common@^0.2.16: - version "0.2.16" - resolved "https://registry.npm.taobao.org/apollo-link-http-common/download/apollo-link-http-common-0.2.16.tgz#756749dafc732792c8ca0923f9a40564b7c59ecc" - integrity sha1-dWdJ2vxzJ5LIygkj+aQFZLfFnsw= - dependencies: - apollo-link "^1.2.14" - ts-invariant "^0.4.0" - tslib "^1.9.3" - -apollo-link-http@^1.5.16: - version "1.5.17" - resolved "https://registry.npm.taobao.org/apollo-link-http/download/apollo-link-http-1.5.17.tgz#499e9f1711bf694497f02c51af12d82de5d8d8ba" - integrity sha1-SZ6fFxG/aUSX8CxRrxLYLeXY2Lo= - dependencies: - apollo-link "^1.2.14" - apollo-link-http-common "^0.2.16" - tslib "^1.9.3" - -apollo-link@^1.0.0, apollo-link@^1.2.14, apollo-link@^1.2.3: - version "1.2.14" - resolved "https://registry.npm.taobao.org/apollo-link/download/apollo-link-1.2.14.tgz#3feda4b47f9ebba7f4160bef8b977ba725b684d9" - integrity sha1-P+2ktH+eu6f0Fgvvi5d7pyW2hNk= - dependencies: - apollo-utilities "^1.3.0" - ts-invariant "^0.4.0" - tslib "^1.9.3" - zen-observable-ts "^0.8.21" - -apollo-server-caching@^0.5.1: - version "0.5.1" - resolved "https://registry.npm.taobao.org/apollo-server-caching/download/apollo-server-caching-0.5.1.tgz#5cd0536ad5473abb667cc82b59bc56b96fb35db6" - integrity sha1-XNBTatVHOrtmfMgrWbxWuW+zXbY= - dependencies: - lru-cache "^5.0.0" - -apollo-server-core@^2.12.0, apollo-server-core@^2.9.16: - version "2.12.0" - resolved "https://registry.npm.taobao.org/apollo-server-core/download/apollo-server-core-2.12.0.tgz?cache=0&sync_timestamp=1586285516802&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fapollo-server-core%2Fdownload%2Fapollo-server-core-2.12.0.tgz#980f29788c17f029e7248d331bee1ad2e1f07e5b" - integrity sha1-mA8peIwX8CnnJI0zG+4a0uHwfls= - dependencies: - "@apollographql/apollo-tools" "^0.4.3" - "@apollographql/graphql-playground-html" "1.6.24" - "@types/graphql-upload" "^8.0.0" - "@types/ws" "^6.0.0" - apollo-cache-control "^0.9.1" - apollo-datasource "^0.7.0" - apollo-engine-reporting "^1.7.1" - apollo-server-caching "^0.5.1" - apollo-server-env "^2.4.3" - apollo-server-errors "^2.4.1" - apollo-server-plugin-base "^0.7.1" - apollo-server-types "^0.3.1" - apollo-tracing "^0.9.1" - fast-json-stable-stringify "^2.0.0" - graphql-extensions "^0.11.1" - graphql-tag "^2.9.2" - graphql-tools "^4.0.0" - graphql-upload "^8.0.2" - loglevel "^1.6.7" - sha.js "^2.4.11" - subscriptions-transport-ws "^0.9.11" - ws "^6.0.0" - -apollo-server-env@^2.4.3: - version "2.4.3" - resolved "https://registry.npm.taobao.org/apollo-server-env/download/apollo-server-env-2.4.3.tgz#9bceedaae07eafb96becdfd478f8d92617d825d2" - integrity sha1-m87tquB+r7lr7N/UePjZJhfYJdI= - dependencies: - node-fetch "^2.1.2" - util.promisify "^1.0.0" - -apollo-server-errors@^2.4.1: - version "2.4.1" - resolved "https://registry.npm.taobao.org/apollo-server-errors/download/apollo-server-errors-2.4.1.tgz?cache=0&sync_timestamp=1586285510004&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fapollo-server-errors%2Fdownload%2Fapollo-server-errors-2.4.1.tgz#16ad49de6c9134bfb2b7dede9842e73bb239dbe2" - integrity sha1-Fq1J3myRNL+yt97emELnO7I52+I= - -apollo-server-express@^2.12.0: - version "2.12.0" - resolved "https://registry.npm.taobao.org/apollo-server-express/download/apollo-server-express-2.12.0.tgz?cache=0&sync_timestamp=1586285521520&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fapollo-server-express%2Fdownload%2Fapollo-server-express-2.12.0.tgz#a03cef8a3aa753bff73156e6a31fd59a076dc48b" - integrity sha1-oDzvijqnU7/3MVbmox/VmgdtxIs= - dependencies: - "@apollographql/graphql-playground-html" "1.6.24" - "@types/accepts" "^1.3.5" - "@types/body-parser" "1.19.0" - "@types/cors" "^2.8.4" - "@types/express" "4.17.3" - accepts "^1.3.5" - apollo-server-core "^2.12.0" - apollo-server-types "^0.3.1" - body-parser "^1.18.3" - cors "^2.8.4" - express "^4.17.1" - graphql-subscriptions "^1.0.0" - graphql-tools "^4.0.0" - parseurl "^1.3.2" - subscriptions-transport-ws "^0.9.16" - type-is "^1.6.16" - -apollo-server-plugin-base@^0.7.1: - version "0.7.1" - resolved "https://registry.npm.taobao.org/apollo-server-plugin-base/download/apollo-server-plugin-base-0.7.1.tgz?cache=0&sync_timestamp=1586285512642&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fapollo-server-plugin-base%2Fdownload%2Fapollo-server-plugin-base-0.7.1.tgz#998d035723c5993171fd5aff3dbe7d2661db1a96" - integrity sha1-mY0DVyPFmTFx/Vr/Pb59JmHbGpY= - dependencies: - apollo-server-types "^0.3.1" - -apollo-server-types@^0.2.10: - version "0.2.10" - resolved "https://registry.npm.taobao.org/apollo-server-types/download/apollo-server-types-0.2.10.tgz?cache=0&sync_timestamp=1586285509653&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fapollo-server-types%2Fdownload%2Fapollo-server-types-0.2.10.tgz#017ee0c812e70b0846826834eb2c9eda036c1c7a" - integrity sha1-AX7gyBLnCwhGgmg06yye2gNsHHo= - dependencies: - apollo-engine-reporting-protobuf "^0.4.4" - apollo-server-caching "^0.5.1" - apollo-server-env "^2.4.3" - -apollo-server-types@^0.3.1: - version "0.3.1" - resolved "https://registry.npm.taobao.org/apollo-server-types/download/apollo-server-types-0.3.1.tgz?cache=0&sync_timestamp=1586285509653&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fapollo-server-types%2Fdownload%2Fapollo-server-types-0.3.1.tgz#9456e243dad525a78b689246f124a66d7d8ac409" - integrity sha1-lFbiQ9rVJaeLaJJG8SSmbX2KxAk= - dependencies: - apollo-engine-reporting-protobuf "^0.4.4" - apollo-server-caching "^0.5.1" - apollo-server-env "^2.4.3" - -apollo-server@^2.9.16: - version "2.12.0" - resolved "https://registry.npm.taobao.org/apollo-server/download/apollo-server-2.12.0.tgz#24589754da7a5a9bf29d21bd084bc37f8b50f147" - integrity sha1-JFiXVNp6WpvynSG9CEvDf4tQ8Uc= - dependencies: - apollo-server-core "^2.12.0" - apollo-server-express "^2.12.0" - express "^4.0.0" - graphql-subscriptions "^1.0.0" - graphql-tools "^4.0.0" - -apollo-tracing@^0.9.1: - version "0.9.1" - resolved "https://registry.npm.taobao.org/apollo-tracing/download/apollo-tracing-0.9.1.tgz?cache=0&sync_timestamp=1586285514255&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fapollo-tracing%2Fdownload%2Fapollo-tracing-0.9.1.tgz#c481be727550c73fda53d20d798cbe4ad67c61bd" - integrity sha1-xIG+cnVQxz/aU9INeYy+StZ8Yb0= - dependencies: - apollo-server-env "^2.4.3" - graphql-extensions "^0.11.1" - -apollo-utilities@1.3.3, apollo-utilities@^1.0.1, apollo-utilities@^1.3.0, apollo-utilities@^1.3.3: - version "1.3.3" - resolved "https://registry.npm.taobao.org/apollo-utilities/download/apollo-utilities-1.3.3.tgz#f1854715a7be80cd810bc3ac95df085815c0787c" - integrity sha1-8YVHFae+gM2BC8Osld8IWBXAeHw= - dependencies: - "@wry/equality" "^0.1.2" - fast-json-stable-stringify "^2.0.0" - ts-invariant "^0.4.0" - tslib "^1.10.0" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.npm.taobao.org/argparse/download/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE= - dependencies: - sprintf-js "~1.0.2" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.npm.taobao.org/arr-diff/download/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/arr-flatten/download/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha1-NgSLv/TntH4TZkQxbJlmnqWukfE= - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.npm.taobao.org/arr-union/download/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/array-equal/download/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.npm.taobao.org/array-flatten/download/array-flatten-1.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Farray-flatten%2Fdownload%2Farray-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.npm.taobao.org/array-unique/download/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.npm.taobao.org/asn1/download/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha1-jSR136tVO7M+d7VOWeiAu4ziMTY= - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/assign-symbols/download/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/astral-regex/download/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - integrity sha1-bIw/uCfdQ+45GPJ7gngqt2WKb9k= - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.npm.taobao.org/async-limiter/download/async-limiter-1.0.1.tgz?cache=0&sync_timestamp=1574272018408&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fasync-limiter%2Fdownload%2Fasync-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha1-3TeelPDbgxCwgpH51kwyCXZmF/0= - -async-retry@^1.2.1: - version "1.3.1" - resolved "https://registry.npm.taobao.org/async-retry/download/async-retry-1.3.1.tgz#139f31f8ddce50c0870b0ba558a6079684aaed55" - integrity sha1-E58x+N3OUMCHCwulWKYHloSq7VU= - dependencies: - retry "0.12.0" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.npm.taobao.org/asynckit/download/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.npm.taobao.org/atob/download/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha1-bZUX654DDSQ2ZmZR6GvZ9vE1M8k= - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.npm.taobao.org/aws-sign2/download/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.9.1" - resolved "https://registry.npm.taobao.org/aws4/download/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" - integrity sha1-fjPY99RJs/ZzzXLeuavcVS2+Uo4= - -babel-jest@^25.3.0: - version "25.3.0" - resolved "https://registry.npm.taobao.org/babel-jest/download/babel-jest-25.3.0.tgz?cache=0&sync_timestamp=1586352151093&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-jest%2Fdownload%2Fbabel-jest-25.3.0.tgz#999d0c19e8427f66b796bf9ea233eedf087b957c" - integrity sha1-mZ0MGehCf2a3lr+eojPu3wh7lXw= - dependencies: - "@jest/transform" "^25.3.0" - "@jest/types" "^25.3.0" - "@types/babel__core" "^7.1.7" - babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^25.3.0" - chalk "^3.0.0" - slash "^3.0.0" - -babel-plugin-istanbul@^6.0.0: - version "6.0.0" - resolved "https://registry.npm.taobao.org/babel-plugin-istanbul/download/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" - integrity sha1-4VnM3Jr5XgtXDHW0Vzt8NNZx12U= - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^4.0.0" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@^25.2.6: - version "25.2.6" - resolved "https://registry.npm.taobao.org/babel-plugin-jest-hoist/download/babel-plugin-jest-hoist-25.2.6.tgz#2af07632b8ac7aad7d414c1e58425d5fc8e84909" - integrity sha1-KvB2Mriseq19QUweWEJdX8joSQk= - dependencies: - "@types/babel__traverse" "^7.0.6" - -babel-preset-current-node-syntax@^0.1.2: - version "0.1.2" - resolved "https://registry.npm.taobao.org/babel-preset-current-node-syntax/download/babel-preset-current-node-syntax-0.1.2.tgz#fb4a4c51fe38ca60fede1dc74ab35eb843cb41d6" - integrity sha1-+0pMUf44ymD+3h3HSrNeuEPLQdY= - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -babel-preset-jest@^25.3.0: - version "25.3.0" - resolved "https://registry.npm.taobao.org/babel-preset-jest/download/babel-preset-jest-25.3.0.tgz#9ab40aee52a19bdc52b8b1ec2403d5914ac3d86b" - integrity sha1-mrQK7lKhm9xSuLHsJAPVkUrD2Gs= - dependencies: - babel-plugin-jest-hoist "^25.2.6" - babel-preset-current-node-syntax "^0.1.2" - -backo2@^1.0.2: - version "1.0.2" - resolved "https://registry.npm.taobao.org/backo2/download/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" - integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.npm.taobao.org/base/download/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha1-e95c7RRbbVUakNuH+DxVi060io8= - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" - -body-parser@1.19.0, body-parser@^1.18.3: - version "1.19.0" - resolved "https://registry.npm.taobao.org/body-parser/download/body-parser-1.19.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbody-parser%2Fdownload%2Fbody-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" - integrity sha1-lrJwnlfJxOCab9Zqj9l5hE9p8Io= - dependencies: - bytes "3.1.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "1.7.2" - iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.7.0" - raw-body "2.4.0" - type-is "~1.6.17" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0= - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^2.3.1: - version "2.3.2" - resolved "https://registry.npm.taobao.org/braces/download/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha1-WXn9PxTNUxVl5fot8av/8d+u5yk= - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@^3.0.1: - version "3.0.2" - resolved "https://registry.npm.taobao.org/braces/download/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha1-NFThpGLujVmeI23zNs2epPiv4Qc= - dependencies: - fill-range "^7.0.1" - -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/browser-process-hrtime/download/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha1-PJtLfXgsgSHlbxAQbYTA0P/JRiY= - -browser-resolve@^1.11.3: - version "1.11.3" - resolved "https://registry.npm.taobao.org/browser-resolve/download/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" - integrity sha1-m3y7PQ9RDky4a9vXlhJNKLWJCvY= - dependencies: - resolve "1.1.7" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.npm.taobao.org/bser/download/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha1-5nh9og7OnQeZhTPP2d5vXDj0vAU= - dependencies: - node-int64 "^0.4.0" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.npm.taobao.org/buffer-from/download/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8= - -busboy@^0.3.1: - version "0.3.1" - resolved "https://registry.npm.taobao.org/busboy/download/busboy-0.3.1.tgz#170899274c5bf38aae27d5c62b71268cd585fd1b" - integrity sha1-FwiZJ0xb84quJ9XGK3EmjNWF/Rs= - dependencies: - dicer "0.3.0" - -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.npm.taobao.org/bytes/download/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY= - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/cache-base/download/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha1-Cn9GQWgxyLZi7jb+TnxZ129marI= - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.npm.taobao.org/callsites/download/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha1-s2MKvYlDQy9Us/BRkjjjPNffL3M= - -camelcase@^5.0.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA= - -capture-exit@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/capture-exit/download/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" - integrity sha1-+5U7+uvreB9iiYI52rtCbQilCaQ= - dependencies: - rsvp "^4.8.4" - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.npm.taobao.org/caseless/download/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - -chalk@^2.0.0: - version "2.4.2" - resolved "https://registry.npm.taobao.org/chalk/download/chalk-2.4.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ= - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/chalk/download/chalk-3.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha1-P3PCv1JlkfV0zEksUeJFY0n4ROQ= - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/ci-info/download/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha1-Z6npZL4xpR4V5QENWObxKDQAL0Y= - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.npm.taobao.org/class-utils/download/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha1-+TNprouafOAv1B+q0MqDAzGQxGM= - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.npm.taobao.org/cliui/download/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha1-UR1wLAxOQcoVbX0OlgIfI+EyJbE= - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.npm.taobao.org/co/download/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= - -collect-v8-coverage@^1.0.0: - version "1.0.1" - resolved "https://registry.npm.taobao.org/collect-v8-coverage/download/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" - integrity sha1-zCyOlPwYu9/+ZNZTRXDIpnOyf1k= - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/collection-visit/download/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.npm.taobao.org/color-convert/download/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg= - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM= - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.npm.taobao.org/color-name/download/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha1-wqCah6y95pVD3m9j+jmVyCbFNqI= - -combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha1-w9RaizT9cwYxoRCoolIGgrMdWn8= - dependencies: - delayed-stream "~1.0.0" - -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.npm.taobao.org/component-emitter/download/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha1-FuQHD7qK4ptnnyIVhT7hgasuq8A= - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -content-disposition@0.5.3: - version "0.5.3" - resolved "https://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" - integrity sha1-4TDK9+cnkIfFYWwgB9BIVpiYT70= - dependencies: - safe-buffer "5.1.2" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.npm.taobao.org/content-type/download/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha1-4TjMdeBAxyexlm/l5fjJruJW/js= - -convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.7.0" - resolved "https://registry.npm.taobao.org/convert-source-map/download/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha1-F6LLiC1/d9NJBYXizmxSRCSjpEI= - dependencies: - safe-buffer "~5.1.1" - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.npm.taobao.org/cookie-signature/download/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= - -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.npm.taobao.org/cookie/download/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" - integrity sha1-vrQ35wIrO21JAZ0IhmUwPr6cFLo= - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.npm.taobao.org/copy-descriptor/download/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -core-js@^3.0.1, core-js@^3.4.0: - version "3.6.5" - resolved "https://registry.npm.taobao.org/core-js/download/core-js-3.6.5.tgz?cache=0&sync_timestamp=1586450269267&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcore-js%2Fdownload%2Fcore-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" - integrity sha1-c5XcJzrzf7LlDpvT2f6EEoUjHRo= - -core-util-is@1.0.2: - version "1.0.2" - resolved "https://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -cors@^2.8.4: - version "2.8.5" - resolved "https://registry.npm.taobao.org/cors/download/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" - integrity sha1-6sEdpRWS3Ya58G9uesKTs9+HXSk= - dependencies: - object-assign "^4" - vary "^1" - -cross-spawn@^6.0.0: - version "6.0.5" - resolved "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q= - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^7.0.0: - version "7.0.2" - resolved "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-7.0.2.tgz#d0d7dcfa74e89115c7619f4f721a94e1fdb716d6" - integrity sha1-0Nfc+nTokRXHYZ9PchqU4f23FtY= - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -cssom@^0.4.1: - version "0.4.4" - resolved "https://registry.npm.taobao.org/cssom/download/cssom-0.4.4.tgz?cache=0&sync_timestamp=1573719337707&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcssom%2Fdownload%2Fcssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" - integrity sha1-WmbPk9LQtmHYC/akT7ZfXC5OChA= - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.npm.taobao.org/cssom/download/cssom-0.3.8.tgz?cache=0&sync_timestamp=1573719337707&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcssom%2Fdownload%2Fcssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha1-nxJ29bK0Y/IRTT8sdSUK+MGjb0o= - -cssstyle@^2.0.0: - version "2.2.0" - resolved "https://registry.npm.taobao.org/cssstyle/download/cssstyle-2.2.0.tgz#e4c44debccd6b7911ed617a4395e5754bba59992" - integrity sha1-5MRN68zWt5Ee1hekOV5XVLulmZI= - dependencies: - cssom "~0.3.6" - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.npm.taobao.org/dashdash/download/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - -data-urls@^1.1.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/data-urls/download/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" - integrity sha1-Fe4Fgrql4iu1nHcUDaj5x2lju/4= - dependencies: - abab "^2.0.0" - whatwg-mimetype "^2.2.0" - whatwg-url "^7.0.0" - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3: - version "2.6.9" - resolved "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8= - dependencies: - ms "2.0.0" - -debug@^4.1.0, debug@^4.1.1: - version "4.1.1" - resolved "https://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E= - dependencies: - ms "^2.1.1" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.npm.taobao.org/decamelize/download/decamelize-1.2.0.tgz?cache=0&sync_timestamp=1580010393599&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdecamelize%2Fdownload%2Fdecamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.npm.taobao.org/decode-uri-component/download/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= - -deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.npm.taobao.org/deepmerge/download/deepmerge-4.2.2.tgz?cache=0&sync_timestamp=1572279720382&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeepmerge%2Fdownload%2Fdeepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha1-RNLqNnm49NT/ujPwPYZfwee/SVU= - -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.npm.taobao.org/define-properties/download/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE= - dependencies: - object-keys "^1.0.12" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.npm.taobao.org/define-property/download/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha1-1Flono1lS6d+AqgX+HENcCyxbp0= - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/delayed-stream/download/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - -deprecated-decorator@^0.1.6: - version "0.1.6" - resolved "https://registry.npm.taobao.org/deprecated-decorator/download/deprecated-decorator-0.1.6.tgz#00966317b7a12fe92f3cc831f7583af329b86c37" - integrity sha1-AJZjF7ehL+kvPMgx91g68ym4bDc= - -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= - -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.npm.taobao.org/detect-newline/download/detect-newline-3.1.0.tgz?cache=0&sync_timestamp=1573634824396&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdetect-newline%2Fdownload%2Fdetect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha1-V29d/GOuGhkv8ZLYrTr2MImRtlE= - -dicer@0.3.0: - version "0.3.0" - resolved "https://registry.npm.taobao.org/dicer/download/dicer-0.3.0.tgz#eacd98b3bfbf92e8ab5c2fdb71aaac44bb06b872" - integrity sha1-6s2Ys7+/kuirXC/bcaqsRLsGuHI= - dependencies: - streamsearch "0.1.2" - -diff-sequences@^25.2.6: - version "25.2.6" - resolved "https://registry.npm.taobao.org/diff-sequences/download/diff-sequences-25.2.6.tgz?cache=0&sync_timestamp=1585823562376&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdiff-sequences%2Fdownload%2Fdiff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" - integrity sha1-X0Z8AO3TU1K3vKRteSfWDmh6dt0= - -domexception@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/domexception/download/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" - integrity sha1-k3RCZEymoxJh7zbj7Gd/6AVYLJA= - dependencies: - webidl-conversions "^4.0.2" - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.npm.taobao.org/ecc-jsbn/download/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc= - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.npm.taobao.org/encodeurl/download/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.npm.taobao.org/end-of-stream/download/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha1-WuZKX0UFe682JuwU2gyl5LJDHrA= - dependencies: - once "^1.4.0" - -es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: - version "1.17.5" - resolved "https://registry.npm.taobao.org/es-abstract/download/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" - integrity sha1-2MnR1myJgfuSAOIlHXme7pJ3Suk= - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.1.5" - is-regex "^1.0.5" - object-inspect "^1.7.0" - object-keys "^1.1.1" - object.assign "^4.1.0" - string.prototype.trimleft "^2.1.1" - string.prototype.trimright "^2.1.1" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.npm.taobao.org/es-to-primitive/download/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha1-5VzUyc3BiLzvsDs2bHNjI/xciYo= - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz?cache=0&sync_timestamp=1586277009115&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fescape-string-regexp%2Fdownload%2Fescape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -escodegen@^1.11.1: - version "1.14.1" - resolved "https://registry.npm.taobao.org/escodegen/download/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457" - integrity sha1-ugHQyCeLXpWppFNQFCAmZZAnpFc= - dependencies: - esprima "^4.0.1" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -esprima@^4.0.0, esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.npm.taobao.org/esprima/download/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha1-E7BM2z5sXRnfkatph6hpVhmwqnE= - -estraverse@^4.2.0: - version "4.3.0" - resolved "https://registry.npm.taobao.org/estraverse/download/estraverse-4.3.0.tgz?cache=0&sync_timestamp=1584934763568&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Festraverse%2Fdownload%2Festraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0= - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.npm.taobao.org/esutils/download/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q= - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.npm.taobao.org/etag/download/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= - -eventemitter3@^3.1.0: - version "3.1.2" - resolved "https://registry.npm.taobao.org/eventemitter3/download/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" - integrity sha1-LT1I+cNGaY/Og6hdfWZOmFNd9uc= - -exec-sh@^0.3.2: - version "0.3.4" - resolved "https://registry.npm.taobao.org/exec-sh/download/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" - integrity sha1-OgGM61JsxvbfK7UEsr/o46STTsU= - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/execa/download/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha1-xiNqW7TfbW8V6I5/AXeYIWdJ3dg= - 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@^3.2.0: - version "3.4.0" - resolved "https://registry.npm.taobao.org/execa/download/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" - integrity sha1-wI7UVQ72XYWPrCaf/IVyRG8364k= - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - p-finally "^2.0.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.npm.taobao.org/exit/download/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.npm.taobao.org/expand-brackets/download/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expect@^25.3.0: - version "25.3.0" - resolved "https://registry.npm.taobao.org/expect/download/expect-25.3.0.tgz?cache=0&sync_timestamp=1586352150540&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexpect%2Fdownload%2Fexpect-25.3.0.tgz#5fd36e51befd05afb7184bc954f8a4792d184c71" - integrity sha1-X9NuUb79Ba+3GEvJVPikeS0YTHE= - dependencies: - "@jest/types" "^25.3.0" - ansi-styles "^4.0.0" - jest-get-type "^25.2.6" - jest-matcher-utils "^25.3.0" - jest-message-util "^25.3.0" - jest-regex-util "^25.2.6" - -express@^4.0.0, express@^4.17.1: - version "4.17.1" - resolved "https://registry.npm.taobao.org/express/download/express-4.17.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexpress%2Fdownload%2Fexpress-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" - integrity sha1-RJH8OGBc9R+GKdOcK10Cb5ikwTQ= - dependencies: - accepts "~1.3.7" - array-flatten "1.1.1" - body-parser "1.19.0" - content-disposition "0.5.3" - content-type "~1.0.4" - cookie "0.4.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "~1.1.2" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "~1.1.2" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.5" - qs "6.7.0" - range-parser "~1.2.1" - safe-buffer "5.1.2" - send "0.17.1" - serve-static "1.14.1" - setprototypeof "1.1.1" - statuses "~1.5.0" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.npm.taobao.org/extend/download/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo= - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.npm.taobao.org/extglob/download/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM= - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.npm.taobao.org/extsprintf/download/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.npm.taobao.org/extsprintf/download/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - -fast-deep-equal@^3.1.1: - version "3.1.1" - resolved "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" - integrity sha1-VFFFB3xQFJHjOxXsQIwpQ3bpSuQ= - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM= - -fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.npm.taobao.org/fast-levenshtein/download/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.npm.taobao.org/fb-watchman/download/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" - integrity sha1-/IT7OdJwnPP/bXQ3BhV7tXCKioU= - dependencies: - bser "2.1.1" - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.npm.taobao.org/fill-range/download/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.npm.taobao.org/fill-range/download/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha1-GRmmp8df44ssfHflGYU12prN2kA= - dependencies: - to-regex-range "^5.0.1" - -finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.npm.taobao.org/finalhandler/download/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha1-t+fQAP/RGTjQ/bBTUG9uur6fWH0= - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.npm.taobao.org/find-up/download/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk= - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.npm.taobao.org/for-in/download/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.npm.taobao.org/forever-agent/download/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - -form-data@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/form-data/download/form-data-3.0.0.tgz?cache=0&sync_timestamp=1573027118125&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fform-data%2Fdownload%2Fform-data-3.0.0.tgz#31b7e39c85f1355b7139ee0c647cf0de7f83c682" - integrity sha1-MbfjnIXxNVtxOe4MZHzw3n+DxoI= - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.npm.taobao.org/form-data/download/form-data-2.3.3.tgz?cache=0&sync_timestamp=1573027118125&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fform-data%2Fdownload%2Fform-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha1-3M5SwF9kTymManq5Nr1yTO/786Y= - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -forwarded@~0.1.2: - version "0.1.2" - resolved "https://registry.npm.taobao.org/forwarded/download/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" - integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.npm.taobao.org/fragment-cache/download/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= - -fs-capacitor@^2.0.4: - version "2.0.4" - resolved "https://registry.npm.taobao.org/fs-capacitor/download/fs-capacitor-2.0.4.tgz#5a22e72d40ae5078b4fe64fe4d08c0d3fc88ad3c" - integrity sha1-WiLnLUCuUHi0/mT+TQjA0/yIrTw= - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/fs.realpath/download/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@^2.1.2: - version "2.1.2" - resolved "https://registry.npm.taobao.org/fsevents/download/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" - integrity sha1-TAofs0vGjlQ7S4Kp7Dkr+9qECAU= - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.npm.taobao.org/function-bind/download/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0= - -gensync@^1.0.0-beta.1: - version "1.0.0-beta.1" - resolved "https://registry.npm.taobao.org/gensync/download/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" - integrity sha1-WPQ2H/mH5f9uHnohCCeqNx6qwmk= - -get-caller-file@^2.0.1: - version "2.0.5" - resolved "https://registry.npm.taobao.org/get-caller-file/download/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha1-T5RBKoLbMvNuOwuXQfipf+sDH34= - -get-stream@^4.0.0: - version "4.1.0" - resolved "https://registry.npm.taobao.org/get-stream/download/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha1-wbJVV189wh1Zv8ec09K0axw6VLU= - dependencies: - pump "^3.0.0" - -get-stream@^5.0.0: - version "5.1.0" - resolved "https://registry.npm.taobao.org/get-stream/download/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" - integrity sha1-ASA83JJZf5uQkGfD5lbMH008Tck= - dependencies: - pump "^3.0.0" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.npm.taobao.org/get-value/download/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.npm.taobao.org/getpass/download/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" - -glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: - version "7.1.6" - resolved "https://registry.npm.taobao.org/glob/download/glob-7.1.6.tgz?cache=0&sync_timestamp=1573078079496&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglob%2Fdownload%2Fglob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha1-FB8zuBp8JJLhJVlDB0gMRmeSeKY= - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.npm.taobao.org/globals/download/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha1-q4eVM4hooLq9hSV1gBjCp+uVxC4= - -graceful-fs@^4.2.3: - version "4.2.3" - resolved "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" - integrity sha1-ShL/G2A3bvCYYsIJPt2Qgyi+hCM= - -graphql-extensions@^0.10.10: - version "0.10.10" - resolved "https://registry.npm.taobao.org/graphql-extensions/download/graphql-extensions-0.10.10.tgz?cache=0&sync_timestamp=1586285511162&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fgraphql-extensions%2Fdownload%2Fgraphql-extensions-0.10.10.tgz#6b89d6b171f02a83bd4252f1e71c8d69147e7e2d" - integrity sha1-a4nWsXHwKoO9QlLx5xyNaRR+fi0= - dependencies: - "@apollographql/apollo-tools" "^0.4.3" - apollo-server-env "^2.4.3" - apollo-server-types "^0.2.10" - -graphql-extensions@^0.11.1: - version "0.11.1" - resolved "https://registry.npm.taobao.org/graphql-extensions/download/graphql-extensions-0.11.1.tgz?cache=0&sync_timestamp=1586285511162&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fgraphql-extensions%2Fdownload%2Fgraphql-extensions-0.11.1.tgz#f543f544a047a7a4dd930123f662dfcc01527416" - integrity sha1-9UP1RKBHp6TdkwEj9mLfzAFSdBY= - dependencies: - "@apollographql/apollo-tools" "^0.4.3" - apollo-server-env "^2.4.3" - apollo-server-types "^0.3.1" - -graphql-subscriptions@^1.0.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/graphql-subscriptions/download/graphql-subscriptions-1.1.0.tgz#5f2fa4233eda44cf7570526adfcf3c16937aef11" - integrity sha1-Xy+kIz7aRM91cFJq3888FpN67xE= - dependencies: - iterall "^1.2.1" - -graphql-tag@^2.9.2: - version "2.10.3" - resolved "https://registry.npm.taobao.org/graphql-tag/download/graphql-tag-2.10.3.tgz#ea1baba5eb8fc6339e4c4cf049dabe522b0edf03" - integrity sha1-6hurpeuPxjOeTEzwSdq+UisO3wM= - -graphql-tools@^4.0.0: - version "4.0.7" - resolved "https://registry.npm.taobao.org/graphql-tools/download/graphql-tools-4.0.7.tgz?cache=0&sync_timestamp=1586269774605&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fgraphql-tools%2Fdownload%2Fgraphql-tools-4.0.7.tgz#743309b96cb657ff45b607ee0a07193cd987e43c" - integrity sha1-dDMJuWy2V/9FtgfuCgcZPNmH5Dw= - dependencies: - apollo-link "^1.2.3" - apollo-utilities "^1.0.1" - deprecated-decorator "^0.1.6" - iterall "^1.1.3" - uuid "^3.1.0" - -graphql-upload@^8.0.2: - version "8.1.0" - resolved "https://registry.npm.taobao.org/graphql-upload/download/graphql-upload-8.1.0.tgz#6d0ab662db5677a68bfb1f2c870ab2544c14939a" - integrity sha1-bQq2YttWd6aL+x8shwqyVEwUk5o= - dependencies: - busboy "^0.3.1" - fs-capacitor "^2.0.4" - http-errors "^1.7.3" - object-path "^0.11.4" - -graphql@^14.5.3, graphql@^14.6.0: - version "14.6.0" - resolved "https://registry.npm.taobao.org/graphql/download/graphql-14.6.0.tgz?cache=0&sync_timestamp=1585840662829&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fgraphql%2Fdownload%2Fgraphql-14.6.0.tgz#57822297111e874ea12f5cd4419616930cd83e49" - integrity sha1-V4IilxEeh06hL1zUQZYWkwzYPkk= - dependencies: - iterall "^1.2.2" - -growly@^1.3.0: - version "1.3.0" - resolved "https://registry.npm.taobao.org/growly/download/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" - integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/har-schema/download/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.3: - version "5.1.3" - resolved "https://registry.npm.taobao.org/har-validator/download/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" - integrity sha1-HvievT5JllV2de7ZiTEQ3DUPoIA= - dependencies: - ajv "^6.5.5" - har-schema "^2.0.0" - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s= - -has-symbols@^1.0.0, has-symbols@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/has-symbols/download/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" - integrity sha1-n1IUdYpEGWxAbZvXbOv4HsLdMeg= - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.npm.taobao.org/has-value/download/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/has-value/download/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.npm.taobao.org/has-values/download/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/has-values/download/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.npm.taobao.org/has/download/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y= - dependencies: - function-bind "^1.1.1" - -html-encoding-sniffer@^1.0.2: - version "1.0.2" - resolved "https://registry.npm.taobao.org/html-encoding-sniffer/download/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" - integrity sha1-5w2EuU2lOqN14R/jo1G+ZkLKRvg= - dependencies: - whatwg-encoding "^1.0.1" - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.npm.taobao.org/html-escaper/download/html-escaper-2.0.2.tgz?cache=0&sync_timestamp=1585316700260&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhtml-escaper%2Fdownload%2Fhtml-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha1-39YAJ9o2o238viNiYsAKWCJoFFM= - -http-errors@1.7.2: - version "1.7.2" - resolved "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" - integrity sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8= - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-errors@^1.7.3, http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha1-bGGeT5xgMIw4UZSYwU+7EKrOuwY= - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.npm.taobao.org/http-signature/download/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.npm.taobao.org/human-signals/download/human-signals-1.1.1.tgz?cache=0&sync_timestamp=1584198706482&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhuman-signals%2Fdownload%2Fhuman-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha1-xbHNFPUK6uCatsWf5jujOV/k36M= - -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.24.tgz?cache=0&sync_timestamp=1579334008444&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ficonv-lite%2Fdownload%2Ficonv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha1-ICK0sl+93CHS9SSXSkdKr+czkIs= - dependencies: - safer-buffer ">= 2.1.2 < 3" - -import-local@^3.0.2: - version "3.0.2" - resolved "https://registry.npm.taobao.org/import-local/download/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" - integrity sha1-qM/QQx0d5KIZlwPQA+PmI2T6bbY= - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.npm.taobao.org/imurmurhash/download/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1: - version "2.0.4" - resolved "https://registry.npm.taobao.org/inherits/download/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w= - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/ip-regex/download/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= - -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.npm.taobao.org/ipaddr.js/download/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha1-v/OFQ+64mEglB5/zoqjmy9RngbM= - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY= - dependencies: - kind-of "^6.0.0" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha1-76ouqdqg16suoTqXsritUf776L4= - -is-callable@^1.1.4, is-callable@^1.1.5: - version "1.1.5" - resolved "https://registry.npm.taobao.org/is-callable/download/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" - integrity sha1-9+RrWWiQRW23Tn9ul2yzJz0G+qs= - -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/is-ci/download/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha1-a8YzQYGBDgS1wis9WJ/cpVAmQEw= - dependencies: - ci-info "^2.0.0" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc= - dependencies: - kind-of "^6.0.0" - -is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.npm.taobao.org/is-date-object/download/is-date-object-1.0.2.tgz?cache=0&sync_timestamp=1576729165697&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-date-object%2Fdownload%2Fis-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha1-vac28s2P0G0yhE53Q7+nSUw7/X4= - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco= - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw= - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.npm.taobao.org/is-extendable/download/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/is-extendable/download/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ= - dependencies: - is-plain-object "^2.0.4" - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0= - -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/is-generator-fn/download/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha1-fRQK3DiarzARqPKipM+m+q3/sRg= - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/is-number/download/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.npm.taobao.org/is-number/download/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss= - -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.npm.taobao.org/is-plain-object/download/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc= - dependencies: - isobject "^3.0.1" - -is-regex@^1.0.5: - version "1.0.5" - resolved "https://registry.npm.taobao.org/is-regex/download/is-regex-1.0.5.tgz?cache=0&sync_timestamp=1576454499491&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-regex%2Fdownload%2Fis-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" - integrity sha1-OdWJo1i/GJZ/cmlnEguPwa7XTq4= - dependencies: - has "^1.0.3" - -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/is-stream/download/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - -is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/is-stream/download/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha1-venDJoDW+uBBKdasnZIc54FfeOM= - -is-symbol@^1.0.2: - version "1.0.3" - resolved "https://registry.npm.taobao.org/is-symbol/download/is-symbol-1.0.3.tgz?cache=0&sync_timestamp=1574296307739&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-symbol%2Fdownload%2Fis-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha1-OOEBS55jKb4N6dJKQU/XRB7GGTc= - dependencies: - has-symbols "^1.0.1" - -is-typedarray@^1.0.0, is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.npm.taobao.org/is-windows/download/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0= - -is-wsl@^2.1.1: - version "2.1.1" - resolved "https://registry.npm.taobao.org/is-wsl/download/is-wsl-2.1.1.tgz#4a1c152d429df3d441669498e2486d3596ebaf1d" - integrity sha1-ShwVLUKd89RBZpSY4khtNZbrrx0= - -isarray@1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/isobject/download/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - -istanbul-lib-coverage@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/istanbul-lib-coverage/download/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" - integrity sha1-9ZRKN8cLVQsCp4pcOyBVsoDOyOw= - -istanbul-lib-instrument@^4.0.0: - version "4.0.1" - resolved "https://registry.npm.taobao.org/istanbul-lib-instrument/download/istanbul-lib-instrument-4.0.1.tgz#61f13ac2c96cfefb076fe7131156cc05907874e6" - integrity sha1-YfE6wsls/vsHb+cTEVbMBZB4dOY= - dependencies: - "@babel/core" "^7.7.5" - "@babel/parser" "^7.7.5" - "@babel/template" "^7.7.4" - "@babel/traverse" "^7.7.4" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" - semver "^6.3.0" - -istanbul-lib-report@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/istanbul-lib-report/download/istanbul-lib-report-3.0.0.tgz?cache=0&sync_timestamp=1577062542584&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fistanbul-lib-report%2Fdownload%2Fistanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" - integrity sha1-dRj+UupE3jcvRgp2tezan/tz2KY= - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^3.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.0" - resolved "https://registry.npm.taobao.org/istanbul-lib-source-maps/download/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" - integrity sha1-dXQ85tlruG3H7kNSz2Nmoj8LGtk= - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.0.2: - version "3.0.2" - resolved "https://registry.npm.taobao.org/istanbul-reports/download/istanbul-reports-3.0.2.tgz?cache=0&sync_timestamp=1585931692719&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fistanbul-reports%2Fdownload%2Fistanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" - integrity sha1-1ZMhDlAAaDdQywn8BkTktuJ/1Ts= - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -iterall@^1.1.3, iterall@^1.2.1, iterall@^1.2.2: - version "1.3.0" - resolved "https://registry.npm.taobao.org/iterall/download/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea" - integrity sha1-r8sISS4pFcvYoIhOuTqMlNDXL+o= - -jest-changed-files@^25.3.0: - version "25.3.0" - resolved "https://registry.npm.taobao.org/jest-changed-files/download/jest-changed-files-25.3.0.tgz#85d8de6f4bd13dafda9d7f1e3f2565fc0e183c78" - integrity sha1-hdjeb0vRPa/anX8ePyVl/A4YPHg= - dependencies: - "@jest/types" "^25.3.0" - execa "^3.2.0" - throat "^5.0.0" - -jest-cli@^25.3.0: - version "25.3.0" - resolved "https://registry.npm.taobao.org/jest-cli/download/jest-cli-25.3.0.tgz?cache=0&sync_timestamp=1586352158782&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-cli%2Fdownload%2Fjest-cli-25.3.0.tgz#d9e11f5700cc5946583cf0d01a9bdebceed448d2" - integrity sha1-2eEfVwDMWUZYPPDQGpvevO7USNI= - dependencies: - "@jest/core" "^25.3.0" - "@jest/test-result" "^25.3.0" - "@jest/types" "^25.3.0" - chalk "^3.0.0" - exit "^0.1.2" - import-local "^3.0.2" - is-ci "^2.0.0" - jest-config "^25.3.0" - jest-util "^25.3.0" - jest-validate "^25.3.0" - prompts "^2.0.1" - realpath-native "^2.0.0" - yargs "^15.3.1" - -jest-config@^25.3.0: - version "25.3.0" - resolved "https://registry.npm.taobao.org/jest-config/download/jest-config-25.3.0.tgz?cache=0&sync_timestamp=1586352152553&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-config%2Fdownload%2Fjest-config-25.3.0.tgz#112b5e2f2e57dec4501dd2fe979044c06fb1317e" - integrity sha1-ESteLy5X3sRQHdL+l5BEwG+xMX4= - dependencies: - "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^25.3.0" - "@jest/types" "^25.3.0" - babel-jest "^25.3.0" - chalk "^3.0.0" - deepmerge "^4.2.2" - glob "^7.1.1" - jest-environment-jsdom "^25.3.0" - jest-environment-node "^25.3.0" - jest-get-type "^25.2.6" - jest-jasmine2 "^25.3.0" - jest-regex-util "^25.2.6" - jest-resolve "^25.3.0" - jest-util "^25.3.0" - jest-validate "^25.3.0" - micromatch "^4.0.2" - pretty-format "^25.3.0" - realpath-native "^2.0.0" - -jest-diff@^25.3.0: - version "25.3.0" - resolved "https://registry.npm.taobao.org/jest-diff/download/jest-diff-25.3.0.tgz#0d7d6f5d6171e5dacde9e05be47b3615e147c26f" - integrity sha1-DX1vXWFx5drN6eBb5Hs2FeFHwm8= - dependencies: - chalk "^3.0.0" - diff-sequences "^25.2.6" - jest-get-type "^25.2.6" - pretty-format "^25.3.0" - -jest-docblock@^25.3.0: - version "25.3.0" - resolved "https://registry.npm.taobao.org/jest-docblock/download/jest-docblock-25.3.0.tgz#8b777a27e3477cd77a168c05290c471a575623ef" - integrity sha1-i3d6J+NHfNd6FowFKQxHGldWI+8= - dependencies: - detect-newline "^3.0.0" - -jest-each@^25.3.0: - version "25.3.0" - resolved "https://registry.npm.taobao.org/jest-each/download/jest-each-25.3.0.tgz?cache=0&sync_timestamp=1586352150834&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-each%2Fdownload%2Fjest-each-25.3.0.tgz#a319eecf1f6076164ab86f99ca166a55b96c0bd4" - integrity sha1-oxnuzx9gdhZKuG+ZyhZqVblsC9Q= - dependencies: - "@jest/types" "^25.3.0" - chalk "^3.0.0" - jest-get-type "^25.2.6" - jest-util "^25.3.0" - pretty-format "^25.3.0" - -jest-environment-jsdom@^25.3.0: - version "25.3.0" - resolved "https://registry.npm.taobao.org/jest-environment-jsdom/download/jest-environment-jsdom-25.3.0.tgz#c493ab8c41f28001520c70ef67dd88b88be6af05" - integrity sha1-xJOrjEHygAFSDHDvZ92IuIvmrwU= - dependencies: - "@jest/environment" "^25.3.0" - "@jest/fake-timers" "^25.3.0" - "@jest/types" "^25.3.0" - jest-mock "^25.3.0" - jest-util "^25.3.0" - jsdom "^15.2.1" - -jest-environment-node@^25.3.0: - version "25.3.0" - resolved "https://registry.npm.taobao.org/jest-environment-node/download/jest-environment-node-25.3.0.tgz#9845f0e63991e8498448cb0ae804935689533db9" - integrity sha1-mEXw5jmR6EmESMsK6ASTVolTPbk= - dependencies: - "@jest/environment" "^25.3.0" - "@jest/fake-timers" "^25.3.0" - "@jest/types" "^25.3.0" - jest-mock "^25.3.0" - jest-util "^25.3.0" - semver "^6.3.0" - -jest-get-type@^25.2.6: - version "25.2.6" - resolved "https://registry.npm.taobao.org/jest-get-type/download/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" - integrity sha1-Cwoy+riQi0TVCL6BaBSH26u42Hc= - -jest-haste-map@^25.3.0: - version "25.3.0" - resolved "https://registry.npm.taobao.org/jest-haste-map/download/jest-haste-map-25.3.0.tgz?cache=0&sync_timestamp=1586352147502&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-haste-map%2Fdownload%2Fjest-haste-map-25.3.0.tgz#b7683031c9c9ddc0521d311564108b244b11e4c6" - integrity sha1-t2gwMcnJ3cBSHTEVZBCLJEsR5MY= - dependencies: - "@jest/types" "^25.3.0" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.3" - jest-serializer "^25.2.6" - jest-util "^25.3.0" - jest-worker "^25.2.6" - micromatch "^4.0.2" - sane "^4.0.3" - walker "^1.0.7" - which "^2.0.2" - optionalDependencies: - fsevents "^2.1.2" - -jest-jasmine2@^25.3.0: - version "25.3.0" - resolved "https://registry.npm.taobao.org/jest-jasmine2/download/jest-jasmine2-25.3.0.tgz?cache=0&sync_timestamp=1586352146042&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-jasmine2%2Fdownload%2Fjest-jasmine2-25.3.0.tgz#16ae4f68adef65fb45001b26c864bcbcbf972830" - integrity sha1-Fq5PaK3vZftFABsmyGS8vL+XKDA= - dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^25.3.0" - "@jest/source-map" "^25.2.6" - "@jest/test-result" "^25.3.0" - "@jest/types" "^25.3.0" - chalk "^3.0.0" - co "^4.6.0" - expect "^25.3.0" - is-generator-fn "^2.0.0" - jest-each "^25.3.0" - jest-matcher-utils "^25.3.0" - jest-message-util "^25.3.0" - jest-runtime "^25.3.0" - jest-snapshot "^25.3.0" - jest-util "^25.3.0" - pretty-format "^25.3.0" - throat "^5.0.0" - -jest-leak-detector@^25.3.0: - version "25.3.0" - resolved "https://registry.npm.taobao.org/jest-leak-detector/download/jest-leak-detector-25.3.0.tgz?cache=0&sync_timestamp=1586352149133&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-leak-detector%2Fdownload%2Fjest-leak-detector-25.3.0.tgz#5b6bf04903b35be56038915a55f47291771f769f" - integrity sha1-W2vwSQOzW+VgOJFaVfRykXcfdp8= - dependencies: - jest-get-type "^25.2.6" - pretty-format "^25.3.0" - -jest-matcher-utils@^25.3.0: - version "25.3.0" - resolved "https://registry.npm.taobao.org/jest-matcher-utils/download/jest-matcher-utils-25.3.0.tgz#76765788a26edaa8bc5f0100aea52ae383559648" - integrity sha1-dnZXiKJu2qi8XwEArqUq44NVlkg= - dependencies: - chalk "^3.0.0" - jest-diff "^25.3.0" - jest-get-type "^25.2.6" - pretty-format "^25.3.0" - -jest-message-util@^25.3.0: - version "25.3.0" - resolved "https://registry.npm.taobao.org/jest-message-util/download/jest-message-util-25.3.0.tgz#e3836826fe5ca538a337b87d9bd2648190867f85" - integrity sha1-44NoJv5cpTijN7h9m9JkgZCGf4U= - dependencies: - "@babel/code-frame" "^7.0.0" - "@jest/types" "^25.3.0" - "@types/stack-utils" "^1.0.1" - chalk "^3.0.0" - micromatch "^4.0.2" - slash "^3.0.0" - stack-utils "^1.0.1" - -jest-mock@^25.3.0: - version "25.3.0" - resolved "https://registry.npm.taobao.org/jest-mock/download/jest-mock-25.3.0.tgz?cache=0&sync_timestamp=1586352146462&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-mock%2Fdownload%2Fjest-mock-25.3.0.tgz#d72644509e40987a732a9a2534a1054f4649402c" - integrity sha1-1yZEUJ5AmHpzKpolNKEFT0ZJQCw= - dependencies: - "@jest/types" "^25.3.0" - -jest-pnp-resolver@^1.2.1: - version "1.2.1" - resolved "https://registry.npm.taobao.org/jest-pnp-resolver/download/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" - integrity sha1-7NrmBMB3p/vHDe+21RfDwciYkjo= - -jest-regex-util@^25.2.6: - version "25.2.6" - resolved "https://registry.npm.taobao.org/jest-regex-util/download/jest-regex-util-25.2.6.tgz#d847d38ba15d2118d3b06390056028d0f2fd3964" - integrity sha1-2EfTi6FdIRjTsGOQBWAo0PL9OWQ= - -jest-resolve-dependencies@^25.3.0: - version "25.3.0" - resolved "https://registry.npm.taobao.org/jest-resolve-dependencies/download/jest-resolve-dependencies-25.3.0.tgz#b0e4ae053dd44ddacc18c6ee12b5b7c28e445a90" - integrity sha1-sOSuBT3UTdrMGMbuErW3wo5EWpA= - dependencies: - "@jest/types" "^25.3.0" - jest-regex-util "^25.2.6" - jest-snapshot "^25.3.0" - -jest-resolve@^25.3.0: - version "25.3.0" - resolved "https://registry.npm.taobao.org/jest-resolve/download/jest-resolve-25.3.0.tgz?cache=0&sync_timestamp=1586352148497&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-resolve%2Fdownload%2Fjest-resolve-25.3.0.tgz#cb90a5bbea54a02eccdbbf4126a819595dcf91d6" - integrity sha1-y5Clu+pUoC7M279BJqgZWV3PkdY= - dependencies: - "@jest/types" "^25.3.0" - browser-resolve "^1.11.3" - chalk "^3.0.0" - jest-pnp-resolver "^1.2.1" - realpath-native "^2.0.0" - resolve "^1.15.1" - -jest-runner@^25.3.0: - version "25.3.0" - resolved "https://registry.npm.taobao.org/jest-runner/download/jest-runner-25.3.0.tgz?cache=0&sync_timestamp=1586352153348&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-runner%2Fdownload%2Fjest-runner-25.3.0.tgz#673ef2ac79d2810eb6b2c1a3f82398375a3d1174" - integrity sha1-Zz7yrHnSgQ62ssGj+COYN1o9EXQ= - dependencies: - "@jest/console" "^25.3.0" - "@jest/environment" "^25.3.0" - "@jest/test-result" "^25.3.0" - "@jest/types" "^25.3.0" - chalk "^3.0.0" - exit "^0.1.2" - graceful-fs "^4.2.3" - jest-config "^25.3.0" - jest-docblock "^25.3.0" - jest-haste-map "^25.3.0" - jest-jasmine2 "^25.3.0" - jest-leak-detector "^25.3.0" - jest-message-util "^25.3.0" - jest-resolve "^25.3.0" - jest-runtime "^25.3.0" - jest-util "^25.3.0" - jest-worker "^25.2.6" - source-map-support "^0.5.6" - throat "^5.0.0" - -jest-runtime@^25.3.0: - version "25.3.0" - resolved "https://registry.npm.taobao.org/jest-runtime/download/jest-runtime-25.3.0.tgz?cache=0&sync_timestamp=1586352149642&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-runtime%2Fdownload%2Fjest-runtime-25.3.0.tgz#af4d40dbcc590fa5de9910cb6a120a13d131050b" - integrity sha1-r01A28xZD6XemRDLahIKE9ExBQs= - dependencies: - "@jest/console" "^25.3.0" - "@jest/environment" "^25.3.0" - "@jest/source-map" "^25.2.6" - "@jest/test-result" "^25.3.0" - "@jest/transform" "^25.3.0" - "@jest/types" "^25.3.0" - "@types/yargs" "^15.0.0" - chalk "^3.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.3" - jest-config "^25.3.0" - jest-haste-map "^25.3.0" - jest-message-util "^25.3.0" - jest-mock "^25.3.0" - jest-regex-util "^25.2.6" - jest-resolve "^25.3.0" - jest-snapshot "^25.3.0" - jest-util "^25.3.0" - jest-validate "^25.3.0" - realpath-native "^2.0.0" - slash "^3.0.0" - strip-bom "^4.0.0" - yargs "^15.3.1" - -jest-serializer@^25.2.6: - version "25.2.6" - resolved "https://registry.npm.taobao.org/jest-serializer/download/jest-serializer-25.2.6.tgz?cache=0&sync_timestamp=1585823436505&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-serializer%2Fdownload%2Fjest-serializer-25.2.6.tgz#3bb4cc14fe0d8358489dbbefbb8a4e708ce039b7" - integrity sha1-O7TMFP4Ng1hInbvvu4pOcIzgObc= - -jest-snapshot@^25.3.0: - version "25.3.0" - resolved "https://registry.npm.taobao.org/jest-snapshot/download/jest-snapshot-25.3.0.tgz?cache=0&sync_timestamp=1586352154441&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-snapshot%2Fdownload%2Fjest-snapshot-25.3.0.tgz#d4feb457494f4aaedcc83fbbf1ca21808fc3df71" - integrity sha1-1P60V0lPSq7cyD+78cohgI/D33E= - dependencies: - "@babel/types" "^7.0.0" - "@jest/types" "^25.3.0" - "@types/prettier" "^1.19.0" - chalk "^3.0.0" - expect "^25.3.0" - jest-diff "^25.3.0" - jest-get-type "^25.2.6" - jest-matcher-utils "^25.3.0" - jest-message-util "^25.3.0" - jest-resolve "^25.3.0" - make-dir "^3.0.0" - natural-compare "^1.4.0" - pretty-format "^25.3.0" - semver "^6.3.0" - -jest-util@^25.3.0: - version "25.3.0" - resolved "https://registry.npm.taobao.org/jest-util/download/jest-util-25.3.0.tgz?cache=0&sync_timestamp=1586352146172&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-util%2Fdownload%2Fjest-util-25.3.0.tgz#e3b0064165818f10d78514696fd25efba82cf049" - integrity sha1-47AGQWWBjxDXhRRpb9Je+6gs8Ek= - dependencies: - "@jest/types" "^25.3.0" - chalk "^3.0.0" - is-ci "^2.0.0" - make-dir "^3.0.0" - -jest-validate@^25.3.0: - version "25.3.0" - resolved "https://registry.npm.taobao.org/jest-validate/download/jest-validate-25.3.0.tgz?cache=0&sync_timestamp=1586352150233&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-validate%2Fdownload%2Fjest-validate-25.3.0.tgz#eb95fdee0039647bcd5d4be641b21e4a142a880c" - integrity sha1-65X97gA5ZHvNXUvmQbIeShQqiAw= - dependencies: - "@jest/types" "^25.3.0" - camelcase "^5.3.1" - chalk "^3.0.0" - jest-get-type "^25.2.6" - leven "^3.1.0" - pretty-format "^25.3.0" - -jest-watcher@^25.3.0: - version "25.3.0" - resolved "https://registry.npm.taobao.org/jest-watcher/download/jest-watcher-25.3.0.tgz?cache=0&sync_timestamp=1586352149566&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-watcher%2Fdownload%2Fjest-watcher-25.3.0.tgz#fd03fd5ca52f02bd3161ab177466bf1bfdd34e5c" - integrity sha1-/QP9XKUvAr0xYasXdGa/G/3TTlw= - dependencies: - "@jest/test-result" "^25.3.0" - "@jest/types" "^25.3.0" - ansi-escapes "^4.2.1" - chalk "^3.0.0" - jest-util "^25.3.0" - string-length "^3.1.0" - -jest-worker@^25.2.6: - version "25.2.6" - resolved "https://registry.npm.taobao.org/jest-worker/download/jest-worker-25.2.6.tgz?cache=0&sync_timestamp=1585823471767&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjest-worker%2Fdownload%2Fjest-worker-25.2.6.tgz#d1292625326794ce187c38f51109faced3846c58" - integrity sha1-0SkmJTJnlM4YfDj1EQn6ztOEbFg= - dependencies: - merge-stream "^2.0.0" - supports-color "^7.0.0" - -jest@^25.1.0: - version "25.3.0" - resolved "https://registry.npm.taobao.org/jest/download/jest-25.3.0.tgz#7a5e59741d94b8662664c77a9f346246d6bf228b" - integrity sha1-el5ZdB2UuGYmZMd6nzRiRta/Ios= - dependencies: - "@jest/core" "^25.3.0" - import-local "^3.0.2" - jest-cli "^25.3.0" - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.npm.taobao.org/js-tokens/download/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha1-GSA/tZmR35jjoocFDUZHzerzJJk= - -js-yaml@^3.13.1: - version "3.13.1" - resolved "https://registry.npm.taobao.org/js-yaml/download/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha1-r/FRswv9+o5J4F2iLnQV6d+jeEc= - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.npm.taobao.org/jsbn/download/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - -jsdom@^15.2.1: - version "15.2.1" - resolved "https://registry.npm.taobao.org/jsdom/download/jsdom-15.2.1.tgz?cache=0&sync_timestamp=1585531956609&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjsdom%2Fdownload%2Fjsdom-15.2.1.tgz#d2feb1aef7183f86be521b8c6833ff5296d07ec5" - integrity sha1-0v6xrvcYP4a+UhuMaDP/UpbQfsU= - dependencies: - abab "^2.0.0" - acorn "^7.1.0" - acorn-globals "^4.3.2" - array-equal "^1.0.0" - cssom "^0.4.1" - cssstyle "^2.0.0" - data-urls "^1.1.0" - domexception "^1.0.1" - escodegen "^1.11.1" - html-encoding-sniffer "^1.0.2" - nwsapi "^2.2.0" - parse5 "5.1.0" - pn "^1.1.0" - request "^2.88.0" - request-promise-native "^1.0.7" - saxes "^3.1.9" - symbol-tree "^3.2.2" - tough-cookie "^3.0.1" - w3c-hr-time "^1.0.1" - w3c-xmlserializer "^1.1.2" - webidl-conversions "^4.0.2" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^7.0.0" - ws "^7.0.0" - xml-name-validator "^3.0.0" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.npm.taobao.org/jsesc/download/jsesc-2.5.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjsesc%2Fdownload%2Fjsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha1-gFZNLkg9rPbo7yCWUKZ98/DCg6Q= - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha1-afaofZUTq4u4/mO9sJecRI5oRmA= - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.npm.taobao.org/json-schema/download/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz?cache=0&sync_timestamp=1573614722142&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson-stringify-safe%2Fdownload%2Fjson-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - -json5@^2.1.2: - version "2.1.3" - resolved "https://registry.npm.taobao.org/json5/download/json5-2.1.3.tgz?cache=0&sync_timestamp=1586045666090&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson5%2Fdownload%2Fjson5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" - integrity sha1-ybD3+pIzv+WAf+ZvzzpWF+1ZfUM= - dependencies: - minimist "^1.2.5" - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.npm.taobao.org/kind-of/download/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.npm.taobao.org/kind-of/download/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha1-cpyR4thXt6QZofmqZWhcTDP1hF0= - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.npm.taobao.org/kind-of/download/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0= - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.npm.taobao.org/kleur/download/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha1-p5yezIbuHOP6YgbRIWxQHxR/wH4= - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.npm.taobao.org/leven/download/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha1-d4kd6DQGTMy6gq54QrtrFKE+1/I= - -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.npm.taobao.org/locate-path/download/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha1-Gvujlq/WdqbUJQTQpno6frn2KqA= - dependencies: - p-locate "^4.1.0" - -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.npm.taobao.org/lodash.sortby/download/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= - -lodash.xorby@^4.7.0: - version "4.7.0" - resolved "https://registry.npm.taobao.org/lodash.xorby/download/lodash.xorby-4.7.0.tgz#9c19a6f9f063a6eb53dd03c1b6871799801463d7" - integrity sha1-nBmm+fBjputT3QPBtocXmYAUY9c= - -lodash@^4.17.13, lodash@^4.17.15: - version "4.17.15" - resolved "https://registry.npm.taobao.org/lodash/download/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg= - -loglevel-debug@^0.0.1: - version "0.0.1" - resolved "https://registry.npm.taobao.org/loglevel-debug/download/loglevel-debug-0.0.1.tgz#89f89d3dba13cba8a2cb4615d5d3ad7189f48a29" - integrity sha1-ifidPboTy6iiy0YV1dOtcYn0iik= - dependencies: - loglevel "^1.4.0" - -loglevel@^1.4.0, loglevel@^1.6.1, loglevel@^1.6.7: - version "1.6.7" - resolved "https://registry.npm.taobao.org/loglevel/download/loglevel-1.6.7.tgz#b3e034233188c68b889f5b862415306f565e2c56" - integrity sha1-s+A0IzGIxouIn1uGJBUwb1ZeLFY= - -lolex@^5.0.0: - version "5.1.2" - resolved "https://registry.npm.taobao.org/lolex/download/lolex-5.1.2.tgz#953694d098ce7c07bc5ed6d0e42bc6c0c6d5a367" - integrity sha1-lTaU0JjOfAe8XtbQ5CvGwMbVo2c= - dependencies: - "@sinonjs/commons" "^1.7.0" - -long@^4.0.0: - version "4.0.0" - resolved "https://registry.npm.taobao.org/long/download/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" - integrity sha1-mntxz7fTYaGU6lVSQckvdGjVvyg= - -lru-cache@^5.0.0: - version "5.1.1" - resolved "https://registry.npm.taobao.org/lru-cache/download/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha1-HaJ+ZxAnGUdpXa9oSOhH8B2EuSA= - dependencies: - yallist "^3.0.2" - -make-dir@^3.0.0: - version "3.0.2" - resolved "https://registry.npm.taobao.org/make-dir/download/make-dir-3.0.2.tgz?cache=0&sync_timestamp=1581539706132&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmake-dir%2Fdownload%2Fmake-dir-3.0.2.tgz#04a1acbf22221e1d6ef43559f43e05a90dbb4392" - integrity sha1-BKGsvyIiHh1u9DVZ9D4FqQ27Q5I= - dependencies: - semver "^6.0.0" - -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.npm.taobao.org/makeerror/download/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= - dependencies: - tmpl "1.0.x" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.npm.taobao.org/map-cache/download/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/map-visit/download/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/merge-descriptors/download/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/merge-stream/download/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha1-UoI2KaFN0AyXcPtq1H3GMQ8sH2A= - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.npm.taobao.org/methods/download/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= - -micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.npm.taobao.org/micromatch/download/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha1-cIWbyVyYQJUvNZoGij/En57PrCM= - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -micromatch@^4.0.2: - version "4.0.2" - resolved "https://registry.npm.taobao.org/micromatch/download/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" - integrity sha1-T8sJmb+fvC/L3SEvbWKbmlbDklk= - dependencies: - braces "^3.0.1" - picomatch "^2.0.5" - -mime-db@1.43.0: - version "1.43.0" - resolved "https://registry.npm.taobao.org/mime-db/download/mime-db-1.43.0.tgz?cache=0&sync_timestamp=1578281136306&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime-db%2Fdownload%2Fmime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" - integrity sha1-ChLgUCZQ5HPXNVNQUOfI9OtPrlg= - -mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24: - version "2.1.26" - resolved "https://registry.npm.taobao.org/mime-types/download/mime-types-2.1.26.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime-types%2Fdownload%2Fmime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" - integrity sha1-nJIfwJt+FJpl39wNpNIJlyALCgY= - dependencies: - mime-db "1.43.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.npm.taobao.org/mime/download/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE= - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs= - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM= - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.npm.taobao.org/minimist/download/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI= - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.npm.taobao.org/mixin-deep/download/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha1-ESC0PcNZp4Xc5ltVuC4lfM9HlWY= - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.1: - version "2.1.1" - resolved "https://registry.npm.taobao.org/ms/download/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo= - -ms@^2.1.1: - version "2.1.2" - resolved "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk= - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.npm.taobao.org/nanomatch/download/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha1-uHqKpPwN6P5r6IiVs4mD/yZb0Rk= - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.npm.taobao.org/natural-compare/download/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs= - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.npm.taobao.org/nice-try/download/nice-try-1.0.5.tgz?cache=0&sync_timestamp=1584699756095&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnice-try%2Fdownload%2Fnice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha1-ozeKdpbOfSI+iPybdkvX7xCJ42Y= - -node-fetch@^2.1.2, node-fetch@^2.2.0, node-fetch@^2.6.0: - version "2.6.0" - resolved "https://registry.npm.taobao.org/node-fetch/download/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" - integrity sha1-5jNFY4bUqlWGP2dqerDaqP3ssP0= - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.npm.taobao.org/node-int64/download/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= - -node-modules-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/node-modules-regexp/download/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" - integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= - -node-notifier@^6.0.0: - version "6.0.0" - resolved "https://registry.npm.taobao.org/node-notifier/download/node-notifier-6.0.0.tgz#cea319e06baa16deec8ce5cd7f133c4a46b68e12" - integrity sha1-zqMZ4GuqFt7sjOXNfxM8Ska2jhI= - dependencies: - growly "^1.3.0" - is-wsl "^2.1.1" - semver "^6.3.0" - shellwords "^0.1.1" - which "^1.3.1" - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/normalize-path/download/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU= - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-2.0.2.tgz?cache=0&sync_timestamp=1577052941951&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnpm-run-path%2Fdownload%2Fnpm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" - -npm-run-path@^4.0.0: - version "4.0.1" - resolved "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-4.0.1.tgz?cache=0&sync_timestamp=1577052941951&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnpm-run-path%2Fdownload%2Fnpm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha1-t+zR5e1T2o43pV4cImnguX7XSOo= - dependencies: - path-key "^3.0.0" - -nwsapi@^2.2.0: - version "2.2.0" - resolved "https://registry.npm.taobao.org/nwsapi/download/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" - integrity sha1-IEh5qePQaP8qVROcLHcngGgaOLc= - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha1-R6ewFrqmi1+g7PPe4IqFxnmsZFU= - -object-assign@^4: - version "4.1.1" - resolved "https://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.npm.taobao.org/object-copy/download/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-inspect@^1.7.0: - version "1.7.0" - resolved "https://registry.npm.taobao.org/object-inspect/download/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" - integrity sha1-9Pa9GBrXfwBrXs5gvQtvOY/3Smc= - -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.npm.taobao.org/object-keys/download/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha1-HEfyct8nfzsdrwYWd9nILiMixg4= - -object-path@^0.11.4: - version "0.11.4" - resolved "https://registry.npm.taobao.org/object-path/download/object-path-0.11.4.tgz#370ae752fbf37de3ea70a861c23bba8915691949" - integrity sha1-NwrnUvvzfePqcKhhwju6iRVpGUk= - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.npm.taobao.org/object-visit/download/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.assign@^4.1.0: - version "4.1.0" - resolved "https://registry.npm.taobao.org/object.assign/download/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha1-lovxEA15Vrs8oIbwBvhGs7xACNo= - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - -object.getownpropertydescriptors@^2.1.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/object.getownpropertydescriptors/download/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" - integrity sha1-Npvx+VktiridcS3O1cuBx8U1Jkk= - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.npm.taobao.org/object.pick/download/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= - dependencies: - ee-first "1.1.1" - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.npm.taobao.org/once/download/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -onetime@^5.1.0: - version "5.1.0" - resolved "https://registry.npm.taobao.org/onetime/download/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" - integrity sha1-//DzyRYX/mK7UBiWNumayKbfe+U= - dependencies: - mimic-fn "^2.1.0" - -optimism@^0.10.0: - version "0.10.3" - resolved "https://registry.npm.taobao.org/optimism/download/optimism-0.10.3.tgz#163268fdc741dea2fb50f300bedda80356445fd7" - integrity sha1-FjJo/cdB3qL7UPMAvt2oA1ZEX9c= - dependencies: - "@wry/context" "^0.4.0" - -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.npm.taobao.org/optionator/download/optionator-0.8.3.tgz?cache=0&sync_timestamp=1585966209412&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Foptionator%2Fdownload%2Foptionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha1-hPodA2/p08fiHZmIS2ARZ+yPtJU= - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -p-each-series@^2.1.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/p-each-series/download/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" - integrity sha1-lhyN0/GV6pbHR+Y2smK4AKaxr0g= - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/p-finally/download/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-finally@^2.0.0: - version "2.0.1" - resolved "https://registry.npm.taobao.org/p-finally/download/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" - integrity sha1-vW/KqcVZoJa2gIBvTWV7Pw8kBWE= - -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.npm.taobao.org/p-limit/download/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE= - dependencies: - p-try "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.npm.taobao.org/p-locate/download/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha1-o0KLtwiLOmApL2aRkni3wpetTwc= - dependencies: - p-limit "^2.2.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha1-yyhoVA4xPWHeWPr741zpAE1VQOY= - -parse5@5.1.0: - version "5.1.0" - resolved "https://registry.npm.taobao.org/parse5/download/parse5-5.1.0.tgz?cache=0&sync_timestamp=1573036827948&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse5%2Fdownload%2Fparse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" - integrity sha1-xZNByXI/QUxFKXVWTHwApo1YrNI= - -parseurl@^1.3.2, parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.npm.taobao.org/parseurl/download/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ= - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.npm.taobao.org/pascalcase/download/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.npm.taobao.org/path-exists/download/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha1-UTvb4tO5XXdi6METfvoZXGxhtbM= - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.npm.taobao.org/path-key/download/path-key-2.0.1.tgz?cache=0&sync_timestamp=1574441376633&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-key%2Fdownload%2Fpath-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.npm.taobao.org/path-key/download/path-key-3.1.1.tgz?cache=0&sync_timestamp=1574441376633&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-key%2Fdownload%2Fpath-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha1-WB9q3mWMu6ZaDTOA3ndTKVBU83U= - -path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.npm.taobao.org/path-parse/download/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha1-1i27VnlAXXLEc37FhgDp3c8G0kw= - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-0.1.7.tgz?cache=0&sync_timestamp=1574278262588&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-to-regexp%2Fdownload%2Fpath-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - -picomatch@^2.0.4, picomatch@^2.0.5: - version "2.2.2" - resolved "https://registry.npm.taobao.org/picomatch/download/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha1-IfMz6ba46v8CRo9RRupAbTRfTa0= - -pirates@^4.0.1: - version "4.0.1" - resolved "https://registry.npm.taobao.org/pirates/download/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" - integrity sha1-ZDqSyviUVm+RsrmG0sZpUKji+4c= - dependencies: - node-modules-regexp "^1.0.0" - -pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha1-8JkTPfft5CLoHR2ESCcO6z5CYfM= - dependencies: - find-up "^4.0.0" - -pn@^1.1.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/pn/download/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" - integrity sha1-4vTO8OIZ9GPBeas3Rj5OHs3Muvs= - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.npm.taobao.org/posix-character-classes/download/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - -pretty-format@^24.7.0: - version "24.9.0" - resolved "https://registry.npm.taobao.org/pretty-format/download/pretty-format-24.9.0.tgz?cache=0&sync_timestamp=1586352129128&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpretty-format%2Fdownload%2Fpretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" - integrity sha1-EvrDGzcBmk7qPBGqmpWet2KKp8k= - dependencies: - "@jest/types" "^24.9.0" - ansi-regex "^4.0.0" - ansi-styles "^3.2.0" - react-is "^16.8.4" - -pretty-format@^25.3.0: - version "25.3.0" - resolved "https://registry.npm.taobao.org/pretty-format/download/pretty-format-25.3.0.tgz?cache=0&sync_timestamp=1586352129128&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpretty-format%2Fdownload%2Fpretty-format-25.3.0.tgz#d0a4f988ff4a6cd350342fdabbb809aeb4d49ad5" - integrity sha1-0KT5iP9KbNNQNC/au7gJrrTUmtU= - dependencies: - "@jest/types" "^25.3.0" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^16.12.0" - -prompts@^2.0.1: - version "2.3.2" - resolved "https://registry.npm.taobao.org/prompts/download/prompts-2.3.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fprompts%2Fdownload%2Fprompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" - integrity sha1-SAVy2J7POVZtK9P+LJ/Mt8TAsGg= - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.4" - -proxy-addr@~2.0.5: - version "2.0.6" - resolved "https://registry.npm.taobao.org/proxy-addr/download/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" - integrity sha1-/cIzZQVEfT8vLGOO0nLK9hS7sr8= - dependencies: - forwarded "~0.1.2" - ipaddr.js "1.9.1" - -psl@^1.1.28: - version "1.8.0" - resolved "https://registry.npm.taobao.org/psl/download/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha1-kyb4vPsBOtzABf3/BWrM4CDlHCQ= - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/pump/download/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ= - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha1-tYsBCsQMIsVldhbI0sLALHv0eew= - -qs@6.7.0: - version "6.7.0" - resolved "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz?cache=0&sync_timestamp=1585168773645&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" - integrity sha1-QdwaAV49WB8WIXdr4xr7KHapsbw= - -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz?cache=0&sync_timestamp=1585168773645&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha1-yzroBuh0BERYTvFUzo7pjUA/PjY= - -range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.npm.taobao.org/range-parser/download/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha1-PPNwI9GZ4cJNGlW4SADC8+ZGgDE= - -raw-body@2.4.0: - version "2.4.0" - resolved "https://registry.npm.taobao.org/raw-body/download/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" - integrity sha1-oc5vucm8NWylLoklarWQWeE9AzI= - dependencies: - bytes "3.1.0" - http-errors "1.7.2" - iconv-lite "0.4.24" - unpipe "1.0.0" - -react-is@^16.12.0, react-is@^16.8.4: - version "16.13.1" - resolved "https://registry.npm.taobao.org/react-is/download/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha1-eJcppNw23imZ3BVt1sHZwYzqVqQ= - -realpath-native@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/realpath-native/download/realpath-native-2.0.0.tgz?cache=0&sync_timestamp=1579721691172&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frealpath-native%2Fdownload%2Frealpath-native-2.0.0.tgz#7377ac429b6e1fd599dc38d08ed942d0d7beb866" - integrity sha1-c3esQptuH9WZ3DjQjtlC0Ne+uGY= - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.npm.taobao.org/regex-not/download/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw= - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.npm.taobao.org/remove-trailing-separator/download/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.npm.taobao.org/repeat-element/download/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha1-eC4NglwMWjuzlzH4Tv7mt0Lmsc4= - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.npm.taobao.org/repeat-string/download/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -request-promise-core@1.1.3: - version "1.1.3" - resolved "https://registry.npm.taobao.org/request-promise-core/download/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" - integrity sha1-6aPAgbUTgN/qZ3M2Bh/qh5qCnuk= - dependencies: - lodash "^4.17.15" - -request-promise-native@^1.0.7: - version "1.0.8" - resolved "https://registry.npm.taobao.org/request-promise-native/download/request-promise-native-1.0.8.tgz?cache=0&sync_timestamp=1572829683581&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frequest-promise-native%2Fdownload%2Frequest-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" - integrity sha1-pFW5YLgm5E4r+Jma9k3/K/5YyzY= - dependencies: - request-promise-core "1.1.3" - stealthy-require "^1.1.1" - tough-cookie "^2.3.3" - -request@^2.88.0: - version "2.88.2" - resolved "https://registry.npm.taobao.org/request/download/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha1-1zyRhzHLWofaBH4gcjQUb2ZNErM= - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.npm.taobao.org/require-directory/download/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/require-main-filename/download/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha1-0LMp7MfMD2Fkn2IhW+aa9UqomJs= - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/resolve-cwd/download/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha1-DwB18bslRHZs9zumpuKt/ryxPy0= - dependencies: - resolve-from "^5.0.0" - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.npm.taobao.org/resolve-from/download/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha1-w1IlhD3493bfIcV1V7wIfp39/Gk= - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.npm.taobao.org/resolve-url/download/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@1.1.7: - version "1.1.7" - resolved "https://registry.npm.taobao.org/resolve/download/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= - -resolve@^1.15.1, resolve@^1.3.2: - version "1.15.1" - resolved "https://registry.npm.taobao.org/resolve/download/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" - integrity sha1-J73N7/6vLWJEuVuw+fS0ZTRR8+g= - dependencies: - path-parse "^1.0.6" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.npm.taobao.org/ret/download/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w= - -retry@0.12.0: - version "0.12.0" - resolved "https://registry.npm.taobao.org/retry/download/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= - -rimraf@^3.0.0: - version "3.0.2" - resolved "https://registry.npm.taobao.org/rimraf/download/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha1-8aVAK6YiCtUswSgrrBrjqkn9Bho= - dependencies: - glob "^7.1.3" - -rsvp@^4.8.4: - version "4.8.5" - resolved "https://registry.npm.taobao.org/rsvp/download/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" - integrity sha1-yPFVMR0Wf2jyHhaN9x7FsIMRNzQ= - -safe-buffer@5.1.2, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha1-mR7GnSluAxN0fVm9/St0XDX4go0= - -safe-buffer@^5.0.1, safe-buffer@^5.1.2: - version "5.2.0" - resolved "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" - integrity sha1-t02uxJsRSPiMZLaNSbHoFcHy9Rk= - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.npm.taobao.org/safe-regex/download/safe-regex-1.1.0.tgz?cache=0&sync_timestamp=1571687713993&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsafe-regex%2Fdownload%2Fsafe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo= - -sane@^4.0.3: - version "4.1.0" - resolved "https://registry.npm.taobao.org/sane/download/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" - integrity sha1-7Ygf2SJzOmxGG8GJ3CtsAG8//e0= - dependencies: - "@cnakazawa/watch" "^1.0.3" - anymatch "^2.0.0" - capture-exit "^2.0.0" - exec-sh "^0.3.2" - execa "^1.0.0" - fb-watchman "^2.0.0" - micromatch "^3.1.4" - minimist "^1.1.1" - walker "~1.0.5" - -saxes@^3.1.9: - version "3.1.11" - resolved "https://registry.npm.taobao.org/saxes/download/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" - integrity sha1-1Z0f0zLskq2YouCy7mRHAjhLHFs= - dependencies: - xmlchars "^2.1.1" - -semver@^5.4.1, semver@^5.5.0: - version "5.7.1" - resolved "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz?cache=0&sync_timestamp=1586216535664&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha1-qVT5Ma66UI0we78Gnv8MAclhFvc= - -semver@^6.0.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1586216535664&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0= - -send@0.17.1: - version "0.17.1" - resolved "https://registry.npm.taobao.org/send/download/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha1-wdiwWfeQD3Rm3Uk4vcROEd2zdsg= - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.7.2" - mime "1.6.0" - ms "2.1.1" - on-finished "~2.3.0" - range-parser "~1.2.1" - statuses "~1.5.0" - -serve-static@1.14.1: - version "1.14.1" - resolved "https://registry.npm.taobao.org/serve-static/download/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha1-Zm5jbcTwEPfvKZcKiKZ0MgiYsvk= - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.17.1" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/set-blocking/download/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.npm.taobao.org/set-value/download/set-value-2.0.1.tgz?cache=0&sync_timestamp=1585775409029&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fset-value%2Fdownload%2Fset-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha1-oY1AUw5vB95CKMfe/kInr4ytAFs= - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM= - -sha.js@^2.4.11: - version "2.4.11" - resolved "https://registry.npm.taobao.org/sha.js/download/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha1-N6XPC4HsvGlD3hCbopYNGyZYSuc= - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.npm.taobao.org/shebang-command/download/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/shebang-command/download/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha1-zNCvT4g1+9wmW4JGGq8MNmY/NOo= - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/shebang-regex/download/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/shebang-regex/download/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha1-rhbxZE2HPsrYQ7AwexQzYtTEIXI= - -shellwords@^0.1.1: - version "0.1.1" - resolved "https://registry.npm.taobao.org/shellwords/download/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" - integrity sha1-1rkYHBpI05cyTISHHvvPxz/AZUs= - -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.3" - resolved "https://registry.npm.taobao.org/signal-exit/download/signal-exit-3.0.3.tgz?cache=0&sync_timestamp=1585253373618&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsignal-exit%2Fdownload%2Fsignal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha1-oUEMLt2PB3sItOJTyOrPyvBXRhw= - -sisteransi@^1.0.4: - version "1.0.5" - resolved "https://registry.npm.taobao.org/sisteransi/download/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha1-E01oEpd1ZDfMBcoBNw06elcQde0= - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/slash/download/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha1-ZTm+hwwWWtvVJAIg2+Nh8bxNRjQ= - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.npm.taobao.org/snapdragon-node/download/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha1-bBdfhv8UvbByRWPo88GwIaKGhTs= - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.npm.taobao.org/snapdragon-util/download/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI= - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.npm.taobao.org/snapdragon/download/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0= - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.npm.taobao.org/source-map-resolve/download/source-map-resolve-0.5.3.tgz?cache=0&sync_timestamp=1584831908370&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map-resolve%2Fdownload%2Fsource-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha1-GQhmvs51U+H48mei7oLGBrVQmho= - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@^0.5.6: - version "0.5.16" - resolved "https://registry.npm.taobao.org/source-map-support/download/source-map-support-0.5.16.tgz?cache=0&sync_timestamp=1572390065703&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map-support%2Fdownload%2Fsource-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" - integrity sha1-CuBp5/47p1OMZMmFFeNTOerFoEI= - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.npm.taobao.org/source-map-url/download/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= - -source-map@^0.5.0, source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha1-dHIq8y6WFOnCh6jQu95IteLxomM= - -source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.npm.taobao.org/source-map/download/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha1-UwL4FpAxc1ImVECS5kmB91F1A4M= - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.npm.taobao.org/split-string/download/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha1-fLCd2jqGWFcFxks5pkZgOGguj+I= - dependencies: - extend-shallow "^3.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.npm.taobao.org/sshpk/download/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha1-+2YcC+8ps520B2nuOfpwCT1vaHc= - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -stack-utils@^1.0.1: - version "1.0.2" - resolved "https://registry.npm.taobao.org/stack-utils/download/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" - integrity sha1-M+ujiXeIVYvr/C2wWdwVjsNs67g= - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.npm.taobao.org/static-extend/download/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -"statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - -stealthy-require@^1.1.1: - version "1.1.1" - resolved "https://registry.npm.taobao.org/stealthy-require/download/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= - -streamsearch@0.1.2: - version "0.1.2" - resolved "https://registry.npm.taobao.org/streamsearch/download/streamsearch-0.1.2.tgz#808b9d0e56fc273d809ba57338e929919a1a9f1a" - integrity sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo= - -string-length@^3.1.0: - version "3.1.0" - resolved "https://registry.npm.taobao.org/string-length/download/string-length-3.1.0.tgz?cache=0&sync_timestamp=1584636016697&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-length%2Fdownload%2Fstring-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" - integrity sha1-EH74wjRW4Yeoq9SmEWL/SsbiWDc= - dependencies: - astral-regex "^1.0.0" - strip-ansi "^5.2.0" - -string-width@^4.1.0, string-width@^4.2.0: - version "4.2.0" - resolved "https://registry.npm.taobao.org/string-width/download/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" - integrity sha1-lSGCxGzHssMT0VluYjmSvRY7crU= - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - -string.prototype.trimend@^1.0.0: - version "1.0.1" - resolved "https://registry.npm.taobao.org/string.prototype.trimend/download/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" - integrity sha1-hYEqa4R6wAInD1gIFGBkyZX7aRM= - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - -string.prototype.trimleft@^2.1.1: - version "2.1.2" - resolved "https://registry.npm.taobao.org/string.prototype.trimleft/download/string.prototype.trimleft-2.1.2.tgz?cache=0&sync_timestamp=1585557033464&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring.prototype.trimleft%2Fdownload%2Fstring.prototype.trimleft-2.1.2.tgz#4408aa2e5d6ddd0c9a80739b087fbc067c03b3cc" - integrity sha1-RAiqLl1t3QyagHObCH+8BnwDs8w= - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - string.prototype.trimstart "^1.0.0" - -string.prototype.trimright@^2.1.1: - version "2.1.2" - resolved "https://registry.npm.taobao.org/string.prototype.trimright/download/string.prototype.trimright-2.1.2.tgz?cache=0&sync_timestamp=1585557209944&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring.prototype.trimright%2Fdownload%2Fstring.prototype.trimright-2.1.2.tgz#c76f1cef30f21bbad8afeb8db1511496cfb0f2a3" - integrity sha1-x28c7zDyG7rYr+uNsVEUls+w8qM= - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - string.prototype.trimend "^1.0.0" - -string.prototype.trimstart@^1.0.0: - version "1.0.1" - resolved "https://registry.npm.taobao.org/string.prototype.trimstart/download/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" - integrity sha1-FK9tnzSwU/fPyJty+PLuFLkDmlQ= - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - -strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4= - dependencies: - ansi-regex "^4.1.0" - -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI= - dependencies: - ansi-regex "^5.0.0" - -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.npm.taobao.org/strip-bom/download/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha1-nDUFwdtFvO3KPZz3oW9cWqOQGHg= - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/strip-eof/download/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/strip-final-newline/download/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha1-ibhS+y/L6Tb29LMYevsKEsGrWK0= - -subscriptions-transport-ws@^0.9.11, subscriptions-transport-ws@^0.9.16: - version "0.9.16" - resolved "https://registry.npm.taobao.org/subscriptions-transport-ws/download/subscriptions-transport-ws-0.9.16.tgz#90a422f0771d9c32069294c08608af2d47f596ec" - integrity sha1-kKQi8HcdnDIGkpTAhgivLUf1luw= - dependencies: - backo2 "^1.0.2" - eventemitter3 "^3.1.0" - iterall "^1.2.1" - symbol-observable "^1.0.4" - ws "^5.2.0" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.npm.taobao.org/supports-color/download/supports-color-5.5.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha1-4uaaRKyHcveKHsCzW2id9lMO/I8= - dependencies: - has-flag "^3.0.0" - -supports-color@^7.0.0, supports-color@^7.1.0: - version "7.1.0" - resolved "https://registry.npm.taobao.org/supports-color/download/supports-color-7.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" - integrity sha1-aOMlkd9z4lrRxLSRCKLsUHliv9E= - dependencies: - has-flag "^4.0.0" - -supports-hyperlinks@^2.0.0: - version "2.1.0" - resolved "https://registry.npm.taobao.org/supports-hyperlinks/download/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" - integrity sha1-9mPfJSr183xdSbvX7u+p4Lnlnkc= - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" - -symbol-observable@^1.0.2, symbol-observable@^1.0.4: - version "1.2.0" - resolved "https://registry.npm.taobao.org/symbol-observable/download/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" - integrity sha1-wiaIrtTqs83C3+rLtWFmBWCgCAQ= - -symbol-tree@^3.2.2: - version "3.2.4" - resolved "https://registry.npm.taobao.org/symbol-tree/download/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha1-QwY30ki6d+B4iDlR+5qg7tfGP6I= - -terminal-link@^2.0.0: - version "2.1.1" - resolved "https://registry.npm.taobao.org/terminal-link/download/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" - integrity sha1-FKZKJ6s8Dfkz6lRvulXy0HjtyZQ= - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.npm.taobao.org/test-exclude/download/test-exclude-6.0.0.tgz?cache=0&sync_timestamp=1576874719359&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftest-exclude%2Fdownload%2Ftest-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha1-BKhphmHYBepvopO2y55jrARO8V4= - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -throat@^5.0.0: - version "5.0.0" - resolved "https://registry.npm.taobao.org/throat/download/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" - integrity sha1-xRmSNYA6rRh1SmZ9ZZtecs4Wdks= - -tmpl@1.0.x: - version "1.0.4" - resolved "https://registry.npm.taobao.org/tmpl/download/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" - integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/to-fast-properties/download/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.npm.taobao.org/to-object-path/download/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ= - dependencies: - is-number "^7.0.0" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.npm.taobao.org/to-regex/download/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4= - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/toidentifier/download/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM= - -tough-cookie@^2.3.3, tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.5.0.tgz?cache=0&sync_timestamp=1584647110516&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftough-cookie%2Fdownload%2Ftough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha1-zZ+yoKodWhK0c72fuW+j3P9lreI= - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tough-cookie@^3.0.1: - version "3.0.1" - resolved "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-3.0.1.tgz?cache=0&sync_timestamp=1584647110516&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftough-cookie%2Fdownload%2Ftough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" - integrity sha1-nfT1fnOcJpMKAYGEiH9K233Kc7I= - dependencies: - ip-regex "^2.1.0" - psl "^1.1.28" - punycode "^2.1.1" - -tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/tr46/download/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= - dependencies: - punycode "^2.1.0" - -ts-invariant@^0.4.0: - version "0.4.4" - resolved "https://registry.npm.taobao.org/ts-invariant/download/ts-invariant-0.4.4.tgz#97a523518688f93aafad01b0e80eb803eb2abd86" - integrity sha1-l6UjUYaI+TqvrQGw6A64A+sqvYY= - dependencies: - tslib "^1.9.3" - -tslib@^1.10.0, tslib@^1.9.3: - version "1.11.1" - resolved "https://registry.npm.taobao.org/tslib/download/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" - integrity sha1-6xXRKIJ/vuKEFUnhcfRe0zisfjU= - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz?cache=0&sync_timestamp=1581365004105&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftweetnacl%2Fdownload%2Ftweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.npm.taobao.org/type-check/download/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.npm.taobao.org/type-detect/download/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha1-dkb7XxiHHPu3dJ5pvTmmOI63RQw= - -type-fest@^0.11.0: - version "0.11.0" - resolved "https://registry.npm.taobao.org/type-fest/download/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" - integrity sha1-l6vwhyMQ/tiKXEZrJWgVdhReM/E= - -type-is@^1.6.16, type-is@~1.6.17, type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.npm.taobao.org/type-is/download/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha1-TlUs0F3wlGfcvE73Od6J8s83wTE= - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.npm.taobao.org/typedarray-to-buffer/download/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha1-qX7nqf9CaRufeD/xvFES/j/KkIA= - dependencies: - is-typedarray "^1.0.0" - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.npm.taobao.org/union-value/download/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha1-C2/nuDWuzaYcbqTU8CwUIh4QmEc= - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.npm.taobao.org/unset-value/download/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.npm.taobao.org/uri-js/download/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha1-lMVA4f93KVbiKZUHwBCupsiDjrA= - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.npm.taobao.org/urix/download/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.npm.taobao.org/use/download/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha1-1QyMrHmhn7wg8pEfVuuXP04QBw8= - -util.promisify@^1.0.0: - version "1.0.1" - resolved "https://registry.npm.taobao.org/util.promisify/download/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" - integrity sha1-a693dLgO6w91INi4HQeYKlmruu4= - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.2" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.0" - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.npm.taobao.org/utils-merge/download/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - -uuid@^3.1.0, uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.npm.taobao.org/uuid/download/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha1-sj5DWK+oogL+ehAK8fX4g/AgB+4= - -v8-to-istanbul@^4.0.1: - version "4.1.3" - resolved "https://registry.npm.taobao.org/v8-to-istanbul/download/v8-to-istanbul-4.1.3.tgz#22fe35709a64955f49a08a7c7c959f6520ad6f20" - integrity sha1-Iv41cJpklV9JoIp8fJWfZSCtbyA= - dependencies: - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" - source-map "^0.7.3" - -vary@^1, vary@~1.1.2: - version "1.1.2" - resolved "https://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.npm.taobao.org/verror/download/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -w3c-hr-time@^1.0.1: - version "1.0.2" - resolved "https://registry.npm.taobao.org/w3c-hr-time/download/w3c-hr-time-1.0.2.tgz?cache=0&sync_timestamp=1583455806135&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fw3c-hr-time%2Fdownload%2Fw3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" - integrity sha1-ConN9cwVgi35w2BUNnaWPgzDCM0= - dependencies: - browser-process-hrtime "^1.0.0" - -w3c-xmlserializer@^1.1.2: - version "1.1.2" - resolved "https://registry.npm.taobao.org/w3c-xmlserializer/download/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" - integrity sha1-MEhcp9cKb9BSQgo9Ev2Q5jOc55Q= - dependencies: - domexception "^1.0.1" - webidl-conversions "^4.0.2" - xml-name-validator "^3.0.0" - -walker@^1.0.7, walker@~1.0.5: - version "1.0.7" - resolved "https://registry.npm.taobao.org/walker/download/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= - dependencies: - makeerror "1.0.x" - -webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.npm.taobao.org/webidl-conversions/download/webidl-conversions-4.0.2.tgz?cache=0&sync_timestamp=1584995749925&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebidl-conversions%2Fdownload%2Fwebidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - integrity sha1-qFWYCx8LazWbodXZ+zmulB+qY60= - -whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.npm.taobao.org/whatwg-encoding/download/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha1-WrrPd3wyFmpR0IXWtPPn0nET3bA= - dependencies: - iconv-lite "0.4.24" - -whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.npm.taobao.org/whatwg-mimetype/download/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha1-PUseAxLSB5h5+Cav8Y2+7KWWD78= - -whatwg-url@^7.0.0: - version "7.1.0" - resolved "https://registry.npm.taobao.org/whatwg-url/download/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" - integrity sha1-wsSS8eymEpiO/T0iZr4bn8YXDQY= - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.npm.taobao.org/which-module/download/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which@^1.2.9, which@^1.3.1: - version "1.3.1" - resolved "https://registry.npm.taobao.org/which/download/which-1.3.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwhich%2Fdownload%2Fwhich-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo= - dependencies: - isexe "^2.0.0" - -which@^2.0.1, which@^2.0.2: - version "2.0.2" - resolved "https://registry.npm.taobao.org/which/download/which-2.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwhich%2Fdownload%2Fwhich-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha1-fGqN0KY2oDJ+ELWckobu6T8/UbE= - dependencies: - isexe "^2.0.0" - -word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.npm.taobao.org/word-wrap/download/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha1-YQY29rH3A4kb00dxzLF/uTtHB5w= - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-6.2.0.tgz?cache=0&sync_timestamp=1573488719878&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwrap-ansi%2Fdownload%2Fwrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha1-6Tk7oHEC5skaOyIUePAlfNKFblM= - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.npm.taobao.org/write-file-atomic/download/write-file-atomic-3.0.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwrite-file-atomic%2Fdownload%2Fwrite-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha1-Vr1cWlxwSBzRnFcb05q5ZaXeVug= - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -ws@^5.2.0: - version "5.2.2" - resolved "https://registry.npm.taobao.org/ws/download/ws-5.2.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fws%2Fdownload%2Fws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" - integrity sha1-3/7xSGa46NyRM1glFNG++vlumA8= - dependencies: - async-limiter "~1.0.0" - -ws@^6.0.0: - version "6.2.1" - resolved "https://registry.npm.taobao.org/ws/download/ws-6.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fws%2Fdownload%2Fws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" - integrity sha1-RC/fCkftZPWbal2P8TD0dI7VJPs= - dependencies: - async-limiter "~1.0.0" - -ws@^7.0.0: - version "7.2.3" - resolved "https://registry.npm.taobao.org/ws/download/ws-7.2.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fws%2Fdownload%2Fws-7.2.3.tgz#a5411e1fb04d5ed0efee76d26d5c46d830c39b46" - integrity sha1-pUEeH7BNXtDv7nbSbVxG2DDDm0Y= - -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.npm.taobao.org/xml-name-validator/download/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha1-auc+Bt5NjG5H+fsYH3jWSK1FfGo= - -xmlchars@^2.1.1: - version "2.2.0" - resolved "https://registry.npm.taobao.org/xmlchars/download/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha1-Bg/hvLf5x2/ioX24apvDq4lCEMs= - -y18n@^4.0.0: - version "4.0.0" - resolved "https://registry.npm.taobao.org/y18n/download/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha1-le+U+F7MgdAHwmThkKEg8KPIVms= - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.npm.taobao.org/yallist/download/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha1-27fa+b/YusmrRev2ArjLrQ1dCP0= - -yargs-parser@^18.1.1: - version "18.1.2" - resolved "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-18.1.2.tgz?cache=0&sync_timestamp=1585243543699&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs-parser%2Fdownload%2Fyargs-parser-18.1.2.tgz#2f482bea2136dbde0861683abea7756d30b504f1" - integrity sha1-L0gr6iE2294IYWg6vqd1bTC1BPE= - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs@^15.3.1: - version "15.3.1" - resolved "https://registry.npm.taobao.org/yargs/download/yargs-15.3.1.tgz?cache=0&sync_timestamp=1584344151789&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs%2Fdownload%2Fyargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" - integrity sha1-lQW0cnY5Y+VK/mAUitJ6MwgY6Ys= - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.1" - -zen-observable-ts@^0.8.21: - version "0.8.21" - resolved "https://registry.npm.taobao.org/zen-observable-ts/download/zen-observable-ts-0.8.21.tgz#85d0031fbbde1eba3cd07d3ba90da241215f421d" - integrity sha1-hdADH7veHro80H07qQ2iQSFfQh0= - dependencies: - tslib "^1.9.3" - zen-observable "^0.8.0" - -zen-observable@^0.8.0: - version "0.8.15" - resolved "https://registry.npm.taobao.org/zen-observable/download/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15" - integrity sha1-lkFcUS2OP/2SCv04iWBOMLnqrBU= diff --git a/examples/start-feceration.sh b/examples/start-feceration.sh deleted file mode 100755 index a7b898bf..00000000 --- a/examples/start-feceration.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -function cleanup { - kill "$ACCOUNTS_PID" - kill "$PRODUCTS_PID" - kill "$REVIEWS_PID" -} -trap cleanup EXIT - -cargo build --example federation-accounts -cargo build --example federation-products -cargo build --example federation-reviews - -cargo run --example federation-accounts & -ACCOUNTS_PID=$! - -cargo run --example federation-products & -PRODUCTS_PID=$! - -cargo run --example federation-reviews & -REVIEWS_PID=$! - -sleep 3 - -node federation/index.js diff --git a/examples/starwars/mod.rs b/examples/starwars/mod.rs deleted file mode 100644 index 674d3498..00000000 --- a/examples/starwars/mod.rs +++ /dev/null @@ -1,135 +0,0 @@ -mod model; - -use model::Episode; -pub use model::QueryRoot; -use slab::Slab; -use std::collections::HashMap; - -pub struct StarWarsChar { - id: &'static str, - name: &'static str, - friends: Vec, - appears_in: Vec, - home_planet: Option<&'static str>, - primary_function: Option<&'static str>, -} - -pub struct StarWars { - luke: usize, - artoo: usize, - chars: Slab, - human_data: HashMap<&'static str, usize>, - droid_data: HashMap<&'static str, usize>, -} - -impl StarWars { - pub fn new() -> Self { - let mut chars = Slab::new(); - - let luke = chars.insert(StarWarsChar { - id: "1000", - name: "Luke Skywalker", - friends: vec![], - appears_in: vec![], - home_planet: Some("Tatooine"), - primary_function: None, - }); - - let vader = chars.insert(StarWarsChar { - id: "1001", - name: "Luke Skywalker", - friends: vec![], - appears_in: vec![], - home_planet: Some("Tatooine"), - primary_function: None, - }); - - let han = chars.insert(StarWarsChar { - id: "1002", - name: "Han Solo", - friends: vec![], - appears_in: vec![Episode::Empire, Episode::NewHope, Episode::Jedi], - home_planet: None, - primary_function: None, - }); - - let leia = chars.insert(StarWarsChar { - id: "1003", - name: "Leia Organa", - friends: vec![], - appears_in: vec![Episode::Empire, Episode::NewHope, Episode::Jedi], - home_planet: Some("Alderaa"), - primary_function: None, - }); - - let tarkin = chars.insert(StarWarsChar { - id: "1004", - name: "Wilhuff Tarkin", - friends: vec![], - appears_in: vec![Episode::Empire, Episode::NewHope, Episode::Jedi], - home_planet: None, - primary_function: None, - }); - - let threepio = chars.insert(StarWarsChar { - id: "2000", - name: "C-3PO", - friends: vec![], - appears_in: vec![Episode::Empire, Episode::NewHope, Episode::Jedi], - home_planet: None, - primary_function: Some("Protocol"), - }); - - let artoo = chars.insert(StarWarsChar { - id: "2001", - name: "R2-D2", - friends: vec![], - appears_in: vec![Episode::Empire, Episode::NewHope, Episode::Jedi], - home_planet: None, - primary_function: Some("Astromech"), - }); - - chars[luke].friends = vec![han, leia, threepio, artoo]; - chars[vader].friends = vec![tarkin]; - chars[han].friends = vec![luke, leia, artoo]; - chars[leia].friends = vec![luke, han, threepio, artoo]; - chars[tarkin].friends = vec![vader]; - chars[threepio].friends = vec![luke, han, leia, artoo]; - chars[artoo].friends = vec![luke, han, leia]; - - let mut human_data = HashMap::new(); - human_data.insert("1000", luke); - human_data.insert("1001", vader); - human_data.insert("1002", han); - human_data.insert("1003", leia); - human_data.insert("1004", tarkin); - - let mut droid_data = HashMap::new(); - droid_data.insert("2000", threepio); - droid_data.insert("2001", artoo); - - Self { - luke, - artoo, - chars, - human_data, - droid_data, - } - } - - pub fn human(&self, id: &str) -> Option { - self.human_data.get(id).cloned() - } - - pub fn droid(&self, id: &str) -> Option { - self.droid_data.get(id).cloned() - } - - pub fn humans(&self) -> Vec { - self.human_data.values().cloned().collect() - } - - pub fn droids(&self) -> Vec { - self.droid_data.values().cloned().collect() - } -} diff --git a/examples/starwars/model.rs b/examples/starwars/model.rs deleted file mode 100644 index 97860d87..00000000 --- a/examples/starwars/model.rs +++ /dev/null @@ -1,173 +0,0 @@ -use super::StarWars; -use async_graphql::{Connection, Context, DataSource, EmptyEdgeFields, FieldResult}; - -#[async_graphql::Enum(desc = "One of the films in the Star Wars Trilogy")] -pub enum Episode { - #[item(desc = "Released in 1977.")] - NewHope, - - #[item(desc = "Released in 1980.")] - Empire, - - #[item(desc = "Released in 1983.")] - Jedi, -} - -pub struct Human(usize); - -#[async_graphql::Object(desc = "A humanoid creature in the Star Wars universe.")] -impl Human { - #[field(desc = "The id of the human.")] - async fn id(&self, ctx: &Context<'_>) -> &str { - ctx.data::().chars[self.0].id - } - - #[field(desc = "The name of the human.")] - async fn name(&self, ctx: &Context<'_>) -> &str { - ctx.data::().chars[self.0].name - } - - #[field(desc = "The friends of the human, or an empty list if they have none.")] - async fn friends(&self, ctx: &Context<'_>) -> Vec { - ctx.data::().chars[self.0] - .friends - .iter() - .map(|id| Human(*id).into()) - .collect() - } - - #[field(desc = "Which movies they appear in.")] - async fn appears_in<'a>(&self, ctx: &'a Context<'_>) -> &'a [Episode] { - &ctx.data::().chars[self.0].appears_in - } - - #[field(desc = "The home planet of the human, or null if unknown.")] - async fn home_planet<'a>(&self, ctx: &'a Context<'_>) -> &'a Option<&'a str> { - &ctx.data::().chars[self.0].home_planet - } -} - -pub struct Droid(usize); - -#[async_graphql::Object(desc = "A mechanical creature in the Star Wars universe.")] -impl Droid { - #[field(desc = "The id of the droid.")] - async fn id(&self, ctx: &Context<'_>) -> &str { - ctx.data::().chars[self.0].id - } - - #[field(desc = "The name of the droid.")] - async fn name(&self, ctx: &Context<'_>) -> &str { - ctx.data::().chars[self.0].name - } - - #[field(desc = "The friends of the droid, or an empty list if they have none.")] - async fn friends(&self, ctx: &Context<'_>) -> Vec { - ctx.data::().chars[self.0] - .friends - .iter() - .map(|id| Droid(*id).into()) - .collect() - } - - #[field(desc = "Which movies they appear in.")] - async fn appears_in<'a>(&self, ctx: &'a Context<'_>) -> &'a [Episode] { - &ctx.data::().chars[self.0].appears_in - } - - #[field(desc = "The primary function of the droid.")] - async fn primary_function<'a>(&self, ctx: &'a Context<'_>) -> &'a Option<&'a str> { - &ctx.data::().chars[self.0].primary_function - } -} - -pub struct QueryRoot; - -#[async_graphql::Object] -impl QueryRoot { - #[field] - async fn hero( - &self, - ctx: &Context<'_>, - #[arg( - desc = "If omitted, returns the hero of the whole saga. If provided, returns the hero of that particular episode." - )] - episode: Episode, - ) -> Character { - if episode == Episode::Empire { - Human(ctx.data::().luke).into() - } else { - Droid(ctx.data::().artoo).into() - } - } - - #[field] - async fn human( - &self, - ctx: &Context<'_>, - #[arg(desc = "id of the human")] id: String, - ) -> Option { - ctx.data::().human(&id).map(|id| Human(id)) - } - - #[field] - async fn humans( - &self, - ctx: &Context<'_>, - after: Option, - before: Option, - first: Option, - last: Option, - ) -> FieldResult> { - let humans = ctx - .data::() - .humans() - .iter() - .map(|id| *id) - .collect::>(); - humans - .as_slice() - .query(ctx, after, before, first, last) - .await - .map(|connection| connection.map(|id| Human(*id))) - } - - #[field] - async fn droid( - &self, - ctx: &Context<'_>, - #[arg(desc = "id of the droid")] id: String, - ) -> Option { - ctx.data::().droid(&id).map(|id| Droid(id)) - } - - #[field] - async fn droids( - &self, - ctx: &Context<'_>, - after: Option, - before: Option, - first: Option, - last: Option, - ) -> FieldResult> { - let droids = ctx - .data::() - .droids() - .iter() - .map(|id| *id) - .collect::>(); - droids - .as_slice() - .query(ctx, after, before, first, last) - .await - .map(|connection| connection.map(|id| Droid(*id))) - } -} - -#[async_graphql::Interface( - field(name = "id", type = "&str", context), - field(name = "name", type = "&str", context), - field(name = "friends", type = "Vec", context), - field(name = "appears_in", type = "&'ctx [Episode]", context) -)] -pub struct Character(Human, Droid); diff --git a/examples/tide.rs b/examples/tide.rs deleted file mode 100644 index 6f6c39c7..00000000 --- a/examples/tide.rs +++ /dev/null @@ -1,47 +0,0 @@ -mod starwars; - -use async_graphql::http::{ - graphiql_source, playground_source, GQLRequest, GQLResponse, IntoQueryBuilder, -}; -use async_graphql::{EmptyMutation, EmptySubscription, Schema}; -use futures::TryFutureExt; -use mime; -use tide::{self, Request, Response}; - -type StarWarsSchema = Schema; - -async fn index(mut request: Request) -> Response { - let gql_request: GQLRequest = request.body_json().await.unwrap(); - let schema = request.state(); - let gql_response = gql_request - .into_query_builder(schema) - .and_then(|builder| builder.execute()) - .await; - Response::new(200) - .body_json(&GQLResponse(gql_response)) - .unwrap() -} - -async fn gql_playground(_request: Request) -> Response { - Response::new(200) - .body_string(playground_source("/", None)) - .set_mime(mime::TEXT_HTML_UTF_8) -} -async fn gql_graphiql(_request: Request) -> Response { - Response::new(200) - .body_string(graphiql_source("/")) - .set_mime(mime::TEXT_HTML_UTF_8) -} - -#[async_std::main] -async fn main() -> std::io::Result<()> { - let mut app = tide::with_state( - Schema::build(starwars::QueryRoot, EmptyMutation, EmptySubscription) - .data(starwars::StarWars::new()) - .finish(), - ); - app.at("/").post(index); - app.at("/").get(gql_playground); - app.at("/graphiql").get(gql_graphiql); - app.listen("0.0.0.0:8000").await -} diff --git a/src/error.rs b/src/error.rs index 46b5f7a4..32f6fcd6 100644 --- a/src/error.rs +++ b/src/error.rs @@ -305,7 +305,7 @@ impl From for Error { #[allow(missing_docs)] #[derive(Debug, Error)] -pub enum RequestError { +pub enum ParseRequestError { #[error("{0}")] Io(std::io::Error), @@ -353,7 +353,4 @@ pub enum Error { #[error("Rule error")] Rule { errors: Vec }, - - #[error("Request error")] - Request(#[from] RequestError), } diff --git a/src/http/http_request.rs b/src/http/http_request.rs deleted file mode 100644 index 1f8b536d..00000000 --- a/src/http/http_request.rs +++ /dev/null @@ -1,110 +0,0 @@ -use crate::error::RequestError; -use crate::http::multipart::{Multipart, PartData}; -use crate::http::{GQLRequest, IntoQueryBuilder}; -use crate::{Error, ObjectType, QueryBuilder, Result, Schema, SubscriptionType}; -use futures::{AsyncRead, AsyncReadExt}; -use mime::Mime; -use std::collections::HashMap; - -/// Http request trait for GraphQL -#[allow(missing_docs)] -pub trait GQLHttpRequest { - type Body: AsyncRead + Send + Unpin; - - fn content_type(&self) -> Option<&str>; - - fn into_body(self) -> Self::Body; -} - -#[async_trait::async_trait] -impl IntoQueryBuilder for R { - async fn into_query_builder( - mut self, - schema: &Schema, - ) -> Result> - where - Query: ObjectType + Send + Sync + 'static, - Mutation: ObjectType + Send + Sync + 'static, - Subscription: SubscriptionType + Send + Sync + 'static, - { - if let Some(boundary) = self - .content_type() - .and_then(|value| value.parse::().ok()) - .and_then(|ct| { - if ct.essence_str() == mime::MULTIPART_FORM_DATA { - ct.get_param("boundary") - .map(|boundary| boundary.to_string()) - } else { - None - } - }) - { - // multipart - let mut multipart = Multipart::parse(self.into_body(), boundary.as_str()) - .await - .map_err(RequestError::InvalidMultipart)?; - let gql_request: GQLRequest = { - let part = multipart - .remove("operations") - .ok_or_else(|| Error::Request(RequestError::MissingOperatorsPart))?; - let reader = part - .create_reader() - .map_err(|err| Error::Request(RequestError::PartData(err)))?; - serde_json::from_reader(reader).map_err(RequestError::InvalidRequest)? - }; - let mut map: HashMap> = { - let part = multipart - .remove("map") - .ok_or_else(|| Error::Request(RequestError::MissingMapPart))?; - let reader = part - .create_reader() - .map_err(|err| Error::Request(RequestError::PartData(err)))?; - serde_json::from_reader(reader).map_err(RequestError::InvalidFilesMap)? - }; - - let mut builder = gql_request.into_query_builder(schema).await?; - if !builder.is_upload() { - return Err(RequestError::NotUpload.into()); - } - - // read files - for part in &multipart.parts { - if let Some(name) = &part.name { - if let Some(var_paths) = map.remove(name) { - for var_path in var_paths { - if let (Some(filename), PartData::File(path)) = - (&part.filename, &part.data) - { - builder.set_upload( - &var_path, - &filename, - part.content_type.as_deref(), - path, - ); - } - } - } - } - } - - if !map.is_empty() { - return Err(RequestError::MissingFiles.into()); - } - - if let Some(temp_dir) = multipart.temp_dir { - builder.set_files_holder(temp_dir); - } - - Ok(builder) - } else { - let mut data = Vec::new(); - self.into_body() - .read_to_end(&mut data) - .await - .map_err(RequestError::Io)?; - let gql_request: GQLRequest = - serde_json::from_slice(&data).map_err(RequestError::InvalidRequest)?; - gql_request.into_query_builder(schema).await - } - } -} diff --git a/src/http/into_query_builder.rs b/src/http/into_query_builder.rs new file mode 100644 index 00000000..9b1b38e2 --- /dev/null +++ b/src/http/into_query_builder.rs @@ -0,0 +1,89 @@ +use crate::http::multipart::{Multipart, PartData}; +use crate::http::GQLRequest; +use crate::query::IntoQueryBuilder; +use crate::{ParseRequestError, QueryBuilder}; +use futures::{AsyncRead, AsyncReadExt}; +use mime::Mime; +use std::collections::HashMap; + +#[async_trait::async_trait] +impl IntoQueryBuilder for (Option, Body) +where + CT: AsRef + Send, + Body: AsyncRead + Send + Unpin, +{ + async fn into_query_builder(mut self) -> std::result::Result { + if let Some(boundary) = self + .0 + .and_then(|value| value.as_ref().parse::().ok()) + .and_then(|ct| { + if ct.essence_str() == mime::MULTIPART_FORM_DATA { + ct.get_param("boundary") + .map(|boundary| boundary.to_string()) + } else { + None + } + }) + { + // multipart + let mut multipart = Multipart::parse(self.1, boundary.as_str()) + .await + .map_err(ParseRequestError::InvalidMultipart)?; + let gql_request: GQLRequest = { + let part = multipart + .remove("operations") + .ok_or_else(|| ParseRequestError::MissingOperatorsPart)?; + let reader = part.create_reader().map_err(ParseRequestError::PartData)?; + serde_json::from_reader(reader).map_err(ParseRequestError::InvalidRequest)? + }; + let mut map: HashMap> = { + let part = multipart + .remove("map") + .ok_or_else(|| ParseRequestError::MissingMapPart)?; + let reader = part.create_reader().map_err(ParseRequestError::PartData)?; + serde_json::from_reader(reader).map_err(ParseRequestError::InvalidFilesMap)? + }; + + let mut builder = gql_request.into_query_builder().await?; + + // read files + for part in &multipart.parts { + if let Some(name) = &part.name { + if let Some(var_paths) = map.remove(name) { + for var_path in var_paths { + if let (Some(filename), PartData::File(path)) = + (&part.filename, &part.data) + { + builder.set_upload( + &var_path, + &filename, + part.content_type.as_deref(), + path, + ); + } + } + } + } + } + + if !map.is_empty() { + return Err(ParseRequestError::MissingFiles); + } + + if let Some(temp_dir) = multipart.temp_dir { + builder.set_files_holder(temp_dir); + } + + Ok(builder) + } else { + let mut data = Vec::new(); + self.1 + .read_to_end(&mut data) + .await + .map_err(ParseRequestError::Io)?; + let gql_request: GQLRequest = + serde_json::from_slice(&data).map_err(ParseRequestError::InvalidRequest)?; + gql_request.into_query_builder().await + } + } +} diff --git a/src/http/mod.rs b/src/http/mod.rs index 10fb6a28..f8125751 100644 --- a/src/http/mod.rs +++ b/src/http/mod.rs @@ -1,38 +1,24 @@ //! A helper module that supports HTTP mod graphiql_source; -mod http_request; +mod into_query_builder; mod multipart; mod playground_source; +mod stream_body; mod token_reader; use itertools::Itertools; pub use graphiql_source::graphiql_source; -pub use http_request::GQLHttpRequest; pub use playground_source::playground_source; +pub use stream_body::StreamBody; -use crate::{ - Error, ObjectType, QueryBuilder, QueryError, QueryResponse, Result, Schema, SubscriptionType, - Variables, -}; +use crate::query::IntoQueryBuilder; +use crate::{Error, ParseRequestError, QueryBuilder, QueryError, QueryResponse, Result, Variables}; use graphql_parser::Pos; use serde::ser::{SerializeMap, SerializeSeq}; use serde::{Serialize, Serializer}; -#[allow(missing_docs)] -#[async_trait::async_trait] -pub trait IntoQueryBuilder { - async fn into_query_builder( - self, - schema: &Schema, - ) -> Result> - where - Query: ObjectType + Send + Sync + 'static, - Mutation: ObjectType + Send + Sync + 'static, - Subscription: SubscriptionType + Send + Sync + 'static; -} - /// Deserializable GraphQL Request object #[derive(Deserialize, Clone, PartialEq, Debug)] pub struct GQLRequest { @@ -49,16 +35,8 @@ pub struct GQLRequest { #[async_trait::async_trait] impl IntoQueryBuilder for GQLRequest { - async fn into_query_builder( - self, - schema: &Schema, - ) -> Result> - where - Query: ObjectType + Send + Sync + 'static, - Mutation: ObjectType + Send + Sync + 'static, - Subscription: SubscriptionType + Send + Sync + 'static, - { - let mut builder = schema.query(&self.query)?; + async fn into_query_builder(self) -> std::result::Result { + let mut builder = QueryBuilder::new(self.query); if let Some(operation_name) = self.operation_name { builder = builder.operator_name(operation_name); } @@ -160,13 +138,6 @@ impl<'a> Serialize for GQLError<'a> { } seq.end() } - Error::Request(err) => { - let mut seq = serializer.serialize_seq(Some(1))?; - seq.serialize_element(&serde_json::json!({ - "message": err.to_string(), - }))?; - seq.end() - } } } } @@ -242,6 +213,7 @@ mod tests { let resp = GQLResponse(Ok(QueryResponse { data: json!({"ok": true}), extensions: None, + cache_control: Default::default(), })); assert_eq!( serde_json::to_value(resp).unwrap(), diff --git a/async-graphql-actix-web/src/request.rs b/src/http/stream_body.rs similarity index 54% rename from async-graphql-actix-web/src/request.rs rename to src/http/stream_body.rs index c2860ad5..0c654764 100644 --- a/async-graphql-actix-web/src/request.rs +++ b/src/http/stream_body.rs @@ -1,40 +1,30 @@ -use actix_web::web::Payload; -use async_graphql::http::GQLHttpRequest; use bytes::{Buf, Bytes}; -use futures::io::{Error, ErrorKind, Result}; use futures::task::{Context, Poll}; -use futures::{AsyncRead, StreamExt}; +use futures::{AsyncRead, Stream, StreamExt}; +use std::io::{Error, ErrorKind, Result}; use std::pin::Pin; -pub struct RequestWrapper(pub Option, pub Payload); +/// An Adapter for bytes stream to `AsyncRead` +pub struct StreamBody { + s: S, + remain_bytes: Option, +} -unsafe impl Send for RequestWrapper {} -unsafe impl Sync for RequestWrapper {} - -impl GQLHttpRequest for RequestWrapper { - type Body = PayloadReader; - - fn content_type(&self) -> Option<&str> { - self.0.as_deref() - } - - fn into_body(self) -> Self::Body { - PayloadReader { - payload: self.1, +impl StreamBody { + #[allow(missing_docs)] + pub fn new(s: S) -> Self { + Self { + s, remain_bytes: None, } } } -pub struct PayloadReader { - payload: Payload, - remain_bytes: Option, -} - -unsafe impl Send for PayloadReader {} -unsafe impl Sync for PayloadReader {} - -impl AsyncRead for PayloadReader { +impl AsyncRead for StreamBody +where + D: Buf, + S: Stream> + Unpin, +{ fn poll_read( mut self: Pin<&mut Self>, cx: &mut Context<'_>, @@ -49,9 +39,9 @@ impl AsyncRead for PayloadReader { } return Poll::Ready(Ok(data.len())); } else { - match self.payload.poll_next_unpin(cx) { - Poll::Ready(Some(Ok(bytes))) => { - self.remain_bytes = Some(bytes); + match self.s.poll_next_unpin(cx) { + Poll::Ready(Some(Ok(mut bytes))) => { + self.remain_bytes = Some(bytes.to_bytes()); } Poll::Ready(Some(Err(_))) => { return Poll::Ready(Err(Error::from(ErrorKind::InvalidData))) diff --git a/src/lib.rs b/src/lib.rs index 83ee0ea4..4ec55ab8 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -106,10 +106,12 @@ pub mod http; pub use base::{Scalar, Type}; pub use context::{Context, Environment, QueryPathNode, QueryPathSegment, Variables}; -pub use error::{Error, ErrorExtensions, FieldError, FieldResult, QueryError, ResultExt}; +pub use error::{ + Error, ErrorExtensions, FieldError, FieldResult, ParseRequestError, QueryError, ResultExt, +}; pub use graphql_parser::query::Value; pub use graphql_parser::Pos; -pub use query::{QueryBuilder, QueryResponse}; +pub use query::{IntoQueryBuilder, QueryBuilder, QueryResponse}; pub use registry::CacheControl; pub use scalars::{Any, ID}; pub use schema::Schema; diff --git a/src/query.rs b/src/query.rs index 6b1e375d..a45667bf 100644 --- a/src/query.rs +++ b/src/query.rs @@ -1,19 +1,27 @@ use crate::context::Data; -use crate::extensions::BoxExtension; +use crate::error::ParseRequestError; use crate::mutation_resolver::do_mutation_resolve; use crate::registry::CacheControl; +use crate::validation::{check_rules, CheckResult}; use crate::{do_resolve, ContextBase, Error, Result, Schema}; use crate::{ObjectType, QueryError, Variables}; use graphql_parser::query::{ Definition, Document, OperationDefinition, SelectionSet, VariableDefinition, }; -use graphql_parser::Pos; +use graphql_parser::{parse_query, Pos}; +use itertools::Itertools; use std::any::Any; use std::collections::HashMap; use std::path::Path; use std::sync::atomic::AtomicUsize; use tempdir::TempDir; +#[allow(missing_docs)] +#[async_trait::async_trait] +pub trait IntoQueryBuilder { + async fn into_query_builder(self) -> std::result::Result; +} + /// Query response pub struct QueryResponse { /// Data of query result @@ -21,59 +29,30 @@ pub struct QueryResponse { /// Extensions result pub extensions: Option>, + + /// Cache control value + pub cache_control: CacheControl, } /// Query builder -pub struct QueryBuilder { - pub(crate) schema: Schema, - pub(crate) extensions: Vec, - pub(crate) document: Document, +pub struct QueryBuilder { + pub(crate) query_source: String, pub(crate) operation_name: Option, pub(crate) variables: Variables, pub(crate) ctx_data: Option, - pub(crate) cache_control: CacheControl, pub(crate) files_holder: Option, } -impl QueryBuilder { - fn current_operation(&self) -> Option<(&SelectionSet, &[VariableDefinition], bool)> { - for definition in &self.document.definitions { - match definition { - Definition::Operation(operation_definition) => match operation_definition { - OperationDefinition::SelectionSet(s) => { - return Some((s, &[], true)); - } - OperationDefinition::Query(query) - if query.name.is_none() - || self.operation_name.is_none() - || query.name.as_deref() == self.operation_name.as_deref() => - { - return Some((&query.selection_set, &query.variable_definitions, true)); - } - OperationDefinition::Mutation(mutation) - if mutation.name.is_none() - || self.operation_name.is_none() - || mutation.name.as_deref() == self.operation_name.as_deref() => - { - return Some(( - &mutation.selection_set, - &mutation.variable_definitions, - false, - )); - } - OperationDefinition::Subscription(subscription) - if subscription.name.is_none() - || self.operation_name.is_none() - || subscription.name.as_deref() == self.operation_name.as_deref() => - { - return None; - } - _ => {} - }, - Definition::Fragment(_) => {} - } +impl QueryBuilder { + /// Create query builder with query source. + pub fn new>(query_source: T) -> QueryBuilder { + QueryBuilder { + query_source: query_source.into(), + operation_name: None, + variables: Default::default(), + ctx_data: None, + files_holder: None, } - None } /// Specify the operation name. @@ -101,25 +80,6 @@ impl QueryBuilder self } - /// Detects whether any parameter contains the Upload type - pub fn is_upload(&self) -> bool { - if let Some((_, variable_definitions, _)) = self.current_operation() { - for d in variable_definitions { - if let Some(ty) = self - .schema - .0 - .registry - .concrete_type_by_parsed_type(&d.var_type) - { - if ty.name() == "Upload" { - return true; - } - } - } - } - false - } - /// Set file holder pub fn set_files_holder(&mut self, files_holder: TempDir) { self.files_holder = Some(files_holder); @@ -138,21 +98,64 @@ impl QueryBuilder } /// Execute the query. - pub async fn execute(self) -> Result + pub async fn execute( + self, + schema: &Schema, + ) -> Result where Query: ObjectType + Send + Sync, Mutation: ObjectType + Send + Sync, { + // create extension instances + let extensions = schema + .0 + .extensions + .iter() + .map(|factory| factory()) + .collect_vec(); + + // parse query source + extensions + .iter() + .for_each(|e| e.parse_start(&self.query_source)); + let document = parse_query(&self.query_source).map_err(Into::::into)?; + extensions.iter().for_each(|e| e.parse_end()); + + // check rules + extensions.iter().for_each(|e| e.validation_start()); + let CheckResult { + cache_control, + complexity, + depth, + } = check_rules(&schema.0.registry, &document, schema.0.validation_mode)?; + extensions.iter().for_each(|e| e.validation_end()); + + // check limit + if let Some(limit_complexity) = schema.0.complexity { + if complexity > limit_complexity { + return Err(QueryError::TooComplex.into_error(Pos::default())); + } + } + + if let Some(limit_depth) = schema.0.depth { + if depth > limit_depth { + return Err(QueryError::TooDeep.into_error(Pos::default())); + } + } + + // execute let resolve_id = AtomicUsize::default(); let mut fragments = HashMap::new(); let (selection_set, variable_definitions, is_query) = - self.current_operation().ok_or_else(|| Error::Query { - pos: Pos::default(), - path: None, - err: QueryError::MissingOperation, + current_operation(&document, self.operation_name.as_deref()).ok_or_else(|| { + Error::Query { + pos: Pos::default(), + path: None, + err: QueryError::MissingOperation, + } })?; - for definition in &self.document.definitions { + for definition in &document.definitions { if let Definition::Fragment(fragment) = &definition { fragments.insert(fragment.name.clone(), fragment.clone()); } @@ -161,29 +164,29 @@ impl QueryBuilder let ctx = ContextBase { path_node: None, resolve_id: &resolve_id, - extensions: &self.extensions, + extensions: &extensions, item: selection_set, variables: &self.variables, variable_definitions, - registry: &self.schema.0.registry, - data: &self.schema.0.data, + registry: &schema.0.registry, + data: &schema.0.data, ctx_data: self.ctx_data.as_ref(), fragments: &fragments, }; - self.extensions.iter().for_each(|e| e.execution_start()); + extensions.iter().for_each(|e| e.execution_start()); let data = if is_query { - do_resolve(&ctx, &self.schema.0.query).await? + do_resolve(&ctx, &schema.0.query).await? } else { - do_mutation_resolve(&ctx, &self.schema.0.mutation).await? + do_mutation_resolve(&ctx, &schema.0.mutation).await? }; - self.extensions.iter().for_each(|e| e.execution_end()); + extensions.iter().for_each(|e| e.execution_end()); let res = QueryResponse { data, - extensions: if !self.extensions.is_empty() { + extensions: if !extensions.is_empty() { Some( - self.extensions + extensions .iter() .map(|e| (e.name().to_string(), e.result())) .collect::>(), @@ -191,12 +194,51 @@ impl QueryBuilder } else { None }, + cache_control, }; Ok(res) } - - /// Get cache control value - pub fn cache_control(&self) -> CacheControl { - self.cache_control - } +} + +fn current_operation<'a>( + document: &'a Document, + operation_name: Option<&str>, +) -> Option<(&'a SelectionSet, &'a [VariableDefinition], bool)> { + for definition in &document.definitions { + match definition { + Definition::Operation(operation_definition) => match operation_definition { + OperationDefinition::SelectionSet(s) => { + return Some((s, &[], true)); + } + OperationDefinition::Query(query) + if query.name.is_none() + || operation_name.is_none() + || query.name.as_deref() == operation_name.as_deref() => + { + return Some((&query.selection_set, &query.variable_definitions, true)); + } + OperationDefinition::Mutation(mutation) + if mutation.name.is_none() + || operation_name.is_none() + || mutation.name.as_deref() == operation_name.as_deref() => + { + return Some(( + &mutation.selection_set, + &mutation.variable_definitions, + false, + )); + } + OperationDefinition::Subscription(subscription) + if subscription.name.is_none() + || operation_name.is_none() + || subscription.name.as_deref() == operation_name.as_deref() => + { + return None; + } + _ => {} + }, + Definition::Fragment(_) => {} + } + } + None } diff --git a/src/registry.rs b/src/registry.rs index 8f6a4138..3d5eec8d 100644 --- a/src/registry.rs +++ b/src/registry.rs @@ -129,21 +129,21 @@ pub struct EnumValue { /// impl QueryRoot { /// #[field(cache_control(max_age = 30))] /// async fn value1(&self) -> i32 { -/// unimplemented!() +/// 0 /// } /// /// #[field(cache_control(private))] /// async fn value2(&self) -> i32 { -/// unimplemented!() +/// 0 /// } /// } /// /// #[async_std::main] /// async fn main() { /// let schema = Schema::new(QueryRoot, EmptyMutation, EmptySubscription); -/// assert_eq!(schema.query("{ value1 }").unwrap().cache_control(), CacheControl { public: true, max_age: 30 }); -/// assert_eq!(schema.query("{ value2 }").unwrap().cache_control(), CacheControl { public: false, max_age: 60 }); -/// assert_eq!(schema.query("{ value1 value2 }").unwrap().cache_control(), CacheControl { public: false, max_age: 30 }); +/// assert_eq!(schema.execute("{ value1 }").await.unwrap().cache_control, CacheControl { public: true, max_age: 30 }); +/// assert_eq!(schema.execute("{ value2 }").await.unwrap().cache_control, CacheControl { public: false, max_age: 60 }); +/// assert_eq!(schema.execute("{ value1 value2 }").await.unwrap().cache_control, CacheControl { public: false, max_age: 30 }); /// } /// ``` #[derive(Clone, Copy, PartialEq, Eq, Debug)] diff --git a/src/schema.rs b/src/schema.rs index 63e3b426..15635488 100644 --- a/src/schema.rs +++ b/src/schema.rs @@ -5,17 +5,16 @@ use crate::query::QueryBuilder; use crate::registry::{Directive, InputValue, Registry}; use crate::subscription::{create_connection, create_subscription_stream, SubscriptionTransport}; use crate::types::QueryRoot; -use crate::validation::{check_rules, CheckResult, ValidationMode}; +use crate::validation::{check_rules, ValidationMode}; use crate::{ ContextSelectionSet, Error, ObjectType, Pos, QueryError, QueryResponse, Result, SubscriptionStream, SubscriptionType, Type, Variables, }; use bytes::Bytes; use futures::channel::mpsc; -use futures::{Stream, TryFutureExt}; +use futures::Stream; use graphql_parser::parse_query; use graphql_parser::query::{Definition, OperationDefinition}; -use itertools::Itertools; use std::any::Any; use std::collections::HashMap; use std::sync::atomic::AtomicUsize; @@ -224,55 +223,9 @@ where &self.0.registry } - /// Start a query and return `QueryBuilder`. - pub fn query(&self, source: &str) -> Result> { - let extensions = self - .0 - .extensions - .iter() - .map(|factory| factory()) - .collect_vec(); - extensions.iter().for_each(|e| e.parse_start(source)); - let document = parse_query(source).map_err(Into::::into)?; - extensions.iter().for_each(|e| e.parse_end()); - - extensions.iter().for_each(|e| e.validation_start()); - let CheckResult { - cache_control, - complexity, - depth, - } = check_rules(&self.0.registry, &document, self.0.validation_mode)?; - extensions.iter().for_each(|e| e.validation_end()); - - if let Some(limit_complexity) = self.0.complexity { - if complexity > limit_complexity { - return Err(QueryError::TooComplex.into_error(Pos::default())); - } - } - - if let Some(limit_depth) = self.0.depth { - if depth > limit_depth { - return Err(QueryError::TooDeep.into_error(Pos::default())); - } - } - - Ok(QueryBuilder { - extensions, - schema: self.clone(), - document, - operation_name: None, - variables: Default::default(), - ctx_data: None, - cache_control, - files_holder: None, - }) - } - /// Execute query without create the `QueryBuilder`. - pub async fn execute(&self, source: &str) -> Result { - futures::future::ready(self.query(source)) - .and_then(|builder| builder.execute()) - .await + pub async fn execute(&self, query_source: &str) -> Result { + QueryBuilder::new(query_source).execute(self).await } /// Create subscription stream, typically called inside the `SubscriptionTransport::handle_request` method diff --git a/src/subscription/connection.rs b/src/subscription/connection.rs index a64c48fc..738d9c93 100644 --- a/src/subscription/connection.rs +++ b/src/subscription/connection.rs @@ -87,7 +87,9 @@ pub struct SubscriptionStream, handle_request_fut: Option< - Pin, T::Error>> + 'static>>, + Pin< + Box, T::Error>> + Send + 'static>, + >, >, } diff --git a/src/subscription/ws_transport.rs b/src/subscription/ws_transport.rs index 1d5ef9fc..4dea3f7e 100644 --- a/src/subscription/ws_transport.rs +++ b/src/subscription/ws_transport.rs @@ -114,6 +114,7 @@ impl SubscriptionTransport for WebSocketTransport { serde_json::to_value(GQLResponse(Ok(QueryResponse { data: value, extensions: None, + cache_control: Default::default(), }))) .unwrap(), ), diff --git a/tests/enum.rs b/tests/enum.rs index 4ce097b6..b27f38a3 100644 --- a/tests/enum.rs +++ b/tests/enum.rs @@ -55,7 +55,7 @@ pub async fn test_enum_type() { #[async_std::test] pub async fn test_enum_derive_and_item_attributes() { - use serde::Deserialize; + use serde_derive::Deserialize; #[async_graphql::Enum] #[derive(Deserialize, PartialEq, Debug)] diff --git a/tests/input_object.rs b/tests/input_object.rs index 175c2a43..cd1ec7cb 100644 --- a/tests/input_object.rs +++ b/tests/input_object.rs @@ -96,7 +96,7 @@ pub async fn test_input_object_default_value() { #[async_std::test] pub async fn test_inputobject_derive_and_item_attributes() { - use serde::Deserialize; + use serde_derive::Deserialize; #[async_graphql::InputObject] #[derive(Deserialize, PartialEq, Debug)]