@statoscope/stats
Advanced tools
Changelog
5.28.1 (20 October 2023)
[webpack-model]
- revert chunk-asset linking logic from 5.25.1Changelog
5.7.0 (1 September 2021)
[stats-validator]
- add package for validating stats[stats-validator-plugin-webpack]
- add stats-validator plugin with webpack-rules[stats-validator-reporter-console]
- add stats-validator reporter to output results into console[stats-validator-reporter-stats-report]
- add stats-validator reporter to output results into descovery-based UI[stats-extension-stats-validation-result]
- add stats extension to pass validation messages info descovery-based UI[config]
- add package that contains config-helpers[webpack-ui]
- support new validation results
stats-extension-stats-validation-result
[webpack-ui]
- add some jora-helpers
resolveEntrypoint(id: string, hash: string): NormalizedEntrypointItem | null
Resolve entrypoint by its nameresolveFile(id: string): NormalizedFile | null
Resolve file by its nameresolveInputFile(): NormalizedFile | null
Resolve file with input.json
resolveReferenceFile(): NormalizedFile | null
Resolve file with reference.json
validation_getItems(hash?: string, relatedType?: RelatedItem['type'] | null, relatedId?: string | number): Item[]
Get validation messagesvalidation_getItem(id?: number, hash?: string): Item | null
Get validation messagevalidation_resolveRelatedItem(item?: RelatedItem, hash?: string): ResolvedRelatedItem
Resolve an entity (module, chunk, etc.) that related with some messagevalidation_resolveRule(name?: string, hash?: string): RuleDescriptor | null
Resolve detail info about a rule[cli]
- support new validators in validate
command
reference
-parameterconfig
-parameterstats-validator
package[types]
- add package with statoscope ts-types[helpers]
- add get
-parameter into makeResolver
-function[helpers]
- add asciiTree
-helper that generate ASCII tree from object-tree (useful for TTY-reporters)[helpers]
- add a bunch of useful jora-helpers
typeof(value: unknown): string
works like native typeof
operator
isNullish(value: unknown): boolean
returns true
if value
is null
or undefined
isArray(value: unknown): boolean
returns true
if value
is array
useNotNullish<T>(values: readonly T[]): T | null
return first not-nullish element from values
-array or null
([null, 123].useNotNullish() = 123
)
serializeStringOrRegexp(value?: string | RegExp): SerializedStringOrRegexp | null
transform string or regexp into json-compatible format
deserializeStringOrRegexp(value?: SerializedStringOrRegexp | null): string | RegExp | null
reverse the result of serializeStringOrRegexp
semverSatisfies(version: string | SemVer, range: string | Range): boolean
returns true
if version
satisfied of range
isMatch(a?: string, b?: string | RegExp): boolean
returns true
if a
matches b
exclude<T>(
items: readonly T[],
params?: {
exclude?: Array<string | RegExp>;
get?: (arg: T) => string | undefined;
}
): T[]
Helps to exclude elements. Examples:
['foo', 'bar', 'foo'].exclude({exclude: 'foo'}) = ['bar']
[fooCompilation, barCompilation, bazCompilation].exclude({exclude: /foo|bar/, get: <name>}) = [bazCompilation]
diff_normalizeLimit(limit?: number | Limit | null): Limit | null
Normalize the limit
diff_isLTETheLimit(valueDiff: ValueDiff, limit?: number | Limit | null): boolean
Returns true
if valueDiff
has not been exceeded the limit
[report-writer]
- move transform
function from cli
[report-writer]
- to
-parameter of transform
function now is required[report-writer]
- from
-parameter of transform
might be file name or stats object[cli]
- use transform
from report-writer
[helpers]
- move prepareWithJora
from webpack-model
[webpck-model]
- use prepareWithJora
from helpers
[helpers]
- fix max
-parameter bug in graph_findPaths
-helper[cli]
- validator
parameter in validate
command (use statoscope config with rules instead)Changelog
5.3.0 (30 June 2021)
[webpack-plugin]
collect compressed (e.g. gzip) size of the resources (assets and modules)
There is a new compressor
- option that can be false | 'gzip' | ['gzip', ZlibOptions] | CompressFunction
:
'gzip'
(default) - compress all the resources with gzip (compression level - 6) and collect the compressed sizes
['gzip', ZlibOptions]
- the same as gzip
but with custom zlib settings
CompressFunction
- a function that takes source as an input and should return compressed size for this resource (useful if you want to use a non-gzip compressor)
false
- don't collect compressed sizes
It uses
webpack-stats-extension-compressed
under the hood
[webpack-plugin]
collect packages versions
It uses
webpack-stats-extension-package-info
under the hood
[webpack-ui]
taking compressed (e.g. gzip) size of the resources into account
There is a new setting to taking resources compressed size into account.
If enabled then all the sizes will be shown as compressed.
New jora-helpers:
getModuleSize(module, hash)
return compressed or normal module size
getAssetSize(asset, hash)
return compressed or normal asset size
It uses
stats-extension-compressed
under the hood and works only when the stats-file was taken fromwebpack-plugin@>=5.3
or any source that usesstats-extension-compressed
[webpack-ui]
taking packages versions into account and output these in all the package items
Also, added instance version into compilations.nodeModules.instance
It uses
stats-extension-package-info
under the hood and works only when the stats-file was taken fromwebpack-plugin@>=5.3
or any source that usesstats-extension-package-info
[webpack-ui]
download time measure
There are two new settings to select network speed and assets inject type. A download time for assets/chunks/entrypoints will be calculated based on specified network speed and assets inject type.
There are two assets inject types:
sync
: download time = sum(downloadTime(assets))
Download time is a sum of the download time of all the assets
async
: download time = max(downloadTime(assets))
Download time is a download time of most heavy asset (usefull if async
/defer
used to inject your assets)
The default network type is 3G Fast (1.37 MBit/s)
(like in Chromium).
Assets inject type is sync
by default.
[webpack-ui]
add compact
-property to asset/chunk/module/entry-item
-widget
This property removes all the badges from the entity item
[webpack-ui]
add Entrypoints
tab on diff
-page
Honestly, I just forgot to enable this tab a few releases ago 🙈
[stats-extension-compressed]
extension for collecting compressed resource sizes
It allows compressing specified resource content (string
or Buffer
) with gzip
or any other compressor.
Also, it contains the API to generate and extract this info.
[webpack-stats-extension-compressed]
webpack adapter for stats-extension-compressed
It allows collecting compressed resource sizes from webpack compilation
[stats-extension-package-info]
extension for collecting packages versions
It allows compressing specified resource content (string
or Buffer
) with gzip
or any other compressor.
Also, it contains the API to generate and extract this info.
[webpack-stats-extension-package-info]
webpack adapter for stats-extension-package-info
It allows collecting package versions from webpack compilation
[webpack-model]
added resolveExtension(name)
jora-helper that returns extension API
[webpack-model]
support stats-extension-package-info
extension
There is a new jora-helpers:
getPackageInstanceInfo(package, instancePath, hash)
that returns a package instance information[webpack-model]
support stats-extension-compressed
extension
There are new jora-helpers:
getModuleSize(module, compressed?, hash?)
returns compressed or normal module sizegetAssetSize(asset, compressed?, hash?)
returns compressed or normal asset size[webpack-model]
added jora-helpers to getting network type and download speed:
getNetworkTypeInfo(networkType: string)
return full info about specified network by its name (full list of type you can find at network-type-list.ts)getNetworkTypeName(networkType: Item)
return full name for specified networkgetDownloadTime(size: number, networkType: string)
calculate download time based on selected network type[helpers]
add locale
-parameter to formatDate
-helper
[cli]
(validate): use info
-type for messages by default
[stats]
a new package that contains Statoscope own stats format (extension-entity for now, but there are will be more entities)
[extensions]
a new package that contains Statoscope extensions toolkit
[report-writer]
add Piper - a proxy to ensure that all stream consumers have got a chunk
[webpack-model]
fix cases in normalization when no compilation.modules
[webpack-model]
fix normalization of chunk.children
[webpack-model]
fix isRoot
-field for node-modules instances
isRoot
was falsy positive if the module name not starts from .
[webpack-plugin]
fix saveStatsTo
Now it works
[webpack-ui]
fix packages instances list on diff
-page
There was undefined
instead of instances links
[webpack-ui]
fix modules diff calculation
[cli]
(validate): use console.info for info
-type messages
[webpack-ui]
better sorting of package instances
Root-instances goes first
[webpack-ui]
fix loading-styles
[webpack-ui]
refactor diff-page to make it more flexible and extendable