types: move @nuxt/types to nuxt mono-repo (#7432)

[release]
This commit is contained in:
Pooya Parsa 2020-05-28 21:30:02 +02:00 committed by GitHub
parent 3db31abb05
commit a544fc7241
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
36 changed files with 1202 additions and 18 deletions

View File

@ -30,6 +30,8 @@ jobs:
NODE_OPTIONS: "--max_old_space_size=4096"
- name: lint app
run: yarn lint:app
- name: test types
run: yarn test:types
- name: test dev
run: yarn test:dev -w=2
- name: test unit

View File

@ -10,6 +10,7 @@
"distributions/*"
],
"scripts": {
"audit": "improved-yarn-audit --ignore-dev-deps --min-severity moderate -e 1488",
"build": "yarn clean && yarn pkg",
"changelog": "node -r esm scripts/changelog.js",
"clean": "yarn clean:build && yarn clean:examples && yarn clean:test",
@ -18,18 +19,21 @@
"clean:test": "rimraf test/fixtures/*/dist test/fixtures/*/.nuxt*/",
"dev": "node -r esm ./scripts/dev.js",
"postinstall": "lerna link && yarn dev",
"ls-lint": "npx @ls-lint/ls-lint",
"lint": "eslint --ext .js,.mjs,.vue .",
"lint:app": "eslint-multiplexer eslint --ignore-path packages/vue-app/template/.eslintignore 'test/fixtures/!(missing-plugin)/.nuxt!(-dev)/**' | eslint-multiplexer -b",
"ls-lint": "npx @ls-lint/ls-lint",
"nuxt": "node -r esm ./packages/cli/bin/nuxt-cli.js",
"pkg": "node -r esm ./scripts/package",
"test": "yarn test:fixtures && yarn test:dev && yarn test:unit",
"test": "yarn test:fixtures && yarn test:dev && yarn test:unit && test:types",
"test:dev": "jest test/dev --forceExit",
"test:e2e": "jest -i test/e2e --forceExit",
"test:fixtures": "jest test/fixtures --forceExit",
"test:lint": "yarn lint && yarn ls-lint",
"test:unit": "jest packages --forceExit",
"audit": "improved-yarn-audit --ignore-dev-deps --min-severity moderate -e 1488"
"test:types": "tsc -p packages/types/test",
"test:unit": "jest packages --forceExit"
},
"resolutions": {
"babel-eslint/@babel/parser": "7.7.5"
},
"devDependencies": {
"@babel/core": "^7.10.1",
@ -73,9 +77,7 @@
"rollup-plugin-license": "^2.1.0",
"sass-loader": "^8.0.2",
"sort-package-json": "^1.44.0",
"typescript": "~3.8",
"vue-jest": "^4.0.0-beta.2"
},
"resolutions": {
"babel-eslint/@babel/parser": "7.7.5"
}
}

8
packages/types/README.md Normal file
View File

@ -0,0 +1,8 @@
# @nuxt/types
<p align="center">
<a href="https://npmjs.com/package/@nuxt/types"><img src="https://img.shields.io/npm/v/@nuxt/types.svg?style=flat-square" alt="npm downloads"></a>
<a href="https://npmjs.com/package/@nuxt/types"><img src="https://img.shields.io/npm/dt/@nuxt/types.svg?style=flat-square" alt="npm version"></a>
<a href="https://www.npmjs.com/package/@nuxt/types"><img src="https://img.shields.io/npm/l/@nuxt/types.svg?style=flat-square" alt="License"></a>
</p>

138
packages/types/app/index.d.ts vendored Normal file
View File

@ -0,0 +1,138 @@
import { ServerResponse } from 'http'
import { IncomingMessage } from 'connect'
import Vue, { ComponentOptions } from 'vue'
import VueRouter, { Location, Route } from 'vue-router'
import { Store } from 'vuex'
// augment typings of Vue.js
import './vue'
// augment typings of Vuex
import './vuex'
type NuxtState = Record<string, any>
export interface Context {
app: NuxtAppOptions
base: string
/**
* @deprecated Use process.client instead
*/
isClient: boolean
/**
* @deprecated Use process.server instead
*/
isServer: boolean
/**
* @deprecated Use process.static instead
*/
isStatic: boolean
isDev: boolean
isHMR: boolean
route: Route
from: Route
store: Store<any>
env: Record<string, any>
params: Route['params']
payload: any
query: Route['query']
req: IncomingMessage
res: ServerResponse
redirect(status: number, path: string, query?: Route['query']): void
redirect(path: string, query?: Route['query']): void
redirect(location: Location): void
error(params: NuxtError): void
nuxtState: NuxtState
beforeNuxtRender(fn: (params: { Components: VueRouter['getMatchedComponents'], nuxtState: NuxtState }) => void): void
}
export type Middleware = string | ((ctx: Context, cb: Function) => Promise<void> | void)
export type Plugin = (ctx: Context, inject: (key: string, value: any) => void) => Promise<void> | void
export interface Transition {
name?: string
mode?: string
css?: boolean
duration?: number
type?: string
enterClass?: string
enterToClass?: string
enterActiveClass?: string
leaveClass?: string
leaveToClass?: string
leaveActiveClass?: string
beforeEnter?(el: HTMLElement): void
enter?(el: HTMLElement, done: Function): void
afterEnter?(el: HTMLElement): void
enterCancelled?(el: HTMLElement): void
beforeLeave?(el: HTMLElement): void
leave?(el: HTMLElement, done: Function): void
afterLeave?(el: HTMLElement): void
leaveCancelled?(el: HTMLElement): void
}
export interface NuxtError {
message?: string
path?: string
statusCode?: number
}
export interface DefaultNuxtLoading extends Vue {
canSucceed: boolean
clear(): void
continuous: boolean
decrease(num: number): DefaultNuxtLoading
duration: number
fail(): DefaultNuxtLoading
finish(): DefaultNuxtLoading
increase(num: number): DefaultNuxtLoading
get(): number
hide(): DefaultNuxtLoading
left: number
pause(): DefaultNuxtLoading
percent: number
resume(): DefaultNuxtLoading
reversed: boolean
rtl: boolean
set(num: number): DefaultNuxtLoading
skipTimerCount: number
show: boolean
start(): DefaultNuxtLoading
startTimer(): void
throttle: number
}
export interface CustomNuxtLoading extends Vue {
fail?(): CustomNuxtLoading
finish(): CustomNuxtLoading
increase?(num: number): CustomNuxtLoading
pause?(): CustomNuxtLoading
start(): CustomNuxtLoading
}
export type NuxtLoading = DefaultNuxtLoading | CustomNuxtLoading
export interface NuxtAppOptions extends ComponentOptions<Vue> {
[key: string]: any // TBD
}
export interface NuxtApp extends Vue {
$options: NuxtAppOptions
$loading: NuxtLoading
context: Context
error(params: NuxtError): void
isOffline: boolean
isOnline: boolean
layout: any // TBD
layoutName: string
loadLayout(layout: string): Promise<any> // TBD
refresh(): Promise<void>
setLayout(layout: string): any // TBD
}
// window.$nuxt
declare global {
interface Window {
$nuxt: NuxtApp
}
}

