Recent Releases of https://github.com/statoscope/statoscope

https://github.com/statoscope/statoscope - v5.29.0

Improvements

  • [webpack-stats-extension-compressed]: support rspack (@dgaponov at #239)
  • [webpack-stats-extension-compressed]: support rspack (@dgaponov at #239)
  • [webpack-ui]: show bundler type and version (webpack or rspack)
  • [webpack-model]: support rspackVersion field in compilation type
  • [webpack-model]: add bundler field in normalized file
  • [webpack-stats-extension-package-info]: support rspack

Fixes

  • [webpack-ui] - fix changed modules size in diff-page (@ildar-icoosoft at #233)
  • [webpack-model]: null-chunks handling (@gear54rus at #235)

- TypeScript
Published by smelukov 11 months ago

https://github.com/statoscope/statoscope - v5.28.3 (it's alive 🤘)

Fixes

  • [webpack-model] - fix node_modules instance path for module-federation modules
  • [stats-validator-plugin-webpack] - fix no-packages-dups-rule to work with module-federation modules

Thanks @nicheinc for support!

- TypeScript
Published by smelukov over 1 year ago

https://github.com/statoscope/statoscope - v5.28.2

Fixes

  • [webpack-model] - fix collecting chunks in concat modules content (incorrect list of chunks may occur with this bug) (#223)

- TypeScript
Published by smelukov over 2 years ago

https://github.com/statoscope/statoscope - v5.28.1

Fixes

  • [webpack-model] - revert chunk-asset linking logic from 5.25.1

- TypeScript
Published by smelukov over 2 years ago

https://github.com/statoscope/statoscope - v5.28.0

Features

  • update jora from 1.0.0-beta.7 to 1.0.0-beta.8 (see changelog)

lots of new methods and assertions-feature - update discoveryjs from 1.0.0-beta.77 to 1.0.0-beta.78

- TypeScript
Published by smelukov over 2 years ago

https://github.com/statoscope/statoscope - v5.27.0

Features

  • [webpack-model] - add module_retained_modules(module)-helper that returns retained modules by specific module

In other words: retained ones will be removed from bundle along with the module - [webpack-ui] - support module_retained_modules in module tree. For example, you can see retained modules in the diff-page - [webpack-ui] - update discoveryjs from 1.0.0-beta.66 to 1.0.0-beta.77 (see changelog) - [webpack-ui] - expose Discovery namespace ```js import Statoscope from '@statoscope/webpack-ui';

console.log(Statoscope.Discovery); ```

See usage example in dev.html - [webpack-ui] - expose Discovery data and view inspector that helps to debug custom statoscope reports - [webpack-ui] - add npm run dev to develop Statoscope UI more easily - [stats-validator-reporter-stats-report]: add disableReportCompression-option, disable it will increase the size a lot (false by default) (#210 by @icy0307) - [report-writer]: use jsonxl to compress stats in binary json (replacement for old solution)

Performance

  • [webpack-model] - improve initialization performance

- TypeScript
Published by smelukov over 2 years ago

https://github.com/statoscope/statoscope - v5.26.2

Fixes

  • [webpack-model] - temporary revert long-module-id

- TypeScript
Published by smelukov almost 3 years ago

https://github.com/statoscope/statoscope - v5.26.1

Fixes

  • [cli] - add inject-extension into cli

- TypeScript
Published by smelukov almost 3 years ago

https://github.com/statoscope/statoscope - v5.26.0

Features

  • [cli] - add inject-extension command that injects custom stats extension
  • [cli] - add vrules command that shows available validation rules that plugins in statoscope.config.js provides (#192 by @denisbalyko)

- TypeScript
Published by smelukov almost 3 years ago

https://github.com/statoscope/statoscope - v5.25.1

Fixes

  • [report-writer] - fix decompression bug (closes #202)
  • [webpack-model] - fix assets collection when CompressionWebpackPlugin is used
  • [webpack-model] - fix trimming long module ids
  • [webpack-ui] - module search now works only for first 500 chars in module name (performance issue)
  • [webpack-ui] - fix incorrect badge for asset modules

- TypeScript
Published by smelukov about 3 years ago

https://github.com/statoscope/statoscope - v5.25.0

Features

  • [webpack-plugin] - super-huge (up to 30 times) decrease of html-report size
  • [cli] - super-huge (up to 30 times) decrease of html-report size

Fixes

  • [webpack-model] - trim long module identifier (closes #200)
  • [webpack-ui] - fix descending modules sort on instant lists (related #162)

Thanks

Financial contribution:

  • @eps1lon
  • @muckrack

- TypeScript
Published by smelukov about 3 years ago

https://github.com/statoscope/statoscope - v5.24.0

Features

  • [webpack-ui] - replace highcharts by chart.js

Usage example: json { "view": "box", "options": { "height": "400px" }, "content": { "view": "chart", "data": "{ any chart.js options here }" } } - [webpack-ui] - add error-view: json { "view": "error", "message": "Some error message" } - [cli] - js-files can be used in customReport-arg - [helpers] - add options-parameter into formatData-helper just like Date.toLocaleString

Refactor

  • [webpack-model] - remove stats validation (increase startup performance)

- TypeScript
Published by smelukov over 3 years ago

https://github.com/statoscope/statoscope - v5.23.0

Deps

  • [helpers] - Update jora to 1.0.0-beta.7
  • [webpack-ui] - Update @discoveryjs/discovery to 1.0.0-beta.66
  • [webpack-ui] - Update highcharts to 10.2.0

Fixes

  • [webpack-model] - refactor chunk graph building (fixes bugs of chunks relations accuracy)

- TypeScript
Published by smelukov over 3 years ago

https://github.com/statoscope/statoscope - v5.22.0

Features

  • [cli] - add --custom-report and --config args for generate and serve commands (#157 by @amalitsky)
  • [config] - add generate.reports field (#157 by @amalitsky)
  • [webpack-model] - added helpers:
    • asset_getSize(asset: NormalizedAsset, hash: string, useCompressed: boolean): Size
    • assets_getTotalSize(assets: NormalizedAsset[], hash: string, useCompressed: boolean): Size
    • entrypoint_getChunks(entry: NormalizedEntrypointItem): NormalizedChunk[]
    • entrypoint_getInitialChunks(entry: NormalizedEntrypointItem): NormalizedChunk[]
    • entrypoint_getInitialSize(entry: NormalizedEntrypointItem, hash: string, useCompressed: boolean): Size
    • entrypoint_getAsyncChunks(entry: NormalizedEntrypointItem): NormalizedChunk[]
    • entrypoint_getAsyncSize(entry: NormalizedEntrypointItem, hash: string, useCompressed: boolean): Size
    • entrypoint_getAssets(entry: NormalizedEntrypointItem): NormalizedAsset[]
    • entrypoint_getInitialAssets(entry: NormalizedEntrypointItem): NormalizedAsset[]
    • entrypoint_getAsyncAssets(entry: NormalizedEntrypointItem): NormalizedAsset[]
    • resolveCompilationByAsset(asset: NormalizedAsset, filename: string): NormalizedCompilation | null
    • resolveCompilationByChunk(chunk: NormalizedChunk, filename: string): NormalizedCompilation | null
    • resolveCompilationByModule(module: NormalizedModule, filename: string): NormalizedCompilation | null
    • resolveCompilationByEntrypoint(entry: NormalizedEntrypointItem, filename: string): NormalizedCompilation | null

Fixes

  • [webpack-ui] - fix dashboard data
  • [webpack-model] - fix handling chunks with no files (#158 by @amalitsky)

- TypeScript
Published by smelukov over 3 years ago

https://github.com/statoscope/statoscope - v5.20.1

Fixes

  • [webpack-model] - move @types/webpack into dev deps

- TypeScript
Published by smelukov about 4 years ago

https://github.com/statoscope/statoscope - v5.20.0

Performance

  • [webpack-model] - huge performance improvement for stats normalization

Features

  • [webpack-plugin] - add normalizeStats that reduces stats size
  • [webpack-ui] - options and data props for chart-view as jora-query

Fixes

  • [cli] - minor fix for generate-command output

Other

  • [webpack-ui] - use the brand new Statoscope logo
  • [report-writer] - use logo as loading spinner

- TypeScript
Published by smelukov about 4 years ago

https://github.com/statoscope/statoscope - v5.19.3

Fixes

  • [stats-extension-package-info] - collect more package versions
  • [webpack-stats-extension-package-info] - collect more package versions

- TypeScript
Published by smelukov about 4 years ago

https://github.com/statoscope/statoscope - v5.19.2

Fixes

  • [webpack-ui] - fix chunk modules delta

- TypeScript
Published by smelukov about 4 years ago

https://github.com/statoscope/statoscope - v5.19.1

Fixes

  • [webpack-stats-extension-package-info] - collect more package versions

- TypeScript
Published by smelukov about 4 years ago

https://github.com/statoscope/statoscope - v5.19.0

Feature

  • [webpack-model] - smart handling for concat modules container id This improves modules diff.
  • [helpers] - add id modifier to indexer
  • [cli] - add init and create commands (#139 by @OrlovAlexei)

- TypeScript
Published by smelukov about 4 years ago

https://github.com/statoscope/statoscope - v5.18.0

Features

  • [config] - more useful error message if any of plugins or reporters from statoscope config is not installed (#137 by @amalitsky)

Fixes

  • [webpack-model] - fix d.ts

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.17.0

Features

  • [webpack-model] - support grouped modules (stats: { all: true } in webpack 5)
  • [webpack-model] - improved chunkName helper Now chunkName helper returns more accurate chunk name
  • [webpack-model] - add assetChunkName helper

Refactor

  • [webpack-model] - total stats preparing refactoring

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.16.0

Features

  • [cli] - Support reference-arg for generate and serve commands (#134)
  • [webpack-ui] - Use input and reference files by default for diff page (#134)
  • [webpack-ui] - Add details to chunks-tab (Added/Removed/Changed modules) at diff page. (#133 by @andreygmc)

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.15.0

Features

  • [stats-validator-plugin-webpack] - add description and alternatives for restricted-packages rule (#129 by @amalitsky)

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - 5.14.1

Fix

Republish all the packages because of npm bug

No changes

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.14.0

Features

  • [cli] - add query command (#130)
  • [cli] - add inject-report command

Fixes

  • [webpack-ui] - use report id when no report name is specified

Refactor

  • [stats-extension-custom-reports] - handleReport returns boolean instead of throw an error

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.13.1

5.13.1 (1 October 2021)

Fixes

  • [types] - rename .ts to .d.ts

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.13.0

Features

  • [webpack-ui] - update highcharts to v9
  • [webpack-ui] - add box-view to build flex layout js [{ view: 'box', content: [ { view: 'box', content: 'struct' }, { view: 'box', content: 'struct' }, { view: 'box', content: 'struct' }, ] }, { view: 'box', options: { direction: 'column' }, content: [ { view: 'box', content: 'struct' }, { view: 'box', content: 'struct' }, ] }] There are some supported options:

    • display
    • direction
    • shrink
    • grow
    • alignItems
    • justifyItems
    • alignContent
    • justifyContent
    • width
    • height
    • padding
    • margin
  • [webpack-model] - add resolveExtensionByCompilation-helper - resolves extension by id and compilation

  • [webpack-model] - resolveExtension* resolves extension even if the extension has no API (not warning anymore)

  • [webpack-model] - add StatsExtensionWebpackAdapter type

  • [webpack-plugin] - add extensions-options (see plugin readme for more info)

Refactor

  • [webpack-model] - resolveExtension resolves extension by its name and filename that the extension attached to
  • [webpack-stats-extension-compressed] - implement webpack stats extension interface
  • [webpack-stats-extension-package-info] - implement webpack stats extension interface

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.12.1

Fixes

  • [types] - add types into package

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.12.0

Features

  • [cli] - output is no longer a required argument (tmp directory is used by default) (#119 by @OrlovAlexei)

Fixes

  • [webpack-model] - fix crash when unknown extension is used
  • [webpack-model] - fix crash with regenerator runtime

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.11.2

Fixes

  • [webpack-ui] - fix shouldExcludeResource-helper

Now returns true if no regexp specified

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.11.1

Build

  • [webpack-ui] - use default target for babel-env (support more browsers)

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.11.0

Features

  • [webpack-ui] - add new options to specify a regexp

All assets matched the regexp will be ignored from download size/time calculation - [stats-validator-plugin-webpack] - add asset-type exclude to diff-entry-download-size-limits-rule - [stats-validator-plugin-webpack] - add asset-type exclude to diff-entry-download-time-limits-rule - [stats-validator-plugin-webpack] - add asset-type exclude to entry-download-size-limits-rule - [stats-validator-plugin-webpack] - add asset-type exclude to entry-download-time-limits-rule

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.10.4

Fixes

  • [cli] - use >=12.0.0 instead of ^12.0.0 in engines.node

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.10.3

Fixes

  • [stats-validator-plugin-webpack] - use compilation hash instead of compilation name

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.10.2

Fixes

  • [webpack-stats-extension-package-info] - fix crash if there is no context in stats config

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.10.1

Fixes

  • [stats-validator-plugin-webpack] - fix diff-deprecated-packages rule
  • [stats-validator-plugin-webpack] - fix diff-deprecated-modules rule

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.10.0

Features

  • [webpack-ui] - add chart-view (based on highcharts) jsonc { view: 'chart, options: [/* any highcharts options */] }

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.9.1

Fixes

  • [webpack-plugin] - fix crash if there is no context in stats config

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.9.0

Features

  • [stats-extension-custom-reports] - add package for passing custom reports to the UI (#108)
  • [webpack-plugin] - support custom reports (#108)
  • [webpack-ui] - support custom reports (#108)
  • [helpers] - support lock/unlock for Resolver (#107) By default, all the resolvers is locked (no items can be added to resolver storage) ts const resolver = makeResolver(modules, m => m.identifier); modules.push(fooModule); resolver('foo'); // null resolver.unlock(); // allow to fetch resolver storage for new elements modules.push(fooModule); resolver('foo'); // fooModule In other words, locked resolver remembers its source items and ignores any source changes.

It is useful for performance. - [helpers] - add Indexer to build an index (#108) Index is more complex of resolver. It provides some API to manipulate its storage: ts const moduleIndex = makeIndex(module => module.identifier); // no source needed moduleIndex.add(fooModule); moduleIndex.get('foo'); // fooModule moduleIndex.get('bar'); // null moduleIndex.add(barModule); moduleIndex.get('bar'); // barModule moduleIndex.getAll(); // [fooModule, barModule]

  • [stats-extension-compressed] - support indexer (#108)
  • [stats-extension-package-info] - support indexer (#108)
  • [stats-extension-stats-validation-result] - support indexer (#108)
  • [config] - add requireConfig (#108)
  • [cli] - support requireConfig (#108)
  • [cli] - add makeReplacer helper to create json replacer (#107)
  • [webpack-model] - add __statoscope.context field (#107)
  • [report-writer] - remove context path from stats (it makes all the path relative from context) (#107)
  • [webpack-plugin] - remove context path from stats (it makes all the path relative from context) (#107)
  • [webpack-stats-extension-package-info] - remove context path from stats (it makes all the path relative from context) (#107)

Refactor

  • [webpack-model] - use module.identifier to resolve a module (#107)
  • [webpack-model] - decouple extension and compilation (#108)

Extensions have attached to files, not to compilations

  • [webpack-ui] - use module.identifier to resolve a module (#107)
  • [webpack-stats-extension-compressed] - use module.identifier to resolve a module (#107)
  • [stats-validator-plugin-webpack] - use module.identifier to resolve a module (#107)

Bugfix

  • [webpack-model] - not fail when incomplete stats have used

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.8.1

Fixes

  • [stats-validator-plugin-webpack] - fix chunk resolving in diff-entry-download-size-limits rule (#106 by @nnn3d )
  • [stats-validator-plugin-webpack] - fix chunk resolving in diff-entry-download-time-limits rule (#106 by @nnn3d )

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.8.0

Features

  • [cli, webpack-plugin, stats-validator-reporter-stats-report] - generate UI-reports with normalized stats (#104) It reduces generated UI-report size (sometimes it is more than 10x smaller)
  • [webpack-model, webpack-ui] - support normalized UI-reports (#104)
  • [stats-validator-plugin-webpack] - show changed reasons in diff-deprecated-modules/packages rules

Fixes

  • [webpack-model] - merge modules chunks info to collect more truthy info about modules chunks (#104)

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.7.3

Fixes

  • [webpack-ui] - remove modules duplicates from modules list

Performance

  • [webpack-ui] - improve performance of entries and modules tabs on the main page

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.7.2

Fixes

  • [webpack-ui] - correct set of modules in Initial Chunks tab on the entry page (closes #102)

Chore

  • [config] - improve error message

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.7.1

Fixes

  • [webpack-model] - add missed json into the package

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.7.0

Features

  • [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
    • support stats-extension-stats-validation-result
    • show badge in the main page
    • new page with validation results
    • new page with details of a validation message
    • mark entities (modules, chunks, packages, etc.) that have messages from the validator
    • show validation messages of the entities pages (modules, chunks, packages, etc.)
  • [webpack-ui] - add some jora-helpers
    • resolveEntrypoint(id: string, hash: string): NormalizedEntrypointItem | null Resolve entrypoint by its name
    • resolveFile(id: string): NormalizedFile | null Resolve file by its name
    • resolveInputFile(): 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 messages
    • validation_getItem(id?: number, hash?: string): Item | null Get validation message
    • validation_resolveRelatedItem(item?: RelatedItem, hash?: string): ResolvedRelatedItem Resolve an entity (module, chunk, etc.) that related with some message
    • validation_resolveRule(name?: string, hash?: string): RuleDescriptor | null Resolve detail info about a rule
  • [cli] - support new validators in validate command
    • add reference-parameter
    • add config-parameter
    • use stats-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

Refactor

  • [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

Fixes

  • [helpers] - fix max-parameter bug in graph_findPaths-helper

Deprecate

  • [cli] - validator parameter in validate command (use statoscope config with rules instead)

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.6.2

Fixes

  • [webpack-model] - calculating modules size on foam-tree-helper
  • [webpack-ui] - show modules size on foam-tree map

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.6.1

Fixes

  • [helpers] fix handling max-property in Graph.findPaths

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.6.0

Features

  • [webpack-ui] add entrypoint tab into the module page. How it's possible to inspect all the paths from a specific module to an entrypoint
  • [webpack-ui] add entrypoint into issuer path
  • [helpers] add Graph, Node and SolutionPath classes to solve the graph-specific tasks. Add a few jora-helpers:

    • graph_getNode(id, graph) - get a node by its id
    • graph_getPaths(from, graph, to, max) - get all or max possible paths from from node to to node
  • [webpack-model] add deps for every module. There are all the modules that the module requires

  • [webpack-model] add dep for every entrypoint. There is a module that an entrypoint requires

  • [webpack-model] add resolvedEntry and resolvedEntryName for entrypoint-reasons

  • [webpack-model] add a few jora-helpers:

    • getModuleGraph(hash) - get module graph for specified compilation
    • moduleGraph_getEntrypoints(module, graph, entrypoints, max) - get all or max entrypoints of module
    • moduleGraph_getPaths(from, graph, to, max) - get all or max possible paths from from module to to module

Fixes

  • [webpack-ui] fix settings error when multiple tabs opened

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.5.1

Fixes

  • [report-writer] rollback to sync stream polling model
  • [webpack-plugin] broken html report

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.5.0

Features

  • [webpack-plugin] add new property saveOnlyStats
  • [webpack-plugin] add new property saveReportTo (as a replacement for saveTo)

Refactor

  • [webpack-plugin] refactoring to make code more flexible
  • [report-writer] refactor work with the streams

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.4.3

Fixes

  • [webpack-ui] handle unresolved module reasons for a package
  • [webpack-stats-extension-package-info] match package version for webpack 4

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.4.2

Fixes

  • [webpack-plugin] sometimes a report was opening before it written to the disk
  • [webpack-stats-extension-compressed] fix fails on reexport usage on webpack 4
  • [webpack-stats-extension-package-info] taking into account that webpack 4 uses absolute path for some module names

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.4.1

Fixes

  • [webpack-model] stats extensions now works for child compilations

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.4.0

Features

  • [ui-webpack] use as an alias to webpack-ui and webpack-plugin
  • [webpack-plugin] create the directory before writing the stats and report
  • [webpack-ui] add package version-diff Adds the badges like: major upgrade from x.x.x
  • [helpers] add semverGT-helper
  • [helpers] add semverGTE-helper
  • [helpers] add semverLT-helper
  • [helpers] add semverLTE-helper
  • [helpers] add semverEQ-helper
  • [helpers] add semverDiff-helper
  • [helpers] add semverParse-helper
  • [webpack-model] add context-param to jora query-method (#82)
  • [cli] add context-param to jora query-method (#82)

Fixes

  • [webpack-stats-extension-compressed] fix CssModule handling
  • [webpack-stats-extension-compressed] fix temporary assets handling

Refactor

  • [helpers] move formatDiff-helper from webpack-ui

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.3.1

Fixes

  • fix all @statoscope-deps version for not to old versions

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.3.2

Fixes

  • [report-writer] return options.scripts as Array<stirng, Item>

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.3.0

Features

  • [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 from webpack-plugin@>=5.3 or any source that uses stats-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 from webpack-plugin@>=5.3 or any source that uses stats-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 size - getAssetSize(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 network
    • getDownloadTime(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

Fixes

  • [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

Improvements

  • [webpack-ui] better sorting of package instances

Root-instances goes first

  • [webpack-ui] fix loading-styles

Refactor

  • [webpack-ui] refactor diff-page to make it more flexible and extendable

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.2.0

Features

  • [webpack-ui] - show asset module badge for asset modules (#72)
  • [webpack-model] - use chunk.name in chunkName-helper
  • [webpack-plugin] - make options-parameter as optional

Fixed

  • [webpack-plugin] - (crit) broken html report
  • [webpack-plugin] - (crit) fix taking additionalStats into account
  • [webpack-model] - make context-parameter in Prepared.query as optional (types)
  • [webpack-model] - make stats-parameter in statName-helper as optional (types)

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.1.0

Fixes

  • [webpack-ui] - fix popup positioning when page was scrolled

Refactoring

  • [cli] - migrate to typescript
  • [webpack-plugin] - migrate to typescript
  • [webpack-ui] - migrate to typescript
  • [webpack-model] - migrate to typescript
  • [report-writer] - migrate to typescript
  • [helpers] - migrate to typescript

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.0.1

Fixes

  • [cli] fix generate command
  • [cli] fix readme
  • [webpack-plugin] npm audit fix
  • [webpack-ui] npm audit fix

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v5.0.0

Features

  • [ui-webpack] BREAKING: deprecated in favor of new package webpack-ui
  • [cli] new package with CLI tools (validate, generate, serve)
  • [webpack-plugin] new package with webpack plugin that generated statoscope report

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v4.1.2

Bugfix

UI

  • Module page: dependencies-block

- TypeScript
Published by smelukov over 4 years ago

https://github.com/statoscope/statoscope - v4.1.1

Bugfix

UI

  • Diff modules bug

- TypeScript
Published by smelukov almost 5 years ago

https://github.com/statoscope/statoscope - v4.1.0

Improvement

UI

  • Improve starting up performance at 25% (#6966139)
  • Huge improvement of diff performance (#1b8f346)
  • Hide useless tabs at the diff page (#2130c74)

For example, if there is no diff in the modules, then no Modules-tab will be shown

Bugfix

  • Use module.name instead of module.identifier to more accuracy diff

- TypeScript
Published by smelukov almost 5 years ago

https://github.com/statoscope/statoscope - v4.0.0

Changes

UI

  • BREAKING: remove separated-styles build

Improvement

UI

  • Handle all child compilations (#46d813c) Now Statoscope will handle all child compilation. It's useful for cases like https://github.com/GoogleChrome/workbox/issues/2785 By default, Statoscope doesn't show any child compilation, but there is a setting Hide child compilations to change it.
  • Show chunk file size (#47) Now Statoscope shows a little more info about a chunk

Internals

  • Update discovery
  • Update build stack (webpack/babel/etc) (#3371565)
  • Update foamtree (#9fb2116)

- TypeScript
Published by smelukov almost 5 years ago

https://github.com/statoscope/statoscope - v3.5.0

Improvement

Plugin

  • Improve stats normalization performance (#43)

- TypeScript
Published by smelukov about 5 years ago

https://github.com/statoscope/statoscope - v3.4.0

Improvement

  • Huge improvement for HTML-report loading time (3824a83)

Bugfix

  • Fix ignoring element parameter on Statoscope init-function #42

- TypeScript
Published by smelukov about 5 years ago

https://github.com/statoscope/statoscope - v3.3.0

Features

  • Support stats with any size.

JS engines have a string size limit (e.g. 512mb for V8). It means that JSON with a size bigger than this limitation can't be parsed with JSON.parse

Now Statoscope uses a streaming JSON parsing (thanks to json-ext) to ignore this limitation.

Plugin

  • Add saveStatsTo: string option

You can save a webpack stats with saveStatsTo: '/abs/path/to/stats.json'

Use [name] and [hash] placeholders to replace these by compilation.name and compilation.hash

  • Add additionalStats: string[] option

You can load any stats to Statoscope to switch between them or diff these on the Diff page.

additionalStats: ['/abs/path/to/previous/stats.json']

  • Add statsOptions: Object option

You can override your webpack-config stats option by statsOptions option statsOptions: { all: true, source: false } All stats-options see at docs

  • Add watchMode:boolean option

By default, Statoscode does not generate a report if webpack run in watch-mode. Set watchMode: true to generate a report in watch-mode

  • Add [name] and [hash] placeholders to staveTo option to replace these by compilation.name and compilation.hash

Bugfix

UI

  • Fix resolving module resource that starts with ..

- TypeScript
Published by smelukov about 5 years ago

https://github.com/statoscope/statoscope - v3.2.0

Features

  • Added webpack plugin

    Now you may use Statoscope as a webpack plugin:

    webpack.config.js: ```js const StatoscopeWebpackPlugin = require('@statoscope/ui-webpack');

    config.plugins.push(new StatoscopeWebpackPlugin()); ```

    See the readme for more information.

Misc

- TypeScript
Published by smelukov about 5 years ago

https://github.com/statoscope/statoscope - v3.1.0

Features

  • Goto first compilation when load multiple stats or a stat with multiple compilations

- TypeScript
Published by smelukov about 5 years ago

https://github.com/statoscope/statoscope - v3.0.0

  • [Breaking]: Change data structure

    Now, Statoscope normalize the stats to a specific standardized structure.

    You can see it at Make report page.

    Every stat has some basic info (filename, webpack version) and a list of the compilations.

    The modules/chunks/assets are resolved now

    Statoscope init-function argument also changed:

    ```js import init from '@statoscope/ui-webpack'; import stats from 'path/to/stats.json'

    init({ name: "stats.json", data: stats }); ```

  • Stats diff

    Statoscope provides a tool to diff the stats. Load two or more stats to diff it.

  • Support multiple stat files

    Now you can load multiple stats and switch between them.

  • Support multi-config projects

    If you have a multi-config project (e.g. client and server described in one config) then it will be splitter into a few compilations with possibility to switching between them.

  • Rework main page dashboard

    Add some indicators:

    • Total size - size of all the assets of your bundle
    • Initial size - size of all the initial assets of your bundle
    • Packages size - size of all
    • Duplicate modules - total modules with the same source
    • Build Time

    Remove chunk groups indicator

  • Add duplicate module info

    Now you can see all the modules with the same source

  • Add stats validation

  • Add deopt block to a module page

  • Add module issuer path

  • improve filtration speed

- TypeScript
Published by smelukov about 5 years ago

https://github.com/statoscope/statoscope - v2.2.0

Features

  • ctrl + click on foam-tree opens a package or module detail page,
  • improved popup markup
  • allow passing custom root element to init the UI
  • add style-less dist

- TypeScript
Published by smelukov over 5 years ago

https://github.com/statoscope/statoscope - v2.1.2

Bugfix

  • correct parsing modules name with absolute path

- TypeScript
Published by smelukov over 5 years ago

https://github.com/statoscope/statoscope - v2.1.1

Bugfix

  • ignore top-level modules in stats and collect these by the chunks
  • use original module name if can't normalize it
  • fix exception when mouse leave a foam-tree

- TypeScript
Published by smelukov over 5 years ago

https://github.com/statoscope/statoscope - v2.1.0

Features

  • add modules reasons to the package tree

- TypeScript
Published by smelukov over 5 years ago

https://github.com/statoscope/statoscope - v2.0.1

Bugfix

  • fix module page when module id is number

- TypeScript
Published by smelukov over 5 years ago

https://github.com/statoscope/statoscope - v2.0.0

  • brand new webpack analyzer, webpack-runtime-analyzer was deprecated

- TypeScript
Published by smelukov over 5 years ago

https://github.com/statoscope/statoscope - v1.5.0

UI

  • supported sorting for the tables (#16)
  • added modules stat at the top of the table in detail page (#16)

- TypeScript
Published by smelukov almost 9 years ago

https://github.com/statoscope/statoscope - v1.4.3

  • normalize file path on windows (fixed #14, thanks to @lahmatiy)
  • fix issue with scrollbars on body on windows (@lahmatiy)

- TypeScript
Published by smelukov almost 9 years ago

https://github.com/statoscope/statoscope - v1.4.2

Bump rempl version

- TypeScript
Published by smelukov almost 9 years ago

https://github.com/statoscope/statoscope - v1.4.1

Support new rempl environment implementation

- TypeScript
Published by smelukov almost 9 years ago

https://github.com/statoscope/statoscope - v1.4.0

Source map support

Now your favorite editor can open exactly the place (file, line and column) where some module is required or requiring some other module: - enable source-map in your webpack config (e.g. devtool: 'source-map') - click on some Required module in details page withholding shift key and your editor will open the place (file, line and column) where clicked module was required by a filtered module - click on some Occurrences module in details page withholding shift key and your editor will open the place (file, line and column) where clicked module are requiring filtered module

- TypeScript
Published by smelukov almost 9 years ago

https://github.com/statoscope/statoscope - v1.3.1

Fixed crash on webpack 1.x

- TypeScript
Published by smelukov almost 9 years ago

https://github.com/statoscope/statoscope - v1.3.0

Whats new

Open in editor

You can open any bundle file in you favorite editor. Just set the EDITOR variable in your environment then you will may click on any file path withholding shift key to open the file in a chosen editor.

For example: export EDITOR=sublime && webpack -w

For more information about supported editors see open-in-editor documentation.

More details about the modules

Now, Webpack Runtime Analyzer has a new page that displays more useful details about the modules.

In the text input, you can choose a module or a file which info you want to see. Just start typing module/file name and choose it from the suggestion list.

In the table you can see some modules statistic:

Require

Displays modules are required by chosen module/file.

Occurrences

Displays modules are requiring chosen module/file.

Retained

Displays modules that required by chosen module/file recursively.

For example, we have three modules: foo, bar and baz.

If foo requires bar and bar requires baz then: - retained of foo is 2 (bar and baz) - retained of bar is 1 (baz) - retained of baz is 0

Exclusive

Displays modules are required only by this module/file and by all its dependencies recursively.

For example, we have three modules: foo, bar and baz.

Case 1: If foo requires bar then foo exclusive is 1 because no more modules that require bar.

Case 2: If foo and bar requires baz then: - foo exclusive is 0 because bar also requires baz. - bar exclusive is 0 because foo also requires baz.

Case 3: If foo requires bar and bar requires baz then:

  • foo exclusive is 2 because no more modules that require bar and baz
  • bar exclusive is 1 because no more modules that require baz

Controls

  • click on a module name to view detail info about the module
  • click on a module name withholding shift-key to open a file that related with this module in your editor

More integration with Atom Editor

If you run Webpack Runtime Analyzer inside Atom Editor then Details page will react to switching of current editing file.

Other changes

  • file map now ignores hide 3rd party modules and display all files of all the modules
  • fixed bug when the plugin is working only in non-watch mode when watchModeOnly is false

- TypeScript
Published by smelukov almost 9 years ago

https://github.com/statoscope/statoscope - v1.2.0

Whats new

Glad to introduce to you a big update. There are several important features:

New file map

Old and ugly file map was replaced by pretty cool FormTree library.

Double click will expose a clicked group, ESC-key will return the map to root.

Rempl server can start automatically

Before this release, you needed to install rempl server separately and start it manually before starting Webpack Runtime Analyzer. But now, you can pass mode: 'standalone' to the plugin options and rempl server will start automatically when Webpack Runtime Analyzer is started. After the server is started, you will see server URL in your console with webpack building output. Moreover, you can pass open: true to the plugin options and UI will open automatically in your default browser.

More useful module info

Now you can see module Occurrences, Retained and Exclusive properties.

Occurrences

Displays how many modules require this module.

Retained

Displays how many modules are required by this module and by all its dependencies (recursive).

For example, we have three modules: foo, bar and baz.

If foo requires bar and bar requires baz then: - retained of foo is 2 (bar and baz) - retained of bar is 1 (baz) - retained of baz is 0

Exclusive

Displays how many modules are required only by this module and by all its dependencies (recursive).

For example, we have three modules: foo, bar and baz.

Case 1: If foo requires bar then foo exclusive is 1 because no more modules that require bar.

Case 2: If foo and bar requires baz then: - foo exclusive is 0 because bar also requires baz. - bar exclusive is 0 because foo also requires baz.

Case 3: If foo requires bar and bar requires baz then:

  • foo exclusive is 2 because no more modules that require bar and baz
  • bar exclusive is 1 because no more modules that require baz

Integration with Atom editor

You can use Webpack Runtime Analyzer everywhere when having an access to a web-view (e.g. browser pages, browser plugins, mobile browsers and applications).

Some code editors have an access to a web view (e.g. iframe) and there is a great opportunity to integrate Webpack Runtime Analyzer in these editors and use unique editor features.

You can use Webpack Runtime Analyzer in Atom Editor by installed the plugin.

This plugin creates a bridge between the editor and Webpack Runtime Analyzer. It allows you to open the UI directly in an editor tab and observing current editing file.

Open UI in editor

Just type Rempl in command palette and enter rempl-server url (http://localhost:8177 by default).

Info about editing file

If the editing file is part of the bundle, then you can see some info about it in several places: - Environment page of the UI (contains all modules that retained by the editing file) - the status bar of the UI - the status bar of the Editor (two-way communication)

Environment page and status bar exist only when the UI is running within editor

How about other editors?

VS Code support is in plans...

- TypeScript
Published by smelukov almost 9 years ago

https://github.com/statoscope/statoscope - v1.1.0 - new dependency graph

Plugin

  • fixed bug when calling loader-utils (fixes #9)

UI

Old d3-graph was replaced by vivagraph. It brings some new cool features: - zooming graph with mouse/touchpad scrolling - changing graph position with drag and drop on the white field. - changing rendering speed by sliding speed slider - pause/resume graph rendering with space-key - graph statistic

- TypeScript
Published by smelukov almost 9 years ago

https://github.com/statoscope/statoscope - v1.0.1

Plugin

  • bumped rempl version
  • added onlyWatchMode option (#8)

onlyWatchMode option activates plugin only in a watch mode (> webpack --watch or > webpack-dev-server)

If onlyWatchMode is false then the plugin will be activated in a normal (> webpack) and in a watch mode (> webpack --watch or > webpack-dev-server). It means that normal building process will not be terminated after finish because the plugin is holding a permanent connection to the rempl server. The only way to terminate building process is ctrl+c like in a watch mode.

true by default.

- TypeScript
Published by smelukov almost 9 years ago

https://github.com/statoscope/statoscope - v1.0.0

🎉 First stable release!

Plugin

Plugin now works only in watch-mode and has more webpack 1.x capability

UI

  • added Hide 3rd party modules button that hides modules that don't requires your project-modules (#5)
  • added some css prefixes for cross-browsing
  • improved markup for long text in tooltip
  • highlighted different module types in graph
  • added module type to the tooltip
  • reworked path-building algorithm in file map

- TypeScript
Published by smelukov almost 9 years ago

https://github.com/statoscope/statoscope - v1.0.0-alpha5

  • add webpack2 support! 🎉
  • fix webpack version info
  • some cleanup in code

- TypeScript
Published by smelukov about 9 years ago

https://github.com/statoscope/statoscope - v1.0.0-alpha4

  • layout rework
  • bump rempl version
  • fix loaders normalization bug

- TypeScript
Published by smelukov about 9 years ago