@jayf0x/npm-exists 2.0.4 → 2.0.5
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 +3 -9
- package/dist/index.cjs +2 -7
- package/dist/index.d.ts +3 -5
- package/dist/index.js +2 -7
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -34,12 +34,6 @@ const url = await npmExists('my-pkg', 'https://my.private.registry.io')
|
|
|
34
34
|
const url = await npmExists('react', { silent: true })
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
-
```js
|
|
38
|
-
// Full metadata (GET instead of HEAD)
|
|
39
|
-
const meta = await npmExists('react', { full: true })
|
|
40
|
-
// → { name, description, 'dist-tags', versions, ... } | false
|
|
41
|
-
```
|
|
42
|
-
|
|
43
37
|
```js
|
|
44
38
|
// Build your own fetch
|
|
45
39
|
import { getNpmUrl } from '@jayf0x/npm-exists'
|
|
@@ -64,10 +58,10 @@ Exit codes: `0` exists · `1` not found · `2` bad usage
|
|
|
64
58
|
| Param | Type | Description |
|
|
65
59
|
|---|---|---|
|
|
66
60
|
| `pkg` | `string` | Package name |
|
|
67
|
-
| `registryOrOptions` | `string \| { registry?, silent
|
|
68
|
-
| `options` | `{ silent
|
|
61
|
+
| `registryOrOptions` | `string \| { registry?, silent? }` | Registry URL or options object |
|
|
62
|
+
| `options` | `{ silent? }` | `silent: true` returns `false` instead of throwing on error |
|
|
69
63
|
|
|
70
|
-
Returns `Promise<string \|
|
|
64
|
+
Returns `Promise<string \| false>`
|
|
71
65
|
|
|
72
66
|
### `getNpmUrl(pkg, registry?)`
|
|
73
67
|
|
package/dist/index.cjs
CHANGED
|
@@ -12,23 +12,18 @@ function getPageUrl(pkg, registry) {
|
|
|
12
12
|
async function npmExists(pkg, registryOrOptions, options) {
|
|
13
13
|
let registry = DEFAULT_REGISTRY;
|
|
14
14
|
let silent = false;
|
|
15
|
-
let full = false;
|
|
16
15
|
if (typeof registryOrOptions === "string") {
|
|
17
16
|
registry = registryOrOptions;
|
|
18
17
|
silent = options?.silent ?? false;
|
|
19
|
-
full = options?.full ?? false;
|
|
20
18
|
} else if (registryOrOptions != null) {
|
|
21
19
|
registry = registryOrOptions.registry ?? DEFAULT_REGISTRY;
|
|
22
20
|
silent = registryOrOptions.silent ?? false;
|
|
23
|
-
full = registryOrOptions.full ?? false;
|
|
24
21
|
}
|
|
25
22
|
try {
|
|
26
|
-
const res = await fetch(getNpmUrl(pkg, registry), {
|
|
27
|
-
method: full ? "GET" : "HEAD"
|
|
28
|
-
});
|
|
23
|
+
const res = await fetch(getNpmUrl(pkg, registry), { method: "HEAD" });
|
|
29
24
|
if (res.status === 404) return false;
|
|
30
25
|
if (!res.ok) throw new Error(`npm registry error: HTTP ${res.status}`);
|
|
31
|
-
return
|
|
26
|
+
return getPageUrl(pkg, registry);
|
|
32
27
|
} catch (err) {
|
|
33
28
|
if (silent) return false;
|
|
34
29
|
throw err;
|
package/dist/index.d.ts
CHANGED
|
@@ -4,18 +4,16 @@ export interface NpmExistsOptions {
|
|
|
4
4
|
registry?: string
|
|
5
5
|
/** Suppress errors — network/registry failures return false instead of throwing */
|
|
6
6
|
silent?: boolean
|
|
7
|
-
/** Fetch full registry metadata instead of a lightweight HEAD check */
|
|
8
|
-
full?: boolean
|
|
9
7
|
}
|
|
10
8
|
|
|
11
9
|
/**
|
|
12
10
|
* Checks if an npm package exists.
|
|
13
|
-
* Returns the npm page URL
|
|
11
|
+
* Returns the npm page URL, or false if not found.
|
|
14
12
|
*/
|
|
15
13
|
export declare function npmExists(
|
|
16
14
|
pkg: string,
|
|
17
15
|
registryOrOptions?: string | NpmExistsOptions,
|
|
18
|
-
options?:
|
|
19
|
-
): Promise<string |
|
|
16
|
+
options?: NpmExistsOptions
|
|
17
|
+
): Promise<string | false>
|
|
20
18
|
|
|
21
19
|
export default npmExists
|
package/dist/index.js
CHANGED
|
@@ -10,23 +10,18 @@ function getPageUrl(pkg, registry) {
|
|
|
10
10
|
async function npmExists(pkg, registryOrOptions, options) {
|
|
11
11
|
let registry = DEFAULT_REGISTRY;
|
|
12
12
|
let silent = false;
|
|
13
|
-
let full = false;
|
|
14
13
|
if (typeof registryOrOptions === "string") {
|
|
15
14
|
registry = registryOrOptions;
|
|
16
15
|
silent = options?.silent ?? false;
|
|
17
|
-
full = options?.full ?? false;
|
|
18
16
|
} else if (registryOrOptions != null) {
|
|
19
17
|
registry = registryOrOptions.registry ?? DEFAULT_REGISTRY;
|
|
20
18
|
silent = registryOrOptions.silent ?? false;
|
|
21
|
-
full = registryOrOptions.full ?? false;
|
|
22
19
|
}
|
|
23
20
|
try {
|
|
24
|
-
const res = await fetch(getNpmUrl(pkg, registry), {
|
|
25
|
-
method: full ? "GET" : "HEAD"
|
|
26
|
-
});
|
|
21
|
+
const res = await fetch(getNpmUrl(pkg, registry), { method: "HEAD" });
|
|
27
22
|
if (res.status === 404) return false;
|
|
28
23
|
if (!res.ok) throw new Error(`npm registry error: HTTP ${res.status}`);
|
|
29
|
-
return
|
|
24
|
+
return getPageUrl(pkg, registry);
|
|
30
25
|
} catch (err) {
|
|
31
26
|
if (silent) return false;
|
|
32
27
|
throw err;
|