39
packages/types/app/vue.d.ts vendored Normal file
View File

@ -0,0 +1,39 @@
/**
* Extends interfaces in Vue.js
*/
import Vue, { ComponentOptions } from 'vue'
import { MetaInfo } from 'vue-meta'
import { Route } from 'vue-router'
import { Context, Middleware, Transition, NuxtApp } from './index'
declare module 'vue/types/options' {
interface ComponentOptions<V extends Vue> {
asyncData?(ctx: Context): Promise<object | void> | object | void
fetch?(ctx: Context): Promise<void> | void
fetchDelay?: number
fetchOnServer?: boolean | (() => boolean)
head?: MetaInfo | (() => MetaInfo)
key?: string | ((to: Route) => string)
layout?: string | ((ctx: Context) => string)
loading?: boolean
middleware?: Middleware | Middleware[]
scrollToTop?: boolean
transition?: string | Transition | ((to: Route, from: Route) => string)
validate?(ctx: Context): Promise<boolean> | boolean
watchQuery?: boolean | string[] | ((newQuery: Route['query'], oldQuery: Route['query']) => boolean)
meta?: { [key: string]: any }
}
}
declare module 'vue/types/vue' {
interface Vue {
$nuxt: NuxtApp
$fetch(): void
$fetchState: {
error: Error | null
pending: boolean
timestamp: number
}
}
}

10
packages/types/app/vuex.d.ts vendored Normal file
View File

@ -0,0 +1,10 @@
import Store from 'vuex'
import VueRouter from 'vue-router'
import { NuxtAppOptions } from '.'
declare module 'vuex/types/index' {
interface Store<S> {
app: NuxtAppOptions
$router: VueRouter
}
}

8
packages/types/cli/index.d.ts vendored Normal file
View File

@ -0,0 +1,8 @@
import { Configuration } from '../config'
type Command = any // TBD
export interface Hooks {
config?(config: Configuration): void
'run:before'?(params: { argv: string [], command: Command, rootDir: string }): void
}

177
packages/types/config/build.d.ts vendored Normal file
View File

@ -0,0 +1,177 @@
/**
* NuxtOptionsBuild
* Documentation: https://nuxtjs.org/api/configuration-build
*/
import { TransformOptions, PluginItem } from '@babel/core'
import { Options as AutoprefixerOptions } from 'autoprefixer'
import { Options as FileLoaderOptions } from 'file-loader'
import { Options as HtmlMinifierOptions } from 'html-minifier'
import * as Less from 'less'
import { Options as SassOptions } from 'node-sass'
import { Options as OptimizeCssAssetsWebpackPluginOptions } from 'optimize-css-assets-webpack-plugin'
import { Plugin as PostcssPlugin } from 'postcss'
import { Options as PugOptions } from 'pug'
import { TerserPluginOptions } from 'terser-webpack-plugin'
import { VueLoaderOptions } from 'vue-loader'
import {
Configuration as WebpackConfiguration,
Loader as WebpackLoader,
loader as WebpackLoaderNamespace,
Options as WebpackOptions,
Plugin as WebpackPlugin
} from 'webpack'
import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'
import { Options as WebpackDevMiddlewareOptions } from 'webpack-dev-middleware'
import { MiddlewareOptions as WebpackHotMiddlewareOptions, ClientOptions as WebpackHotMiddlewareClientOptions } from 'webpack-hot-middleware'
type CssLoaderUrlFunction = (url: string, resourcePath: string) => boolean
type CssLoaderImportFunction = (parsedImport: string, resourcePath: string) => boolean
type CssLoaderMode = 'global' | 'local'
interface CssLoaderModulesOptions {
context?: string
getLocalIdent?: (context: string, localIdentName: string, localName: string, options: CssLoaderModulesOptions) => string
hashPrefix?: string
localIdentName?: string
localIdentRegExp?: string | RegExp
mode?: CssLoaderMode
}
interface CssLoaderOptions {
import?: boolean | CssLoaderImportFunction
importLoaders?: number
localsConvention?: 'asIs' | 'camelCase' | 'camelCaseOnly' | 'dashes' | 'dashesOnly'
modules?: boolean | CssLoaderMode | CssLoaderModulesOptions
onlyLocals?: boolean
sourceMap?: boolean
url?: boolean | CssLoaderUrlFunction
}
interface UrlLoaderOptions {
esModule?: boolean
fallback?: WebpackLoader
limit?: boolean | number | string
mimetype?: string
}
interface NuxtOptionsLoaders {
css?: CssLoaderOptions
cssModules?: CssLoaderOptions
file?: FileLoaderOptions
fontUrl?: UrlLoaderOptions
imgUrl?: UrlLoaderOptions
less?: Less.Options
pugPlain?: PugOptions
sass?: SassOptions
scss?: SassOptions
stylus?: any // TBD
vue?: VueLoaderOptions
vueStyle?: {
manualInject?: boolean
ssrId?: boolean
shadowMode?: boolean
}
}
interface NuxtWebpackEnv {
isClient: boolean
isDev: boolean
isLegacy: boolean
isModern: boolean
isServer: boolean
}
interface NuxtBabelPresetEnv {
envName: 'client' | 'modern' | 'server'
}
interface NuxtBabelOptions extends Pick<TransformOptions, Exclude<keyof TransformOptions, 'presets'>> {
cacheCompression?: boolean
cacheDirectory?: boolean
cacheIdentifier?: string
customize?: string | null
presets?: ((env: NuxtBabelPresetEnv & NuxtWebpackEnv, defaultPreset: [string, object]) => PluginItem[] | void) | PluginItem[] | null
}
interface Warning {
message: string
name: string
}
interface PostcssOrderPresetFunctions {
cssnanoLast: (names: string[]) => string[]
presetEnvAndCssnanoLast: (names: string[]) => string[]
presetEnvLast: (names: string[]) => string[]
}
type PostcssOrderPreset = keyof PostcssOrderPresetFunctions
interface PostcssVariableMap {
customMedia: Record<string, string>
customProperties: Record<string, string>
customSelectors: Record<string, string>
environmentVariables?: Record<string, string>
}
interface PostcssConfiguration {
order?: PostcssOrderPreset | string[] | ((names: string[], presets: PostcssOrderPresetFunctions) => string[])
plugins?: {
[key: string]: false | { [key: string]: any }
} | ((loader: WebpackLoaderNamespace.LoaderContext) => PostcssPlugin<any>[]) | Array<[string | PostcssPlugin<any>, any] | string | PostcssPlugin<any>>
preset?: {
autoprefixer?: false | AutoprefixerOptions
browsers?: string
exportTo?: string | string[] | Partial<PostcssVariableMap> | ((map: PostcssVariableMap) => Partial<PostcssVariableMap>)
features?: {
[key: string]: boolean | { [key: string]: any }
}
importFrom?: string | string[] | Partial<PostcssVariableMap> | (() => Partial<PostcssVariableMap>)
insertAfter?: { [key: string]: PostcssPlugin<any> }
insertBefore?: { [key: string]: PostcssPlugin<any> }
preserve?: boolean
stage?: 0 | 1 | 2 | 3 | 4 | false
}
}
export interface NuxtOptionsBuild {
additionalExtensions?: string[]
analyze?: BundleAnalyzerPlugin.Options | boolean
babel?: NuxtBabelOptions
cache?: boolean
crossorigin?: string
cssSourceMap?: boolean
devMiddleware?: WebpackDevMiddlewareOptions
devtools?: boolean
extend?(
config: WebpackConfiguration,
ctx: {
loaders: NuxtOptionsLoaders
} & NuxtWebpackEnv
): void
extractCSS?: boolean | Record<string, any>
filenames?: { [key in 'app' | 'chunk' | 'css' | 'img' | 'font' | 'video']?: (ctx: NuxtWebpackEnv) => string }
friendlyErrors?: boolean
hardSource?: boolean
hotMiddleware?: WebpackHotMiddlewareOptions & { client?: WebpackHotMiddlewareClientOptions }
html?: { minify: HtmlMinifierOptions }
indicator?: boolean
loaders?: NuxtOptionsLoaders
optimization?: WebpackOptions.Optimization
optimizeCSS?: OptimizeCssAssetsWebpackPluginOptions | boolean
parallel?: boolean
plugins?: WebpackPlugin[]
postcss?: string[] | boolean | PostcssConfiguration | (() => PostcssConfiguration)
profile?: boolean
publicPath?: string
quiet?: boolean
splitChunks?: {
commons?: boolean
layouts?: boolean
pages?: boolean
}
ssr?: boolean
standalone?: boolean
templates?: any
terser?: TerserPluginOptions | boolean
transpile?: Array<string | RegExp | ((context: NuxtWebpackEnv) => string | RegExp | undefined)>
warningIgnoreFilters?: Array<(warn: Warning) => boolean>
watch?: string[]
}

