sonda 0.3.0 → 0.4.0

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 CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - ca8322a: Add modal showing list of duplicated modules
8
+
9
+ ### Patch Changes
10
+
11
+ - e20ec92: Rollup plugin: Fix detection of the ES modules when `@rollup/plugin-commonjs` plugin is not installed
12
+ - 52ae692: Update dependencies
13
+ - e20ec92: Webpack plugin: Fix reported files sizes, which sometimes included imported dependencies.
14
+
3
15
  ## 0.3.0
4
16
 
5
17
  ### Minor Changes
package/README.md CHANGED
@@ -8,6 +8,7 @@ Sonda works with the following bundlers:
8
8
  * Rollup
9
9
  * esbuild
10
10
  * webpack
11
+ * Rspack
11
12
 
12
13
  ![HTML report generated by Sonda with open modal containing file details and tree map diagram in the background](https://raw.githubusercontent.com/filipsobol/sonda/refs/heads/main/docs/public/details.png)
13
14
 
@@ -1 +1 @@
1
- {"version":3,"file":"esbuild.d.ts","sourceRoot":"","sources":["../../src/bundlers/esbuild.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EAAE,OAAO,EAAc,MAAM,UAAU,CAAC;AAGpD,wBAAgB,kBAAkB,CAAE,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAI,MAAM,CAiDvE"}
1
+ {"version":3,"file":"esbuild.d.ts","sourceRoot":"","sources":["../../src/bundlers/esbuild.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EAAE,OAAO,EAAc,MAAM,UAAU,CAAC;AAEpD,wBAAgB,kBAAkB,CAAE,OAAO,GAAE,OAAO,CAAC,OAAO,CAAM,GAAI,MAAM,CA+C3E"}
@@ -1 +1 @@
1
- {"version":3,"file":"rollup.d.ts","sourceRoot":"","sources":["../../src/bundlers/rollup.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAA4B,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAqD,MAAM,QAAQ,CAAC;AAKxF,wBAAgB,iBAAiB,CAAE,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAI,MAAM,CA6BtE"}
1
+ {"version":3,"file":"rollup.d.ts","sourceRoot":"","sources":["../../src/bundlers/rollup.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAA4B,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAqD,MAAM,QAAQ,CAAC;AAExF,wBAAgB,iBAAiB,CAAE,OAAO,GAAE,OAAO,CAAC,OAAO,CAAM,GAAI,MAAM,CA6B1E"}
@@ -1 +1 @@
1
- {"version":3,"file":"webpack.d.ts","sourceRoot":"","sources":["../../src/bundlers/webpack.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAe,MAAM,SAAS,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAA4B,MAAM,UAAU,CAAC;AAIlE,qBAAa,kBAAkB;IAC9B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;gBAEZ,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC;IAIxC,KAAK,CAAE,QAAQ,EAAE,QAAQ,GAAI,IAAI;CAqCjC"}
1
+ {"version":3,"file":"webpack.d.ts","sourceRoot":"","sources":["../../src/bundlers/webpack.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAe,MAAM,SAAS,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAA4B,MAAM,UAAU,CAAC;AAElE,qBAAa,kBAAkB;IAC9B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;gBAEZ,OAAO,GAAE,OAAO,CAAC,OAAO,CAAM;IAI5C,KAAK,CAAE,QAAQ,EAAE,QAAQ,GAAI,IAAI;CAyCjC"}
package/dist/index.cjs CHANGED
@@ -1,33 +1,13 @@
1
1
  'use strict';
2
2
 
3
3
  var path = require('path');
4
+ var remapping = require('@ampproject/remapping');
4
5
  var fs = require('fs');
5
6
  var url = require('url');
6
7
  var sourcemapCodec = require('@jridgewell/sourcemap-codec');
7
- var remapping = require('@ampproject/remapping');
8
8
  var zlib = require('zlib');
9
9
 
10
10
  var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
11
- const cwd = /* #__PURE__ */ process.cwd();
12
- function normalizeOptions(options) {
13
- const defaultOptions = {
14
- open: true,
15
- format: 'html',
16
- detailed: false,
17
- gzip: false,
18
- brotli: false
19
- };
20
- return Object.assign({}, defaultOptions, options);
21
- }
22
- function normalizePath(path$1) {
23
- // Unicode escape sequences used by Rollup and Vite to identify virtual modules
24
- const normalized = path$1.replace(/^\0/, '');
25
- // Transform absolute paths to relative paths
26
- const relativized = path.relative(cwd, normalized);
27
- // Ensure paths are POSIX-compliant - https://stackoverflow.com/a/63251716/4617687
28
- return relativized.replaceAll(path.sep, path.posix.sep);
29
- }
30
-
31
11
  /**
32
12
  * Strip any JSON XSSI avoidance prefix from the string (as documented in the source maps specification),
33
13
  * and parses the string as JSON.
@@ -124,6 +104,27 @@ function parseDataUrl(url) {
124
104
  });
125
105
  }
126
106
 
107
+ const cjsRegex = /\.c[tj]sx?$/;
108
+ const jsRegexp = /\.[cm]?[tj]s[x]?$/;
109
+ function normalizeOptions(options) {
110
+ const defaultOptions = {
111
+ open: true,
112
+ format: 'html',
113
+ detailed: false,
114
+ gzip: false,
115
+ brotli: false
116
+ };
117
+ return Object.assign({}, defaultOptions, options);
118
+ }
119
+ function normalizePath(pathToNormalize) {
120
+ // Unicode escape sequences used by Rollup and Vite to identify virtual modules
121
+ const normalized = pathToNormalize.replace(/^\0/, '');
122
+ // Transform absolute paths to relative paths
123
+ const relativized = path.relative(process.cwd(), normalized);
124
+ // Ensure paths are POSIX-compliant - https://stackoverflow.com/a/63251716/4617687
125
+ return relativized.replaceAll(path.win32.sep, path.posix.sep);
126
+ }
127
+
127
128
  function mapSourceMap(map, dirPath, inputs) {
128
129
  const alreadyRemapped = new Set();
129
130
  const remapped = remapping(map, (file, ctx)=>{
@@ -299,11 +300,18 @@ function hasCodeAndMap(result) {
299
300
  return Boolean(result && result.code && result.map);
300
301
  }
301
302
 
302
- async function generateReportFromAssets(assets, inputs, options) {
303
- const { default: open } = await import('open');
303
+ async function generateReportFromAssets(assets, inputs, userOptions) {
304
+ const options = normalizeOptions(userOptions);
304
305
  const handler = options.format === 'html' ? saveHtml : saveJson;
305
306
  const path = handler(assets, inputs, options);
306
- options.open && path && open(path);
307
+ if (!options.open || !path) {
308
+ return;
309
+ }
310
+ /**
311
+ * `open` is ESM-only package, so we need to import it
312
+ * dynamically to make it work in CommonJS environment.
313
+ */ const { default: open } = await import('open');
314
+ open(path);
307
315
  }
308
316
  function saveHtml(assets, inputs, options) {
309
317
  const report = generateHtmlReport(assets, inputs, options);
@@ -318,19 +326,18 @@ function saveJson(assets, inputs, options) {
318
326
  return path$1;
319
327
  }
320
328
 
321
- function SondaEsbuildPlugin(options) {
329
+ function SondaEsbuildPlugin(options = {}) {
322
330
  return {
323
331
  name: 'sonda',
324
332
  setup (build) {
325
333
  build.initialOptions.metafile = true;
334
+ // Esbuild already reads the existing source maps, so there's no need to do it again
335
+ options.detailed = false;
326
336
  build.onEnd((result)=>{
327
337
  if (!result.metafile) {
328
338
  return console.error('Metafile is required for SondaEsbuildPlugin to work.');
329
339
  }
330
340
  const cwd = process.cwd();
331
- const normalizedOptions = normalizeOptions(options);
332
- // Esbuild already reads the existing source maps, so there's no need to do it again
333
- normalizedOptions.detailed = false;
334
341
  const inputs = Object.entries(result.metafile.inputs).reduce((acc, [path$1, data])=>{
335
342
  acc[path$1] = {
336
343
  bytes: data.bytes,
@@ -346,22 +353,20 @@ function SondaEsbuildPlugin(options) {
346
353
  */ addSourcesToInputs(path.resolve(cwd, path$1), acc);
347
354
  return acc;
348
355
  }, {});
349
- return generateReportFromAssets(Object.keys(result.metafile.outputs), inputs, normalizeOptions(options));
356
+ return generateReportFromAssets(Object.keys(result.metafile.outputs).map((path$1)=>path.resolve(cwd, path$1)), inputs, options);
350
357
  });
351
358
  }
352
359
  };
353
360
  }
354
361
 
355
- const esmRegex = /\.m[tj]sx?$/;
356
- const cjsRegex = /\.c[tj]sx?$/;
357
- function SondaRollupPlugin(options) {
362
+ function SondaRollupPlugin(options = {}) {
358
363
  let inputs = {};
359
364
  return {
360
365
  name: 'sonda',
361
366
  writeBundle ({ dir, file }, bundle) {
362
367
  const outputDir = path.resolve(process.cwd(), dir ?? path.dirname(file));
363
368
  const assets = Object.keys(bundle).map((name)=>path.join(outputDir, name));
364
- return generateReportFromAssets(assets, inputs, normalizeOptions(options));
369
+ return generateReportFromAssets(assets, inputs, options);
365
370
  },
366
371
  moduleParsed (module) {
367
372
  inputs[normalizePath(module.id)] = {
@@ -377,13 +382,12 @@ function getFormat$1(moduleId, isCommonJS) {
377
382
  if (isCommonJS === true || cjsRegex.test(moduleId)) {
378
383
  return 'cjs';
379
384
  }
380
- if (isCommonJS === false || esmRegex.test(moduleId)) {
385
+ if (isCommonJS === false || jsRegexp.test(moduleId)) {
381
386
  return 'esm';
382
387
  }
383
388
  return 'unknown';
384
389
  }
385
390
 
386
- const jsRegexp = /\.[c|m]?[t|j]s[x]?$/;
387
391
  class SondaWebpackPlugin {
388
392
  apply(compiler) {
389
393
  compiler.options.output.devtoolModuleFilenameTemplate = '[absolute-resource-path]';
@@ -394,7 +398,10 @@ class SondaWebpackPlugin {
394
398
  providedExports: true
395
399
  });
396
400
  const outputPath = stats.outputPath || compiler.outputPath;
397
- const modules = stats.modules?.filter((mod)=>mod.nameForCondition && mod.moduleType !== 'asset/inline') || [];
401
+ const modules = stats.modules?.flatMap((mod)=>mod.modules ? [
402
+ mod,
403
+ ...mod.modules
404
+ ] : mod).filter((mod)=>mod.nameForCondition && !mod.codeGenerated).filter((mod, index, self)=>self.findIndex((m)=>m.nameForCondition === mod.nameForCondition) === index) || [];
398
405
  modules.forEach((module)=>{
399
406
  const imports = modules.reduce((acc, { nameForCondition, issuerName, reasons })=>{
400
407
  if (issuerName === module.name || reasons?.some((reason)=>reason.resolvedModule === module.name)) {
@@ -409,11 +416,11 @@ class SondaWebpackPlugin {
409
416
  belongsTo: null
410
417
  };
411
418
  });
412
- return generateReportFromAssets(stats.assets?.map((asset)=>path.join(outputPath, asset.name)) || [], inputs, normalizeOptions(this.options));
419
+ return generateReportFromAssets(stats.assets?.map((asset)=>path.join(outputPath, asset.name)) || [], inputs, this.options);
413
420
  });
414
421
  }
415
- constructor(options){
416
- this.options = options || {};
422
+ constructor(options = {}){
423
+ this.options = options;
417
424
  }
418
425
  }
419
426
  function getFormat(module) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/utils.ts","../../load-source-map/dist/index.js","../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\tdetailed: false,\n\t\tgzip: false,\n\t\tbrotli: false,\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 { join, dirname, isAbsolute, resolve } from 'path';\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 */ function parseSourceMapInput(str) {\n return JSON.parse(str.replace(/^\\)]}'[^\\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\tsourceMappingURL=map-file-comment.css.map?query=value\n*/ const sourceMappingRegExp = /[@#]\\s*sourceMappingURL=(\\S+)\\b/g;\nfunction loadCodeAndMap(codePath) {\n if (!existsSync(codePath)) {\n return null;\n }\n const code = readFileSync(codePath, 'utf-8');\n const extractedComment = code.includes('sourceMappingURL') && Array.from(code.matchAll(sourceMappingRegExp)).at(-1);\n if (!extractedComment || !extractedComment.length) {\n return {\n code\n };\n }\n const maybeMap = loadMap(codePath, extractedComment[1]);\n if (!maybeMap) {\n return {\n code\n };\n }\n const { map, mapPath } = maybeMap;\n map.sources = normalizeSourcesPaths(map, mapPath);\n map.sourcesContent = loadMissingSourcesContent(map);\n delete map.sourceRoot;\n return {\n code,\n map\n };\n}\nfunction loadMap(codePath, sourceMappingURL) {\n if (sourceMappingURL.startsWith('data:')) {\n const map = parseDataUrl(sourceMappingURL);\n return {\n map: parseSourceMapInput(map),\n mapPath: codePath\n };\n }\n const sourceMapFilename = new URL(sourceMappingURL, 'file://').pathname;\n const mapPath = join(dirname(codePath), sourceMapFilename);\n if (!existsSync(mapPath)) {\n return null;\n }\n return {\n map: parseSourceMapInput(readFileSync(mapPath, 'utf-8')),\n mapPath\n };\n}\nfunction parseDataUrl(url) {\n const [prefix, payload] = url.split(',');\n const encoding = prefix.split(';').at(-1);\n switch(encoding){\n case 'base64':\n return Buffer.from(payload, 'base64').toString();\n case 'uri':\n return decodeURIComponent(payload);\n default:\n throw new Error('Unsupported source map encoding: ' + encoding);\n }\n}\n/**\n * Normalize the paths of the sources in the source map to be absolute paths.\n */ function normalizeSourcesPaths(map, mapPath) {\n const mapDir = dirname(mapPath);\n return map.sources.map((source)=>{\n if (!source) {\n return source;\n }\n return isAbsolute(source) ? source : resolve(mapDir, map.sourceRoot ?? '.', source);\n });\n}\n/**\n * Loop through the sources and try to load missing `sourcesContent` from the file system.\n */ function loadMissingSourcesContent(map) {\n return map.sources.map((source, index)=>{\n if (map.sourcesContent?.[index]) {\n return map.sourcesContent[index];\n }\n if (source && existsSync(source)) {\n return readFileSync(source, 'utf-8');\n }\n return null;\n });\n}\n\nexport { loadCodeAndMap };\n//# sourceMappingURL=index.js.map\n","import { default as remapping, type DecodedSourceMap, type EncodedSourceMap } from '@ampproject/remapping';\nimport { loadCodeAndMap } from 'load-source-map';\nimport { resolve } from 'path';\nimport { normalizePath } from '../utils';\nimport type { CodeMap, ReportInput } from '../types';\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 = addSourcesToInputs(\n\t\t\tresolve( dirPath, file ),\n\t\t\tinputs\n\t\t);\n\n\t\tif ( !codeMap ) {\n\t\t\treturn;\n\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\n/**\n * Loads the source map of a given file and adds its \"sources\" to the given inputs object.\n */\nexport function addSourcesToInputs(\n\tpath: string,\n\tinputs: Record<string, ReportInput>\n): CodeMap | null {\n\tconst codeMap = loadCodeAndMap( path );\n\n\tif ( !codeMap ) {\n\t\treturn null;\n\t}\n\n\tconst parentPath = normalizePath( path );\n\tconst format = inputs[ parentPath ]?.format ?? 'unknown';\n\n\tcodeMap.map?.sources\n\t\t.filter( source => source !== null )\n\t\t.forEach( ( source, index ) => {\n\t\t\tconst normalizedPath = normalizePath( source );\n\n\t\t\tif ( parentPath === normalizedPath ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tinputs[ normalizedPath ] = {\n\t\t\t\tbytes: Buffer.byteLength( codeMap.map!.sourcesContent?.[ index ] ?? '' ),\n\t\t\t\tformat,\n\t\t\t\timports: [],\n\t\t\t\tbelongsTo: parentPath\n\t\t\t};\n\t\t} );\n\t\n\treturn codeMap;\n}\n","import { gzipSync, brotliCompressSync } from 'zlib';\nimport type { DecodedSourceMap, SourceMapSegment } from '@ampproject/remapping';\nimport type { Options, Sizes } from '../types';\n\nconst UNASSIGNED = '[unassigned]';\n\nexport function getBytesPerSource(\n\tcode: string,\n\tmap: DecodedSourceMap,\n\tassetSizes: Sizes,\n\toptions: Options\n): Map<string, Sizes> {\n\tconst contributions = getContributions( map.sources );\n\n\t// Split the code into lines\n\tconst codeLines = code.split( /(?<=\\r?\\n)/ );\n\n\tfor ( let lineIndex = 0; lineIndex < codeLines.length; lineIndex++ ) {\n\t\tconst lineCode = codeLines[ lineIndex ];\n\t\tconst mappings = map.mappings[ lineIndex ] || [];\n\t\tlet currentColumn = 0;\n\n\t\tfor ( let i = 0; i <= mappings.length; i++ ) {\n\t\t\t// 0: generatedColumn\n\t\t\t// 1: sourceIndex\n\t\t\t// 2: originalLine\n\t\t\t// 3: originalColumn\n\t\t\t// 4: nameIndex\n\n\t\t\tconst mapping: SourceMapSegment | undefined = mappings[ i ];\n\t\t\tconst startColumn = mapping?.[ 0 ] ?? lineCode.length;\n\t\t\tconst endColumn = mappings[ i + 1 ]?.[ 0 ] ?? lineCode.length;\n\n\t\t\t// Slice the code from currentColumn to startColumn for unassigned code\n\t\t\tif ( startColumn > currentColumn ) {\n\t\t\t\tcontributions.set( UNASSIGNED, contributions.get( UNASSIGNED ) + lineCode.slice( currentColumn, startColumn ) );\n\t\t\t}\n\n\t\t\tif ( mapping ) {\n\t\t\t\t// Slice the code from startColumn to endColumn for assigned code\n\t\t\t\tconst sourceIndex = mapping?.[ 1 ];\n\t\t\t\tconst codeSlice = lineCode.slice( startColumn, endColumn );\n\t\t\t\tconst source = sourceIndex !== undefined ? map.sources[ sourceIndex ]! : UNASSIGNED;\n\n\t\t\t\tcontributions.set( source, contributions.get( source ) + codeSlice );\n\t\t\t\tcurrentColumn = endColumn;\n\t\t\t} else {\n\t\t\t\tcurrentColumn = startColumn;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compute sizes for each source\n\tconst sourceSizes = new Map<string, Sizes>();\n\n\tconst contributionsSum: Sizes = {\n\t\tuncompressed: 0,\n\t\tgzip: 0,\n\t\tbrotli: 0\n\t};\n\n\tfor ( const [ source, codeSegment ] of contributions ) {\n\t\tconst sizes = getSizes( codeSegment, options );\n\n\t\tcontributionsSum.uncompressed += sizes.uncompressed;\n\t\tcontributionsSum.gzip += sizes.gzip;\n\t\tcontributionsSum.brotli += sizes.brotli;\n\n\t\tsourceSizes.set( source, sizes );\n\t}\n\n\treturn adjustSizes( sourceSizes, assetSizes, contributionsSum, options );\n}\n\nexport function getSizes(\n\tcode: string,\n\toptions: Options\n): Sizes {\n\treturn {\n\t\tuncompressed: Buffer.byteLength( code ),\n\t\tgzip: options.gzip ? gzipSync( code ).length : 0,\n\t\tbrotli: options.brotli ? brotliCompressSync( code ).length : 0\n\t};\n}\n\nfunction getContributions( sources: Array<string | null> ): Map<string, string> {\n\tconst contributions = new Map<string, string>();\n\n\t// Populate contributions with sources\n\tsources\n\t\t.filter( source => source !== null )\n\t\t.forEach( source => contributions.set( source, '' ) );\n\n\t// Add entry for the code that is not assigned to any source\n\tcontributions.set( UNASSIGNED, '' );\n\n\treturn contributions;\n}\n\n/**\n * Compression efficiency improves with the size of the file.\n *\n * However, what we have is the compressed size of the entire bundle (`actual`),\n * the sum of all files compressed individually (`sum`) and the compressed\n * size of a given file (`content`). The last value is essentially a “worst-case”\n * scenario, and the actual size of the file in the bundle is likely to be smaller.\n *\n * We use this information to estimate the actual size of the file in the bundle\n * after compression.\n */\nfunction adjustSizes(\n\tsources: Map<string, Sizes>,\n\tasset: Sizes,\n\tsums: Sizes,\n\toptions: Options\n): Map<string, Sizes> {\n\tconst gzipDelta = options.gzip ? asset.gzip / sums.gzip : 0;\n\tconst brotliDelta = options.brotli ? asset.brotli / sums.brotli : 0;\n\n\tfor ( const [ source, sizes ] of sources ) {\n\t\tsources.set( source, {\n\t\t\tuncompressed: sizes.uncompressed,\n\t\t\tgzip: options.gzip ? Math.round( sizes.gzip * gzipDelta ) : 0,\n\t\t\tbrotli: options.brotli ? Math.round( sizes.brotli * brotliDelta ) : 0\n\t\t} );\n\t}\n\n\treturn sources;\n}\n","import { dirname, resolve } from 'path';\nimport { fileURLToPath } from 'url';\nimport { readFileSync } from 'fs';\nimport { loadCodeAndMap } from 'load-source-map';\nimport { decode } from '@jridgewell/sourcemap-codec';\nimport { mapSourceMap } from './sourcemap/map.js';\nimport { getBytesPerSource, getSizes } from './sourcemap/bytes.js';\nimport type {\n JsonReport,\n MaybeCodeMap,\n ReportInput,\n ReportOutput,\n CodeMap,\n ReportOutputInput,\n Options\n} from './types.js';\nimport { normalizePath } from './utils.js';\n\nexport function generateJsonReport(\n assets: Array<string>,\n inputs: Record<string, ReportInput>,\n options: Options\n): JsonReport {\n const outputs = assets\n .filter( asset => !asset.endsWith( '.map' ) )\n .reduce( ( carry, asset ) => {\n const data = processAsset( asset, inputs, options );\n\n if ( data ) {\n carry[ normalizePath( asset ) ] = data;\n }\n\n return carry;\n }, {} as Record<string, ReportOutput> );\n\n return {\n inputs,\n outputs\n };\n}\n\nexport function generateHtmlReport(\n assets: Array<string>,\n inputs: Record<string, ReportInput>,\n options: Options\n): string {\n const json = generateJsonReport( assets, inputs, options );\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(\n asset: string,\n inputs: Record<string, ReportInput>,\n options: Options\n): ReportOutput | void {\n const maybeCodeMap = loadCodeAndMap( asset );\n\n if ( !hasCodeAndMap( maybeCodeMap ) ) {\n return;\n }\n\n const { code, map } = maybeCodeMap;\n const mapped = options.detailed\n ? mapSourceMap( map, dirname( asset ), inputs )\n : { ...map, mappings: decode( map.mappings ) };\n\n mapped.sources = mapped.sources.map( source => normalizePath( source! ) );\n\n const assetSizes = getSizes( code, options );\n const bytes = getBytesPerSource( code, mapped, assetSizes, options );\n\n return {\n ...assetSizes,\n inputs: Array.from( bytes ).reduce( ( carry, [ source, sizes ] ) => {\n carry[ normalizePath( source ) ] = sizes;\n\n return carry;\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, options );\n\n\toptions.open && path && open( path );\n}\n\nfunction saveHtml(\n\tassets: string[],\n\tinputs: JsonReport[ 'inputs' ],\n\toptions: Options\n): string | null {\n\tconst report = generateHtmlReport( assets, inputs, options );\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\toptions: Options\n): string | null {\n\tconst report = generateJsonReport( assets, inputs, options );\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 { resolve } from 'path';\nimport { normalizeOptions } from '../utils';\nimport { generateReportFromAssets } from '../report/generate';\nimport type { Plugin } from 'esbuild';\nimport type { Options, JsonReport } from '../types';\nimport { addSourcesToInputs } from '../sourcemap/map';\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 cwd = process.cwd();\n\t\t\t\tconst normalizedOptions = normalizeOptions( options );\n\n\t\t\t\t// Esbuild already reads the existing source maps, so there's no need to do it again\n\t\t\t\tnormalizedOptions.detailed = false;\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\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\t/**\n\t\t\t\t\t\t * Because esbuild already reads the existing source maps, there may be\n\t\t\t\t\t\t * cases where some report \"outputs\" include \"inputs\" don't exist in the\n\t\t\t\t\t\t * main \"inputs\" object. To avoid this, we parse each esbuild input and\n\t\t\t\t\t\t * add its sources to the \"inputs\" object.\n\t\t\t\t\t\t */\n\t\t\t\t\t\taddSourcesToInputs(\n\t\t\t\t\t\t\tresolve( cwd, path ),\n\t\t\t\t\t\t\tacc\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 = /\\.m[tj]sx?$/;\nconst cjsRegex = /\\.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 { Compiler, StatsModule } from 'webpack';\nimport type { Options, ModuleFormat, JsonReport } from '../types';\n\nconst jsRegexp = /\\.[c|m]?[t|j]s[x]?$/;\n\nexport class SondaWebpackPlugin {\n\toptions: Partial<Options>;\n\n\tconstructor ( options?: Partial<Options> ) {\n\t\tthis.options = options || {};\n\t}\n\n\tapply( compiler: Compiler ): void {\n\t\tcompiler.options.output.devtoolModuleFilenameTemplate = '[absolute-resource-path]';\n\n\t\tcompiler.hooks.afterEmit.tapPromise( 'SondaWebpackPlugin', compilation => {\n\t\t\tconst inputs: JsonReport[ 'inputs' ] = {};\n\t\t\tconst stats = compilation.getStats().toJson( {\n\t\t\t\tmodules: true,\n\t\t\t\tprovidedExports: true\n\t\t\t} );\n\n\t\t\tconst outputPath = stats.outputPath || compiler.outputPath;\n\t\t\tconst modules = stats.modules?.filter( mod => mod.nameForCondition && mod.moduleType !== 'asset/inline' ) || [];\n\n\t\t\tmodules.forEach( module => {\n\t\t\t\tconst imports = modules.reduce( ( acc, { nameForCondition, issuerName, reasons } ) => {\n\t\t\t\t\tif ( issuerName === module.name || reasons?.some( reason => reason.resolvedModule === module.name ) ) {\n\t\t\t\t\t\tacc.push( normalizePath( nameForCondition! ) );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn acc;\n\t\t\t\t}, [] as Array<string> );\n\n\t\t\t\tinputs[ normalizePath( module.nameForCondition! ) ] = {\n\t\t\t\t\tbytes: module.size || 0,\n\t\t\t\t\tformat: getFormat( module ),\n\t\t\t\t\timports,\n\t\t\t\t\tbelongsTo: null\n\t\t\t\t};\n\t\t\t} );\n\n\t\t\treturn generateReportFromAssets(\n\t\t\t\tstats.assets?.map( asset => join( outputPath, asset.name ) ) || [],\n\t\t\t\tinputs,\n\t\t\t\tnormalizeOptions( this.options )\n\t\t\t);\n\t\t} );\n\t}\n}\n\nfunction getFormat( module: StatsModule ): ModuleFormat {\n\tif ( !jsRegexp.test( module.nameForCondition! ) ) {\n\t\treturn 'unknown';\n\t}\n\n\t/**\n\t * Sometimes ESM modules have `moduleType` set as `javascript/auto`, so we\n\t * also need to check if the module has exports to determine if it's ESM.\n\t */\n\tif ( module.moduleType === 'javascript/esm' || !!module.providedExports?.length ) {\n\t\treturn 'esm';\n\t}\n\n\treturn 'cjs';\n}\n"],"names":["cwd","process","normalizeOptions","options","defaultOptions","open","format","detailed","gzip","brotli","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","sourcesContent","loadMissingSourcesContent","sourceRoot","sourceMappingURL","startsWith","parseDataUrl","sourceMapFilename","URL","pathname","join","dirname","url","prefix","payload","split","encoding","Buffer","toString","decodeURIComponent","Error","mapDir","source","isAbsolute","resolve","index","mapSourceMap","dirPath","inputs","alreadyRemapped","Set","remapped","remapping","file","ctx","has","add","codeMap","addSourcesToInputs","content","decodedMappings","parentPath","filter","forEach","normalizedPath","bytes","byteLength","imports","belongsTo","UNASSIGNED","getBytesPerSource","assetSizes","contributions","getContributions","codeLines","lineIndex","lineCode","mappings","currentColumn","i","mapping","startColumn","endColumn","set","get","slice","sourceIndex","codeSlice","undefined","sourceSizes","Map","contributionsSum","uncompressed","codeSegment","sizes","getSizes","adjustSizes","gzipSync","brotliCompressSync","asset","sums","gzipDelta","brotliDelta","Math","round","generateJsonReport","assets","outputs","endsWith","reduce","carry","data","processAsset","generateHtmlReport","json","__dirname","fileURLToPath","template","stringify","maybeCodeMap","hasCodeAndMap","mapped","decode","result","Boolean","generateReportFromAssets","default","handler","saveHtml","saveJson","report","writeFileSync","SondaEsbuildPlugin","name","setup","build","initialOptions","metafile","onEnd","console","error","normalizedOptions","entries","acc","keys","esmRegex","cjsRegex","SondaRollupPlugin","writeBundle","dir","bundle","outputDir","moduleParsed","module","id","getFormat","meta","commonjs","isCommonJS","importedIds","moduleId","test","jsRegexp","SondaWebpackPlugin","apply","compiler","output","devtoolModuleFilenameTemplate","hooks","afterEmit","tapPromise","compilation","stats","getStats","toJson","modules","providedExports","outputPath","mod","nameForCondition","moduleType","issuerName","reasons","some","reason","resolvedModule","push","size","constructor"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../load-source-map/dist/index.js","../src/utils.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 { existsSync, readFileSync } from 'fs';\nimport { join, dirname, isAbsolute, resolve } from 'path';\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 */ function parseSourceMapInput(str) {\n return JSON.parse(str.replace(/^\\)]}'[^\\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\tsourceMappingURL=map-file-comment.css.map?query=value\n*/ const sourceMappingRegExp = /[@#]\\s*sourceMappingURL=(\\S+)\\b/g;\nfunction loadCodeAndMap(codePath) {\n if (!existsSync(codePath)) {\n return null;\n }\n const code = readFileSync(codePath, 'utf-8');\n const extractedComment = code.includes('sourceMappingURL') && Array.from(code.matchAll(sourceMappingRegExp)).at(-1);\n if (!extractedComment || !extractedComment.length) {\n return {\n code\n };\n }\n const maybeMap = loadMap(codePath, extractedComment[1]);\n if (!maybeMap) {\n return {\n code\n };\n }\n const { map, mapPath } = maybeMap;\n map.sources = normalizeSourcesPaths(map, mapPath);\n map.sourcesContent = loadMissingSourcesContent(map);\n delete map.sourceRoot;\n return {\n code,\n map\n };\n}\nfunction loadMap(codePath, sourceMappingURL) {\n if (sourceMappingURL.startsWith('data:')) {\n const map = parseDataUrl(sourceMappingURL);\n return {\n map: parseSourceMapInput(map),\n mapPath: codePath\n };\n }\n const sourceMapFilename = new URL(sourceMappingURL, 'file://').pathname;\n const mapPath = join(dirname(codePath), sourceMapFilename);\n if (!existsSync(mapPath)) {\n return null;\n }\n return {\n map: parseSourceMapInput(readFileSync(mapPath, 'utf-8')),\n mapPath\n };\n}\nfunction parseDataUrl(url) {\n const [prefix, payload] = url.split(',');\n const encoding = prefix.split(';').at(-1);\n switch(encoding){\n case 'base64':\n return Buffer.from(payload, 'base64').toString();\n case 'uri':\n return decodeURIComponent(payload);\n default:\n throw new Error('Unsupported source map encoding: ' + encoding);\n }\n}\n/**\n * Normalize the paths of the sources in the source map to be absolute paths.\n */ function normalizeSourcesPaths(map, mapPath) {\n const mapDir = dirname(mapPath);\n return map.sources.map((source)=>{\n if (!source) {\n return source;\n }\n return isAbsolute(source) ? source : resolve(mapDir, map.sourceRoot ?? '.', source);\n });\n}\n/**\n * Loop through the sources and try to load missing `sourcesContent` from the file system.\n */ function loadMissingSourcesContent(map) {\n return map.sources.map((source, index)=>{\n if (map.sourcesContent?.[index]) {\n return map.sourcesContent[index];\n }\n if (source && existsSync(source)) {\n return readFileSync(source, 'utf-8');\n }\n return null;\n });\n}\n\nexport { loadCodeAndMap };\n//# sourceMappingURL=index.js.map\n","import { relative, win32, posix } from 'path';\nimport type { Options } from './types';\n\nexport const esmRegex: RegExp = /\\.m[tj]sx?$/;\nexport const cjsRegex: RegExp = /\\.c[tj]sx?$/;\nexport const jsRegexp: RegExp = /\\.[cm]?[tj]s[x]?$/;\n\nexport function normalizeOptions( options?: Partial<Options> ) {\n\tconst defaultOptions: Options = {\n\t\topen: true,\n\t\tformat: 'html',\n\t\tdetailed: false,\n\t\tgzip: false,\n\t\tbrotli: false,\n\t};\n\n\treturn Object.assign( {}, defaultOptions, options ) as Options;\n}\n\nexport function normalizePath( pathToNormalize: string ): string {\n\t// Unicode escape sequences used by Rollup and Vite to identify virtual modules\n\tconst normalized = pathToNormalize.replace( /^\\0/, '' )\n\n\t// Transform absolute paths to relative paths\n\tconst relativized = relative( process.cwd(), normalized );\n\n\t// Ensure paths are POSIX-compliant - https://stackoverflow.com/a/63251716/4617687\n\treturn relativized.replaceAll( win32.sep, posix.sep );\n}\n","import { default as remapping, type DecodedSourceMap, type EncodedSourceMap } from '@ampproject/remapping';\nimport { loadCodeAndMap } from 'load-source-map';\nimport { resolve } from 'path';\nimport { normalizePath } from '../utils';\nimport type { CodeMap, ReportInput } from '../types';\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 = addSourcesToInputs(\n\t\t\tresolve( dirPath, file ),\n\t\t\tinputs\n\t\t);\n\n\t\tif ( !codeMap ) {\n\t\t\treturn;\n\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\n/**\n * Loads the source map of a given file and adds its \"sources\" to the given inputs object.\n */\nexport function addSourcesToInputs(\n\tpath: string,\n\tinputs: Record<string, ReportInput>\n): CodeMap | null {\n\tconst codeMap = loadCodeAndMap( path );\n\n\tif ( !codeMap ) {\n\t\treturn null;\n\t}\n\n\tconst parentPath = normalizePath( path );\n\tconst format = inputs[ parentPath ]?.format ?? 'unknown';\n\n\tcodeMap.map?.sources\n\t\t.filter( source => source !== null )\n\t\t.forEach( ( source, index ) => {\n\t\t\tconst normalizedPath = normalizePath( source );\n\n\t\t\tif ( parentPath === normalizedPath ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tinputs[ normalizedPath ] = {\n\t\t\t\tbytes: Buffer.byteLength( codeMap.map!.sourcesContent?.[ index ] ?? '' ),\n\t\t\t\tformat,\n\t\t\t\timports: [],\n\t\t\t\tbelongsTo: parentPath\n\t\t\t};\n\t\t} );\n\t\n\treturn codeMap;\n}\n","import { gzipSync, brotliCompressSync } from 'zlib';\nimport type { DecodedSourceMap, SourceMapSegment } from '@ampproject/remapping';\nimport type { Options, Sizes } from '../types';\n\nconst UNASSIGNED = '[unassigned]';\n\nexport function getBytesPerSource(\n\tcode: string,\n\tmap: DecodedSourceMap,\n\tassetSizes: Sizes,\n\toptions: Options\n): Map<string, Sizes> {\n\tconst contributions = getContributions( map.sources );\n\n\t// Split the code into lines\n\tconst codeLines = code.split( /(?<=\\r?\\n)/ );\n\n\tfor ( let lineIndex = 0; lineIndex < codeLines.length; lineIndex++ ) {\n\t\tconst lineCode = codeLines[ lineIndex ];\n\t\tconst mappings = map.mappings[ lineIndex ] || [];\n\t\tlet currentColumn = 0;\n\n\t\tfor ( let i = 0; i <= mappings.length; i++ ) {\n\t\t\t// 0: generatedColumn\n\t\t\t// 1: sourceIndex\n\t\t\t// 2: originalLine\n\t\t\t// 3: originalColumn\n\t\t\t// 4: nameIndex\n\n\t\t\tconst mapping: SourceMapSegment | undefined = mappings[ i ];\n\t\t\tconst startColumn = mapping?.[ 0 ] ?? lineCode.length;\n\t\t\tconst endColumn = mappings[ i + 1 ]?.[ 0 ] ?? lineCode.length;\n\n\t\t\t// Slice the code from currentColumn to startColumn for unassigned code\n\t\t\tif ( startColumn > currentColumn ) {\n\t\t\t\tcontributions.set( UNASSIGNED, contributions.get( UNASSIGNED ) + lineCode.slice( currentColumn, startColumn ) );\n\t\t\t}\n\n\t\t\tif ( mapping ) {\n\t\t\t\t// Slice the code from startColumn to endColumn for assigned code\n\t\t\t\tconst sourceIndex = mapping?.[ 1 ];\n\t\t\t\tconst codeSlice = lineCode.slice( startColumn, endColumn );\n\t\t\t\tconst source = sourceIndex !== undefined ? map.sources[ sourceIndex ]! : UNASSIGNED;\n\n\t\t\t\tcontributions.set( source, contributions.get( source ) + codeSlice );\n\t\t\t\tcurrentColumn = endColumn;\n\t\t\t} else {\n\t\t\t\tcurrentColumn = startColumn;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compute sizes for each source\n\tconst sourceSizes = new Map<string, Sizes>();\n\n\tconst contributionsSum: Sizes = {\n\t\tuncompressed: 0,\n\t\tgzip: 0,\n\t\tbrotli: 0\n\t};\n\n\tfor ( const [ source, codeSegment ] of contributions ) {\n\t\tconst sizes = getSizes( codeSegment, options );\n\n\t\tcontributionsSum.uncompressed += sizes.uncompressed;\n\t\tcontributionsSum.gzip += sizes.gzip;\n\t\tcontributionsSum.brotli += sizes.brotli;\n\n\t\tsourceSizes.set( source, sizes );\n\t}\n\n\treturn adjustSizes( sourceSizes, assetSizes, contributionsSum, options );\n}\n\nexport function getSizes(\n\tcode: string,\n\toptions: Options\n): Sizes {\n\treturn {\n\t\tuncompressed: Buffer.byteLength( code ),\n\t\tgzip: options.gzip ? gzipSync( code ).length : 0,\n\t\tbrotli: options.brotli ? brotliCompressSync( code ).length : 0\n\t};\n}\n\nfunction getContributions( sources: Array<string | null> ): Map<string, string> {\n\tconst contributions = new Map<string, string>();\n\n\t// Populate contributions with sources\n\tsources\n\t\t.filter( source => source !== null )\n\t\t.forEach( source => contributions.set( source, '' ) );\n\n\t// Add entry for the code that is not assigned to any source\n\tcontributions.set( UNASSIGNED, '' );\n\n\treturn contributions;\n}\n\n/**\n * Compression efficiency improves with the size of the file.\n *\n * However, what we have is the compressed size of the entire bundle (`actual`),\n * the sum of all files compressed individually (`sum`) and the compressed\n * size of a given file (`content`). The last value is essentially a “worst-case”\n * scenario, and the actual size of the file in the bundle is likely to be smaller.\n *\n * We use this information to estimate the actual size of the file in the bundle\n * after compression.\n */\nfunction adjustSizes(\n\tsources: Map<string, Sizes>,\n\tasset: Sizes,\n\tsums: Sizes,\n\toptions: Options\n): Map<string, Sizes> {\n\tconst gzipDelta = options.gzip ? asset.gzip / sums.gzip : 0;\n\tconst brotliDelta = options.brotli ? asset.brotli / sums.brotli : 0;\n\n\tfor ( const [ source, sizes ] of sources ) {\n\t\tsources.set( source, {\n\t\t\tuncompressed: sizes.uncompressed,\n\t\t\tgzip: options.gzip ? Math.round( sizes.gzip * gzipDelta ) : 0,\n\t\t\tbrotli: options.brotli ? Math.round( sizes.brotli * brotliDelta ) : 0\n\t\t} );\n\t}\n\n\treturn sources;\n}\n","import { readFileSync } from 'fs';\nimport { fileURLToPath } from 'url';\nimport { dirname, resolve } from 'path';\nimport { loadCodeAndMap } from 'load-source-map';\nimport { decode } from '@jridgewell/sourcemap-codec';\nimport { mapSourceMap } from './sourcemap/map.js';\nimport { getBytesPerSource, getSizes } from './sourcemap/bytes.js';\nimport type {\n JsonReport,\n MaybeCodeMap,\n ReportInput,\n ReportOutput,\n CodeMap,\n ReportOutputInput,\n Options\n} from './types.js';\nimport { normalizePath } from './utils.js';\n\nexport function generateJsonReport(\n assets: Array<string>,\n inputs: Record<string, ReportInput>,\n options: Options\n): JsonReport {\n const outputs = assets\n .filter( asset => !asset.endsWith( '.map' ) )\n .reduce( ( carry, asset ) => {\n const data = processAsset( asset, inputs, options );\n\n if ( data ) {\n carry[ normalizePath( asset ) ] = data;\n }\n\n return carry;\n }, {} as Record<string, ReportOutput> );\n\n return {\n inputs,\n outputs\n };\n}\n\nexport function generateHtmlReport(\n assets: Array<string>,\n inputs: Record<string, ReportInput>,\n options: Options\n): string {\n const json = generateJsonReport( assets, inputs, options );\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(\n asset: string,\n inputs: Record<string, ReportInput>,\n options: Options\n): ReportOutput | void {\n const maybeCodeMap = loadCodeAndMap( asset );\n\n if ( !hasCodeAndMap( maybeCodeMap ) ) {\n return;\n }\n\n const { code, map } = maybeCodeMap;\n const mapped = options.detailed\n ? mapSourceMap( map, dirname( asset ), inputs )\n : { ...map, mappings: decode( map.mappings ) };\n\n mapped.sources = mapped.sources.map( source => normalizePath( source! ) );\n\n const assetSizes = getSizes( code, options );\n const bytes = getBytesPerSource( code, mapped, assetSizes, options );\n\n return {\n ...assetSizes,\n inputs: Array.from( bytes ).reduce( ( carry, [ source, sizes ] ) => {\n carry[ normalizePath( source ) ] = sizes;\n\n return carry;\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';\nimport { normalizeOptions } from '../utils.js';\n\nexport async function generateReportFromAssets(\n\tassets: string[],\n\tinputs: JsonReport[ 'inputs' ],\n\tuserOptions: Partial<Options>\n): Promise<void> {\n\tconst options = normalizeOptions( userOptions );\n\tconst handler = options.format === 'html' ? saveHtml : saveJson;\n\tconst path = handler( assets, inputs, options );\n\n\tif ( !options.open || !path ) {\n\t\treturn;\n\t}\n\n\t/**\n\t * `open` is ESM-only package, so we need to import it\n\t * dynamically to make it work in CommonJS environment.\n\t */\n\tconst { default: open } = await import( 'open' );\n\n\topen( path );\n}\n\nfunction saveHtml(\n\tassets: string[],\n\tinputs: JsonReport[ 'inputs' ],\n\toptions: Options\n): string | null {\n\tconst report = generateHtmlReport( assets, inputs, options );\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\toptions: Options\n): string | null {\n\tconst report = generateJsonReport( assets, inputs, options );\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 { resolve } from 'path';\nimport { addSourcesToInputs } from '../sourcemap/map';\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\t// Esbuild already reads the existing source maps, so there's no need to do it again\n\t\t\toptions.detailed = false;\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 cwd = process.cwd();\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\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\t/**\n\t\t\t\t\t\t * Because esbuild already reads the existing source maps, there may be\n\t\t\t\t\t\t * cases where some report \"outputs\" include \"inputs\" don't exist in the\n\t\t\t\t\t\t * main \"inputs\" object. To avoid this, we parse each esbuild input and\n\t\t\t\t\t\t * add its sources to the \"inputs\" object.\n\t\t\t\t\t\t */\n\t\t\t\t\t\taddSourcesToInputs(\n\t\t\t\t\t\t\tresolve( cwd, path ),\n\t\t\t\t\t\t\tacc\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 ).map( path => resolve( cwd, path ) ),\n\t\t\t\t\tinputs,\n\t\t\t\t\toptions\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\t};\n}\n","import { join, resolve, dirname } from 'path';\nimport { normalizePath, cjsRegex, jsRegexp } 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\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\toptions\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 || jsRegexp.test( moduleId ) ) {\n\t\treturn 'esm';\n\t}\n\n\treturn'unknown';\n}\n","import { join } from 'path';\nimport { normalizePath, jsRegexp } from '../utils';\nimport { generateReportFromAssets } from '../report/generate';\nimport type { Compiler, StatsModule } from 'webpack';\nimport type { Options, ModuleFormat, JsonReport } from '../types';\n\nexport class SondaWebpackPlugin {\n\toptions: Partial<Options>;\n\n\tconstructor ( options: Partial<Options> = {} ) {\n\t\tthis.options = options;\n\t}\n\n\tapply( compiler: Compiler ): void {\n\t\tcompiler.options.output.devtoolModuleFilenameTemplate = '[absolute-resource-path]';\n\n\t\tcompiler.hooks.afterEmit.tapPromise( 'SondaWebpackPlugin', compilation => {\n\t\t\tconst inputs: JsonReport[ 'inputs' ] = {};\n\t\t\tconst stats = compilation.getStats().toJson( {\n\t\t\t\tmodules: true,\n\t\t\t\tprovidedExports: true,\n\t\t\t} );\n\n\t\t\tconst outputPath = stats.outputPath || compiler.outputPath;\n\t\t\tconst modules: Array<StatsModule> = stats.modules\n\t\t\t\t?.flatMap( mod => mod.modules ? [ mod, ...mod.modules ] : mod )\n\t\t\t\t.filter( mod => mod.nameForCondition && !mod.codeGenerated )\n\t\t\t\t.filter( ( mod, index, self ) => self.findIndex( m => m.nameForCondition === mod.nameForCondition ) === index )\n\t\t\t\t|| [];\n\n\t\t\tmodules.forEach( module => {\n\t\t\t\tconst imports = modules.reduce( ( acc, { nameForCondition, issuerName, reasons } ) => {\n\t\t\t\t\tif ( issuerName === module.name || reasons?.some( reason => reason.resolvedModule === module.name ) ) {\n\t\t\t\t\t\tacc.push( normalizePath( nameForCondition! ) );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn acc;\n\t\t\t\t}, [] as Array<string> );\n\n\t\t\t\tinputs[ normalizePath( module.nameForCondition! ) ] = {\n\t\t\t\t\tbytes: module.size || 0,\n\t\t\t\t\tformat: getFormat( module ),\n\t\t\t\t\timports,\n\t\t\t\t\tbelongsTo: null\n\t\t\t\t};\n\t\t\t} );\n\n\t\t\treturn generateReportFromAssets(\n\t\t\t\tstats.assets?.map( asset => join( outputPath, asset.name ) ) || [],\n\t\t\t\tinputs,\n\t\t\t\tthis.options\n\t\t\t);\n\t\t} );\n\t}\n}\n\nfunction getFormat( module: StatsModule ): ModuleFormat {\n\tif ( !jsRegexp.test( module.nameForCondition! ) ) {\n\t\treturn 'unknown';\n\t}\n\n\t/**\n\t * Sometimes ESM modules have `moduleType` set as `javascript/auto`, so we\n\t * also need to check if the module has exports to determine if it's ESM.\n\t */\n\tif ( module.moduleType === 'javascript/esm' || !!module.providedExports?.length ) {\n\t\treturn 'esm';\n\t}\n\n\treturn 'cjs';\n}\n"],"names":["parseSourceMapInput","str","JSON","parse","replace","sourceMappingRegExp","loadCodeAndMap","codePath","existsSync","code","readFileSync","extractedComment","includes","Array","from","matchAll","at","length","maybeMap","loadMap","map","mapPath","sources","normalizeSourcesPaths","sourcesContent","loadMissingSourcesContent","sourceRoot","sourceMappingURL","startsWith","parseDataUrl","sourceMapFilename","URL","pathname","join","dirname","url","prefix","payload","split","encoding","Buffer","toString","decodeURIComponent","Error","mapDir","source","isAbsolute","resolve","index","cjsRegex","jsRegexp","normalizeOptions","options","defaultOptions","open","format","detailed","gzip","brotli","Object","assign","normalizePath","pathToNormalize","normalized","relativized","relative","process","cwd","replaceAll","win32","sep","posix","mapSourceMap","dirPath","inputs","alreadyRemapped","Set","remapped","remapping","file","ctx","has","add","codeMap","addSourcesToInputs","content","decodedMappings","path","parentPath","filter","forEach","normalizedPath","bytes","byteLength","imports","belongsTo","UNASSIGNED","getBytesPerSource","assetSizes","contributions","getContributions","codeLines","lineIndex","lineCode","mappings","currentColumn","i","mapping","startColumn","endColumn","set","get","slice","sourceIndex","codeSlice","undefined","sourceSizes","Map","contributionsSum","uncompressed","codeSegment","sizes","getSizes","adjustSizes","gzipSync","brotliCompressSync","asset","sums","gzipDelta","brotliDelta","Math","round","generateJsonReport","assets","outputs","endsWith","reduce","carry","data","processAsset","generateHtmlReport","json","__dirname","fileURLToPath","template","stringify","maybeCodeMap","hasCodeAndMap","mapped","decode","result","Boolean","generateReportFromAssets","userOptions","handler","saveHtml","saveJson","default","report","writeFileSync","SondaEsbuildPlugin","name","setup","build","initialOptions","metafile","onEnd","console","error","entries","acc","keys","SondaRollupPlugin","writeBundle","dir","bundle","outputDir","moduleParsed","module","id","getFormat","meta","commonjs","isCommonJS","importedIds","moduleId","test","SondaWebpackPlugin","apply","compiler","output","devtoolModuleFilenameTemplate","hooks","afterEmit","tapPromise","compilation","stats","getStats","toJson","modules","providedExports","outputPath","flatMap","mod","nameForCondition","codeGenerated","self","findIndex","m","issuerName","reasons","some","reason","resolvedModule","push","size","constructor","moduleType"],"mappings":"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"}
package/dist/index.html CHANGED
@@ -1,3 +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 Fr=Object.defineProperty;var qe=t=>{throw TypeError(t)};var qr=(t,e,r)=>e in t?Fr(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var Q=(t,e,r)=>qr(t,typeof e!="symbol"?e+"":e,r),ce=(t,e,r)=>e.has(t)||qe("Cannot "+r);var nt=(t,e,r)=>(ce(t,e,"read from private field"),r?r.call(t):e.get(t)),zt=(t,e,r)=>e.has(t)?qe("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),de=(t,e,r,n)=>(ce(t,e,"write to private field"),n?n.call(t,r):e.set(t,r),r),He=(t,e,r)=>(ce(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 o of i)if(o.type==="childList")for(const s of o.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&n(s)}).observe(document,{childList:!0,subtree:!0});function r(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerPolicy&&(o.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?o.credentials="include":i.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function n(i){if(i.ep)return;i.ep=!0;const o=r(i);fetch(i.href,o)}})();window.SONDA_JSON_REPORT=JSON.parse(String.raw`__REPORT_DATA__`);const Hr=!1;var Te=Array.isArray,Ne=Array.from,Wr=Object.defineProperty,Rt=Object.getOwnPropertyDescriptor,Ur=Object.getOwnPropertyDescriptors,Vr=Object.prototype,Gr=Array.prototype,nr=Object.getPrototypeOf;function Jr(t){return typeof t=="function"}const Pt=()=>{};function Kr(t){return t()}function he(t){for(var e=0;e<t.length;e++)t[e]()}const ot=2,ir=4,Tt=8,Ae=16,st=32,ne=64,gt=128,Kt=256,Y=512,vt=1024,Bt=2048,_t=4096,jt=8192,or=16384,Ft=32768,Yr=1<<18,Yt=1<<19,ct=Symbol("$state"),Zr=Symbol("");function sr(t){return t===this.v}function ar(t,e){return t!=t?e==e:t!==e||t!==null&&typeof t=="object"||typeof t=="function"}function Xr(t){return!ar(t,this.v)}function Qr(t){throw new Error("effect_in_teardown")}function $r(){throw new Error("effect_in_unowned_derived")}function tn(t){throw new Error("effect_orphan")}function en(){throw new Error("effect_update_depth_exceeded")}function rn(){throw new Error("state_descriptors_fixed")}function nn(){throw new Error("state_prototype_fixed")}function on(){throw new Error("state_unsafe_local_read")}function sn(){throw new Error("state_unsafe_mutation")}function G(t){return{f:0,v:t,reactions:null,equals:sr,version:0}}function B(t){return ln(G(t))}function an(t){var r;const e=G(t);return e.equals=Xr,R!==null&&R.l!==null&&((r=R.l).s??(r.s=[])).push(e),e}function ln(t){return z!==null&&z.f&ot&&(rt===null?En([t]):rt.push(t)),t}function T(t,e){return z!==null&&me()&&z.f&ot&&(rt===null||!rt.includes(t))&&sn(),t.equals(e)||(t.v=e,t.version=yr(),lr(t,vt),me()&&O!==null&&O.f&Y&&!(O.f&st)&&(j!==null&&j.includes(t)?(et(O,vt),le(O)):dt===null?kn([t]):dt.push(t))),e}function lr(t,e){var r=t.reactions;if(r!==null)for(var n=me(),i=r.length,o=0;o<i;o++){var s=r[o],f=s.f;f&vt||!n&&s===O||(et(s,e),f&(Y|gt)&&(f&ot?lr(s,Bt):le(s)))}}const Me=1,ze=2,ur=4,un=8,fn=16,cn=4,dn=1,vn=2,q=Symbol();let fr=!1;function H(t,e=null,r){if(typeof t!="object"||t===null||ct in t)return t;const n=nr(t);if(n!==Vr&&n!==Gr)return t;var i=new Map,o=Te(t),s=G(0);o&&i.set("length",G(t.length));var f;return new Proxy(t,{defineProperty(a,l,u){(!("value"in u)||u.configurable===!1||u.enumerable===!1||u.writable===!1)&&rn();var d=i.get(l);return d===void 0?(d=G(u.value),i.set(l,d)):T(d,H(u.value,f)),!0},deleteProperty(a,l){var u=i.get(l);return u===void 0?l in a&&i.set(l,G(q)):(T(u,q),We(s)),!0},get(a,l,u){var _;if(l===ct)return t;var d=i.get(l),v=l in a;if(d===void 0&&(!v||(_=Rt(a,l))!=null&&_.writable)&&(d=G(H(v?a[l]:q,f)),i.set(l,d)),d!==void 0){var c=h(d);return c===q?void 0:c}return Reflect.get(a,l,u)},getOwnPropertyDescriptor(a,l){var u=Reflect.getOwnPropertyDescriptor(a,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!==q)return{enumerable:!0,configurable:!0,value:c,writable:!0}}return u},has(a,l){var c;if(l===ct)return!0;var u=i.get(l),d=u!==void 0&&u.v!==q||Reflect.has(a,l);if(u!==void 0||O!==null&&(!d||(c=Rt(a,l))!=null&&c.writable)){u===void 0&&(u=G(d?H(a[l],f):q),i.set(l,u));var v=h(u);if(v===q)return!1}return d},set(a,l,u,d){var w;var v=i.get(l),c=l in a;if(o&&l==="length")for(var _=u;_<v.v;_+=1){var p=i.get(_+"");p!==void 0?T(p,q):_ in a&&(p=G(q),i.set(_+"",p))}v===void 0?(!c||(w=Rt(a,l))!=null&&w.writable)&&(v=G(void 0),T(v,H(u,f)),i.set(l,v)):(c=v.v!==q,T(v,H(u,f)));var x=Reflect.getOwnPropertyDescriptor(a,l);if(x!=null&&x.set&&x.set.call(d,u),!c){if(o&&typeof l=="string"){var b=i.get("length"),E=Number(l);Number.isInteger(E)&&E>=b.v&&T(b,E+1)}We(s)}return!0},ownKeys(a){h(s);var l=Reflect.ownKeys(a).filter(v=>{var c=i.get(v);return c===void 0||c.v!==q});for(var[u,d]of i)d.v!==q&&!(u in a)&&l.push(u);return l},setPrototypeOf(){nn()}})}function We(t,e=1){T(t,t.v+e)}function Ue(t){return t!==null&&typeof t=="object"&&ct in t?t[ct]:t}function hn(t,e){return Object.is(Ue(t),Ue(e))}var Ve,it,cr,dr;function _n(){if(Ve===void 0){Ve=window,it=document;var t=Element.prototype,e=Node.prototype;cr=Rt(e,"firstChild").get,dr=Rt(e,"nextSibling").get,t.__click=void 0,t.__className="",t.__attributes=null,t.__e=void 0,Text.prototype.__t=void 0}}function Pe(t=""){return document.createTextNode(t)}function Ot(t){return cr.call(t)}function ie(t){return dr.call(t)}function g(t){return Ot(t)}function C(t,e){{var r=Ot(t);return r instanceof Comment&&r.data===""?ie(r):r}}function m(t,e=1,r=!1){let n=t;for(;e--;)n=ie(n);return n}function pn(t){t.textContent=""}function vr(t){O===null&&z===null&&tn(),z!==null&&z.f&gt&&$r(),Le&&Qr()}function gn(t,e){var r=e.last;r===null?e.last=e.first=t:(r.next=t,t.prev=r,e.last=t)}function Nt(t,e,r,n=!0){var i=(t&ne)!==0,o=O,s={ctx:R,deps:null,nodes_start:null,nodes_end:null,f:t|vt,first:null,fn:e,last:null,next:null,parent:i?null:o,prev:null,teardown:null,transitions:null,version:0};if(r){var f=xt;try{Ge(!0),ae(s),s.f|=or}catch(u){throw wt(s),u}finally{Ge(f)}}else e!==null&&le(s);var a=r&&s.deps===null&&s.first===null&&s.nodes_start===null&&s.teardown===null;if(!a&&!i&&n&&(o!==null&&gn(s,o),z!==null&&z.f&ot)){var l=z;(l.children??(l.children=[])).push(s)}return s}function wn(t){const e=Nt(Tt,null,!1);return et(e,Y),e.teardown=t,e}function _e(t){vr();var e=O!==null&&(O.f&Tt)!==0&&R!==null&&!R.m;if(e){var r=R;(r.e??(r.e=[])).push({fn:t,parent:O})}else{var n=At(t);return n}}function mn(t){return vr(),De(t)}function bn(t){const e=Nt(ne,t,!0);return()=>{wt(e)}}function At(t){return Nt(ir,t,!1)}function De(t){return Nt(Tt,t,!0)}function A(t){return De(t)}function oe(t,e=0){return Nt(Tt|Ae|e,t,!0)}function pt(t,e=!0){return Nt(Tt|st,t,!0,e)}function hr(t){var e=t.teardown;if(e!==null){const r=Le,n=z;Je(!0),Ke(null);try{e.call(null)}finally{Je(r),Ke(n)}}}function wt(t,e=!0){var r=!1;if((e||t.f&Yr)&&t.nodes_start!==null){for(var n=t.nodes_start,i=t.nodes_end;n!==null;){var o=n===i?null:ie(n);n.remove(),n=o}r=!0}Er(t,e&&!r),Ct(t,0),et(t,jt);var s=t.transitions;if(s!==null)for(const a of s)a.stop();hr(t);var f=t.parent;f!==null&&f.first!==null&&_r(t),t.next=t.prev=t.teardown=t.ctx=t.deps=t.parent=t.fn=t.nodes_start=t.nodes_end=null}function _r(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 Zt(t,e){var r=[];Re(t,r,!0),pr(r,()=>{wt(t),e&&e()})}function pr(t,e){var r=t.length;if(r>0){var n=()=>--r||e();for(var i of t)i.out(n)}else e()}function Re(t,e,r){if(!(t.f&_t)){if(t.f^=_t,t.transitions!==null)for(const s of t.transitions)(s.is_global||r)&&e.push(s);for(var n=t.first;n!==null;){var i=n.next,o=(n.f&Ft)!==0||(n.f&st)!==0;Re(n,e,o?r:!1),n=i}}}function Xt(t){gr(t,!0)}function gr(t,e){if(t.f&_t){t.f^=_t,qt(t)&&ae(t);for(var r=t.first;r!==null;){var n=r.next,i=(r.f&Ft)!==0||(r.f&st)!==0;gr(r,i?e:!1),r=n}if(t.transitions!==null)for(const o of t.transitions)(o.is_global||e)&&o.in()}}let pe=!1,ge=[];function yn(){pe=!1;const t=ge.slice();ge=[],he(t)}function se(t){pe||(pe=!0,queueMicrotask(yn)),ge.push(t)}function S(t){let e=ot|vt;O===null&&(e|=gt);const r={children:null,deps:null,equals:sr,f:e,fn:t,reactions:null,v:null,version:0};if(z!==null&&z.f&ot){var n=z;(n.children??(n.children=[])).push(r)}return r}function wr(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&ot?xn(n):wt(n)}}}function mr(t){var e;wr(t),e=xr(t);var r=(yt||t.f&gt)&&t.deps!==null?Bt:Y;et(t,r),t.equals(e)||(t.v=e,t.version=yr())}function xn(t){wr(t),Ct(t,0),et(t,jt),t.children=t.deps=t.reactions=t.fn=null}let Qt=!1,xt=!1,Le=!1;function Ge(t){xt=t}function Je(t){Le=t}let we=[],Lt=0;let z=null;function Ke(t){z=t}let O=null;function Ye(t){O=t}let rt=null;function En(t){rt=t}let j=null,V=0,dt=null;function kn(t){dt=t}let br=0,yt=!1,R=null;function yr(){return++br}function me(){return R!==null&&R.l===null}function qt(t){var s,f;var e=t.f;if(e&vt)return!0;if(e&Bt){var r=t.deps,n=(e&gt)!==0;if(r!==null){var i;if(e&Kt){for(i=0;i<r.length;i++)((s=r[i]).reactions??(s.reactions=[])).push(t);t.f^=Kt}for(i=0;i<r.length;i++){var o=r[i];if(qt(o)&&mr(o),n&&O!==null&&!yt&&!((f=o==null?void 0:o.reactions)!=null&&f.includes(t))&&(o.reactions??(o.reactions=[])).push(t),o.version>t.version)return!0}}n||et(t,Y)}return!1}function On(t,e,r){throw t}function xr(t){var u;var e=j,r=V,n=dt,i=z,o=yt,s=rt;j=null,V=0,dt=null,z=t.f&(st|ne)?null:t,yt=!xt&&(t.f&gt)!==0,rt=null;try{var f=(0,t.fn)(),a=t.deps;if(j!==null){var l;if(Ct(t,V),a!==null&&V>0)for(a.length=V+j.length,l=0;l<j.length;l++)a[V+l]=j[l];else t.deps=a=j;if(!yt)for(l=V;l<a.length;l++)((u=a[l]).reactions??(u.reactions=[])).push(t)}else a!==null&&V<a.length&&(Ct(t,V),a.length=V);return f}finally{j=e,V=r,dt=n,z=i,yt=o,rt=s}}function Sn(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&ot&&(j===null||!j.includes(e))&&(et(e,Bt),e.f&(gt|Kt)||(e.f^=Kt),Ct(e,0))}function Ct(t,e){var r=t.deps;if(r!==null)for(var n=e;n<r.length;n++)Sn(t,r[n])}function Er(t,e=!1){var r=t.first;for(t.first=t.last=null;r!==null;){var n=r.next;wt(r,e),r=n}}function ae(t){var e=t.f;if(!(e&jt)){et(t,Y);var r=O,n=R;O=t,R=t.ctx;try{e&Ae||Er(t),hr(t);var i=xr(t);t.teardown=typeof i=="function"?i:null,t.version=br}catch(o){On(o)}finally{O=r,R=n}}}function Tn(){Lt>1e3&&(Lt=0,en()),Lt++}function Nn(t){var e=t.length;if(e!==0){Tn();var r=xt;xt=!0;try{for(var n=0;n<e;n++){var i=t[n];if(i.f&Yt&&(i.f^=Yt),i.first===null&&!(i.f&st))Ze([i]);else{var o=[];kr(i,o),Ze(o)}}}finally{xt=r}}}function Ze(t){var e=t.length;if(e!==0)for(var r=0;r<e;r++){var n=t[r];!(n.f&(jt|_t))&&qt(n)&&(ae(n),n.deps===null&&n.first===null&&n.nodes_start===null&&(n.teardown===null?_r(n):n.fn=null))}}function An(){if(Qt=!1,Lt>1001)return;const t=we;we=[],Nn(t),Qt||(Lt=0)}function le(t){Qt||(Qt=!0,queueMicrotask(An));for(var e=t;e.parent!==null;){e=e.parent;var r=e.f;if(r&st){if(!(r&Y))return;e.f^=Y}if(r&ne){if(r&Yt)return;e.f^=Yt}}we.push(e)}function kr(t,e){var r=t.first,n=[];t:for(;r!==null;){var i=r.f,o=(i&_t)===0,s=(i&st)!==0,f=(i&Y)!==0,a=r.first;if(o&&(!s||!f))if(s&&et(r,Y),i&Tt){if(!s&&qt(r)&&ae(r),a=r.first,a!==null){r=a;continue}}else i&ir&&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++)a=n[d],e.push(a),kr(a,e)}function h(t){var e=t.f;if(e&jt)return t.v;if(z!==null){rt!==null&&rt.includes(t)&&on();var r=z.deps;j===null&&r!==null&&r[V]===t?V++:j===null?j=[t]:j.push(t),dt!==null&&O!==null&&O.f&Y&&!(O.f&st)&&dt.includes(t)&&(et(O,vt),le(O))}if(e&ot){var n=t;qt(n)&&mr(n)}return t.v}function Ht(t){const e=z;try{return z=null,t()}finally{z=e}}const Mn=~(vt|Bt|Y);function et(t,e){t.f=t.f&Mn|e}function W(t,e=!1,r){R={p:R,c:null,e:null,m:!1,s:t,x:null,l:null},e||(R.l={s:null,u:null,r1:[],r2:G(!1)})}function U(t){const e=R;if(e!==null){const o=e.e;if(o!==null){var r=O;e.e=null;try{for(var n=0;n<o.length;n++){var i=o[n];Ye(i.parent),At(i.fn)}}finally{Ye(r)}}R=e.p,e.m=!0}return{}}function zn(t){if(!(typeof t!="object"||!t||t instanceof EventTarget)){if(ct in t)be(t);else if(!Array.isArray(t))for(let e in t){const r=t[e];typeof r=="object"&&r&&ct in r&&be(r)}}}function be(t,e=new Set){if(typeof t=="object"&&t!==null&&!(t instanceof EventTarget)&&!e.has(t)){e.add(t),t instanceof Date&&t.getTime();for(let n in t)try{be(t[n],e)}catch{}const r=nr(t);if(r!==Object.prototype&&r!==Array.prototype&&r!==Map.prototype&&r!==Set.prototype&&r!==Date.prototype){const n=Ur(r);for(let i in n){const o=n[i].get;if(o)try{o.call(t)}catch{}}}}}const Or=new Set,ye=new Set;function Pn(t,e,r,n){function i(o){if(n.capture||Dt.call(e,o),!o.cancelBubble)return r.call(this,o)}return t.startsWith("pointer")||t.startsWith("touch")||t==="wheel"?se(()=>{e.addEventListener(t,i,n)}):e.addEventListener(t,i,n),i}function Et(t,e,r,n,i){var o={capture:n,passive:i},s=Pn(t,e,r,o);(e===document.body||e===window||e===document)&&wn(()=>{e.removeEventListener(t,s,o)})}function ue(t){for(var e=0;e<t.length;e++)Or.add(t[e]);for(var r of ye)r(t)}function Dt(t){var x;var e=this,r=e.ownerDocument,n=t.type,i=((x=t.composedPath)==null?void 0:x.call(t))||[],o=i[0]||t.target,s=0,f=t.__root;if(f){var a=i.indexOf(f);if(a!==-1&&(e===document||e===window)){t.__root=e;return}var l=i.indexOf(e);if(l===-1)return;a<=l&&(s=a)}if(o=i[s]||t.target,o!==e){Wr(t,"currentTarget",{configurable:!0,get(){return o||r}});try{for(var u,d=[];o!==null;){var v=o.assignedSlot||o.parentNode||o.host||null;try{var c=o["__"+n];if(c!==void 0&&!o.disabled)if(Te(c)){var[_,...p]=c;_.apply(o,[t,...p])}else c.call(o,t)}catch(b){u?d.push(b):u=b}if(t.cancelBubble||v===e||v===null)break;o=v}if(u){for(let b of d)queueMicrotask(()=>{throw b});throw u}}finally{t.__root=e,delete t.currentTarget}}}function Sr(t){var e=document.createElement("template");return e.innerHTML=t,e.content}function $t(t,e){var r=O;r.nodes_start===null&&(r.nodes_start=t,r.nodes_end=e)}function N(t,e){var r=(e&dn)!==0,n=(e&vn)!==0,i,o=!t.startsWith("<!>");return()=>{i===void 0&&(i=Sr(o?t:"<!>"+t),r||(i=Ot(i)));var s=n?document.importNode(i,!0):i.cloneNode(!0);if(r){var f=Ot(s),a=s.lastChild;$t(f,a)}else $t(s,s);return s}}function Tr(t,e,r="svg"){var n=!t.startsWith("<!>"),i=`<${r}>${n?t:"<!>"+t}</${r}>`,o;return()=>{if(!o){var s=Sr(i),f=Ot(s);o=Ot(f)}var a=o.cloneNode(!0);return $t(a,a),a}}function Ce(){var t=document.createDocumentFragment(),e=document.createComment(""),r=Pe();return t.append(e,r),$t(e,r),t}function k(t,e){t!==null&&t.before(e)}const Dn=["wheel","mousewheel","touchstart","touchmove"];function Rn(t){return Dn.includes(t)}let xe=!0;function M(t,e){e!==(t.__t??(t.__t=t.nodeValue))&&(t.__t=e,t.nodeValue=e==null?"":e+"")}function Ln(t,e){const r=e.anchor??e.target.appendChild(Pe());return Cn(t,{...e,anchor:r})}const bt=new Map;function Cn(t,{target:e,anchor:r,props:n={},events:i,context:o,intro:s=!0}){_n();var f=new Set,a=d=>{for(var v=0;v<d.length;v++){var c=d[v];if(!f.has(c)){f.add(c);var _=Rn(c);e.addEventListener(c,Dt,{passive:_});var p=bt.get(c);p===void 0?(document.addEventListener(c,Dt,{passive:_}),bt.set(c,1)):bt.set(c,p+1)}}};a(Ne(Or)),ye.add(a);var l=void 0,u=bn(()=>(pt(()=>{if(o){W({});var d=R;d.c=o}i&&(n.$$events=i),xe=s,l=t(r,n)||{},xe=!0,o&&U()}),()=>{for(var d of f){e.removeEventListener(d,Dt);var v=bt.get(d);--v===0?(document.removeEventListener(d,Dt),bt.delete(d)):bt.set(d,v)}ye.delete(a),Xe.delete(l)}));return Xe.set(l,u),l}let Xe=new WeakMap;function L(t,e,r,n=null,i=!1){var o=t,s=null,f=null,a=null,l=i?Ft:0;oe(()=>{a!==(a=!!e())&&(a?(s?Xt(s):s=pt(()=>r(o)),f&&Zt(f,()=>{f=null})):(f?Xt(f):n&&(f=pt(()=>n(o))),s&&Zt(s,()=>{s=null})))},l)}function In(t,e,r){var n=t,i=q,o;oe(()=>{ar(i,i=e())&&(o&&Zt(o),o=pt(()=>r(n)))})}let ve=null;function Bn(t,e){return e}function jn(t,e,r,n){for(var i=[],o=e.length,s=0;s<o;s++)Re(e[s].e,i,!0);var f=o>0&&i.length===0&&r!==null;if(f){var a=r.parentNode;pn(a),a.append(r),n.clear(),at(t,e[0].prev,e[o-1].next)}pr(i,()=>{for(var l=0;l<o;l++){var u=e[l];f||(n.delete(u.k),at(t,u.prev,u.next)),wt(u.e,!f)}})}function Ie(t,e,r,n,i,o=null){var s=t,f={flags:e,items:new Map,first:null},a=(e&ur)!==0;if(a){var l=t;s=l.appendChild(Pe())}var u=null;oe(()=>{var d=r(),v=Te(d)?d:d==null?[]:Ne(d),c=v.length;Fn(v,f,s,i,e,n),o!==null&&(c===0?u?Xt(u):u=pt(()=>o(s)):u!==null&&Zt(u,()=>{u=null}))})}function Fn(t,e,r,n,i,o){var Wt,Mt,Ut,Vt;var s=(i&un)!==0,f=(i&(Me|ze))!==0,a=t.length,l=e.items,u=e.first,d=u,v,c=null,_,p=[],x=[],b,E,w,y;if(s)for(y=0;y<a;y+=1)b=t[y],E=o(b,y),w=l.get(E),w!==void 0&&((Wt=w.a)==null||Wt.measure(),(_??(_=new Set)).add(w));for(y=0;y<a;y+=1){if(b=t[y],E=o(b,y),w=l.get(E),w===void 0){var Z=d?d.e.nodes_start:r;c=Hn(Z,e,c,c===null?e.first:c.next,b,E,y,n,i),l.set(E,c),p=[],x=[],d=c.next;continue}if(f&&qn(w,b,y,i),w.e.f&_t&&(Xt(w.e),s&&((Mt=w.a)==null||Mt.unfix(),(_??(_=new Set)).delete(w))),w!==d){if(v!==void 0&&v.has(w)){if(p.length<x.length){var X=x[0],P;c=X.prev;var D=p[0],J=p[p.length-1];for(P=0;P<p.length;P+=1)Qe(p[P],X,r);for(P=0;P<x.length;P+=1)v.delete(x[P]);at(e,D.prev,J.next),at(e,c,D),at(e,J,X),d=X,c=J,y-=1,p=[],x=[]}else v.delete(w),Qe(w,d,r),at(e,w.prev,w.next),at(e,w,c===null?e.first:c.next),at(e,c,w),c=w;continue}for(p=[],x=[];d!==null&&d.k!==E;)(v??(v=new Set)).add(d),x.push(d),d=d.next;if(d===null)continue;w=d}p.push(w),c=w,d=w.next}if(d!==null||v!==void 0){for(var F=v===void 0?[]:Ne(v);d!==null;)F.push(d),d=d.next;var mt=F.length;if(mt>0){var fe=i&ur&&a===0?r:null;if(s){for(y=0;y<mt;y+=1)(Ut=F[y].a)==null||Ut.measure();for(y=0;y<mt;y+=1)(Vt=F[y].a)==null||Vt.fix()}jn(e,F,fe,l)}}s&&se(()=>{var Gt;if(_!==void 0)for(w of _)(Gt=w.a)==null||Gt.apply()}),O.first=e.first&&e.first.e,O.last=c&&c.e}function qn(t,e,r,n){n&Me&&T(t.v,e),n&ze?T(t.i,r):t.i=r}function Hn(t,e,r,n,i,o,s,f,a){var l=ve;try{var u=(a&Me)!==0,d=(a&fn)===0,v=u?d?an(i):G(i):i,c=a&ze?G(s):s,_={i:c,v,k:o,a:null,e:null,prev:r,next:n};return ve=_,_.e=pt(()=>f(t,v,c),fr),_.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{ve=l}}function Qe(t,e,r){for(var n=t.next?t.next.e.nodes_start:r,i=e?e.e.nodes_start:r,o=t.e.nodes_start;o!==n;){var s=ie(o);i.before(o),o=s}}function at(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 Wn(t,e,...r){var n=t,i=Pt,o;oe(()=>{i!==(i=e())&&(o&&(wt(o),o=null),o=pt(()=>i(n,...r)))},Ft)}function I(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 Un(t,e){var r=t.__className,n=Vn(e);(r!==n||fr)&&(n===""?t.removeAttribute("class"):t.setAttribute("class",n),t.__className=n)}function Vn(t){return t??""}function te(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 $e(t,e,r,n,i){var o=t.__attributes??(t.__attributes={}),s=t.style,f="style-"+e;o[f]===r&&s.getPropertyValue(e)===r||(o[f]=r,r==null?s.removeProperty(e):s.setProperty(e,r,""))}const Gn=requestAnimationFrame,Jn=()=>performance.now(),ut={tick:t=>Gn(t),now:()=>Jn(),tasks:new Set};function Nr(t){ut.tasks.forEach(e=>{e.c(t)||(ut.tasks.delete(e),e.f())}),ut.tasks.size!==0&&ut.tick(Nr)}function Kn(t){let e;return ut.tasks.size===0&&ut.tick(Nr),{promise:new Promise(r=>{ut.tasks.add(e={c:t,f:r})}),abort(){ut.tasks.delete(e)}}}function Jt(t,e){t.dispatchEvent(new CustomEvent(e))}function Yn(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 tr(t){const e={},r=t.split(";");for(const n of r){const[i,o]=n.split(":");if(!i||o===void 0)break;const s=Yn(i.trim());e[s]=o.trim()}return e}const Zn=t=>t;function Xn(t,e,r,n){var i=(t&cn)!==0,o="both",s,f=e.inert,a,l;function u(){return s??(s=r()(e,(n==null?void 0:n())??{},{direction:o}))}var d={is_global:i,in(){e.inert=f,Jt(e,"introstart"),a=Ee(e,u(),l,1,()=>{Jt(e,"introend"),a==null||a.abort(),a=s=void 0})},out(p){e.inert=!0,Jt(e,"outrostart"),l=Ee(e,u(),a,0,()=>{Jt(e,"outroend"),p==null||p()})},stop:()=>{a==null||a.abort(),l==null||l.abort()}},v=O;if((v.transitions??(v.transitions=[])).push(d),xe){var c=i;if(!c){for(var _=v.parent;_&&_.f&Ft;)for(;(_=_.parent)&&!(_.f&Ae););c=!_||(_.f&or)!==0}c&&At(()=>{Ht(()=>d.in())})}}function Ee(t,e,r,n,i){var o=n===1;if(Jr(e)){var s,f=!1;return se(()=>{if(!f){var x=e({direction:o?"in":"out"});s=Ee(t,x,r,n,i)}}),{abort:()=>{f=!0,s==null||s.abort()},deactivate:()=>s.deactivate(),reset:()=>s.reset(),t:()=>s.t()}}if(r==null||r.deactivate(),!(e!=null&&e.duration))return i(),{abort:Pt,deactivate:Pt,reset:Pt,t:()=>n};const{delay:a=0,css:l,tick:u,easing:d=Zn}=e;var v=[];if(o&&r===void 0&&(u&&u(0,1),l)){var c=tr(l(0,1));v.push(c,c)}var _=()=>1-n,p=t.animate(v,{duration:a});return p.onfinish=()=>{var x=(r==null?void 0:r.t())??1-n;r==null||r.abort();var b=n-x,E=e.duration*Math.abs(b),w=[];if(E>0){if(l)for(var y=Math.ceil(E/16.666666666666668),Z=0;Z<=y;Z+=1){var X=x+b*d(Z/y),P=l(X,1-X);w.push(tr(P))}_=()=>{var D=p.currentTime;return x+b*d(D/E)},u&&Kn(()=>{if(p.playState!=="running")return!1;var D=_();return u(D,1-D),!0})}p=t.animate(w,{duration:E,fill:"forwards"}),p.onfinish=()=>{_=()=>n,u==null||u(n,1-n),i()}},{abort:()=>{p&&(p.cancel(),p.effect=null)},deactivate:()=>{i=Pt},reset:()=>{n===0&&(u==null||u(1,0))},t:()=>_()}}function ke(t,e,r){if(t.multiple)return $n(t,e);for(var n of t.options){var i=Ar(n);if(hn(i,e)){n.selected=!0;return}}(!r||e!==void 0)&&(t.selectedIndex=-1)}function Qn(t,e){let r=!0;At(()=>{e&&ke(t,Ht(e),r),r=!1;var n=new MutationObserver(()=>{var i=t.__value;ke(t,i)});return n.observe(t,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),()=>{n.disconnect()}})}function $n(t,e){for(var r of t.options)r.selected=~e.indexOf(Ar(r))}function Ar(t){return"__value"in t?t.__value:t.value}var lt,kt,It,ee,Mr;const re=class re{constructor(e){zt(this,ee);zt(this,lt,new WeakMap);zt(this,kt);zt(this,It);de(this,It,e)}observe(e,r){var n=nt(this,lt).get(e)||new Set;return n.add(r),nt(this,lt).set(e,n),He(this,ee,Mr).call(this).observe(e,nt(this,It)),()=>{var i=nt(this,lt).get(e);i.delete(r),i.size===0&&(nt(this,lt).delete(e),nt(this,kt).unobserve(e))}}};lt=new WeakMap,kt=new WeakMap,It=new WeakMap,ee=new WeakSet,Mr=function(){return nt(this,kt)??de(this,kt,new ResizeObserver(e=>{for(var r of e){re.entries.set(r.target,r);for(var n of nt(this,lt).get(r.target)||[])n(r)}}))},Q(re,"entries",new WeakMap);let Oe=re;var ti=new Oe({box:"border-box"});function ft(t,e,r){var n=ti.observe(t,()=>r(t[e]));At(()=>(Ht(()=>r(t[e])),n))}function er(t,e){return t===e||(t==null?void 0:t[ct])===e}function ei(t={},e,r,n){return At(()=>{var i,o;return De(()=>{i=o,o=[],Ht(()=>{t!==r(...o)&&(e(t,...o),i&&er(r(...i),t)&&e(null,...i))})}),()=>{se(()=>{o&&er(r(...o),t)&&e(null,...o)})}}),t}function Be(){const t=R,e=t.l.u;e&&(e.b.length&&mn(()=>{rr(t),he(e.b)}),_e(()=>{const r=Ht(()=>e.m.map(Kr));return()=>{for(const n of r)typeof n=="function"&&n()}}),e.a.length&&_e(()=>{rr(t),he(e.a)}))}function rr(t){if(t.l.s)for(const e of t.l.s)h(e);zn(t.s)}const ri="5";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(ri);const ni=t=>t;function ii(t,{delay:e=0,duration:r=400,easing:n=ni}={}){const i=+getComputedStyle(t).opacity;return{delay:e,duration:r,easing:n,css:o=>`opacity: ${o*i}`}}function oi(t){return Object.entries(t.outputs).map(([e,r])=>{const n=new si;return Object.entries(r.inputs).forEach(([i,o])=>n.insert(i,o)),n.root.name=e,n.root.uncompressed=r.uncompressed,n.root.gzip=r.gzip,n.root.brotli=r.brotli,n.optimize(),n})}function ht(t){return"items"in t}class si{constructor(){Q(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 o=this.root;n.forEach(s=>{let f=o.items.find(a=>ht(a)&&a.name===s);f||(f=this.createNode(s,o.path?`${o.path}/${s}`:s),o.items.push(f)),o=f,o.uncompressed+=r.uncompressed,o.gzip+=r.gzip,o.brotli+=r.brotli}),o.items.push({name:i,path:o.path?`${o.path}/${i}`:i,uncompressed:r.uncompressed,gzip:r.gzip,brotli:r.brotli})}optimize(){const e=[this.root];for(;e.length;){const r=e.pop();for(;r.items.length===1&&ht(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=>ht(n)&&e.push(n))}}get(e){let r=this.root;for(;r&&r.path!==e;)r=ht(r)&&r.items.find(n=>e.startsWith(n.path))||null;return r}}const Se=oi(window.SONDA_JSON_REPORT);function ai(){let t=B(0);const e=S(()=>Se.at(h(t)));return{get index(){return h(t)},get output(){return h(e)},setIndex(r){T(t,H(r))}}}function li(){let t=B("uncompressed");return{get type(){return h(t)},setType(e){T(t,H(e))}}}function ui(){let t=H({file:null,folder:null,output:null}),e=H([]);return{get file(){return t.file},get folder(){return t.folder},get output(){return t.output},open(r,n){e.push(r),t[r]=n},close(){e.length!==0&&(t[e.pop()]=null)}}}const K=ai(),St=li(),$=ui();var fi=()=>$.close(),ci=N('<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 je(t,e){W(e,!0);let r=B(void 0);function n(v){v.target===h(r)&&$.close()}var i=ci();Et("click",it.body,n);var o=g(i);ei(o,v=>T(r,v),()=>h(r));var s=m(o,2),f=g(s),a=g(f),l=g(a),u=m(a,2);u.__click=[fi];var d=m(f,2);Wn(d,()=>e.children),A(()=>{te(s,"w-[95vw]",e.large),te(s,"h-[95vh]",e.large),M(l,e.heading)}),Xn(3,i,()=>ii,()=>({duration:150})),k(t,i),U()}ue(["click"]);function tt(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]}`}var di=N('<span class="text-gray-900"> </span> <span class="text-gray-600"> </span>',1),vi=Tr('<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 hi(t,e){W(e,!0);const r=20,n=6,i=22,o=S(()=>e.tile.width-n*2),s=S(()=>e.tile.height-n-i),f=S(()=>tt(e.content[St.type])),a=S(()=>Math.min(e.content[St.type]/e.totalBytes*100,100).toFixed(2)),l=S(()=>`color-mix(in oklch, #fca5a5 ${h(a)}%, #86efac)`),u=S(()=>e.tile.width>=i*1.75&&e.tile.height>=i),d=S(()=>!ht(e.content)||h(s)<=r||h(o)<=r?[]:e.content.items);var v=vi(),c=g(v);A(()=>Un(c,`stroke-gray-500 ${(ht(e.content)?"cursor-zoom-in":"cursor-pointer")??""} svelte-ks9kyg`));var _=m(c),p=g(_),x=g(p);L(x,()=>h(u),E=>{var w=di(),y=C(w),Z=g(y),X=m(y,2),P=g(X);A(()=>{M(Z,e.content.name),M(P,`- ${h(f)??""}`)}),k(E,w)});var b=m(_);L(b,()=>h(d).length,E=>{var w=S(()=>e.tile.x+n),y=S(()=>e.tile.y+i);zr(E,{get content(){return h(d)},get totalBytes(){return e.totalBytes},get width(){return h(o)},get height(){return h(s)},get xStart(){return h(w)},get yStart(){return h(y)}})}),A(()=>{I(c,"data-tile",e.content.path),I(c,"data-hover",`${e.content.name} - ${h(f)} (${h(a)}%)`),I(c,"x",e.tile.x),I(c,"y",e.tile.y),I(c,"width",e.tile.width),I(c,"height",e.tile.height),I(c,"fill",h(l)),I(_,"x",e.tile.x),I(_,"y",e.tile.y),I(_,"width",e.tile.width),I(_,"height",e.tile.height)}),k(t,v),U()}class _i{constructor(e,r,n,i=0,o=0){Q(this,"sizes");Q(this,"tiles");Q(this,"xStart");Q(this,"yStart");Q(this,"widthLeft");Q(this,"heightLeft");const s=e.reduce((a,l)=>a+l,0),f=n*r/s;this.sizes=new Float32Array(e.length);for(let a=0;a<e.length;a++)this.sizes[a]=e[a]*f;this.tiles=new Array,this.xStart=i,this.yStart=o,this.widthLeft=r,this.heightLeft=n}layout(e,r,n,i,o){let s=i?this.yStart:this.xStart,f;const a=this.sizes,l=this.tiles;for(let u=e;u<=r;u++)f=a[u]/n,i?l.push({x:this.xStart,y:s,width:n,height:f}):l.push({x:s,y:this.yStart,width:f,height:n}),s+=f,o++;return i?(this.xStart+=n,this.widthLeft-=n):(this.yStart+=n,this.heightLeft-=n),o}calculate(){let e=this.heightLeft<this.widthLeft,r=e?this.heightLeft:this.widthLeft,n=r*r,i=0,o=0,s=this.sizes[0],f=this.sizes[0],a=this.sizes[0],l=0,u=s*s,d=Math.max(n*a/u,u/(n*f));for(let v=1;v<this.sizes.length;v++){const c=this.sizes[v],_=s+c,p=f<c?f:c,x=a>c?a:c,b=_*_,E=Math.max(n*x/b,b/(n*p));(d<=E?1:0)?(l=this.layout(i,o,s/r,e,l),e=this.heightLeft<this.widthLeft,r=e?this.heightLeft:this.widthLeft,n=r*r,i=v,o=v,s=c,f=c,a=c,u=c*c,d=Math.max(n*a/u,u/(n*f))):(o=v,s=_,f=p,a=x,u=b,d=E)}return l=this.layout(i,o,s/r,e,l),this.tiles}}function zr(t,e){W(e,!0);const r=S(()=>Array.isArray(e.content)?Object.values(e.content):[e.content]),n=S(()=>new _i(h(r).map(f=>f[St.type]),e.width,e.height,e.xStart,e.yStart).calculate());var i=Ce(),o=C(i);Ie(o,18,()=>h(n),s=>s,(s,f,a)=>{hi(s,{get tile(){return f},get content(){return h(r)[h(a)]},get totalBytes(){return e.totalBytes}})}),k(t,i),U()}var pi=Tr('<svg xmlns="http://www.w3.org/2000/svg" role="img"><!></svg>');function Pr(t,e){W(e,!0);var r=Ce(),n=C(r);In(n,()=>[e.content.path,e.width,e.height],i=>{var o=pi(),s=g(o),f=S(()=>e.width-1),a=S(()=>e.height-1);zr(s,{get content(){return e.content},get totalBytes(){return e.content[St.type]},get width(){return h(f)},get height(){return h(a)},xStart:.5,yStart:.5}),A(()=>{I(o,"width",e.width),I(o,"height",e.height)}),k(i,o)}),k(t,r),U()}var gi=N('<span>Approx. GZIP size</span> <span class="font-bold"> </span>',1),wi=N('<span>Approx. Brotli size</span> <span class="font-bold"> </span>',1),mi=N('<div class="mb-4 grid grid-cols-[auto_1fr] gap-x-8"><span>Bundled size</span> <span class="font-bold"> </span> <!> <!></div> <div class="flex-grow overflow-hidden"><!></div>',1);function bi(t,e){W(e,!0);let r=B(0),n=B(0);je(t,{get heading(){return e.folder.path},large:!0,children:o=>{var s=mi(),f=C(s),a=m(g(f),2),l=g(a);A(()=>M(l,tt(e.folder.uncompressed)));var u=m(a,2);L(u,()=>e.folder.gzip,_=>{var p=gi(),x=m(C(p),2),b=g(x);A(()=>M(b,tt(e.folder.gzip))),k(_,p)});var d=m(u,2);L(d,()=>e.folder.brotli,_=>{var p=wi(),x=m(C(p),2),b=g(x);A(()=>M(b,tt(e.folder.brotli))),k(_,p)});var v=m(f,2),c=g(v);Pr(c,{get content(){return e.folder},get width(){return h(r)},get height(){return h(n)}}),ft(v,"clientWidth",_=>T(r,_)),ft(v,"clientHeight",_=>T(n,_)),k(o,s)}}),U()}class yi{constructor(){Q(this,"depth",0);Q(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 xi=N('<span>File format</span> <span class="font-bold"> </span>',1),Ei=N('<span>Approx. GZIP size</span> <span class="font-bold"> </span>',1),ki=N('<span>Approx. Brotli size</span> <span class="font-bold"> </span>',1),Oi=N('<p class="mt-12">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 min-w-full"><pre> </pre></code>',1),Si=N('<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 Ti(t,e){W(e,!0);const r=S(()=>window.SONDA_JSON_REPORT.inputs[e.file.path]),n=S(()=>{var s;if(h(r))return h(r).format.toUpperCase();const o=(s=window.SONDA_JSON_REPORT.inputs[e.file.path])==null?void 0:s.belongsTo;return o?window.SONDA_JSON_REPORT.inputs[o].format.toUpperCase:"UNKNOWN"}),i=S(()=>h(r)?new yi().render(e.file.path):null);je(t,{get heading(){return e.file.path},children:s=>{var f=Si(),a=g(f),l=g(a);L(l,()=>h(n)!=="UNKNOWN",b=>{var E=xi(),w=m(C(E),2),y=g(w);A(()=>M(y,h(n))),k(b,E)});var u=m(l,4),d=g(u);A(()=>{var b;return M(d,tt(((b=h(r))==null?void 0:b.bytes)||0))});var v=m(u,4),c=g(v);A(()=>M(c,tt(e.file.uncompressed)));var _=m(v,2);L(_,()=>e.file.gzip,b=>{var E=Ei(),w=m(C(E),2),y=g(w);A(()=>M(y,tt(e.file.gzip))),k(b,E)});var p=m(_,2);L(p,()=>e.file.brotli,b=>{var E=ki(),w=m(C(E),2),y=g(w);A(()=>M(y,tt(e.file.brotli))),k(b,E)});var x=m(a,2);L(x,()=>h(i),b=>{var E=Oi(),w=m(C(E),2),y=g(w),Z=g(y);A(()=>M(Z,h(i))),k(b,E)}),k(s,f)}}),U()}var Ni=N('<span>GZIP size</span> <span class="font-bold"> </span>',1),Ai=N('<span>Brotli size</span> <span class="font-bold"> </span>',1),Mi=N('<p class="mt-12">Module types</p> <div class="mt-2 h-10 w-[40rem] max-w-full flex rounded-lg overflow-hidden"><div class="bg-yellow-300 h-full"></div> <div class="bg-blue-300 h-full"></div> <div class="bg-gray-200 h-full"></div></div> <div class="flex justify-between mt-2"><div class="flex items-center space-x-2"><div class="inline-block w-4 h-4 bg-yellow-300"></div> <p>ESM: <span class="font-semibold"> </span></p></div> <div class="flex items-center space-x-2"><div class="inline-block w-4 h-4 bg-blue-300"></div> <p>CJS: <span class="font-semibold"> </span></p></div> <div class="flex items-center space-x-2"><div class="inline-block w-4 h-4 bg-gray-300"></div> <p>Unknown: <span class="font-semibold"> </span></p></div></div>',1),zi=N('<code class="mt-2 p-4 w-max leading-5 bg-slate-200 rounded overflow-auto min-w-full"><pre> </pre></code>'),Pi=N('<div class="flex flex-col overflow-y-auto"><div class="grid grid-cols-[auto_1fr] gap-x-8"><span>Bundled size</span> <span class="font-bold"> </span> <!> <!></div></div> <!> <p class="mt-12">This asset includes <span class="font-semibold"> </span> external dependencies</p> <!>',1);function Di(t,e){W(e,!0);const r=S(()=>window.SONDA_JSON_REPORT.outputs[e.output.root.name]),n=S(()=>{const l={esm:0,cjs:0,unknown:0},u=window.SONDA_JSON_REPORT.inputs;return Object.entries(h(r).inputs).forEach(([d,v])=>{var _;const c=((_=u[d])==null?void 0:_.format)??"unknown";l[c]+=v.uncompressed}),l}),i=S(()=>Math.round(h(n).esm/h(r).uncompressed*1e4)/100),o=S(()=>Math.round(h(n).cjs/h(r).uncompressed*1e4)/100),s=S(()=>Math.round(h(n).unknown/h(r).uncompressed*1e4)/100),f=S(()=>{const l=/(?:.*node_modules\/)(@[^\/]+\/[^\/]+|[^\/]+)/;return Object.keys(h(r).inputs).map(u=>{var d;return((d=u.match(l))==null?void 0:d[1])??null}).filter((u,d,v)=>u!==null&&v.indexOf(u)===d).sort()}),a=S(()=>h(f).map((l,u,d)=>d.length===u+1?`└── ${l}`:`├── ${l}`).join(`
3
- `));je(t,{get heading(){return e.output.root.name},children:u=>{var d=Pi(),v=C(d),c=g(v),_=m(g(c),2),p=g(_);A(()=>M(p,tt(e.output.root.uncompressed)));var x=m(_,2);L(x,()=>e.output.root.gzip,P=>{var D=Ni(),J=m(C(D),2),F=g(J);A(()=>M(F,tt(e.output.root.gzip))),k(P,D)});var b=m(x,2);L(b,()=>e.output.root.brotli,P=>{var D=Ai(),J=m(C(D),2),F=g(J);A(()=>M(F,tt(e.output.root.brotli))),k(P,D)});var E=m(v,2);L(E,()=>h(s)<100,P=>{var D=Mi(),J=m(C(D),2),F=g(J),mt=m(F,2),fe=m(mt,2),Wt=m(J,2),Mt=g(Wt),Ut=m(g(Mt),2),Vt=m(g(Ut)),Gt=g(Vt),Fe=m(Mt,2),Dr=m(g(Fe),2),Rr=m(g(Dr)),Lr=g(Rr),Cr=m(Fe,2),Ir=m(g(Cr),2),Br=m(g(Ir)),jr=g(Br);A(()=>{I(F,"style",`width: ${h(i)}%`),I(mt,"style",`width: ${h(o)}%`),I(fe,"style",`width: ${h(s)}%`),M(Gt,`${h(i)??""}%`),M(Lr,`${h(o)??""}%`),M(jr,`${h(s)??""}%`)}),k(P,D)});var w=m(E,2),y=m(g(w)),Z=g(y),X=m(w,2);L(X,()=>h(f).length>0,P=>{var D=zi(),J=g(D),F=g(J);A(()=>M(F,h(a))),k(P,D)}),A(()=>M(Z,h(f).length)),k(u,d)}}),U()}var Ri=N("<!> <!> <!>",1);function Li(t,e){W(e,!1),Be();var r=Ri(),n=C(r);L(n,()=>$.folder,s=>{bi(s,{get folder(){return $.folder}})});var i=m(n,2);L(i,()=>$.file,s=>{Ti(s,{get file(){return $.file}})});var o=m(i,2);L(o,()=>$.output,s=>{Di(s,{get output(){return $.output}})}),k(t,r),U()}var Ci=(t,e)=>St.setType(e()),Ii=N('<button type="button" class="px-4 py-2 text-sm font-medium hover:bg-gray-100 text-gray-900 border border-gray-300 first:rounded-s-lg last:rounded-e-lg focus:ring-1 focus:ring-blue-300 focus:z-10 svelte-2f0583"> </button>'),Bi=N('<div class="inline-flex space-x-[-1px] bg-white" role="group"></div>');function ji(t,e){W(e,!0);const r=S(()=>K.output.root.gzip>0),n=S(()=>K.output.root.brotli>0),i=S(()=>{const f=[["uncompressed","Uncompressed"]];return h(r)&&f.push(["gzip","GZIP"]),h(n)&&f.push(["brotli","Brotli"]),f});var o=Ce(),s=C(o);L(s,()=>h(i).length>1,f=>{var a=Bi();Ie(a,21,()=>h(i),([l,u])=>l,(l,u)=>{let d=()=>h(u)[0],v=()=>h(u)[1];var c=Ii();c.__click=[Ci,d];var _=g(c);A(()=>{te(c,"active",d()===St.type),M(_,v())}),k(l,c)}),k(f,a)}),k(t,o),U()}ue(["click"]);function Fi(t){K.setIndex(Number(t.target.value))}var qi=N("<option> </option>"),Hi=N('<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>'),Wi=N('<div class="flex items-center justify-center space-x-2 max-w-sm"><!></div>');function Ui(t,e){W(e,!1),Be();var r=Wi(),n=g(r);L(n,()=>Se.length>0,i=>{var o=Hi();Qn(o,()=>K.index);var s;o.__change=[Fi],Ie(o,5,()=>Se,Bn,(f,a,l)=>{var u=qi();u.value=(u.__value=l)==null?"":l;var d=g(u);A(()=>M(d,`${l+1}. ${h(a).root.name??""}`)),k(f,u)}),A(()=>{s!==(s=K.index)&&(o.value=(o.__value=K.index)==null?"":K.index,ke(o,K.index))}),k(i,o)}),k(t,r),U()}ue(["change"]);function Vi(){$.open("output",K.output)}var Gi=N('<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>');function Ji(t,e){W(e,!1),Be();var r=Gi();r.__click=[Vi],k(t,r),U()}ue(["click"]);var Ki=N('<div class="flex flex-row p-4 items-center space-y-0 h-16 justify-end space-x-2 bg-gray-50 shadow"><!> <!> <!> <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 Yi(t){var e=Ki(),r=g(e);ji(r,{});var n=m(r,2);Ui(n,{});var i=m(n,2);Ji(i,{}),k(t,e)}var Zi=N('<div class="flex-grow flex flex-col mt-24 items-center w-full h-full"><svg xmlns="http://www.w3.org/2000/svg" width="96" height="96" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="text-yellow-400 fill-yellow-100"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M12 21a9 9 0 1 1 0 -18a9 9 0 0 1 0 18z"></path><path d="M8 16l1 -1l1.5 1l1.5 -1l1.5 1l1.5 -1l1 1"></path><path d="M8.5 11.5l1.5 -1.5l-1.5 -1.5"></path><path d="M15.5 11.5l-1.5 -1.5l1.5 -1.5"></path></svg> <h2 class="mt-8 text-3xl font-semibold text-gray-800">No data to display</h2> <p class="mt-4 text-lg text-gray-500">Did you enable source maps in the bundler configuration?</p></div>');function Xi(t){var e=Zi();k(t,e)}var Qi=N('<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 $i(t,e){W(e,!0);const r=12;let n=B(0),i=B(0),o=B(0),s=B(0),f=B(0),a=B(0),l=B(""),u=B("0px"),d=B("0px");_e(()=>{h(l)&&(T(u,(h(f)+h(n)+r>h(o)?h(f)-h(n)-r:h(f)+r)+"px"),T(d,(h(a)+h(i)+r>h(s)?h(a)-h(i):h(a)+r)+"px"))});function v({target:p,clientX:x,clientY:b}){T(l,H(p instanceof Element&&p.getAttribute("data-hover")||"")),T(f,H(x)),T(a,H(b))}var c=Qi();Et("mouseover",it.body,v),Et("mousemove",it.body,v),Et("mouseleave",it.body,()=>T(l,""));var _=g(c);A(()=>{te(c,"invisible",!h(l)),$e(c,"--x",h(u)),$e(c,"--y",h(d)),M(_,h(l))}),ft(it.body,"clientWidth",p=>T(o,H(p))),ft(it.body,"clientHeight",p=>T(s,H(p))),ft(c,"clientWidth",p=>T(n,p)),ft(c,"clientHeight",p=>T(i,p)),k(t,c),U()}var to=N('<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 eo(t,e){W(e,!0);let r=B(0),n=B(0);function i({target:c}){const _=c instanceof Element&&c.getAttribute("data-tile");if(!_)return;const p=K.output.get(_);p&&$.open(ht(p)?"folder":"file",p)}function o(c){c.key==="Escape"&&(c.stopPropagation(),$.close())}var s=to();Et("click",it.body,i),Et("keydown",it.body,o);var f=C(s),a=g(f);Yi(a);var l=m(a,2),u=g(l);L(u,()=>K,c=>{Pr(c,{get content(){return K.output.root},get width(){return h(r)},get height(){return h(n)}})},c=>{Xi(c)});var d=m(f,2);Li(d,{});var v=m(d,2);$i(v,{}),ft(l,"clientWidth",c=>T(r,c)),ft(l,"clientHeight",c=>T(n,c)),k(t,s),U()}Ln(eo,{target:document.getElementById("app")});</script><style rel="stylesheet" crossorigin>rect.svelte-ks9kyg:hover{filter:brightness(1.15)}button.active.svelte-2f0583,button.active.svelte-2f0583:hover{background-color:#e5e7eb}*,: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-12{margin-top:3rem}.mt-2{margin-top:.5rem}.mt-24{margin-top:6rem}.mt-4{margin-top:1rem}.mt-8{margin-top:2rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.size-full{width:100%;height:100%}.h-10{height:2.5rem}.h-16{height:4rem}.h-4{height:1rem}.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-4{width:1rem}.w-\[40rem\]{width:40rem}.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}.min-w-full{min-width:100%}.max-w-\[95vw\]{max-width:95vw}.max-w-full{max-width:100%}.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}.justify-between{justify-content:space-between}.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-x-\[-1px\]>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(-1px * var(--tw-space-x-reverse));margin-left:calc(-1px * 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-blue-300{--tw-bg-opacity:1;background-color:rgb(147 197 253 / var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.bg-gray-200\/70{background-color:#e5e7ebb3}.bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219 / var(--tw-bg-opacity))}.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))}.bg-yellow-300{--tw-bg-opacity:1;background-color:rgb(253 224 71 / var(--tw-bg-opacity))}.fill-yellow-100{fill:#fef9c3}.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-4{padding-left:1rem;padding-right:1rem}.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-3xl{font-size:1.875rem;line-height:2.25rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.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-500{--tw-text-opacity:1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99 / var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55 / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity))}.text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21 / var(--tw-text-opacity))}.shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0 / .1),0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.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}.first\:rounded-s-lg:first-child{border-start-start-radius:.5rem;border-end-start-radius:.5rem}.last\:rounded-e-lg:last-child{border-start-end-radius:.5rem;border-end-end-radius:.5rem}.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\:z-10:focus{z-index:10}.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 Jr=Object.defineProperty;var Ve=t=>{throw TypeError(t)};var Kr=(t,e,r)=>e in t?Jr(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var nt=(t,e,r)=>Kr(t,typeof e!="symbol"?e+"":e,r),we=(t,e,r)=>e.has(t)||Ve("Cannot "+r);var it=(t,e,r)=>(we(t,e,"read from private field"),r?r.call(t):e.get(t)),Dt=(t,e,r)=>e.has(t)?Ve("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),me=(t,e,r,n)=>(we(t,e,"write to private field"),n?n.call(t,r):e.set(t,r),r),Je=(t,e,r)=>(we(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 o of i)if(o.type==="childList")for(const s of o.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&n(s)}).observe(document,{childList:!0,subtree:!0});function r(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerPolicy&&(o.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?o.credentials="include":i.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function n(i){if(i.ep)return;i.ep=!0;const o=r(i);fetch(i.href,o)}})();window.SONDA_JSON_REPORT=JSON.parse(String.raw`__REPORT_DATA__`);const Zr=!1;var Re=Array.isArray,Le=Array.from,Yr=Object.defineProperty,Lt=Object.getOwnPropertyDescriptor,sr=Object.getOwnPropertyDescriptors,Qr=Object.prototype,Xr=Array.prototype,te=Object.getPrototypeOf;function $r(t){return typeof t=="function"}const Pt=()=>{};function tn(t){return t()}function ye(t){for(var e=0;e<t.length;e++)t[e]()}const at=2,ar=4,Bt=8,ue=16,et=32,fe=64,wt=128,ee=256,J=512,ht=1024,Ft=2048,st=4096,qt=8192,lr=16384,Ht=32768,en=1<<18,ur=1<<19,dt=Symbol("$state"),rn=Symbol("");function fr(t){return t===this.v}function cr(t,e){return t!=t?e==e:t!==e||t!==null&&typeof t=="object"||typeof t=="function"}function nn(t){return!cr(t,this.v)}function on(t){throw new Error("effect_in_teardown")}function sn(){throw new Error("effect_in_unowned_derived")}function an(t){throw new Error("effect_orphan")}function ln(){throw new Error("effect_update_depth_exceeded")}function un(){throw new Error("state_descriptors_fixed")}function fn(){throw new Error("state_prototype_fixed")}function cn(){throw new Error("state_unsafe_local_read")}function dn(){throw new Error("state_unsafe_mutation")}function Z(t){return{f:0,v:t,reactions:null,equals:fr,version:0}}function V(t){return hn(Z(t))}function vn(t,e=!1){var n;const r=Z(t);return e||(r.equals=nn),C!==null&&C.l!==null&&((n=C.l).s??(n.s=[])).push(r),r}function hn(t){return N!==null&&N.f&at&&(tt===null?Mn([t]):tt.push(t)),t}function z(t,e){return N!==null&&He()&&N.f&(at|ue)&&(tt===null||!tt.includes(t))&&dn(),xe(t,e)}function xe(t,e){return t.equals(e)||(t.v=e,t.version=Mr(),dr(t,ht),He()&&S!==null&&S.f&J&&!(S.f&et)&&(F!==null&&F.includes(t)?(rt(S,ht),he(S)):vt===null?An([t]):vt.push(t))),e}function dr(t,e){var r=t.reactions;if(r!==null)for(var n=He(),i=r.length,o=0;o<i;o++){var s=r[o],l=s.f;l&ht||!n&&s===S||(rt(s,e),l&(J|wt)&&(l&at?dr(s,Ft):he(s)))}}const Ie=1,Ce=2,vr=4,_n=8,pn=16,gn=4,wn=1,mn=2,G=Symbol();let hr=!1;function Q(t,e=null,r){if(typeof t!="object"||t===null||dt in t)return t;const n=te(t);if(n!==Qr&&n!==Xr)return t;var i=new Map,o=Re(t),s=Z(0);o&&i.set("length",Z(t.length));var l;return new Proxy(t,{defineProperty(f,a,u){(!("value"in u)||u.configurable===!1||u.enumerable===!1||u.writable===!1)&&un();var c=i.get(a);return c===void 0?(c=Z(u.value),i.set(a,c)):z(c,Q(u.value,l)),!0},deleteProperty(f,a){var u=i.get(a);if(u===void 0)a in f&&i.set(a,Z(G));else{if(o&&typeof a=="string"){var c=i.get("length"),v=Number(a);Number.isInteger(v)&&v<c.v&&z(c,v)}z(u,G),Ke(s)}return!0},get(f,a,u){var h;if(a===dt)return t;var c=i.get(a),v=a in f;if(c===void 0&&(!v||(h=Lt(f,a))!=null&&h.writable)&&(c=Z(Q(v?f[a]:G,l)),i.set(a,c)),c!==void 0){var d=_(c);return d===G?void 0:d}return Reflect.get(f,a,u)},getOwnPropertyDescriptor(f,a){var u=Reflect.getOwnPropertyDescriptor(f,a);if(u&&"value"in u){var c=i.get(a);c&&(u.value=_(c))}else if(u===void 0){var v=i.get(a),d=v==null?void 0:v.v;if(v!==void 0&&d!==G)return{enumerable:!0,configurable:!0,value:d,writable:!0}}return u},has(f,a){var d;if(a===dt)return!0;var u=i.get(a),c=u!==void 0&&u.v!==G||Reflect.has(f,a);if(u!==void 0||S!==null&&(!c||(d=Lt(f,a))!=null&&d.writable)){u===void 0&&(u=Z(c?Q(f[a],l):G),i.set(a,u));var v=_(u);if(v===G)return!1}return c},set(f,a,u,c){var m;var v=i.get(a),d=a in f;if(o&&a==="length")for(var h=u;h<v.v;h+=1){var g=i.get(h+"");g!==void 0?z(g,G):h in f&&(g=Z(G),i.set(h+"",g))}v===void 0?(!d||(m=Lt(f,a))!=null&&m.writable)&&(v=Z(void 0),z(v,Q(u,l)),i.set(a,v)):(d=v.v!==G,z(v,Q(u,l)));var b=Reflect.getOwnPropertyDescriptor(f,a);if(b!=null&&b.set&&b.set.call(c,u),!d){if(o&&typeof a=="string"){var k=i.get("length"),E=Number(a);Number.isInteger(E)&&E>=k.v&&z(k,E+1)}Ke(s)}return!0},ownKeys(f){_(s);var a=Reflect.ownKeys(f).filter(v=>{var d=i.get(v);return d===void 0||d.v!==G});for(var[u,c]of i)c.v!==G&&!(u in f)&&a.push(u);return a},setPrototypeOf(){fn()}})}function Ke(t,e=1){z(t,t.v+e)}function Ze(t){return t!==null&&typeof t=="object"&&dt in t?t[dt]:t}function bn(t,e){return Object.is(Ze(t),Ze(e))}var Ye,ot,_r,pr;function yn(){if(Ye===void 0){Ye=window,ot=document;var t=Element.prototype,e=Node.prototype;_r=Lt(e,"firstChild").get,pr=Lt(e,"nextSibling").get,t.__click=void 0,t.__className="",t.__attributes=null,t.__e=void 0,Text.prototype.__t=void 0}}function je(t=""){return document.createTextNode(t)}function St(t){return _r.call(t)}function ce(t){return pr.call(t)}function p(t){return St(t)}function I(t,e){{var r=St(t);return r instanceof Comment&&r.data===""?ce(r):r}}function w(t,e=1,r=!1){let n=t;for(;e--;)n=ce(n);return n}function xn(t){t.textContent=""}function O(t){var e=at|ht;S===null?e|=wt:S.f|=ur;const r={children:null,deps:null,equals:fr,f:e,fn:t,reactions:null,v:null,version:0,parent:S};if(N!==null&&N.f&at){var n=N;(n.children??(n.children=[])).push(r)}return r}function gr(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&at?Be(n):_t(n)}}}function wr(t){var e,r=S;Tt(t.parent);try{gr(t),e=Ar(t)}finally{Tt(r)}return e}function mr(t){var e=wr(t),r=(yt||t.f&wt)&&t.deps!==null?Ft:J;rt(t,r),t.equals(e)||(t.v=e,t.version=Mr())}function Be(t){gr(t),Ct(t,0),rt(t,qt),t.v=t.children=t.deps=t.reactions=null}function br(t){S===null&&N===null&&an(),N!==null&&N.f&wt&&sn(),qe&&on()}function En(t,e){var r=e.last;r===null?e.last=e.first=t:(r.next=t,t.prev=r,e.last=t)}function Mt(t,e,r,n=!0){var i=(t&fe)!==0,o=S,s={ctx:C,deps:null,deriveds:null,nodes_start:null,nodes_end:null,f:t|ht,first:null,fn:e,last:null,next:null,parent:i?null:o,prev:null,teardown:null,transitions:null,version:0};if(r){var l=xt;try{Xe(!0),ve(s),s.f|=lr}catch(u){throw _t(s),u}finally{Xe(l)}}else e!==null&&he(s);var f=r&&s.deps===null&&s.first===null&&s.nodes_start===null&&s.teardown===null&&(s.f&ur)===0;if(!f&&!i&&n&&(o!==null&&En(s,o),N!==null&&N.f&at)){var a=N;(a.children??(a.children=[])).push(s)}return s}function kn(t){const e=Mt(Bt,null,!1);return rt(e,J),e.teardown=t,e}function Qe(t){br();var e=S!==null&&(S.f&et)!==0&&C!==null&&!C.m;if(e){var r=C;(r.e??(r.e=[])).push({fn:t,effect:S,reaction:N})}else{var n=At(t);return n}}function Sn(t){return br(),yr(t)}function On(t){const e=Mt(fe,t,!0);return()=>{_t(e)}}function At(t){return Mt(ar,t,!1)}function yr(t){return Mt(Bt,t,!0)}function A(t){return Wt(t)}function Wt(t,e=0){return Mt(Bt|ue|e,t,!0)}function gt(t,e=!0){return Mt(Bt|et,t,!0,e)}function xr(t){var e=t.teardown;if(e!==null){const r=qe,n=N;$e(!0),Ot(null);try{e.call(null)}finally{$e(r),Ot(n)}}}function Er(t){var e=t.deriveds;if(e!==null){t.deriveds=null;for(var r=0;r<e.length;r+=1)Be(e[r])}}function kr(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 Tn(t){for(var e=t.first;e!==null;){var r=e.next;e.f&et||_t(e),e=r}}function _t(t,e=!0){var r=!1;if((e||t.f&en)&&t.nodes_start!==null){var n=t.nodes_start,i=t.nodes_end,o=N,s=S;Ot(null),Tt(null);try{for(;n!==null;){var l=n===i?null:ce(n);n.remove(),n=l}}finally{Ot(o),Tt(s)}r=!0}Er(t),kr(t,e&&!r),Ct(t,0),rt(t,qt);var f=t.transitions;if(f!==null)for(const u of f)u.stop();xr(t);var a=t.parent;a!==null&&a.first!==null&&Sr(t),t.next=t.prev=t.teardown=t.ctx=t.deps=t.parent=t.fn=t.nodes_start=t.nodes_end=null}function Sr(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 re(t,e){var r=[];Fe(t,r,!0),Or(r,()=>{_t(t),e&&e()})}function Or(t,e){var r=t.length;if(r>0){var n=()=>--r||e();for(var i of t)i.out(n)}else e()}function Fe(t,e,r){if(!(t.f&st)){if(t.f^=st,t.transitions!==null)for(const s of t.transitions)(s.is_global||r)&&e.push(s);for(var n=t.first;n!==null;){var i=n.next,o=(n.f&Ht)!==0||(n.f&et)!==0;Fe(n,e,o?r:!1),n=i}}}function ne(t){Tr(t,!0)}function Tr(t,e){if(t.f&st){t.f^=st,Ut(t)&&ve(t);for(var r=t.first;r!==null;){var n=r.next,i=(r.f&Ht)!==0||(r.f&et)!==0;Tr(r,i?e:!1),r=n}if(t.transitions!==null)for(const o of t.transitions)(o.is_global||e)&&o.in()}}let Ee=!1,ke=[];function Nn(){Ee=!1;const t=ke.slice();ke=[],ye(t)}function de(t){Ee||(Ee=!0,queueMicrotask(Nn)),ke.push(t)}let ie=!1,xt=!1,qe=!1;function Xe(t){xt=t}function $e(t){qe=t}let Se=[],It=0;let N=null;function Ot(t){N=t}let S=null;function Tt(t){S=t}let tt=null;function Mn(t){tt=t}let F=null,K=0,vt=null;function An(t){vt=t}let Nr=0,yt=!1,C=null;function Mr(){return++Nr}function He(){return C!==null&&C.l===null}function Ut(t){var s,l;var e=t.f;if(e&ht)return!0;if(e&Ft){var r=t.deps,n=(e&wt)!==0;if(r!==null){var i;if(e&ee){for(i=0;i<r.length;i++)((s=r[i]).reactions??(s.reactions=[])).push(t);t.f^=ee}for(i=0;i<r.length;i++){var o=r[i];if(Ut(o)&&mr(o),n&&S!==null&&!yt&&!((l=o==null?void 0:o.reactions)!=null&&l.includes(t))&&(o.reactions??(o.reactions=[])).push(t),o.version>t.version)return!0}}n||rt(t,J)}return!1}function zn(t,e,r){throw t}function Ar(t){var c;var e=F,r=K,n=vt,i=N,o=yt,s=tt,l=t.f;F=null,K=0,vt=null,N=l&(et|fe)?null:t,yt=!xt&&(l&wt)!==0,tt=null;try{var f=(0,t.fn)(),a=t.deps;if(F!==null){var u;if(Ct(t,K),a!==null&&K>0)for(a.length=K+F.length,u=0;u<F.length;u++)a[K+u]=F[u];else t.deps=a=F;if(!yt)for(u=K;u<a.length;u++)((c=a[u]).reactions??(c.reactions=[])).push(t)}else a!==null&&K<a.length&&(Ct(t,K),a.length=K);return f}finally{F=e,K=r,vt=n,N=i,yt=o,tt=s}}function Dn(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&at&&(F===null||!F.includes(e))&&(rt(e,Ft),e.f&(wt|ee)||(e.f^=ee),Ct(e,0))}function Ct(t,e){var r=t.deps;if(r!==null)for(var n=e;n<r.length;n++)Dn(t,r[n])}function ve(t){var e=t.f;if(!(e&qt)){rt(t,J);var r=S,n=C;S=t,C=t.ctx;try{Er(t),e&ue?Tn(t):kr(t),xr(t);var i=Ar(t);t.teardown=typeof i=="function"?i:null,t.version=Nr}catch(o){zn(o)}finally{S=r,C=n}}}function Pn(){It>1e3&&(It=0,ln()),It++}function Rn(t){var e=t.length;if(e!==0){Pn();var r=xt;xt=!0;try{for(var n=0;n<e;n++){var i=t[n];i.f&J||(i.f^=J);var o=[];zr(i,o),Ln(o)}}finally{xt=r}}}function Ln(t){var e=t.length;if(e!==0)for(var r=0;r<e;r++){var n=t[r];!(n.f&(qt|st))&&Ut(n)&&(ve(n),n.deps===null&&n.first===null&&n.nodes_start===null&&(n.teardown===null?Sr(n):n.fn=null))}}function In(){if(ie=!1,It>1001)return;const t=Se;Se=[],Rn(t),ie||(It=0)}function he(t){ie||(ie=!0,queueMicrotask(In));for(var e=t;e.parent!==null;){e=e.parent;var r=e.f;if(r&(fe|et)){if(!(r&J))return;e.f^=J}}Se.push(e)}function zr(t,e){var r=t.first,n=[];t:for(;r!==null;){var i=r.f,o=(i&et)!==0,s=o&&(i&J)!==0;if(!s&&!(i&st))if(i&Bt){o?r.f^=J:Ut(r)&&ve(r);var l=r.first;if(l!==null){r=l;continue}}else i&ar&&n.push(r);var f=r.next;if(f===null){let c=r.parent;for(;c!==null;){if(t===c)break t;var a=c.next;if(a!==null){r=a;continue t}c=c.parent}}r=f}for(var u=0;u<n.length;u++)l=n[u],e.push(l),zr(l,e)}function _(t){var l;var e=t.f,r=(e&at)!==0;if(r&&e&qt){var n=wr(t);return Be(t),n}if(N!==null){tt!==null&&tt.includes(t)&&cn();var i=N.deps;F===null&&i!==null&&i[K]===t?K++:F===null?F=[t]:F.push(t),vt!==null&&S!==null&&S.f&J&&!(S.f&et)&&vt.includes(t)&&(rt(S,ht),he(S))}else if(r&&t.deps===null){var o=t,s=o.parent;s!==null&&!((l=s.deriveds)!=null&&l.includes(o))&&(s.deriveds??(s.deriveds=[])).push(o)}return r&&(o=t,Ut(o)&&mr(o)),t.v}function Gt(t){const e=N;try{return N=null,t()}finally{N=e}}const Cn=~(ht|Ft|J);function rt(t,e){t.f=t.f&Cn|e}function q(t,e=!1,r){C={p:C,c:null,e:null,m:!1,s:t,x:null,l:null},e||(C.l={s:null,u:null,r1:[],r2:Z(!1)})}function H(t){const e=C;if(e!==null){const s=e.e;if(s!==null){var r=S,n=N;e.e=null;try{for(var i=0;i<s.length;i++){var o=s[i];Tt(o.effect),Ot(o.reaction),At(o.fn)}}finally{Tt(r),Ot(n)}}C=e.p,e.m=!0}return{}}function jn(t){if(!(typeof t!="object"||!t||t instanceof EventTarget)){if(dt in t)Oe(t);else if(!Array.isArray(t))for(let e in t){const r=t[e];typeof r=="object"&&r&&dt in r&&Oe(r)}}}function Oe(t,e=new Set){if(typeof t=="object"&&t!==null&&!(t instanceof EventTarget)&&!e.has(t)){e.add(t),t instanceof Date&&t.getTime();for(let n in t)try{Oe(t[n],e)}catch{}const r=te(t);if(r!==Object.prototype&&r!==Array.prototype&&r!==Map.prototype&&r!==Set.prototype&&r!==Date.prototype){const n=sr(r);for(let i in n){const o=n[i].get;if(o)try{o.call(t)}catch{}}}}}const Dr=new Set,Te=new Set;function Bn(t,e,r,n){function i(o){if(n.capture||Rt.call(e,o),!o.cancelBubble)return r.call(this,o)}return t.startsWith("pointer")||t.startsWith("touch")||t==="wheel"?de(()=>{e.addEventListener(t,i,n)}):e.addEventListener(t,i,n),i}function Et(t,e,r,n,i){var o={capture:n,passive:i},s=Bn(t,e,r,o);(e===document.body||e===window||e===document)&&kn(()=>{e.removeEventListener(t,s,o)})}function Vt(t){for(var e=0;e<t.length;e++)Dr.add(t[e]);for(var r of Te)r(t)}function Rt(t){var b;var e=this,r=e.ownerDocument,n=t.type,i=((b=t.composedPath)==null?void 0:b.call(t))||[],o=i[0]||t.target,s=0,l=t.__root;if(l){var f=i.indexOf(l);if(f!==-1&&(e===document||e===window)){t.__root=e;return}var a=i.indexOf(e);if(a===-1)return;f<=a&&(s=f)}if(o=i[s]||t.target,o!==e){Yr(t,"currentTarget",{configurable:!0,get(){return o||r}});try{for(var u,c=[];o!==null;){var v=o.assignedSlot||o.parentNode||o.host||null;try{var d=o["__"+n];if(d!==void 0&&!o.disabled)if(Re(d)){var[h,...g]=d;h.apply(o,[t,...g])}else d.call(o,t)}catch(k){u?c.push(k):u=k}if(t.cancelBubble||v===e||v===null)break;o=v}if(u){for(let k of c)queueMicrotask(()=>{throw k});throw u}}finally{t.__root=e,delete t.currentTarget}}}function Pr(t){var e=document.createElement("template");return e.innerHTML=t,e.content}function oe(t,e){var r=S;r.nodes_start===null&&(r.nodes_start=t,r.nodes_end=e)}function T(t,e){var r=(e&wn)!==0,n=(e&mn)!==0,i,o=!t.startsWith("<!>");return()=>{i===void 0&&(i=Pr(o?t:"<!>"+t),r||(i=St(i)));var s=n?document.importNode(i,!0):i.cloneNode(!0);if(r){var l=St(s),f=s.lastChild;oe(l,f)}else oe(s,s);return s}}function Rr(t,e,r="svg"){var n=!t.startsWith("<!>"),i=`<${r}>${n?t:"<!>"+t}</${r}>`,o;return()=>{if(!o){var s=Pr(i),l=St(s);o=St(l)}var f=o.cloneNode(!0);return oe(f,f),f}}function Jt(){var t=document.createDocumentFragment(),e=document.createComment(""),r=je();return t.append(e,r),oe(e,r),t}function x(t,e){t!==null&&t.before(e)}const Fn=["touchstart","touchmove"];function qn(t){return Fn.includes(t)}let Ne=!0;function M(t,e){var r=e==null?"":typeof e=="object"?e+"":e;r!==(t.__t??(t.__t=t.nodeValue))&&(t.__t=r,t.nodeValue=r==null?"":r+"")}function Hn(t,e){return Wn(t,e)}const bt=new Map;function Wn(t,{target:e,anchor:r,props:n={},events:i,context:o,intro:s=!0}){yn();var l=new Set,f=c=>{for(var v=0;v<c.length;v++){var d=c[v];if(!l.has(d)){l.add(d);var h=qn(d);e.addEventListener(d,Rt,{passive:h});var g=bt.get(d);g===void 0?(document.addEventListener(d,Rt,{passive:h}),bt.set(d,1)):bt.set(d,g+1)}}};f(Le(Dr)),Te.add(f);var a=void 0,u=On(()=>{var c=r??e.appendChild(je());return gt(()=>{if(o){q({});var v=C;v.c=o}i&&(n.$$events=i),Ne=s,a=t(c,n)||{},Ne=!0,o&&H()}),()=>{var h;for(var v of l){e.removeEventListener(v,Rt);var d=bt.get(v);--d===0?(document.removeEventListener(v,Rt),bt.delete(v)):bt.set(v,d)}Te.delete(f),tr.delete(a),c!==r&&((h=c.parentNode)==null||h.removeChild(c))}});return tr.set(a,u),a}let tr=new WeakMap;function P(t,e,r,n=null,i=!1){var o=t,s=null,l=null,f=null,a=i?Ht:0;Wt(()=>{f!==(f=!!e())&&(f?(s?ne(s):s=gt(()=>r(o)),l&&re(l,()=>{l=null})):(l?ne(l):n&&(l=gt(()=>n(o))),s&&re(s,()=>{s=null})))},a)}function Un(t,e,r){var n=t,i=G,o;Wt(()=>{cr(i,i=e())&&(o&&re(o),o=gt(()=>r(n)))})}let be=null;function Gn(t,e){return e}function Vn(t,e,r,n){for(var i=[],o=e.length,s=0;s<o;s++)Fe(e[s].e,i,!0);var l=o>0&&i.length===0&&r!==null;if(l){var f=r.parentNode;xn(f),f.append(r),n.clear(),lt(t,e[0].prev,e[o-1].next)}Or(i,()=>{for(var a=0;a<o;a++){var u=e[a];l||(n.delete(u.k),lt(t,u.prev,u.next)),_t(u.e,!l)}})}function We(t,e,r,n,i,o=null){var s=t,l={flags:e,items:new Map,first:null},f=(e&vr)!==0;if(f){var a=t;s=a.appendChild(je())}var u=null,c=!1;Wt(()=>{var v=r(),d=Re(v)?v:v==null?[]:Le(v),h=d.length;c&&h===0||(c=h===0,Jn(d,l,s,i,e,n),o!==null&&(h===0?u?ne(u):u=gt(()=>o(s)):u!==null&&re(u,()=>{u=null})),r())})}function Jn(t,e,r,n,i,o){var Kt,zt,Zt,Yt;var s=(i&_n)!==0,l=(i&(Ie|Ce))!==0,f=t.length,a=e.items,u=e.first,c=u,v,d=null,h,g=[],b=[],k,E,m,y;if(s)for(y=0;y<f;y+=1)k=t[y],E=o(k,y),m=a.get(E),m!==void 0&&((Kt=m.a)==null||Kt.measure(),(h??(h=new Set)).add(m));for(y=0;y<f;y+=1){if(k=t[y],E=o(k,y),m=a.get(E),m===void 0){var R=c?c.e.nodes_start:r;d=Zn(R,e,d,d===null?e.first:d.next,k,E,y,n,i),a.set(E,d),g=[],b=[],c=d.next;continue}if(l&&Kn(m,k,y,i),m.e.f&st&&(ne(m.e),s&&((zt=m.a)==null||zt.unfix(),(h??(h=new Set)).delete(m))),m!==c){if(v!==void 0&&v.has(m)){if(g.length<b.length){var j=b[0],L;d=j.prev;var D=g[0],W=g[g.length-1];for(L=0;L<g.length;L+=1)er(g[L],j,r);for(L=0;L<b.length;L+=1)v.delete(b[L]);lt(e,D.prev,W.next),lt(e,d,D),lt(e,W,j),c=j,d=W,y-=1,g=[],b=[]}else v.delete(m),er(m,c,r),lt(e,m.prev,m.next),lt(e,m,d===null?e.first:d.next),lt(e,d,m),d=m;continue}for(g=[],b=[];c!==null&&c.k!==E;)c.e.f&st||(v??(v=new Set)).add(c),b.push(c),c=c.next;if(c===null)continue;m=c}g.push(m),d=m,c=m.next}if(c!==null||v!==void 0){for(var U=v===void 0?[]:Le(v);c!==null;)c.e.f&st||U.push(c),c=c.next;var mt=U.length;if(mt>0){var ge=i&vr&&f===0?r:null;if(s){for(y=0;y<mt;y+=1)(Zt=U[y].a)==null||Zt.measure();for(y=0;y<mt;y+=1)(Yt=U[y].a)==null||Yt.fix()}Vn(e,U,ge,a)}}s&&de(()=>{var Qt;if(h!==void 0)for(m of h)(Qt=m.a)==null||Qt.apply()}),S.first=e.first&&e.first.e,S.last=d&&d.e}function Kn(t,e,r,n){n&Ie&&xe(t.v,e),n&Ce?xe(t.i,r):t.i=r}function Zn(t,e,r,n,i,o,s,l,f){var a=be;try{var u=(f&Ie)!==0,c=(f&pn)===0,v=u?c?vn(i):Z(i):i,d=f&Ce?Z(s):s,h={i:d,v,k:o,a:null,e:null,prev:r,next:n};return be=h,h.e=gt(()=>l(t,v,d),hr),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{be=a}}function er(t,e,r){for(var n=t.next?t.next.e.nodes_start:r,i=e?e.e.nodes_start:r,o=t.e.nodes_start;o!==n;){var s=ce(o);i.before(o),o=s}}function lt(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 Yn(t,e,...r){var n=t,i=Pt,o;Wt(()=>{i!==(i=e())&&(o&&(_t(o),o=null),o=gt(()=>i(n,...r)))},Ht)}function B(t,e,r,n){var i=t.__attributes??(t.__attributes={});i[e]!==(i[e]=r)&&(e==="loading"&&(t[rn]=r),r==null?t.removeAttribute(e):typeof r!="string"&&Qn(t).includes(e)?t[e]=r:t.setAttribute(e,r))}var rr=new Map;function Qn(t){var e=rr.get(t.nodeName);if(e)return e;rr.set(t.nodeName,e=[]);for(var r,n=te(t);n.constructor.name!=="Element";){r=sr(n);for(var i in r)r[i].set&&e.push(i);n=te(n)}return e}function Xn(t,e){var r=t.__className,n=$n(e);(r!==n||hr)&&(n===""?t.removeAttribute("class"):t.setAttribute("class",n),t.__className=n)}function $n(t){return t??""}function se(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 Me(t,e,r,n,i){var o=t.__attributes??(t.__attributes={}),s=t.style,l="style-"+e;o[l]===r&&!i||(o[l]=r,r==null?s.removeProperty(e):s.setProperty(e,r,""))}const ti=requestAnimationFrame,ei=()=>performance.now(),ft={tick:t=>ti(t),now:()=>ei(),tasks:new Set};function Lr(t){ft.tasks.forEach(e=>{e.c(t)||(ft.tasks.delete(e),e.f())}),ft.tasks.size!==0&&ft.tick(Lr)}function ri(t){let e;return ft.tasks.size===0&&ft.tick(Lr),{promise:new Promise(r=>{ft.tasks.add(e={c:t,f:r})}),abort(){ft.tasks.delete(e)}}}function Xt(t,e){t.dispatchEvent(new CustomEvent(e))}function ni(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 nr(t){const e={},r=t.split(";");for(const n of r){const[i,o]=n.split(":");if(!i||o===void 0)break;const s=ni(i.trim());e[s]=o.trim()}return e}const ii=t=>t;function oi(t,e,r,n){var i=(t&gn)!==0,o="both",s,l=e.inert,f,a;function u(){return s??(s=r()(e,(n==null?void 0:n())??{},{direction:o}))}var c={is_global:i,in(){e.inert=l,Xt(e,"introstart"),f=Ae(e,u(),a,1,()=>{Xt(e,"introend"),f==null||f.abort(),f=s=void 0})},out(g){e.inert=!0,Xt(e,"outrostart"),a=Ae(e,u(),f,0,()=>{Xt(e,"outroend"),g==null||g()})},stop:()=>{f==null||f.abort(),a==null||a.abort()}},v=S;if((v.transitions??(v.transitions=[])).push(c),Ne){var d=i;if(!d){for(var h=v.parent;h&&h.f&Ht;)for(;(h=h.parent)&&!(h.f&ue););d=!h||(h.f&lr)!==0}d&&At(()=>{Gt(()=>c.in())})}}function Ae(t,e,r,n,i){var o=n===1;if($r(e)){var s,l=!1;return de(()=>{if(!l){var b=e({direction:o?"in":"out"});s=Ae(t,b,r,n,i)}}),{abort:()=>{l=!0,s==null||s.abort()},deactivate:()=>s.deactivate(),reset:()=>s.reset(),t:()=>s.t()}}if(r==null||r.deactivate(),!(e!=null&&e.duration))return i(),{abort:Pt,deactivate:Pt,reset:Pt,t:()=>n};const{delay:f=0,css:a,tick:u,easing:c=ii}=e;var v=[];if(o&&r===void 0&&(u&&u(0,1),a)){var d=nr(a(0,1));v.push(d,d)}var h=()=>1-n,g=t.animate(v,{duration:f});return g.onfinish=()=>{var b=(r==null?void 0:r.t())??1-n;r==null||r.abort();var k=n-b,E=e.duration*Math.abs(k),m=[];if(E>0){if(a)for(var y=Math.ceil(E/16.666666666666668),R=0;R<=y;R+=1){var j=b+k*c(R/y),L=a(j,1-j);m.push(nr(L))}h=()=>{var D=g.currentTime;return b+k*c(D/E)},u&&ri(()=>{if(g.playState!=="running")return!1;var D=h();return u(D,1-D),!0})}g=t.animate(m,{duration:E,fill:"forwards"}),g.onfinish=()=>{h=()=>n,u==null||u(n,1-n),i()}},{abort:()=>{g&&(g.cancel(),g.effect=null)},deactivate:()=>{i=Pt},reset:()=>{n===0&&(u==null||u(1,0))},t:()=>h()}}function ze(t,e,r){if(t.multiple)return ai(t,e);for(var n of t.options){var i=Ir(n);if(bn(i,e)){n.selected=!0;return}}(!r||e!==void 0)&&(t.selectedIndex=-1)}function si(t,e){let r=!0;At(()=>{e&&ze(t,Gt(e),r),r=!1;var n=new MutationObserver(()=>{var i=t.__value;ze(t,i)});return n.observe(t,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),()=>{n.disconnect()}})}function ai(t,e){for(var r of t.options)r.selected=~e.indexOf(Ir(r))}function Ir(t){return"__value"in t?t.__value:t.value}var ut,kt,jt,ae,Cr;const le=class le{constructor(e){Dt(this,ae);Dt(this,ut,new WeakMap);Dt(this,kt);Dt(this,jt);me(this,jt,e)}observe(e,r){var n=it(this,ut).get(e)||new Set;return n.add(r),it(this,ut).set(e,n),Je(this,ae,Cr).call(this).observe(e,it(this,jt)),()=>{var i=it(this,ut).get(e);i.delete(r),i.size===0&&(it(this,ut).delete(e),it(this,kt).unobserve(e))}}};ut=new WeakMap,kt=new WeakMap,jt=new WeakMap,ae=new WeakSet,Cr=function(){return it(this,kt)??me(this,kt,new ResizeObserver(e=>{for(var r of e){le.entries.set(r.target,r);for(var n of it(this,ut).get(r.target)||[])n(r)}}))},nt(le,"entries",new WeakMap);let De=le;var li=new De({box:"border-box"});function ct(t,e,r){var n=li.observe(t,()=>r(t[e]));At(()=>(Gt(()=>r(t[e])),n))}function ir(t,e){return t===e||(t==null?void 0:t[dt])===e}function ui(t={},e,r,n){return At(()=>{var i,o;return yr(()=>{i=o,o=[],Gt(()=>{t!==r(...o)&&(e(t,...o),i&&ir(r(...i),t)&&e(null,...i))})}),()=>{de(()=>{o&&ir(r(...o),t)&&e(null,...o)})}}),t}function _e(t=!1){const e=C,r=e.l.u;if(!r)return;let n=()=>jn(e.s);if(t){let i=0,o={};const s=O(()=>{let l=!1;const f=e.s;for(const a in f)f[a]!==o[a]&&(o[a]=f[a],l=!0);return l&&i++,i});n=()=>_(s)}r.b.length&&Sn(()=>{or(e,n),ye(r.b)}),Qe(()=>{const i=Gt(()=>r.m.map(tn));return()=>{for(const o of i)typeof o=="function"&&o()}}),r.a.length&&Qe(()=>{or(e,n),ye(r.a)})}function or(t,e){if(t.l.s)for(const r of t.l.s)_(r);e()}const fi="5";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(fi);const ci=t=>t;function di(t,{delay:e=0,duration:r=400,easing:n=ci}={}){const i=+getComputedStyle(t).opacity;return{delay:e,duration:r,easing:n,css:o=>`opacity: ${o*i}`}}function vi(){let t=V("uncompressed");return{get type(){return _(t)},setType(e){z(t,Q(e))}}}function hi(){let t=Q({file:null,folder:null,output:null,duplicates:null}),e=Q([]);return{get file(){return t.file},get folder(){return t.folder},get output(){return t.output},get duplicates(){return t.duplicates},open(r,n){e.push(r),t[r]=n},close(){e.length!==0&&(t[e.pop()]=null)}}}function _i(t){return Object.entries(t.outputs).map(([e,r])=>{const n=new pi;return Object.entries(r.inputs).forEach(([i,o])=>n.insert(i,o)),n.root.name=e,n.root.uncompressed=r.uncompressed,n.root.gzip=r.gzip,n.root.brotli=r.brotli,n.optimize(),n})}function pt(t){return"items"in t}class pi{constructor(){nt(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 o=this.root;n.forEach(s=>{let l=o.items.find(f=>pt(f)&&f.name===s);l||(l=this.createNode(s,o.path?`${o.path}/${s}`:s),o.items.push(l)),o=l,o.uncompressed+=r.uncompressed,o.gzip+=r.gzip,o.brotli+=r.brotli}),o.items.push({name:i,path:o.path?`${o.path}/${i}`:i,uncompressed:r.uncompressed,gzip:r.gzip,brotli:r.brotli})}optimize(){const e=[this.root];for(;e.length;){const r=e.pop();for(;r.items.length===1&&pt(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=>pt(n)&&e.push(n))}}get(e){let r=this.root;for(;r&&r.path!==e;)r=pt(r)&&r.items.find(n=>e.startsWith(n.path))||null;return r}}const Pe=_i(window.SONDA_JSON_REPORT);function gi(){let t=V(0);const e=O(()=>Pe.at(_(t)));return{get index(){return _(t)},get output(){return _(e)},setIndex(r){z(t,Q(r))}}}const wi=/(.*)(?:.*node_modules\/)(@[^\/]+\/[^\/]+|[^\/]+)/,mi=Object.keys(window.SONDA_JSON_REPORT.inputs).map(t=>wi.exec(t)).filter(t=>t!==null).reduce((t,e)=>{const[r,,n]=e;return t.has(n)||t.set(n,new Set),t.get(n).add(r),t},new Map),$t=new Map(Array.from(mi).filter(([,t])=>t.size>1).map(([t,e])=>[t,Array.from(e)])),X=gi(),Nt=vi(),Y=hi();var bi=()=>Y.close(),yi=T('<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 pe(t,e){q(e,!0);let r=V(void 0);function n(v){v.target===_(r)&&Y.close()}var i=yi();Et("click",ot.body,n);var o=p(i);ui(o,v=>z(r,v),()=>_(r));var s=w(o,2),l=p(s),f=p(l),a=p(f),u=w(f,2);u.__click=[bi];var c=w(l,2);Yn(c,()=>e.children),A(()=>{se(s,"w-[95vw]",e.large),se(s,"h-[95vh]",e.large),M(a,e.heading)}),oi(3,i,()=>di,()=>({duration:150})),x(t,i),H()}Vt(["click"]);function $(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]}`}var xi=T('<span class="text-gray-900"> </span> <span class="text-gray-600"> </span>',1),Ei=Rr('<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 ki(t,e){q(e,!0);const r=20,n=6,i=22,o=O(()=>e.tile.width-n*2),s=O(()=>e.tile.height-n-i),l=O(()=>$(e.content[Nt.type])),f=O(()=>Math.min(e.content[Nt.type]/e.totalBytes*100,100)),a=O(()=>`${e.content.name} - ${_(l)} (${_(f).toFixed(2)}%)`),u=O(()=>Math.round(_(f))+"%"),c=O(()=>e.tile.width>=i*1.75&&e.tile.height>=i),v=O(()=>!pt(e.content)||_(s)<=r||_(o)<=r?[]:e.content.items);var d=Ei(),h=p(d);const g=O(()=>`stroke-gray-500 ${(pt(e.content)?"cursor-zoom-in":"cursor-pointer")??""} svelte-xusoaq`);var b=w(h),k=p(b),E=p(k);P(E,()=>_(c),y=>{var R=xi(),j=I(R),L=p(j),D=w(j,2),W=p(D);A(()=>{M(L,e.content.name),M(W,`- ${_(l)??""}`)}),x(y,R)});var m=w(b);P(m,()=>_(v).length,y=>{var R=O(()=>e.tile.x+n),j=O(()=>e.tile.y+i);jr(y,{get content(){return _(v)},get totalBytes(){return e.totalBytes},get width(){return _(o)},get height(){return _(s)},get xStart(){return _(R)},get yStart(){return _(j)}})}),A(()=>{B(h,"data-tile",e.content.path),B(h,"data-hover",_(a)),B(h,"x",e.tile.x),B(h,"y",e.tile.y),B(h,"width",e.tile.width),B(h,"height",e.tile.height),Xn(h,_(g)),Me(h,"--percentage",_(u)),B(b,"x",e.tile.x),B(b,"y",e.tile.y),B(b,"width",e.tile.width),B(b,"height",e.tile.height)}),x(t,d),H()}class Si{constructor(e,r,n,i=0,o=0){nt(this,"sizes");nt(this,"tiles");nt(this,"xStart");nt(this,"yStart");nt(this,"widthLeft");nt(this,"heightLeft");const s=e.reduce((f,a)=>f+a,0),l=n*r/s;this.sizes=new Float32Array(e.length);for(let f=0;f<e.length;f++)this.sizes[f]=e[f]*l;this.tiles=new Array,this.xStart=i,this.yStart=o,this.widthLeft=r,this.heightLeft=n}layout(e,r,n,i,o){let s=i?this.yStart:this.xStart,l;const f=this.sizes,a=this.tiles;for(let u=e;u<=r;u++)l=f[u]/n,i?a.push({x:this.xStart,y:s,width:n,height:l}):a.push({x:s,y:this.yStart,width:l,height:n}),s+=l,o++;return i?(this.xStart+=n,this.widthLeft-=n):(this.yStart+=n,this.heightLeft-=n),o}calculate(){let e=this.heightLeft<this.widthLeft,r=e?this.heightLeft:this.widthLeft,n=r*r,i=0,o=0,s=this.sizes[0],l=this.sizes[0],f=this.sizes[0],a=0,u=s*s,c=Math.max(n*f/u,u/(n*l));for(let v=1;v<this.sizes.length;v++){const d=this.sizes[v],h=s+d,g=l<d?l:d,b=f>d?f:d,k=h*h,E=Math.max(n*b/k,k/(n*g));(c<=E?1:0)?(a=this.layout(i,o,s/r,e,a),e=this.heightLeft<this.widthLeft,r=e?this.heightLeft:this.widthLeft,n=r*r,i=v,o=v,s=d,l=d,f=d,u=d*d,c=Math.max(n*f/u,u/(n*l))):(o=v,s=h,l=g,f=b,u=k,c=E)}return a=this.layout(i,o,s/r,e,a),this.tiles}}function jr(t,e){q(e,!0);const r=O(()=>Array.isArray(e.content)?Object.values(e.content):[e.content]),n=O(()=>new Si(_(r).map(l=>l[Nt.type]),e.width,e.height,e.xStart,e.yStart).calculate());var i=Jt(),o=I(i);We(o,18,()=>_(n),s=>s,(s,l,f)=>{ki(s,{get tile(){return l},get content(){return _(r)[_(f)]},get totalBytes(){return e.totalBytes}})}),x(t,i),H()}var Oi=Rr('<svg xmlns="http://www.w3.org/2000/svg" role="img"><!></svg>');function Br(t,e){q(e,!0);var r=Jt(),n=I(r);Un(n,()=>[e.content.path,e.width,e.height],i=>{var o=Oi(),s=p(o),l=O(()=>e.width-1),f=O(()=>e.height-1);jr(s,{get content(){return e.content},get totalBytes(){return e.content[Nt.type]},get width(){return _(l)},get height(){return _(f)},xStart:.5,yStart:.5}),A(()=>{B(o,"width",e.width),B(o,"height",e.height)}),x(i,o)}),x(t,r),H()}var Ti=T('<span>Approx. GZIP size</span> <span class="font-bold"> </span>',1),Ni=T('<span>Approx. Brotli size</span> <span class="font-bold"> </span>',1),Mi=T('<div class="mb-4 grid grid-cols-[auto_1fr] gap-x-8"><span>Bundled size</span> <span class="font-bold"> </span> <!> <!></div> <div class="flex-grow overflow-hidden"><!></div>',1);function Ai(t,e){q(e,!0);let r=V(0),n=V(0);pe(t,{get heading(){return e.folder.path},large:!0,children:o=>{var s=Mi(),l=I(s),f=w(p(l),2),a=p(f);A(()=>M(a,$(e.folder.uncompressed)));var u=w(f,2);P(u,()=>e.folder.gzip,h=>{var g=Ti(),b=w(I(g),2),k=p(b);A(()=>M(k,$(e.folder.gzip))),x(h,g)});var c=w(u,2);P(c,()=>e.folder.brotli,h=>{var g=Ni(),b=w(I(g),2),k=p(b);A(()=>M(k,$(e.folder.brotli))),x(h,g)});var v=w(l,2),d=p(v);Br(d,{get content(){return e.folder},get width(){return _(r)},get height(){return _(n)}}),ct(v,"clientWidth",h=>z(r,h)),ct(v,"clientHeight",h=>z(n,h)),x(o,s)},$$slots:{children:!0}}),H()}class Ue{static generate(e,r){return this.processItems(e,r).join(`
2
+ `).trim()}static processItems(e,r=null,n=""){const i=[],o=e.length-1;return e.forEach((s,l)=>{const f=l===o,a=f?"└── ":"├── ",[u,c]=typeof s=="string"?[s,s]:s,v=r==null?void 0:r(u,e);if(i.push(n+a+c),v){const d=f?" ":"│ ";return i.push(...this.processItems(v,r,n+d))}if(f)return i.push(n)}),i}}var zi=T('<span>File format</span> <span class="font-bold"> </span>',1),Di=T('<span>Approx. GZIP size</span> <span class="font-bold"> </span>',1),Pi=T('<span>Approx. Brotli size</span> <span class="font-bold"> </span>',1),Ri=T('<p class="mt-12">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 min-w-full"><pre> </pre></code>',1),Li=T('<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 Ii(t,e){q(e,!0);const r=O(()=>window.SONDA_JSON_REPORT.inputs[e.file.path]),n=O(()=>{var l;if(_(r))return _(r).format.toUpperCase();const s=(l=window.SONDA_JSON_REPORT.inputs[e.file.path])==null?void 0:l.belongsTo;return s?window.SONDA_JSON_REPORT.inputs[s].format.toUpperCase:"UNKNOWN"});function i(s,l){return l.length>1?[]:Object.entries(window.SONDA_JSON_REPORT.inputs).filter(([,f])=>f.imports.includes(s)).map(([f])=>[f,`imported by ${f}`])}const o=O(()=>{if(!_(r))return null;const s=_(r).belongsTo?[[_(r).belongsTo,`part of the ${_(r).belongsTo} bundle`]]:i(e.file.path,[]);return Ue.generate(s,i)});pe(t,{get heading(){return e.file.path},children:l=>{var f=Li(),a=p(f),u=p(a);P(u,()=>_(n)!=="UNKNOWN",E=>{var m=zi(),y=w(I(m),2),R=p(y);A(()=>M(R,_(n))),x(E,m)});var c=w(u,4),v=p(c);A(()=>{var E;return M(v,$(((E=_(r))==null?void 0:E.bytes)||0))});var d=w(c,4),h=p(d);A(()=>M(h,$(e.file.uncompressed)));var g=w(d,2);P(g,()=>e.file.gzip,E=>{var m=Di(),y=w(I(m),2),R=p(y);A(()=>M(R,$(e.file.gzip))),x(E,m)});var b=w(g,2);P(b,()=>e.file.brotli,E=>{var m=Pi(),y=w(I(m),2),R=p(y);A(()=>M(R,$(e.file.brotli))),x(E,m)});var k=w(a,2);P(k,()=>_(o),E=>{var m=Ri(),y=w(I(m),2),R=p(y),j=p(R);A(()=>M(j,_(o))),x(E,m)}),x(l,f)},$$slots:{children:!0}}),H()}var Ci=T('<p>The following dependencies are duplicated:</p> <code class="mt-2 p-4 w-max leading-5 bg-slate-200 rounded overflow-auto min-w-full"><pre> </pre></code>',1);function ji(t,e){q(e,!0);const r=O(()=>Ue.generate(Array.from($t.keys()),n=>$t.get(n)));pe(t,{heading:"Duplicated modules found in the build",children:i=>{var o=Jt(),s=I(o);P(s,()=>$t.size>0,l=>{var f=Ci(),a=w(I(f),2),u=p(a),c=p(u);A(()=>M(c,_(r))),x(l,f)}),x(i,o)},$$slots:{children:!0}}),H()}var Bi=T('<span>GZIP size</span> <span class="font-bold"> </span>',1),Fi=T('<span>Brotli size</span> <span class="font-bold"> </span>',1),qi=T('<p class="mt-12">Module types</p> <div class="mt-2 h-10 w-[40rem] max-w-full flex rounded-lg overflow-hidden"><div class="bg-yellow-300 h-full"></div> <div class="bg-blue-300 h-full"></div> <div class="bg-gray-200 h-full"></div></div> <div class="flex justify-between mt-2"><div class="flex items-center space-x-2"><div class="inline-block w-4 h-4 bg-yellow-300"></div> <p>ESM: <span class="font-semibold"> </span></p></div> <div class="flex items-center space-x-2"><div class="inline-block w-4 h-4 bg-blue-300"></div> <p>CJS: <span class="font-semibold"> </span></p></div> <div class="flex items-center space-x-2"><div class="inline-block w-4 h-4 bg-gray-300"></div> <p>Unknown: <span class="font-semibold"> </span></p></div></div>',1),Hi=T('<code class="mt-2 p-4 w-max leading-5 bg-slate-200 rounded overflow-auto min-w-full"><pre> </pre></code>'),Wi=T('<div class="flex flex-col overflow-y-auto"><div class="grid grid-cols-[auto_1fr] gap-x-8"><span>Bundled size</span> <span class="font-bold"> </span> <!> <!></div></div> <!> <p class="mt-12">This asset includes <span class="font-semibold"> </span> external dependencies</p> <!>',1);function Ui(t,e){q(e,!0);const r=O(()=>window.SONDA_JSON_REPORT.outputs[e.output.root.name]),n=O(()=>{const a={esm:0,cjs:0,unknown:0},u=window.SONDA_JSON_REPORT.inputs;return Object.entries(_(r).inputs).forEach(([c,v])=>{var h;const d=((h=u[c])==null?void 0:h.format)??"unknown";a[d]+=v.uncompressed}),a}),i=O(()=>Math.round(_(n).esm/_(r).uncompressed*1e4)/100),o=O(()=>Math.round(_(n).cjs/_(r).uncompressed*1e4)/100),s=O(()=>Math.round(_(n).unknown/_(r).uncompressed*1e4)/100),l=O(()=>{const a=/(?:.*node_modules\/)(@[^\/]+\/[^\/]+|[^\/]+)/;return Object.keys(_(r).inputs).map(u=>{var c;return((c=u.match(a))==null?void 0:c[1])??null}).filter((u,c,v)=>u!==null&&v.indexOf(u)===c).sort()}),f=O(()=>Ue.generate(_(l)));pe(t,{get heading(){return e.output.root.name},children:u=>{var c=Wi(),v=I(c),d=p(v),h=w(p(d),2),g=p(h);A(()=>M(g,$(e.output.root.uncompressed)));var b=w(h,2);P(b,()=>e.output.root.gzip,L=>{var D=Bi(),W=w(I(D),2),U=p(W);A(()=>M(U,$(e.output.root.gzip))),x(L,D)});var k=w(b,2);P(k,()=>e.output.root.brotli,L=>{var D=Fi(),W=w(I(D),2),U=p(W);A(()=>M(U,$(e.output.root.brotli))),x(L,D)});var E=w(v,2);P(E,()=>_(s)<100,L=>{var D=qi(),W=w(I(D),2),U=p(W),mt=w(U,2),ge=w(mt,2),Kt=w(W,2),zt=p(Kt),Zt=w(p(zt),2),Yt=w(p(Zt)),Qt=p(Yt),Ge=w(zt,2),Fr=w(p(Ge),2),qr=w(p(Fr)),Hr=p(qr),Wr=w(Ge,2),Ur=w(p(Wr),2),Gr=w(p(Ur)),Vr=p(Gr);A(()=>{B(U,"style",`width: ${_(i)}%`),B(mt,"style",`width: ${_(o)}%`),B(ge,"style",`width: ${_(s)}%`),M(Qt,`${_(i)??""}%`),M(Hr,`${_(o)??""}%`),M(Vr,`${_(s)??""}%`)}),x(L,D)});var m=w(E,2),y=w(p(m)),R=p(y),j=w(m,2);P(j,()=>_(l).length>0,L=>{var D=Hi(),W=p(D),U=p(W);A(()=>M(U,_(f))),x(L,D)}),A(()=>M(R,_(l).length)),x(u,c)},$$slots:{children:!0}}),H()}var Gi=T("<!> <!> <!> <!>",1);function Vi(t,e){q(e,!1),_e();var r=Gi(),n=I(r);P(n,()=>Y.folder,l=>{Ai(l,{get folder(){return Y.folder}})});var i=w(n,2);P(i,()=>Y.file,l=>{Ii(l,{get file(){return Y.file}})});var o=w(i,2);P(o,()=>Y.output,l=>{Ui(l,{get output(){return Y.output}})});var s=w(o,2);P(s,()=>Y.duplicates,l=>{ji(l,{})}),x(t,r),H()}var Ji=(t,e)=>Nt.setType(e()),Ki=T('<button type="button" class="px-4 py-2 text-sm font-medium bg-white hover:bg-gray-100 text-gray-900 border border-gray-300 first:rounded-s-lg last:rounded-e-lg focus:ring-1 focus:ring-blue-300 focus:z-10 svelte-2f0583"> </button>'),Zi=T('<div class="inline-flex space-x-[-1px]" role="group"></div>');function Yi(t,e){q(e,!0);const r=O(()=>X.output.root.gzip>0),n=O(()=>X.output.root.brotli>0),i=O(()=>{const l=[["uncompressed","Uncompressed"]];return _(r)&&l.push(["gzip","GZIP"]),_(n)&&l.push(["brotli","Brotli"]),l});var o=Jt(),s=I(o);P(s,()=>_(i).length>1,l=>{var f=Zi();We(f,21,()=>_(i),([a,u])=>a,(a,u)=>{let c=()=>_(u)[0],v=()=>_(u)[1];var d=Ki();d.__click=[Ji,c];var h=p(d);A(()=>{B(d,"title",`Show the ${v()} file size in diagram`),se(d,"active",c()===Nt.type),M(h,v())}),x(a,d)}),x(l,f)}),x(t,o),H()}Vt(["click"]);function Qi(){Y.open("output",X.output)}var Xi=T('<button title="Show details of the active output" 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 pointer-events-none"><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>');function $i(t,e){q(e,!1),_e();var r=Xi();r.__click=[Qi],x(t,r),H()}Vt(["click"]);function to(){Y.open("duplicates",!0)}var eo=T('<button title="See duplicated modules found in the build" aria-label="List of duplicated modules found in the build output" class="text-gray-900 bg-red-50 border border-red-400 focus:outline-none hover:bg-red-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="24" height="24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-red-600"><path stroke="none" d="M0 0h24v24H0z" shape-rendering="geometricPrecision"></path><path d="M3 12a9 9 0 1 0 18 0 9 9 0 0 0-18 0M12 8v4M12 16h.01" shape-rendering="geometricPrecision"></path></svg></button>');function ro(t,e){q(e,!1),_e();var r=Jt(),n=I(r);P(n,()=>$t.size>1,i=>{var o=eo();o.__click=[to],x(i,o)}),x(t,r),H()}Vt(["click"]);function no(t){X.setIndex(Number(t.target.value))}var io=T("<option> </option>"),oo=T('<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 pl-4 pr-8 h-10 min-w-80 svelte-yqayp2" title="Select the active output"></select>'),so=T('<div class="flex items-center justify-center space-x-2 max-w-sm"><!></div>');function ao(t,e){q(e,!1),_e();var r=so(),n=p(r);P(n,()=>Pe.length>0,i=>{var o=oo();si(o,()=>X.index);var s;o.__change=[no],We(o,5,()=>Pe,Gn,(l,f,a)=>{var u=io();u.value=(u.__value=a)==null?"":a;var c=p(u);A(()=>M(c,`${a+1}. ${_(f).root.name??""}`)),x(l,u)}),A(()=>{s!==(s=X.index)&&(o.value=(o.__value=X.index)==null?"":X.index,ze(o,X.index))}),x(i,o)}),x(t,r),H()}Vt(["change"]);var lo=T('<a href="https://github.com/filipsobol/sonda" target="_blank" title="Open Sonda repository on GitHub" 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 pointer-events-none"><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>');function uo(t){var e=lo();x(t,e)}var fo=T('<div class="flex flex-row p-4 items-center space-y-0 h-16 justify-between bg-gray-50 shadow"><div class="flex flex-row space-x-2"><!> <!> <!></div> <div class="flex flex-row space-x-2"><!> <!></div></div>');function co(t){var e=fo(),r=p(e),n=p(r);ao(n,{});var i=w(n,2);$i(i,{});var o=w(i,2);ro(o,{});var s=w(r,2),l=p(s);Yi(l,{});var f=w(l,2);uo(f),x(t,e)}var vo=T('<div class="flex-grow flex flex-col mt-24 items-center w-full h-full"><svg xmlns="http://www.w3.org/2000/svg" width="96" height="96" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round" class="text-yellow-400 fill-yellow-100"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M12 21a9 9 0 1 1 0 -18a9 9 0 0 1 0 18z"></path><path d="M8 16l1 -1l1.5 1l1.5 -1l1.5 1l1.5 -1l1 1"></path><path d="M8.5 11.5l1.5 -1.5l-1.5 -1.5"></path><path d="M15.5 11.5l-1.5 -1.5l1.5 -1.5"></path></svg> <h2 class="mt-8 text-3xl font-semibold text-gray-800">No data to display</h2> <p class="mt-4 text-lg text-gray-500">Did you enable source maps in the bundler configuration?</p></div>');function ho(t){var e=vo();x(t,e)}var _o=T('<div role="tooltip" class="fixed z-10 px-2 py-1 bg-gray-800 text-gray-100 rounded-md whitespace-nowrap pointer-events-none svelte-1r0gq6x"> </div>');function po(t){let r=V(0),n=V(0),i=V(0),o=V(0),s=V(""),l=V("0px"),f=V("0px");function a({target:v,clientX:d,clientY:h}){z(s,Q(v instanceof Element&&v.getAttribute("data-hover")||"")),_(s)&&(z(l,(d+_(r)+12>_(i)?d-_(r)-12:d+12)+"px"),z(f,(h+_(n)+12>_(o)?h-_(n):h+12)+"px"))}var u=_o();Et("mouseover",ot.body,a),Et("mousemove",ot.body,a),Et("mouseleave",ot.body,()=>z(s,""));var c=p(u);A(()=>{se(u,"invisible",!_(s)),Me(u,"--x",_(l)),Me(u,"--y",_(f)),M(c,_(s))}),ct(ot.body,"clientWidth",v=>z(i,Q(v))),ct(ot.body,"clientHeight",v=>z(o,Q(v))),ct(u,"clientWidth",v=>z(r,v)),ct(u,"clientHeight",v=>z(n,v)),x(t,u)}var go=T('<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 wo(t,e){q(e,!0);let r=V(0),n=V(0);function i({target:d}){const h=d instanceof Element&&d.getAttribute("data-tile");if(!h)return;const g=X.output.get(h);g&&Y.open(pt(g)?"folder":"file",g)}function o(d){d.key==="Escape"&&(d.stopPropagation(),Y.close())}var s=go();Et("click",ot.body,i),Et("keydown",ot.body,o);var l=I(s),f=p(l);co(f);var a=w(f,2),u=p(a);P(u,()=>X,d=>{Br(d,{get content(){return X.output.root},get width(){return _(r)},get height(){return _(n)}})},d=>{ho(d)});var c=w(l,2);Vi(c,{});var v=w(c,2);po(v),ct(a,"clientWidth",d=>z(r,d)),ct(a,"clientHeight",d=>z(n,d)),x(t,s),H()}Hn(wo,{target:document.getElementById("app")});</script><style rel="stylesheet" crossorigin>rect.svelte-xusoaq{fill:color-mix(in oklch,#fca5a5 var(--percentage),#86efac)}rect.svelte-xusoaq:hover{fill:color-mix(in oklch,#fecaca var(--percentage),#bbf7d0)}button.active.svelte-2f0583,button.active.svelte-2f0583:hover{background-color:#e5e7eb}select.svelte-yqayp2{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="%236b7280" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path stroke="none" d="M0 0h24v24H0z"/><path d="m8 9 4-4 4 4M16 15l-4 4-4-4"/></svg>');background-position:right .5rem center;background-repeat:no-repeat}div[role=tooltip].svelte-1r0gq6x{transform:translate(var(--x),var(--y));will-change:transform,contents}*,: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]:where(:not([hidden=until-found])){display:none}.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.static{position:static}.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-12{margin-top:3rem}.mt-2{margin-top:.5rem}.mt-24{margin-top:6rem}.mt-4{margin-top:1rem}.mt-8{margin-top:2rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.contents{display:contents}.size-full{width:100%;height:100%}.h-10{height:2.5rem}.h-16{height:4rem}.h-4{height:1rem}.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-4{width:1rem}.w-\[40rem\]{width:40rem}.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}.min-w-full{min-width:100%}.max-w-\[95vw\]{max-width:95vw}.max-w-full{max-width:100%}.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-center{justify-content:center}.justify-between{justify-content:space-between}.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-x-\[-1px\]>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(-1px * var(--tw-space-x-reverse));margin-left:calc(-1px * 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-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113 / var(--tw-border-opacity))}.border-transparent{border-color:transparent}.bg-blue-300{--tw-bg-opacity:1;background-color:rgb(147 197 253 / var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.bg-gray-200\/70{background-color:#e5e7ebb3}.bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219 / var(--tw-bg-opacity))}.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-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242 / 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))}.bg-yellow-300{--tw-bg-opacity:1;background-color:rgb(253 224 71 / var(--tw-bg-opacity))}.fill-yellow-100{fill:#fef9c3}.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-4{padding-left:1rem;padding-right:1rem}.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}.pl-4{padding-left:1rem}.pr-6{padding-right:1.5rem}.pr-8{padding-right:2rem}.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-3xl{font-size:1.875rem;line-height:2.25rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.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-500{--tw-text-opacity:1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99 / var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55 / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38 / var(--tw-text-opacity))}.text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21 / var(--tw-text-opacity))}.shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0 / .1),0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.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)}pre{line-height:1.125}.first\:rounded-s-lg:first-child{border-start-start-radius:.5rem;border-end-start-radius:.5rem}.last\:rounded-e-lg:last-child{border-start-end-radius:.5rem;border-end-end-radius:.5rem}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.hover\:bg-red-100:hover{--tw-bg-opacity:1;background-color:rgb(254 226 226 / var(--tw-bg-opacity))}.hover\:text-gray-900:hover{--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity))}.focus\:z-10:focus{z-index:10}.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,30 +1,10 @@
1
- import { relative, sep, posix, join, dirname, isAbsolute, resolve } from 'path';
1
+ import { join, dirname, isAbsolute, resolve, relative, win32, posix } from 'path';
2
+ import remapping from '@ampproject/remapping';
2
3
  import { existsSync, readFileSync, writeFileSync } from 'fs';
3
4
  import { fileURLToPath } from 'url';
4
5
  import { decode } from '@jridgewell/sourcemap-codec';
5
- import remapping from '@ampproject/remapping';
6
6
  import { gzipSync, brotliCompressSync } from 'zlib';
7
7
 
8
- const cwd = /* #__PURE__ */ process.cwd();
9
- function normalizeOptions(options) {
10
- const defaultOptions = {
11
- open: true,
12
- format: 'html',
13
- detailed: false,
14
- gzip: false,
15
- brotli: false
16
- };
17
- return Object.assign({}, defaultOptions, options);
18
- }
19
- function normalizePath(path) {
20
- // Unicode escape sequences used by Rollup and Vite to identify virtual modules
21
- const normalized = path.replace(/^\0/, '');
22
- // Transform absolute paths to relative paths
23
- const relativized = relative(cwd, normalized);
24
- // Ensure paths are POSIX-compliant - https://stackoverflow.com/a/63251716/4617687
25
- return relativized.replaceAll(sep, posix.sep);
26
- }
27
-
28
8
  /**
29
9
  * Strip any JSON XSSI avoidance prefix from the string (as documented in the source maps specification),
30
10
  * and parses the string as JSON.
@@ -121,6 +101,27 @@ function parseDataUrl(url) {
121
101
  });
122
102
  }
123
103
 
104
+ const cjsRegex = /\.c[tj]sx?$/;
105
+ const jsRegexp = /\.[cm]?[tj]s[x]?$/;
106
+ function normalizeOptions(options) {
107
+ const defaultOptions = {
108
+ open: true,
109
+ format: 'html',
110
+ detailed: false,
111
+ gzip: false,
112
+ brotli: false
113
+ };
114
+ return Object.assign({}, defaultOptions, options);
115
+ }
116
+ function normalizePath(pathToNormalize) {
117
+ // Unicode escape sequences used by Rollup and Vite to identify virtual modules
118
+ const normalized = pathToNormalize.replace(/^\0/, '');
119
+ // Transform absolute paths to relative paths
120
+ const relativized = relative(process.cwd(), normalized);
121
+ // Ensure paths are POSIX-compliant - https://stackoverflow.com/a/63251716/4617687
122
+ return relativized.replaceAll(win32.sep, posix.sep);
123
+ }
124
+
124
125
  function mapSourceMap(map, dirPath, inputs) {
125
126
  const alreadyRemapped = new Set();
126
127
  const remapped = remapping(map, (file, ctx)=>{
@@ -296,11 +297,18 @@ function hasCodeAndMap(result) {
296
297
  return Boolean(result && result.code && result.map);
297
298
  }
298
299
 
299
- async function generateReportFromAssets(assets, inputs, options) {
300
- const { default: open } = await import('open');
300
+ async function generateReportFromAssets(assets, inputs, userOptions) {
301
+ const options = normalizeOptions(userOptions);
301
302
  const handler = options.format === 'html' ? saveHtml : saveJson;
302
303
  const path = handler(assets, inputs, options);
303
- options.open && path && open(path);
304
+ if (!options.open || !path) {
305
+ return;
306
+ }
307
+ /**
308
+ * `open` is ESM-only package, so we need to import it
309
+ * dynamically to make it work in CommonJS environment.
310
+ */ const { default: open } = await import('open');
311
+ open(path);
304
312
  }
305
313
  function saveHtml(assets, inputs, options) {
306
314
  const report = generateHtmlReport(assets, inputs, options);
@@ -315,19 +323,18 @@ function saveJson(assets, inputs, options) {
315
323
  return path;
316
324
  }
317
325
 
318
- function SondaEsbuildPlugin(options) {
326
+ function SondaEsbuildPlugin(options = {}) {
319
327
  return {
320
328
  name: 'sonda',
321
329
  setup (build) {
322
330
  build.initialOptions.metafile = true;
331
+ // Esbuild already reads the existing source maps, so there's no need to do it again
332
+ options.detailed = false;
323
333
  build.onEnd((result)=>{
324
334
  if (!result.metafile) {
325
335
  return console.error('Metafile is required for SondaEsbuildPlugin to work.');
326
336
  }
327
337
  const cwd = process.cwd();
328
- const normalizedOptions = normalizeOptions(options);
329
- // Esbuild already reads the existing source maps, so there's no need to do it again
330
- normalizedOptions.detailed = false;
331
338
  const inputs = Object.entries(result.metafile.inputs).reduce((acc, [path, data])=>{
332
339
  acc[path] = {
333
340
  bytes: data.bytes,
@@ -343,22 +350,20 @@ function SondaEsbuildPlugin(options) {
343
350
  */ addSourcesToInputs(resolve(cwd, path), acc);
344
351
  return acc;
345
352
  }, {});
346
- return generateReportFromAssets(Object.keys(result.metafile.outputs), inputs, normalizeOptions(options));
353
+ return generateReportFromAssets(Object.keys(result.metafile.outputs).map((path)=>resolve(cwd, path)), inputs, options);
347
354
  });
348
355
  }
349
356
  };
350
357
  }
351
358
 
352
- const esmRegex = /\.m[tj]sx?$/;
353
- const cjsRegex = /\.c[tj]sx?$/;
354
- function SondaRollupPlugin(options) {
359
+ function SondaRollupPlugin(options = {}) {
355
360
  let inputs = {};
356
361
  return {
357
362
  name: 'sonda',
358
363
  writeBundle ({ dir, file }, bundle) {
359
364
  const outputDir = resolve(process.cwd(), dir ?? dirname(file));
360
365
  const assets = Object.keys(bundle).map((name)=>join(outputDir, name));
361
- return generateReportFromAssets(assets, inputs, normalizeOptions(options));
366
+ return generateReportFromAssets(assets, inputs, options);
362
367
  },
363
368
  moduleParsed (module) {
364
369
  inputs[normalizePath(module.id)] = {
@@ -374,13 +379,12 @@ function getFormat$1(moduleId, isCommonJS) {
374
379
  if (isCommonJS === true || cjsRegex.test(moduleId)) {
375
380
  return 'cjs';
376
381
  }
377
- if (isCommonJS === false || esmRegex.test(moduleId)) {
382
+ if (isCommonJS === false || jsRegexp.test(moduleId)) {
378
383
  return 'esm';
379
384
  }
380
385
  return 'unknown';
381
386
  }
382
387
 
383
- const jsRegexp = /\.[c|m]?[t|j]s[x]?$/;
384
388
  class SondaWebpackPlugin {
385
389
  apply(compiler) {
386
390
  compiler.options.output.devtoolModuleFilenameTemplate = '[absolute-resource-path]';
@@ -391,7 +395,10 @@ class SondaWebpackPlugin {
391
395
  providedExports: true
392
396
  });
393
397
  const outputPath = stats.outputPath || compiler.outputPath;
394
- const modules = stats.modules?.filter((mod)=>mod.nameForCondition && mod.moduleType !== 'asset/inline') || [];
398
+ const modules = stats.modules?.flatMap((mod)=>mod.modules ? [
399
+ mod,
400
+ ...mod.modules
401
+ ] : mod).filter((mod)=>mod.nameForCondition && !mod.codeGenerated).filter((mod, index, self)=>self.findIndex((m)=>m.nameForCondition === mod.nameForCondition) === index) || [];
395
402
  modules.forEach((module)=>{
396
403
  const imports = modules.reduce((acc, { nameForCondition, issuerName, reasons })=>{
397
404
  if (issuerName === module.name || reasons?.some((reason)=>reason.resolvedModule === module.name)) {
@@ -406,11 +413,11 @@ class SondaWebpackPlugin {
406
413
  belongsTo: null
407
414
  };
408
415
  });
409
- return generateReportFromAssets(stats.assets?.map((asset)=>join(outputPath, asset.name)) || [], inputs, normalizeOptions(this.options));
416
+ return generateReportFromAssets(stats.assets?.map((asset)=>join(outputPath, asset.name)) || [], inputs, this.options);
410
417
  });
411
418
  }
412
- constructor(options){
413
- this.options = options || {};
419
+ constructor(options = {}){
420
+ this.options = options;
414
421
  }
415
422
  }
416
423
  function getFormat(module) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/utils.ts","../../load-source-map/dist/index.js","../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\tdetailed: false,\n\t\tgzip: false,\n\t\tbrotli: false,\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 { join, dirname, isAbsolute, resolve } from 'path';\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 */ function parseSourceMapInput(str) {\n return JSON.parse(str.replace(/^\\)]}'[^\\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\tsourceMappingURL=map-file-comment.css.map?query=value\n*/ const sourceMappingRegExp = /[@#]\\s*sourceMappingURL=(\\S+)\\b/g;\nfunction loadCodeAndMap(codePath) {\n if (!existsSync(codePath)) {\n return null;\n }\n const code = readFileSync(codePath, 'utf-8');\n const extractedComment = code.includes('sourceMappingURL') && Array.from(code.matchAll(sourceMappingRegExp)).at(-1);\n if (!extractedComment || !extractedComment.length) {\n return {\n code\n };\n }\n const maybeMap = loadMap(codePath, extractedComment[1]);\n if (!maybeMap) {\n return {\n code\n };\n }\n const { map, mapPath } = maybeMap;\n map.sources = normalizeSourcesPaths(map, mapPath);\n map.sourcesContent = loadMissingSourcesContent(map);\n delete map.sourceRoot;\n return {\n code,\n map\n };\n}\nfunction loadMap(codePath, sourceMappingURL) {\n if (sourceMappingURL.startsWith('data:')) {\n const map = parseDataUrl(sourceMappingURL);\n return {\n map: parseSourceMapInput(map),\n mapPath: codePath\n };\n }\n const sourceMapFilename = new URL(sourceMappingURL, 'file://').pathname;\n const mapPath = join(dirname(codePath), sourceMapFilename);\n if (!existsSync(mapPath)) {\n return null;\n }\n return {\n map: parseSourceMapInput(readFileSync(mapPath, 'utf-8')),\n mapPath\n };\n}\nfunction parseDataUrl(url) {\n const [prefix, payload] = url.split(',');\n const encoding = prefix.split(';').at(-1);\n switch(encoding){\n case 'base64':\n return Buffer.from(payload, 'base64').toString();\n case 'uri':\n return decodeURIComponent(payload);\n default:\n throw new Error('Unsupported source map encoding: ' + encoding);\n }\n}\n/**\n * Normalize the paths of the sources in the source map to be absolute paths.\n */ function normalizeSourcesPaths(map, mapPath) {\n const mapDir = dirname(mapPath);\n return map.sources.map((source)=>{\n if (!source) {\n return source;\n }\n return isAbsolute(source) ? source : resolve(mapDir, map.sourceRoot ?? '.', source);\n });\n}\n/**\n * Loop through the sources and try to load missing `sourcesContent` from the file system.\n */ function loadMissingSourcesContent(map) {\n return map.sources.map((source, index)=>{\n if (map.sourcesContent?.[index]) {\n return map.sourcesContent[index];\n }\n if (source && existsSync(source)) {\n return readFileSync(source, 'utf-8');\n }\n return null;\n });\n}\n\nexport { loadCodeAndMap };\n//# sourceMappingURL=index.js.map\n","import { default as remapping, type DecodedSourceMap, type EncodedSourceMap } from '@ampproject/remapping';\nimport { loadCodeAndMap } from 'load-source-map';\nimport { resolve } from 'path';\nimport { normalizePath } from '../utils';\nimport type { CodeMap, ReportInput } from '../types';\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 = addSourcesToInputs(\n\t\t\tresolve( dirPath, file ),\n\t\t\tinputs\n\t\t);\n\n\t\tif ( !codeMap ) {\n\t\t\treturn;\n\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\n/**\n * Loads the source map of a given file and adds its \"sources\" to the given inputs object.\n */\nexport function addSourcesToInputs(\n\tpath: string,\n\tinputs: Record<string, ReportInput>\n): CodeMap | null {\n\tconst codeMap = loadCodeAndMap( path );\n\n\tif ( !codeMap ) {\n\t\treturn null;\n\t}\n\n\tconst parentPath = normalizePath( path );\n\tconst format = inputs[ parentPath ]?.format ?? 'unknown';\n\n\tcodeMap.map?.sources\n\t\t.filter( source => source !== null )\n\t\t.forEach( ( source, index ) => {\n\t\t\tconst normalizedPath = normalizePath( source );\n\n\t\t\tif ( parentPath === normalizedPath ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tinputs[ normalizedPath ] = {\n\t\t\t\tbytes: Buffer.byteLength( codeMap.map!.sourcesContent?.[ index ] ?? '' ),\n\t\t\t\tformat,\n\t\t\t\timports: [],\n\t\t\t\tbelongsTo: parentPath\n\t\t\t};\n\t\t} );\n\t\n\treturn codeMap;\n}\n","import { gzipSync, brotliCompressSync } from 'zlib';\nimport type { DecodedSourceMap, SourceMapSegment } from '@ampproject/remapping';\nimport type { Options, Sizes } from '../types';\n\nconst UNASSIGNED = '[unassigned]';\n\nexport function getBytesPerSource(\n\tcode: string,\n\tmap: DecodedSourceMap,\n\tassetSizes: Sizes,\n\toptions: Options\n): Map<string, Sizes> {\n\tconst contributions = getContributions( map.sources );\n\n\t// Split the code into lines\n\tconst codeLines = code.split( /(?<=\\r?\\n)/ );\n\n\tfor ( let lineIndex = 0; lineIndex < codeLines.length; lineIndex++ ) {\n\t\tconst lineCode = codeLines[ lineIndex ];\n\t\tconst mappings = map.mappings[ lineIndex ] || [];\n\t\tlet currentColumn = 0;\n\n\t\tfor ( let i = 0; i <= mappings.length; i++ ) {\n\t\t\t// 0: generatedColumn\n\t\t\t// 1: sourceIndex\n\t\t\t// 2: originalLine\n\t\t\t// 3: originalColumn\n\t\t\t// 4: nameIndex\n\n\t\t\tconst mapping: SourceMapSegment | undefined = mappings[ i ];\n\t\t\tconst startColumn = mapping?.[ 0 ] ?? lineCode.length;\n\t\t\tconst endColumn = mappings[ i + 1 ]?.[ 0 ] ?? lineCode.length;\n\n\t\t\t// Slice the code from currentColumn to startColumn for unassigned code\n\t\t\tif ( startColumn > currentColumn ) {\n\t\t\t\tcontributions.set( UNASSIGNED, contributions.get( UNASSIGNED ) + lineCode.slice( currentColumn, startColumn ) );\n\t\t\t}\n\n\t\t\tif ( mapping ) {\n\t\t\t\t// Slice the code from startColumn to endColumn for assigned code\n\t\t\t\tconst sourceIndex = mapping?.[ 1 ];\n\t\t\t\tconst codeSlice = lineCode.slice( startColumn, endColumn );\n\t\t\t\tconst source = sourceIndex !== undefined ? map.sources[ sourceIndex ]! : UNASSIGNED;\n\n\t\t\t\tcontributions.set( source, contributions.get( source ) + codeSlice );\n\t\t\t\tcurrentColumn = endColumn;\n\t\t\t} else {\n\t\t\t\tcurrentColumn = startColumn;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compute sizes for each source\n\tconst sourceSizes = new Map<string, Sizes>();\n\n\tconst contributionsSum: Sizes = {\n\t\tuncompressed: 0,\n\t\tgzip: 0,\n\t\tbrotli: 0\n\t};\n\n\tfor ( const [ source, codeSegment ] of contributions ) {\n\t\tconst sizes = getSizes( codeSegment, options );\n\n\t\tcontributionsSum.uncompressed += sizes.uncompressed;\n\t\tcontributionsSum.gzip += sizes.gzip;\n\t\tcontributionsSum.brotli += sizes.brotli;\n\n\t\tsourceSizes.set( source, sizes );\n\t}\n\n\treturn adjustSizes( sourceSizes, assetSizes, contributionsSum, options );\n}\n\nexport function getSizes(\n\tcode: string,\n\toptions: Options\n): Sizes {\n\treturn {\n\t\tuncompressed: Buffer.byteLength( code ),\n\t\tgzip: options.gzip ? gzipSync( code ).length : 0,\n\t\tbrotli: options.brotli ? brotliCompressSync( code ).length : 0\n\t};\n}\n\nfunction getContributions( sources: Array<string | null> ): Map<string, string> {\n\tconst contributions = new Map<string, string>();\n\n\t// Populate contributions with sources\n\tsources\n\t\t.filter( source => source !== null )\n\t\t.forEach( source => contributions.set( source, '' ) );\n\n\t// Add entry for the code that is not assigned to any source\n\tcontributions.set( UNASSIGNED, '' );\n\n\treturn contributions;\n}\n\n/**\n * Compression efficiency improves with the size of the file.\n *\n * However, what we have is the compressed size of the entire bundle (`actual`),\n * the sum of all files compressed individually (`sum`) and the compressed\n * size of a given file (`content`). The last value is essentially a “worst-case”\n * scenario, and the actual size of the file in the bundle is likely to be smaller.\n *\n * We use this information to estimate the actual size of the file in the bundle\n * after compression.\n */\nfunction adjustSizes(\n\tsources: Map<string, Sizes>,\n\tasset: Sizes,\n\tsums: Sizes,\n\toptions: Options\n): Map<string, Sizes> {\n\tconst gzipDelta = options.gzip ? asset.gzip / sums.gzip : 0;\n\tconst brotliDelta = options.brotli ? asset.brotli / sums.brotli : 0;\n\n\tfor ( const [ source, sizes ] of sources ) {\n\t\tsources.set( source, {\n\t\t\tuncompressed: sizes.uncompressed,\n\t\t\tgzip: options.gzip ? Math.round( sizes.gzip * gzipDelta ) : 0,\n\t\t\tbrotli: options.brotli ? Math.round( sizes.brotli * brotliDelta ) : 0\n\t\t} );\n\t}\n\n\treturn sources;\n}\n","import { dirname, resolve } from 'path';\nimport { fileURLToPath } from 'url';\nimport { readFileSync } from 'fs';\nimport { loadCodeAndMap } from 'load-source-map';\nimport { decode } from '@jridgewell/sourcemap-codec';\nimport { mapSourceMap } from './sourcemap/map.js';\nimport { getBytesPerSource, getSizes } from './sourcemap/bytes.js';\nimport type {\n JsonReport,\n MaybeCodeMap,\n ReportInput,\n ReportOutput,\n CodeMap,\n ReportOutputInput,\n Options\n} from './types.js';\nimport { normalizePath } from './utils.js';\n\nexport function generateJsonReport(\n assets: Array<string>,\n inputs: Record<string, ReportInput>,\n options: Options\n): JsonReport {\n const outputs = assets\n .filter( asset => !asset.endsWith( '.map' ) )\n .reduce( ( carry, asset ) => {\n const data = processAsset( asset, inputs, options );\n\n if ( data ) {\n carry[ normalizePath( asset ) ] = data;\n }\n\n return carry;\n }, {} as Record<string, ReportOutput> );\n\n return {\n inputs,\n outputs\n };\n}\n\nexport function generateHtmlReport(\n assets: Array<string>,\n inputs: Record<string, ReportInput>,\n options: Options\n): string {\n const json = generateJsonReport( assets, inputs, options );\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(\n asset: string,\n inputs: Record<string, ReportInput>,\n options: Options\n): ReportOutput | void {\n const maybeCodeMap = loadCodeAndMap( asset );\n\n if ( !hasCodeAndMap( maybeCodeMap ) ) {\n return;\n }\n\n const { code, map } = maybeCodeMap;\n const mapped = options.detailed\n ? mapSourceMap( map, dirname( asset ), inputs )\n : { ...map, mappings: decode( map.mappings ) };\n\n mapped.sources = mapped.sources.map( source => normalizePath( source! ) );\n\n const assetSizes = getSizes( code, options );\n const bytes = getBytesPerSource( code, mapped, assetSizes, options );\n\n return {\n ...assetSizes,\n inputs: Array.from( bytes ).reduce( ( carry, [ source, sizes ] ) => {\n carry[ normalizePath( source ) ] = sizes;\n\n return carry;\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, options );\n\n\toptions.open && path && open( path );\n}\n\nfunction saveHtml(\n\tassets: string[],\n\tinputs: JsonReport[ 'inputs' ],\n\toptions: Options\n): string | null {\n\tconst report = generateHtmlReport( assets, inputs, options );\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\toptions: Options\n): string | null {\n\tconst report = generateJsonReport( assets, inputs, options );\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 { resolve } from 'path';\nimport { normalizeOptions } from '../utils';\nimport { generateReportFromAssets } from '../report/generate';\nimport type { Plugin } from 'esbuild';\nimport type { Options, JsonReport } from '../types';\nimport { addSourcesToInputs } from '../sourcemap/map';\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 cwd = process.cwd();\n\t\t\t\tconst normalizedOptions = normalizeOptions( options );\n\n\t\t\t\t// Esbuild already reads the existing source maps, so there's no need to do it again\n\t\t\t\tnormalizedOptions.detailed = false;\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\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\t/**\n\t\t\t\t\t\t * Because esbuild already reads the existing source maps, there may be\n\t\t\t\t\t\t * cases where some report \"outputs\" include \"inputs\" don't exist in the\n\t\t\t\t\t\t * main \"inputs\" object. To avoid this, we parse each esbuild input and\n\t\t\t\t\t\t * add its sources to the \"inputs\" object.\n\t\t\t\t\t\t */\n\t\t\t\t\t\taddSourcesToInputs(\n\t\t\t\t\t\t\tresolve( cwd, path ),\n\t\t\t\t\t\t\tacc\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 = /\\.m[tj]sx?$/;\nconst cjsRegex = /\\.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 { Compiler, StatsModule } from 'webpack';\nimport type { Options, ModuleFormat, JsonReport } from '../types';\n\nconst jsRegexp = /\\.[c|m]?[t|j]s[x]?$/;\n\nexport class SondaWebpackPlugin {\n\toptions: Partial<Options>;\n\n\tconstructor ( options?: Partial<Options> ) {\n\t\tthis.options = options || {};\n\t}\n\n\tapply( compiler: Compiler ): void {\n\t\tcompiler.options.output.devtoolModuleFilenameTemplate = '[absolute-resource-path]';\n\n\t\tcompiler.hooks.afterEmit.tapPromise( 'SondaWebpackPlugin', compilation => {\n\t\t\tconst inputs: JsonReport[ 'inputs' ] = {};\n\t\t\tconst stats = compilation.getStats().toJson( {\n\t\t\t\tmodules: true,\n\t\t\t\tprovidedExports: true\n\t\t\t} );\n\n\t\t\tconst outputPath = stats.outputPath || compiler.outputPath;\n\t\t\tconst modules = stats.modules?.filter( mod => mod.nameForCondition && mod.moduleType !== 'asset/inline' ) || [];\n\n\t\t\tmodules.forEach( module => {\n\t\t\t\tconst imports = modules.reduce( ( acc, { nameForCondition, issuerName, reasons } ) => {\n\t\t\t\t\tif ( issuerName === module.name || reasons?.some( reason => reason.resolvedModule === module.name ) ) {\n\t\t\t\t\t\tacc.push( normalizePath( nameForCondition! ) );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn acc;\n\t\t\t\t}, [] as Array<string> );\n\n\t\t\t\tinputs[ normalizePath( module.nameForCondition! ) ] = {\n\t\t\t\t\tbytes: module.size || 0,\n\t\t\t\t\tformat: getFormat( module ),\n\t\t\t\t\timports,\n\t\t\t\t\tbelongsTo: null\n\t\t\t\t};\n\t\t\t} );\n\n\t\t\treturn generateReportFromAssets(\n\t\t\t\tstats.assets?.map( asset => join( outputPath, asset.name ) ) || [],\n\t\t\t\tinputs,\n\t\t\t\tnormalizeOptions( this.options )\n\t\t\t);\n\t\t} );\n\t}\n}\n\nfunction getFormat( module: StatsModule ): ModuleFormat {\n\tif ( !jsRegexp.test( module.nameForCondition! ) ) {\n\t\treturn 'unknown';\n\t}\n\n\t/**\n\t * Sometimes ESM modules have `moduleType` set as `javascript/auto`, so we\n\t * also need to check if the module has exports to determine if it's ESM.\n\t */\n\tif ( module.moduleType === 'javascript/esm' || !!module.providedExports?.length ) {\n\t\treturn 'esm';\n\t}\n\n\treturn 'cjs';\n}\n"],"names":["cwd","process","normalizeOptions","options","defaultOptions","open","format","detailed","gzip","brotli","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","sourcesContent","loadMissingSourcesContent","sourceRoot","sourceMappingURL","startsWith","parseDataUrl","sourceMapFilename","URL","pathname","join","dirname","url","prefix","payload","split","encoding","Buffer","toString","decodeURIComponent","Error","mapDir","source","isAbsolute","resolve","index","mapSourceMap","dirPath","inputs","alreadyRemapped","Set","remapped","remapping","file","ctx","has","add","codeMap","addSourcesToInputs","content","decodedMappings","parentPath","filter","forEach","normalizedPath","bytes","byteLength","imports","belongsTo","UNASSIGNED","getBytesPerSource","assetSizes","contributions","getContributions","codeLines","lineIndex","lineCode","mappings","currentColumn","i","mapping","startColumn","endColumn","set","get","slice","sourceIndex","codeSlice","undefined","sourceSizes","Map","contributionsSum","uncompressed","codeSegment","sizes","getSizes","adjustSizes","gzipSync","brotliCompressSync","asset","sums","gzipDelta","brotliDelta","Math","round","generateJsonReport","assets","outputs","endsWith","reduce","carry","data","processAsset","generateHtmlReport","json","__dirname","fileURLToPath","template","stringify","maybeCodeMap","hasCodeAndMap","mapped","decode","result","Boolean","generateReportFromAssets","default","handler","saveHtml","saveJson","report","writeFileSync","SondaEsbuildPlugin","name","setup","build","initialOptions","metafile","onEnd","console","error","normalizedOptions","entries","acc","keys","esmRegex","cjsRegex","SondaRollupPlugin","writeBundle","dir","bundle","outputDir","moduleParsed","module","id","getFormat","meta","commonjs","isCommonJS","importedIds","moduleId","test","jsRegexp","SondaWebpackPlugin","apply","compiler","output","devtoolModuleFilenameTemplate","hooks","afterEmit","tapPromise","compilation","stats","getStats","toJson","modules","providedExports","outputPath","mod","nameForCondition","moduleType","issuerName","reasons","some","reason","resolvedModule","push","size","constructor"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../load-source-map/dist/index.js","../src/utils.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 { existsSync, readFileSync } from 'fs';\nimport { join, dirname, isAbsolute, resolve } from 'path';\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 */ function parseSourceMapInput(str) {\n return JSON.parse(str.replace(/^\\)]}'[^\\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\tsourceMappingURL=map-file-comment.css.map?query=value\n*/ const sourceMappingRegExp = /[@#]\\s*sourceMappingURL=(\\S+)\\b/g;\nfunction loadCodeAndMap(codePath) {\n if (!existsSync(codePath)) {\n return null;\n }\n const code = readFileSync(codePath, 'utf-8');\n const extractedComment = code.includes('sourceMappingURL') && Array.from(code.matchAll(sourceMappingRegExp)).at(-1);\n if (!extractedComment || !extractedComment.length) {\n return {\n code\n };\n }\n const maybeMap = loadMap(codePath, extractedComment[1]);\n if (!maybeMap) {\n return {\n code\n };\n }\n const { map, mapPath } = maybeMap;\n map.sources = normalizeSourcesPaths(map, mapPath);\n map.sourcesContent = loadMissingSourcesContent(map);\n delete map.sourceRoot;\n return {\n code,\n map\n };\n}\nfunction loadMap(codePath, sourceMappingURL) {\n if (sourceMappingURL.startsWith('data:')) {\n const map = parseDataUrl(sourceMappingURL);\n return {\n map: parseSourceMapInput(map),\n mapPath: codePath\n };\n }\n const sourceMapFilename = new URL(sourceMappingURL, 'file://').pathname;\n const mapPath = join(dirname(codePath), sourceMapFilename);\n if (!existsSync(mapPath)) {\n return null;\n }\n return {\n map: parseSourceMapInput(readFileSync(mapPath, 'utf-8')),\n mapPath\n };\n}\nfunction parseDataUrl(url) {\n const [prefix, payload] = url.split(',');\n const encoding = prefix.split(';').at(-1);\n switch(encoding){\n case 'base64':\n return Buffer.from(payload, 'base64').toString();\n case 'uri':\n return decodeURIComponent(payload);\n default:\n throw new Error('Unsupported source map encoding: ' + encoding);\n }\n}\n/**\n * Normalize the paths of the sources in the source map to be absolute paths.\n */ function normalizeSourcesPaths(map, mapPath) {\n const mapDir = dirname(mapPath);\n return map.sources.map((source)=>{\n if (!source) {\n return source;\n }\n return isAbsolute(source) ? source : resolve(mapDir, map.sourceRoot ?? '.', source);\n });\n}\n/**\n * Loop through the sources and try to load missing `sourcesContent` from the file system.\n */ function loadMissingSourcesContent(map) {\n return map.sources.map((source, index)=>{\n if (map.sourcesContent?.[index]) {\n return map.sourcesContent[index];\n }\n if (source && existsSync(source)) {\n return readFileSync(source, 'utf-8');\n }\n return null;\n });\n}\n\nexport { loadCodeAndMap };\n//# sourceMappingURL=index.js.map\n","import { relative, win32, posix } from 'path';\nimport type { Options } from './types';\n\nexport const esmRegex: RegExp = /\\.m[tj]sx?$/;\nexport const cjsRegex: RegExp = /\\.c[tj]sx?$/;\nexport const jsRegexp: RegExp = /\\.[cm]?[tj]s[x]?$/;\n\nexport function normalizeOptions( options?: Partial<Options> ) {\n\tconst defaultOptions: Options = {\n\t\topen: true,\n\t\tformat: 'html',\n\t\tdetailed: false,\n\t\tgzip: false,\n\t\tbrotli: false,\n\t};\n\n\treturn Object.assign( {}, defaultOptions, options ) as Options;\n}\n\nexport function normalizePath( pathToNormalize: string ): string {\n\t// Unicode escape sequences used by Rollup and Vite to identify virtual modules\n\tconst normalized = pathToNormalize.replace( /^\\0/, '' )\n\n\t// Transform absolute paths to relative paths\n\tconst relativized = relative( process.cwd(), normalized );\n\n\t// Ensure paths are POSIX-compliant - https://stackoverflow.com/a/63251716/4617687\n\treturn relativized.replaceAll( win32.sep, posix.sep );\n}\n","import { default as remapping, type DecodedSourceMap, type EncodedSourceMap } from '@ampproject/remapping';\nimport { loadCodeAndMap } from 'load-source-map';\nimport { resolve } from 'path';\nimport { normalizePath } from '../utils';\nimport type { CodeMap, ReportInput } from '../types';\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 = addSourcesToInputs(\n\t\t\tresolve( dirPath, file ),\n\t\t\tinputs\n\t\t);\n\n\t\tif ( !codeMap ) {\n\t\t\treturn;\n\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\n/**\n * Loads the source map of a given file and adds its \"sources\" to the given inputs object.\n */\nexport function addSourcesToInputs(\n\tpath: string,\n\tinputs: Record<string, ReportInput>\n): CodeMap | null {\n\tconst codeMap = loadCodeAndMap( path );\n\n\tif ( !codeMap ) {\n\t\treturn null;\n\t}\n\n\tconst parentPath = normalizePath( path );\n\tconst format = inputs[ parentPath ]?.format ?? 'unknown';\n\n\tcodeMap.map?.sources\n\t\t.filter( source => source !== null )\n\t\t.forEach( ( source, index ) => {\n\t\t\tconst normalizedPath = normalizePath( source );\n\n\t\t\tif ( parentPath === normalizedPath ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tinputs[ normalizedPath ] = {\n\t\t\t\tbytes: Buffer.byteLength( codeMap.map!.sourcesContent?.[ index ] ?? '' ),\n\t\t\t\tformat,\n\t\t\t\timports: [],\n\t\t\t\tbelongsTo: parentPath\n\t\t\t};\n\t\t} );\n\t\n\treturn codeMap;\n}\n","import { gzipSync, brotliCompressSync } from 'zlib';\nimport type { DecodedSourceMap, SourceMapSegment } from '@ampproject/remapping';\nimport type { Options, Sizes } from '../types';\n\nconst UNASSIGNED = '[unassigned]';\n\nexport function getBytesPerSource(\n\tcode: string,\n\tmap: DecodedSourceMap,\n\tassetSizes: Sizes,\n\toptions: Options\n): Map<string, Sizes> {\n\tconst contributions = getContributions( map.sources );\n\n\t// Split the code into lines\n\tconst codeLines = code.split( /(?<=\\r?\\n)/ );\n\n\tfor ( let lineIndex = 0; lineIndex < codeLines.length; lineIndex++ ) {\n\t\tconst lineCode = codeLines[ lineIndex ];\n\t\tconst mappings = map.mappings[ lineIndex ] || [];\n\t\tlet currentColumn = 0;\n\n\t\tfor ( let i = 0; i <= mappings.length; i++ ) {\n\t\t\t// 0: generatedColumn\n\t\t\t// 1: sourceIndex\n\t\t\t// 2: originalLine\n\t\t\t// 3: originalColumn\n\t\t\t// 4: nameIndex\n\n\t\t\tconst mapping: SourceMapSegment | undefined = mappings[ i ];\n\t\t\tconst startColumn = mapping?.[ 0 ] ?? lineCode.length;\n\t\t\tconst endColumn = mappings[ i + 1 ]?.[ 0 ] ?? lineCode.length;\n\n\t\t\t// Slice the code from currentColumn to startColumn for unassigned code\n\t\t\tif ( startColumn > currentColumn ) {\n\t\t\t\tcontributions.set( UNASSIGNED, contributions.get( UNASSIGNED ) + lineCode.slice( currentColumn, startColumn ) );\n\t\t\t}\n\n\t\t\tif ( mapping ) {\n\t\t\t\t// Slice the code from startColumn to endColumn for assigned code\n\t\t\t\tconst sourceIndex = mapping?.[ 1 ];\n\t\t\t\tconst codeSlice = lineCode.slice( startColumn, endColumn );\n\t\t\t\tconst source = sourceIndex !== undefined ? map.sources[ sourceIndex ]! : UNASSIGNED;\n\n\t\t\t\tcontributions.set( source, contributions.get( source ) + codeSlice );\n\t\t\t\tcurrentColumn = endColumn;\n\t\t\t} else {\n\t\t\t\tcurrentColumn = startColumn;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compute sizes for each source\n\tconst sourceSizes = new Map<string, Sizes>();\n\n\tconst contributionsSum: Sizes = {\n\t\tuncompressed: 0,\n\t\tgzip: 0,\n\t\tbrotli: 0\n\t};\n\n\tfor ( const [ source, codeSegment ] of contributions ) {\n\t\tconst sizes = getSizes( codeSegment, options );\n\n\t\tcontributionsSum.uncompressed += sizes.uncompressed;\n\t\tcontributionsSum.gzip += sizes.gzip;\n\t\tcontributionsSum.brotli += sizes.brotli;\n\n\t\tsourceSizes.set( source, sizes );\n\t}\n\n\treturn adjustSizes( sourceSizes, assetSizes, contributionsSum, options );\n}\n\nexport function getSizes(\n\tcode: string,\n\toptions: Options\n): Sizes {\n\treturn {\n\t\tuncompressed: Buffer.byteLength( code ),\n\t\tgzip: options.gzip ? gzipSync( code ).length : 0,\n\t\tbrotli: options.brotli ? brotliCompressSync( code ).length : 0\n\t};\n}\n\nfunction getContributions( sources: Array<string | null> ): Map<string, string> {\n\tconst contributions = new Map<string, string>();\n\n\t// Populate contributions with sources\n\tsources\n\t\t.filter( source => source !== null )\n\t\t.forEach( source => contributions.set( source, '' ) );\n\n\t// Add entry for the code that is not assigned to any source\n\tcontributions.set( UNASSIGNED, '' );\n\n\treturn contributions;\n}\n\n/**\n * Compression efficiency improves with the size of the file.\n *\n * However, what we have is the compressed size of the entire bundle (`actual`),\n * the sum of all files compressed individually (`sum`) and the compressed\n * size of a given file (`content`). The last value is essentially a “worst-case”\n * scenario, and the actual size of the file in the bundle is likely to be smaller.\n *\n * We use this information to estimate the actual size of the file in the bundle\n * after compression.\n */\nfunction adjustSizes(\n\tsources: Map<string, Sizes>,\n\tasset: Sizes,\n\tsums: Sizes,\n\toptions: Options\n): Map<string, Sizes> {\n\tconst gzipDelta = options.gzip ? asset.gzip / sums.gzip : 0;\n\tconst brotliDelta = options.brotli ? asset.brotli / sums.brotli : 0;\n\n\tfor ( const [ source, sizes ] of sources ) {\n\t\tsources.set( source, {\n\t\t\tuncompressed: sizes.uncompressed,\n\t\t\tgzip: options.gzip ? Math.round( sizes.gzip * gzipDelta ) : 0,\n\t\t\tbrotli: options.brotli ? Math.round( sizes.brotli * brotliDelta ) : 0\n\t\t} );\n\t}\n\n\treturn sources;\n}\n","import { readFileSync } from 'fs';\nimport { fileURLToPath } from 'url';\nimport { dirname, resolve } from 'path';\nimport { loadCodeAndMap } from 'load-source-map';\nimport { decode } from '@jridgewell/sourcemap-codec';\nimport { mapSourceMap } from './sourcemap/map.js';\nimport { getBytesPerSource, getSizes } from './sourcemap/bytes.js';\nimport type {\n JsonReport,\n MaybeCodeMap,\n ReportInput,\n ReportOutput,\n CodeMap,\n ReportOutputInput,\n Options\n} from './types.js';\nimport { normalizePath } from './utils.js';\n\nexport function generateJsonReport(\n assets: Array<string>,\n inputs: Record<string, ReportInput>,\n options: Options\n): JsonReport {\n const outputs = assets\n .filter( asset => !asset.endsWith( '.map' ) )\n .reduce( ( carry, asset ) => {\n const data = processAsset( asset, inputs, options );\n\n if ( data ) {\n carry[ normalizePath( asset ) ] = data;\n }\n\n return carry;\n }, {} as Record<string, ReportOutput> );\n\n return {\n inputs,\n outputs\n };\n}\n\nexport function generateHtmlReport(\n assets: Array<string>,\n inputs: Record<string, ReportInput>,\n options: Options\n): string {\n const json = generateJsonReport( assets, inputs, options );\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(\n asset: string,\n inputs: Record<string, ReportInput>,\n options: Options\n): ReportOutput | void {\n const maybeCodeMap = loadCodeAndMap( asset );\n\n if ( !hasCodeAndMap( maybeCodeMap ) ) {\n return;\n }\n\n const { code, map } = maybeCodeMap;\n const mapped = options.detailed\n ? mapSourceMap( map, dirname( asset ), inputs )\n : { ...map, mappings: decode( map.mappings ) };\n\n mapped.sources = mapped.sources.map( source => normalizePath( source! ) );\n\n const assetSizes = getSizes( code, options );\n const bytes = getBytesPerSource( code, mapped, assetSizes, options );\n\n return {\n ...assetSizes,\n inputs: Array.from( bytes ).reduce( ( carry, [ source, sizes ] ) => {\n carry[ normalizePath( source ) ] = sizes;\n\n return carry;\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';\nimport { normalizeOptions } from '../utils.js';\n\nexport async function generateReportFromAssets(\n\tassets: string[],\n\tinputs: JsonReport[ 'inputs' ],\n\tuserOptions: Partial<Options>\n): Promise<void> {\n\tconst options = normalizeOptions( userOptions );\n\tconst handler = options.format === 'html' ? saveHtml : saveJson;\n\tconst path = handler( assets, inputs, options );\n\n\tif ( !options.open || !path ) {\n\t\treturn;\n\t}\n\n\t/**\n\t * `open` is ESM-only package, so we need to import it\n\t * dynamically to make it work in CommonJS environment.\n\t */\n\tconst { default: open } = await import( 'open' );\n\n\topen( path );\n}\n\nfunction saveHtml(\n\tassets: string[],\n\tinputs: JsonReport[ 'inputs' ],\n\toptions: Options\n): string | null {\n\tconst report = generateHtmlReport( assets, inputs, options );\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\toptions: Options\n): string | null {\n\tconst report = generateJsonReport( assets, inputs, options );\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 { resolve } from 'path';\nimport { addSourcesToInputs } from '../sourcemap/map';\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\t// Esbuild already reads the existing source maps, so there's no need to do it again\n\t\t\toptions.detailed = false;\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 cwd = process.cwd();\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\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\t/**\n\t\t\t\t\t\t * Because esbuild already reads the existing source maps, there may be\n\t\t\t\t\t\t * cases where some report \"outputs\" include \"inputs\" don't exist in the\n\t\t\t\t\t\t * main \"inputs\" object. To avoid this, we parse each esbuild input and\n\t\t\t\t\t\t * add its sources to the \"inputs\" object.\n\t\t\t\t\t\t */\n\t\t\t\t\t\taddSourcesToInputs(\n\t\t\t\t\t\t\tresolve( cwd, path ),\n\t\t\t\t\t\t\tacc\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 ).map( path => resolve( cwd, path ) ),\n\t\t\t\t\tinputs,\n\t\t\t\t\toptions\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\t};\n}\n","import { join, resolve, dirname } from 'path';\nimport { normalizePath, cjsRegex, jsRegexp } 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\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\toptions\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 || jsRegexp.test( moduleId ) ) {\n\t\treturn 'esm';\n\t}\n\n\treturn'unknown';\n}\n","import { join } from 'path';\nimport { normalizePath, jsRegexp } from '../utils';\nimport { generateReportFromAssets } from '../report/generate';\nimport type { Compiler, StatsModule } from 'webpack';\nimport type { Options, ModuleFormat, JsonReport } from '../types';\n\nexport class SondaWebpackPlugin {\n\toptions: Partial<Options>;\n\n\tconstructor ( options: Partial<Options> = {} ) {\n\t\tthis.options = options;\n\t}\n\n\tapply( compiler: Compiler ): void {\n\t\tcompiler.options.output.devtoolModuleFilenameTemplate = '[absolute-resource-path]';\n\n\t\tcompiler.hooks.afterEmit.tapPromise( 'SondaWebpackPlugin', compilation => {\n\t\t\tconst inputs: JsonReport[ 'inputs' ] = {};\n\t\t\tconst stats = compilation.getStats().toJson( {\n\t\t\t\tmodules: true,\n\t\t\t\tprovidedExports: true,\n\t\t\t} );\n\n\t\t\tconst outputPath = stats.outputPath || compiler.outputPath;\n\t\t\tconst modules: Array<StatsModule> = stats.modules\n\t\t\t\t?.flatMap( mod => mod.modules ? [ mod, ...mod.modules ] : mod )\n\t\t\t\t.filter( mod => mod.nameForCondition && !mod.codeGenerated )\n\t\t\t\t.filter( ( mod, index, self ) => self.findIndex( m => m.nameForCondition === mod.nameForCondition ) === index )\n\t\t\t\t|| [];\n\n\t\t\tmodules.forEach( module => {\n\t\t\t\tconst imports = modules.reduce( ( acc, { nameForCondition, issuerName, reasons } ) => {\n\t\t\t\t\tif ( issuerName === module.name || reasons?.some( reason => reason.resolvedModule === module.name ) ) {\n\t\t\t\t\t\tacc.push( normalizePath( nameForCondition! ) );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn acc;\n\t\t\t\t}, [] as Array<string> );\n\n\t\t\t\tinputs[ normalizePath( module.nameForCondition! ) ] = {\n\t\t\t\t\tbytes: module.size || 0,\n\t\t\t\t\tformat: getFormat( module ),\n\t\t\t\t\timports,\n\t\t\t\t\tbelongsTo: null\n\t\t\t\t};\n\t\t\t} );\n\n\t\t\treturn generateReportFromAssets(\n\t\t\t\tstats.assets?.map( asset => join( outputPath, asset.name ) ) || [],\n\t\t\t\tinputs,\n\t\t\t\tthis.options\n\t\t\t);\n\t\t} );\n\t}\n}\n\nfunction getFormat( module: StatsModule ): ModuleFormat {\n\tif ( !jsRegexp.test( module.nameForCondition! ) ) {\n\t\treturn 'unknown';\n\t}\n\n\t/**\n\t * Sometimes ESM modules have `moduleType` set as `javascript/auto`, so we\n\t * also need to check if the module has exports to determine if it's ESM.\n\t */\n\tif ( module.moduleType === 'javascript/esm' || !!module.providedExports?.length ) {\n\t\treturn 'esm';\n\t}\n\n\treturn 'cjs';\n}\n"],"names":["parseSourceMapInput","str","JSON","parse","replace","sourceMappingRegExp","loadCodeAndMap","codePath","existsSync","code","readFileSync","extractedComment","includes","Array","from","matchAll","at","length","maybeMap","loadMap","map","mapPath","sources","normalizeSourcesPaths","sourcesContent","loadMissingSourcesContent","sourceRoot","sourceMappingURL","startsWith","parseDataUrl","sourceMapFilename","URL","pathname","join","dirname","url","prefix","payload","split","encoding","Buffer","toString","decodeURIComponent","Error","mapDir","source","isAbsolute","resolve","index","cjsRegex","jsRegexp","normalizeOptions","options","defaultOptions","open","format","detailed","gzip","brotli","Object","assign","normalizePath","pathToNormalize","normalized","relativized","relative","process","cwd","replaceAll","win32","sep","posix","mapSourceMap","dirPath","inputs","alreadyRemapped","Set","remapped","remapping","file","ctx","has","add","codeMap","addSourcesToInputs","content","decodedMappings","path","parentPath","filter","forEach","normalizedPath","bytes","byteLength","imports","belongsTo","UNASSIGNED","getBytesPerSource","assetSizes","contributions","getContributions","codeLines","lineIndex","lineCode","mappings","currentColumn","i","mapping","startColumn","endColumn","set","get","slice","sourceIndex","codeSlice","undefined","sourceSizes","Map","contributionsSum","uncompressed","codeSegment","sizes","getSizes","adjustSizes","gzipSync","brotliCompressSync","asset","sums","gzipDelta","brotliDelta","Math","round","generateJsonReport","assets","outputs","endsWith","reduce","carry","data","processAsset","generateHtmlReport","json","__dirname","fileURLToPath","template","stringify","maybeCodeMap","hasCodeAndMap","mapped","decode","result","Boolean","generateReportFromAssets","userOptions","handler","saveHtml","saveJson","default","report","writeFileSync","SondaEsbuildPlugin","name","setup","build","initialOptions","metafile","onEnd","console","error","entries","acc","keys","SondaRollupPlugin","writeBundle","dir","bundle","outputDir","moduleParsed","module","id","getFormat","meta","commonjs","isCommonJS","importedIds","moduleId","test","SondaWebpackPlugin","apply","compiler","output","devtoolModuleFilenameTemplate","hooks","afterEmit","tapPromise","compilation","stats","getStats","toJson","modules","providedExports","outputPath","flatMap","mod","nameForCondition","codeGenerated","self","findIndex","m","issuerName","reasons","some","reason","resolvedModule","push","size","constructor","moduleType"],"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): Promise<void>;
2
+ export declare function generateReportFromAssets(assets: string[], inputs: JsonReport['inputs'], userOptions: Partial<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":"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"}
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;AAGvD,wBAAsB,wBAAwB,CAC7C,MAAM,EAAE,MAAM,EAAE,EAChB,MAAM,EAAE,UAAU,CAAE,QAAQ,CAAE,EAC9B,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,GAC3B,OAAO,CAAC,IAAI,CAAC,CAgBf"}
package/dist/utils.d.ts CHANGED
@@ -1,4 +1,7 @@
1
1
  import type { Options } from './types';
2
+ export declare const esmRegex: RegExp;
3
+ export declare const cjsRegex: RegExp;
4
+ export declare const jsRegexp: RegExp;
2
5
  export declare function normalizeOptions(options?: Partial<Options>): Options;
3
- export declare function normalizePath(path: string): string;
6
+ export declare function normalizePath(pathToNormalize: string): string;
4
7
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
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,GASJ,OAAO,CAC9D;AAED,wBAAgB,aAAa,CAAE,IAAI,EAAE,MAAM,GAAI,MAAM,CASpD"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,eAAO,MAAM,QAAQ,EAAE,MAAsB,CAAC;AAC9C,eAAO,MAAM,QAAQ,EAAE,MAAsB,CAAC;AAC9C,eAAO,MAAM,QAAQ,EAAE,MAA4B,CAAC;AAEpD,wBAAgB,gBAAgB,CAAE,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GASJ,OAAO,CAC9D;AAED,wBAAgB,aAAa,CAAE,eAAe,EAAE,MAAM,GAAI,MAAM,CAS/D"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "sonda",
3
- "version": "0.3.0",
4
- "description": "Universal visualizer and analyzer for JavaScript and CSS bundles. Works with Vite, Rollup, webpack, and esbuild",
3
+ "version": "0.4.0",
4
+ "description": "Universal visualizer and analyzer for JavaScript and CSS bundles. Works with Vite, Rollup, webpack, Rspack, and esbuild",
5
5
  "keywords": [
6
6
  "bundle analyzer",
7
7
  "bundle visualizer",
@@ -11,6 +11,7 @@
11
11
  "vite",
12
12
  "rollup",
13
13
  "webpack",
14
+ "rspack",
14
15
  "esbuild"
15
16
  ],
16
17
  "license": "MIT",