sonda 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md ADDED
@@ -0,0 +1,17 @@
1
+ # Changelog
2
+
3
+ ## 0.1.3
4
+
5
+ Show the approximate file and folder size after GZIP and Brotli compression.
6
+
7
+ ## 0.1.2
8
+
9
+ Use the `open` package to open the generated reports.
10
+
11
+ ## 0.1.1
12
+
13
+ Use `execFileSync` instead of `exec` to prevent potential shell injection when the path contains characters that the shell interprets in a special way, for instance quotes and spaces.
14
+
15
+ ## 0.1.0
16
+
17
+ Initial release of sonda that allowed generating an `'html'` and `'json'` report for bundles generated by Vite, Rollup, Webpack, and esbuild.
package/README.md CHANGED
@@ -7,7 +7,7 @@ Sonda works with the following bundlers:
7
7
  * Vite
8
8
  * Rollup
9
9
  * esbuild
10
- * Webpack
10
+ * webpack
11
11
 
12
12
  ## Installation
13
13
 
@@ -84,7 +84,7 @@ build( {
84
84
 
85
85
  Unlike for other bundlers, the esbuild plugin relies not only on source maps but also on the metafile. The plugin should automatically enable the metafile option for you, but if you get the error, be sure to enable it manually (`metafile: true`).
86
86
 
87
- ### Webpack
87
+ ### webpack
88
88
 
89
89
  ```javascript
90
90
  // webpack.config.js
@@ -1 +1 @@
1
- {"version":3,"file":"webpack.d.ts","sourceRoot":"","sources":["../../src/bundlers/webpack.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAgB,UAAU,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,EAAgB,KAAK,QAAQ,EAAe,MAAM,SAAS,CAAC;AAInE,qBAAa,kBAAkB;IAC9B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1B,MAAM,EAAE,UAAU,CAAE,QAAQ,CAAE,CAAC;gBAEjB,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC;IAKxC,KAAK,CAAE,QAAQ,EAAE,QAAQ,GAAI,IAAI;CA6CjC"}
1
+ {"version":3,"file":"webpack.d.ts","sourceRoot":"","sources":["../../src/bundlers/webpack.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAgB,UAAU,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,EAAgB,KAAK,QAAQ,EAAe,MAAM,SAAS,CAAC;AAInE,qBAAa,kBAAkB;IAC9B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1B,MAAM,EAAE,UAAU,CAAE,QAAQ,CAAE,CAAC;gBAEjB,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC;IAKxC,KAAK,CAAE,QAAQ,EAAE,QAAQ,GAAI,IAAI;CA4CjC"}
package/dist/index.cjs CHANGED
@@ -1,7 +1,6 @@
1
1
  'use strict';
2
2
 
3
3
  var path = require('path');
4
- var child_process = require('child_process');
5
4
  var fs = require('fs');
6
5
  var url = require('url');
7
6
  var remapping = require('@ampproject/remapping');
@@ -24,21 +23,6 @@ function normalizePath(path$1) {
24
23
  // Ensure paths are POSIX-compliant - https://stackoverflow.com/a/63251716/4617687
25
24
  return relativized.replaceAll(path.sep, path.posix.sep);
26
25
  }
27
- function getOpenCommand() {
28
- switch(process.platform){
29
- case 'darwin':
30
- return 'open';
31
- case 'win32':
32
- return 'start';
33
- default:
34
- return 'xdg-open';
35
- }
36
- }
37
- function open(path) {
38
- child_process.execFileSync(getOpenCommand(), [
39
- path
40
- ]);
41
- }
42
26
 
43
27
  /**
44
28
  * Strip any JSON XSSI avoidance prefix from the string (as documented in the source maps specification),
@@ -226,7 +210,8 @@ function hasCodeAndMap(result) {
226
210
  return Boolean(result && result.code && result.map);
227
211
  }
228
212
 
229
- function generateReportFromAssets(assets, inputs, options) {
213
+ async function generateReportFromAssets(assets, inputs, options) {
214
+ const { default: open } = await import('open');
230
215
  const handler = options.format === 'html' ? saveHtml : saveJson;
231
216
  const path = handler(assets, inputs);
232
217
  options.open && path && open(path);
@@ -262,7 +247,7 @@ function SondaEsbuildPlugin(options) {
262
247
  };
263
248
  return acc;
264
249
  }, {});
265
- generateReportFromAssets(Object.keys(result.metafile.outputs), inputs, normalizeOptions(options));
250
+ return generateReportFromAssets(Object.keys(result.metafile.outputs), inputs, normalizeOptions(options));
266
251
  });
267
252
  }
268
253
  };
@@ -328,8 +313,7 @@ class SondaWebpackPlugin {
328
313
  compiler.hooks.emit.tapAsync('SondaWebpackPlugin', (compilation, callback)=>{
329
314
  const outputPath = compiler.options.output.path || compiler.outputPath || process.cwd();
330
315
  const assets = Object.keys(compilation.assets).map((name)=>path.join(outputPath, name));
331
- generateReportFromAssets(assets, this.inputs, normalizeOptions(this.options));
332
- callback();
316
+ generateReportFromAssets(assets, this.inputs, normalizeOptions(this.options)).then(()=>callback());
333
317
  });
334
318
  }
335
319
  constructor(options){
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/utils.ts","../src/sourcemap/load.ts","../src/sourcemap/map.ts","../src/sourcemap/bytes.ts","../src/report.ts","../src/report/generate.ts","../src/bundlers/esbuild.ts","../src/bundlers/rollup.ts","../src/bundlers/webpack.ts"],"sourcesContent":["import { relative, posix, sep } from 'path';\nimport { execFileSync } from 'child_process';\nimport type { Options } from './types';\n\nconst cwd = /* #__ PURE__ */ process.cwd();\n\nexport function normalizeOptions( options?: Partial<Options> ) {\n\tconst defaultOptions: Options = {\n\t\topen: true,\n\t\tformat: 'html',\n\t};\n\n\treturn Object.assign( {}, defaultOptions, options ) as Options;\n}\n\nexport function normalizePath( path: string ): string {\n\t// Unicode escape sequences used by Rollup and Vite to identify virtual modules\n\tconst normalized = path.replace( /^\\0/, '' )\n\n\t// Transform absolute paths to relative paths\n\tconst relativized = relative( cwd, normalized );\n\n\t// Ensure paths are POSIX-compliant - https://stackoverflow.com/a/63251716/4617687\n\treturn relativized.replaceAll( sep, posix.sep );\n}\n\nfunction getOpenCommand() {\n\tswitch ( process.platform ) {\n\t\tcase 'darwin': return 'open';\n\t\tcase 'win32': return 'start';\n\t\tdefault: return 'xdg-open';\n\t}\n}\n\nexport function open( path: string ): void {\n\texecFileSync( getOpenCommand(), [ path ] )\n}\n","import { existsSync, readFileSync } from 'fs';\nimport { dirname, join, resolve, isAbsolute } from 'path';\nimport type { MaybeCodeMap } from '../types.js';\nimport type { EncodedSourceMap } from '@ampproject/remapping';\n\n/**\n * Strip any JSON XSSI avoidance prefix from the string (as documented in the source maps specification),\n * and parses the string as JSON.\n *\n * https://github.com/mozilla/source-map/blob/3cb92cc3b73bfab27c146bae4ef2bc09dbb4e5ed/lib/util.js#L162-L164\n */\nfunction parseSourceMapInput( str: string ): EncodedSourceMap {\n\treturn JSON.parse( str.replace( /^\\)]}'[^\\n]*\\n/, \"\" ) );\n}\n\n/**\n\tsourceMappingURL=data:application/json;charset=utf-8;base64,data\n \tsourceMappingURL=data:application/json;base64,data\n\tsourceMappingURL=data:application/json;uri,data\n\tsourceMappingURL=map-file-comment.css.map\n*/\nconst sourceMappingRegExp = /[@#]\\s*sourceMappingURL=(\\S+)\\b/g;\n\nexport function loadCodeAndMap( codePath: string ): MaybeCodeMap {\n\tif ( !existsSync( codePath ) ) {\n\t\treturn null;\n\t}\n\n\tconst code = readFileSync( codePath, 'utf-8' );\n\n\tconst extractedComment = code.includes( 'sourceMappingURL' ) && Array.from( code.matchAll( sourceMappingRegExp ) ).at( -1 );\n\n\tif ( !extractedComment || !extractedComment.length ) {\n\t\treturn { code };\n\t}\n\n\tconst maybeMap = loadMap( codePath, extractedComment[ 1 ] );\n\n\tif ( !maybeMap ) {\n\t\treturn { code };\n\t}\n\n\tconst { map, mapPath } = maybeMap;\n\n\tmap.sources = normalizeSourcesPaths( map, mapPath );\n\tdelete map.sourceRoot;\n\n\treturn {\n\t\tcode,\n\t\tmap\n\t};\n}\n\nfunction loadMap( codePath: string, sourceMappingURL: string ): { map: EncodedSourceMap; mapPath: string } | null {\n\tif ( sourceMappingURL.startsWith( 'data:' ) ) {\n\t\tconst map = parseDataUrl( sourceMappingURL );\n\n\t\treturn {\n\t\t\tmap: parseSourceMapInput( map ),\n\t\t\tmapPath: codePath\n\t\t};\n\t}\n\n\tconst mapPath = join( codePath, '..', sourceMappingURL );\n\n\tif ( !existsSync( mapPath ) ) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\tmap: parseSourceMapInput( readFileSync( mapPath, 'utf-8' ) ),\n\t\tmapPath\n\t};\n}\n\nfunction parseDataUrl( url: string ): string {\n\tconst [ prefix, payload ] = url.split( ',' );\n\tconst encoding = prefix.split( ';' ).at( -1 );\n\n\tswitch ( encoding ) {\n\t\tcase 'base64':\n\t\t\treturn Buffer.from( payload, 'base64' ).toString();\n\t\tcase 'uri':\n\t\t\treturn decodeURIComponent( payload );\n\t\tdefault:\n\t\t\tthrow new Error( 'Unsupported source map encoding: ' + encoding );\n\t}\n}\n\nfunction normalizeSourcesPaths( map: EncodedSourceMap, mapPath: string ): EncodedSourceMap[ 'sources' ] {\n\tconst mapDir = dirname( mapPath );\n\n\treturn map.sources.map( source => {\n\t\tif ( !source ) {\n\t\t\treturn source;\n\t\t}\n\n\t\treturn isAbsolute( source )\n\t\t\t? source\n\t\t\t: resolve( mapDir, map.sourceRoot ?? '.', source );\n\t} );\n}\n","import { default as remapping, type DecodedSourceMap, type EncodedSourceMap } from '@ampproject/remapping';\nimport { loadCodeAndMap } from './load';\nimport { resolve } from 'path';\nimport type { ReportInput } from '../types';\nimport { normalizePath } from '../utils';\n\nexport function mapSourceMap(\n\tmap: EncodedSourceMap,\n\tdirPath: string,\n\tinputs: Record<string, ReportInput>\n): DecodedSourceMap {\n\tconst alreadyRemapped = new Set<string>();\n\tconst remapped = remapping( map, ( file, ctx ) => {\n\t\tif ( alreadyRemapped.has( file ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\talreadyRemapped.add( file );\n\n\t\tconst codeMap = loadCodeAndMap( resolve( dirPath, file ) );\n\n\t\tif ( !codeMap ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst parentPath = normalizePath( file );\n\t\tconst { format } = inputs[ parentPath ];\n\n\t\tcodeMap.map?.sources\n\t\t\t.filter( source => source !== null )\n\t\t\t.forEach( ( source, index ) => {\n\t\t\t\tconst normalizedPath = normalizePath( source );\n\n\t\t\t\tif ( parentPath === normalizedPath ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tinputs[ normalizedPath ] = {\n\t\t\t\t\tbytes: Buffer.byteLength( codeMap.map!.sourcesContent?.[ index ] ?? '' ),\n\t\t\t\t\tformat,\n\t\t\t\t\timports: [],\n\t\t\t\t\tbelongsTo: parentPath\n\t\t\t\t};\n\t\t\t} );\n\n\t\tctx.content ??= codeMap.code;\n\n\t\treturn codeMap.map;\n\t}, { decodedMappings: true } );\n\n\treturn remapped as DecodedSourceMap;\n}\n","import { gzipSync, brotliCompressSync } from 'zlib';\nimport type { DecodedSourceMap } from '@ampproject/remapping';\nimport type { Sizes } from '../types';\n\nexport function getBytesPerSource( code: string, map: DecodedSourceMap ): Map<string, Sizes> {\n\tconst contributions = new Array( map.sources.length ).fill( '' );\n\n\t// Split the source code by lines\n\tconst codeLines = code.split( /(?<=\\r?\\n)/ );\n\n\tfor ( let lineIndex = 0; lineIndex < map.mappings.length; lineIndex++ ) {\n\t\tconst line = map.mappings[ lineIndex ];\n\t\tconst lineCode = codeLines[ lineIndex ];\n\n\t\tfor ( let mappingIndex = 0; mappingIndex < line.length; mappingIndex++ ) {\n\t\t\t// 0: generatedColumn\n\t\t\t// 1: fileIndex\n\t\t\t// 2: originalLine\n\t\t\t// 3: originalColumn\n\t\t\t// 4: nameIndex\n\n\t\t\tconst [ startColumn, fileIndex ] = line[ mappingIndex ];\n\t\t\tconst endColumn = line[ mappingIndex + 1 ]?.[ 0 ] ?? lineCode.length;\n\n\t\t\tcontributions[ fileIndex! ] += lineCode.slice( startColumn, endColumn );\n\t\t}\n\t}\n\n\treturn new Map<string, Sizes>( \n\t\tcontributions.map( ( code, index ) => [ map.sources[ index ]!, getSizes( code ) ] )\n\t);\n}\n\nexport function getSizes( code: string ): Sizes {\n\treturn {\n\t\tuncompressed: Buffer.byteLength( code ),\n\t\tgzip: gzipSync( code ).length,\n\t\tbrotli: brotliCompressSync( code ).length\n\t};\n}\n","import { dirname, resolve } from 'path';\nimport { fileURLToPath } from 'url';\nimport { readFileSync } from 'fs';\nimport { mapSourceMap } from './sourcemap/map.js';\nimport { getBytesPerSource, getSizes } from './sourcemap/bytes.js';\nimport { loadCodeAndMap } from './sourcemap/load.js';\nimport type {\n JsonReport,\n MaybeCodeMap,\n ReportInput,\n ReportOutput,\n CodeMap,\n ReportOutputInput\n} from './types.js';\nimport { normalizePath } from './utils.js';\n\nexport function generateJsonReport(\n assets: Array<string>,\n inputs: Record<string, ReportInput>\n): JsonReport {\n const outputsEntries = assets\n .filter( asset => !asset.endsWith( '.map' ) )\n .map( asset => processAsset( asset, inputs ) )\n .filter( output => !!output );\n\n return {\n inputs,\n outputs: Object.fromEntries( outputsEntries )\n };\n}\n\nexport function generateHtmlReport(\n assets: Array<string>,\n inputs: Record<string, ReportInput>\n): string {\n const json = generateJsonReport( assets, inputs );\n const __dirname = dirname( fileURLToPath( import.meta.url ) );\n const template = readFileSync( resolve( __dirname, './index.html' ), 'utf-8' );\n\n return template.replace( '__REPORT_DATA__', JSON.stringify( json ) );\n}\n\nfunction processAsset( asset: string, inputs: Record<string, ReportInput> ): [ string, ReportOutput ] | void {\n const maybeCodeMap = loadCodeAndMap( asset );\n\n if ( !hasCodeAndMap( maybeCodeMap ) ) {\n return;\n }\n\n const { code, map } = maybeCodeMap;\n const mapped = mapSourceMap( map, dirname( asset ), inputs );\n\n mapped.sources = mapped.sources.map( source => normalizePath( source! ) );\n\n const bytes = getBytesPerSource( code, mapped );\n\n return [ normalizePath( asset ), {\n ...getSizes( code ),\n inputs: mapped.sources.reduce( ( acc, source ) => {\n if ( source ) {\n acc[ normalizePath( source ) ] = bytes.get( source ) ?? {\n uncompressed: 0,\n gzip: 0,\n brotli: 0\n };\n }\n\n return acc;\n }, {} as Record<string, ReportOutputInput> )\n } ];\n}\n\nfunction hasCodeAndMap( result: MaybeCodeMap ): result is Required<CodeMap> {\n return Boolean( result && result.code && result.map );\n}\n","import { join } from 'path';\nimport { writeFileSync } from 'fs';\nimport { open } from '../utils.js';\nimport { generateHtmlReport, generateJsonReport } from '../report.js';\nimport type { Options, JsonReport } from '../types.js';\n\nexport function generateReportFromAssets(\n\tassets: string[],\n\tinputs: JsonReport[ 'inputs' ],\n\toptions: Options\n): void {\n\tconst handler = options.format === 'html'\n\t\t? saveHtml\n\t\t: saveJson;\n\n\tconst path = handler( assets, inputs );\n\n\toptions.open && path && open( path );\n}\n\nfunction saveHtml(\n\tassets: string[],\n\tinputs: JsonReport[ 'inputs' ]\n): string | null {\n\tconst report = generateHtmlReport( assets, inputs );\n\tconst path = join( process.cwd(), 'sonda-report.html' );\n\n\twriteFileSync( path, report );\n\n\treturn path;\n}\n\nfunction saveJson(\n\tassets: string[],\n\tinputs: JsonReport[ 'inputs' ]\n): string | null {\n\tconst report = generateJsonReport( assets, inputs );\n\tconst path = join( process.cwd(), 'sonda-report.json' );\n\n\twriteFileSync( path, JSON.stringify( report, null, 2 ) );\n\n\treturn path;\n}\n","import { normalizeOptions } from '../utils';\nimport { generateReportFromAssets } from '../report/generate';\nimport type { Plugin } from 'esbuild';\nimport type { Options, JsonReport } from '../types';\n\nexport function SondaEsbuildPlugin( options?: Partial<Options> ): Plugin {\n\treturn {\n\t\tname: 'sonda',\n\t\tsetup( build ) {\n\t\t\tbuild.initialOptions.metafile = true;\n\n\t\t\tbuild.onEnd( result => {\n\t\t\t\tif ( !result.metafile ) {\n\t\t\t\t\treturn console.error( 'Metafile is required for SondaEsbuildPlugin to work.' );\n\t\t\t\t}\n\n\t\t\t\tconst inputs = Object\n\t\t\t\t\t.entries( result.metafile.inputs )\n\t\t\t\t\t.reduce( ( acc, [ path, data ] ) => {\n\t\t\t\t\t\t\n\t\t\t\t\t\tacc[ path ] = {\n\t\t\t\t\t\t\tbytes: data.bytes,\n\t\t\t\t\t\t\tformat: data.format ?? 'unknown',\n\t\t\t\t\t\t\timports: data.imports.map( data => data.path ),\n\t\t\t\t\t\t\tbelongsTo: null,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\treturn acc;\n\t\t\t\t\t}, {} as JsonReport[ 'inputs' ] );\n\n\t\t\t\tgenerateReportFromAssets(\n\t\t\t\t\tObject.keys( result.metafile.outputs ),\n\t\t\t\t\tinputs,\n\t\t\t\t\tnormalizeOptions( options )\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\t};\n}\n","import { join, resolve, dirname } from 'path';\nimport { normalizeOptions, normalizePath } from '../utils.js';\nimport { generateReportFromAssets } from '../report/generate.js';\nimport type { Options, ModuleFormat, JsonReport } from '../types.js';\nimport type { Plugin, ModuleInfo, NormalizedOutputOptions, OutputBundle } from 'rollup';\n\nconst esmRegex = /* #__ PURE__ */ /\\.m[tj]sx?$/;\nconst cjsRegex = /* #__ PURE__ */ /\\.c[tj]sx?$/;\n\nexport function SondaRollupPlugin( options?: Partial<Options> ): Plugin {\n\tlet inputs: JsonReport[ 'inputs' ] = {};\n\n\treturn {\n\t\tname: 'sonda',\n\n\t\twriteBundle(\n\t\t\t{ dir, file }: NormalizedOutputOptions,\n\t\t\tbundle: OutputBundle\n\t\t) {\n\t\t\tconst outputDir = resolve( process.cwd(), dir ?? dirname( file! ) );\n\t\t\tconst assets = Object.keys( bundle ).map( name => join( outputDir, name ) );\n\n\t\t\treturn generateReportFromAssets(\n\t\t\t\tassets,\n\t\t\t\tinputs,\n\t\t\t\tnormalizeOptions( options )\n\t\t\t);\n\t\t},\n\n\t\tmoduleParsed( module: ModuleInfo ) {\n\t\t\tinputs[ normalizePath( module.id ) ] = {\n\t\t\t\tbytes: module.code ? Buffer.byteLength( module.code ) : 0,\n\t\t\t\tformat: getFormat( module.id, module.meta.commonjs?.isCommonJS ),\n\t\t\t\timports: module.importedIds.map( id => normalizePath( id ) ),\n\t\t\t\tbelongsTo: null,\n\t\t\t};\n\t\t}\n\t};\n}\n\nfunction getFormat( moduleId: string, isCommonJS: boolean | undefined ): ModuleFormat {\n\tif ( isCommonJS === true || cjsRegex.test( moduleId ) ) {\n\t\treturn 'cjs';\n\t}\n\n\tif ( isCommonJS === false || esmRegex.test( moduleId ) ) {\n\t\treturn 'esm';\n\t}\n\n\treturn'unknown';\n}\n","import { join } from 'path';\nimport { normalizeOptions, normalizePath } from '../utils';\nimport { generateReportFromAssets } from '../report/generate';\nimport type { Options, ModuleFormat, JsonReport } from '../types';\nimport { NormalModule, type Compiler, type Module } from 'webpack';\n\nconst jsRegexp = /* #__PURE__ */ /\\.[c|m]?[t|j]s[x]?$/;\n\nexport class SondaWebpackPlugin {\n\toptions: Partial<Options>;\n\tinputs: JsonReport[ 'inputs' ];\n\n\tconstructor ( options?: Partial<Options> ) {\n\t\tthis.options = options || {};\n\t\tthis.inputs = {};\n\t}\n\n\tapply( compiler: Compiler ): void {\n\t\tcompiler.options.output.devtoolModuleFilenameTemplate = '[absolute-resource-path]';\n\n\t\tcompiler.hooks.compilation.tap( 'SondaWebpackPlugin', ( compilation ) => {\n\t\t\tcompilation.hooks.optimizeModules.tap( 'SondaWebpackPlugin', ( modules ) => {\n\t\t\t\tArray\n\t\t\t\t\t.from( modules )\n\t\t\t\t\t.forEach( module => {\n\t\t\t\t\t\tif ( !isNormalModule( module ) ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst imports = module.dependencies.reduce( ( acc, dependency ) => {\n\t\t\t\t\t\t\tconst module = compilation.moduleGraph.getModule( dependency );\n\n\t\t\t\t\t\t\tif ( isNormalModule( module ) ) {\n\t\t\t\t\t\t\t\tacc.push( normalizePath( module.resource ) );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn acc;\n\t\t\t\t\t\t}, [] as Array<string> );\n\n\t\t\t\t\t\tthis.inputs[ normalizePath( module.resource ) ] = {\n\t\t\t\t\t\t\tbytes: module.size(),\n\t\t\t\t\t\t\tformat: getFormat( module ),\n\t\t\t\t\t\t\timports,\n\t\t\t\t\t\t\tbelongsTo: null,\n\t\t\t\t\t\t};\n\t\t\t\t\t} );\n\t\t\t} );\n\t\t} );\n\n\t\tcompiler.hooks.emit.tapAsync( 'SondaWebpackPlugin', ( compilation, callback ) => {\n\t\t\tconst outputPath = compiler.options.output.path || compiler.outputPath || process.cwd();\n\t\t\tconst assets = Object.keys( compilation.assets ).map( name => join( outputPath, name ) );\n\n\t\t\tgenerateReportFromAssets(\n\t\t\t\tassets,\n\t\t\t\tthis.inputs,\n\t\t\t\tnormalizeOptions( this.options )\n\t\t\t);\n\n\t\t\tcallback();\n\t\t} );\n\t}\n}\n\nfunction getFormat( module: NormalModule ): ModuleFormat {\n\tif ( !jsRegexp.test( module.resource ) ) {\n\t\treturn 'unknown';\n\t}\n\n\tif ( module.type === 'javascript/esm' || module.buildMeta?.exportsType === 'namespace' ) {\n\t\treturn 'esm';\n\t}\n\n\treturn 'cjs';\n}\n\nfunction isNormalModule( module: Module | NormalModule | null ): module is NormalModule {\n\treturn module !== null && 'resource' in module;\n}\n"],"names":["cwd","process","normalizeOptions","options","defaultOptions","open","format","Object","assign","normalizePath","path","normalized","replace","relativized","relative","replaceAll","sep","posix","getOpenCommand","platform","execFileSync","parseSourceMapInput","str","JSON","parse","sourceMappingRegExp","loadCodeAndMap","codePath","existsSync","code","readFileSync","extractedComment","includes","Array","from","matchAll","at","length","maybeMap","loadMap","map","mapPath","sources","normalizeSourcesPaths","sourceRoot","sourceMappingURL","startsWith","parseDataUrl","join","url","prefix","payload","split","encoding","Buffer","toString","decodeURIComponent","Error","mapDir","dirname","source","isAbsolute","resolve","mapSourceMap","dirPath","inputs","alreadyRemapped","Set","remapped","remapping","file","ctx","has","add","codeMap","parentPath","filter","forEach","index","normalizedPath","bytes","byteLength","sourcesContent","imports","belongsTo","content","decodedMappings","getBytesPerSource","contributions","fill","codeLines","lineIndex","mappings","line","lineCode","mappingIndex","startColumn","fileIndex","endColumn","slice","Map","getSizes","uncompressed","gzip","gzipSync","brotli","brotliCompressSync","generateJsonReport","assets","outputsEntries","asset","endsWith","processAsset","output","outputs","fromEntries","generateHtmlReport","json","__dirname","fileURLToPath","template","stringify","maybeCodeMap","hasCodeAndMap","mapped","reduce","acc","get","result","Boolean","generateReportFromAssets","handler","saveHtml","saveJson","report","writeFileSync","SondaEsbuildPlugin","name","setup","build","initialOptions","metafile","onEnd","console","error","entries","data","keys","esmRegex","cjsRegex","SondaRollupPlugin","writeBundle","dir","bundle","outputDir","moduleParsed","module","id","getFormat","meta","commonjs","isCommonJS","importedIds","moduleId","test","jsRegexp","SondaWebpackPlugin","apply","compiler","devtoolModuleFilenameTemplate","hooks","compilation","tap","optimizeModules","modules","isNormalModule","dependencies","dependency","moduleGraph","getModule","push","resource","size","emit","tapAsync","callback","outputPath","constructor","type","buildMeta","exportsType"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/utils.ts","../src/sourcemap/load.ts","../src/sourcemap/map.ts","../src/sourcemap/bytes.ts","../src/report.ts","../src/report/generate.ts","../src/bundlers/esbuild.ts","../src/bundlers/rollup.ts","../src/bundlers/webpack.ts"],"sourcesContent":["import { relative, posix, sep } from 'path';\nimport type { Options } from './types';\n\nconst cwd = /* #__ PURE__ */ process.cwd();\n\nexport function normalizeOptions( options?: Partial<Options> ) {\n\tconst defaultOptions: Options = {\n\t\topen: true,\n\t\tformat: 'html',\n\t};\n\n\treturn Object.assign( {}, defaultOptions, options ) as Options;\n}\n\nexport function normalizePath( path: string ): string {\n\t// Unicode escape sequences used by Rollup and Vite to identify virtual modules\n\tconst normalized = path.replace( /^\\0/, '' )\n\n\t// Transform absolute paths to relative paths\n\tconst relativized = relative( cwd, normalized );\n\n\t// Ensure paths are POSIX-compliant - https://stackoverflow.com/a/63251716/4617687\n\treturn relativized.replaceAll( sep, posix.sep );\n}\n","import { existsSync, readFileSync } from 'fs';\nimport { dirname, join, resolve, isAbsolute } from 'path';\nimport type { MaybeCodeMap } from '../types.js';\nimport type { EncodedSourceMap } from '@ampproject/remapping';\n\n/**\n * Strip any JSON XSSI avoidance prefix from the string (as documented in the source maps specification),\n * and parses the string as JSON.\n *\n * https://github.com/mozilla/source-map/blob/3cb92cc3b73bfab27c146bae4ef2bc09dbb4e5ed/lib/util.js#L162-L164\n */\nfunction parseSourceMapInput( str: string ): EncodedSourceMap {\n\treturn JSON.parse( str.replace( /^\\)]}'[^\\n]*\\n/, \"\" ) );\n}\n\n/**\n\tsourceMappingURL=data:application/json;charset=utf-8;base64,data\n \tsourceMappingURL=data:application/json;base64,data\n\tsourceMappingURL=data:application/json;uri,data\n\tsourceMappingURL=map-file-comment.css.map\n*/\nconst sourceMappingRegExp = /[@#]\\s*sourceMappingURL=(\\S+)\\b/g;\n\nexport function loadCodeAndMap( codePath: string ): MaybeCodeMap {\n\tif ( !existsSync( codePath ) ) {\n\t\treturn null;\n\t}\n\n\tconst code = readFileSync( codePath, 'utf-8' );\n\n\tconst extractedComment = code.includes( 'sourceMappingURL' ) && Array.from( code.matchAll( sourceMappingRegExp ) ).at( -1 );\n\n\tif ( !extractedComment || !extractedComment.length ) {\n\t\treturn { code };\n\t}\n\n\tconst maybeMap = loadMap( codePath, extractedComment[ 1 ] );\n\n\tif ( !maybeMap ) {\n\t\treturn { code };\n\t}\n\n\tconst { map, mapPath } = maybeMap;\n\n\tmap.sources = normalizeSourcesPaths( map, mapPath );\n\tdelete map.sourceRoot;\n\n\treturn {\n\t\tcode,\n\t\tmap\n\t};\n}\n\nfunction loadMap( codePath: string, sourceMappingURL: string ): { map: EncodedSourceMap; mapPath: string } | null {\n\tif ( sourceMappingURL.startsWith( 'data:' ) ) {\n\t\tconst map = parseDataUrl( sourceMappingURL );\n\n\t\treturn {\n\t\t\tmap: parseSourceMapInput( map ),\n\t\t\tmapPath: codePath\n\t\t};\n\t}\n\n\tconst mapPath = join( codePath, '..', sourceMappingURL );\n\n\tif ( !existsSync( mapPath ) ) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\tmap: parseSourceMapInput( readFileSync( mapPath, 'utf-8' ) ),\n\t\tmapPath\n\t};\n}\n\nfunction parseDataUrl( url: string ): string {\n\tconst [ prefix, payload ] = url.split( ',' );\n\tconst encoding = prefix.split( ';' ).at( -1 );\n\n\tswitch ( encoding ) {\n\t\tcase 'base64':\n\t\t\treturn Buffer.from( payload, 'base64' ).toString();\n\t\tcase 'uri':\n\t\t\treturn decodeURIComponent( payload );\n\t\tdefault:\n\t\t\tthrow new Error( 'Unsupported source map encoding: ' + encoding );\n\t}\n}\n\nfunction normalizeSourcesPaths( map: EncodedSourceMap, mapPath: string ): EncodedSourceMap[ 'sources' ] {\n\tconst mapDir = dirname( mapPath );\n\n\treturn map.sources.map( source => {\n\t\tif ( !source ) {\n\t\t\treturn source;\n\t\t}\n\n\t\treturn isAbsolute( source )\n\t\t\t? source\n\t\t\t: resolve( mapDir, map.sourceRoot ?? '.', source );\n\t} );\n}\n","import { default as remapping, type DecodedSourceMap, type EncodedSourceMap } from '@ampproject/remapping';\nimport { loadCodeAndMap } from './load';\nimport { resolve } from 'path';\nimport type { ReportInput } from '../types';\nimport { normalizePath } from '../utils';\n\nexport function mapSourceMap(\n\tmap: EncodedSourceMap,\n\tdirPath: string,\n\tinputs: Record<string, ReportInput>\n): DecodedSourceMap {\n\tconst alreadyRemapped = new Set<string>();\n\tconst remapped = remapping( map, ( file, ctx ) => {\n\t\tif ( alreadyRemapped.has( file ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\talreadyRemapped.add( file );\n\n\t\tconst codeMap = loadCodeAndMap( resolve( dirPath, file ) );\n\n\t\tif ( !codeMap ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst parentPath = normalizePath( file );\n\t\tconst { format } = inputs[ parentPath ];\n\n\t\tcodeMap.map?.sources\n\t\t\t.filter( source => source !== null )\n\t\t\t.forEach( ( source, index ) => {\n\t\t\t\tconst normalizedPath = normalizePath( source );\n\n\t\t\t\tif ( parentPath === normalizedPath ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tinputs[ normalizedPath ] = {\n\t\t\t\t\tbytes: Buffer.byteLength( codeMap.map!.sourcesContent?.[ index ] ?? '' ),\n\t\t\t\t\tformat,\n\t\t\t\t\timports: [],\n\t\t\t\t\tbelongsTo: parentPath\n\t\t\t\t};\n\t\t\t} );\n\n\t\tctx.content ??= codeMap.code;\n\n\t\treturn codeMap.map;\n\t}, { decodedMappings: true } );\n\n\treturn remapped as DecodedSourceMap;\n}\n","import { gzipSync, brotliCompressSync } from 'zlib';\nimport type { DecodedSourceMap } from '@ampproject/remapping';\nimport type { Sizes } from '../types';\n\nexport function getBytesPerSource( code: string, map: DecodedSourceMap ): Map<string, Sizes> {\n\tconst contributions = new Array( map.sources.length ).fill( '' );\n\n\t// Split the source code by lines\n\tconst codeLines = code.split( /(?<=\\r?\\n)/ );\n\n\tfor ( let lineIndex = 0; lineIndex < map.mappings.length; lineIndex++ ) {\n\t\tconst line = map.mappings[ lineIndex ];\n\t\tconst lineCode = codeLines[ lineIndex ];\n\n\t\tfor ( let mappingIndex = 0; mappingIndex < line.length; mappingIndex++ ) {\n\t\t\t// 0: generatedColumn\n\t\t\t// 1: fileIndex\n\t\t\t// 2: originalLine\n\t\t\t// 3: originalColumn\n\t\t\t// 4: nameIndex\n\n\t\t\tconst [ startColumn, fileIndex ] = line[ mappingIndex ];\n\t\t\tconst endColumn = line[ mappingIndex + 1 ]?.[ 0 ] ?? lineCode.length;\n\n\t\t\tcontributions[ fileIndex! ] += lineCode.slice( startColumn, endColumn );\n\t\t}\n\t}\n\n\treturn new Map<string, Sizes>( \n\t\tcontributions.map( ( code, index ) => [ map.sources[ index ]!, getSizes( code ) ] )\n\t);\n}\n\nexport function getSizes( code: string ): Sizes {\n\treturn {\n\t\tuncompressed: Buffer.byteLength( code ),\n\t\tgzip: gzipSync( code ).length,\n\t\tbrotli: brotliCompressSync( code ).length\n\t};\n}\n","import { dirname, resolve } from 'path';\nimport { fileURLToPath } from 'url';\nimport { readFileSync } from 'fs';\nimport { mapSourceMap } from './sourcemap/map.js';\nimport { getBytesPerSource, getSizes } from './sourcemap/bytes.js';\nimport { loadCodeAndMap } from './sourcemap/load.js';\nimport type {\n JsonReport,\n MaybeCodeMap,\n ReportInput,\n ReportOutput,\n CodeMap,\n ReportOutputInput\n} from './types.js';\nimport { normalizePath } from './utils.js';\n\nexport function generateJsonReport(\n assets: Array<string>,\n inputs: Record<string, ReportInput>\n): JsonReport {\n const outputsEntries = assets\n .filter( asset => !asset.endsWith( '.map' ) )\n .map( asset => processAsset( asset, inputs ) )\n .filter( output => !!output );\n\n return {\n inputs,\n outputs: Object.fromEntries( outputsEntries )\n };\n}\n\nexport function generateHtmlReport(\n assets: Array<string>,\n inputs: Record<string, ReportInput>\n): string {\n const json = generateJsonReport( assets, inputs );\n const __dirname = dirname( fileURLToPath( import.meta.url ) );\n const template = readFileSync( resolve( __dirname, './index.html' ), 'utf-8' );\n\n return template.replace( '__REPORT_DATA__', JSON.stringify( json ) );\n}\n\nfunction processAsset( asset: string, inputs: Record<string, ReportInput> ): [ string, ReportOutput ] | void {\n const maybeCodeMap = loadCodeAndMap( asset );\n\n if ( !hasCodeAndMap( maybeCodeMap ) ) {\n return;\n }\n\n const { code, map } = maybeCodeMap;\n const mapped = mapSourceMap( map, dirname( asset ), inputs );\n\n mapped.sources = mapped.sources.map( source => normalizePath( source! ) );\n\n const bytes = getBytesPerSource( code, mapped );\n\n return [ normalizePath( asset ), {\n ...getSizes( code ),\n inputs: mapped.sources.reduce( ( acc, source ) => {\n if ( source ) {\n acc[ normalizePath( source ) ] = bytes.get( source ) ?? {\n uncompressed: 0,\n gzip: 0,\n brotli: 0\n };\n }\n\n return acc;\n }, {} as Record<string, ReportOutputInput> )\n } ];\n}\n\nfunction hasCodeAndMap( result: MaybeCodeMap ): result is Required<CodeMap> {\n return Boolean( result && result.code && result.map );\n}\n","import { join } from 'path';\nimport { writeFileSync } from 'fs';\nimport { generateHtmlReport, generateJsonReport } from '../report.js';\nimport type { Options, JsonReport } from '../types.js';\n\nexport async function generateReportFromAssets(\n\tassets: string[],\n\tinputs: JsonReport[ 'inputs' ],\n\toptions: Options\n): Promise<void> {\n\tconst { default: open } = await import( 'open' );\n\n\tconst handler = options.format === 'html'\n\t\t? saveHtml\n\t\t: saveJson;\n\n\tconst path = handler( assets, inputs );\n\n\toptions.open && path && open( path );\n}\n\nfunction saveHtml(\n\tassets: string[],\n\tinputs: JsonReport[ 'inputs' ]\n): string | null {\n\tconst report = generateHtmlReport( assets, inputs );\n\tconst path = join( process.cwd(), 'sonda-report.html' );\n\n\twriteFileSync( path, report );\n\n\treturn path;\n}\n\nfunction saveJson(\n\tassets: string[],\n\tinputs: JsonReport[ 'inputs' ]\n): string | null {\n\tconst report = generateJsonReport( assets, inputs );\n\tconst path = join( process.cwd(), 'sonda-report.json' );\n\n\twriteFileSync( path, JSON.stringify( report, null, 2 ) );\n\n\treturn path;\n}\n","import { normalizeOptions } from '../utils';\nimport { generateReportFromAssets } from '../report/generate';\nimport type { Plugin } from 'esbuild';\nimport type { Options, JsonReport } from '../types';\n\nexport function SondaEsbuildPlugin( options?: Partial<Options> ): Plugin {\n\treturn {\n\t\tname: 'sonda',\n\t\tsetup( build ) {\n\t\t\tbuild.initialOptions.metafile = true;\n\n\t\t\tbuild.onEnd( result => {\n\t\t\t\tif ( !result.metafile ) {\n\t\t\t\t\treturn console.error( 'Metafile is required for SondaEsbuildPlugin to work.' );\n\t\t\t\t}\n\n\t\t\t\tconst inputs = Object\n\t\t\t\t\t.entries( result.metafile.inputs )\n\t\t\t\t\t.reduce( ( acc, [ path, data ] ) => {\n\t\t\t\t\t\t\n\t\t\t\t\t\tacc[ path ] = {\n\t\t\t\t\t\t\tbytes: data.bytes,\n\t\t\t\t\t\t\tformat: data.format ?? 'unknown',\n\t\t\t\t\t\t\timports: data.imports.map( data => data.path ),\n\t\t\t\t\t\t\tbelongsTo: null,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\treturn acc;\n\t\t\t\t\t}, {} as JsonReport[ 'inputs' ] );\n\n\t\t\t\treturn generateReportFromAssets(\n\t\t\t\t\tObject.keys( result.metafile.outputs ),\n\t\t\t\t\tinputs,\n\t\t\t\t\tnormalizeOptions( options )\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\t};\n}\n","import { join, resolve, dirname } from 'path';\nimport { normalizeOptions, normalizePath } from '../utils.js';\nimport { generateReportFromAssets } from '../report/generate.js';\nimport type { Options, ModuleFormat, JsonReport } from '../types.js';\nimport type { Plugin, ModuleInfo, NormalizedOutputOptions, OutputBundle } from 'rollup';\n\nconst esmRegex = /* #__ PURE__ */ /\\.m[tj]sx?$/;\nconst cjsRegex = /* #__ PURE__ */ /\\.c[tj]sx?$/;\n\nexport function SondaRollupPlugin( options?: Partial<Options> ): Plugin {\n\tlet inputs: JsonReport[ 'inputs' ] = {};\n\n\treturn {\n\t\tname: 'sonda',\n\n\t\twriteBundle(\n\t\t\t{ dir, file }: NormalizedOutputOptions,\n\t\t\tbundle: OutputBundle\n\t\t) {\n\t\t\tconst outputDir = resolve( process.cwd(), dir ?? dirname( file! ) );\n\t\t\tconst assets = Object.keys( bundle ).map( name => join( outputDir, name ) );\n\n\t\t\treturn generateReportFromAssets(\n\t\t\t\tassets,\n\t\t\t\tinputs,\n\t\t\t\tnormalizeOptions( options )\n\t\t\t);\n\t\t},\n\n\t\tmoduleParsed( module: ModuleInfo ) {\n\t\t\tinputs[ normalizePath( module.id ) ] = {\n\t\t\t\tbytes: module.code ? Buffer.byteLength( module.code ) : 0,\n\t\t\t\tformat: getFormat( module.id, module.meta.commonjs?.isCommonJS ),\n\t\t\t\timports: module.importedIds.map( id => normalizePath( id ) ),\n\t\t\t\tbelongsTo: null,\n\t\t\t};\n\t\t}\n\t};\n}\n\nfunction getFormat( moduleId: string, isCommonJS: boolean | undefined ): ModuleFormat {\n\tif ( isCommonJS === true || cjsRegex.test( moduleId ) ) {\n\t\treturn 'cjs';\n\t}\n\n\tif ( isCommonJS === false || esmRegex.test( moduleId ) ) {\n\t\treturn 'esm';\n\t}\n\n\treturn'unknown';\n}\n","import { join } from 'path';\nimport { normalizeOptions, normalizePath } from '../utils';\nimport { generateReportFromAssets } from '../report/generate';\nimport type { Options, ModuleFormat, JsonReport } from '../types';\nimport { NormalModule, type Compiler, type Module } from 'webpack';\n\nconst jsRegexp = /* #__PURE__ */ /\\.[c|m]?[t|j]s[x]?$/;\n\nexport class SondaWebpackPlugin {\n\toptions: Partial<Options>;\n\tinputs: JsonReport[ 'inputs' ];\n\n\tconstructor ( options?: Partial<Options> ) {\n\t\tthis.options = options || {};\n\t\tthis.inputs = {};\n\t}\n\n\tapply( compiler: Compiler ): void {\n\t\tcompiler.options.output.devtoolModuleFilenameTemplate = '[absolute-resource-path]';\n\n\t\tcompiler.hooks.compilation.tap( 'SondaWebpackPlugin', ( compilation ) => {\n\t\t\tcompilation.hooks.optimizeModules.tap( 'SondaWebpackPlugin', ( modules ) => {\n\t\t\t\tArray\n\t\t\t\t\t.from( modules )\n\t\t\t\t\t.forEach( module => {\n\t\t\t\t\t\tif ( !isNormalModule( module ) ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst imports = module.dependencies.reduce( ( acc, dependency ) => {\n\t\t\t\t\t\t\tconst module = compilation.moduleGraph.getModule( dependency );\n\n\t\t\t\t\t\t\tif ( isNormalModule( module ) ) {\n\t\t\t\t\t\t\t\tacc.push( normalizePath( module.resource ) );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn acc;\n\t\t\t\t\t\t}, [] as Array<string> );\n\n\t\t\t\t\t\tthis.inputs[ normalizePath( module.resource ) ] = {\n\t\t\t\t\t\t\tbytes: module.size(),\n\t\t\t\t\t\t\tformat: getFormat( module ),\n\t\t\t\t\t\t\timports,\n\t\t\t\t\t\t\tbelongsTo: null,\n\t\t\t\t\t\t};\n\t\t\t\t\t} );\n\t\t\t} );\n\t\t} );\n\n\t\tcompiler.hooks.emit.tapAsync( 'SondaWebpackPlugin', ( compilation, callback ) => {\n\t\t\tconst outputPath = compiler.options.output.path || compiler.outputPath || process.cwd();\n\t\t\tconst assets = Object.keys( compilation.assets ).map( name => join( outputPath, name ) );\n\n\t\t\tgenerateReportFromAssets(\n\t\t\t\tassets,\n\t\t\t\tthis.inputs,\n\t\t\t\tnormalizeOptions( this.options )\n\t\t\t)\n\t\t\t.then(() => callback());\n\t\t} );\n\t}\n}\n\nfunction getFormat( module: NormalModule ): ModuleFormat {\n\tif ( !jsRegexp.test( module.resource ) ) {\n\t\treturn 'unknown';\n\t}\n\n\tif ( module.type === 'javascript/esm' || module.buildMeta?.exportsType === 'namespace' ) {\n\t\treturn 'esm';\n\t}\n\n\treturn 'cjs';\n}\n\nfunction isNormalModule( module: Module | NormalModule | null ): module is NormalModule {\n\treturn module !== null && 'resource' in module;\n}\n"],"names":["cwd","process","normalizeOptions","options","defaultOptions","open","format","Object","assign","normalizePath","path","normalized","replace","relativized","relative","replaceAll","sep","posix","parseSourceMapInput","str","JSON","parse","sourceMappingRegExp","loadCodeAndMap","codePath","existsSync","code","readFileSync","extractedComment","includes","Array","from","matchAll","at","length","maybeMap","loadMap","map","mapPath","sources","normalizeSourcesPaths","sourceRoot","sourceMappingURL","startsWith","parseDataUrl","join","url","prefix","payload","split","encoding","Buffer","toString","decodeURIComponent","Error","mapDir","dirname","source","isAbsolute","resolve","mapSourceMap","dirPath","inputs","alreadyRemapped","Set","remapped","remapping","file","ctx","has","add","codeMap","parentPath","filter","forEach","index","normalizedPath","bytes","byteLength","sourcesContent","imports","belongsTo","content","decodedMappings","getBytesPerSource","contributions","fill","codeLines","lineIndex","mappings","line","lineCode","mappingIndex","startColumn","fileIndex","endColumn","slice","Map","getSizes","uncompressed","gzip","gzipSync","brotli","brotliCompressSync","generateJsonReport","assets","outputsEntries","asset","endsWith","processAsset","output","outputs","fromEntries","generateHtmlReport","json","__dirname","fileURLToPath","template","stringify","maybeCodeMap","hasCodeAndMap","mapped","reduce","acc","get","result","Boolean","generateReportFromAssets","default","handler","saveHtml","saveJson","report","writeFileSync","SondaEsbuildPlugin","name","setup","build","initialOptions","metafile","onEnd","console","error","entries","data","keys","esmRegex","cjsRegex","SondaRollupPlugin","writeBundle","dir","bundle","outputDir","moduleParsed","module","id","getFormat","meta","commonjs","isCommonJS","importedIds","moduleId","test","jsRegexp","SondaWebpackPlugin","apply","compiler","devtoolModuleFilenameTemplate","hooks","compilation","tap","optimizeModules","modules","isNormalModule","dependencies","dependency","moduleGraph","getModule","push","resource","size","emit","tapAsync","callback","outputPath","then","constructor","type","buildMeta","exportsType"],"mappings":"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"}
package/dist/index.html CHANGED
@@ -1,2 +1,2 @@
1
- <!doctype html><html lang="en"><head><meta charset="UTF-8"/><link rel="icon" href="data:;base64,iVBORw0KGgo="/><meta name="viewport" content="width=device-width,initial-scale=1"/><title>Sonda report</title><link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='512' height='512' fill='none'%3E%3Cpath fill='%23FACC15' d='M0 0h512v512H0V0Z'/%3E%3Cpath fill='%23000' d='m264.536 203.704-41.984 89.6-21.504-9.728c-20.139-9.216-35.669-21.504-46.592-36.864-10.923-15.36-16.384-37.717-16.384-67.072 0-37.547 9.728-65.536 29.184-83.968 19.797-18.773 52.395-28.33 97.792-28.672 18.773 0 35.84.853 51.2 2.56s27.648 3.584 36.864 5.632l13.824 2.56-10.24 82.432-12.8-1.536c-8.192-1.024-18.432-1.877-30.72-2.56-12.288-1.024-24.235-1.536-35.84-1.536-12.288 0-21.675 1.877-28.16 5.632-6.144 3.413-9.216 10.069-9.216 19.968 0 5.461 2.219 9.899 6.656 13.312 4.437 3.413 10.411 6.827 17.92 10.24Zm-18.432 100.864 42.496-90.624 22.016 9.728c23.211 10.24 40.107 23.04 50.688 38.4 10.581 15.019 15.872 36.523 15.872 64.512 0 37.888-9.899 67.072-29.696 87.552-19.797 20.48-52.395 30.891-97.792 31.232-22.528 0-43.52-1.536-62.976-4.608-19.456-2.731-36.693-5.973-51.712-9.728l10.24-82.432 12.288 2.048c8.533 1.365 19.797 2.731 33.792 4.096 13.995 1.365 29.355 2.048 46.08 2.048 12.971 0 22.699-1.877 29.184-5.632 6.485-3.755 9.728-9.899 9.728-18.432 0-5.803-1.536-10.411-4.608-13.824-3.072-3.413-8.533-6.827-16.384-10.24l-9.216-4.096Z'/%3E%3C/svg%3E"/><script type="module" crossorigin>var Sr=Object.defineProperty;var Ae=t=>{throw TypeError(t)};var Or=(t,e,r)=>e in t?Sr(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var U=(t,e,r)=>Or(t,typeof e!="symbol"?e+"":e,r),re=(t,e,r)=>e.has(t)||Ae("Cannot "+r);var K=(t,e,r)=>(re(t,e,"read from private field"),r?r.call(t):e.get(t)),Nt=(t,e,r)=>e.has(t)?Ae("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),ne=(t,e,r,n)=>(re(t,e,"write to private field"),n?n.call(t,r):e.set(t,r),r),Pe=(t,e,r)=>(re(t,e,"access private method"),r);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))n(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&n(a)}).observe(document,{childList:!0,subtree:!0});function r(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function n(i){if(i.ep)return;i.ep=!0;const s=r(i);fetch(i.href,s)}})();window.SONDA_JSON_REPORT=JSON.parse(String.raw`__REPORT_DATA__`);const kr=!1;var he=Array.isArray,_e=Array.from,Tr=Object.defineProperty,wt=Object.getOwnPropertyDescriptor,Nr=Object.prototype,Ar=Array.prototype,Pr=Object.getPrototypeOf;function Lr(t){return typeof t=="function"}const At=()=>{};function Mr(t){for(var e=0;e<t.length;e++)t[e]()}const Q=2,Ve=4,Ot=8,ge=16,$=32,Jt=64,vt=128,Bt=256,W=512,at=1024,zt=2048,ct=4096,Ct=8192,Ge=16384,Dt=32768,Ir=65536,Rr=1<<18,Ht=1<<19,mt=Symbol("$state"),zr=Symbol("");function Ye(t){return t===this.v}function Je(t,e){return t!=t?e==e:t!==e||t!==null&&typeof t=="object"||typeof t=="function"}function pe(t){return!Je(t,this.v)}function Cr(t){throw new Error("effect_in_teardown")}function Dr(){throw new Error("effect_in_unowned_derived")}function Fr(t){throw new Error("effect_orphan")}function qr(){throw new Error("effect_update_depth_exceeded")}function Br(t){throw new Error("props_invalid_value")}function Hr(){throw new Error("state_descriptors_fixed")}function jr(){throw new Error("state_prototype_fixed")}function Wr(){throw new Error("state_unsafe_local_read")}function Ur(){throw new Error("state_unsafe_mutation")}function j(t){return{f:0,v:t,reactions:null,equals:Ye,version:0}}function I(t){return Vr(j(t))}function Ke(t){var r;const e=j(t);return e.equals=pe,L!==null&&L.l!==null&&((r=L.l).s??(r.s=[])).push(e),e}function Vr(t){return k!==null&&k.f&Q&&(G===null?hn([t]):G.push(t)),t}function E(t,e){return k!==null&&le()&&k.f&Q&&(G===null||!G.includes(t))&&Ur(),t.equals(e)||(t.v=e,t.version=ur(),Ze(t,at),le()&&O!==null&&O.f&W&&!(O.f&$)&&(R!==null&&R.includes(t)?(V(O,at),$t(O)):st===null?_n([t]):st.push(t))),e}function Ze(t,e){var r=t.reactions;if(r!==null)for(var n=le(),i=r.length,s=0;s<i;s++){var a=r[s],f=a.f;f&at||!n&&a===O||(V(a,e),f&(W|vt)&&(f&Q?Ze(a,zt):$t(a)))}}const we=1,me=2,Xe=4,Gr=8,Yr=16,Jr=1,Kr=2,Zr=4,Xr=8,Qr=16,$r=4,tn=1,en=2,D=Symbol();let Qe=!1;function q(t,e=null,r){if(typeof t!="object"||t===null||mt in t)return t;const n=Pr(t);if(n!==Nr&&n!==Ar)return t;var i=new Map,s=he(t),a=j(0);s&&i.set("length",j(t.length));var f;return new Proxy(t,{defineProperty(o,l,u){(!("value"in u)||u.configurable===!1||u.enumerable===!1||u.writable===!1)&&Hr();var d=i.get(l);return d===void 0?(d=j(u.value),i.set(l,d)):E(d,q(u.value,f)),!0},deleteProperty(o,l){var u=i.get(l);return u===void 0?l in o&&i.set(l,j(D)):(E(u,D),Le(a)),!0},get(o,l,u){var h;if(l===mt)return t;var d=i.get(l),v=l in o;if(d===void 0&&(!v||(h=wt(o,l))!=null&&h.writable)&&(d=j(q(v?o[l]:D,f)),i.set(l,d)),d!==void 0){var c=_(d);return c===D?void 0:c}return Reflect.get(o,l,u)},getOwnPropertyDescriptor(o,l){var u=Reflect.getOwnPropertyDescriptor(o,l);if(u&&"value"in u){var d=i.get(l);d&&(u.value=_(d))}else if(u===void 0){var v=i.get(l),c=v==null?void 0:v.v;if(v!==void 0&&c!==D)return{enumerable:!0,configurable:!0,value:c,writable:!0}}return u},has(o,l){var c;if(l===mt)return!0;var u=i.get(l),d=u!==void 0&&u.v!==D||Reflect.has(o,l);if(u!==void 0||O!==null&&(!d||(c=wt(o,l))!=null&&c.writable)){u===void 0&&(u=j(d?q(o[l],f):D),i.set(l,u));var v=_(u);if(v===D)return!1}return d},set(o,l,u,d){var g;var v=i.get(l),c=l in o;if(s&&l==="length")for(var h=u;h<v.v;h+=1){var p=i.get(h+"");p!==void 0?E(p,D):h in o&&(p=j(D),i.set(h+"",p))}v===void 0?(!c||(g=wt(o,l))!=null&&g.writable)&&(v=j(void 0),E(v,q(u,f)),i.set(l,v)):(c=v.v!==D,E(v,q(u,f)));var m=Reflect.getOwnPropertyDescriptor(o,l);if(m!=null&&m.set&&m.set.call(d,u),!c){if(s&&typeof l=="string"){var b=i.get("length"),y=Number(l);Number.isInteger(y)&&y>=b.v&&E(b,y+1)}Le(a)}return!0},ownKeys(o){_(a);var l=Reflect.ownKeys(o).filter(v=>{var c=i.get(v);return c===void 0||c.v!==D});for(var[u,d]of i)d.v!==D&&!(u in o)&&l.push(u);return l},setPrototypeOf(){jr()}})}function Le(t,e=1){E(t,t.v+e)}function Me(t){return t!==null&&typeof t=="object"&&mt in t?t[mt]:t}function rn(t,e){return Object.is(Me(t),Me(e))}var Ie,Z,$e,tr;function nn(){if(Ie===void 0){Ie=window,Z=document;var t=Element.prototype,e=Node.prototype;$e=wt(e,"firstChild").get,tr=wt(e,"nextSibling").get,t.__click=void 0,t.__className="",t.__attributes=null,t.__e=void 0,Text.prototype.__t=void 0}}function be(t=""){return document.createTextNode(t)}function St(t){return $e.call(t)}function Kt(t){return tr.call(t)}function S(t){return St(t)}function X(t,e){{var r=St(t);return r instanceof Comment&&r.data===""?Kt(r):r}}function N(t,e=1,r=!1){let n=t;for(;e--;)n=Kt(n);return n}function sn(t){t.textContent=""}function an(t){O===null&&k===null&&Fr(),k!==null&&k.f&vt&&Dr(),xe&&Cr()}function on(t,e){var r=e.last;r===null?e.last=e.first=t:(r.next=t,t.prev=r,e.last=t)}function kt(t,e,r,n=!0){var i=(t&Jt)!==0,s=O,a={ctx:L,deps:null,nodes_start:null,nodes_end:null,f:t|at,first:null,fn:e,last:null,next:null,parent:i?null:s,prev:null,teardown:null,transitions:null,version:0};if(r){var f=bt;try{Re(!0),Qt(a),a.f|=Ge}catch(u){throw _t(a),u}finally{Re(f)}}else e!==null&&$t(a);var o=r&&a.deps===null&&a.first===null&&a.nodes_start===null&&a.teardown===null;if(!o&&!i&&n&&(s!==null&&on(a,s),k!==null&&k.f&Q)){var l=k;(l.children??(l.children=[])).push(a)}return a}function ln(t){const e=kt(Ot,null,!1);return V(e,W),e.teardown=t,e}function un(t){an();var e=O!==null&&(O.f&Ot)!==0&&L!==null&&!L.m;if(e){var r=L;(r.e??(r.e=[])).push({fn:t,parent:O})}else{var n=ht(t);return n}}function fn(t){const e=kt(Jt,t,!0);return()=>{_t(e)}}function ht(t){return kt(Ve,t,!1)}function er(t){return kt(Ot,t,!0)}function z(t){return er(t)}function Zt(t,e=0){return kt(Ot|ge|e,t,!0)}function dt(t,e=!0){return kt(Ot|$,t,!0,e)}function rr(t){var e=t.teardown;if(e!==null){const r=xe,n=k;ze(!0),Ce(null);try{e.call(null)}finally{ze(r),Ce(n)}}}function _t(t,e=!0){var r=!1;if((e||t.f&Rr)&&t.nodes_start!==null){for(var n=t.nodes_start,i=t.nodes_end;n!==null;){var s=n===i?null:Kt(n);n.remove(),n=s}r=!0}cr(t,e&&!r),It(t,0),V(t,Ct);var a=t.transitions;if(a!==null)for(const o of a)o.stop();rr(t);var f=t.parent;f!==null&&f.first!==null&&nr(t),t.next=t.prev=t.teardown=t.ctx=t.deps=t.parent=t.fn=t.nodes_start=t.nodes_end=null}function nr(t){var e=t.parent,r=t.prev,n=t.next;r!==null&&(r.next=n),n!==null&&(n.prev=r),e!==null&&(e.first===t&&(e.first=n),e.last===t&&(e.last=r))}function jt(t,e){var r=[];ye(t,r,!0),ir(r,()=>{_t(t),e&&e()})}function ir(t,e){var r=t.length;if(r>0){var n=()=>--r||e();for(var i of t)i.out(n)}else e()}function ye(t,e,r){if(!(t.f&ct)){if(t.f^=ct,t.transitions!==null)for(const a of t.transitions)(a.is_global||r)&&e.push(a);for(var n=t.first;n!==null;){var i=n.next,s=(n.f&Dt)!==0||(n.f&$)!==0;ye(n,e,s?r:!1),n=i}}}function Wt(t){sr(t,!0)}function sr(t,e){if(t.f&ct){t.f^=ct,Ft(t)&&Qt(t);for(var r=t.first;r!==null;){var n=r.next,i=(r.f&Dt)!==0||(r.f&$)!==0;sr(r,i?e:!1),r=n}if(t.transitions!==null)for(const s of t.transitions)(s.is_global||e)&&s.in()}}let se=!1,ae=[];function cn(){se=!1;const t=ae.slice();ae=[],Mr(t)}function Xt(t){se||(se=!0,queueMicrotask(cn)),ae.push(t)}function A(t){let e=Q|at;O===null&&(e|=vt);const r={children:null,deps:null,equals:Ye,f:e,fn:t,reactions:null,v:null,version:0};if(k!==null&&k.f&Q){var n=k;(n.children??(n.children=[])).push(r)}return r}function dn(t){const e=A(t);return e.equals=pe,e}function ar(t){var e=t.children;if(e!==null){t.children=null;for(var r=0;r<e.length;r+=1){var n=e[r];n.f&Q?vn(n):_t(n)}}}function or(t){var e;ar(t),e=fr(t);var r=(pt||t.f&vt)&&t.deps!==null?zt:W;V(t,r),t.equals(e)||(t.v=e,t.version=ur())}function vn(t){ar(t),It(t,0),V(t,Ct),t.children=t.deps=t.reactions=t.fn=null}let Ut=!1,bt=!1,xe=!1;function Re(t){bt=t}function ze(t){xe=t}let oe=[],Lt=0;let k=null;function Ce(t){k=t}let O=null;function De(t){O=t}let G=null;function hn(t){G=t}let R=null,B=0,st=null;function _n(t){st=t}let lr=0,pt=!1,L=null;function ur(){return++lr}function le(){return L!==null&&L.l===null}function Ft(t){var a,f;var e=t.f;if(e&at)return!0;if(e&zt){var r=t.deps,n=(e&vt)!==0;if(r!==null){var i;if(e&Bt){for(i=0;i<r.length;i++)((a=r[i]).reactions??(a.reactions=[])).push(t);t.f^=Bt}for(i=0;i<r.length;i++){var s=r[i];if(Ft(s)&&or(s),n&&O!==null&&!pt&&!((f=s==null?void 0:s.reactions)!=null&&f.includes(t))&&(s.reactions??(s.reactions=[])).push(t),s.version>t.version)return!0}}n||V(t,W)}return!1}function gn(t,e,r){throw t}function fr(t){var u;var e=R,r=B,n=st,i=k,s=pt,a=G;R=null,B=0,st=null,k=t.f&($|Jt)?null:t,pt=!bt&&(t.f&vt)!==0,G=null;try{var f=(0,t.fn)(),o=t.deps;if(R!==null){var l;if(It(t,B),o!==null&&B>0)for(o.length=B+R.length,l=0;l<R.length;l++)o[B+l]=R[l];else t.deps=o=R;if(!pt)for(l=B;l<o.length;l++)((u=o[l]).reactions??(u.reactions=[])).push(t)}else o!==null&&B<o.length&&(It(t,B),o.length=B);return f}finally{R=e,B=r,st=n,k=i,pt=s,G=a}}function pn(t,e){let r=e.reactions;if(r!==null){var n=r.indexOf(t);if(n!==-1){var i=r.length-1;i===0?r=e.reactions=null:(r[n]=r[i],r.pop())}}r===null&&e.f&Q&&(R===null||!R.includes(e))&&(V(e,zt),e.f&(vt|Bt)||(e.f^=Bt),It(e,0))}function It(t,e){var r=t.deps;if(r!==null)for(var n=e;n<r.length;n++)pn(t,r[n])}function cr(t,e=!1){var r=t.first;for(t.first=t.last=null;r!==null;){var n=r.next;_t(r,e),r=n}}function Qt(t){var e=t.f;if(!(e&Ct)){V(t,W);var r=O,n=L;O=t,L=t.ctx;try{e&ge||cr(t),rr(t);var i=fr(t);t.teardown=typeof i=="function"?i:null,t.version=lr}catch(s){gn(s)}finally{O=r,L=n}}}function wn(){Lt>1e3&&(Lt=0,qr()),Lt++}function mn(t){var e=t.length;if(e!==0){wn();var r=bt;bt=!0;try{for(var n=0;n<e;n++){var i=t[n];if(i.f&Ht&&(i.f^=Ht),i.first===null&&!(i.f&$))Fe([i]);else{var s=[];dr(i,s),Fe(s)}}}finally{bt=r}}}function Fe(t){var e=t.length;if(e!==0)for(var r=0;r<e;r++){var n=t[r];!(n.f&(Ct|ct))&&Ft(n)&&(Qt(n),n.deps===null&&n.first===null&&n.nodes_start===null&&(n.teardown===null?nr(n):n.fn=null))}}function bn(){if(Ut=!1,Lt>1001)return;const t=oe;oe=[],mn(t),Ut||(Lt=0)}function $t(t){Ut||(Ut=!0,queueMicrotask(bn));for(var e=t;e.parent!==null;){e=e.parent;var r=e.f;if(r&$){if(!(r&W))return;e.f^=W}if(r&Jt){if(r&Ht)return;e.f^=Ht}}oe.push(e)}function dr(t,e){var r=t.first,n=[];t:for(;r!==null;){var i=r.f,s=(i&ct)===0,a=(i&$)!==0,f=(i&W)!==0,o=r.first;if(s&&(!a||!f))if(a&&V(r,W),i&Ot){if(!a&&Ft(r)&&Qt(r),o=r.first,o!==null){r=o;continue}}else i&Ve&&n.push(r);var l=r.next;if(l===null){let v=r.parent;for(;v!==null;){if(t===v)break t;var u=v.next;if(u!==null){r=u;continue t}v=v.parent}}r=l}for(var d=0;d<n.length;d++)o=n[d],e.push(o),dr(o,e)}function _(t){var e=t.f;if(e&Ct)return t.v;if(k!==null){G!==null&&G.includes(t)&&Wr();var r=k.deps;R===null&&r!==null&&r[B]===t?B++:R===null?R=[t]:R.push(t),st!==null&&O!==null&&O.f&W&&!(O.f&$)&&st.includes(t)&&(V(O,at),$t(O))}if(e&Q){var n=t;Ft(n)&&or(n)}return t.v}function te(t){const e=k;try{return k=null,t()}finally{k=e}}const yn=~(at|zt|W);function V(t,e){t.f=t.f&yn|e}function ot(t,e=!1,r){L={p:L,c:null,e:null,m:!1,s:t,x:null,l:null},e||(L.l={s:null,u:null,r1:[],r2:j(!1)})}function lt(t){const e=L;if(e!==null){const s=e.e;if(s!==null){var r=O;e.e=null;try{for(var n=0;n<s.length;n++){var i=s[n];De(i.parent),ht(i.fn)}}finally{De(r)}}L=e.p,e.m=!0}return{}}const vr=new Set,ue=new Set;function xn(t,e,r,n){function i(s){if(n.capture||Pt.call(e,s),!s.cancelBubble)return r.call(this,s)}return t.startsWith("pointer")||t.startsWith("touch")||t==="wheel"?Xt(()=>{e.addEventListener(t,i,n)}):e.addEventListener(t,i,n),i}function yt(t,e,r,n,i){var s={capture:n,passive:i},a=xn(t,e,r,s);(e===document.body||e===window||e===document)&&ln(()=>{e.removeEventListener(t,a,s)})}function En(t){for(var e=0;e<t.length;e++)vr.add(t[e]);for(var r of ue)r(t)}function Pt(t){var m;var e=this,r=e.ownerDocument,n=t.type,i=((m=t.composedPath)==null?void 0:m.call(t))||[],s=i[0]||t.target,a=0,f=t.__root;if(f){var o=i.indexOf(f);if(o!==-1&&(e===document||e===window)){t.__root=e;return}var l=i.indexOf(e);if(l===-1)return;o<=l&&(a=o)}if(s=i[a]||t.target,s!==e){Tr(t,"currentTarget",{configurable:!0,get(){return s||r}});try{for(var u,d=[];s!==null;){var v=s.assignedSlot||s.parentNode||s.host||null;try{var c=s["__"+n];if(c!==void 0&&!s.disabled)if(he(c)){var[h,...p]=c;h.apply(s,[t,...p])}else c.call(s,t)}catch(b){u?d.push(b):u=b}if(t.cancelBubble||v===e||v===null)break;s=v}if(u){for(let b of d)queueMicrotask(()=>{throw b});throw u}}finally{t.__root=e,delete t.currentTarget}}}function hr(t){var e=document.createElement("template");return e.innerHTML=t,e.content}function Vt(t,e){var r=O;r.nodes_start===null&&(r.nodes_start=t,r.nodes_end=e)}function Y(t,e){var r=(e&tn)!==0,n=(e&en)!==0,i,s=!t.startsWith("<!>");return()=>{i===void 0&&(i=hr(s?t:"<!>"+t),r||(i=St(i)));var a=n?document.importNode(i,!0):i.cloneNode(!0);if(r){var f=St(a),o=a.lastChild;Vt(f,o)}else Vt(a,a);return a}}function _r(t,e,r="svg"){var n=!t.startsWith("<!>"),i=`<${r}>${n?t:"<!>"+t}</${r}>`,s;return()=>{if(!s){var a=hr(i),f=St(a);s=St(f)}var o=s.cloneNode(!0);return Vt(o,o),o}}function ee(){var t=document.createDocumentFragment(),e=document.createComment(""),r=be();return t.append(e,r),Vt(e,r),t}function C(t,e){t!==null&&t.before(e)}const Sn=["wheel","mousewheel","touchstart","touchmove"];function On(t){return Sn.includes(t)}let fe=!0;function F(t,e){e!==(t.__t??(t.__t=t.nodeValue))&&(t.__t=e,t.nodeValue=e==null?"":e+"")}function kn(t,e){const r=e.anchor??e.target.appendChild(be());return Tn(t,{...e,anchor:r})}const gt=new Map;function Tn(t,{target:e,anchor:r,props:n={},events:i,context:s,intro:a=!0}){nn();var f=new Set,o=d=>{for(var v=0;v<d.length;v++){var c=d[v];if(!f.has(c)){f.add(c);var h=On(c);e.addEventListener(c,Pt,{passive:h});var p=gt.get(c);p===void 0?(document.addEventListener(c,Pt,{passive:h}),gt.set(c,1)):gt.set(c,p+1)}}};o(_e(vr)),ue.add(o);var l=void 0,u=fn(()=>(dt(()=>{if(s){ot({});var d=L;d.c=s}i&&(n.$$events=i),fe=a,l=t(r,n)||{},fe=!0,s&&lt()}),()=>{for(var d of f){e.removeEventListener(d,Pt);var v=gt.get(d);--v===0?(document.removeEventListener(d,Pt),gt.delete(d)):gt.set(d,v)}ue.delete(o),qe.delete(l)}));return qe.set(l,u),l}let qe=new WeakMap;function xt(t,e,r,n=null,i=!1){var s=t,a=null,f=null,o=null,l=i?Dt:0;Zt(()=>{o!==(o=!!e())&&(o?(a?Wt(a):a=dt(()=>r(s)),f&&jt(f,()=>{f=null})):(f?Wt(f):n&&(f=dt(()=>n(s))),a&&jt(a,()=>{a=null})))},l)}function Nn(t,e,r){var n=t,i=D,s;Zt(()=>{Je(i,i=e())&&(s&&jt(s),s=dt(()=>r(n)))})}let ie=null;function An(t,e){return e}function Pn(t,e,r,n){for(var i=[],s=e.length,a=0;a<s;a++)ye(e[a].e,i,!0);var f=s>0&&i.length===0&&r!==null;if(f){var o=r.parentNode;sn(o),o.append(r),n.clear(),tt(t,e[0].prev,e[s-1].next)}ir(i,()=>{for(var l=0;l<s;l++){var u=e[l];f||(n.delete(u.k),tt(t,u.prev,u.next)),_t(u.e,!f)}})}function gr(t,e,r,n,i,s=null){var a=t,f={flags:e,items:new Map,first:null},o=(e&Xe)!==0;if(o){var l=t;a=l.appendChild(be())}var u=null;Zt(()=>{var d=r(),v=he(d)?d:d==null?[]:_e(d),c=v.length;Ln(v,f,a,i,e,n),s!==null&&(c===0?u?Wt(u):u=dt(()=>s(a)):u!==null&&jt(u,()=>{u=null}))})}function Ln(t,e,r,n,i,s){var Se,Oe,ke,Te;var a=(i&Gr)!==0,f=(i&(we|me))!==0,o=t.length,l=e.items,u=e.first,d=u,v,c=null,h,p=[],m=[],b,y,g,w;if(a)for(w=0;w<o;w+=1)b=t[w],y=s(b,w),g=l.get(y),g!==void 0&&((Se=g.a)==null||Se.measure(),(h??(h=new Set)).add(g));for(w=0;w<o;w+=1){if(b=t[w],y=s(b,w),g=l.get(y),g===void 0){var x=d?d.e.nodes_start:r;c=In(x,e,c,c===null?e.first:c.next,b,y,w,n,i),l.set(y,c),p=[],m=[],d=c.next;continue}if(f&&Mn(g,b,w,i),g.e.f&ct&&(Wt(g.e),a&&((Oe=g.a)==null||Oe.unfix(),(h??(h=new Set)).delete(g))),g!==d){if(v!==void 0&&v.has(g)){if(p.length<m.length){var P=m[0],T;c=P.prev;var M=p[0],ut=p[p.length-1];for(T=0;T<p.length;T+=1)Be(p[T],P,r);for(T=0;T<m.length;T+=1)v.delete(m[T]);tt(e,M.prev,ut.next),tt(e,c,M),tt(e,ut,P),d=P,c=ut,w-=1,p=[],m=[]}else v.delete(g),Be(g,d,r),tt(e,g.prev,g.next),tt(e,g,c===null?e.first:c.next),tt(e,c,g),c=g;continue}for(p=[],m=[];d!==null&&d.k!==y;)(v??(v=new Set)).add(d),m.push(d),d=d.next;if(d===null)continue;g=d}p.push(g),c=g,d=g.next}if(d!==null||v!==void 0){for(var J=v===void 0?[]:_e(v);d!==null;)J.push(d),d=d.next;var Tt=J.length;if(Tt>0){var Er=i&Xe&&o===0?r:null;if(a){for(w=0;w<Tt;w+=1)(ke=J[w].a)==null||ke.measure();for(w=0;w<Tt;w+=1)(Te=J[w].a)==null||Te.fix()}Pn(e,J,Er,l)}}a&&Xt(()=>{var Ne;if(h!==void 0)for(g of h)(Ne=g.a)==null||Ne.apply()}),O.first=e.first&&e.first.e,O.last=c&&c.e}function Mn(t,e,r,n){n&we&&E(t.v,e),n&me?E(t.i,r):t.i=r}function In(t,e,r,n,i,s,a,f,o){var l=ie;try{var u=(o&we)!==0,d=(o&Yr)===0,v=u?d?Ke(i):j(i):i,c=o&me?j(a):a,h={i:c,v,k:s,a:null,e:null,prev:r,next:n};return ie=h,h.e=dt(()=>f(t,v,c),Qe),h.e.prev=r&&r.e,h.e.next=n&&n.e,r===null?e.first=h:(r.next=h,r.e.next=h.e),n!==null&&(n.prev=h,n.e.prev=h.e),h}finally{ie=l}}function Be(t,e,r){for(var n=t.next?t.next.e.nodes_start:r,i=e?e.e.nodes_start:r,s=t.e.nodes_start;s!==n;){var a=Kt(s);i.before(s),s=a}}function tt(t,e,r){e===null?t.first=r:(e.next=r,e.e.next=r&&r.e),r!==null&&(r.prev=e,r.e.prev=e&&e.e)}function Rn(t,e,...r){var n=t,i=At,s;Zt(()=>{i!==(i=e())&&(s&&(_t(s),s=null),s=dt(()=>i(n,...r)))},Dt)}let He=!1;function zn(){He||(He=!0,document.addEventListener("reset",t=>{Promise.resolve().then(()=>{var e;if(!t.defaultPrevented)for(const r of t.target.elements)(e=r.__on_r)==null||e.call(r)})},{capture:!0}))}function H(t,e,r,n){r=r==null?null:r+"";var i=t.__attributes??(t.__attributes={});i[e]!==(i[e]=r)&&(e==="loading"&&(t[zr]=r),r===null?t.removeAttribute(e):t.setAttribute(e,r))}function Cn(t,e){var r=t.__className,n=Dn(e);(r!==n||Qe)&&(n===""?t.removeAttribute("class"):t.setAttribute("class",n),t.__className=n)}function Dn(t){return t??""}function ce(t,e,r){if(r){if(t.classList.contains(e))return;t.classList.add(e)}else{if(!t.classList.contains(e))return;t.classList.remove(e)}}function je(t,e,r,n,i){var s=t.__attributes??(t.__attributes={}),a=t.style,f="style-"+e;s[f]===r&&a.getPropertyValue(e)===r||(s[f]=r,r==null?a.removeProperty(e):a.setProperty(e,r,""))}const Fn=requestAnimationFrame,qn=()=>performance.now(),rt={tick:t=>Fn(t),now:()=>qn(),tasks:new Set};function pr(t){rt.tasks.forEach(e=>{e.c(t)||(rt.tasks.delete(e),e.f())}),rt.tasks.size!==0&&rt.tick(pr)}function Bn(t){let e;return rt.tasks.size===0&&rt.tick(pr),{promise:new Promise(r=>{rt.tasks.add(e={c:t,f:r})}),abort(){rt.tasks.delete(e)}}}function qt(t,e){t.dispatchEvent(new CustomEvent(e))}function Hn(t){const e=t.split("-");return e.length===1?e[0]:e[0]+e.slice(1).map(r=>r[0].toUpperCase()+r.slice(1)).join("")}function We(t){const e={},r=t.split(";");for(const n of r){const[i,s]=n.split(":");if(!i||s===void 0)break;const a=Hn(i.trim());e[a]=s.trim()}return e}const jn=t=>t;function Wn(t,e,r,n){var i=(t&$r)!==0,s="both",a,f=e.inert,o,l;function u(){return a??(a=r()(e,(n==null?void 0:n())??{},{direction:s}))}var d={is_global:i,in(){e.inert=f,qt(e,"introstart"),o=de(e,u(),l,1,()=>{qt(e,"introend"),o==null||o.abort(),o=a=void 0})},out(p){e.inert=!0,qt(e,"outrostart"),l=de(e,u(),o,0,()=>{qt(e,"outroend"),p==null||p()})},stop:()=>{o==null||o.abort(),l==null||l.abort()}},v=O;if((v.transitions??(v.transitions=[])).push(d),fe){var c=i;if(!c){for(var h=v.parent;h&&h.f&Dt;)for(;(h=h.parent)&&!(h.f&ge););c=!h||(h.f&Ge)!==0}c&&ht(()=>{te(()=>d.in())})}}function de(t,e,r,n,i){var s=n===1;if(Lr(e)){var a,f=!1;return Xt(()=>{if(!f){var m=e({direction:s?"in":"out"});a=de(t,m,r,n,i)}}),{abort:()=>{f=!0,a==null||a.abort()},deactivate:()=>a.deactivate(),reset:()=>a.reset(),t:()=>a.t()}}if(r==null||r.deactivate(),!(e!=null&&e.duration))return i(),{abort:At,deactivate:At,reset:At,t:()=>n};const{delay:o=0,css:l,tick:u,easing:d=jn}=e;var v=[];if(s&&r===void 0&&(u&&u(0,1),l)){var c=We(l(0,1));v.push(c,c)}var h=()=>1-n,p=t.animate(v,{duration:o});return p.onfinish=()=>{var m=(r==null?void 0:r.t())??1-n;r==null||r.abort();var b=n-m,y=e.duration*Math.abs(b),g=[];if(y>0){if(l)for(var w=Math.ceil(y/16.666666666666668),x=0;x<=w;x+=1){var P=m+b*d(x/w),T=l(P,1-P);g.push(We(T))}h=()=>{var M=p.currentTime;return m+b*d(M/y)},u&&Bn(()=>{if(p.playState!=="running")return!1;var M=h();return u(M,1-M),!0})}p=t.animate(g,{duration:y,fill:"forwards"}),p.onfinish=()=>{h=()=>n,u==null||u(n,1-n),i()}},{abort:()=>{p&&(p.cancel(),p.effect=null)},deactivate:()=>{i=At},reset:()=>{n===0&&(u==null||u(1,0))},t:()=>h()}}function Un(t,e,r,n=r){t.addEventListener(e,r);const i=t.__on_r;i?t.__on_r=()=>{i(),n()}:t.__on_r=n,zn()}function wr(t,e,r){if(t.multiple)return Yn(t,e);for(var n of t.options){var i=Mt(n);if(rn(i,e)){n.selected=!0;return}}(!r||e!==void 0)&&(t.selectedIndex=-1)}function Vn(t,e){ht(()=>{var r=new MutationObserver(()=>{var n=t.__value;wr(t,n)});return r.observe(t,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),()=>{r.disconnect()}})}function Gn(t,e,r=e){var n=!0;Un(t,"change",()=>{var i;if(t.multiple)i=[].map.call(t.querySelectorAll(":checked"),Mt);else{var s=t.querySelector(":checked");i=s&&Mt(s)}r(i)}),ht(()=>{var i=e();if(wr(t,i,n),n&&i===void 0){var s=t.querySelector(":checked");s!==null&&(i=Mt(s),r(i))}t.__value=i,n=!1}),Vn(t)}function Yn(t,e){for(var r of t.options)r.selected=~e.indexOf(Mt(r))}function Mt(t){return"__value"in t?t.__value:t.value}var et,Et,Rt,Gt,mr;const Yt=class Yt{constructor(e){Nt(this,Gt);Nt(this,et,new WeakMap);Nt(this,Et);Nt(this,Rt);ne(this,Rt,e)}observe(e,r){var n=K(this,et).get(e)||new Set;return n.add(r),K(this,et).set(e,n),Pe(this,Gt,mr).call(this).observe(e,K(this,Rt)),()=>{var i=K(this,et).get(e);i.delete(r),i.size===0&&(K(this,et).delete(e),K(this,Et).unobserve(e))}}};et=new WeakMap,Et=new WeakMap,Rt=new WeakMap,Gt=new WeakSet,mr=function(){return K(this,Et)??ne(this,Et,new ResizeObserver(e=>{for(var r of e){Yt.entries.set(r.target,r);for(var n of K(this,et).get(r.target)||[])n(r)}}))},U(Yt,"entries",new WeakMap);let ve=Yt;var Jn=new ve({box:"border-box"});function nt(t,e,r){var n=Jn.observe(t,()=>r(t[e]));ht(()=>(te(()=>r(t[e])),n))}function Ue(t,e){return t===e||(t==null?void 0:t[mt])===e}function Kn(t={},e,r,n){return ht(()=>{var i,s;return er(()=>{i=s,s=[],te(()=>{t!==r(...s)&&(e(t,...s),i&&Ue(r(...i),t)&&e(null,...i))})}),()=>{Xt(()=>{s&&Ue(r(...s),t)&&e(null,...s)})}}),t}function Ee(t,e,r,n){var w;var i=(r&Jr)!==0,s=(r&Kr)!==0,a=(r&Xr)!==0,f=(r&Qr)!==0,o=t[e],l=(w=wt(t,e))==null?void 0:w.set,u=n,d=!0,v=!1,c=()=>(v=!0,d&&(d=!1,f?u=te(n):u=n),u);o===void 0&&n!==void 0&&(l&&s&&Br(),o=c(),l&&l(o));var h;if(s)h=()=>{var x=t[e];return x===void 0?c():(d=!0,v=!1,x)};else{var p=(i?A:dn)(()=>t[e]);p.f|=Ir,h=()=>{var x=_(p);return x!==void 0&&(u=void 0),x===void 0?u:x}}if(!(r&Zr))return h;if(l){var m=t.$$legacy;return function(x,P){return arguments.length>0?((!s||!P||m)&&l(P?h():x),x):h()}}var b=!1,y=Ke(o),g=A(()=>{var x=h(),P=_(y);return b?(b=!1,P):y.v=x});return i||(g.equals=pe),function(x,P){var T=_(g);if(arguments.length>0){const M=P?_(g):s&&a?q(x):x;return g.equals(M)||(b=!0,E(y,M),v&&u!==void 0&&(u=M),_(g)),x}return T}}const Zn="5";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(Zn);var Xn=Y("<option> </option>"),Qn=Y('<div class="flex flex-row p-4 items-center space-y-0 h-16 justify-end space-x-2 bg-gray-50"><div class="flex items-center justify-center space-x-2 max-w-sm"><select class="text-gray-900 bg-white border border-gray-300 focus:outline-none hover:bg-gray-100 focus:ring-1 focus:ring-blue-300 font-medium rounded-lg text-sm px-5 h-10 min-w-80"></select></div> <button aria-label="Details of the entire build output" class="text-gray-900 bg-white border border-gray-300 focus:outline-none hover:bg-gray-100 focus:ring-1 focus:ring-blue-300 font-medium rounded-lg text-sm px-5 h-10"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-gray-900"><path d="M0 0h24v24H0z" stroke="none" shape-rendering="geometricPrecision"></path><path d="M8 5H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h5.697M18 12V7a2 2 0 0 0-2-2h-2" shape-rendering="geometricPrecision"></path><path d="M8 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v0a2 2 0 0 1-2 2h-2a2 2 0 0 1-2-2zM8 11h4M8 15h3M14 17.5a2.5 2.5 0 1 0 5 0 2.5 2.5 0 1 0-5 0M18.5 19.5 21 22" shape-rendering="geometricPrecision"></path></svg></button> <a href="https://github.com/filipsobol/sonda" target="_blank" aria-label="GitHub repository" class="flex items-center text-gray-900 bg-white border border-gray-300 focus:outline-none hover:bg-gray-100 focus:ring-1 focus:ring-blue-300 font-medium rounded-lg text-sm px-5 h-10"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-gray-900"><path d="M0 0h24v24H0z" stroke="none" shape-rendering="geometricPrecision"></path><path d="M9 19c-4.3 1.4-4.3-2.5-6-3m12 5v-3.5c0-1 .1-1.4-.5-2 2.8-.3 5.5-1.4 5.5-6a4.6 4.6 0 0 0-1.3-3.2 4.2 4.2 0 0 0-.1-3.2s-1.1-.3-3.5 1.3a12.3 12.3 0 0 0-6.2 0C6.5 2.8 5.4 3.1 5.4 3.1a4.2 4.2 0 0 0-.1 3.2A4.6 4.6 0 0 0 4 9.5c0 4.6 2.7 5.7 5.5 6-.6.6-.6 1.2-.5 2V21" shape-rendering="geometricPrecision"></path></svg></a></div>');function $n(t,e){let r=Ee(e,"activeOutputIndex",15);var n=Qn(),i=S(n),s=S(i);gr(s,21,()=>e.outputs,An,(a,f,o)=>{var l=Xn();l.value=(l.__value=o)==null?"":o;var u=S(l);z(()=>F(u,`${o+1}. ${_(f).root.name??""}`)),C(a,l)}),Gn(s,r),C(t,n)}function it(t){const r=["b","KiB","MiB","GiB","TiB","PiB"];let n=t,i=0;for(;n>1024&&r.length>i+1;)n=n/1024,i++;return`${i?n.toFixed(2):n} ${r[i]}`}function ti(t){return Object.entries(t.outputs).map(([e,r])=>{const n=new ei;return Object.entries(r.inputs).forEach(([i,s])=>n.insert(i,s)),n.root.items.push({name:"[unassigned]",path:"[unassigned]",uncompressed:r.uncompressed-n.root.uncompressed,gzip:r.gzip-n.root.gzip,brotli:r.brotli-n.root.brotli}),n.root.name=e,n.root.uncompressed=r.uncompressed,n.optimize(),n})}function ft(t){return"items"in t}class ei{constructor(){U(this,"root");this.root=this.createNode("","")}createNode(e,r){return{name:e,path:r,uncompressed:0,gzip:0,brotli:0,items:[]}}insert(e,r){const n=e.split("/"),i=n.pop();let s=this.root;n.forEach(a=>{let f=s.items.find(o=>ft(o)&&o.name===a);f||(f=this.createNode(a,s.path?`${s.path}/${a}`:a),s.items.push(f)),s=f,s.uncompressed+=r.uncompressed,s.gzip+=r.gzip,s.brotli+=r.brotli}),s.items.push({name:i,path:`${s.path}/${i}`,uncompressed:r.uncompressed,gzip:r.gzip,brotli:r.brotli}),this.root.uncompressed+=r.uncompressed}optimize(){const e=[this.root];for(;e.length;){const r=e.pop();for(;r.items.length===1&&ft(r.items[0]);){const n=r.items[0];r.name=`${r.name}/${n.name}`,r.path=n.path,r.items=n.items}r.items.sort((n,i)=>i.uncompressed-n.uncompressed),r.items.forEach(n=>ft(n)&&e.push(n))}}get(e){let r=this.root;for(;r&&r.path!==e;)r=ft(r)&&r.items.find(n=>e.startsWith(n.path))||null;return r}}var ri=Y('<span class="text-gray-900"> </span> <span class="text-gray-600"> </span>',1),ni=_r('<g><rect shape-rendering="crispEdges" vector-effect="non-scaling-stroke"></rect><foreignObject class="pointer-events-none"><p xmlns="http://www.w3.org/1999/xhtml" class="p-1 size-full text-center text-xs truncate"><!></p></foreignObject><!></g>');function ii(t,e){ot(e,!0);const r=20,n=6,i=22,s=A(()=>e.tile.width-n*2),a=A(()=>e.tile.height-n-i),f=A(()=>it(e.content.uncompressed)),o=A(()=>(e.content.uncompressed/e.totalBytes*100).toFixed(2)),l=A(()=>`color-mix(in oklch, #fca5a5 ${_(o)}%, #86efac)`),u=A(()=>e.tile.width>=i*1.75&&e.tile.height>=i),d=A(()=>!ft(e.content)||_(a)<=r||_(s)<=r?[]:e.content.items);var v=ni(),c=S(v);z(()=>Cn(c,`stroke-gray-500 ${(ft(e.content)?"cursor-zoom-in":"cursor-pointer")??""} svelte-ks9kyg`));var h=N(c),p=S(h),m=S(p);xt(m,()=>_(u),y=>{var g=ri(),w=X(g),x=S(w),P=N(w,2),T=S(P);z(()=>{F(x,e.content.name),F(T,`- ${_(f)??""}`)}),C(y,g)});var b=N(h);xt(b,()=>_(d).length,y=>{var g=A(()=>e.tile.x+n),w=A(()=>e.tile.y+i);br(y,{get content(){return _(d)},get totalBytes(){return e.totalBytes},get width(){return _(s)},get height(){return _(a)},get xStart(){return _(g)},get yStart(){return _(w)}})}),z(()=>{H(c,"data-tile",e.content.path),H(c,"data-hover",`${e.content.name} - ${_(f)} (${_(o)}%)`),H(c,"x",e.tile.x),H(c,"y",e.tile.y),H(c,"width",e.tile.width),H(c,"height",e.tile.height),H(c,"fill",_(l)),H(h,"x",e.tile.x),H(h,"y",e.tile.y),H(h,"width",e.tile.width),H(h,"height",e.tile.height)}),C(t,v),lt()}class si{constructor(e,r,n,i=0,s=0){U(this,"sizes");U(this,"tiles");U(this,"xStart");U(this,"yStart");U(this,"widthLeft");U(this,"heightLeft");const a=e.reduce((o,l)=>o+l,0),f=n*r/a;this.sizes=new Float32Array(e.length);for(let o=0;o<e.length;o++)this.sizes[o]=e[o]*f;this.tiles=new Array,this.xStart=i,this.yStart=s,this.widthLeft=r,this.heightLeft=n}layout(e,r,n,i,s){let a=i?this.yStart:this.xStart,f;const o=this.sizes,l=this.tiles;for(let u=e;u<=r;u++)f=o[u]/n,i?l.push({x:this.xStart,y:a,width:n,height:f}):l.push({x:a,y:this.yStart,width:f,height:n}),a+=f,s++;return i?(this.xStart+=n,this.widthLeft-=n):(this.yStart+=n,this.heightLeft-=n),s}calculate(){let e=this.heightLeft<this.widthLeft,r=e?this.heightLeft:this.widthLeft,n=r*r,i=0,s=0,a=this.sizes[0],f=this.sizes[0],o=this.sizes[0],l=0,u=a*a,d=Math.max(n*o/u,u/(n*f));for(let v=1;v<this.sizes.length;v++){const c=this.sizes[v],h=a+c,p=f<c?f:c,m=o>c?o:c,b=h*h,y=Math.max(n*m/b,b/(n*p));(d<=y?1:0)?(l=this.layout(i,s,a/r,e,l),e=this.heightLeft<this.widthLeft,r=e?this.heightLeft:this.widthLeft,n=r*r,i=v,s=v,a=c,f=c,o=c,u=c*c,d=Math.max(n*o/u,u/(n*f))):(s=v,a=h,f=p,o=m,u=b,d=y)}return l=this.layout(i,s,a/r,e,l),this.tiles}}function br(t,e){const r=A(()=>Array.isArray(e.content)?Object.values(e.content):[e.content]),n=A(()=>new si(_(r).map(f=>f.uncompressed),e.width,e.height,e.xStart,e.yStart).calculate());var i=ee(),s=X(i);gr(s,18,()=>_(n),a=>a,(a,f,o)=>{ii(a,{get tile(){return f},get content(){return _(r)[_(o)]},get totalBytes(){return e.totalBytes}})}),C(t,i)}var ai=_r('<svg xmlns="http://www.w3.org/2000/svg" role="img"><!></svg>');function yr(t,e){ot(e,!0);var r=ee(),n=X(r);Nn(n,()=>[e.content.path,e.width,e.height],i=>{var s=ai(),a=S(s),f=A(()=>e.width-1),o=A(()=>e.height-1);br(a,{get content(){return e.content},get totalBytes(){return e.content.uncompressed},get width(){return _(f)},get height(){return _(o)},xStart:.5,yStart:.5}),z(()=>{H(s,"width",e.width),H(s,"height",e.height)}),C(i,s)}),C(t,r),lt()}const oi=t=>t;function li(t,{delay:e=0,duration:r=400,easing:n=oi}={}){const i=+getComputedStyle(t).opacity;return{delay:e,duration:r,easing:n,css:s=>`opacity: ${s*i}`}}var ui=Y('<div class="fixed top-0 right-0 left-0 bottom-0 flex justify-center items-center"><div class="fixed bg-gray-200/70 w-full h-full backdrop-blur-sm" aria-hidden="true"></div> <div class="bg-white relative flex flex-col rounded-lg border p-6 shadow-lg overflow-hidden max-h-[95vh] max-w-[95vw]"><div class="mb-4"><h2 class="py-2 pr-6 block align-text-bottom font-semibold leading-none tracking-tight text-base border-b-2 border-gray-300 border-dashed"> </h2> <button aria-label="Close dialog" class="absolute top-0 right-0 mt-2 mr-2 flex justify-center items-center border border-transparent rounded-full w-10 h-10 text-gray-600 hover:text-gray-900"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M0 0h24v24H0z" stroke="none"></path><path d="M18 6 6 18M6 6l12 12"></path></svg></button></div> <!></div></div>');function xr(t,e){ot(e,!0);let r=I(void 0);function n(v){e.onClose&&v.target===_(r)&&e.onClose()}var i=ui();yt("click",Z.body,n);var s=S(i);Kn(s,v=>E(r,v),()=>_(r));var a=N(s,2),f=S(a),o=S(f),l=S(o),u=N(o,2);u.__click=function(...v){var c;(c=e.onClose)==null||c.apply(this,v)};var d=N(f,2);Rn(d,()=>e.children),z(()=>{ce(a,"w-[95vw]",e.large),ce(a,"h-[95vh]",e.large),F(l,e.heading)}),Wn(3,i,()=>li,()=>({duration:150})),C(t,i),lt()}En(["click"]);class fi{constructor(){U(this,"depth",0);U(this,"tree",[])}process(e){const r=this.getImporters(e);if(!r.length)return;if(r.length===1)return this.addLast(`imported by ${r[0]}`),this.process(r[0]);const n=r.pop();r.forEach(i=>this.add(`imported by ${i}`)),this.addLast(`imported by ${n}`)}getImporters(e){return e?Object.entries(window.SONDA_JSON_REPORT.inputs).filter(([,r])=>r.imports.includes(e)).map(([r])=>r):[]}addLast(e){this.tree.push(" ".repeat(this.depth*4)+"└── "+e),this.depth++}add(e){this.tree.push(" ".repeat(this.depth*4)+"├── "+e)}render(e){const r=window.SONDA_JSON_REPORT.inputs[e];return r.belongsTo&&(this.tree.push(`└── part of the ${r.belongsTo} bundle`),this.depth++,e=r.belongsTo),this.process(e),this.tree.join(`
2
- `)}}var ci=Y('<span>File format</span> <span class="font-bold"> </span>',1),di=Y('<p class="mt-8">This file is in the bundle, because it is:</p> <code class="mt-2 p-4 w-max leading-5 bg-slate-200 rounded overflow-auto"><pre> </pre></code>',1),vi=Y('<div class="flex flex-col overflow-y-auto"><div class="grid grid-cols-[auto_1fr] gap-x-8"><!> <span>Original file size</span> <span class="font-bold"> </span> <span>Bundled size</span> <span class="font-bold"> </span> <span>GZIP size</span> <span class="font-bold"> </span> <span>Brotli size</span> <span class="font-bold"> </span></div> <!></div>');function hi(t,e){ot(e,!0);let r=Ee(e,"file",7);const n=A(()=>r()&&window.SONDA_JSON_REPORT.inputs[r().path]),i=A(()=>{var l;if(_(n))return _(n).format.toUpperCase();const o=(l=window.SONDA_JSON_REPORT.inputs[r().path])==null?void 0:l.belongsTo;return o?window.SONDA_JSON_REPORT.inputs[o].format.toUpperCase:"UNKNOWN"}),s=A(()=>_(n)?new fi().render(r().path):null);var a=ee(),f=X(a);xt(f,r,o=>{xr(o,{get heading(){return r().path},onClose:()=>r(null),children:u=>{var d=vi(),v=S(d),c=S(v);xt(c,()=>_(i)!=="UNKNOWN",T=>{var M=ci(),ut=N(X(M),2),J=S(ut);z(()=>F(J,_(i))),C(T,M)});var h=N(c,4),p=S(h);z(()=>{var T;return F(p,it(((T=_(n))==null?void 0:T.bytes)||0))});var m=N(h,4),b=S(m);z(()=>F(b,it(r().uncompressed)));var y=N(m,4),g=S(y);z(()=>F(g,it(r().gzip)));var w=N(y,4),x=S(w);z(()=>F(x,it(r().brotli)));var P=N(v,2);xt(P,()=>_(s),T=>{var M=di(),ut=N(X(M),2),J=S(ut),Tt=S(J);z(()=>F(Tt,_(s))),C(T,M)}),C(u,d)}})}),C(t,a),lt()}var _i=Y('<div class="mb-4 grid grid-cols-[auto_1fr] gap-x-8"><span>Bundled size</span> <span class="font-bold"> </span> <span>GZIP size</span> <span class="font-bold"> </span> <span>Brotli size</span> <span class="font-bold"> </span></div> <div class="flex-grow overflow-hidden"><!></div>',1);function gi(t,e){ot(e,!0);let r=Ee(e,"folder",7),n=I(0),i=I(0);var s=ee(),a=X(s);xt(a,r,f=>{xr(f,{get heading(){return r().path},onClose:()=>r(null),large:!0,children:l=>{var u=_i(),d=X(u),v=N(S(d),2),c=S(v);z(()=>F(c,it(r().uncompressed)));var h=N(v,4),p=S(h);z(()=>F(p,it(r().gzip)));var m=N(h,4),b=S(m);z(()=>F(b,it(r().brotli)));var y=N(d,2),g=S(y);yr(g,{get content(){return r()},get width(){return _(n)},get height(){return _(i)}}),nt(y,"clientWidth",w=>E(n,w)),nt(y,"clientHeight",w=>E(i,w)),C(l,u)}})}),C(t,s),lt()}var pi=Y('<div role="tooltip" class="fixed z-10 px-2 py-1 bg-gray-800 text-gray-100 rounded-md whitespace-nowrap pointer-events-none will-change-transform" style="transform: translate( var(--x), var(--y) )"> </div>');function wi(t,e){ot(e,!0);const r=12;let n=I(0),i=I(0),s=I(0),a=I(0),f=I(0),o=I(0),l=I(""),u=I("0px"),d=I("0px");un(()=>{_(l)&&(E(u,(_(f)+_(n)+r>_(s)?_(f)-_(n)-r:_(f)+r)+"px"),E(d,(_(o)+_(i)+r>_(a)?_(o)-_(i):_(o)+r)+"px"))});function v({target:p,clientX:m,clientY:b}){E(l,q(p instanceof Element&&p.getAttribute("data-hover")||"")),E(f,q(m)),E(o,q(b))}var c=pi();yt("mouseover",Z.body,v),yt("mousemove",Z.body,v),yt("mouseleave",Z.body,()=>E(l,""));var h=S(c);z(()=>{ce(c,"invisible",!_(l)),je(c,"--x",_(u)),je(c,"--y",_(d)),F(h,_(l))}),nt(Z.body,"clientWidth",p=>E(s,q(p))),nt(Z.body,"clientHeight",p=>E(a,q(p))),nt(c,"clientWidth",p=>E(n,p)),nt(c,"clientHeight",p=>E(i,p)),C(t,c),lt()}var mi=Y('<div role="application" class="wrapper relative flex flex-col overflow-hidden h-screen w-screen"><!> <div class="flex-grow overflow-hidden"><!></div></div> <!> <!> <!>',1);function bi(t,e){ot(e,!0);const r=ti(window.SONDA_JSON_REPORT);let n=I(0),i=I(0),s=I(null),a=I(null),f=I(0);const o=A(()=>r[_(f)]);function l({target:g}){const w=g instanceof Element&&g.getAttribute("data-tile");if(!w)return;const x=_(o).get(w);if(x)return ft(x)?E(s,q(x)):E(a,q(x))}function u(g){if(g.key==="Escape"){if(g.stopPropagation(),_(a))return E(a,null);if(_(s))return E(s,null)}}var d=mi();yt("click",Z.body,l),yt("keydown",Z.body,u);var v=X(d),c=S(v);$n(c,{get activeOutputIndex(){return _(f)},set activeOutputIndex(g){E(f,q(g))},outputs:r});var h=N(c,2),p=S(h);yr(p,{get content(){return _(o).root},get width(){return _(n)},get height(){return _(i)}});var m=N(v,2);gi(m,{get folder(){return _(s)}});var b=N(m,2);hi(b,{get file(){return _(a)}});var y=N(b,2);wi(y,{}),nt(h,"clientWidth",g=>E(n,g)),nt(h,"clientHeight",g=>E(i,g)),C(t,d),lt()}kn(bi,{target:document.getElementById("app")});</script><style rel="stylesheet" crossorigin>rect.svelte-ks9kyg:hover{filter:brightness(1.15)}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / .5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / .5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.bottom-0{bottom:0}.left-0{left:0}.right-0{right:0}.top-0{top:0}.z-10{z-index:10}.mb-4{margin-bottom:1rem}.mr-2{margin-right:.5rem}.mt-2{margin-top:.5rem}.mt-8{margin-top:2rem}.block{display:block}.flex{display:flex}.grid{display:grid}.size-full{width:100%;height:100%}.h-10{height:2.5rem}.h-16{height:4rem}.h-\[95vh\]{height:95vh}.h-full{height:100%}.h-screen{height:100vh}.max-h-\[95vh\]{max-height:95vh}.min-h-screen{min-height:100vh}.w-10{width:2.5rem}.w-\[95vw\]{width:95vw}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-screen{width:100vw}.min-w-80{min-width:20rem}.max-w-\[95vw\]{max-width:95vw}.max-w-sm{max-width:24rem}.flex-grow{flex-grow:1}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-pointer{cursor:pointer}.cursor-zoom-in{cursor:zoom-in}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.gap-x-8{-moz-column-gap:2rem;column-gap:2rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-b-2{border-bottom-width:2px}.border-dashed{border-style:dashed}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.border-transparent{border-color:transparent}.bg-gray-200\/70{background-color:#e5e7ebb3}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}.bg-slate-200{--tw-bg-opacity:1;background-color:rgb(226 232 240 / var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.stroke-gray-500{stroke:#6b7280}.p-1{padding:.25rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pr-6{padding-right:1.5rem}.text-center{text-align:center}.align-text-bottom{vertical-align:text-bottom}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-base{font-size:1rem;line-height:1.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.leading-5{line-height:1.25rem}.leading-none{line-height:1}.tracking-tight{letter-spacing:-.025em}.text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246 / var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99 / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity))}.shadow-lg{--tw-shadow:0 10px 15px -3px rgb(0 0 0 / .1),0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.will-change-transform{will-change:transform}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.hover\:text-gray-900:hover{--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-blue-300:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(147 197 253 / var(--tw-ring-opacity))}</style></head><body class="flex w-screen h-screen font-mono"><div id="app" class="flex w-screen min-h-screen"></div></body></html>
1
+ <!doctype html><html lang="en"><head><meta charset="UTF-8"/><link rel="icon" href="data:;base64,iVBORw0KGgo="/><meta name="viewport" content="width=device-width,initial-scale=1"/><title>Sonda report</title><link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='512' height='512' fill='none'%3E%3Cpath fill='%23FACC15' d='M0 0h512v512H0V0Z'/%3E%3Cpath fill='%23000' d='m264.536 203.704-41.984 89.6-21.504-9.728c-20.139-9.216-35.669-21.504-46.592-36.864-10.923-15.36-16.384-37.717-16.384-67.072 0-37.547 9.728-65.536 29.184-83.968 19.797-18.773 52.395-28.33 97.792-28.672 18.773 0 35.84.853 51.2 2.56s27.648 3.584 36.864 5.632l13.824 2.56-10.24 82.432-12.8-1.536c-8.192-1.024-18.432-1.877-30.72-2.56-12.288-1.024-24.235-1.536-35.84-1.536-12.288 0-21.675 1.877-28.16 5.632-6.144 3.413-9.216 10.069-9.216 19.968 0 5.461 2.219 9.899 6.656 13.312 4.437 3.413 10.411 6.827 17.92 10.24Zm-18.432 100.864 42.496-90.624 22.016 9.728c23.211 10.24 40.107 23.04 50.688 38.4 10.581 15.019 15.872 36.523 15.872 64.512 0 37.888-9.899 67.072-29.696 87.552-19.797 20.48-52.395 30.891-97.792 31.232-22.528 0-43.52-1.536-62.976-4.608-19.456-2.731-36.693-5.973-51.712-9.728l10.24-82.432 12.288 2.048c8.533 1.365 19.797 2.731 33.792 4.096 13.995 1.365 29.355 2.048 46.08 2.048 12.971 0 22.699-1.877 29.184-5.632 6.485-3.755 9.728-9.899 9.728-18.432 0-5.803-1.536-10.411-4.608-13.824-3.072-3.413-8.533-6.827-16.384-10.24l-9.216-4.096Z'/%3E%3C/svg%3E"/><script type="module" crossorigin>var Or=Object.defineProperty;var Pe=t=>{throw TypeError(t)};var Tr=(t,e,r)=>e in t?Or(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var J=(t,e,r)=>Tr(t,typeof e!="symbol"?e+"":e,r),ne=(t,e,r)=>e.has(t)||Pe("Cannot "+r);var X=(t,e,r)=>(ne(t,e,"read from private field"),r?r.call(t):e.get(t)),At=(t,e,r)=>e.has(t)?Pe("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),ie=(t,e,r,n)=>(ne(t,e,"write to private field"),n?n.call(t,r):e.set(t,r),r),ze=(t,e,r)=>(ne(t,e,"access private method"),r);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))n(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&n(a)}).observe(document,{childList:!0,subtree:!0});function r(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function n(i){if(i.ep)return;i.ep=!0;const s=r(i);fetch(i.href,s)}})();window.SONDA_JSON_REPORT=JSON.parse(String.raw`__REPORT_DATA__`);const kr=!1;var _e=Array.isArray,ge=Array.from,Ar=Object.defineProperty,mt=Object.getOwnPropertyDescriptor,Nr=Object.prototype,Pr=Array.prototype,zr=Object.getPrototypeOf;function Mr(t){return typeof t=="function"}const Nt=()=>{};function Lr(t){for(var e=0;e<t.length;e++)t[e]()}const $=2,Ge=4,Ot=8,pe=16,tt=32,Kt=64,ht=128,Ft=256,U=512,lt=1024,It=2048,dt=4096,Ct=8192,Je=16384,Dt=32768,Rr=65536,Ir=1<<18,Ht=1<<19,bt=Symbol("$state"),Cr=Symbol("");function Ye(t){return t===this.v}function Ke(t,e){return t!=t?e==e:t!==e||t!==null&&typeof t=="object"||typeof t=="function"}function we(t){return!Ke(t,this.v)}function Dr(t){throw new Error("effect_in_teardown")}function Br(){throw new Error("effect_in_unowned_derived")}function qr(t){throw new Error("effect_orphan")}function Fr(){throw new Error("effect_update_depth_exceeded")}function Hr(t){throw new Error("props_invalid_value")}function jr(){throw new Error("state_descriptors_fixed")}function Wr(){throw new Error("state_prototype_fixed")}function Ur(){throw new Error("state_unsafe_local_read")}function Vr(){throw new Error("state_unsafe_mutation")}function W(t){return{f:0,v:t,reactions:null,equals:Ye,version:0}}function R(t){return Gr(W(t))}function Ze(t){var r;const e=W(t);return e.equals=we,L!==null&&L.l!==null&&((r=L.l).s??(r.s=[])).push(e),e}function Gr(t){return P!==null&&P.f&$&&(Z===null?_n([t]):Z.push(t)),t}function E(t,e){return P!==null&&ue()&&P.f&$&&(Z===null||!Z.includes(t))&&Vr(),t.equals(e)||(t.v=e,t.version=fr(),Xe(t,lt),ue()&&O!==null&&O.f&U&&!(O.f&tt)&&(I!==null&&I.includes(t)?(K(O,lt),te(O)):ot===null?gn([t]):ot.push(t))),e}function Xe(t,e){var r=t.reactions;if(r!==null)for(var n=ue(),i=r.length,s=0;s<i;s++){var a=r[s],f=a.f;f&lt||!n&&a===O||(K(a,e),f&(U|ht)&&(f&$?Xe(a,It):te(a)))}}const me=1,be=2,Qe=4,Jr=8,Yr=16,Kr=1,Zr=2,Xr=4,Qr=8,$r=16,tn=4,en=1,rn=2,D=Symbol();let $e=!1;function q(t,e=null,r){if(typeof t!="object"||t===null||bt in t)return t;const n=zr(t);if(n!==Nr&&n!==Pr)return t;var i=new Map,s=_e(t),a=W(0);s&&i.set("length",W(t.length));var f;return new Proxy(t,{defineProperty(o,l,u){(!("value"in u)||u.configurable===!1||u.enumerable===!1||u.writable===!1)&&jr();var d=i.get(l);return d===void 0?(d=W(u.value),i.set(l,d)):E(d,q(u.value,f)),!0},deleteProperty(o,l){var u=i.get(l);return u===void 0?l in o&&i.set(l,W(D)):(E(u,D),Me(a)),!0},get(o,l,u){var _;if(l===bt)return t;var d=i.get(l),v=l in o;if(d===void 0&&(!v||(_=mt(o,l))!=null&&_.writable)&&(d=W(q(v?o[l]:D,f)),i.set(l,d)),d!==void 0){var c=h(d);return c===D?void 0:c}return Reflect.get(o,l,u)},getOwnPropertyDescriptor(o,l){var u=Reflect.getOwnPropertyDescriptor(o,l);if(u&&"value"in u){var d=i.get(l);d&&(u.value=h(d))}else if(u===void 0){var v=i.get(l),c=v==null?void 0:v.v;if(v!==void 0&&c!==D)return{enumerable:!0,configurable:!0,value:c,writable:!0}}return u},has(o,l){var c;if(l===bt)return!0;var u=i.get(l),d=u!==void 0&&u.v!==D||Reflect.has(o,l);if(u!==void 0||O!==null&&(!d||(c=mt(o,l))!=null&&c.writable)){u===void 0&&(u=W(d?q(o[l],f):D),i.set(l,u));var v=h(u);if(v===D)return!1}return d},set(o,l,u,d){var g;var v=i.get(l),c=l in o;if(s&&l==="length")for(var _=u;_<v.v;_+=1){var p=i.get(_+"");p!==void 0?E(p,D):_ in o&&(p=W(D),i.set(_+"",p))}v===void 0?(!c||(g=mt(o,l))!=null&&g.writable)&&(v=W(void 0),E(v,q(u,f)),i.set(l,v)):(c=v.v!==D,E(v,q(u,f)));var m=Reflect.getOwnPropertyDescriptor(o,l);if(m!=null&&m.set&&m.set.call(d,u),!c){if(s&&typeof l=="string"){var b=i.get("length"),y=Number(l);Number.isInteger(y)&&y>=b.v&&E(b,y+1)}Me(a)}return!0},ownKeys(o){h(a);var l=Reflect.ownKeys(o).filter(v=>{var c=i.get(v);return c===void 0||c.v!==D});for(var[u,d]of i)d.v!==D&&!(u in o)&&l.push(u);return l},setPrototypeOf(){Wr()}})}function Me(t,e=1){E(t,t.v+e)}function Le(t){return t!==null&&typeof t=="object"&&bt in t?t[bt]:t}function nn(t,e){return Object.is(Le(t),Le(e))}var Re,Q,tr,er;function sn(){if(Re===void 0){Re=window,Q=document;var t=Element.prototype,e=Node.prototype;tr=mt(e,"firstChild").get,er=mt(e,"nextSibling").get,t.__click=void 0,t.__className="",t.__attributes=null,t.__e=void 0,Text.prototype.__t=void 0}}function ye(t=""){return document.createTextNode(t)}function St(t){return tr.call(t)}function Zt(t){return er.call(t)}function S(t){return St(t)}function Y(t,e){{var r=St(t);return r instanceof Comment&&r.data===""?Zt(r):r}}function N(t,e=1,r=!1){let n=t;for(;e--;)n=Zt(n);return n}function an(t){t.textContent=""}function on(t){O===null&&P===null&&qr(),P!==null&&P.f&ht&&Br(),Ee&&Dr()}function ln(t,e){var r=e.last;r===null?e.last=e.first=t:(r.next=t,t.prev=r,e.last=t)}function Tt(t,e,r,n=!0){var i=(t&Kt)!==0,s=O,a={ctx:L,deps:null,nodes_start:null,nodes_end:null,f:t|lt,first:null,fn:e,last:null,next:null,parent:i?null:s,prev:null,teardown:null,transitions:null,version:0};if(r){var f=yt;try{Ie(!0),$t(a),a.f|=Je}catch(u){throw gt(a),u}finally{Ie(f)}}else e!==null&&te(a);var o=r&&a.deps===null&&a.first===null&&a.nodes_start===null&&a.teardown===null;if(!o&&!i&&n&&(s!==null&&ln(a,s),P!==null&&P.f&$)){var l=P;(l.children??(l.children=[])).push(a)}return a}function un(t){const e=Tt(Ot,null,!1);return K(e,U),e.teardown=t,e}function fn(t){on();var e=O!==null&&(O.f&Ot)!==0&&L!==null&&!L.m;if(e){var r=L;(r.e??(r.e=[])).push({fn:t,parent:O})}else{var n=_t(t);return n}}function cn(t){const e=Tt(Kt,t,!0);return()=>{gt(e)}}function _t(t){return Tt(Ge,t,!1)}function rr(t){return Tt(Ot,t,!0)}function C(t){return rr(t)}function Xt(t,e=0){return Tt(Ot|pe|e,t,!0)}function vt(t,e=!0){return Tt(Ot|tt,t,!0,e)}function nr(t){var e=t.teardown;if(e!==null){const r=Ee,n=P;Ce(!0),De(null);try{e.call(null)}finally{Ce(r),De(n)}}}function gt(t,e=!0){var r=!1;if((e||t.f&Ir)&&t.nodes_start!==null){for(var n=t.nodes_start,i=t.nodes_end;n!==null;){var s=n===i?null:Zt(n);n.remove(),n=s}r=!0}dr(t,e&&!r),Lt(t,0),K(t,Ct);var a=t.transitions;if(a!==null)for(const o of a)o.stop();nr(t);var f=t.parent;f!==null&&f.first!==null&&ir(t),t.next=t.prev=t.teardown=t.ctx=t.deps=t.parent=t.fn=t.nodes_start=t.nodes_end=null}function ir(t){var e=t.parent,r=t.prev,n=t.next;r!==null&&(r.next=n),n!==null&&(n.prev=r),e!==null&&(e.first===t&&(e.first=n),e.last===t&&(e.last=r))}function jt(t,e){var r=[];xe(t,r,!0),sr(r,()=>{gt(t),e&&e()})}function sr(t,e){var r=t.length;if(r>0){var n=()=>--r||e();for(var i of t)i.out(n)}else e()}function xe(t,e,r){if(!(t.f&dt)){if(t.f^=dt,t.transitions!==null)for(const a of t.transitions)(a.is_global||r)&&e.push(a);for(var n=t.first;n!==null;){var i=n.next,s=(n.f&Dt)!==0||(n.f&tt)!==0;xe(n,e,s?r:!1),n=i}}}function Wt(t){ar(t,!0)}function ar(t,e){if(t.f&dt){t.f^=dt,Bt(t)&&$t(t);for(var r=t.first;r!==null;){var n=r.next,i=(r.f&Dt)!==0||(r.f&tt)!==0;ar(r,i?e:!1),r=n}if(t.transitions!==null)for(const s of t.transitions)(s.is_global||e)&&s.in()}}let ae=!1,oe=[];function dn(){ae=!1;const t=oe.slice();oe=[],Lr(t)}function Qt(t){ae||(ae=!0,queueMicrotask(dn)),oe.push(t)}function k(t){let e=$|lt;O===null&&(e|=ht);const r={children:null,deps:null,equals:Ye,f:e,fn:t,reactions:null,v:null,version:0};if(P!==null&&P.f&$){var n=P;(n.children??(n.children=[])).push(r)}return r}function vn(t){const e=k(t);return e.equals=we,e}function or(t){var e=t.children;if(e!==null){t.children=null;for(var r=0;r<e.length;r+=1){var n=e[r];n.f&$?hn(n):gt(n)}}}function lr(t){var e;or(t),e=cr(t);var r=(wt||t.f&ht)&&t.deps!==null?It:U;K(t,r),t.equals(e)||(t.v=e,t.version=fr())}function hn(t){or(t),Lt(t,0),K(t,Ct),t.children=t.deps=t.reactions=t.fn=null}let Ut=!1,yt=!1,Ee=!1;function Ie(t){yt=t}function Ce(t){Ee=t}let le=[],zt=0;let P=null;function De(t){P=t}let O=null;function Be(t){O=t}let Z=null;function _n(t){Z=t}let I=null,H=0,ot=null;function gn(t){ot=t}let ur=0,wt=!1,L=null;function fr(){return++ur}function ue(){return L!==null&&L.l===null}function Bt(t){var a,f;var e=t.f;if(e&lt)return!0;if(e&It){var r=t.deps,n=(e&ht)!==0;if(r!==null){var i;if(e&Ft){for(i=0;i<r.length;i++)((a=r[i]).reactions??(a.reactions=[])).push(t);t.f^=Ft}for(i=0;i<r.length;i++){var s=r[i];if(Bt(s)&&lr(s),n&&O!==null&&!wt&&!((f=s==null?void 0:s.reactions)!=null&&f.includes(t))&&(s.reactions??(s.reactions=[])).push(t),s.version>t.version)return!0}}n||K(t,U)}return!1}function pn(t,e,r){throw t}function cr(t){var u;var e=I,r=H,n=ot,i=P,s=wt,a=Z;I=null,H=0,ot=null,P=t.f&(tt|Kt)?null:t,wt=!yt&&(t.f&ht)!==0,Z=null;try{var f=(0,t.fn)(),o=t.deps;if(I!==null){var l;if(Lt(t,H),o!==null&&H>0)for(o.length=H+I.length,l=0;l<I.length;l++)o[H+l]=I[l];else t.deps=o=I;if(!wt)for(l=H;l<o.length;l++)((u=o[l]).reactions??(u.reactions=[])).push(t)}else o!==null&&H<o.length&&(Lt(t,H),o.length=H);return f}finally{I=e,H=r,ot=n,P=i,wt=s,Z=a}}function wn(t,e){let r=e.reactions;if(r!==null){var n=r.indexOf(t);if(n!==-1){var i=r.length-1;i===0?r=e.reactions=null:(r[n]=r[i],r.pop())}}r===null&&e.f&$&&(I===null||!I.includes(e))&&(K(e,It),e.f&(ht|Ft)||(e.f^=Ft),Lt(e,0))}function Lt(t,e){var r=t.deps;if(r!==null)for(var n=e;n<r.length;n++)wn(t,r[n])}function dr(t,e=!1){var r=t.first;for(t.first=t.last=null;r!==null;){var n=r.next;gt(r,e),r=n}}function $t(t){var e=t.f;if(!(e&Ct)){K(t,U);var r=O,n=L;O=t,L=t.ctx;try{e&pe||dr(t),nr(t);var i=cr(t);t.teardown=typeof i=="function"?i:null,t.version=ur}catch(s){pn(s)}finally{O=r,L=n}}}function mn(){zt>1e3&&(zt=0,Fr()),zt++}function bn(t){var e=t.length;if(e!==0){mn();var r=yt;yt=!0;try{for(var n=0;n<e;n++){var i=t[n];if(i.f&Ht&&(i.f^=Ht),i.first===null&&!(i.f&tt))qe([i]);else{var s=[];vr(i,s),qe(s)}}}finally{yt=r}}}function qe(t){var e=t.length;if(e!==0)for(var r=0;r<e;r++){var n=t[r];!(n.f&(Ct|dt))&&Bt(n)&&($t(n),n.deps===null&&n.first===null&&n.nodes_start===null&&(n.teardown===null?ir(n):n.fn=null))}}function yn(){if(Ut=!1,zt>1001)return;const t=le;le=[],bn(t),Ut||(zt=0)}function te(t){Ut||(Ut=!0,queueMicrotask(yn));for(var e=t;e.parent!==null;){e=e.parent;var r=e.f;if(r&tt){if(!(r&U))return;e.f^=U}if(r&Kt){if(r&Ht)return;e.f^=Ht}}le.push(e)}function vr(t,e){var r=t.first,n=[];t:for(;r!==null;){var i=r.f,s=(i&dt)===0,a=(i&tt)!==0,f=(i&U)!==0,o=r.first;if(s&&(!a||!f))if(a&&K(r,U),i&Ot){if(!a&&Bt(r)&&$t(r),o=r.first,o!==null){r=o;continue}}else i&Ge&&n.push(r);var l=r.next;if(l===null){let v=r.parent;for(;v!==null;){if(t===v)break t;var u=v.next;if(u!==null){r=u;continue t}v=v.parent}}r=l}for(var d=0;d<n.length;d++)o=n[d],e.push(o),vr(o,e)}function h(t){var e=t.f;if(e&Ct)return t.v;if(P!==null){Z!==null&&Z.includes(t)&&Ur();var r=P.deps;I===null&&r!==null&&r[H]===t?H++:I===null?I=[t]:I.push(t),ot!==null&&O!==null&&O.f&U&&!(O.f&tt)&&ot.includes(t)&&(K(O,lt),te(O))}if(e&$){var n=t;Bt(n)&&lr(n)}return t.v}function ee(t){const e=P;try{return P=null,t()}finally{P=e}}const xn=~(lt|It|U);function K(t,e){t.f=t.f&xn|e}function ut(t,e=!1,r){L={p:L,c:null,e:null,m:!1,s:t,x:null,l:null},e||(L.l={s:null,u:null,r1:[],r2:W(!1)})}function ft(t){const e=L;if(e!==null){const s=e.e;if(s!==null){var r=O;e.e=null;try{for(var n=0;n<s.length;n++){var i=s[n];Be(i.parent),_t(i.fn)}}finally{Be(r)}}L=e.p,e.m=!0}return{}}const hr=new Set,fe=new Set;function En(t,e,r,n){function i(s){if(n.capture||Pt.call(e,s),!s.cancelBubble)return r.call(this,s)}return t.startsWith("pointer")||t.startsWith("touch")||t==="wheel"?Qt(()=>{e.addEventListener(t,i,n)}):e.addEventListener(t,i,n),i}function xt(t,e,r,n,i){var s={capture:n,passive:i},a=En(t,e,r,s);(e===document.body||e===window||e===document)&&un(()=>{e.removeEventListener(t,a,s)})}function Sn(t){for(var e=0;e<t.length;e++)hr.add(t[e]);for(var r of fe)r(t)}function Pt(t){var m;var e=this,r=e.ownerDocument,n=t.type,i=((m=t.composedPath)==null?void 0:m.call(t))||[],s=i[0]||t.target,a=0,f=t.__root;if(f){var o=i.indexOf(f);if(o!==-1&&(e===document||e===window)){t.__root=e;return}var l=i.indexOf(e);if(l===-1)return;o<=l&&(a=o)}if(s=i[a]||t.target,s!==e){Ar(t,"currentTarget",{configurable:!0,get(){return s||r}});try{for(var u,d=[];s!==null;){var v=s.assignedSlot||s.parentNode||s.host||null;try{var c=s["__"+n];if(c!==void 0&&!s.disabled)if(_e(c)){var[_,...p]=c;_.apply(s,[t,...p])}else c.call(s,t)}catch(b){u?d.push(b):u=b}if(t.cancelBubble||v===e||v===null)break;s=v}if(u){for(let b of d)queueMicrotask(()=>{throw b});throw u}}finally{t.__root=e,delete t.currentTarget}}}function _r(t){var e=document.createElement("template");return e.innerHTML=t,e.content}function Vt(t,e){var r=O;r.nodes_start===null&&(r.nodes_start=t,r.nodes_end=e)}function V(t,e){var r=(e&en)!==0,n=(e&rn)!==0,i,s=!t.startsWith("<!>");return()=>{i===void 0&&(i=_r(s?t:"<!>"+t),r||(i=St(i)));var a=n?document.importNode(i,!0):i.cloneNode(!0);if(r){var f=St(a),o=a.lastChild;Vt(f,o)}else Vt(a,a);return a}}function gr(t,e,r="svg"){var n=!t.startsWith("<!>"),i=`<${r}>${n?t:"<!>"+t}</${r}>`,s;return()=>{if(!s){var a=_r(i),f=St(a);s=St(f)}var o=s.cloneNode(!0);return Vt(o,o),o}}function re(){var t=document.createDocumentFragment(),e=document.createComment(""),r=ye();return t.append(e,r),Vt(e,r),t}function M(t,e){t!==null&&t.before(e)}const On=["wheel","mousewheel","touchstart","touchmove"];function Tn(t){return On.includes(t)}let ce=!0;function B(t,e){e!==(t.__t??(t.__t=t.nodeValue))&&(t.__t=e,t.nodeValue=e==null?"":e+"")}function kn(t,e){const r=e.anchor??e.target.appendChild(ye());return An(t,{...e,anchor:r})}const pt=new Map;function An(t,{target:e,anchor:r,props:n={},events:i,context:s,intro:a=!0}){sn();var f=new Set,o=d=>{for(var v=0;v<d.length;v++){var c=d[v];if(!f.has(c)){f.add(c);var _=Tn(c);e.addEventListener(c,Pt,{passive:_});var p=pt.get(c);p===void 0?(document.addEventListener(c,Pt,{passive:_}),pt.set(c,1)):pt.set(c,p+1)}}};o(ge(hr)),fe.add(o);var l=void 0,u=cn(()=>(vt(()=>{if(s){ut({});var d=L;d.c=s}i&&(n.$$events=i),ce=a,l=t(r,n)||{},ce=!0,s&&ft()}),()=>{for(var d of f){e.removeEventListener(d,Pt);var v=pt.get(d);--v===0?(document.removeEventListener(d,Pt),pt.delete(d)):pt.set(d,v)}fe.delete(o),Fe.delete(l)}));return Fe.set(l,u),l}let Fe=new WeakMap;function rt(t,e,r,n=null,i=!1){var s=t,a=null,f=null,o=null,l=i?Dt:0;Xt(()=>{o!==(o=!!e())&&(o?(a?Wt(a):a=vt(()=>r(s)),f&&jt(f,()=>{f=null})):(f?Wt(f):n&&(f=vt(()=>n(s))),a&&jt(a,()=>{a=null})))},l)}function Nn(t,e,r){var n=t,i=D,s;Xt(()=>{Ke(i,i=e())&&(s&&jt(s),s=vt(()=>r(n)))})}let se=null;function Pn(t,e){return e}function zn(t,e,r,n){for(var i=[],s=e.length,a=0;a<s;a++)xe(e[a].e,i,!0);var f=s>0&&i.length===0&&r!==null;if(f){var o=r.parentNode;an(o),o.append(r),n.clear(),et(t,e[0].prev,e[s-1].next)}sr(i,()=>{for(var l=0;l<s;l++){var u=e[l];f||(n.delete(u.k),et(t,u.prev,u.next)),gt(u.e,!f)}})}function pr(t,e,r,n,i,s=null){var a=t,f={flags:e,items:new Map,first:null},o=(e&Qe)!==0;if(o){var l=t;a=l.appendChild(ye())}var u=null;Xt(()=>{var d=r(),v=_e(d)?d:d==null?[]:ge(d),c=v.length;Mn(v,f,a,i,e,n),s!==null&&(c===0?u?Wt(u):u=vt(()=>s(a)):u!==null&&jt(u,()=>{u=null}))})}function Mn(t,e,r,n,i,s){var Oe,Te,ke,Ae;var a=(i&Jr)!==0,f=(i&(me|be))!==0,o=t.length,l=e.items,u=e.first,d=u,v,c=null,_,p=[],m=[],b,y,g,w;if(a)for(w=0;w<o;w+=1)b=t[w],y=s(b,w),g=l.get(y),g!==void 0&&((Oe=g.a)==null||Oe.measure(),(_??(_=new Set)).add(g));for(w=0;w<o;w+=1){if(b=t[w],y=s(b,w),g=l.get(y),g===void 0){var x=d?d.e.nodes_start:r;c=Rn(x,e,c,c===null?e.first:c.next,b,y,w,n,i),l.set(y,c),p=[],m=[],d=c.next;continue}if(f&&Ln(g,b,w,i),g.e.f&dt&&(Wt(g.e),a&&((Te=g.a)==null||Te.unfix(),(_??(_=new Set)).delete(g))),g!==d){if(v!==void 0&&v.has(g)){if(p.length<m.length){var z=m[0],T;c=z.prev;var A=p[0],G=p[p.length-1];for(T=0;T<p.length;T+=1)He(p[T],z,r);for(T=0;T<m.length;T+=1)v.delete(m[T]);et(e,A.prev,G.next),et(e,c,A),et(e,G,z),d=z,c=G,w-=1,p=[],m=[]}else v.delete(g),He(g,d,r),et(e,g.prev,g.next),et(e,g,c===null?e.first:c.next),et(e,c,g),c=g;continue}for(p=[],m=[];d!==null&&d.k!==y;)(v??(v=new Set)).add(d),m.push(d),d=d.next;if(d===null)continue;g=d}p.push(g),c=g,d=g.next}if(d!==null||v!==void 0){for(var F=v===void 0?[]:ge(v);d!==null;)F.push(d),d=d.next;var kt=F.length;if(kt>0){var Sr=i&Qe&&o===0?r:null;if(a){for(w=0;w<kt;w+=1)(ke=F[w].a)==null||ke.measure();for(w=0;w<kt;w+=1)(Ae=F[w].a)==null||Ae.fix()}zn(e,F,Sr,l)}}a&&Qt(()=>{var Ne;if(_!==void 0)for(g of _)(Ne=g.a)==null||Ne.apply()}),O.first=e.first&&e.first.e,O.last=c&&c.e}function Ln(t,e,r,n){n&me&&E(t.v,e),n&be?E(t.i,r):t.i=r}function Rn(t,e,r,n,i,s,a,f,o){var l=se;try{var u=(o&me)!==0,d=(o&Yr)===0,v=u?d?Ze(i):W(i):i,c=o&be?W(a):a,_={i:c,v,k:s,a:null,e:null,prev:r,next:n};return se=_,_.e=vt(()=>f(t,v,c),$e),_.e.prev=r&&r.e,_.e.next=n&&n.e,r===null?e.first=_:(r.next=_,r.e.next=_.e),n!==null&&(n.prev=_,n.e.prev=_.e),_}finally{se=l}}function He(t,e,r){for(var n=t.next?t.next.e.nodes_start:r,i=e?e.e.nodes_start:r,s=t.e.nodes_start;s!==n;){var a=Zt(s);i.before(s),s=a}}function et(t,e,r){e===null?t.first=r:(e.next=r,e.e.next=r&&r.e),r!==null&&(r.prev=e,r.e.prev=e&&e.e)}function In(t,e,...r){var n=t,i=Nt,s;Xt(()=>{i!==(i=e())&&(s&&(gt(s),s=null),s=vt(()=>i(n,...r)))},Dt)}let je=!1;function Cn(){je||(je=!0,document.addEventListener("reset",t=>{Promise.resolve().then(()=>{var e;if(!t.defaultPrevented)for(const r of t.target.elements)(e=r.__on_r)==null||e.call(r)})},{capture:!0}))}function j(t,e,r,n){r=r==null?null:r+"";var i=t.__attributes??(t.__attributes={});i[e]!==(i[e]=r)&&(e==="loading"&&(t[Cr]=r),r===null?t.removeAttribute(e):t.setAttribute(e,r))}function Dn(t,e){var r=t.__className,n=Bn(e);(r!==n||$e)&&(n===""?t.removeAttribute("class"):t.setAttribute("class",n),t.__className=n)}function Bn(t){return t??""}function de(t,e,r){if(r){if(t.classList.contains(e))return;t.classList.add(e)}else{if(!t.classList.contains(e))return;t.classList.remove(e)}}function We(t,e,r,n,i){var s=t.__attributes??(t.__attributes={}),a=t.style,f="style-"+e;s[f]===r&&a.getPropertyValue(e)===r||(s[f]=r,r==null?a.removeProperty(e):a.setProperty(e,r,""))}const qn=requestAnimationFrame,Fn=()=>performance.now(),it={tick:t=>qn(t),now:()=>Fn(),tasks:new Set};function wr(t){it.tasks.forEach(e=>{e.c(t)||(it.tasks.delete(e),e.f())}),it.tasks.size!==0&&it.tick(wr)}function Hn(t){let e;return it.tasks.size===0&&it.tick(wr),{promise:new Promise(r=>{it.tasks.add(e={c:t,f:r})}),abort(){it.tasks.delete(e)}}}function qt(t,e){t.dispatchEvent(new CustomEvent(e))}function jn(t){const e=t.split("-");return e.length===1?e[0]:e[0]+e.slice(1).map(r=>r[0].toUpperCase()+r.slice(1)).join("")}function Ue(t){const e={},r=t.split(";");for(const n of r){const[i,s]=n.split(":");if(!i||s===void 0)break;const a=jn(i.trim());e[a]=s.trim()}return e}const Wn=t=>t;function Un(t,e,r,n){var i=(t&tn)!==0,s="both",a,f=e.inert,o,l;function u(){return a??(a=r()(e,(n==null?void 0:n())??{},{direction:s}))}var d={is_global:i,in(){e.inert=f,qt(e,"introstart"),o=ve(e,u(),l,1,()=>{qt(e,"introend"),o==null||o.abort(),o=a=void 0})},out(p){e.inert=!0,qt(e,"outrostart"),l=ve(e,u(),o,0,()=>{qt(e,"outroend"),p==null||p()})},stop:()=>{o==null||o.abort(),l==null||l.abort()}},v=O;if((v.transitions??(v.transitions=[])).push(d),ce){var c=i;if(!c){for(var _=v.parent;_&&_.f&Dt;)for(;(_=_.parent)&&!(_.f&pe););c=!_||(_.f&Je)!==0}c&&_t(()=>{ee(()=>d.in())})}}function ve(t,e,r,n,i){var s=n===1;if(Mr(e)){var a,f=!1;return Qt(()=>{if(!f){var m=e({direction:s?"in":"out"});a=ve(t,m,r,n,i)}}),{abort:()=>{f=!0,a==null||a.abort()},deactivate:()=>a.deactivate(),reset:()=>a.reset(),t:()=>a.t()}}if(r==null||r.deactivate(),!(e!=null&&e.duration))return i(),{abort:Nt,deactivate:Nt,reset:Nt,t:()=>n};const{delay:o=0,css:l,tick:u,easing:d=Wn}=e;var v=[];if(s&&r===void 0&&(u&&u(0,1),l)){var c=Ue(l(0,1));v.push(c,c)}var _=()=>1-n,p=t.animate(v,{duration:o});return p.onfinish=()=>{var m=(r==null?void 0:r.t())??1-n;r==null||r.abort();var b=n-m,y=e.duration*Math.abs(b),g=[];if(y>0){if(l)for(var w=Math.ceil(y/16.666666666666668),x=0;x<=w;x+=1){var z=m+b*d(x/w),T=l(z,1-z);g.push(Ue(T))}_=()=>{var A=p.currentTime;return m+b*d(A/y)},u&&Hn(()=>{if(p.playState!=="running")return!1;var A=_();return u(A,1-A),!0})}p=t.animate(g,{duration:y,fill:"forwards"}),p.onfinish=()=>{_=()=>n,u==null||u(n,1-n),i()}},{abort:()=>{p&&(p.cancel(),p.effect=null)},deactivate:()=>{i=Nt},reset:()=>{n===0&&(u==null||u(1,0))},t:()=>_()}}function Vn(t,e,r,n=r){t.addEventListener(e,r);const i=t.__on_r;i?t.__on_r=()=>{i(),n()}:t.__on_r=n,Cn()}function mr(t,e,r){if(t.multiple)return Yn(t,e);for(var n of t.options){var i=Mt(n);if(nn(i,e)){n.selected=!0;return}}(!r||e!==void 0)&&(t.selectedIndex=-1)}function Gn(t,e){_t(()=>{var r=new MutationObserver(()=>{var n=t.__value;mr(t,n)});return r.observe(t,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),()=>{r.disconnect()}})}function Jn(t,e,r=e){var n=!0;Vn(t,"change",()=>{var i;if(t.multiple)i=[].map.call(t.querySelectorAll(":checked"),Mt);else{var s=t.querySelector(":checked");i=s&&Mt(s)}r(i)}),_t(()=>{var i=e();if(mr(t,i,n),n&&i===void 0){var s=t.querySelector(":checked");s!==null&&(i=Mt(s),r(i))}t.__value=i,n=!1}),Gn(t)}function Yn(t,e){for(var r of t.options)r.selected=~e.indexOf(Mt(r))}function Mt(t){return"__value"in t?t.__value:t.value}var nt,Et,Rt,Jt,br;const Yt=class Yt{constructor(e){At(this,Jt);At(this,nt,new WeakMap);At(this,Et);At(this,Rt);ie(this,Rt,e)}observe(e,r){var n=X(this,nt).get(e)||new Set;return n.add(r),X(this,nt).set(e,n),ze(this,Jt,br).call(this).observe(e,X(this,Rt)),()=>{var i=X(this,nt).get(e);i.delete(r),i.size===0&&(X(this,nt).delete(e),X(this,Et).unobserve(e))}}};nt=new WeakMap,Et=new WeakMap,Rt=new WeakMap,Jt=new WeakSet,br=function(){return X(this,Et)??ie(this,Et,new ResizeObserver(e=>{for(var r of e){Yt.entries.set(r.target,r);for(var n of X(this,nt).get(r.target)||[])n(r)}}))},J(Yt,"entries",new WeakMap);let he=Yt;var Kn=new he({box:"border-box"});function st(t,e,r){var n=Kn.observe(t,()=>r(t[e]));_t(()=>(ee(()=>r(t[e])),n))}function Ve(t,e){return t===e||(t==null?void 0:t[bt])===e}function Zn(t={},e,r,n){return _t(()=>{var i,s;return rr(()=>{i=s,s=[],ee(()=>{t!==r(...s)&&(e(t,...s),i&&Ve(r(...i),t)&&e(null,...i))})}),()=>{Qt(()=>{s&&Ve(r(...s),t)&&e(null,...s)})}}),t}function Se(t,e,r,n){var w;var i=(r&Kr)!==0,s=(r&Zr)!==0,a=(r&Qr)!==0,f=(r&$r)!==0,o=t[e],l=(w=mt(t,e))==null?void 0:w.set,u=n,d=!0,v=!1,c=()=>(v=!0,d&&(d=!1,f?u=ee(n):u=n),u);o===void 0&&n!==void 0&&(l&&s&&Hr(),o=c(),l&&l(o));var _;if(s)_=()=>{var x=t[e];return x===void 0?c():(d=!0,v=!1,x)};else{var p=(i?k:vn)(()=>t[e]);p.f|=Rr,_=()=>{var x=h(p);return x!==void 0&&(u=void 0),x===void 0?u:x}}if(!(r&Xr))return _;if(l){var m=t.$$legacy;return function(x,z){return arguments.length>0?((!s||!z||m)&&l(z?_():x),x):_()}}var b=!1,y=Ze(o),g=k(()=>{var x=_(),z=h(y);return b?(b=!1,z):y.v=x});return i||(g.equals=we),function(x,z){var T=h(g);if(arguments.length>0){const A=z?h(g):s&&a?q(x):x;return g.equals(A)||(b=!0,E(y,A),v&&u!==void 0&&(u=A),h(g)),x}return T}}const Xn="5";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(Xn);var Qn=V("<option> </option>"),$n=V('<div class="flex flex-row p-4 items-center space-y-0 h-16 justify-end space-x-2 bg-gray-50"><div class="flex items-center justify-center space-x-2 max-w-sm"><select class="text-gray-900 bg-white border border-gray-300 focus:outline-none hover:bg-gray-100 focus:ring-1 focus:ring-blue-300 font-medium rounded-lg text-sm px-5 h-10 min-w-80"></select></div> <button aria-label="Details of the entire build output" class="text-gray-900 bg-white border border-gray-300 focus:outline-none hover:bg-gray-100 focus:ring-1 focus:ring-blue-300 font-medium rounded-lg text-sm px-5 h-10"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-gray-900"><path d="M0 0h24v24H0z" stroke="none" shape-rendering="geometricPrecision"></path><path d="M8 5H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h5.697M18 12V7a2 2 0 0 0-2-2h-2" shape-rendering="geometricPrecision"></path><path d="M8 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v0a2 2 0 0 1-2 2h-2a2 2 0 0 1-2-2zM8 11h4M8 15h3M14 17.5a2.5 2.5 0 1 0 5 0 2.5 2.5 0 1 0-5 0M18.5 19.5 21 22" shape-rendering="geometricPrecision"></path></svg></button> <a href="https://github.com/filipsobol/sonda" target="_blank" aria-label="GitHub repository" class="flex items-center text-gray-900 bg-white border border-gray-300 focus:outline-none hover:bg-gray-100 focus:ring-1 focus:ring-blue-300 font-medium rounded-lg text-sm px-5 h-10"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-gray-900"><path d="M0 0h24v24H0z" stroke="none" shape-rendering="geometricPrecision"></path><path d="M9 19c-4.3 1.4-4.3-2.5-6-3m12 5v-3.5c0-1 .1-1.4-.5-2 2.8-.3 5.5-1.4 5.5-6a4.6 4.6 0 0 0-1.3-3.2 4.2 4.2 0 0 0-.1-3.2s-1.1-.3-3.5 1.3a12.3 12.3 0 0 0-6.2 0C6.5 2.8 5.4 3.1 5.4 3.1a4.2 4.2 0 0 0-.1 3.2A4.6 4.6 0 0 0 4 9.5c0 4.6 2.7 5.7 5.5 6-.6.6-.6 1.2-.5 2V21" shape-rendering="geometricPrecision"></path></svg></a></div>');function ti(t,e){let r=Se(e,"activeOutputIndex",15);var n=$n(),i=S(n),s=S(i);pr(s,21,()=>e.outputs,Pn,(a,f,o)=>{var l=Qn();l.value=(l.__value=o)==null?"":o;var u=S(l);C(()=>B(u,`${o+1}. ${h(f).root.name??""}`)),M(a,l)}),Jn(s,r),M(t,n)}function at(t){const r=["b","KiB","MiB","GiB","TiB","PiB"];let n=t,i=0;for(;n>1024&&r.length>i+1;)n=n/1024,i++;return`${i?n.toFixed(2):n} ${r[i]}`}function ei(t){return Object.entries(t.outputs).map(([e,r])=>{const n=new ri;return Object.entries(r.inputs).forEach(([i,s])=>n.insert(i,s)),n.root.items.push({name:"[unassigned]",path:"[unassigned]",uncompressed:r.uncompressed-n.root.uncompressed,gzip:r.gzip-n.root.gzip,brotli:r.brotli-n.root.brotli}),n.root.name=e,n.optimize(),n})}function ct(t){return"items"in t}class ri{constructor(){J(this,"root");this.root=this.createNode("","")}createNode(e,r){return{name:e,path:r,uncompressed:0,gzip:0,brotli:0,items:[]}}insert(e,r){const n=e.split("/"),i=n.pop();let s=this.root;n.forEach(a=>{let f=s.items.find(o=>ct(o)&&o.name===a);f||(f=this.createNode(a,s.path?`${s.path}/${a}`:a),s.items.push(f)),s=f,s.uncompressed+=r.uncompressed,s.gzip+=r.gzip,s.brotli+=r.brotli}),s.items.push({name:i,path:`${s.path}/${i}`,uncompressed:r.uncompressed,gzip:r.gzip,brotli:r.brotli}),this.root.uncompressed+=r.uncompressed,this.root.gzip+=r.gzip,this.root.brotli+=r.brotli}optimize(){const e=[this.root];for(;e.length;){const r=e.pop();for(;r.items.length===1&&ct(r.items[0]);){const n=r.items[0];r.name=`${r.name}/${n.name}`,r.path=n.path,r.items=n.items}r.items.sort((n,i)=>i.uncompressed-n.uncompressed),r.items.forEach(n=>ct(n)&&e.push(n))}}get(e){let r=this.root;for(;r&&r.path!==e;)r=ct(r)&&r.items.find(n=>e.startsWith(n.path))||null;return r}}var ni=V('<span class="text-gray-900"> </span> <span class="text-gray-600"> </span>',1),ii=gr('<g><rect shape-rendering="crispEdges" vector-effect="non-scaling-stroke"></rect><foreignObject class="pointer-events-none"><p xmlns="http://www.w3.org/1999/xhtml" class="p-1 size-full text-center text-xs truncate"><!></p></foreignObject><!></g>');function si(t,e){ut(e,!0);const r=20,n=6,i=22,s=k(()=>e.tile.width-n*2),a=k(()=>e.tile.height-n-i),f=k(()=>at(e.content.uncompressed)),o=k(()=>(e.content.uncompressed/e.totalBytes*100).toFixed(2)),l=k(()=>`color-mix(in oklch, #fca5a5 ${h(o)}%, #86efac)`),u=k(()=>e.tile.width>=i*1.75&&e.tile.height>=i),d=k(()=>!ct(e.content)||h(a)<=r||h(s)<=r?[]:e.content.items);var v=ii(),c=S(v);C(()=>Dn(c,`stroke-gray-500 ${(ct(e.content)?"cursor-zoom-in":"cursor-pointer")??""} svelte-ks9kyg`));var _=N(c),p=S(_),m=S(p);rt(m,()=>h(u),y=>{var g=ni(),w=Y(g),x=S(w),z=N(w,2),T=S(z);C(()=>{B(x,e.content.name),B(T,`- ${h(f)??""}`)}),M(y,g)});var b=N(_);rt(b,()=>h(d).length,y=>{var g=k(()=>e.tile.x+n),w=k(()=>e.tile.y+i);yr(y,{get content(){return h(d)},get totalBytes(){return e.totalBytes},get width(){return h(s)},get height(){return h(a)},get xStart(){return h(g)},get yStart(){return h(w)}})}),C(()=>{j(c,"data-tile",e.content.path),j(c,"data-hover",`${e.content.name} - ${h(f)} (${h(o)}%)`),j(c,"x",e.tile.x),j(c,"y",e.tile.y),j(c,"width",e.tile.width),j(c,"height",e.tile.height),j(c,"fill",h(l)),j(_,"x",e.tile.x),j(_,"y",e.tile.y),j(_,"width",e.tile.width),j(_,"height",e.tile.height)}),M(t,v),ft()}class ai{constructor(e,r,n,i=0,s=0){J(this,"sizes");J(this,"tiles");J(this,"xStart");J(this,"yStart");J(this,"widthLeft");J(this,"heightLeft");const a=e.reduce((o,l)=>o+l,0),f=n*r/a;this.sizes=new Float32Array(e.length);for(let o=0;o<e.length;o++)this.sizes[o]=e[o]*f;this.tiles=new Array,this.xStart=i,this.yStart=s,this.widthLeft=r,this.heightLeft=n}layout(e,r,n,i,s){let a=i?this.yStart:this.xStart,f;const o=this.sizes,l=this.tiles;for(let u=e;u<=r;u++)f=o[u]/n,i?l.push({x:this.xStart,y:a,width:n,height:f}):l.push({x:a,y:this.yStart,width:f,height:n}),a+=f,s++;return i?(this.xStart+=n,this.widthLeft-=n):(this.yStart+=n,this.heightLeft-=n),s}calculate(){let e=this.heightLeft<this.widthLeft,r=e?this.heightLeft:this.widthLeft,n=r*r,i=0,s=0,a=this.sizes[0],f=this.sizes[0],o=this.sizes[0],l=0,u=a*a,d=Math.max(n*o/u,u/(n*f));for(let v=1;v<this.sizes.length;v++){const c=this.sizes[v],_=a+c,p=f<c?f:c,m=o>c?o:c,b=_*_,y=Math.max(n*m/b,b/(n*p));(d<=y?1:0)?(l=this.layout(i,s,a/r,e,l),e=this.heightLeft<this.widthLeft,r=e?this.heightLeft:this.widthLeft,n=r*r,i=v,s=v,a=c,f=c,o=c,u=c*c,d=Math.max(n*o/u,u/(n*f))):(s=v,a=_,f=p,o=m,u=b,d=y)}return l=this.layout(i,s,a/r,e,l),this.tiles}}function yr(t,e){const r=k(()=>Array.isArray(e.content)?Object.values(e.content):[e.content]),n=k(()=>new ai(h(r).map(f=>f.uncompressed),e.width,e.height,e.xStart,e.yStart).calculate());var i=re(),s=Y(i);pr(s,18,()=>h(n),a=>a,(a,f,o)=>{si(a,{get tile(){return f},get content(){return h(r)[h(o)]},get totalBytes(){return e.totalBytes}})}),M(t,i)}var oi=gr('<svg xmlns="http://www.w3.org/2000/svg" role="img"><!></svg>');function xr(t,e){ut(e,!0);var r=re(),n=Y(r);Nn(n,()=>[e.content.path,e.width,e.height],i=>{var s=oi(),a=S(s),f=k(()=>e.width-1),o=k(()=>e.height-1);yr(a,{get content(){return e.content},get totalBytes(){return e.content.uncompressed},get width(){return h(f)},get height(){return h(o)},xStart:.5,yStart:.5}),C(()=>{j(s,"width",e.width),j(s,"height",e.height)}),M(i,s)}),M(t,r),ft()}const li=t=>t;function ui(t,{delay:e=0,duration:r=400,easing:n=li}={}){const i=+getComputedStyle(t).opacity;return{delay:e,duration:r,easing:n,css:s=>`opacity: ${s*i}`}}var fi=V('<div class="fixed top-0 right-0 left-0 bottom-0 flex justify-center items-center"><div class="fixed bg-gray-200/70 w-full h-full backdrop-blur-sm" aria-hidden="true"></div> <div class="bg-white relative flex flex-col rounded-lg border p-6 shadow-lg overflow-hidden max-h-[95vh] max-w-[95vw]"><div class="mb-4"><h2 class="py-2 pr-6 block align-text-bottom font-semibold leading-none tracking-tight text-base border-b-2 border-gray-300 border-dashed"> </h2> <button aria-label="Close dialog" class="absolute top-0 right-0 mt-2 mr-2 flex justify-center items-center border border-transparent rounded-full w-10 h-10 text-gray-600 hover:text-gray-900"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M0 0h24v24H0z" stroke="none"></path><path d="M18 6 6 18M6 6l12 12"></path></svg></button></div> <!></div></div>');function Er(t,e){ut(e,!0);let r=R(void 0);function n(v){e.onClose&&v.target===h(r)&&e.onClose()}var i=fi();xt("click",Q.body,n);var s=S(i);Zn(s,v=>E(r,v),()=>h(r));var a=N(s,2),f=S(a),o=S(f),l=S(o),u=N(o,2);u.__click=function(...v){var c;(c=e.onClose)==null||c.apply(this,v)};var d=N(f,2);In(d,()=>e.children),C(()=>{de(a,"w-[95vw]",e.large),de(a,"h-[95vh]",e.large),B(l,e.heading)}),Un(3,i,()=>ui,()=>({duration:150})),M(t,i),ft()}Sn(["click"]);function Gt(t,e,r){const n=t.root[r],i=window.SONDA_JSON_REPORT.outputs[t.root.name][r];return Math.round(e[r]*(i/n)*100)/100}class ci{constructor(){J(this,"depth",0);J(this,"tree",[])}process(e){const r=this.getImporters(e);if(!r.length)return;if(r.length===1)return this.addLast(`imported by ${r[0]}`),this.process(r[0]);const n=r.pop();r.forEach(i=>this.add(`imported by ${i}`)),this.addLast(`imported by ${n}`)}getImporters(e){return e?Object.entries(window.SONDA_JSON_REPORT.inputs).filter(([,r])=>r.imports.includes(e)).map(([r])=>r):[]}addLast(e){this.tree.push(" ".repeat(this.depth*4)+"└── "+e),this.depth++}add(e){this.tree.push(" ".repeat(this.depth*4)+"├── "+e)}render(e){const r=window.SONDA_JSON_REPORT.inputs[e];return r.belongsTo&&(this.tree.push(`└── part of the ${r.belongsTo} bundle`),this.depth++,e=r.belongsTo),this.process(e),this.tree.join(`
2
+ `)}}var di=V('<span>File format</span> <span class="font-bold"> </span>',1),vi=V('<span>Approx. GZIP size</span> <span class="font-bold"> </span>',1),hi=V('<span>Approx. Brotli size</span> <span class="font-bold"> </span>',1),_i=V('<p class="mt-8">This file is in the bundle, because it is:</p> <code class="mt-2 p-4 w-max leading-5 bg-slate-200 rounded overflow-auto"><pre> </pre></code>',1),gi=V('<div class="flex flex-col overflow-y-auto"><div class="grid grid-cols-[auto_1fr] gap-x-8"><!> <span>Original file size</span> <span class="font-bold"> </span> <span>Bundled size</span> <span class="font-bold"> </span> <!> <!></div> <!></div>');function pi(t,e){ut(e,!0);let r=Se(e,"file",7);const n=k(()=>r()&&window.SONDA_JSON_REPORT.inputs[r().path]),i=k(()=>Gt(e.activeOutput,r(),"gzip")),s=k(()=>Gt(e.activeOutput,r(),"brotli")),a=k(()=>{var d;if(h(n))return h(n).format.toUpperCase();const u=(d=window.SONDA_JSON_REPORT.inputs[r().path])==null?void 0:d.belongsTo;return u?window.SONDA_JSON_REPORT.inputs[u].format.toUpperCase:"UNKNOWN"}),f=k(()=>h(n)?new ci().render(r().path):null);var o=re(),l=Y(o);rt(l,r,u=>{Er(u,{get heading(){return r().path},onClose:()=>r(null),children:v=>{var c=gi(),_=S(c),p=S(_);rt(p,()=>h(a)!=="UNKNOWN",T=>{var A=di(),G=N(Y(A),2),F=S(G);C(()=>B(F,h(a))),M(T,A)});var m=N(p,4),b=S(m);C(()=>{var T;return B(b,at(((T=h(n))==null?void 0:T.bytes)||0))});var y=N(m,4),g=S(y);C(()=>B(g,at(r().uncompressed)));var w=N(y,2);rt(w,()=>r().gzip>0,T=>{var A=vi(),G=N(Y(A),2),F=S(G);C(()=>B(F,at(h(i)))),M(T,A)});var x=N(w,2);rt(x,()=>r().brotli>0,T=>{var A=hi(),G=N(Y(A),2),F=S(G);C(()=>B(F,at(h(s)))),M(T,A)});var z=N(_,2);rt(z,()=>h(f),T=>{var A=_i(),G=N(Y(A),2),F=S(G),kt=S(F);C(()=>B(kt,h(f))),M(T,A)}),M(v,c)}})}),M(t,o),ft()}var wi=V('<div class="mb-4 grid grid-cols-[auto_1fr] gap-x-8"><span>Bundled size</span> <span class="font-bold"> </span> <span>Approx. GZIP size</span> <span class="font-bold"> </span> <span>Approx. Brotli size</span> <span class="font-bold"> </span></div> <div class="flex-grow overflow-hidden"><!></div>',1);function mi(t,e){ut(e,!0);let r=Se(e,"folder",7),n=R(0),i=R(0);const s=k(()=>Gt(e.activeOutput,r(),"gzip")),a=k(()=>Gt(e.activeOutput,r(),"brotli"));var f=re(),o=Y(f);rt(o,r,l=>{Er(l,{get heading(){return r().path},onClose:()=>r(null),large:!0,children:d=>{var v=wi(),c=Y(v),_=N(S(c),2),p=S(_);C(()=>B(p,at(r().uncompressed)));var m=N(_,4),b=S(m);C(()=>B(b,at(h(s))));var y=N(m,4),g=S(y);C(()=>B(g,at(h(a))));var w=N(c,2),x=S(w);xr(x,{get content(){return r()},get width(){return h(n)},get height(){return h(i)}}),st(w,"clientWidth",z=>E(n,z)),st(w,"clientHeight",z=>E(i,z)),M(d,v)}})}),M(t,f),ft()}var bi=V('<div role="tooltip" class="fixed z-10 px-2 py-1 bg-gray-800 text-gray-100 rounded-md whitespace-nowrap pointer-events-none will-change-transform" style="transform: translate( var(--x), var(--y) )"> </div>');function yi(t,e){ut(e,!0);const r=12;let n=R(0),i=R(0),s=R(0),a=R(0),f=R(0),o=R(0),l=R(""),u=R("0px"),d=R("0px");fn(()=>{h(l)&&(E(u,(h(f)+h(n)+r>h(s)?h(f)-h(n)-r:h(f)+r)+"px"),E(d,(h(o)+h(i)+r>h(a)?h(o)-h(i):h(o)+r)+"px"))});function v({target:p,clientX:m,clientY:b}){E(l,q(p instanceof Element&&p.getAttribute("data-hover")||"")),E(f,q(m)),E(o,q(b))}var c=bi();xt("mouseover",Q.body,v),xt("mousemove",Q.body,v),xt("mouseleave",Q.body,()=>E(l,""));var _=S(c);C(()=>{de(c,"invisible",!h(l)),We(c,"--x",h(u)),We(c,"--y",h(d)),B(_,h(l))}),st(Q.body,"clientWidth",p=>E(s,q(p))),st(Q.body,"clientHeight",p=>E(a,q(p))),st(c,"clientWidth",p=>E(n,p)),st(c,"clientHeight",p=>E(i,p)),M(t,c),ft()}var xi=V('<div role="application" class="wrapper relative flex flex-col overflow-hidden h-screen w-screen"><!> <div class="flex-grow overflow-hidden"><!></div></div> <!> <!> <!>',1);function Ei(t,e){ut(e,!0);const r=ei(window.SONDA_JSON_REPORT);let n=R(0),i=R(0),s=R(null),a=R(null),f=R(0);const o=k(()=>r[h(f)]);function l({target:g}){const w=g instanceof Element&&g.getAttribute("data-tile");if(!w)return;const x=h(o).get(w);if(x)return ct(x)?E(s,q(x)):E(a,q(x))}function u(g){if(g.key==="Escape"){if(g.stopPropagation(),h(a))return E(a,null);if(h(s))return E(s,null)}}var d=xi();xt("click",Q.body,l),xt("keydown",Q.body,u);var v=Y(d),c=S(v);ti(c,{get activeOutputIndex(){return h(f)},set activeOutputIndex(g){E(f,q(g))},outputs:r});var _=N(c,2),p=S(_);xr(p,{get content(){return h(o).root},get width(){return h(n)},get height(){return h(i)}});var m=N(v,2);mi(m,{get folder(){return h(s)},get activeOutput(){return h(o)}});var b=N(m,2);pi(b,{get file(){return h(a)},get activeOutput(){return h(o)}});var y=N(b,2);yi(y,{}),st(_,"clientWidth",g=>E(n,g)),st(_,"clientHeight",g=>E(i,g)),M(t,d),ft()}kn(Ei,{target:document.getElementById("app")});</script><style rel="stylesheet" crossorigin>rect.svelte-ks9kyg:hover{filter:brightness(1.15)}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / .5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246 / .5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.bottom-0{bottom:0}.left-0{left:0}.right-0{right:0}.top-0{top:0}.z-10{z-index:10}.mb-4{margin-bottom:1rem}.mr-2{margin-right:.5rem}.mt-2{margin-top:.5rem}.mt-8{margin-top:2rem}.block{display:block}.flex{display:flex}.grid{display:grid}.size-full{width:100%;height:100%}.h-10{height:2.5rem}.h-16{height:4rem}.h-\[95vh\]{height:95vh}.h-full{height:100%}.h-screen{height:100vh}.max-h-\[95vh\]{max-height:95vh}.min-h-screen{min-height:100vh}.w-10{width:2.5rem}.w-\[95vw\]{width:95vw}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-screen{width:100vw}.min-w-80{min-width:20rem}.max-w-\[95vw\]{max-width:95vw}.max-w-sm{max-width:24rem}.flex-grow{flex-grow:1}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-pointer{cursor:pointer}.cursor-zoom-in{cursor:zoom-in}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.gap-x-8{-moz-column-gap:2rem;column-gap:2rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-b-2{border-bottom-width:2px}.border-dashed{border-style:dashed}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.border-transparent{border-color:transparent}.bg-gray-200\/70{background-color:#e5e7ebb3}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}.bg-slate-200{--tw-bg-opacity:1;background-color:rgb(226 232 240 / var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.stroke-gray-500{stroke:#6b7280}.p-1{padding:.25rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pr-6{padding-right:1.5rem}.text-center{text-align:center}.align-text-bottom{vertical-align:text-bottom}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-base{font-size:1rem;line-height:1.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.leading-5{line-height:1.25rem}.leading-none{line-height:1}.tracking-tight{letter-spacing:-.025em}.text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246 / var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99 / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity))}.shadow-lg{--tw-shadow:0 10px 15px -3px rgb(0 0 0 / .1),0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.will-change-transform{will-change:transform}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.hover\:text-gray-900:hover{--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-blue-300:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(147 197 253 / var(--tw-ring-opacity))}</style></head><body class="flex w-screen h-screen font-mono"><div id="app" class="flex w-screen min-h-screen"></div></body></html>
package/dist/index.js CHANGED
@@ -1,5 +1,4 @@
1
1
  import { relative, sep, posix, join, dirname, isAbsolute, resolve } from 'path';
2
- import { execFileSync } from 'child_process';
3
2
  import { existsSync, readFileSync, writeFileSync } from 'fs';
4
3
  import { fileURLToPath } from 'url';
5
4
  import remapping from '@ampproject/remapping';
@@ -21,21 +20,6 @@ function normalizePath(path) {
21
20
  // Ensure paths are POSIX-compliant - https://stackoverflow.com/a/63251716/4617687
22
21
  return relativized.replaceAll(sep, posix.sep);
23
22
  }
24
- function getOpenCommand() {
25
- switch(process.platform){
26
- case 'darwin':
27
- return 'open';
28
- case 'win32':
29
- return 'start';
30
- default:
31
- return 'xdg-open';
32
- }
33
- }
34
- function open(path) {
35
- execFileSync(getOpenCommand(), [
36
- path
37
- ]);
38
- }
39
23
 
40
24
  /**
41
25
  * Strip any JSON XSSI avoidance prefix from the string (as documented in the source maps specification),
@@ -223,7 +207,8 @@ function hasCodeAndMap(result) {
223
207
  return Boolean(result && result.code && result.map);
224
208
  }
225
209
 
226
- function generateReportFromAssets(assets, inputs, options) {
210
+ async function generateReportFromAssets(assets, inputs, options) {
211
+ const { default: open } = await import('open');
227
212
  const handler = options.format === 'html' ? saveHtml : saveJson;
228
213
  const path = handler(assets, inputs);
229
214
  options.open && path && open(path);
@@ -259,7 +244,7 @@ function SondaEsbuildPlugin(options) {
259
244
  };
260
245
  return acc;
261
246
  }, {});
262
- generateReportFromAssets(Object.keys(result.metafile.outputs), inputs, normalizeOptions(options));
247
+ return generateReportFromAssets(Object.keys(result.metafile.outputs), inputs, normalizeOptions(options));
263
248
  });
264
249
  }
265
250
  };
@@ -325,8 +310,7 @@ class SondaWebpackPlugin {
325
310
  compiler.hooks.emit.tapAsync('SondaWebpackPlugin', (compilation, callback)=>{
326
311
  const outputPath = compiler.options.output.path || compiler.outputPath || process.cwd();
327
312
  const assets = Object.keys(compilation.assets).map((name)=>join(outputPath, name));
328
- generateReportFromAssets(assets, this.inputs, normalizeOptions(this.options));
329
- callback();
313
+ generateReportFromAssets(assets, this.inputs, normalizeOptions(this.options)).then(()=>callback());
330
314
  });
331
315
  }
332
316
  constructor(options){
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/utils.ts","../src/sourcemap/load.ts","../src/sourcemap/map.ts","../src/sourcemap/bytes.ts","../src/report.ts","../src/report/generate.ts","../src/bundlers/esbuild.ts","../src/bundlers/rollup.ts","../src/bundlers/webpack.ts"],"sourcesContent":["import { relative, posix, sep } from 'path';\nimport { execFileSync } from 'child_process';\nimport type { Options } from './types';\n\nconst cwd = /* #__ PURE__ */ process.cwd();\n\nexport function normalizeOptions( options?: Partial<Options> ) {\n\tconst defaultOptions: Options = {\n\t\topen: true,\n\t\tformat: 'html',\n\t};\n\n\treturn Object.assign( {}, defaultOptions, options ) as Options;\n}\n\nexport function normalizePath( path: string ): string {\n\t// Unicode escape sequences used by Rollup and Vite to identify virtual modules\n\tconst normalized = path.replace( /^\\0/, '' )\n\n\t// Transform absolute paths to relative paths\n\tconst relativized = relative( cwd, normalized );\n\n\t// Ensure paths are POSIX-compliant - https://stackoverflow.com/a/63251716/4617687\n\treturn relativized.replaceAll( sep, posix.sep );\n}\n\nfunction getOpenCommand() {\n\tswitch ( process.platform ) {\n\t\tcase 'darwin': return 'open';\n\t\tcase 'win32': return 'start';\n\t\tdefault: return 'xdg-open';\n\t}\n}\n\nexport function open( path: string ): void {\n\texecFileSync( getOpenCommand(), [ path ] )\n}\n","import { existsSync, readFileSync } from 'fs';\nimport { dirname, join, resolve, isAbsolute } from 'path';\nimport type { MaybeCodeMap } from '../types.js';\nimport type { EncodedSourceMap } from '@ampproject/remapping';\n\n/**\n * Strip any JSON XSSI avoidance prefix from the string (as documented in the source maps specification),\n * and parses the string as JSON.\n *\n * https://github.com/mozilla/source-map/blob/3cb92cc3b73bfab27c146bae4ef2bc09dbb4e5ed/lib/util.js#L162-L164\n */\nfunction parseSourceMapInput( str: string ): EncodedSourceMap {\n\treturn JSON.parse( str.replace( /^\\)]}'[^\\n]*\\n/, \"\" ) );\n}\n\n/**\n\tsourceMappingURL=data:application/json;charset=utf-8;base64,data\n \tsourceMappingURL=data:application/json;base64,data\n\tsourceMappingURL=data:application/json;uri,data\n\tsourceMappingURL=map-file-comment.css.map\n*/\nconst sourceMappingRegExp = /[@#]\\s*sourceMappingURL=(\\S+)\\b/g;\n\nexport function loadCodeAndMap( codePath: string ): MaybeCodeMap {\n\tif ( !existsSync( codePath ) ) {\n\t\treturn null;\n\t}\n\n\tconst code = readFileSync( codePath, 'utf-8' );\n\n\tconst extractedComment = code.includes( 'sourceMappingURL' ) && Array.from( code.matchAll( sourceMappingRegExp ) ).at( -1 );\n\n\tif ( !extractedComment || !extractedComment.length ) {\n\t\treturn { code };\n\t}\n\n\tconst maybeMap = loadMap( codePath, extractedComment[ 1 ] );\n\n\tif ( !maybeMap ) {\n\t\treturn { code };\n\t}\n\n\tconst { map, mapPath } = maybeMap;\n\n\tmap.sources = normalizeSourcesPaths( map, mapPath );\n\tdelete map.sourceRoot;\n\n\treturn {\n\t\tcode,\n\t\tmap\n\t};\n}\n\nfunction loadMap( codePath: string, sourceMappingURL: string ): { map: EncodedSourceMap; mapPath: string } | null {\n\tif ( sourceMappingURL.startsWith( 'data:' ) ) {\n\t\tconst map = parseDataUrl( sourceMappingURL );\n\n\t\treturn {\n\t\t\tmap: parseSourceMapInput( map ),\n\t\t\tmapPath: codePath\n\t\t};\n\t}\n\n\tconst mapPath = join( codePath, '..', sourceMappingURL );\n\n\tif ( !existsSync( mapPath ) ) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\tmap: parseSourceMapInput( readFileSync( mapPath, 'utf-8' ) ),\n\t\tmapPath\n\t};\n}\n\nfunction parseDataUrl( url: string ): string {\n\tconst [ prefix, payload ] = url.split( ',' );\n\tconst encoding = prefix.split( ';' ).at( -1 );\n\n\tswitch ( encoding ) {\n\t\tcase 'base64':\n\t\t\treturn Buffer.from( payload, 'base64' ).toString();\n\t\tcase 'uri':\n\t\t\treturn decodeURIComponent( payload );\n\t\tdefault:\n\t\t\tthrow new Error( 'Unsupported source map encoding: ' + encoding );\n\t}\n}\n\nfunction normalizeSourcesPaths( map: EncodedSourceMap, mapPath: string ): EncodedSourceMap[ 'sources' ] {\n\tconst mapDir = dirname( mapPath );\n\n\treturn map.sources.map( source => {\n\t\tif ( !source ) {\n\t\t\treturn source;\n\t\t}\n\n\t\treturn isAbsolute( source )\n\t\t\t? source\n\t\t\t: resolve( mapDir, map.sourceRoot ?? '.', source );\n\t} );\n}\n","import { default as remapping, type DecodedSourceMap, type EncodedSourceMap } from '@ampproject/remapping';\nimport { loadCodeAndMap } from './load';\nimport { resolve } from 'path';\nimport type { ReportInput } from '../types';\nimport { normalizePath } from '../utils';\n\nexport function mapSourceMap(\n\tmap: EncodedSourceMap,\n\tdirPath: string,\n\tinputs: Record<string, ReportInput>\n): DecodedSourceMap {\n\tconst alreadyRemapped = new Set<string>();\n\tconst remapped = remapping( map, ( file, ctx ) => {\n\t\tif ( alreadyRemapped.has( file ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\talreadyRemapped.add( file );\n\n\t\tconst codeMap = loadCodeAndMap( resolve( dirPath, file ) );\n\n\t\tif ( !codeMap ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst parentPath = normalizePath( file );\n\t\tconst { format } = inputs[ parentPath ];\n\n\t\tcodeMap.map?.sources\n\t\t\t.filter( source => source !== null )\n\t\t\t.forEach( ( source, index ) => {\n\t\t\t\tconst normalizedPath = normalizePath( source );\n\n\t\t\t\tif ( parentPath === normalizedPath ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tinputs[ normalizedPath ] = {\n\t\t\t\t\tbytes: Buffer.byteLength( codeMap.map!.sourcesContent?.[ index ] ?? '' ),\n\t\t\t\t\tformat,\n\t\t\t\t\timports: [],\n\t\t\t\t\tbelongsTo: parentPath\n\t\t\t\t};\n\t\t\t} );\n\n\t\tctx.content ??= codeMap.code;\n\n\t\treturn codeMap.map;\n\t}, { decodedMappings: true } );\n\n\treturn remapped as DecodedSourceMap;\n}\n","import { gzipSync, brotliCompressSync } from 'zlib';\nimport type { DecodedSourceMap } from '@ampproject/remapping';\nimport type { Sizes } from '../types';\n\nexport function getBytesPerSource( code: string, map: DecodedSourceMap ): Map<string, Sizes> {\n\tconst contributions = new Array( map.sources.length ).fill( '' );\n\n\t// Split the source code by lines\n\tconst codeLines = code.split( /(?<=\\r?\\n)/ );\n\n\tfor ( let lineIndex = 0; lineIndex < map.mappings.length; lineIndex++ ) {\n\t\tconst line = map.mappings[ lineIndex ];\n\t\tconst lineCode = codeLines[ lineIndex ];\n\n\t\tfor ( let mappingIndex = 0; mappingIndex < line.length; mappingIndex++ ) {\n\t\t\t// 0: generatedColumn\n\t\t\t// 1: fileIndex\n\t\t\t// 2: originalLine\n\t\t\t// 3: originalColumn\n\t\t\t// 4: nameIndex\n\n\t\t\tconst [ startColumn, fileIndex ] = line[ mappingIndex ];\n\t\t\tconst endColumn = line[ mappingIndex + 1 ]?.[ 0 ] ?? lineCode.length;\n\n\t\t\tcontributions[ fileIndex! ] += lineCode.slice( startColumn, endColumn );\n\t\t}\n\t}\n\n\treturn new Map<string, Sizes>( \n\t\tcontributions.map( ( code, index ) => [ map.sources[ index ]!, getSizes( code ) ] )\n\t);\n}\n\nexport function getSizes( code: string ): Sizes {\n\treturn {\n\t\tuncompressed: Buffer.byteLength( code ),\n\t\tgzip: gzipSync( code ).length,\n\t\tbrotli: brotliCompressSync( code ).length\n\t};\n}\n","import { dirname, resolve } from 'path';\nimport { fileURLToPath } from 'url';\nimport { readFileSync } from 'fs';\nimport { mapSourceMap } from './sourcemap/map.js';\nimport { getBytesPerSource, getSizes } from './sourcemap/bytes.js';\nimport { loadCodeAndMap } from './sourcemap/load.js';\nimport type {\n JsonReport,\n MaybeCodeMap,\n ReportInput,\n ReportOutput,\n CodeMap,\n ReportOutputInput\n} from './types.js';\nimport { normalizePath } from './utils.js';\n\nexport function generateJsonReport(\n assets: Array<string>,\n inputs: Record<string, ReportInput>\n): JsonReport {\n const outputsEntries = assets\n .filter( asset => !asset.endsWith( '.map' ) )\n .map( asset => processAsset( asset, inputs ) )\n .filter( output => !!output );\n\n return {\n inputs,\n outputs: Object.fromEntries( outputsEntries )\n };\n}\n\nexport function generateHtmlReport(\n assets: Array<string>,\n inputs: Record<string, ReportInput>\n): string {\n const json = generateJsonReport( assets, inputs );\n const __dirname = dirname( fileURLToPath( import.meta.url ) );\n const template = readFileSync( resolve( __dirname, './index.html' ), 'utf-8' );\n\n return template.replace( '__REPORT_DATA__', JSON.stringify( json ) );\n}\n\nfunction processAsset( asset: string, inputs: Record<string, ReportInput> ): [ string, ReportOutput ] | void {\n const maybeCodeMap = loadCodeAndMap( asset );\n\n if ( !hasCodeAndMap( maybeCodeMap ) ) {\n return;\n }\n\n const { code, map } = maybeCodeMap;\n const mapped = mapSourceMap( map, dirname( asset ), inputs );\n\n mapped.sources = mapped.sources.map( source => normalizePath( source! ) );\n\n const bytes = getBytesPerSource( code, mapped );\n\n return [ normalizePath( asset ), {\n ...getSizes( code ),\n inputs: mapped.sources.reduce( ( acc, source ) => {\n if ( source ) {\n acc[ normalizePath( source ) ] = bytes.get( source ) ?? {\n uncompressed: 0,\n gzip: 0,\n brotli: 0\n };\n }\n\n return acc;\n }, {} as Record<string, ReportOutputInput> )\n } ];\n}\n\nfunction hasCodeAndMap( result: MaybeCodeMap ): result is Required<CodeMap> {\n return Boolean( result && result.code && result.map );\n}\n","import { join } from 'path';\nimport { writeFileSync } from 'fs';\nimport { open } from '../utils.js';\nimport { generateHtmlReport, generateJsonReport } from '../report.js';\nimport type { Options, JsonReport } from '../types.js';\n\nexport function generateReportFromAssets(\n\tassets: string[],\n\tinputs: JsonReport[ 'inputs' ],\n\toptions: Options\n): void {\n\tconst handler = options.format === 'html'\n\t\t? saveHtml\n\t\t: saveJson;\n\n\tconst path = handler( assets, inputs );\n\n\toptions.open && path && open( path );\n}\n\nfunction saveHtml(\n\tassets: string[],\n\tinputs: JsonReport[ 'inputs' ]\n): string | null {\n\tconst report = generateHtmlReport( assets, inputs );\n\tconst path = join( process.cwd(), 'sonda-report.html' );\n\n\twriteFileSync( path, report );\n\n\treturn path;\n}\n\nfunction saveJson(\n\tassets: string[],\n\tinputs: JsonReport[ 'inputs' ]\n): string | null {\n\tconst report = generateJsonReport( assets, inputs );\n\tconst path = join( process.cwd(), 'sonda-report.json' );\n\n\twriteFileSync( path, JSON.stringify( report, null, 2 ) );\n\n\treturn path;\n}\n","import { normalizeOptions } from '../utils';\nimport { generateReportFromAssets } from '../report/generate';\nimport type { Plugin } from 'esbuild';\nimport type { Options, JsonReport } from '../types';\n\nexport function SondaEsbuildPlugin( options?: Partial<Options> ): Plugin {\n\treturn {\n\t\tname: 'sonda',\n\t\tsetup( build ) {\n\t\t\tbuild.initialOptions.metafile = true;\n\n\t\t\tbuild.onEnd( result => {\n\t\t\t\tif ( !result.metafile ) {\n\t\t\t\t\treturn console.error( 'Metafile is required for SondaEsbuildPlugin to work.' );\n\t\t\t\t}\n\n\t\t\t\tconst inputs = Object\n\t\t\t\t\t.entries( result.metafile.inputs )\n\t\t\t\t\t.reduce( ( acc, [ path, data ] ) => {\n\t\t\t\t\t\t\n\t\t\t\t\t\tacc[ path ] = {\n\t\t\t\t\t\t\tbytes: data.bytes,\n\t\t\t\t\t\t\tformat: data.format ?? 'unknown',\n\t\t\t\t\t\t\timports: data.imports.map( data => data.path ),\n\t\t\t\t\t\t\tbelongsTo: null,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\treturn acc;\n\t\t\t\t\t}, {} as JsonReport[ 'inputs' ] );\n\n\t\t\t\tgenerateReportFromAssets(\n\t\t\t\t\tObject.keys( result.metafile.outputs ),\n\t\t\t\t\tinputs,\n\t\t\t\t\tnormalizeOptions( options )\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\t};\n}\n","import { join, resolve, dirname } from 'path';\nimport { normalizeOptions, normalizePath } from '../utils.js';\nimport { generateReportFromAssets } from '../report/generate.js';\nimport type { Options, ModuleFormat, JsonReport } from '../types.js';\nimport type { Plugin, ModuleInfo, NormalizedOutputOptions, OutputBundle } from 'rollup';\n\nconst esmRegex = /* #__ PURE__ */ /\\.m[tj]sx?$/;\nconst cjsRegex = /* #__ PURE__ */ /\\.c[tj]sx?$/;\n\nexport function SondaRollupPlugin( options?: Partial<Options> ): Plugin {\n\tlet inputs: JsonReport[ 'inputs' ] = {};\n\n\treturn {\n\t\tname: 'sonda',\n\n\t\twriteBundle(\n\t\t\t{ dir, file }: NormalizedOutputOptions,\n\t\t\tbundle: OutputBundle\n\t\t) {\n\t\t\tconst outputDir = resolve( process.cwd(), dir ?? dirname( file! ) );\n\t\t\tconst assets = Object.keys( bundle ).map( name => join( outputDir, name ) );\n\n\t\t\treturn generateReportFromAssets(\n\t\t\t\tassets,\n\t\t\t\tinputs,\n\t\t\t\tnormalizeOptions( options )\n\t\t\t);\n\t\t},\n\n\t\tmoduleParsed( module: ModuleInfo ) {\n\t\t\tinputs[ normalizePath( module.id ) ] = {\n\t\t\t\tbytes: module.code ? Buffer.byteLength( module.code ) : 0,\n\t\t\t\tformat: getFormat( module.id, module.meta.commonjs?.isCommonJS ),\n\t\t\t\timports: module.importedIds.map( id => normalizePath( id ) ),\n\t\t\t\tbelongsTo: null,\n\t\t\t};\n\t\t}\n\t};\n}\n\nfunction getFormat( moduleId: string, isCommonJS: boolean | undefined ): ModuleFormat {\n\tif ( isCommonJS === true || cjsRegex.test( moduleId ) ) {\n\t\treturn 'cjs';\n\t}\n\n\tif ( isCommonJS === false || esmRegex.test( moduleId ) ) {\n\t\treturn 'esm';\n\t}\n\n\treturn'unknown';\n}\n","import { join } from 'path';\nimport { normalizeOptions, normalizePath } from '../utils';\nimport { generateReportFromAssets } from '../report/generate';\nimport type { Options, ModuleFormat, JsonReport } from '../types';\nimport { NormalModule, type Compiler, type Module } from 'webpack';\n\nconst jsRegexp = /* #__PURE__ */ /\\.[c|m]?[t|j]s[x]?$/;\n\nexport class SondaWebpackPlugin {\n\toptions: Partial<Options>;\n\tinputs: JsonReport[ 'inputs' ];\n\n\tconstructor ( options?: Partial<Options> ) {\n\t\tthis.options = options || {};\n\t\tthis.inputs = {};\n\t}\n\n\tapply( compiler: Compiler ): void {\n\t\tcompiler.options.output.devtoolModuleFilenameTemplate = '[absolute-resource-path]';\n\n\t\tcompiler.hooks.compilation.tap( 'SondaWebpackPlugin', ( compilation ) => {\n\t\t\tcompilation.hooks.optimizeModules.tap( 'SondaWebpackPlugin', ( modules ) => {\n\t\t\t\tArray\n\t\t\t\t\t.from( modules )\n\t\t\t\t\t.forEach( module => {\n\t\t\t\t\t\tif ( !isNormalModule( module ) ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst imports = module.dependencies.reduce( ( acc, dependency ) => {\n\t\t\t\t\t\t\tconst module = compilation.moduleGraph.getModule( dependency );\n\n\t\t\t\t\t\t\tif ( isNormalModule( module ) ) {\n\t\t\t\t\t\t\t\tacc.push( normalizePath( module.resource ) );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn acc;\n\t\t\t\t\t\t}, [] as Array<string> );\n\n\t\t\t\t\t\tthis.inputs[ normalizePath( module.resource ) ] = {\n\t\t\t\t\t\t\tbytes: module.size(),\n\t\t\t\t\t\t\tformat: getFormat( module ),\n\t\t\t\t\t\t\timports,\n\t\t\t\t\t\t\tbelongsTo: null,\n\t\t\t\t\t\t};\n\t\t\t\t\t} );\n\t\t\t} );\n\t\t} );\n\n\t\tcompiler.hooks.emit.tapAsync( 'SondaWebpackPlugin', ( compilation, callback ) => {\n\t\t\tconst outputPath = compiler.options.output.path || compiler.outputPath || process.cwd();\n\t\t\tconst assets = Object.keys( compilation.assets ).map( name => join( outputPath, name ) );\n\n\t\t\tgenerateReportFromAssets(\n\t\t\t\tassets,\n\t\t\t\tthis.inputs,\n\t\t\t\tnormalizeOptions( this.options )\n\t\t\t);\n\n\t\t\tcallback();\n\t\t} );\n\t}\n}\n\nfunction getFormat( module: NormalModule ): ModuleFormat {\n\tif ( !jsRegexp.test( module.resource ) ) {\n\t\treturn 'unknown';\n\t}\n\n\tif ( module.type === 'javascript/esm' || module.buildMeta?.exportsType === 'namespace' ) {\n\t\treturn 'esm';\n\t}\n\n\treturn 'cjs';\n}\n\nfunction isNormalModule( module: Module | NormalModule | null ): module is NormalModule {\n\treturn module !== null && 'resource' in module;\n}\n"],"names":["cwd","process","normalizeOptions","options","defaultOptions","open","format","Object","assign","normalizePath","path","normalized","replace","relativized","relative","replaceAll","sep","posix","getOpenCommand","platform","execFileSync","parseSourceMapInput","str","JSON","parse","sourceMappingRegExp","loadCodeAndMap","codePath","existsSync","code","readFileSync","extractedComment","includes","Array","from","matchAll","at","length","maybeMap","loadMap","map","mapPath","sources","normalizeSourcesPaths","sourceRoot","sourceMappingURL","startsWith","parseDataUrl","join","url","prefix","payload","split","encoding","Buffer","toString","decodeURIComponent","Error","mapDir","dirname","source","isAbsolute","resolve","mapSourceMap","dirPath","inputs","alreadyRemapped","Set","remapped","remapping","file","ctx","has","add","codeMap","parentPath","filter","forEach","index","normalizedPath","bytes","byteLength","sourcesContent","imports","belongsTo","content","decodedMappings","getBytesPerSource","contributions","fill","codeLines","lineIndex","mappings","line","lineCode","mappingIndex","startColumn","fileIndex","endColumn","slice","Map","getSizes","uncompressed","gzip","gzipSync","brotli","brotliCompressSync","generateJsonReport","assets","outputsEntries","asset","endsWith","processAsset","output","outputs","fromEntries","generateHtmlReport","json","__dirname","fileURLToPath","template","stringify","maybeCodeMap","hasCodeAndMap","mapped","reduce","acc","get","result","Boolean","generateReportFromAssets","handler","saveHtml","saveJson","report","writeFileSync","SondaEsbuildPlugin","name","setup","build","initialOptions","metafile","onEnd","console","error","entries","data","keys","esmRegex","cjsRegex","SondaRollupPlugin","writeBundle","dir","bundle","outputDir","moduleParsed","module","id","getFormat","meta","commonjs","isCommonJS","importedIds","moduleId","test","jsRegexp","SondaWebpackPlugin","apply","compiler","devtoolModuleFilenameTemplate","hooks","compilation","tap","optimizeModules","modules","isNormalModule","dependencies","dependency","moduleGraph","getModule","push","resource","size","emit","tapAsync","callback","outputPath","constructor","type","buildMeta","exportsType"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/utils.ts","../src/sourcemap/load.ts","../src/sourcemap/map.ts","../src/sourcemap/bytes.ts","../src/report.ts","../src/report/generate.ts","../src/bundlers/esbuild.ts","../src/bundlers/rollup.ts","../src/bundlers/webpack.ts"],"sourcesContent":["import { relative, posix, sep } from 'path';\nimport type { Options } from './types';\n\nconst cwd = /* #__ PURE__ */ process.cwd();\n\nexport function normalizeOptions( options?: Partial<Options> ) {\n\tconst defaultOptions: Options = {\n\t\topen: true,\n\t\tformat: 'html',\n\t};\n\n\treturn Object.assign( {}, defaultOptions, options ) as Options;\n}\n\nexport function normalizePath( path: string ): string {\n\t// Unicode escape sequences used by Rollup and Vite to identify virtual modules\n\tconst normalized = path.replace( /^\\0/, '' )\n\n\t// Transform absolute paths to relative paths\n\tconst relativized = relative( cwd, normalized );\n\n\t// Ensure paths are POSIX-compliant - https://stackoverflow.com/a/63251716/4617687\n\treturn relativized.replaceAll( sep, posix.sep );\n}\n","import { existsSync, readFileSync } from 'fs';\nimport { dirname, join, resolve, isAbsolute } from 'path';\nimport type { MaybeCodeMap } from '../types.js';\nimport type { EncodedSourceMap } from '@ampproject/remapping';\n\n/**\n * Strip any JSON XSSI avoidance prefix from the string (as documented in the source maps specification),\n * and parses the string as JSON.\n *\n * https://github.com/mozilla/source-map/blob/3cb92cc3b73bfab27c146bae4ef2bc09dbb4e5ed/lib/util.js#L162-L164\n */\nfunction parseSourceMapInput( str: string ): EncodedSourceMap {\n\treturn JSON.parse( str.replace( /^\\)]}'[^\\n]*\\n/, \"\" ) );\n}\n\n/**\n\tsourceMappingURL=data:application/json;charset=utf-8;base64,data\n \tsourceMappingURL=data:application/json;base64,data\n\tsourceMappingURL=data:application/json;uri,data\n\tsourceMappingURL=map-file-comment.css.map\n*/\nconst sourceMappingRegExp = /[@#]\\s*sourceMappingURL=(\\S+)\\b/g;\n\nexport function loadCodeAndMap( codePath: string ): MaybeCodeMap {\n\tif ( !existsSync( codePath ) ) {\n\t\treturn null;\n\t}\n\n\tconst code = readFileSync( codePath, 'utf-8' );\n\n\tconst extractedComment = code.includes( 'sourceMappingURL' ) && Array.from( code.matchAll( sourceMappingRegExp ) ).at( -1 );\n\n\tif ( !extractedComment || !extractedComment.length ) {\n\t\treturn { code };\n\t}\n\n\tconst maybeMap = loadMap( codePath, extractedComment[ 1 ] );\n\n\tif ( !maybeMap ) {\n\t\treturn { code };\n\t}\n\n\tconst { map, mapPath } = maybeMap;\n\n\tmap.sources = normalizeSourcesPaths( map, mapPath );\n\tdelete map.sourceRoot;\n\n\treturn {\n\t\tcode,\n\t\tmap\n\t};\n}\n\nfunction loadMap( codePath: string, sourceMappingURL: string ): { map: EncodedSourceMap; mapPath: string } | null {\n\tif ( sourceMappingURL.startsWith( 'data:' ) ) {\n\t\tconst map = parseDataUrl( sourceMappingURL );\n\n\t\treturn {\n\t\t\tmap: parseSourceMapInput( map ),\n\t\t\tmapPath: codePath\n\t\t};\n\t}\n\n\tconst mapPath = join( codePath, '..', sourceMappingURL );\n\n\tif ( !existsSync( mapPath ) ) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\tmap: parseSourceMapInput( readFileSync( mapPath, 'utf-8' ) ),\n\t\tmapPath\n\t};\n}\n\nfunction parseDataUrl( url: string ): string {\n\tconst [ prefix, payload ] = url.split( ',' );\n\tconst encoding = prefix.split( ';' ).at( -1 );\n\n\tswitch ( encoding ) {\n\t\tcase 'base64':\n\t\t\treturn Buffer.from( payload, 'base64' ).toString();\n\t\tcase 'uri':\n\t\t\treturn decodeURIComponent( payload );\n\t\tdefault:\n\t\t\tthrow new Error( 'Unsupported source map encoding: ' + encoding );\n\t}\n}\n\nfunction normalizeSourcesPaths( map: EncodedSourceMap, mapPath: string ): EncodedSourceMap[ 'sources' ] {\n\tconst mapDir = dirname( mapPath );\n\n\treturn map.sources.map( source => {\n\t\tif ( !source ) {\n\t\t\treturn source;\n\t\t}\n\n\t\treturn isAbsolute( source )\n\t\t\t? source\n\t\t\t: resolve( mapDir, map.sourceRoot ?? '.', source );\n\t} );\n}\n","import { default as remapping, type DecodedSourceMap, type EncodedSourceMap } from '@ampproject/remapping';\nimport { loadCodeAndMap } from './load';\nimport { resolve } from 'path';\nimport type { ReportInput } from '../types';\nimport { normalizePath } from '../utils';\n\nexport function mapSourceMap(\n\tmap: EncodedSourceMap,\n\tdirPath: string,\n\tinputs: Record<string, ReportInput>\n): DecodedSourceMap {\n\tconst alreadyRemapped = new Set<string>();\n\tconst remapped = remapping( map, ( file, ctx ) => {\n\t\tif ( alreadyRemapped.has( file ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\talreadyRemapped.add( file );\n\n\t\tconst codeMap = loadCodeAndMap( resolve( dirPath, file ) );\n\n\t\tif ( !codeMap ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst parentPath = normalizePath( file );\n\t\tconst { format } = inputs[ parentPath ];\n\n\t\tcodeMap.map?.sources\n\t\t\t.filter( source => source !== null )\n\t\t\t.forEach( ( source, index ) => {\n\t\t\t\tconst normalizedPath = normalizePath( source );\n\n\t\t\t\tif ( parentPath === normalizedPath ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tinputs[ normalizedPath ] = {\n\t\t\t\t\tbytes: Buffer.byteLength( codeMap.map!.sourcesContent?.[ index ] ?? '' ),\n\t\t\t\t\tformat,\n\t\t\t\t\timports: [],\n\t\t\t\t\tbelongsTo: parentPath\n\t\t\t\t};\n\t\t\t} );\n\n\t\tctx.content ??= codeMap.code;\n\n\t\treturn codeMap.map;\n\t}, { decodedMappings: true } );\n\n\treturn remapped as DecodedSourceMap;\n}\n","import { gzipSync, brotliCompressSync } from 'zlib';\nimport type { DecodedSourceMap } from '@ampproject/remapping';\nimport type { Sizes } from '../types';\n\nexport function getBytesPerSource( code: string, map: DecodedSourceMap ): Map<string, Sizes> {\n\tconst contributions = new Array( map.sources.length ).fill( '' );\n\n\t// Split the source code by lines\n\tconst codeLines = code.split( /(?<=\\r?\\n)/ );\n\n\tfor ( let lineIndex = 0; lineIndex < map.mappings.length; lineIndex++ ) {\n\t\tconst line = map.mappings[ lineIndex ];\n\t\tconst lineCode = codeLines[ lineIndex ];\n\n\t\tfor ( let mappingIndex = 0; mappingIndex < line.length; mappingIndex++ ) {\n\t\t\t// 0: generatedColumn\n\t\t\t// 1: fileIndex\n\t\t\t// 2: originalLine\n\t\t\t// 3: originalColumn\n\t\t\t// 4: nameIndex\n\n\t\t\tconst [ startColumn, fileIndex ] = line[ mappingIndex ];\n\t\t\tconst endColumn = line[ mappingIndex + 1 ]?.[ 0 ] ?? lineCode.length;\n\n\t\t\tcontributions[ fileIndex! ] += lineCode.slice( startColumn, endColumn );\n\t\t}\n\t}\n\n\treturn new Map<string, Sizes>( \n\t\tcontributions.map( ( code, index ) => [ map.sources[ index ]!, getSizes( code ) ] )\n\t);\n}\n\nexport function getSizes( code: string ): Sizes {\n\treturn {\n\t\tuncompressed: Buffer.byteLength( code ),\n\t\tgzip: gzipSync( code ).length,\n\t\tbrotli: brotliCompressSync( code ).length\n\t};\n}\n","import { dirname, resolve } from 'path';\nimport { fileURLToPath } from 'url';\nimport { readFileSync } from 'fs';\nimport { mapSourceMap } from './sourcemap/map.js';\nimport { getBytesPerSource, getSizes } from './sourcemap/bytes.js';\nimport { loadCodeAndMap } from './sourcemap/load.js';\nimport type {\n JsonReport,\n MaybeCodeMap,\n ReportInput,\n ReportOutput,\n CodeMap,\n ReportOutputInput\n} from './types.js';\nimport { normalizePath } from './utils.js';\n\nexport function generateJsonReport(\n assets: Array<string>,\n inputs: Record<string, ReportInput>\n): JsonReport {\n const outputsEntries = assets\n .filter( asset => !asset.endsWith( '.map' ) )\n .map( asset => processAsset( asset, inputs ) )\n .filter( output => !!output );\n\n return {\n inputs,\n outputs: Object.fromEntries( outputsEntries )\n };\n}\n\nexport function generateHtmlReport(\n assets: Array<string>,\n inputs: Record<string, ReportInput>\n): string {\n const json = generateJsonReport( assets, inputs );\n const __dirname = dirname( fileURLToPath( import.meta.url ) );\n const template = readFileSync( resolve( __dirname, './index.html' ), 'utf-8' );\n\n return template.replace( '__REPORT_DATA__', JSON.stringify( json ) );\n}\n\nfunction processAsset( asset: string, inputs: Record<string, ReportInput> ): [ string, ReportOutput ] | void {\n const maybeCodeMap = loadCodeAndMap( asset );\n\n if ( !hasCodeAndMap( maybeCodeMap ) ) {\n return;\n }\n\n const { code, map } = maybeCodeMap;\n const mapped = mapSourceMap( map, dirname( asset ), inputs );\n\n mapped.sources = mapped.sources.map( source => normalizePath( source! ) );\n\n const bytes = getBytesPerSource( code, mapped );\n\n return [ normalizePath( asset ), {\n ...getSizes( code ),\n inputs: mapped.sources.reduce( ( acc, source ) => {\n if ( source ) {\n acc[ normalizePath( source ) ] = bytes.get( source ) ?? {\n uncompressed: 0,\n gzip: 0,\n brotli: 0\n };\n }\n\n return acc;\n }, {} as Record<string, ReportOutputInput> )\n } ];\n}\n\nfunction hasCodeAndMap( result: MaybeCodeMap ): result is Required<CodeMap> {\n return Boolean( result && result.code && result.map );\n}\n","import { join } from 'path';\nimport { writeFileSync } from 'fs';\nimport { generateHtmlReport, generateJsonReport } from '../report.js';\nimport type { Options, JsonReport } from '../types.js';\n\nexport async function generateReportFromAssets(\n\tassets: string[],\n\tinputs: JsonReport[ 'inputs' ],\n\toptions: Options\n): Promise<void> {\n\tconst { default: open } = await import( 'open' );\n\n\tconst handler = options.format === 'html'\n\t\t? saveHtml\n\t\t: saveJson;\n\n\tconst path = handler( assets, inputs );\n\n\toptions.open && path && open( path );\n}\n\nfunction saveHtml(\n\tassets: string[],\n\tinputs: JsonReport[ 'inputs' ]\n): string | null {\n\tconst report = generateHtmlReport( assets, inputs );\n\tconst path = join( process.cwd(), 'sonda-report.html' );\n\n\twriteFileSync( path, report );\n\n\treturn path;\n}\n\nfunction saveJson(\n\tassets: string[],\n\tinputs: JsonReport[ 'inputs' ]\n): string | null {\n\tconst report = generateJsonReport( assets, inputs );\n\tconst path = join( process.cwd(), 'sonda-report.json' );\n\n\twriteFileSync( path, JSON.stringify( report, null, 2 ) );\n\n\treturn path;\n}\n","import { normalizeOptions } from '../utils';\nimport { generateReportFromAssets } from '../report/generate';\nimport type { Plugin } from 'esbuild';\nimport type { Options, JsonReport } from '../types';\n\nexport function SondaEsbuildPlugin( options?: Partial<Options> ): Plugin {\n\treturn {\n\t\tname: 'sonda',\n\t\tsetup( build ) {\n\t\t\tbuild.initialOptions.metafile = true;\n\n\t\t\tbuild.onEnd( result => {\n\t\t\t\tif ( !result.metafile ) {\n\t\t\t\t\treturn console.error( 'Metafile is required for SondaEsbuildPlugin to work.' );\n\t\t\t\t}\n\n\t\t\t\tconst inputs = Object\n\t\t\t\t\t.entries( result.metafile.inputs )\n\t\t\t\t\t.reduce( ( acc, [ path, data ] ) => {\n\t\t\t\t\t\t\n\t\t\t\t\t\tacc[ path ] = {\n\t\t\t\t\t\t\tbytes: data.bytes,\n\t\t\t\t\t\t\tformat: data.format ?? 'unknown',\n\t\t\t\t\t\t\timports: data.imports.map( data => data.path ),\n\t\t\t\t\t\t\tbelongsTo: null,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\treturn acc;\n\t\t\t\t\t}, {} as JsonReport[ 'inputs' ] );\n\n\t\t\t\treturn generateReportFromAssets(\n\t\t\t\t\tObject.keys( result.metafile.outputs ),\n\t\t\t\t\tinputs,\n\t\t\t\t\tnormalizeOptions( options )\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\t};\n}\n","import { join, resolve, dirname } from 'path';\nimport { normalizeOptions, normalizePath } from '../utils.js';\nimport { generateReportFromAssets } from '../report/generate.js';\nimport type { Options, ModuleFormat, JsonReport } from '../types.js';\nimport type { Plugin, ModuleInfo, NormalizedOutputOptions, OutputBundle } from 'rollup';\n\nconst esmRegex = /* #__ PURE__ */ /\\.m[tj]sx?$/;\nconst cjsRegex = /* #__ PURE__ */ /\\.c[tj]sx?$/;\n\nexport function SondaRollupPlugin( options?: Partial<Options> ): Plugin {\n\tlet inputs: JsonReport[ 'inputs' ] = {};\n\n\treturn {\n\t\tname: 'sonda',\n\n\t\twriteBundle(\n\t\t\t{ dir, file }: NormalizedOutputOptions,\n\t\t\tbundle: OutputBundle\n\t\t) {\n\t\t\tconst outputDir = resolve( process.cwd(), dir ?? dirname( file! ) );\n\t\t\tconst assets = Object.keys( bundle ).map( name => join( outputDir, name ) );\n\n\t\t\treturn generateReportFromAssets(\n\t\t\t\tassets,\n\t\t\t\tinputs,\n\t\t\t\tnormalizeOptions( options )\n\t\t\t);\n\t\t},\n\n\t\tmoduleParsed( module: ModuleInfo ) {\n\t\t\tinputs[ normalizePath( module.id ) ] = {\n\t\t\t\tbytes: module.code ? Buffer.byteLength( module.code ) : 0,\n\t\t\t\tformat: getFormat( module.id, module.meta.commonjs?.isCommonJS ),\n\t\t\t\timports: module.importedIds.map( id => normalizePath( id ) ),\n\t\t\t\tbelongsTo: null,\n\t\t\t};\n\t\t}\n\t};\n}\n\nfunction getFormat( moduleId: string, isCommonJS: boolean | undefined ): ModuleFormat {\n\tif ( isCommonJS === true || cjsRegex.test( moduleId ) ) {\n\t\treturn 'cjs';\n\t}\n\n\tif ( isCommonJS === false || esmRegex.test( moduleId ) ) {\n\t\treturn 'esm';\n\t}\n\n\treturn'unknown';\n}\n","import { join } from 'path';\nimport { normalizeOptions, normalizePath } from '../utils';\nimport { generateReportFromAssets } from '../report/generate';\nimport type { Options, ModuleFormat, JsonReport } from '../types';\nimport { NormalModule, type Compiler, type Module } from 'webpack';\n\nconst jsRegexp = /* #__PURE__ */ /\\.[c|m]?[t|j]s[x]?$/;\n\nexport class SondaWebpackPlugin {\n\toptions: Partial<Options>;\n\tinputs: JsonReport[ 'inputs' ];\n\n\tconstructor ( options?: Partial<Options> ) {\n\t\tthis.options = options || {};\n\t\tthis.inputs = {};\n\t}\n\n\tapply( compiler: Compiler ): void {\n\t\tcompiler.options.output.devtoolModuleFilenameTemplate = '[absolute-resource-path]';\n\n\t\tcompiler.hooks.compilation.tap( 'SondaWebpackPlugin', ( compilation ) => {\n\t\t\tcompilation.hooks.optimizeModules.tap( 'SondaWebpackPlugin', ( modules ) => {\n\t\t\t\tArray\n\t\t\t\t\t.from( modules )\n\t\t\t\t\t.forEach( module => {\n\t\t\t\t\t\tif ( !isNormalModule( module ) ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst imports = module.dependencies.reduce( ( acc, dependency ) => {\n\t\t\t\t\t\t\tconst module = compilation.moduleGraph.getModule( dependency );\n\n\t\t\t\t\t\t\tif ( isNormalModule( module ) ) {\n\t\t\t\t\t\t\t\tacc.push( normalizePath( module.resource ) );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn acc;\n\t\t\t\t\t\t}, [] as Array<string> );\n\n\t\t\t\t\t\tthis.inputs[ normalizePath( module.resource ) ] = {\n\t\t\t\t\t\t\tbytes: module.size(),\n\t\t\t\t\t\t\tformat: getFormat( module ),\n\t\t\t\t\t\t\timports,\n\t\t\t\t\t\t\tbelongsTo: null,\n\t\t\t\t\t\t};\n\t\t\t\t\t} );\n\t\t\t} );\n\t\t} );\n\n\t\tcompiler.hooks.emit.tapAsync( 'SondaWebpackPlugin', ( compilation, callback ) => {\n\t\t\tconst outputPath = compiler.options.output.path || compiler.outputPath || process.cwd();\n\t\t\tconst assets = Object.keys( compilation.assets ).map( name => join( outputPath, name ) );\n\n\t\t\tgenerateReportFromAssets(\n\t\t\t\tassets,\n\t\t\t\tthis.inputs,\n\t\t\t\tnormalizeOptions( this.options )\n\t\t\t)\n\t\t\t.then(() => callback());\n\t\t} );\n\t}\n}\n\nfunction getFormat( module: NormalModule ): ModuleFormat {\n\tif ( !jsRegexp.test( module.resource ) ) {\n\t\treturn 'unknown';\n\t}\n\n\tif ( module.type === 'javascript/esm' || module.buildMeta?.exportsType === 'namespace' ) {\n\t\treturn 'esm';\n\t}\n\n\treturn 'cjs';\n}\n\nfunction isNormalModule( module: Module | NormalModule | null ): module is NormalModule {\n\treturn module !== null && 'resource' in module;\n}\n"],"names":["cwd","process","normalizeOptions","options","defaultOptions","open","format","Object","assign","normalizePath","path","normalized","replace","relativized","relative","replaceAll","sep","posix","parseSourceMapInput","str","JSON","parse","sourceMappingRegExp","loadCodeAndMap","codePath","existsSync","code","readFileSync","extractedComment","includes","Array","from","matchAll","at","length","maybeMap","loadMap","map","mapPath","sources","normalizeSourcesPaths","sourceRoot","sourceMappingURL","startsWith","parseDataUrl","join","url","prefix","payload","split","encoding","Buffer","toString","decodeURIComponent","Error","mapDir","dirname","source","isAbsolute","resolve","mapSourceMap","dirPath","inputs","alreadyRemapped","Set","remapped","remapping","file","ctx","has","add","codeMap","parentPath","filter","forEach","index","normalizedPath","bytes","byteLength","sourcesContent","imports","belongsTo","content","decodedMappings","getBytesPerSource","contributions","fill","codeLines","lineIndex","mappings","line","lineCode","mappingIndex","startColumn","fileIndex","endColumn","slice","Map","getSizes","uncompressed","gzip","gzipSync","brotli","brotliCompressSync","generateJsonReport","assets","outputsEntries","asset","endsWith","processAsset","output","outputs","fromEntries","generateHtmlReport","json","__dirname","fileURLToPath","template","stringify","maybeCodeMap","hasCodeAndMap","mapped","reduce","acc","get","result","Boolean","generateReportFromAssets","default","handler","saveHtml","saveJson","report","writeFileSync","SondaEsbuildPlugin","name","setup","build","initialOptions","metafile","onEnd","console","error","entries","data","keys","esmRegex","cjsRegex","SondaRollupPlugin","writeBundle","dir","bundle","outputDir","moduleParsed","module","id","getFormat","meta","commonjs","isCommonJS","importedIds","moduleId","test","jsRegexp","SondaWebpackPlugin","apply","compiler","devtoolModuleFilenameTemplate","hooks","compilation","tap","optimizeModules","modules","isNormalModule","dependencies","dependency","moduleGraph","getModule","push","resource","size","emit","tapAsync","callback","outputPath","then","constructor","type","buildMeta","exportsType"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  import type { Options, JsonReport } from '../types.js';
2
- export declare function generateReportFromAssets(assets: string[], inputs: JsonReport['inputs'], options: Options): void;
2
+ export declare function generateReportFromAssets(assets: string[], inputs: JsonReport['inputs'], options: Options): Promise<void>;
3
3
  //# sourceMappingURL=generate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/report/generate.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEvD,wBAAgB,wBAAwB,CACvC,MAAM,EAAE,MAAM,EAAE,EAChB,MAAM,EAAE,UAAU,CAAE,QAAQ,CAAE,EAC9B,OAAO,EAAE,OAAO,GACd,IAAI,CAQN"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/report/generate.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEvD,wBAAsB,wBAAwB,CAC7C,MAAM,EAAE,MAAM,EAAE,EAChB,MAAM,EAAE,UAAU,CAAE,QAAQ,CAAE,EAC9B,OAAO,EAAE,OAAO,GACd,OAAO,CAAC,IAAI,CAAC,CAUf"}
package/dist/utils.d.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  import type { Options } from './types';
2
2
  export declare function normalizeOptions(options?: Partial<Options>): Options;
3
3
  export declare function normalizePath(path: string): string;
4
- export declare function open(path: string): void;
5
4
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAIvC,wBAAgB,gBAAgB,CAAE,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAMJ,OAAO,CAC9D;AAED,wBAAgB,aAAa,CAAE,IAAI,EAAE,MAAM,GAAI,MAAM,CASpD;AAUD,wBAAgB,IAAI,CAAE,IAAI,EAAE,MAAM,GAAI,IAAI,CAEzC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAIvC,wBAAgB,gBAAgB,CAAE,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAMJ,OAAO,CAC9D;AAED,wBAAgB,aAAa,CAAE,IAAI,EAAE,MAAM,GAAI,MAAM,CASpD"}
package/package.json CHANGED
@@ -1,7 +1,18 @@
1
1
  {
2
2
  "name": "sonda",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Universal visualizer and analyzer for JavaScript and CSS bundles. Works with Vite, Rollup, webpack, and esbuild",
5
+ "keywords": [
6
+ "bundle analyzer",
7
+ "bundle visualizer",
8
+ "analyzer",
9
+ "visualizer",
10
+ "source-map",
11
+ "vite",
12
+ "rollup",
13
+ "webpack",
14
+ "esbuild"
15
+ ],
5
16
  "license": "MIT",
6
17
  "type": "module",
7
18
  "repository": {
@@ -18,7 +29,8 @@
18
29
  "./package.json": "./package.json"
19
30
  },
20
31
  "files": [
21
- "dist"
32
+ "dist",
33
+ "CHANGELOG.md"
22
34
  ],
23
35
  "scripts": {
24
36
  "prepack": "pnpm run build",
@@ -27,7 +39,8 @@
27
39
  "build": "pnpm run build:dist && pnpm run build:html"
28
40
  },
29
41
  "dependencies": {
30
- "@ampproject/remapping": "^2.3.0"
42
+ "@ampproject/remapping": "^2.3.0",
43
+ "open": "^10.1.0"
31
44
  },
32
45
  "devDependencies": {
33
46
  "esbuild": "^0.23.1",