14
packages/types/config/cli.d.ts vendored Normal file
View File

@ -0,0 +1,14 @@
/**
* NuxtOptionsCli
* Documentation: https://nuxtjs.org/api/configuration-cli
*/
import { Chalk } from 'chalk'
type ChalkColor =
'black' | 'red' | 'green' | 'yellow' | 'blue' | 'magenta' | 'cyan' | 'white' | 'blackBright' | 'gray' | 'grey' | 'redBright' | 'greenBright' | 'yellowBright' | 'blueBright' | 'magentaBright' | 'cyanBright' | 'whiteBright' | 'bgBlack' | 'bgRed' | 'bgGreen' | 'bgYellow' | 'bgBlue' | 'bgMagenta' | 'bgCyan' | 'bgWhite' | 'bgBlackBright' | 'bgGray' | 'bgGrey' | 'bgRedBright' | 'bgGreenBright' | 'bgYellowBright' | 'bgBlueBright' | 'bgMagentaBright' | 'bgCyanBright' | 'bgWhiteBright'
export interface NuxtOptionsCli {
badgeMessages: string[]
bannerColor: keyof Chalk & ChalkColor
}

6
packages/types/config/env.d.ts vendored Normal file
View File

@ -0,0 +1,6 @@
/**
* NuxtOptionsEnv
* Documentation: https://nuxtjs.org/api/configuration-env
*/
export type NuxtOptionsEnv = Record<string, string>

16
packages/types/config/features.d.ts vendored Normal file
View File

@ -0,0 +1,16 @@
export interface NuxtOptionsFeatures {
asyncData?: boolean
clientOnline?: boolean
clientPrefetch?: boolean
clientUseUrl?: boolean
componentAliases?: boolean
componentClientOnly?: boolean
deprecations?: boolean
fetch?: boolean
layouts?: boolean
meta?: boolean
middleware?: boolean
store?: boolean
transitions?: boolean
validate?: boolean
}

9
packages/types/config/fetch.d.ts vendored Normal file
View File

@ -0,0 +1,9 @@
/**
* NuxtOptionsFetch
* Documentation: ?
*/
export interface NuxtOptionsFetch {
client?: boolean
server?: boolean
}

20
packages/types/config/generate.d.ts vendored Normal file
View File

@ -0,0 +1,20 @@
/**
* NuxtOptionsGenerate
* Documentation: https://nuxtjs.org/api/configuration-generate
*/
type NuxtOptionsGenerateRoute = string | { route: string, payload: any }
type NuxtOptionsGenerateRoutesFunction = () => (Promise<NuxtOptionsGenerateRoute[]> | NuxtOptionsGenerateRoute[])
type NuxtOptionsGenerateRoutesFunctionWithCallback = (callback: (err: Error, routes: NuxtOptionsGenerateRoute[]) => void) => void
export interface NuxtOptionsGenerate {
concurrency?: number
devtools?: boolean
dir?: string
exclude?: RegExp[]
fallback?: string | boolean
interval?: number
routes?: NuxtOptionsGenerateRoute[] | NuxtOptionsGenerateRoutesFunction | NuxtOptionsGenerateRoutesFunctionWithCallback
subFolders?: boolean
}

7
packages/types/config/globals.d.ts vendored Normal file
View File

@ -0,0 +1,7 @@
/**
* NuxtOptionsGlobals
* Documentation: https://nuxtjs.org/api/configuration-globals
*/
type NuxtOptionsCustomizableGlobalName = 'id' | 'nuxt' | 'context' | 'pluginPrefix' | 'readyCallback' | 'loadedCallback'
export type NuxtOptionsGlobals = { [key in NuxtOptionsCustomizableGlobalName]?: (globalName: string) => string }

9
packages/types/config/head.d.ts vendored Normal file
View File

@ -0,0 +1,9 @@
/**
* NuxtOptionsHead
* Documentation: https://nuxtjs.org/api/configuration-head
* https://github.com/declandewet/vue-meta#recognized-metainfo-properties
*/
import { MetaInfo } from 'vue-meta'
export type NuxtOptionsHead = MetaInfo

52
packages/types/config/hooks.d.ts vendored Normal file
View File

@ -0,0 +1,52 @@
/**
* NuxtOptionsHooks
* Documentation: https://nuxtjs.org/api/configuration-hooks
* https://nuxtjs.org/api/internals-nuxt#hooks
* https://nuxtjs.org/api/internals-renderer#hooks
* https://nuxtjs.org/api/internals-module-container#hooks
* https://nuxtjs.org/api/internals-builder#hooks
* https://nuxtjs.org/api/internals-generator#hooks
*/
import { Server as ConnectServer } from 'connect'
export interface NuxtOptionsHooks {
build?: {
before?(builder: any, buildOptions: any): void
compile?(params: { name: 'client' | 'server', compiler: any }): void
compiled?(params: { name: 'client' | 'server', compiler: any, stats: any }): void
done?(builder: any): void
extendRoutes?(routes: any, resolve: any): void
templates?(params: { templateFiles: any, templateVars: any, resolve: any }): void
}
close?(nuxt: any): void
error?(error: Error): void
generate?: {
before?(generator: any, generateOptions: any): void
distCopied?(generator: any): void
distRemoved?(generator: any): void
done?(generator: any): void
extendRoutes?(routes: any): void
page?(params: { route: any, path: any, html: any }): void
routeCreated?(route: any, path: any, errors: any): void
routeFailed?(route: any, errors: any): void
}
listen?(server: any, params: { host: string, port: number | string }): void
modules?: {
before?(moduleContainer: any, options: any): void
done?(moduleContainer: any): void
}
ready?(nuxt: any): void
render?: {
before?(renderer: any, options: any): void
done?(renderer: any): void
errorMiddleware?(app: ConnectServer): void
resourcesLoaded?(resources: any): void
route?(url: string, result: any, context: any): void
routeContext?(context: any): void
routeDone?(url: string, result: any, context: any): void
setupMiddleware?(app: ConnectServer): void
}
}
// Hooks need too many core typedefs to be 100% defined

