@node-cli/bundlecheck 1.3.0 → 1.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/README.md +202 -0
- package/dist/bundlecheck.js +23 -21
- package/dist/bundlecheck.js.map +1 -1
- package/dist/bundler.d.ts +10 -6
- package/dist/bundler.js +92 -84
- package/dist/bundler.js.map +1 -1
- package/dist/cache.d.ts +18 -15
- package/dist/cache.js +39 -35
- package/dist/cache.js.map +1 -1
- package/dist/defaults.d.ts +2 -2
- package/dist/defaults.js +10 -10
- package/dist/defaults.js.map +1 -1
- package/dist/index.d.ts +1 -7
- package/dist/index.js +229 -0
- package/dist/index.js.map +1 -0
- package/dist/trend.d.ts +14 -8
- package/dist/trend.js +39 -33
- package/dist/trend.js.map +1 -1
- package/dist/versions.d.ts +1 -1
- package/dist/versions.js +12 -10
- package/dist/versions.js.map +1 -1
- package/package.json +4 -3
package/dist/versions.js
CHANGED
|
@@ -3,16 +3,16 @@ import { rsort } from "semver";
|
|
|
3
3
|
import { parsePackageSpecifier } from "./bundler.js";
|
|
4
4
|
import { DEFAULT_REGISTRY } from "./defaults.js";
|
|
5
5
|
export async function fetchPackageVersions(packageNameOrOptions) {
|
|
6
|
-
// Support both string (legacy) and options object
|
|
6
|
+
// Support both string (legacy) and options object.
|
|
7
7
|
const { packageName, registry } = typeof packageNameOrOptions === "string" ? {
|
|
8
8
|
packageName: packageNameOrOptions,
|
|
9
9
|
registry: undefined
|
|
10
10
|
} : packageNameOrOptions;
|
|
11
|
-
// Parse the package specifier to get just the name (without version)
|
|
11
|
+
// Parse the package specifier to get just the name (without version).
|
|
12
12
|
const { name } = parsePackageSpecifier(packageName);
|
|
13
|
-
// Use custom registry or default
|
|
13
|
+
// Use custom registry or default.
|
|
14
14
|
const registryUrl = registry || DEFAULT_REGISTRY;
|
|
15
|
-
// Ensure no trailing slash
|
|
15
|
+
// Ensure no trailing slash.
|
|
16
16
|
const baseUrl = registryUrl.replace(/\/$/, "");
|
|
17
17
|
const url = `${baseUrl}/${name}`;
|
|
18
18
|
const response = await fetch(url);
|
|
@@ -20,7 +20,7 @@ export async function fetchPackageVersions(packageNameOrOptions) {
|
|
|
20
20
|
throw new Error(`Failed to fetch package info: ${response.statusText}`);
|
|
21
21
|
}
|
|
22
22
|
const data = await response.json();
|
|
23
|
-
// Get all versions sorted by semver (newest first)
|
|
23
|
+
// Get all versions sorted by semver (newest first).
|
|
24
24
|
const versions = rsort(Object.keys(data.versions || {}));
|
|
25
25
|
// Get dist-tags (latest, next, beta, etc.)
|
|
26
26
|
const tags = data["dist-tags"] || {};
|
|
@@ -30,23 +30,25 @@ export async function fetchPackageVersions(packageNameOrOptions) {
|
|
|
30
30
|
};
|
|
31
31
|
}
|
|
32
32
|
/**
|
|
33
|
-
* Prompt user to select a version from available versions
|
|
33
|
+
* Prompt user to select a version from available versions.
|
|
34
34
|
*/ export async function promptForVersion(packageName, versions, tags) {
|
|
35
|
-
// Build choices with tags highlighted
|
|
35
|
+
// Build choices with tags highlighted.
|
|
36
36
|
const taggedVersions = new Set(Object.values(tags));
|
|
37
37
|
const tagByVersion = Object.fromEntries(Object.entries(tags).map(([tag, ver])=>[
|
|
38
38
|
ver,
|
|
39
39
|
tag
|
|
40
40
|
]));
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
/**
|
|
42
|
+
* Limit to most recent 20 versions for usability, but include all tagged
|
|
43
|
+
* versions.
|
|
44
|
+
*/ const recentVersions = versions.slice(0, 20);
|
|
43
45
|
const displayVersions = [
|
|
44
46
|
...new Set([
|
|
45
47
|
...Object.values(tags),
|
|
46
48
|
...recentVersions
|
|
47
49
|
])
|
|
48
50
|
];
|
|
49
|
-
// Sort so tagged versions appear first, then by version order
|
|
51
|
+
// Sort so tagged versions appear first, then by version order.
|
|
50
52
|
displayVersions.sort((a, b)=>{
|
|
51
53
|
const aTagged = taggedVersions.has(a);
|
|
52
54
|
const bTagged = taggedVersions.has(b);
|
package/dist/versions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/versions.ts"],"sourcesContent":["import select from \"@inquirer/select\";\nimport { rsort } from \"semver\";\nimport { parsePackageSpecifier } from \"./bundler.js\";\nimport { DEFAULT_REGISTRY } from \"./defaults.js\";\n\nexport type NpmPackageInfo = {\n\tversions: string[];\n\ttags: Record<string, string>;\n};\n\n/**\n * Fetch available versions for an npm package from the registry
|
|
1
|
+
{"version":3,"sources":["../src/versions.ts"],"sourcesContent":["import select from \"@inquirer/select\";\nimport { rsort } from \"semver\";\nimport { parsePackageSpecifier } from \"./bundler.js\";\nimport { DEFAULT_REGISTRY } from \"./defaults.js\";\n\nexport type NpmPackageInfo = {\n\tversions: string[];\n\ttags: Record<string, string>;\n};\n\n/**\n * Fetch available versions for an npm package from the registry.\n */\ntype NpmRegistryResponse = {\n\tversions?: Record<string, unknown>;\n\t\"dist-tags\"?: Record<string, string>;\n};\n\nexport type FetchVersionsOptions = {\n\tpackageName: string;\n\tregistry?: string;\n};\n\nexport async function fetchPackageVersions(\n\tpackageNameOrOptions: string | FetchVersionsOptions,\n): Promise<NpmPackageInfo> {\n\t// Support both string (legacy) and options object.\n\tconst { packageName, registry } =\n\t\ttypeof packageNameOrOptions === \"string\"\n\t\t\t? { packageName: packageNameOrOptions, registry: undefined }\n\t\t\t: packageNameOrOptions;\n\n\t// Parse the package specifier to get just the name (without version).\n\tconst { name } = parsePackageSpecifier(packageName);\n\n\t// Use custom registry or default.\n\tconst registryUrl = registry || DEFAULT_REGISTRY;\n\t// Ensure no trailing slash.\n\tconst baseUrl = registryUrl.replace(/\\/$/, \"\");\n\tconst url = `${baseUrl}/${name}`;\n\tconst response = await fetch(url);\n\n\tif (!response.ok) {\n\t\tthrow new Error(`Failed to fetch package info: ${response.statusText}`);\n\t}\n\n\tconst data = (await response.json()) as NpmRegistryResponse;\n\n\t// Get all versions sorted by semver (newest first).\n\tconst versions = rsort(Object.keys(data.versions || {}));\n\n\t// Get dist-tags (latest, next, beta, etc.)\n\tconst tags = data[\"dist-tags\"] || {};\n\n\treturn { versions, tags };\n}\n\n/**\n * Prompt user to select a version from available versions.\n */\nexport async function promptForVersion(\n\tpackageName: string,\n\tversions: string[],\n\ttags: Record<string, string>,\n): Promise<string> {\n\t// Build choices with tags highlighted.\n\tconst taggedVersions = new Set(Object.values(tags));\n\tconst tagByVersion = Object.fromEntries(\n\t\tObject.entries(tags).map(([tag, ver]) => [ver, tag]),\n\t);\n\n\t/**\n\t * Limit to most recent 20 versions for usability, but include all tagged\n\t * versions.\n\t */\n\tconst recentVersions = versions.slice(0, 20);\n\tconst displayVersions = [\n\t\t...new Set([...Object.values(tags), ...recentVersions]),\n\t];\n\n\t// Sort so tagged versions appear first, then by version order.\n\tdisplayVersions.sort((a, b) => {\n\t\tconst aTagged = taggedVersions.has(a);\n\t\tconst bTagged = taggedVersions.has(b);\n\t\tif (aTagged && !bTagged) {\n\t\t\treturn -1;\n\t\t}\n\t\tif (!aTagged && bTagged) {\n\t\t\treturn 1;\n\t\t}\n\t\treturn versions.indexOf(a) - versions.indexOf(b);\n\t});\n\n\tconst choices = displayVersions.map((ver) => {\n\t\tconst tag = tagByVersion[ver];\n\t\treturn {\n\t\t\tname: tag ? `${ver} (${tag})` : ver,\n\t\t\tvalue: ver,\n\t\t};\n\t});\n\n\tconst selectedVersion = await select({\n\t\tmessage: `Select a version for ${packageName}:`,\n\t\tchoices,\n\t\tpageSize: 15,\n\t});\n\n\treturn selectedVersion;\n}\n"],"names":["select","rsort","parsePackageSpecifier","DEFAULT_REGISTRY","fetchPackageVersions","packageNameOrOptions","packageName","registry","undefined","name","registryUrl","baseUrl","replace","url","response","fetch","ok","Error","statusText","data","json","versions","Object","keys","tags","promptForVersion","taggedVersions","Set","values","tagByVersion","fromEntries","entries","map","tag","ver","recentVersions","slice","displayVersions","sort","a","b","aTagged","has","bTagged","indexOf","choices","value","selectedVersion","message","pageSize"],"mappings":"AAAA,OAAOA,YAAY,mBAAmB;AACtC,SAASC,KAAK,QAAQ,SAAS;AAC/B,SAASC,qBAAqB,QAAQ,eAAe;AACrD,SAASC,gBAAgB,QAAQ,gBAAgB;AAoBjD,OAAO,eAAeC,qBACrBC,oBAAmD;IAEnD,mDAAmD;IACnD,MAAM,EAAEC,WAAW,EAAEC,QAAQ,EAAE,GAC9B,OAAOF,yBAAyB,WAC7B;QAAEC,aAAaD;QAAsBE,UAAUC;IAAU,IACzDH;IAEJ,sEAAsE;IACtE,MAAM,EAAEI,IAAI,EAAE,GAAGP,sBAAsBI;IAEvC,kCAAkC;IAClC,MAAMI,cAAcH,YAAYJ;IAChC,4BAA4B;IAC5B,MAAMQ,UAAUD,YAAYE,OAAO,CAAC,OAAO;IAC3C,MAAMC,MAAM,GAAGF,QAAQ,CAAC,EAAEF,MAAM;IAChC,MAAMK,WAAW,MAAMC,MAAMF;IAE7B,IAAI,CAACC,SAASE,EAAE,EAAE;QACjB,MAAM,IAAIC,MAAM,CAAC,8BAA8B,EAAEH,SAASI,UAAU,EAAE;IACvE;IAEA,MAAMC,OAAQ,MAAML,SAASM,IAAI;IAEjC,oDAAoD;IACpD,MAAMC,WAAWpB,MAAMqB,OAAOC,IAAI,CAACJ,KAAKE,QAAQ,IAAI,CAAC;IAErD,2CAA2C;IAC3C,MAAMG,OAAOL,IAAI,CAAC,YAAY,IAAI,CAAC;IAEnC,OAAO;QAAEE;QAAUG;IAAK;AACzB;AAEA;;CAEC,GACD,OAAO,eAAeC,iBACrBnB,WAAmB,EACnBe,QAAkB,EAClBG,IAA4B;IAE5B,uCAAuC;IACvC,MAAME,iBAAiB,IAAIC,IAAIL,OAAOM,MAAM,CAACJ;IAC7C,MAAMK,eAAeP,OAAOQ,WAAW,CACtCR,OAAOS,OAAO,CAACP,MAAMQ,GAAG,CAAC,CAAC,CAACC,KAAKC,IAAI,GAAK;YAACA;YAAKD;SAAI;IAGpD;;;EAGC,GACD,MAAME,iBAAiBd,SAASe,KAAK,CAAC,GAAG;IACzC,MAAMC,kBAAkB;WACpB,IAAIV,IAAI;eAAIL,OAAOM,MAAM,CAACJ;eAAUW;SAAe;KACtD;IAED,+DAA+D;IAC/DE,gBAAgBC,IAAI,CAAC,CAACC,GAAGC;QACxB,MAAMC,UAAUf,eAAegB,GAAG,CAACH;QACnC,MAAMI,UAAUjB,eAAegB,GAAG,CAACF;QACnC,IAAIC,WAAW,CAACE,SAAS;YACxB,OAAO,CAAC;QACT;QACA,IAAI,CAACF,WAAWE,SAAS;YACxB,OAAO;QACR;QACA,OAAOtB,SAASuB,OAAO,CAACL,KAAKlB,SAASuB,OAAO,CAACJ;IAC/C;IAEA,MAAMK,UAAUR,gBAAgBL,GAAG,CAAC,CAACE;QACpC,MAAMD,MAAMJ,YAAY,CAACK,IAAI;QAC7B,OAAO;YACNzB,MAAMwB,MAAM,GAAGC,IAAI,EAAE,EAAED,IAAI,CAAC,CAAC,GAAGC;YAChCY,OAAOZ;QACR;IACD;IAEA,MAAMa,kBAAkB,MAAM/C,OAAO;QACpCgD,SAAS,CAAC,qBAAqB,EAAE1C,YAAY,CAAC,CAAC;QAC/CuC;QACAI,UAAU;IACX;IAEA,OAAOF;AACR"}
|
package/package.json
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@node-cli/bundlecheck",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": "Arno Versini",
|
|
6
6
|
"description": "CLI tool to check the bundle size of npm packages (like bundlephobia)",
|
|
7
7
|
"type": "module",
|
|
8
8
|
"types": "./dist/index.d.ts",
|
|
9
|
+
"main": "./dist/index.js",
|
|
9
10
|
"exports": {
|
|
10
11
|
".": {
|
|
11
12
|
"types": "./dist/index.d.ts",
|
|
12
|
-
"import": "./dist/
|
|
13
|
+
"import": "./dist/index.js"
|
|
13
14
|
}
|
|
14
15
|
},
|
|
15
16
|
"bin": "dist/bundlecheck.js",
|
|
@@ -50,5 +51,5 @@
|
|
|
50
51
|
"@vitest/coverage-v8": "4.0.18",
|
|
51
52
|
"vitest": "4.0.18"
|
|
52
53
|
},
|
|
53
|
-
"gitHead": "
|
|
54
|
+
"gitHead": "e6ab3435a49c7cd2a0ef27bd692e3de658a29ef4"
|
|
54
55
|
}
|