diff --git a/declarations/BannerPlugin.d.ts b/declarations/BannerPlugin.d.ts new file mode 100644 index 000000000..4b6e51e23 --- /dev/null +++ b/declarations/BannerPlugin.d.ts @@ -0,0 +1,47 @@ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +export type BannerPlugin = + | { + /** + * Specifies the banner + */ + banner: + | { + [k: string]: any; + } + | string; + /** + * If true, banner will not be wrapped in a comment + */ + raw?: boolean; + /** + * If true, the banner will only be added to the entry chunks + */ + entryOnly?: boolean; + /** + * Include all modules that pass test assertion + */ + test?: Rules; + /** + * Include all modules matching any of these conditions + */ + include?: Rules; + /** + * Exclude all modules matching any of these conditions + */ + exclude?: Rules; + } + | { + [k: string]: any; + } + | string; +export type Rules = Rule[] | Rule; +export type Rule = + | { + [k: string]: any; + } + | string; diff --git a/declarations/DllPlugin.d.ts b/declarations/DllPlugin.d.ts new file mode 100644 index 000000000..59991cbf9 --- /dev/null +++ b/declarations/DllPlugin.d.ts @@ -0,0 +1,28 @@ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +export interface DllPlugin { + /** + * Context of requests in the manifest file (defaults to the webpack context) + */ + context?: string; + /** + * Name of the exposed dll function (external name, use value of 'output.library') + */ + name?: string; + /** + * Type of the dll bundle (external type, use value of 'output.libraryTarget') + */ + type?: string; + /** + * Absolute path to the manifest json file (output) + */ + path: string; + /** + * If true, only entry points will be exposed + */ + entryOnly?: boolean; +} diff --git a/declarations/DllReferencePlugin.d.ts b/declarations/DllReferencePlugin.d.ts new file mode 100644 index 000000000..7635029b3 --- /dev/null +++ b/declarations/DllReferencePlugin.d.ts @@ -0,0 +1,9 @@ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +export type DllReferencePlugin = { + [k: string]: any; +}; diff --git a/declarations/HashedModuleIdsPlugin.d.ts b/declarations/HashedModuleIdsPlugin.d.ts new file mode 100644 index 000000000..0784b1419 --- /dev/null +++ b/declarations/HashedModuleIdsPlugin.d.ts @@ -0,0 +1,20 @@ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +export interface HashedModuleIdsPlugin { + /** + * The hashing algorithm to use, defaults to 'md5'. All functions from Node.JS' crypto.createHash are supported. + */ + hashFunction?: string; + /** + * The encoding to use when generating the hash, defaults to 'base64'. All encodings from Node.JS' hash.digest are supported. + */ + hashDigest?: "hex" | "latin1" | "base64"; + /** + * The prefix length of the hash digest to use, defaults to 4. + */ + hashDigestLength?: number; +} diff --git a/declarations/IgnorePlugin.d.ts b/declarations/IgnorePlugin.d.ts new file mode 100644 index 000000000..715d02b5b --- /dev/null +++ b/declarations/IgnorePlugin.d.ts @@ -0,0 +1,35 @@ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +export type IgnorePlugin = + | { + /** + * A RegExp to test the request against + */ + resourceRegExp?: { + [k: string]: any; + }; + /** + * A RegExp to test the context (directory) against + */ + contextRegExp?: { + [k: string]: any; + }; + } + | { + /** + * A filter function for resource + */ + checkResource?: { + [k: string]: any; + }; + /** + * A filter function for context + */ + checkContext?: { + [k: string]: any; + }; + }; diff --git a/declarations/LoaderOptionsPlugin.d.ts b/declarations/LoaderOptionsPlugin.d.ts new file mode 100644 index 000000000..5d666ff8e --- /dev/null +++ b/declarations/LoaderOptionsPlugin.d.ts @@ -0,0 +1,27 @@ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +export interface LoaderOptionsPlugin { + /** + * Whether loaders should be in debug mode or not. debug will be removed as of webpack 3 + */ + debug?: boolean; + /** + * Where loaders can be switched to minimize mode + */ + minimize?: boolean; + /** + * A configuration object that can be used to configure older loaders + */ + options?: { + /** + * The context that can be used to configure older loaders + */ + context?: string; + [k: string]: any; + }; + [k: string]: any; +} diff --git a/declarations/SourceMapDevToolPlugin.d.ts b/declarations/SourceMapDevToolPlugin.d.ts new file mode 100644 index 000000000..e8ecc3049 --- /dev/null +++ b/declarations/SourceMapDevToolPlugin.d.ts @@ -0,0 +1,98 @@ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +export type Rules = Rule[] | Rule; +export type Rule = + | { + [k: string]: any; + } + | string; + +export interface SourceMapDevToolPlugin { + /** + * Include source maps for modules based on their extension (defaults to .js and .css) + */ + test?: Rules; + /** + * Include source maps for module paths that match the given value + */ + include?: Rules; + /** + * Exclude modules that match the given value from source map generation + */ + exclude?: Rules; + /** + * Defines the output filename of the SourceMap (will be inlined if no value is provided) + */ + filename?: (false | null) | string; + /** + * Appends the given value to the original asset. Usually the #sourceMappingURL comment. [url] is replaced with a URL to the source map file. false disables the appending + */ + append?: (false | null) | string; + /** + * Generator string or function to create identifiers of modules for the 'sources' array in the SourceMap + */ + moduleFilenameTemplate?: + | { + [k: string]: any; + } + | string; + /** + * Generator string or function to create identifiers of modules for the 'sources' array in the SourceMap used only if 'moduleFilenameTemplate' would result in a conflict + */ + fallbackModuleFilenameTemplate?: + | { + [k: string]: any; + } + | string; + /** + * Namespace prefix to allow multiple webpack roots in the devtools + */ + namespace?: string; + /** + * Indicates whether SourceMaps from loaders should be used (defaults to true) + */ + module?: boolean; + /** + * Indicates whether column mappings should be used (defaults to true) + */ + columns?: boolean; + /** + * Omit the 'sourceContents' array from the SourceMap + */ + noSources?: boolean; + /** + * Provide a custom value for the 'sourceRoot' property in the SourceMap + */ + sourceRoot?: string; + /** + * Provide a custom public path for the SourceMapping comment + */ + publicPath?: string; + /** + * Path prefix to which the [file] placeholder is relative to + */ + fileContext?: string; + /** + * (deprecated) try to map original files line to line to generated files + */ + lineToLine?: + | boolean + | { + /** + * Include source maps for modules based on their extension (defaults to .js and .css) + */ + test?: Rules; + /** + * Include source maps for module paths that match the given value + */ + include?: Rules; + /** + * Exclude modules that match the given value from source map generation + */ + exclude?: Rules; + }; +} diff --git a/declarations/WatchIgnorePlugin.d.ts b/declarations/WatchIgnorePlugin.d.ts new file mode 100644 index 000000000..3dd9727d4 --- /dev/null +++ b/declarations/WatchIgnorePlugin.d.ts @@ -0,0 +1,14 @@ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * A list of RegExps or absolute paths to directories or files that should be ignored + */ +export type WatchIgnorePlugin = ( + | string + | { + [k: string]: any; + })[]; diff --git a/declarations/WebpackOptions.d.ts b/declarations/WebpackOptions.d.ts new file mode 100644 index 000000000..637877b06 --- /dev/null +++ b/declarations/WebpackOptions.d.ts @@ -0,0 +1,1313 @@ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +export type Entry = + | { + /** + * An entry point with name + */ + [k: string]: string | CommonNonEmptyArrayOfUniqueStringValues; + } + | string + | CommonNonEmptyArrayOfUniqueStringValues + | { + [k: string]: any; + }; +export type CommonNonEmptyArrayOfUniqueStringValues = string[]; +export type Externals = + | string + | { + /** + * The dependency used for the external + */ + [k: string]: + | string + | { + [k: string]: any; + } + | CommonArrayOfStringValues + | boolean; + } + | { + [k: string]: any; + } + | Externals[]; +export type CommonArrayOfStringValues = string[]; +export type RuleSetCondition = + | { + [k: string]: any; + } + | string + | { + [k: string]: any; + } + | RuleSetConditions + | { + /** + * Logical AND + */ + and?: RuleSetConditions; + /** + * Exclude all modules matching any of these conditions + */ + exclude?: RuleSetCondition; + /** + * Exclude all modules matching not any of these conditions + */ + include?: RuleSetCondition; + /** + * Logical NOT + */ + not?: RuleSetConditions; + /** + * Logical OR + */ + or?: RuleSetConditions; + /** + * Exclude all modules matching any of these conditions + */ + test?: RuleSetCondition; + }; +export type RuleSetConditions = RuleSetCondition[]; +export type RuleSetLoader = string; +export type RuleSetUse = + | RuleSetUseItem + | { + [k: string]: any; + } + | RuleSetUseItem[]; +export type RuleSetUseItem = + | RuleSetLoader + | { + [k: string]: any; + } + | { + /** + * Loader name + */ + loader?: RuleSetLoader; + /** + * Loader options + */ + options?: RuleSetQuery; + /** + * Unique loader identifier + */ + ident?: string; + /** + * Loader query + */ + query?: RuleSetQuery; + }; +export type RuleSetQuery = + | { + [k: string]: any; + } + | string; +export type CommonArrayOfStringOrStringArrayValues = (string | string[])[]; +export type RuleSetRules = RuleSetRule[]; +export type FilterTypes = FilterItemTypes | FilterItemTypes[]; +export type FilterItemTypes = + | { + [k: string]: any; + } + | string; + +export interface WebpackOptions { + /** + * Enable production optimizations or development hints. + */ + mode?: "development" | "production" | "none"; + /** + * Set the value of `require.amd` and `define.amd`. + */ + amd?: { + [k: string]: any; + }; + /** + * Report the first error as a hard error instead of tolerating it. + */ + bail?: boolean; + /** + * Cache generated modules and chunks to improve performance for multiple incremental builds. + */ + cache?: + | boolean + | { + [k: string]: any; + }; + /** + * The base directory (absolute path!) for resolving the `entry` option. If `output.pathinfo` is set, the included pathinfo is shortened to this directory. + */ + context?: string; + /** + * References to other configurations to depend on. + */ + dependencies?: string[]; + /** + * Options for the webpack-dev-server + */ + devServer?: { + [k: string]: any; + }; + /** + * A developer tool to enhance debugging. + */ + devtool?: string | false; + /** + * The entry point(s) of the compilation. + */ + entry?: Entry; + /** + * Specify dependencies that shouldn't be resolved by webpack, but should become dependencies of the resulting bundle. The kind of the dependency depends on `output.libraryTarget`. + */ + externals?: Externals; + /** + * Custom values available in the loader context. + */ + loader?: { + [k: string]: any; + }; + /** + * Options affecting the normal modules (`NormalModuleFactory`). + */ + module?: Module; + /** + * Name of the configuration. Used when loading multiple configurations. + */ + name?: string; + /** + * Include polyfills or mocks for various node stuff. + */ + node?: + | false + | { + /** + * Include a polyfill for the 'Buffer' variable + */ + Buffer?: false | true | "mock"; + /** + * Include a polyfill for the '__dirname' variable + */ + __dirname?: false | true | "mock"; + /** + * Include a polyfill for the '__filename' variable + */ + __filename?: false | true | "mock"; + /** + * Include a polyfill for the 'console' variable + */ + console?: false | true | "mock"; + /** + * Include a polyfill for the 'global' variable + */ + global?: boolean; + /** + * Include a polyfill for the 'process' variable + */ + process?: false | true | "mock"; + /** + * Include a polyfill for the node.js module + */ + [k: string]: false | true | "mock" | "empty"; + }; + /** + * Options affecting the output of the compilation. `output` options tell webpack how to write the compiled files to disk. + */ + output?: Output; + /** + * Enables/Disables integrated optimizations + */ + optimization?: { + /** + * Removes modules from chunks when these modules are already included in all parents + */ + removeAvailableModules?: boolean; + /** + * Remove chunks which are empty + */ + removeEmptyChunks?: boolean; + /** + * Merge chunks which contain the same modules + */ + mergeDuplicateChunks?: boolean; + /** + * Also flag chunks as loaded which contain a subset of the modules + */ + flagIncludedChunks?: boolean; + /** + * Figure out a order of modules which results in the smallest initial bundle + */ + occurrenceOrder?: boolean; + /** + * Skip over modules which are flagged to contain no side effects when exports are not used + */ + sideEffects?: boolean; + /** + * Figure out which exports are provided by modules to generate more efficient code + */ + providedExports?: boolean; + /** + * Figure out which exports are used by modules to mangle export names, omit unused exports and generate more efficient code + */ + usedExports?: boolean; + /** + * Concatenate modules when possible to generate less modules, more efficient code and enable more optimizations by the minimizer + */ + concatenateModules?: boolean; + /** + * Optimize duplication and caching by splitting chunks by shared modules and cache group + */ + splitChunks?: + | false + | { + /** + * Select chunks for determining shared modules (defaults to "async", "initial" and "all" requires adding these chunks to the HTML) + */ + chunks?: + | ("initial" | "async" | "all") + | { + [k: string]: any; + }; + /** + * Minimal size for the created chunks + */ + minSize?: number; + /** + * Maximal size hint for the created chunks + */ + maxSize?: number; + /** + * Minimum number of times a module has to be duplicated until it's considered for splitting + */ + minChunks?: number; + /** + * Maximum number of requests which are accepted for on-demand loading + */ + maxAsyncRequests?: number; + /** + * Maximum number of initial chunks which are accepted for an entry point + */ + maxInitialRequests?: number; + /** + * Give chunks created a name (chunks with equal name are merged) + */ + name?: + | boolean + | { + [k: string]: any; + } + | string; + /** + * Sets the template for the filename for created chunks (Only works for initial chunks) + */ + filename?: string; + /** + * Sets the name delimiter for created chunks + */ + automaticNameDelimiter?: string; + /** + * Prevents exposing path info when creating names for parts splitted by maxSize + */ + hidePathInfo?: boolean; + /** + * Options for modules not selected by any other cache group + */ + fallbackCacheGroup?: { + /** + * Minimal size for the created chunk + */ + minSize?: number; + /** + * Maximal size hint for the created chunks + */ + maxSize?: number; + /** + * Sets the name delimiter for created chunks + */ + automaticNameDelimiter?: string; + }; + /** + * Assign modules to a cache group (modules from different cache groups are tried to keep in separate chunks) + */ + cacheGroups?: { + /** + * Configuration for a cache group + */ + [k: string]: + | false + | { + [k: string]: any; + } + | string + | { + /** + * Assign modules to a cache group + */ + test?: + | { + [k: string]: any; + } + | string; + /** + * Select chunks for determining cache group content (defaults to "initial", "initial" and "all" requires adding these chunks to the HTML) + */ + chunks?: + | ("initial" | "async" | "all") + | { + [k: string]: any; + }; + /** + * Ignore minimum size, minimum chunks and maximum requests and always create chunks for this cache group + */ + enforce?: boolean; + /** + * Priority of this cache group + */ + priority?: number; + /** + * Minimal size for the created chunk + */ + minSize?: number; + /** + * Maximal size hint for the created chunks + */ + maxSize?: number; + /** + * Minimum number of times a module has to be duplicated until it's considered for splitting + */ + minChunks?: number; + /** + * Maximum number of requests which are accepted for on-demand loading + */ + maxAsyncRequests?: number; + /** + * Maximum number of initial chunks which are accepted for an entry point + */ + maxInitialRequests?: number; + /** + * Try to reuse existing chunk (with name) when it has matching modules + */ + reuseExistingChunk?: boolean; + /** + * Give chunks for this cache group a name (chunks with equal name are merged) + */ + name?: + | boolean + | { + [k: string]: any; + } + | string; + /** + * Sets the name delimiter for created chunks + */ + automaticNameDelimiter?: string; + /** + * Sets the name prefix for created chunks + */ + automaticNamePrefix?: string; + /** + * Sets the template for the filename for created chunks (Only works for initial chunks) + */ + filename?: string; + }; + }; + }; + /** + * Create an additional chunk which contains only the webpack runtime and chunk hash maps + */ + runtimeChunk?: + | boolean + | ("single" | "multiple") + | { + /** + * The name or name factory for the runtime chunks + */ + name?: + | string + | { + [k: string]: any; + }; + }; + /** + * Avoid emitting assets when errors occur + */ + noEmitOnErrors?: boolean; + /** + * Check for incompatible wasm types when importing/exporting from/to ESM + */ + checkWasmTypes?: boolean; + /** + * Reduce size of WASM by changing imports to shorter strings. + */ + mangleWasmImports?: boolean; + /** + * Define the algorithm to choose module ids (natural: numeric ids in order of usage, named: readable ids for better debugging, hashed: short hashes as ids for better long term caching, size: numeric ids focused on minimal initial download size, total-size: numeric ids focused on minimal total download size, false: no algorithm used, as custom one can be provided via plugin) + */ + moduleIds?: "natural" | "named" | "hashed" | "size" | "total-size" | false; + /** + * Define the algorithm to choose chunk ids (named: readable ids for better debugging, size: numeric ids focused on minimal initial download size, total-size: numeric ids focused on minimal total download size, false: no algorithm used, as custom one can be provided via plugin) + */ + chunkIds?: "natural" | "named" | "size" | "total-size" | false; + /** + * Use readable module identifiers for better debugging (deprecated, used moduleIds: named instead) + */ + namedModules?: boolean; + /** + * Use hashed module id instead module identifiers for better long term caching (deprecated, used moduleIds: hashed instead) + */ + hashedModuleIds?: boolean; + /** + * Use readable chunk identifiers for better debugging (deprecated, used chunkIds: named instead) + */ + namedChunks?: boolean; + /** + * Generate records with relative paths to be able to move the context folder + */ + portableRecords?: boolean; + /** + * Enable minimizing the output. Uses optimization.minimizer. + */ + minimize?: boolean; + /** + * Minimizer(s) to use for minimizing the output + */ + minimizer?: (CommonPluginObject | CommonPluginFunction)[]; + /** + * Set process.env.NODE_ENV to a specific value + */ + nodeEnv?: false | string; + }; + /** + * The number of parallel processed modules in the compilation. + */ + parallelism?: number; + /** + * Configuration for web performance recommendations. + */ + performance?: + | false + | { + /** + * Filter function to select assets that are checked + */ + assetFilter?: { + [k: string]: any; + }; + /** + * Sets the format of the hints: warnings, errors or nothing at all + */ + hints?: false | "warning" | "error"; + /** + * Total size of an entry point (in bytes) + */ + maxEntrypointSize?: number; + /** + * Filesize limit (in bytes) when exceeded, that webpack will provide performance hints + */ + maxAssetSize?: number; + }; + /** + * Add additional plugins to the compiler. + */ + plugins?: (CommonPluginObject | CommonPluginFunction)[]; + /** + * Capture timing information for each module. + */ + profile?: boolean; + /** + * Store compiler state to a json file. + */ + recordsInputPath?: string; + /** + * Load compiler state from a json file. + */ + recordsOutputPath?: string; + /** + * Store/Load compiler state from/to a json file. This will result in persistent ids of modules and chunks. An absolute path is expected. `recordsPath` is used for `recordsInputPath` and `recordsOutputPath` if they left undefined. + */ + recordsPath?: string; + /** + * Options for the resolver + */ + resolve?: Resolve; + /** + * Options for the resolver when resolving loaders + */ + resolveLoader?: Resolve; + /** + * Options for webpack-serve + */ + serve?: { + [k: string]: any; + }; + /** + * Used by the webpack CLI program to pass stats options. + */ + stats?: + | { + /** + * fallback value for stats options when an option is not defined (has precedence over local webpack defaults) + */ + all?: boolean; + /** + * context directory for request shortening + */ + context?: string; + /** + * add the hash of the compilation + */ + hash?: boolean; + /** + * add webpack version information + */ + version?: boolean; + /** + * add timing information + */ + timings?: boolean; + /** + * add built at time information + */ + builtAt?: boolean; + /** + * add performance hint flags + */ + performance?: boolean; + /** + * add module depth in module graph + */ + depth?: boolean; + /** + * add assets information + */ + assets?: boolean; + /** + * add --env information + */ + env?: boolean; + /** + * Enables/Disables colorful output + */ + colors?: + | boolean + | { + /** + * Custom color for bold text + */ + bold?: string; + /** + * Custom color for red text + */ + red?: string; + /** + * Custom color for green text + */ + green?: string; + /** + * Custom color for cyan text + */ + cyan?: string; + /** + * Custom color for magenta text + */ + magenta?: string; + /** + * Custom color for yellow text + */ + yellow?: string; + }; + /** + * Set the maximum number of modules to be shown + */ + maxModules?: number; + /** + * add chunk information + */ + chunks?: boolean; + /** + * add built modules information to chunk information + */ + chunkModules?: boolean; + /** + * add built modules information + */ + modules?: boolean; + /** + * add information about modules nested in other modules (like with module concatenation) + */ + nestedModules?: boolean; + /** + * add information about assets inside modules + */ + moduleAssets?: boolean; + /** + * add children information + */ + children?: boolean; + /** + * add also information about cached (not built) modules + */ + cached?: boolean; + /** + * Show cached assets (setting this to `false` only shows emitted files) + */ + cachedAssets?: boolean; + /** + * add information about the reasons why modules are included + */ + reasons?: boolean; + /** + * add the source code of modules + */ + source?: boolean; + /** + * add warnings + */ + warnings?: boolean; + /** + * add errors + */ + errors?: boolean; + /** + * Suppress warnings that match the specified filters. Filters can be Strings, RegExps or Functions + */ + warningsFilter?: FilterTypes; + /** + * Suppress assets that match the specified filters. Filters can be Strings, RegExps or Functions + */ + excludeAssets?: FilterTypes; + /** + * Suppress modules that match the specified filters. Filters can be Strings, RegExps, Booleans or Functions + */ + excludeModules?: FilterTypes | boolean; + /** + * Please use excludeModules instead. + */ + exclude?: FilterTypes | boolean; + /** + * Display the entry points with the corresponding bundles + */ + entrypoints?: boolean; + /** + * Display all chunk groups with the corresponding bundles + */ + chunkGroups?: boolean; + /** + * add details to errors (like resolving log) + */ + errorDetails?: boolean; + /** + * add the origins of chunks and chunk merging info + */ + chunkOrigins?: boolean; + /** + * sort the modules by that field + */ + modulesSort?: string; + /** + * add dependencies and origin of warnings/errors + */ + moduleTrace?: boolean; + /** + * sort the chunks by that field + */ + chunksSort?: string; + /** + * sort the assets by that field + */ + assetsSort?: string; + /** + * Add public path information + */ + publicPath?: boolean; + /** + * Add output path information + */ + outputPath?: boolean; + /** + * show exports provided by modules + */ + providedExports?: boolean; + /** + * show exports used by modules + */ + usedExports?: boolean; + /** + * show reasons why optimization bailed out for modules + */ + optimizationBailout?: boolean; + } + | boolean + | ("none" | "errors-only" | "minimal" | "normal" | "detailed" | "verbose"); + /** + * Environment to build for + */ + target?: + | ( + | "web" + | "webworker" + | "node" + | "async-node" + | "node-webkit" + | "electron-main" + | "electron-renderer") + | { + [k: string]: any; + }; + /** + * Enter watch mode, which rebuilds on file change. + */ + watch?: boolean; + /** + * Options for the watcher + */ + watchOptions?: { + /** + * Delay the rebuilt after the first change. Value is a time in ms. + */ + aggregateTimeout?: number; + /** + * Ignore some files from watching + */ + ignored?: { + [k: string]: any; + }; + /** + * Stop watching when stdin stream has ended + */ + stdin?: boolean; + /** + * Enable polling mode for watching + */ + poll?: boolean | number; + }; +} +export interface Module { + /** + * Enable warnings for full dynamic dependencies + */ + exprContextCritical?: boolean; + /** + * Enable recursive directory lookup for full dynamic dependencies + */ + exprContextRecursive?: boolean; + /** + * Sets the default regular expression for full dynamic dependencies + */ + exprContextRegExp?: + | boolean + | { + [k: string]: any; + }; + /** + * Set the default request for full dynamic dependencies + */ + exprContextRequest?: string; + /** + * Don't parse files matching. It's matched against the full resolved request. + */ + noParse?: + | { + [k: string]: any; + }[] + | { + [k: string]: any; + } + | string[] + | string; + /** + * An array of rules applied for modules. + */ + rules?: RuleSetRules; + /** + * An array of rules applied by default for modules. + */ + defaultRules?: RuleSetRules; + /** + * Enable warnings when using the require function in a not statically analyse-able way + */ + unknownContextCritical?: boolean; + /** + * Enable recursive directory lookup when using the require function in a not statically analyse-able way + */ + unknownContextRecursive?: boolean; + /** + * Sets the regular expression when using the require function in a not statically analyse-able way + */ + unknownContextRegExp?: + | boolean + | { + [k: string]: any; + }; + /** + * Sets the request when using the require function in a not statically analyse-able way + */ + unknownContextRequest?: string; + /** + * Cache the resolving of module requests + */ + unsafeCache?: + | boolean + | { + [k: string]: any; + }; + /** + * Enable warnings for partial dynamic dependencies + */ + wrappedContextCritical?: boolean; + /** + * Enable recursive directory lookup for partial dynamic dependencies + */ + wrappedContextRecursive?: boolean; + /** + * Set the inner regular expression for partial dynamic dependencies + */ + wrappedContextRegExp?: { + [k: string]: any; + }; + /** + * Emit errors instead of warnings when imported names don't exist in imported module + */ + strictExportPresence?: boolean; + /** + * Handle the this context correctly according to the spec for namespace objects + */ + strictThisContextOnImports?: boolean; +} +export interface RuleSetRule { + /** + * Enforce this rule as pre or post step + */ + enforce?: "pre" | "post"; + /** + * Shortcut for resource.exclude + */ + exclude?: RuleSetCondition & { + [k: string]: any; + }; + /** + * Shortcut for resource.include + */ + include?: RuleSetCondition & { + [k: string]: any; + }; + /** + * Match the issuer of the module (The module pointing to this module) + */ + issuer?: RuleSetCondition & { + [k: string]: any; + }; + /** + * Shortcut for use.loader + */ + loader?: RuleSetLoader | RuleSetUse; + /** + * Shortcut for use.loader + */ + loaders?: RuleSetUse; + /** + * Only execute the first matching rule in this array + */ + oneOf?: RuleSetRules; + /** + * Shortcut for use.options + */ + options?: RuleSetQuery; + /** + * Options for parsing + */ + parser?: { + [k: string]: any; + }; + /** + * Options for the resolver + */ + resolve?: Resolve; + /** + * Flags a module as with or without side effects + */ + sideEffects?: boolean; + /** + * Shortcut for use.query + */ + query?: RuleSetQuery; + /** + * Module type to use for the module + */ + type?: + | "javascript/auto" + | "javascript/dynamic" + | "javascript/esm" + | "json" + | "webassembly/experimental"; + /** + * Match the resource path of the module + */ + resource?: RuleSetCondition & { + [k: string]: any; + }; + /** + * Match the resource query of the module + */ + resourceQuery?: RuleSetCondition; + /** + * Match the child compiler name + */ + compiler?: RuleSetCondition; + /** + * Match and execute these rules when this rule is matched + */ + rules?: RuleSetRules; + /** + * Shortcut for resource.test + */ + test?: RuleSetCondition & { + [k: string]: any; + }; + /** + * Modifiers applied to the module when rule is matched + */ + use?: RuleSetUse; +} +export interface Resolve { + /** + * Redirect module requests + */ + alias?: + | { + /** + * New request + */ + [k: string]: string; + } + | { + /** + * New request + */ + alias?: string; + /** + * Request to be redirected + */ + name?: string; + /** + * Redirect only exact matching request + */ + onlyModule?: boolean; + }[]; + /** + * Fields in the description file (package.json) which are used to redirect requests inside the module + */ + aliasFields?: CommonArrayOfStringOrStringArrayValues; + /** + * Predicate function to decide which requests should be cached + */ + cachePredicate?: { + [k: string]: any; + }; + /** + * Include the context information in the cache identifier when caching + */ + cacheWithContext?: boolean; + /** + * Filenames used to find a description file + */ + descriptionFiles?: CommonArrayOfStringValues; + /** + * Enforce using one of the extensions from the extensions option + */ + enforceExtension?: boolean; + /** + * Enforce using one of the module extensions from the moduleExtensions option + */ + enforceModuleExtension?: boolean; + /** + * Extensions added to the request when trying to find the file + */ + extensions?: CommonArrayOfStringValues; + /** + * Filesystem for the resolver + */ + fileSystem?: { + [k: string]: any; + }; + /** + * Field names from the description file (package.json) which are used to find the default entry point + */ + mainFields?: CommonArrayOfStringOrStringArrayValues; + /** + * Filenames used to find the default entry point if there is no description file or main field + */ + mainFiles?: CommonArrayOfStringValues; + /** + * Extensions added to the module request when trying to find the module + */ + moduleExtensions?: CommonArrayOfStringValues; + /** + * Folder names or directory paths where to find modules + */ + modules?: CommonArrayOfStringValues; + /** + * Plugins for the resolver + */ + plugins?: (CommonPluginObject | CommonPluginFunction)[]; + /** + * Custom resolver + */ + resolver?: { + [k: string]: any; + }; + /** + * Enable resolving symlinks to the original location + */ + symlinks?: boolean; + /** + * Enable concord resolving extras + */ + concord?: boolean; + /** + * Enable caching of successfully resolved requests + */ + unsafeCache?: + | boolean + | { + [k: string]: any; + }; + /** + * Use synchronous filesystem calls for the resolver + */ + useSyncFileSystemCalls?: boolean; +} +/** + * Plugin instance + */ +export interface CommonPluginObject { + /** + * The run point of the plugin, required method. + */ + apply: { + [k: string]: any; + }; + [k: string]: any; +} +/** + * Function acting as plugin + */ +export interface CommonPluginFunction { + /** + * The run point of the plugin, required method. + */ + apply: { + [k: string]: any; + }; + [k: string]: any; +} +export interface Output { + /** + * Add a comment in the UMD wrapper. + */ + auxiliaryComment?: + | string + | { + /** + * Set comment for `amd` section in UMD + */ + amd?: string; + /** + * Set comment for `commonjs` (exports) section in UMD + */ + commonjs?: string; + /** + * Set comment for `commonjs2` (module.exports) section in UMD + */ + commonjs2?: string; + /** + * Set comment for `root` (global variable) section in UMD + */ + root?: string; + }; + /** + * The filename of non-entry chunks as relative path inside the `output.path` directory. + */ + chunkFilename?: string; + /** + * The filename of WebAssembly modules as relative path inside the `output.path` directory. + */ + webassemblyModuleFilename?: string; + /** + * An expression which is used to address the global object/scope in runtime code + */ + globalObject?: string; + /** + * This option enables cross-origin loading of chunks. + */ + crossOriginLoading?: false | "anonymous" | "use-credentials"; + /** + * This option enables loading async chunks via a custom script type, such as script type="module" + */ + jsonpScriptType?: false | "text/javascript" | "module"; + /** + * Number of milliseconds before chunk request expires + */ + chunkLoadTimeout?: number; + /** + * Similar to `output.devtoolModuleFilenameTemplate`, but used in the case of duplicate module identifiers. + */ + devtoolFallbackModuleFilenameTemplate?: + | string + | { + [k: string]: any; + }; + /** + * Enable line to line mapped mode for all/specified modules. Line to line mapped mode uses a simple SourceMap where each line of the generated source is mapped to the same line of the original source. It’s a performance optimization. Only use it if your performance need to be better and you are sure that input lines match which generated lines. + */ + devtoolLineToLine?: + | boolean + | { + [k: string]: any; + }; + /** + * Filename template string of function for the sources array in a generated SourceMap. + */ + devtoolModuleFilenameTemplate?: + | string + | { + [k: string]: any; + }; + /** + * Module namespace to use when interpolating filename template string for the sources array in a generated SourceMap. Defaults to `output.library` if not set. It's useful for avoiding runtime collisions in sourcemaps from multiple webpack projects built as libraries. + */ + devtoolNamespace?: string; + /** + * Specifies the name of each output file on disk. You must **not** specify an absolute path here! The `output.path` option determines the location on disk the files are written to, filename is used solely for naming the individual files. + */ + filename?: + | string + | { + [k: string]: any; + }; + /** + * Digest type used for the hash + */ + hashDigest?: string; + /** + * Number of chars which are used for the hash + */ + hashDigestLength?: number; + /** + * Algorithm used for generation the hash (see node.js crypto package) + */ + hashFunction?: + | string + | { + [k: string]: any; + }; + /** + * Any string which is added to the hash to salt it + */ + hashSalt?: string; + /** + * The filename of the Hot Update Chunks. They are inside the output.path directory. + */ + hotUpdateChunkFilename?: + | string + | { + [k: string]: any; + }; + /** + * The JSONP function used by webpack for async loading of hot update chunks. + */ + hotUpdateFunction?: string; + /** + * The filename of the Hot Update Main File. It is inside the `output.path` directory. + */ + hotUpdateMainFilename?: + | string + | { + [k: string]: any; + }; + /** + * The JSONP function used by webpack for async loading of chunks. + */ + jsonpFunction?: string; + /** + * The callback function name used by webpack for loading of chunks in WebWorkers. + */ + chunkCallbackName?: string; + /** + * If set, export the bundle as library. `output.library` is the name. + */ + library?: + | string + | string[] + | { + /** + * Name of the property exposed globally by a UMD library + */ + root?: string | CommonArrayOfStringValues; + /** + * Name of the exposed AMD library in the UMD + */ + amd?: string; + /** + * Name of the exposed commonjs export in the UMD + */ + commonjs?: string; + }; + /** + * Type of library + */ + libraryTarget?: + | "var" + | "assign" + | "this" + | "window" + | "self" + | "global" + | "commonjs" + | "commonjs2" + | "commonjs-module" + | "amd" + | "umd" + | "umd2" + | "jsonp"; + /** + * Specify which export should be exposed as library + */ + libraryExport?: string | CommonArrayOfStringValues; + /** + * The output directory as **absolute path** (required). + */ + path?: string; + /** + * Include comments with information about the modules. + */ + pathinfo?: boolean; + /** + * The `publicPath` specifies the public URL address of the output files when referenced in a browser. + */ + publicPath?: + | string + | { + [k: string]: any; + }; + /** + * The filename of the SourceMaps for the JavaScript files. They are inside the `output.path` directory. + */ + sourceMapFilename?: string; + /** + * Prefixes every line of the source in the bundle with this string. + */ + sourcePrefix?: string; + /** + * Handles exceptions in module loading correctly at a performance cost. + */ + strictModuleExceptionHandling?: boolean; + /** + * If `output.libraryTarget` is set to umd and `output.library` is set, setting this to true will name the AMD module. + */ + umdNamedDefine?: boolean; +} diff --git a/package.json b/package.json index d24084eef..45856ac25 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "enhanced-resolve": "^4.1.0", "eslint-scope": "^4.0.0", "json-parse-better-errors": "^1.0.2", + "json-schema-to-typescript": "^5.7.0", "loader-runner": "^2.3.0", "loader-utils": "^1.1.0", "memory-fs": "~0.4.1", diff --git a/tooling/compile-to-definitions.js b/tooling/compile-to-definitions.js new file mode 100644 index 000000000..f7f9e2753 --- /dev/null +++ b/tooling/compile-to-definitions.js @@ -0,0 +1,49 @@ +const fs = require("fs"); +const path = require("path"); +const style = require("../.prettierrc.js"); // eslint-disable-line +const { compileFromFile } = require("json-schema-to-typescript"); +const schemasDir = path.resolve(__dirname, "../schemas"); + +const makeSchemas = () => { + // include the top level folder "./schemas" by default + const dirs = [schemasDir]; + + // search for all nestedDirs inside of this folder + // TODO: Although I don't think it makes sense at all to ever have nested folders here, (just one level deep) + // this should technically have recursive handling for those nested folers + for (let dir of fs.readdirSync(schemasDir)) { + const absDirPath = path.resolve(schemasDir, dir); + console.log(dir, schemasDir); + if (fs.statSync(absDirPath).isDirectory()) { + dirs.push(absDirPath); + } + } + + for (let dirWithSchemas of dirs) { + processSchemasInDir(dirWithSchemas); + } +}; + +const processSchemasInDir = absDirPath => { + const schemas = fs + .readdirSync(absDirPath) + .filter(name => name.endsWith(".json")) + .map(name => ({ + fileName: name.split(".")[0], + name: path.resolve(absDirPath, name) + })); + for (let { fileName, name } of schemas) { + makeDefinitionsForSchema(fileName, path.resolve(absDirPath, name)); + } +}; + +const makeDefinitionsForSchema = (fileName, absSchemaPath) => { + compileFromFile(absSchemaPath, { style }).then(ts => { + fs.writeFileSync( + path.resolve(__dirname, `../declarations/${fileName}.d.ts`), + ts + ); + }); +}; + +makeSchemas(); diff --git a/tsconfig.json b/tsconfig.json index e94475dc7..3df37338c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -12,5 +12,11 @@ "types": ["node"], "esModuleInterop": true }, - "include": ["declarations.d.ts", "bin/*.js", "lib/**/*.js", "tooling/**/*.js"] + "include": [ + "declarations.d.ts", + "declarations/*.d.ts", + "bin/*.js", + "lib/**/*.js", + "tooling/**/*.js" + ] } diff --git a/yarn.lock b/yarn.lock index d01935674..aa7cddfd8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -32,14 +32,44 @@ dependencies: "@types/babel-types" "*" +"@types/cli-color@^0.3.29": + version "0.3.29" + resolved "https://registry.yarnpkg.com/@types/cli-color/-/cli-color-0.3.29.tgz#c83a71fe02c8c7e1ccec048dd6a2458d1f6c96ea" + +"@types/json-schema@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.0.tgz#5a2b780fec9f2cf851e1b5e0a29a4cac6c9686c5" + +"@types/lodash@^4.14.116": + version "4.14.116" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.116.tgz#5ccf215653e3e8c786a58390751033a9adca0eb9" + +"@types/minimist@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.0.tgz#69a23a3ad29caf0097f06eda59b361ee2f0639f6" + +"@types/mz@0.0.32": + version "0.0.32" + resolved "https://registry.yarnpkg.com/@types/mz/-/mz-0.0.32.tgz#e8248b4e41424c052edc1725dd33650c313a3659" + dependencies: + "@types/node" "*" + "@types/node@*": version "10.5.1" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.5.1.tgz#d578446f4abff5c0b49ade9b4e5274f6badaadfc" +"@types/node@^10.9.4": + version "10.10.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.10.1.tgz#d5c96ca246a418404914d180b7fdd625ad18eca6" + "@types/node@^9.6.4": version "9.6.30" resolved "https://registry.yarnpkg.com/@types/node/-/node-9.6.30.tgz#1ecf83eaf7ac2d0dada7a9d61a1e4e7a6183ac06" +"@types/prettier@^1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-1.13.2.tgz#ffe96278e712a8d4e467e367a338b05e22872646" + "@types/source-list-map@*": version "0.1.2" resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" @@ -319,7 +349,7 @@ ansi-escapes@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" -ansi-regex@^2.0.0: +ansi-regex@^2.0.0, ansi-regex@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -341,6 +371,10 @@ any-observable@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -889,6 +923,10 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + caller-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" @@ -1056,6 +1094,17 @@ clean-css@^4.1.11: dependencies: source-map "0.5.x" +cli-color@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-1.3.0.tgz#cd2ec212efbd1a0eeb5b017f17d4e2d15e91420f" + dependencies: + ansi-regex "^2.1.1" + d "1" + es5-ext "^0.10.46" + es6-iterator "^2.0.3" + memoizee "^0.4.14" + timers-ext "^0.1.5" + cli-cursor@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" @@ -1533,6 +1582,12 @@ cyclist@~0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" +d@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" + dependencies: + es5-ext "^0.10.9" + dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -1808,10 +1863,42 @@ es-to-primitive@^1.1.1: is-date-object "^1.0.1" is-symbol "^1.0.1" +es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.45, es5-ext@^0.10.46, es5-ext@^0.10.9, es5-ext@~0.10.14, es5-ext@~0.10.2: + version "0.10.46" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.46.tgz#efd99f67c5a7ec789baa3daa7f79870388f7f572" + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.1" + next-tick "1" + +es6-iterator@^2.0.1, es6-iterator@^2.0.3, es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + es6-promise-polyfill@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/es6-promise-polyfill/-/es6-promise-polyfill-1.2.0.tgz#f38925f23cb3e3e8ce6cda8ff774fcebbb090cde" +es6-symbol@^3.1.1, es6-symbol@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" + dependencies: + d "1" + es5-ext "~0.10.14" + +es6-weak-map@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" + dependencies: + d "1" + es5-ext "^0.10.14" + es6-iterator "^2.0.1" + es6-symbol "^3.1.1" + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -1982,6 +2069,13 @@ etag@~1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/etag/-/etag-1.7.0.tgz#03d30b5f67dd6e632d2945d30d6652731a34d5d8" +event-emitter@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + dependencies: + d "1" + es5-ext "~0.10.14" + events@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" @@ -2335,6 +2429,10 @@ form-data@~2.3.1: combined-stream "1.0.6" mime-types "^2.1.12" +format-util@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/format-util/-/format-util-1.0.3.tgz#032dca4a116262a12c43f4c3ec8566416c5b2d95" + forwarded@~0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" @@ -3089,7 +3187,7 @@ is-primitive@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" -is-promise@^2.0.0, is-promise@^2.1.0: +is-promise@^2.0.0, is-promise@^2.1, is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" @@ -3639,7 +3737,7 @@ js-yaml@3.x, js-yaml@^3.9.0: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@^3.11.0, js-yaml@^3.7.0: +js-yaml@^3.11.0, js-yaml@^3.12.0, js-yaml@^3.7.0: version "3.12.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" dependencies: @@ -3704,6 +3802,35 @@ json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" +json-schema-ref-parser@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/json-schema-ref-parser/-/json-schema-ref-parser-5.1.3.tgz#f86c5868f40898e69169e1bbc854725a4fd0e1ad" + dependencies: + call-me-maybe "^1.0.1" + debug "^3.1.0" + js-yaml "^3.12.0" + ono "^4.0.6" + +json-schema-to-typescript@^5.7.0: + version "5.7.0" + resolved "https://registry.yarnpkg.com/json-schema-to-typescript/-/json-schema-to-typescript-5.7.0.tgz#8a22356896abcf6148a4e99bacd93f0d8792befe" + dependencies: + "@types/cli-color" "^0.3.29" + "@types/json-schema" "^7.0.0" + "@types/lodash" "^4.14.116" + "@types/minimist" "^1.2.0" + "@types/mz" "0.0.32" + "@types/node" "^10.9.4" + "@types/prettier" "^1.13.2" + cli-color "^1.3.0" + json-schema-ref-parser "^5.1.3" + json-stringify-safe "^5.0.1" + lodash "^4.17.11" + minimist "^1.2.0" + mz "^2.7.0" + prettier "^1.14.2" + stdin "0.0.1" + json-schema-traverse@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" @@ -3726,7 +3853,7 @@ json-stable-stringify@^1.0.1: dependencies: jsonify "~0.0.0" -json-stringify-safe@~5.0.1: +json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -3985,6 +4112,10 @@ lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" +lodash@^4.17.11: + version "4.17.11" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" + log-driver@1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.5.tgz#7ae4ec257302fd790d557cb10c97100d857b0056" @@ -4035,6 +4166,12 @@ lru-cache@^4.0.1, lru-cache@^4.1.1: pseudomap "^1.0.2" yallist "^2.1.2" +lru-queue@0.1: + version "0.1.0" + resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" + dependencies: + es5-ext "~0.10.2" + macaddress@^0.2.8: version "0.2.8" resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" @@ -4090,6 +4227,19 @@ mem@^1.1.0: dependencies: mimic-fn "^1.0.0" +memoizee@^0.4.14: + version "0.4.14" + resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.14.tgz#07a00f204699f9a95c2d9e77218271c7cd610d57" + dependencies: + d "1" + es5-ext "^0.10.45" + es6-weak-map "^2.0.2" + event-emitter "^0.3.5" + is-promise "^2.1" + lru-queue "0.1" + next-tick "1" + timers-ext "^0.1.5" + memory-fs@^0.4.0, memory-fs@~0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" @@ -4280,6 +4430,14 @@ mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + nan@^2.9.2: version "2.10.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" @@ -4320,6 +4478,10 @@ neo-async@^2.5.0: version "2.5.1" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.1.tgz#acb909e327b1e87ec9ef15f41b8a269512ad41ee" +next-tick@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" @@ -4563,6 +4725,12 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" +ono@^4.0.6: + version "4.0.8" + resolved "https://registry.yarnpkg.com/ono/-/ono-4.0.8.tgz#d1b12e048cd8a9fe5d2fbf69d3ad42bf7b0feb5e" + dependencies: + format-util "^1.0.3" + optimist@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" @@ -5081,6 +5249,10 @@ prettier@^1.14.0: version "1.14.0" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.14.0.tgz#847c235522035fd988100f1f43cf20a7d24f9372" +prettier@^1.14.2: + version "1.14.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.14.2.tgz#0ac1c6e1a90baa22a62925f41963c841983282f9" + pretty-format@^23.2.0: version "23.2.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.2.0.tgz#3b0aaa63c018a53583373c1cb3a5d96cc5e83017" @@ -6114,6 +6286,10 @@ statuses@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.2.1.tgz#dded45cc18256d51ed40aec142489d5c61026d28" +stdin@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/stdin/-/stdin-0.0.1.tgz#d3041981aaec3dfdbc77a1b38d6372e38f5fb71e" + stealthy-require@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" @@ -6318,6 +6494,18 @@ text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.0" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839" + dependencies: + any-promise "^1.0.0" + throat@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" @@ -6343,6 +6531,13 @@ timers-browserify@^2.0.4: dependencies: setimmediate "^1.0.4" +timers-ext@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.5.tgz#77147dd4e76b660c2abb8785db96574cbbd12922" + dependencies: + es5-ext "~0.10.14" + next-tick "1" + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"