70
packages/types/config/index.d.ts vendored Normal file
View File

@ -0,0 +1,70 @@
import { Transition } from '../app'
import { NuxtOptionsBuild } from './build'
import { NuxtOptionsCli } from './cli'
import { NuxtOptionsEnv } from './env'
import { NuxtOptionsFeatures } from './features'
import { NuxtOptionsFetch } from './fetch'
import { NuxtOptionsGenerate } from './generate'
import { NuxtOptionsHead } from './head'
import { NuxtOptionsHooks } from './hooks'
import { NuxtOptionsGlobals } from './globals'
import { NuxtOptionsLoading, NuxtOptionsLoadingIndicator } from './loading'
import { NuxtOptionsModule } from './module'
import { NuxtOptionsPlugin } from './plugin'
import { NuxtOptionsRender } from './render'
import { NuxtOptionsRouter } from './router'
import { NuxtOptionsServer } from './server'
import { NuxtOptionsServerMiddleware } from './server-middleware'
import { NuxtOptionsVueConfiguration } from './vue-configuration'
import { NuxtOptionsWatchers } from './watchers'
export { Module } from './module'
export { ServerMiddleware } from './server-middleware'
export interface NuxtOptions extends Record<string, any> {
build: NuxtOptionsBuild
buildDir: string
buildModules: NuxtOptionsModule[]
cli: NuxtOptionsCli
css: string[]
dev: boolean
dir: { [key in 'app' | 'assets' | 'layouts' | 'middleware' | 'pages' | 'static' | 'store']?: string }
env: NuxtOptionsEnv
extensions: string[]
features: NuxtOptionsFeatures
fetch: NuxtOptionsFetch
generate: NuxtOptionsGenerate
export: NuxtOptionsGenerate
globalName: string
globals: NuxtOptionsGlobals
head: NuxtOptionsHead
hooks: NuxtOptionsHooks
ignorePrefix: string
ignore: string[]
layoutTransition: Transition
loading: NuxtOptionsLoading | false | string
loadingIndicator: NuxtOptionsLoadingIndicator | false | string
mode: 'spa' | 'universal'
target: 'server' | 'static'
modern: 'client' | 'server' | boolean
modules: NuxtOptionsModule[]
modulesDir: string[]
plugins: NuxtOptionsPlugin[]
render: NuxtOptionsRender
rootDir: string
router: NuxtOptionsRouter
server: NuxtOptionsServer
serverMiddleware: NuxtOptionsServerMiddleware[]
srcDir: string
transition: Transition
'vue.config': NuxtOptionsVueConfiguration
watch: string[]
watchers: NuxtOptionsWatchers
}
export type NuxtConfig = Partial<NuxtOptions>
/**
* @deprecated Use NuxtConfig instead
*/
export type Configuration = NuxtConfig // Legacy alias

27
packages/types/config/loading.d.ts vendored Normal file
View File

@ -0,0 +1,27 @@
/**
* NuxtOptionsLoading
* Documentation: https://nuxtjs.org/api/configuration-loading
*/
export interface NuxtOptionsLoading {
color?: string
continuous?: boolean
css?: boolean
duration?: number
failedColor?: string
height?: string
rtl?: boolean
throttle?: number
}
/**
* NuxtOptionsLoadingIndicator
* Documentation: https://nuxtjs.org/api/configuration-loading-indicator
*/
export interface NuxtOptionsLoadingIndicator {
background?: string
color?: string
color2?: string
name?: string
}

31
packages/types/config/module.d.ts vendored Normal file
View File

@ -0,0 +1,31 @@
/**
* NuxtOptionsModule
* Documentation: https://nuxtjs.org/api/configuration-modules
* https://nuxtjs.org/guide/modules
*/
import { Configuration as WebpackConfiguration } from 'webpack'
import { NuxtOptionsLoaders } from './build'
import { Configuration as NuxtOptions } from '.'
interface ExtendFunctionContext {
isClient: boolean
isDev: boolean
isLegacy: boolean
isModern: boolean
isServer: boolean
loaders: NuxtOptionsLoaders
}
type ExtendFunction = (config: WebpackConfiguration, ctx: ExtendFunctionContext) => void
interface ModuleThis {
extendBuild(fn: ExtendFunction): void
options: NuxtOptions
nuxt: any // TBD
[key: string]: any // TBD
}
export type Module<T = any> = (this: ModuleThis, moduleOptions: T) => Promise<void> | void
export type NuxtOptionsModule = string | Module | [string | Module, any]

7
packages/types/config/plugin.d.ts vendored Normal file
View File

@ -0,0 +1,7 @@
/**
* NuxtOptionsPlugin
* Documentation: https://nuxtjs.org/api/configuration-plugins
* https://nuxtjs.org/guide/plugins
*/
export type NuxtOptionsPlugin = { mode?: 'all' | 'client' | 'server', src: string, ssr?: boolean } | string

74
packages/types/config/render.d.ts vendored Normal file
View File

@ -0,0 +1,74 @@
/**
* NuxtOptionsRender
* Documentation: https://nuxtjs.org/api/configuration-render
* https://ssr.vuejs.org/api/#renderer-options
* https://github.com/expressjs/compression#readme
* https://github.com/expressjs/serve-static#readme
* https://github.com/jshttp/etag#readme
*/
import { ServerResponse } from 'http'
import { CompressionOptions } from 'compression'
import { IncomingMessage } from 'connect'
import { Options as EtagOptions } from 'etag'
import { ServeStaticOptions } from 'serve-static'
import { BundleRendererOptions } from 'vue-server-renderer'
import { NuxtOptionsServerMiddleware } from './server-middleware'
type NuxtEtagOptions = EtagOptions & {
hash?: (html: string) => string
}
type ServePlaceholderHandler = 'default' | 'css' | 'html' | 'js' | 'json' | 'map' | 'plain' | 'image'
interface ServePlaceholderOptions {
handlers?: Record<string, ServePlaceholderHandler | null | false>
mimes?: Record<ServePlaceholderHandler, string | false | undefined>
noCache?: boolean
placeholders?: Record<ServePlaceholderHandler, string | Buffer | false>
skipUnknown?: boolean
statusCode?: false | number
}
type CspPolicyName = 'child-src' | 'connect-src' | 'default-src' | 'font-src' | 'frame-src' | 'img-src' | 'manifest-src' | 'media-src' | 'object-src' | 'prefetch-src' | 'script-src' | 'script-src-elem' | 'script-src-attr' | 'style-src' | 'style-src-elem' | 'style-src-attr' | 'worker-src' | 'base-uri' | 'plugin-types' | 'sandbox' | 'form-action' | 'frame-ancestors' | 'navigate-to' | 'report-uri' | 'report-to' | 'block-all-mixed-content' | 'referrer' | 'require-sri-for' | 'trusted-types' | 'upgrade-insecure-requests'
interface CspOptions {
addMeta?: boolean
allowedSources?: string[]
hashAlgorithm?: string
policies?: Record<CspPolicyName, string[]>
reportOnly?: boolean
unsafeInlineCompatibility?: boolean
}
interface PreloadFile {
asType: 'script' | 'style' | 'font'
extension: string
file: string
fileWithoutQuery: string
}
export interface NuxtOptionsRender {
bundleRenderer?: BundleRendererOptions
compressor?: CompressionOptions | NuxtOptionsServerMiddleware | false
csp?: boolean | CspOptions
dist?: ServeStaticOptions
etag?: NuxtEtagOptions | false
fallback?: {
dist?: ServePlaceholderOptions
static?: ServePlaceholderOptions
}
http2?: {
push?: boolean
shouldPush?: boolean
pushAssets?: (
req: IncomingMessage,
res: ServerResponse,
publicPath: string,
preloadFiles: PreloadFile[]
) => string[]
}
injectScripts?: boolean
resourceHints?: boolean
ssr?: boolean
ssrLog?: boolean | 'collapsed'
static?: ServeStaticOptions
}

