+31
-31
@@ -10,41 +10,41 @@ #!/usr/bin/env node | ||
| function stringToRegExp(value) { | ||
| // 1) Grab optional ^, then any characters, then optional $ | ||
| const [, start, core, end] = /^(\^?)(.*?)(\$?)$/.exec( value ); | ||
| // 1) Grab optional ^, then any characters, then optional $ | ||
| const [, start, core, end] = /^(\^?)(.*?)(\$?)$/.exec(value); | ||
| // 2) Escape all regexβmeta in the core | ||
| const escaped = core.replace( /[-.*+?^${}()|[\]\\]/g, '\\$&' ); | ||
| // 2) Escape all regexβmeta in the core | ||
| const escaped = core.replace(/[-.*+?^${}()|[\]\\]/g, '\\$&'); | ||
| // 3) Stitch back the string | ||
| return new RegExp( start + escaped + end ); | ||
| // 3) Stitch back the string | ||
| return new RegExp(start + escaped + end); | ||
| } | ||
| const { values } = parseArgs( { | ||
| options: { | ||
| config: { type: 'string' }, | ||
| projects: { type: 'string', multiple: true }, | ||
| include: { type: 'string', multiple: true }, | ||
| exclude: { type: 'string', multiple: true }, | ||
| format: { type: 'string', multiple: true }, | ||
| filename: { type: 'string' }, | ||
| outputDir: { type: 'string' }, | ||
| open: { type: 'string' }, | ||
| 'no-open': { type: 'boolean' }, | ||
| deep: { type: 'boolean' }, | ||
| sources: { type: 'boolean' }, | ||
| gzip: { type: 'boolean' }, | ||
| brotli: { type: 'boolean' } | ||
| }, | ||
| const { values } = parseArgs({ | ||
| options: { | ||
| config: { type: 'string' }, | ||
| projects: { type: 'string', multiple: true }, | ||
| include: { type: 'string', multiple: true }, | ||
| exclude: { type: 'string', multiple: true }, | ||
| format: { type: 'string', multiple: true }, | ||
| filename: { type: 'string' }, | ||
| outputDir: { type: 'string' }, | ||
| open: { type: 'string' }, | ||
| 'no-open': { type: 'boolean' }, | ||
| deep: { type: 'boolean' }, | ||
| sources: { type: 'boolean' }, | ||
| gzip: { type: 'boolean' }, | ||
| brotli: { type: 'boolean' } | ||
| }, | ||
| // Fail when unknown argument is used | ||
| strict: true | ||
| } ); | ||
| // Fail when unknown argument is used | ||
| strict: true | ||
| }); | ||
| if ( values[ 'no-open' ] ) { | ||
| values.open = false; | ||
| delete values[ 'no-open' ]; | ||
| if (values['no-open']) { | ||
| values.open = false; | ||
| delete values['no-open']; | ||
| } | ||
| values.include = values.include?.map( stringToRegExp ); | ||
| values.exclude = values.exclude?.map( stringToRegExp ); | ||
| values.include = values.include?.map(stringToRegExp); | ||
| values.exclude = values.exclude?.map(stringToRegExp); | ||
| Sonda( values ); | ||
| Sonda(values); |
+7
-0
| # Changelog | ||
| ## 0.10.2 | ||
| ### Patch Changes | ||
| - 8cd728c: Allow uploading a JSON report when no report is embedded in the HTML. | ||
| - b78ff1d: [esbuild] Remove duplicate entrypoint connection pointing in the wrong direction. | ||
| ## 0.10.1 | ||
@@ -4,0 +11,0 @@ |
@@ -6,3 +6,3 @@ import { basename, relative, resolve } from "path"; | ||
| //#region src/entrypoints/angular.ts | ||
| async function SondaAngular({ config = "angular.json", projects = [],...userOptions }) { | ||
| async function SondaAngular({ config = "angular.json", projects = [], ...userOptions }) { | ||
| const options = new Config(userOptions, { | ||
@@ -9,0 +9,0 @@ integration: "angular", |
@@ -5,3 +5,3 @@ import { Config, SondaVitePlugin } from "sonda"; | ||
| function SondaNuxtPlugin(userOptions = {}) { | ||
| return function SondaNuxtPlugin$1(_, nuxt) { | ||
| return function SondaNuxtPlugin(_, nuxt) { | ||
| const options = new Config(userOptions, { | ||
@@ -8,0 +8,0 @@ integration: "nuxt", |
+41
-41
@@ -251,5 +251,5 @@ import { DecodedSourceMap } from "@jridgewell/remapping"; | ||
| * Base interface for all resources. | ||
| * | ||
| * | ||
| * Resources represent the following inputs: | ||
| * | ||
| * | ||
| * βββββββββββββββββββββββββββββββ | ||
@@ -260,7 +260,7 @@ * β β | ||
| * ββββββββββββββββ²βββββββββββββββ | ||
| * β | ||
| * β | ||
| * VIA SOURCEMAP | ||
| * β | ||
| * β | ||
| * β | ||
| * β | ||
| * VIA SOURCEMAP | ||
| * β | ||
| * β | ||
| * βββββββββββββββββββββββββββββββ ββββββββββββββββΌβββββββββββββββ | ||
@@ -271,32 +271,32 @@ * β β β β | ||
| * ββββββββββββββββ¬βββββββββββββββ ββββββββββββββββ¬βββββββββββββββ | ||
| * β β | ||
| * β β | ||
| * βββββββββββββββββββ¬ββββββββββββββββββ | ||
| * β | ||
| * β | ||
| * ββββββββββββββββΌβββββββββββββββ | ||
| * β β | ||
| * β BUNDLER β | ||
| * β β | ||
| * ββββββββββββββββ¬βββββββββββββββ | ||
| * β | ||
| * β | ||
| * β | ||
| * β | ||
| * β | ||
| * ββββββββββββββββΌβββββββββββββββ | ||
| * β β | ||
| * β ASSET β | ||
| * β β | ||
| * ββββββββββββββββ¬βββββββββββββββ | ||
| * β | ||
| * β | ||
| * VIA SOURCEMAP | ||
| * β | ||
| * β | ||
| * ββββββββββββββββΌβββββββββββββββ | ||
| * β β | ||
| * β CHUNK β | ||
| * β β | ||
| * βββββββββββββββββββββββββββββββ | ||
| * β β | ||
| * β β | ||
| * βββββββββββββββββββ¬ββββββββββββββββββ | ||
| * β | ||
| * β | ||
| * ββββββββββββββββΌβββββββββββββββ | ||
| * β β | ||
| * β BUNDLER β | ||
| * β β | ||
| * ββββββββββββββββ¬βββββββββββββββ | ||
| * β | ||
| * β | ||
| * β | ||
| * β | ||
| * β | ||
| * ββββββββββββββββΌβββββββββββββββ | ||
| * β β | ||
| * β ASSET β | ||
| * β β | ||
| * ββββββββββββββββ¬βββββββββββββββ | ||
| * β | ||
| * β | ||
| * VIA SOURCEMAP | ||
| * β | ||
| * β | ||
| * ββββββββββββββββΌβββββββββββββββ | ||
| * β β | ||
| * β CHUNK β | ||
| * β β | ||
| * βββββββββββββββββββββββββββββββ | ||
| */ | ||
@@ -328,3 +328,3 @@ interface ResourceBase { | ||
| * Size of the resource after GZIP compression. | ||
| * | ||
| * | ||
| * This value is only available when the `gzip` option is enabled. | ||
@@ -335,3 +335,3 @@ */ | ||
| * Size of the resource after Brotli compression. | ||
| * | ||
| * | ||
| * This value is only available when the `brotli` option is enabled. | ||
@@ -345,3 +345,3 @@ */ | ||
| * asset and value of `parent` is the name of the output asset. | ||
| * | ||
| * | ||
| * If the `kind` is `sourcemap`, this resource is a part of the source | ||
@@ -446,3 +446,3 @@ * map of other resource and value of `parent` is the name of that resource. | ||
| * Stringified source map. | ||
| * | ||
| * | ||
| * Use the `DecodedMap` type for the decoded version of this map (after `JSON.parse()`). | ||
@@ -449,0 +449,0 @@ */ |
+4
-12
@@ -174,3 +174,3 @@ import { styleText } from "util"; | ||
| //#region package.json | ||
| var version = "0.10.1"; | ||
| var version = "0.10.2"; | ||
@@ -565,4 +565,4 @@ //#endregion | ||
| const formatters = { | ||
| "html": HtmlFormatter, | ||
| "json": JsonFormatter | ||
| html: HtmlFormatter, | ||
| json: JsonFormatter | ||
| }; | ||
@@ -679,11 +679,3 @@ var Report = class { | ||
| } | ||
| for (const [path, output] of Object.entries(metafile.outputs)) { | ||
| report.addAsset(path, output.entryPoint ? [output.entryPoint] : void 0); | ||
| if (output.entryPoint) report.addConnection({ | ||
| kind: "entrypoint", | ||
| source: normalizePath(output.entryPoint), | ||
| target: normalizePath(path), | ||
| original: null | ||
| }); | ||
| } | ||
| for (const [path, output] of Object.entries(metafile.outputs)) report.addAsset(path, output.entryPoint ? [output.entryPoint] : void 0); | ||
| const reportPaths = await report.generate(); | ||
@@ -690,0 +682,0 @@ for (const reportPath of reportPaths) console.info(styleText("green", `π Sonda report generated: ${reportPath}`)); |
+28
-26
| { | ||
| "name": "sonda", | ||
| "version": "0.10.1", | ||
| "version": "0.10.2", | ||
| "description": "Universal bundle analyzer and visualizer that works with most popular bundlers and frameworks.", | ||
| "keywords": [ | ||
| "analyzer", | ||
| "angular", | ||
| "bundle", | ||
| "visualizer", | ||
| "analyzer", | ||
| "vite", | ||
| "rollup", | ||
| "rolldown", | ||
| "webpack", | ||
| "rspack", | ||
| "devtools", | ||
| "esbuild", | ||
| "nextjs", | ||
| "nuxt", | ||
| "withastro", | ||
| "performance", | ||
| "rolldown-plugin", | ||
| "rollup-plugin", | ||
| "rspack", | ||
| "sveltekit", | ||
| "angular", | ||
| "performance", | ||
| "devtools" | ||
| "visualizer", | ||
| "vite-plugin", | ||
| "webpack", | ||
| "withastro" | ||
| ], | ||
| "engines": { | ||
| "node": ">=20.19 || >=22.12" | ||
| }, | ||
| "homepage": "https://sonda.dev", | ||
| "license": "MIT", | ||
| "type": "module", | ||
| "repository": { | ||
@@ -33,3 +30,13 @@ "type": "git", | ||
| }, | ||
| "homepage": "https://sonda.dev", | ||
| "bin": { | ||
| "sonda-angular": "./bin/sonda-angular.js" | ||
| }, | ||
| "files": [ | ||
| "bin", | ||
| "CHANGELOG.md", | ||
| "dist" | ||
| ], | ||
| "type": "module", | ||
| "main": "./dist/index.js", | ||
| "types": "./dist/index.d.ts", | ||
| "exports": { | ||
@@ -50,14 +57,9 @@ ".": "./dist/index.js", | ||
| }, | ||
| "files": [ | ||
| "bin", | ||
| "dist", | ||
| "CHANGELOG.md" | ||
| ], | ||
| "bin": { | ||
| "sonda-angular": "./bin/sonda-angular.js" | ||
| }, | ||
| "dependencies": { | ||
| "@jridgewell/remapping": "^2.3.5", | ||
| "open": "^10.2.0" | ||
| "open": "^11.0.0" | ||
| }, | ||
| "engines": { | ||
| "node": ">=20.19 || >=22.12" | ||
| } | ||
| } |
+13
-13
@@ -7,15 +7,15 @@ # Sonda | ||
| * **Bundlers** | ||
| * Vite | ||
| * Rollup | ||
| * Rolldown | ||
| * esbuild | ||
| * webpack | ||
| * Rspack | ||
| * **Frameworks** | ||
| * Next.js | ||
| * Nuxt | ||
| * Astro | ||
| * SvelteKit | ||
| * Angular CLI | ||
| - **Bundlers** | ||
| - Vite | ||
| - Rollup | ||
| - Rolldown | ||
| - esbuild | ||
| - webpack | ||
| - Rspack | ||
| - **Frameworks** | ||
| - Next.js | ||
| - Nuxt | ||
| - Astro | ||
| - SvelteKit | ||
| - Angular CLI | ||
@@ -22,0 +22,0 @@ ## Installation |
Sorry, the diff of this file is too big to display
Debug access
Supply chain riskUses debug, reflection and dynamic code execution features.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 2 instances in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Debug access
Supply chain riskUses debug, reflection and dynamic code execution features.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 2 instances in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
298319
2.52%1566
-0.51%+ Added
+ Added
+ Added
+ Added
- Removed
- Removed
Updated