24
packages/types/config/router.d.ts vendored Normal file
View File

@ -0,0 +1,24 @@
/**
* NuxtOptionsRouter
* Documentation: https://nuxtjs.org/api/configuration-router
* https://router.vuejs.org/api/#router-construction-options
*/
import { RouterOptions, RouteConfig } from 'vue-router'
export interface NuxtRouteConfig extends Pick<RouteConfig, Exclude<keyof RouteConfig, 'children' | 'component'>> {
children?: NuxtRouteConfig[]
chunkName?: string
chunkNames?: Record<string, string>
component?: RouteConfig['component'] | string
}
export interface NuxtOptionsRouter extends RouterOptions {
routeNameSplitter?: string
extendRoutes?(routes: NuxtRouteConfig[], resolve: (...pathSegments: string[]) => string): void
linkPrefetchedClass?: string
middleware?: string | string[]
prefetchLinks?: boolean
trailingSlash?: boolean
}

View File

@ -0,0 +1,10 @@
/**
* NuxtOptionsServerMiddleware
* Documentation: https://nuxtjs.org/api/configuration-servermiddleware
*/
import { NextHandleFunction } from 'connect'
export type ServerMiddleware = NextHandleFunction
export type NuxtOptionsServerMiddleware = string | { path: string, prefix?: boolean, handler: string | ServerMiddleware } | ServerMiddleware

15
packages/types/config/server.d.ts vendored Normal file
View File

@ -0,0 +1,15 @@
/**
* NuxtOptionsServer
* Documentation: https://nuxtjs.org/api/configuration-server
*/
export interface NuxtOptionsServer {
host?: string
https?: {
cert?: string | Buffer
key?: string | Buffer
}
port?: number | string
socket?: string
timing?: boolean | { total?: boolean }
}

View File

@ -0,0 +1,9 @@
/**
* NuxtOptionsVueConfiguration
* Documentation: https://nuxtjs.org/api/configuration-vue-config
* https://vuejs.org/v2/api/#Global-Config
*/
import { VueConstructor } from 'vue'
export type NuxtOptionsVueConfiguration = VueConstructor['config']

14
packages/types/config/watchers.d.ts vendored Normal file
View File

@ -0,0 +1,14 @@
/**
* NuxtOptionsWatchers
* Documentation: https://nuxtjs.org/api/configuration-watchers
* https://github.com/paulmillr/chokidar#api
* https://webpack.js.org/configuration/watch/#watchoptions
*/
import { WatchOptions as ChokidarWatchOptions } from 'chokidar'
import { WatchOptions as WebpackWatchOptions } from 'webpack'
export type NuxtOptionsWatchers = {
chokidar?: ChokidarWatchOptions
webpack?: WebpackWatchOptions
}

4
packages/types/index.d.ts vendored Normal file
View File

@ -0,0 +1,4 @@
import './process'
export * from './app'
export * from './config'

View File

@ -0,0 +1,3 @@
export default {
build: false
}

View File

@ -0,0 +1,34 @@
{
"name": "@nuxt/types",
"version": "2.12.1",
"description": "Nuxt.js types",
"repository": "nuxt/nuxt.js",
"license": "MIT",
"types": "index",
"files": [
"**/*.d.ts"
],
"dependencies": {
"@types/autoprefixer": "^9.7.2",
"@types/babel__core": "^7.1.7",
"@types/compression": "^1.7.0",
"@types/connect": "^3.4.33",
"@types/etag": "^1.8.0",
"@types/file-loader": "^4.2.0",
"@types/html-minifier": "^3.5.3",
"@types/less": "^3.0.1",
"@types/node": "^12.12.42",
"@types/node-sass": "^4.11.1",
"@types/optimize-css-assets-webpack-plugin": "^5.0.1",
"@types/pug": "^2.0.4",
"@types/serve-static": "^1.13.4",
"@types/terser-webpack-plugin": "^2.2.0",
"@types/webpack": "^4.41.13",
"@types/webpack-bundle-analyzer": "^3.8.0",
"@types/webpack-dev-middleware": "^3.7.1",
"@types/webpack-hot-middleware": "^2.25.3"
},
"publishConfig": {
"access": "public"
}
}

14
packages/types/process.d.ts vendored Normal file
View File

@ -0,0 +1,14 @@
/**
* Extends NodeJS.Process interface
*/
declare namespace NodeJS {
interface Process {
browser: boolean
client: boolean
mode: 'spa' | 'universal'
modern: boolean
server: boolean
static: boolean
}
}

View File

@ -0,0 +1,2 @@
import './vue'
import './process'

View File

@ -0,0 +1,17 @@
/**
* Test extended type definitions of NodeJS Process interface
* @nuxt/types/process.d.ts
*/
process.browser = true
process.client = true
process.mode = 'spa'
process.mode = 'universal'
process.modern = true
process.server = true
process.static = true

View File

@ -0,0 +1,13 @@
{
"compilerOptions": {
"target": "esnext",
"moduleResolution": "node",
"strict": true,
"noEmit": true,
"lib": [
"esnext",
"esnext.asynciterable",
"dom"
]
}
}

107
packages/types/test/vue.ts Normal file
View File

@ -0,0 +1,107 @@
/**
* Test extended type definitions of Vue interfaces
* @nuxt/types/app/vue.d.ts
*/
import Vue, { ComponentOptions } from 'vue'
import { Middleware } from '..'
const options: ComponentOptions<Vue> = {}
// asyncData
options.asyncData = () => {
return {
foo: 'bar'
}
}
options.asyncData = () => undefined
// fetch
options.fetch = ({ store }) => {
return Promise.resolve('bar').then((res) => {
store.commit('setFoo', res)
})
}
options.fetch = async ({ store }) => {
const res = await Promise.resolve('bar')
store.commit('setFoo', res)
}
// key
options.key = 'foo'
options.key = to => to.fullPath
// head
const metaInfo = {
title: 'Home',
meta: [
{ hid: 'description', name: 'description', content: 'My custom description' }
]
}
options.head = metaInfo
options.head = () => metaInfo
// layout
options.layout = 'foo'
options.layout = () => 'foo'
// loading
options.loading = true
// middleware
const middlewares: Middleware[] = [
'foo',
() => {},
async () => {}
]
options.middleware = middlewares
options.middleware = middlewares[0]
options.middleware = middlewares[1]
options.middleware = middlewares[2]
// scrollToTop
options.scrollToTop = true
// transition
options.transition = 'foo'
options.transition = { name: 'foo' }
options.transition = () => 'foo'
// validate
options.validate = () => true
options.validate = async () => {
const valid = await Promise.resolve(true)
return valid
}
// watchQuery
options.watchQuery = true
options.watchQuery = ['foo', 'bar']
// $nuxt
const vm = new Vue(options)
if (vm.$nuxt.$loading.fail) { vm.$nuxt.$loading.fail() }
vm.$nuxt.$loading.finish()
if (vm.$nuxt.$loading.increase) { vm.$nuxt.$loading.increase(1) }
if (vm.$nuxt.$loading.pause) { vm.$nuxt.$loading.pause() }
vm.$nuxt.$loading.start()
vm.$nuxt.isOffline = true
vm.$nuxt.isOnline = true

View File

@ -12,7 +12,8 @@ const types = {
perf: { title: '🔥 Performance' },
examples: { title: '📝 Examples' },
chore: { title: '🏡 Chore' },
test: { title: '👓 Tests' }
test: { title: '👓 Tests' },
types: { title: '🇹 Types' }
}
const knownAuthors = [

211
yarn.lock
View File

@ -2366,6 +2366,14 @@
resolved "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a"
integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==
"@types/autoprefixer@^9.7.2":
version "9.7.2"
resolved "https://registry.npmjs.org/@types/autoprefixer/-/autoprefixer-9.7.2.tgz#64b3251c9675feef5a631b7dd34cfea50a8fdbcc"
integrity sha512-QX7U7YW3zX3ex6MECtWO9folTGsXeP4b8bSjTq3I1ODM+H+sFHwGKuof+T+qBcDClGlCGtDb3SVfiTVfmcxw4g==
dependencies:
"@types/browserslist" "*"
postcss "7.x.x"
"@types/babel__core@^7.1.7":
version "7.1.7"
resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.7.tgz#1dacad8840364a57c98d0dd4855c6dd3752c6b89"
@ -2399,6 +2407,19 @@
dependencies:
"@babel/types" "^7.3.0"
"@types/body-parser@*":
version "1.19.0"
resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f"
integrity sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==
dependencies:
"@types/connect" "*"
"@types/node" "*"
"@types/browserslist@*":
version "4.8.0"
resolved "https://registry.npmjs.org/@types/browserslist/-/browserslist-4.8.0.tgz#60489aefdf0fcb56c2d8eb65267ff08dad7a526d"
integrity sha512-4PyO9OM08APvxxo1NmQyQKlJdowPCOQIy5D/NLO3aO0vGC57wsMptvGp3b8IbYnupFZr92l1dlVief1JvS6STQ==
"@types/cacheable-request@^6.0.1":
version "6.0.1"
resolved "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.1.tgz#5d22f3dded1fd3a84c0bbeb5039a7419c2c91976"
@ -2416,21 +2437,75 @@
dependencies:
"@types/node" "*"
"@types/clean-css@*":
version "4.2.1"
resolved "https://registry.npmjs.org/@types/clean-css/-/clean-css-4.2.1.tgz#cb0134241ec5e6ede1b5344bc829668fd9871a8d"
integrity sha512-A1HQhQ0hkvqqByJMgg+Wiv9p9XdoYEzuwm11SVo1mX2/4PSdhjcrUlilJQoqLscIheC51t1D5g+EFWCXZ2VTQQ==
dependencies:
"@types/node" "*"
"@types/color-name@^1.1.1":
version "1.1.1"
resolved "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0"
integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==
"@types/compression@^1.7.0":
version "1.7.0"
resolved "https://registry.npmjs.org/@types/compression/-/compression-1.7.0.tgz#8dc2a56604873cf0dd4e746d9ae4d31ae77b2390"
integrity sha512-3LzWUM+3k3XdWOUk/RO+uSjv7YWOatYq2QADJntK1pjkk4DfVP0KrIEPDnXRJxAAGKe0VpIPRmlINLDuCedZWw==
dependencies:
"@types/express" "*"
"@types/connect@*", "@types/connect@^3.4.33":
version "3.4.33"
resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz#31610c901eca573b8713c3330abc6e6b9f588546"
integrity sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A==
dependencies:
"@types/node" "*"
"@types/estree@0.0.39":
version "0.0.39"
resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
"@types/etag@^1.8.0":
version "1.8.0"
resolved "https://registry.npmjs.org/@types/etag/-/etag-1.8.0.tgz#37f0b1f3ea46da7ae319bbedb607e375b4c99f7e"
integrity sha512-EdSN0x+Y0/lBv7YAb8IU4Jgm6DWM+Bqtz7o5qozl96fzaqdqbdfHS5qjdpFeIv7xQ8jSLyjMMNShgYtMajEHyQ==
dependencies:
"@types/node" "*"
"@types/events@*":
version "3.0.0"
resolved "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7"
integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==
"@types/express-serve-static-core@*":
version "4.17.7"
resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.7.tgz#dfe61f870eb549dc6d7e12050901847c7d7e915b"
integrity sha512-EMgTj/DF9qpgLXyc+Btimg+XoH7A2liE8uKul8qSmMTHCeNYzydDKFdsJskDvw42UsesCnhO63dO0Grbj8J4Dw==
dependencies:
"@types/node" "*"
"@types/qs" "*"
"@types/range-parser" "*"
"@types/express@*":
version "4.17.6"
resolved "https://registry.npmjs.org/@types/express/-/express-4.17.6.tgz#6bce49e49570507b86ea1b07b806f04697fac45e"
integrity sha512-n/mr9tZI83kd4azlPG5y997C/M4DNABK9yErhFM6hKdym4kkmd9j0vtsJyjFIwfRBxtrxZtAfGZCNRIBMFLK5w==
dependencies:
"@types/body-parser" "*"
"@types/express-serve-static-core" "*"
"@types/qs" "*"
"@types/serve-static" "*"
"@types/file-loader@^4.2.0":
version "4.2.0"
resolved "https://registry.npmjs.org/@types/file-loader/-/file-loader-4.2.0.tgz#ec8e793e275b7f90cdec3ff286518c6bf7bb8fc3"
integrity sha512-N3GMqKiKSNd41q4/lZlkdvNXKKWVdOXrA8Rniu64+25X0K2U1mWmTSu1CIqXKKsZUCwfaFcaioviLQtQ+EowLg==
dependencies:
"@types/webpack" "*"
"@types/glob@^7.1.1":
version "7.1.1"
resolved "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575"
@ -2452,6 +2527,15 @@
resolved "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.0.tgz#551a4589b6ee2cc9c1dff08056128aec29b94880"
integrity sha512-iYCgjm1dGPRuo12+BStjd1HiVQqhlRhWDOQigNxn023HcjnhsiFz9pc6CzJj4HwDCSQca9bxTL4PxJDbkdm3PA==
"@types/html-minifier@^3.5.3":
version "3.5.3"
resolved "https://registry.npmjs.org/@types/html-minifier/-/html-minifier-3.5.3.tgz#5276845138db2cebc54c789e0aaf87621a21e84f"
integrity sha512-j1P/4PcWVVCPEy5lofcHnQ6BtXz9tHGiFPWzqm7TtGuWZEfCHEP446HlkSNc9fQgNJaJZ6ewPtp2aaFla/Uerg==
dependencies:
"@types/clean-css" "*"
"@types/relateurl" "*"
"@types/uglify-js" "*"
"@types/http-cache-semantics@*":
version "4.0.0"
resolved "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz#9140779736aa2655635ee756e2467d787cfe8a2a"
@ -2489,6 +2573,23 @@
dependencies:
"@types/node" "*"
"@types/less@^3.0.1":
version "3.0.1"
resolved "https://registry.npmjs.org/@types/less/-/less-3.0.1.tgz#625694093c72f8356c4042754e222407e50d6b08"
integrity sha512-dBp05MtWN/w1fGVjj5LVrDw6VrdYllpWczbUkCsrzBj08IHsSyRLOFvUrCFqZFVR+nsqkrRLNg6oOlvqMLPaSA==
"@types/memory-fs@*":
version "0.3.2"
resolved "https://registry.npmjs.org/@types/memory-fs/-/memory-fs-0.3.2.tgz#5d4753f9b390cb077c8c8af97bc96463399ceccd"
integrity sha512-j5AcZo7dbMxHoOimcHEIh0JZe5e1b8q8AqGSpZJrYc7xOgCIP79cIjTdx5jSDLtySnQDwkDTqwlC7Xw7uXw7qg==
dependencies:
"@types/node" "*"
"@types/mime@*":
version "2.0.2"
resolved "https://registry.npmjs.org/@types/mime/-/mime-2.0.2.tgz#857a118d8634c84bba7ae14088e4508490cd5da5"
integrity sha512-4kPlzbljFcsttWEq6aBW0OZe6BDajAmyvr2xknBG92tejQnvdGtT9+kXSZ580DqpxY9qG2xeQVF9Dq0ymUTo5Q==
"@types/minimatch@*":
version "3.0.3"
resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
@ -2499,26 +2600,65 @@
resolved "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.0.tgz#69a23a3ad29caf0097f06eda59b361ee2f0639f6"
integrity sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=
"@types/node-sass@^4.11.1":
version "4.11.1"
resolved "https://registry.npmjs.org/@types/node-sass/-/node-sass-4.11.1.tgz#bda27c5181cbf7c090c3058e119633dfb2b6504c"
integrity sha512-wPOmOEEtbwQiPTIgzUuRSQZ3H5YHinsxRGeZzPSDefAm4ylXWnZG9C0adses8ymyplKK0gwv3JkDNO8GGxnWfg==
dependencies:
"@types/node" "*"
"@types/node@*", "@types/node@>= 8":
version "14.0.5"
resolved "https://registry.npmjs.org/@types/node/-/node-14.0.5.tgz#3d03acd3b3414cf67faf999aed11682ed121f22b"
integrity sha512-90hiq6/VqtQgX8Sp0EzeIsv3r+ellbGj4URKj5j30tLlZvRUpnAe9YbYnjl3pJM93GyXU0tghHhvXHq+5rnCKA==
"@types/node@^12.12.42":
version "12.12.42"
resolved "https://registry.npmjs.org/@types/node/-/node-12.12.42.tgz#d0d1149336bd07540dd1ea576692829d575dec34"
integrity sha512-R/9QdYFLL9dE9l5cWWzWIZByVGFd7lk7JVOJ7KD+E1SJ4gni7XJRLz9QTjyYQiHIqEAgku9VgxdLjMlhhUaAFg==
"@types/normalize-package-data@^2.4.0":
version "2.4.0"
resolved "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e"
integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==
"@types/optimize-css-assets-webpack-plugin@^5.0.1":
version "5.0.1"
resolved "https://registry.npmjs.org/@types/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.1.tgz#1f437ef9ef937b393687a8819be2d2fddc03b069"
integrity sha512-qyi5xmSl+DTmLFtVtelhso3VnNQYxltfgMa+Ed02xqNZCZBD0uYR6i64FmcwfieDzZRdwkJxt9o2JHq/5PBKQg==
dependencies:
"@types/webpack" "*"
"@types/prettier@^2.0.0":
version "2.0.1"
resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.0.1.tgz#b6e98083f13faa1e5231bfa3bdb1b0feff536b6d"
integrity sha512-boy4xPNEtiw6N3abRhBi/e7hNvy3Tt8E9ZRAQrwAGzoCGZS/1wjo9KY7JHhnfnEsG5wSjDbymCozUM9a3ea7OQ==
"@types/pug@^2.0.4":
version "2.0.4"
resolved "https://registry.npmjs.org/@types/pug/-/pug-2.0.4.tgz#8772fcd0418e3cd2cc171555d73007415051f4b2"
integrity sha1-h3L80EGOPNLMFxVV1zAHQVBR9LI=
"@types/q@^1.5.1":
version "1.5.4"
resolved "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24"
integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==
"@types/qs@*":
version "6.9.3"
resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.3.tgz#b755a0934564a200d3efdf88546ec93c369abd03"
integrity sha512-7s9EQWupR1fTc2pSMtXRQ9w9gLOcrJn+h7HOXw4evxyvVqMi4f+q7d2tnFe3ng3SNHjtK+0EzGMGFUQX4/AQRA==
"@types/range-parser@*":
version "1.2.3"
resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c"
integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==
"@types/relateurl@*":
version "0.2.28"
resolved "https://registry.npmjs.org/@types/relateurl/-/relateurl-0.2.28.tgz#6bda7db8653fa62643f5ee69e9f69c11a392e3a6"
integrity sha1-a9p9uGU/piZD9e5p6facEaOS46Y=
"@types/resolve@0.0.8":
version "0.0.8"
resolved "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194"
@ -2533,6 +2673,14 @@
dependencies:
"@types/node" "*"
"@types/serve-static@*", "@types/serve-static@^1.13.4":
version "1.13.4"
resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.4.tgz#6662a93583e5a6cabca1b23592eb91e12fa80e7c"
integrity sha512-jTDt0o/YbpNwZbQmE/+2e+lfjJEJJR0I3OFaKQKPWkASkCoW3i6fsUnqudSMcNAfbtmADGu8f4MV4q+GqULmug==
dependencies:
"@types/express-serve-static-core" "*"
"@types/mime" "*"
"@types/source-list-map@*":
version "0.1.2"
resolved "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9"
@ -2548,6 +2696,14 @@
resolved "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.5.tgz#9adbc12950582aa65ead76bffdf39fe0c27a3c02"
integrity sha512-/gG2M/Imw7cQFp8PGvz/SwocNrmKFjFsm5Pb8HdbHkZ1K8pmuPzOX4VeVoiEecFCVf4CsN1r3/BRvx+6sNqwtQ==
"@types/terser-webpack-plugin@^2.2.0":
version "2.2.0"
resolved "https://registry.npmjs.org/@types/terser-webpack-plugin/-/terser-webpack-plugin-2.2.0.tgz#b1561e3118b9319d80ff65798c345877669b3e12"
integrity sha512-ywqEfTm7KdKoX9aYx0zYtiFU1z6IHrIYW9FJqeay2Ea58rTPML1J0hvoztGal2Jow3bkgGKcAmEZNL+8LqUVrA==
dependencies:
"@types/webpack" "*"
terser "^4.3.9"
"@types/uglify-js@*":
version "3.9.2"
resolved "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.9.2.tgz#01992579debba674e1e359cd6bcb1a1d0ab2e02b"
@ -2555,6 +2711,31 @@
dependencies:
source-map "^0.6.1"
"@types/webpack-bundle-analyzer@^3.8.0":
version "3.8.0"
resolved "https://registry.npmjs.org/@types/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.8.0.tgz#d1f196f95159254f76a3c2283c4677585bdf354d"
integrity sha512-Ah6FbkXLAVUNI/ExXHsTS90iRS/Efplh333NySjhGx09oeH9qXf57NMUfl4RADTL5a89hQaq/nbT4eb0LwsQJw==
dependencies:
"@types/webpack" "*"
"@types/webpack-dev-middleware@^3.7.1":
version "3.7.1"
resolved "https://registry.npmjs.org/@types/webpack-dev-middleware/-/webpack-dev-middleware-3.7.1.tgz#2d4e7d9abf6eec2988476f9f8f1e9b7acb2a7f82"
integrity sha512-+U6zP6/jlQ9Mw4zBOiuKOe/delLS4f0kvzAJCVK9wsW00hi4TD9u6TIaE5x5xy6xrkCiXMSf56bsAosORjP3/Q==
dependencies:
"@types/connect" "*"
"@types/memory-fs" "*"
"@types/webpack" "*"
loglevel "^1.6.2"
"@types/webpack-hot-middleware@^2.25.3":
version "2.25.3"
resolved "https://registry.npmjs.org/@types/webpack-hot-middleware/-/webpack-hot-middleware-2.25.3.tgz#ba6265ada359cae4f437d8ac08ac5b8c616f7521"
integrity sha512-zGkTzrwQnhSadIXGYGZLu7tpXQwn4+6y9nGeql+5UeRtW/k54Jp4SnzB0Qw00ednw0ZFoZOvqTFfXSbFXohc5Q==
dependencies:
"@types/connect" "*"
"@types/webpack" "*"
"@types/webpack-sources@*":
version "0.1.7"
resolved "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.7.tgz#0a330a9456113410c74a5d64180af0cbca007141"
@ -2564,7 +2745,7 @@
"@types/source-list-map" "*"
source-map "^0.6.1"
"@types/webpack@^4.41.8":
"@types/webpack@*", "@types/webpack@^4.41.13", "@types/webpack@^4.41.8":
version "4.41.13"
resolved "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.13.tgz#988d114c8913d039b8a0e0502a7fe4f1f84f3d5e"
integrity sha512-RYmIHOWSxnTTa765N6jJBVE45pd2SYNblEYshVDduLw6RhocazNmRzE5/ytvBD8IkDMH6DI+bcrqxh8NILimBA==
@ -8451,6 +8632,11 @@ lodash@4.17.15, lodash@^4.0.0, lodash@^4.15.0, lodash@^4.17.12, lodash@^4.17.13,
resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
loglevel@^1.6.2:
version "1.6.8"
resolved "https://registry.npmjs.org/loglevel/-/loglevel-1.6.8.tgz#8a25fb75d092230ecd4457270d80b54e28011171"
integrity sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==
loose-envify@^1.0.0:
version "1.4.0"
resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
@ -10644,19 +10830,19 @@ postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1:
indexes-of "^1.0.1"
uniq "^1.0.1"
postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.27, postcss@^7.0.30, postcss@^7.0.5, postcss@^7.0.6:
version "7.0.30"
resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.30.tgz#cc9378beffe46a02cbc4506a0477d05fcea9a8e2"
integrity sha512-nu/0m+NtIzoubO+xdAlwZl/u5S5vi/y6BCsoL8D+8IxsD3XvBS8X4YEADNIVXKVuQvduiucnRv+vPIqj56EGMQ==
postcss@7.x.x, postcss@^7.0.31:
version "7.0.31"
resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.31.tgz#332af45cb73e26c0ee2614d7c7fb02dfcc2bd6dd"
integrity sha512-a937VDHE1ftkjk+8/7nj/mrjtmkn69xxzJgRETXdAUU+IgOYPQNJF17haGWbeDxSyk++HA14UA98FurvPyBJOA==
dependencies:
chalk "^2.4.2"
source-map "^0.6.1"
supports-color "^6.1.0"
postcss@^7.0.31:
version "7.0.31"
resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.31.tgz#332af45cb73e26c0ee2614d7c7fb02dfcc2bd6dd"
integrity sha512-a937VDHE1ftkjk+8/7nj/mrjtmkn69xxzJgRETXdAUU+IgOYPQNJF17haGWbeDxSyk++HA14UA98FurvPyBJOA==
postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.27, postcss@^7.0.30, postcss@^7.0.5, postcss@^7.0.6:
version "7.0.30"
resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.30.tgz#cc9378beffe46a02cbc4506a0477d05fcea9a8e2"
integrity sha512-nu/0m+NtIzoubO+xdAlwZl/u5S5vi/y6BCsoL8D+8IxsD3XvBS8X4YEADNIVXKVuQvduiucnRv+vPIqj56EGMQ==
dependencies:
chalk "^2.4.2"
source-map "^0.6.1"
@ -12546,7 +12732,7 @@ terser-webpack-plugin@^2.3.5:
terser "^4.6.12"
webpack-sources "^1.4.3"
terser@^4.1.2, terser@^4.6.12, terser@^4.6.3:
terser@^4.1.2, terser@^4.3.9, terser@^4.6.12, terser@^4.6.3:
version "4.7.0"
resolved "https://registry.npmjs.org/terser/-/terser-4.7.0.tgz#15852cf1a08e3256a80428e865a2fa893ffba006"
integrity sha512-Lfb0RiZcjRDXCC3OSHJpEkxJ9Qeqs6mp2v4jf2MHfy8vGERmVDuvjXdd/EnP5Deme5F2yBRBymKmKHCBg2echw==
@ -12869,6 +13055,11 @@ typedarray@^0.0.6:
resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
typescript@~3.8:
version "3.8.3"
resolved "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061"
integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==
ua-parser-js@^0.7.21:
version "0.7.21"
resolved "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.21.tgz#853cf9ce93f642f67174273cc34565ae6f308777"