@gjsify/npm-registry 0.4.42 → 0.4.44

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 ADDED
@@ -0,0 +1,46 @@
1
+ # @gjsify/npm-registry
2
+
3
+ A small npm registry client used by `gjsify install` to resolve and download packages on GJS. Provides packument fetching with ETag revalidation, tarball download with SRI integrity verification, `.npmrc` parsing with Bearer/Basic auth, and exponential-backoff retry for transient failures. Cross-platform — runs on both GJS and Node using only `globalThis.fetch` and `SubtleCrypto`.
4
+
5
+ Part of the [gjsify](https://github.com/gjsify/gjsify) project — Node.js and Web APIs for GJS (GNOME JavaScript).
6
+
7
+ ## Installation
8
+
9
+ ```bash
10
+ gjsify install @gjsify/npm-registry
11
+ ```
12
+
13
+ ## Usage
14
+
15
+ ```typescript
16
+ import {
17
+ fetchPackument,
18
+ fetchTarball,
19
+ parseNpmrc,
20
+ verifyIntegrity,
21
+ whoami,
22
+ DEFAULT_REGISTRY,
23
+ } from '@gjsify/npm-registry';
24
+
25
+ // Fetch a packument (package metadata)
26
+ const packument = await fetchPackument('lodash');
27
+ const latest = packument['dist-tags'].latest;
28
+ const tarballUrl = packument.versions[latest].dist.tarball;
29
+
30
+ // Download the tarball and verify its integrity
31
+ const bytes = await fetchTarball(tarballUrl, {
32
+ integrity: packument.versions[latest].dist.integrity,
33
+ });
34
+
35
+ // Parse ~/.npmrc for auth
36
+ import { readFileSync } from 'node:fs';
37
+ const npmrc = parseNpmrc(readFileSync('/home/user/.npmrc', 'utf8'));
38
+
39
+ // Verify the current auth token
40
+ const { username } = await whoami(DEFAULT_REGISTRY, npmrc);
41
+ console.log('Logged in as:', username);
42
+ ```
43
+
44
+ ## License
45
+
46
+ MIT
package/lib/esm/index.js CHANGED
@@ -1 +1 @@
1
- import"./_virtual/_rolldown/runtime.js";const e=`https://registry.npmjs.org/`;function assertPackument(e,t){if(!t||typeof t!=`object`)throw TypeError(`registry: ${e} packument is not an object`);let n=t;if(typeof n.name!=`string`)throw TypeError(`registry: ${e} packument missing string name`);if(!n.versions||typeof n.versions!=`object`)throw TypeError(`registry: ${e} packument missing versions map`)}function registryFor(t,n){if(n&&t.startsWith(`@`)){let e=t.slice(0,t.indexOf(`/`)),r=n.scopes[e];if(r)return ensureTrailingSlash(r)}return n?.registry?ensureTrailingSlash(n.registry):e}function packumentUrl(e,t){let n=ensureTrailingSlash(t);if(e.startsWith(`@`)){let t=e.indexOf(`/`);if(t<0)throw TypeError(`Invalid scoped package name: ${e}`);let r=e.slice(0,t),i=e.slice(t+1);return`${n}${encodeURIComponent(r)}/${encodeURIComponent(i)}`}return`${n}${encodeURIComponent(e)}`}async function fetchPackumentConditional(e,t={}){let n=packumentUrl(e,t.registry??registryFor(e,t.npmrc)),r=buildHeaders(n,{...t,acceptEncoding:`gzip`});r.accept??=`application/vnd.npm.install-v1+json`,t.ifNoneMatch&&(r[`if-none-match`]=t.ifNoneMatch);let i=await fetchWithRetry(n,{headers:r,signal:t.signal,compress:!1},{fetch:t.fetch,retries:t.retries,retryDelayMs:t.retryDelayMs,timeoutMs:t.timeoutMs,onRetry:t.onRetry});if(i.status===304){try{await i.arrayBuffer()}catch{}return{status:`not-modified`,etag:t.ifNoneMatch}}if(!i.ok)throw i.status===404||i.status===406?new PackageNotFoundError(e,n):Error(`registry GET ${n} -> ${i.status} ${i.statusText}`);let a=i.headers.get(`etag`)??void 0,o=await decodeJsonBody(i);return assertPackument(e,o),{status:`fresh`,packument:o,etag:a}}async function decodeJsonBody(e){let t=new Uint8Array(await e.arrayBuffer()),n=t.length>=2&&t[0]===31&&t[1]===139?await gunzip(t):t;return JSON.parse(new TextDecoder().decode(n))}async function gunzip(e){let t=globalThis.DecompressionStream;if(typeof t!=`function`)throw Error(`@gjsify/npm-registry: globalThis.DecompressionStream is unavailable — cannot decode a gzip registry response (on GJS, register '@gjsify/compression-streams')`);let n=new Blob([new Uint8Array(e)]).stream().pipeThrough(new t(`gzip`)).getReader(),r=[],i=0;for(;;){let{value:e,done:t}=await n.read();if(t)break;let a=e instanceof Uint8Array?e:new Uint8Array(e);r.push(a),i+=a.length}let a=new Uint8Array(i),o=0;for(let e of r)a.set(e,o),o+=e.length;return a}async function fetchPackument(e,t={}){let n=await fetchPackumentConditional(e,t);if(!n.packument)throw Error(`registry: ${e} returned 304 Not Modified to an unconditional request`);return n.packument}async function fetchTarball(e,t={}){let n=buildHeaders(e,{...t,acceptEncoding:`identity`});n.accept??=`application/octet-stream`;let r=await fetchWithRetry(e,{headers:n,signal:t.signal},{fetch:t.fetch,retries:t.retries,retryDelayMs:t.retryDelayMs,timeoutMs:t.timeoutMs,onRetry:t.onRetry});if(!r.ok)throw Error(`tarball GET ${e} -> ${r.status} ${r.statusText}`);let i=new Uint8Array(await r.arrayBuffer());if(t.integrity&&!await verifyIntegrity(i,t.integrity))throw new IntegrityError(e,t.integrity);return i}async function fetchWithRetry(e,t,n){let r=n.fetch??globalThis.fetch;if(!r)throw Error(`@gjsify/npm-registry: globalThis.fetch is missing`);let i=Math.max(0,n.retries??3),a=Math.max(0,n.retryDelayMs??250),o=Math.max(0,n.timeoutMs??3e4),s=0,c,l=0;for(;;){if(t.signal?.aborted)throw signalAbortError(t.signal);let u=o>0?new AbortController:null,d=u===null?null:setTimeout(()=>u.abort(Error(`@gjsify/npm-registry: per-request timeout ${o}ms`)),o),f=composeSignals(t.signal,u?.signal);try{let n=await r(e,{...t,signal:f});if(n.ok||!isRetryableStatus(n.status)||s>=i)return n;try{await n.arrayBuffer()}catch{}c=Error(`HTTP ${n.status} ${n.statusText}`)}catch(n){let r=u!==null&&u.signal.aborted,a=t.signal?.aborted===!0;if(r&&!a){if(l++,s>=i)throw new RegistryTimeoutError(e,o,l);c=n}else if(a)throw signalAbortError(t.signal);else{if(!isRetryableError(n)||s>=i)throw n;c=n}}finally{d!==null&&clearTimeout(d)}let p=Math.min(a*2**s,8e3);n.onRetry?.({attempt:s+1,error:c,delayMs:p}),await delay(p,t.signal),s++}}function composeSignals(e,t){return e?t?AbortSignal.any([e,t]):e:t}function isRetryableStatus(e){return e===408||e===425||e===429||e===500||e===502||e===503||e===504||e===521||e===522||e===524||e===525}function isRetryableError(e){if(e&&typeof e==`object`&&`name`in e&&e.name===`AbortError`)return!1;if(e instanceof TypeError)return!0;if(e&&typeof e==`object`&&`name`in e){let t=e.name;if(t===`FetchError`)return!0;if(t===`AbortError`)return!1}let t=e?.cause;if(t&&typeof t==`object`&&`code`in t){let e=t.code;if(typeof e==`string`)return e===`ECONNRESET`||e===`ECONNREFUSED`||e===`ENETUNREACH`||e===`ENOTFOUND`||e===`ETIMEDOUT`||e===`EAI_AGAIN`||e===`UND_ERR_SOCKET`||e===`UND_ERR_CONNECT_TIMEOUT`}return!1}function delay(e,t){return e<=0?Promise.resolve():new Promise((n,r)=>{let i=setTimeout(()=>{t?.removeEventListener?.(`abort`,onAbort),n()},e),onAbort=()=>{clearTimeout(i),r(signalAbortError(t))};if(t?.aborted){clearTimeout(i),r(signalAbortError(t));return}t?.addEventListener?.(`abort`,onAbort,{once:!0})})}function signalAbortError(e){let t=e&&`reason`in e?e.reason:void 0;if(t instanceof Error)return t;let n=Error(`Aborted`);return n.name=`AbortError`,n}async function verifyIntegrity(e,t){let n=t.trim().split(/\s+/);for(let t of n){let n=t.indexOf(`-`);if(n<0)continue;let r=t.slice(0,n).toLowerCase(),i=t.slice(n+1),a=globalThis.crypto?.subtle;if(!a)throw Error(`@gjsify/npm-registry: globalThis.crypto.subtle is missing`);let o=subriToWebCryptoAlgo(r);if(!o)continue;let s=await a.digest(o,dataAsArrayBuffer(e));if(bytesToBase64(new Uint8Array(s))===i)return!0}return!1}function subriToWebCryptoAlgo(e){switch(e){case`sha1`:return`SHA-1`;case`sha256`:return`SHA-256`;case`sha384`:return`SHA-384`;case`sha512`:return`SHA-512`;default:return null}}function dataAsArrayBuffer(e){if(e.byteOffset===0&&e.byteLength===e.buffer.byteLength)return e.buffer;let t=new Uint8Array(e.byteLength);return t.set(e),t.buffer}function bytesToBase64(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t)}function parseNpmrc(t){let n={registry:e,scopes:{},authTokens:{},basicAuth:{}},r=t.split(/\r?\n/),i={};for(let e of r){let t=e.replace(/^\s+|\s+$/g,``);if(!t||t.startsWith(`#`)||t.startsWith(`;`))continue;let r=t.indexOf(`=`);if(r<0)continue;let a=t.slice(0,r).trim(),o=expandEnv(stripQuotes(t.slice(r+1).trim()));if(a===`registry`){n.registry=ensureTrailingSlash(o);continue}let s=a.match(/^(@[^:]+):registry$/);if(s){n.scopes[s[1]]=ensureTrailingSlash(o);continue}let c=a.match(/^\/\/(.+):_authToken$/);if(c){n.authTokens[normalizeAuthHost(c[1])]=o;continue}let l=a.match(/^\/\/(.+):username$/);if(l){(i[normalizeAuthHost(l[1])]??={}).user=o;continue}let u=a.match(/^\/\/(.+):_password$/);if(u){let e=base64Decode(o);(i[normalizeAuthHost(u[1])]??={}).pass=e;continue}}for(let[e,t]of Object.entries(i))t.user&&t.pass!==void 0&&(n.basicAuth[e]={username:t.user,password:t.pass});return n}function buildHeaders(e,t){let n={"user-agent":`gjsify-install/0.3.7`,"accept-encoding":t.acceptEncoding??`identity`};if(t.npmrc){let r=resolveAuthForUrl(e,t.npmrc);r&&(n.authorization=r)}if(t.headers)for(let[e,r]of Object.entries(t.headers))n[e.toLowerCase()]=r;return n}function resolveAuthForUrl(e,t){let n=pathPrefixes(new URL(e));for(let e of n){let n=t.authTokens[e];if(n)return`Bearer ${n}`;let r=t.basicAuth[e];if(r)return`Basic ${btoa(`${r.username}:${r.password}`)}`}return null}function pathPrefixes(e){let t=e.pathname.split(`/`).filter(Boolean),n=[];for(let r=t.length;r>=0;r--){let i=t.slice(0,r).join(`/`);n.push(i?`//${e.host}/${i}`:`//${e.host}`)}return n}function normalizeAuthHost(e){return`//${e.replace(/\/+$/,``)}`}function ensureTrailingSlash(e){return e.endsWith(`/`)?e:e+`/`}function stripQuotes(e){return e.startsWith(`"`)&&e.endsWith(`"`)||e.startsWith(`'`)&&e.endsWith(`'`)?e.slice(1,-1):e}function expandEnv(e){return e.replace(/\$\{([A-Z0-9_]+)\}/gi,(e,t)=>globalThis.process?.env?.[t]??``)}function base64Decode(e){return atob(e)}async function whoami(e,t){let n=`${ensureTrailingSlash(e)}-/whoami`,r=buildHeaders(n,{npmrc:t});r.accept=`application/json`;let i=globalThis.fetch;if(!i)throw Error(`@gjsify/npm-registry: globalThis.fetch is missing`);let a=await i(n,{method:`GET`,headers:r});if(!a.ok)throw Error(`whoami GET ${n} -> ${a.status} ${a.statusText}`);let o=await a.json();if(o&&typeof o==`object`&&`username`in o){let e=o.username;if(typeof e==`string`&&e.length>0)return{username:e}}return{}}var PackageNotFoundError=class extends Error{name;url;constructor(e,t){super(`Package not found in registry: ${e} (${t})`),this.name=e,this.url=t,this.name=`PackageNotFoundError`}},IntegrityError=class extends Error{url;integrity;constructor(e,t){super(`Tarball integrity mismatch for ${e} (expected ${t})`),this.url=e,this.integrity=t,this.name=`IntegrityError`}},RegistryTimeoutError=class extends Error{url;timeoutMs;attempts;constructor(e,t,n){let r=Math.round(t/100)/10,i=Math.round(t*n/100)/10;super(`@gjsify/npm-registry: GET ${e} timed out after ${r}s × ${n} attempt(s) (total ~${i}s). This usually means the registry CDN is slow or unreachable.`),this.url=e,this.timeoutMs=t,this.attempts=n,this.name=`RegistryTimeoutError`}};export{e as DEFAULT_REGISTRY,IntegrityError,PackageNotFoundError,RegistryTimeoutError,assertPackument,buildHeaders,fetchPackument,fetchPackumentConditional,fetchTarball,fetchWithRetry,packumentUrl,parseNpmrc,registryFor,resolveAuthForUrl,verifyIntegrity,whoami};
1
+ import"./_virtual/_rolldown/runtime.js";const e=`https://registry.npmjs.org/`;function assertPackument(e,t){if(!t||typeof t!=`object`)throw TypeError(`registry: ${e} packument is not an object`);let n=t;if(typeof n.name!=`string`)throw TypeError(`registry: ${e} packument missing string name`);if(!n.versions||typeof n.versions!=`object`)throw TypeError(`registry: ${e} packument missing versions map`)}function registryFor(t,n){if(n&&t.startsWith(`@`)){let e=t.slice(0,t.indexOf(`/`)),r=n.scopes[e];if(r)return ensureTrailingSlash(r)}return n?.registry?ensureTrailingSlash(n.registry):e}function packumentUrl(e,t){let n=ensureTrailingSlash(t);if(e.startsWith(`@`)){let t=e.indexOf(`/`);if(t<0)throw TypeError(`Invalid scoped package name: ${e}`);let r=e.slice(0,t),i=e.slice(t+1);return`${n}${encodeURIComponent(r)}/${encodeURIComponent(i)}`}return`${n}${encodeURIComponent(e)}`}async function fetchPackumentConditional(e,t={}){let n=packumentUrl(e,t.registry??registryFor(e,t.npmrc)),r=buildHeaders(n,{...t,acceptEncoding:`gzip`});r.accept??=`application/vnd.npm.install-v1+json`,t.ifNoneMatch&&(r[`if-none-match`]=t.ifNoneMatch);let i=await fetchWithRetry(n,{headers:r,signal:t.signal,compress:!1},{fetch:t.fetch,retries:t.retries,retryDelayMs:t.retryDelayMs,timeoutMs:t.timeoutMs,onRetry:t.onRetry});if(i.status===304){try{await i.arrayBuffer()}catch{}return{status:`not-modified`,etag:t.ifNoneMatch}}if(!i.ok)throw i.status===404||i.status===406?new PackageNotFoundError(e,n):Error(`registry GET ${n} -> ${i.status} ${i.statusText}`);let a=i.headers.get(`etag`)??void 0,o=await decodeJsonBody(i);return assertPackument(e,o),{status:`fresh`,packument:o,etag:a}}async function decodeJsonBody(e){let t=new Uint8Array(await e.arrayBuffer()),n=t.length>=2&&t[0]===31&&t[1]===139?await gunzip(t):t;return JSON.parse(new TextDecoder().decode(n))}async function gunzip(e){let t=globalThis.DecompressionStream;if(typeof t!=`function`)throw Error(`@gjsify/npm-registry: globalThis.DecompressionStream is unavailable — cannot decode a gzip registry response (on GJS, register '@gjsify/compression-streams')`);let n=new Blob([new Uint8Array(e)]).stream().pipeThrough(new t(`gzip`)).getReader(),r=[],i=0;for(;;){let{value:e,done:t}=await n.read();if(t)break;let a=e instanceof Uint8Array?e:new Uint8Array(e);r.push(a),i+=a.length}let a=new Uint8Array(i),o=0;for(let e of r)a.set(e,o),o+=e.length;return a}async function fetchPackument(e,t={}){let n=await fetchPackumentConditional(e,t);if(!n.packument)throw Error(`registry: ${e} returned 304 Not Modified to an unconditional request`);return n.packument}async function fetchTarball(e,t={}){let n=buildHeaders(e,{...t,acceptEncoding:`identity`});n.accept??=`application/octet-stream`;let r=await fetchWithRetry(e,{headers:n,signal:t.signal},{fetch:t.fetch,retries:t.retries,retryDelayMs:t.retryDelayMs,timeoutMs:t.timeoutMs,onRetry:t.onRetry,retryNotFound:t.retryNotFound??!0});if(!r.ok)throw Error(`tarball GET ${e} -> ${r.status} ${r.statusText}`);let i=new Uint8Array(await r.arrayBuffer());if(t.integrity&&!await verifyIntegrity(i,t.integrity))throw new IntegrityError(e,t.integrity);return i}async function fetchWithRetry(e,t,n){let r=n.fetch??globalThis.fetch;if(!r)throw Error(`@gjsify/npm-registry: globalThis.fetch is missing`);let i=Math.max(0,n.retries??3),a=Math.max(0,n.retryDelayMs??250),o=Math.max(0,n.timeoutMs??3e4),s=n.retryNotFound??!1,c=0,l,u=0;for(;;){if(t.signal?.aborted)throw signalAbortError(t.signal);let d=o>0?new AbortController:null,f=d===null?null:setTimeout(()=>d.abort(Error(`@gjsify/npm-registry: per-request timeout ${o}ms`)),o),p=composeSignals(t.signal,d?.signal);try{let n=await r(e,{...t,signal:p}),a=isRetryableStatus(n.status)||s&&n.status===404;if(n.ok||!a||c>=i)return n;try{await n.arrayBuffer()}catch{}l=Error(`HTTP ${n.status} ${n.statusText}`)}catch(n){let r=d!==null&&d.signal.aborted,a=t.signal?.aborted===!0;if(r&&!a){if(u++,c>=i)throw new RegistryTimeoutError(e,o,u);l=n}else if(a)throw signalAbortError(t.signal);else{if(!isRetryableError(n)||c>=i)throw n;l=n}}finally{f!==null&&clearTimeout(f)}let m=Math.min(a*2**c,8e3);n.onRetry?.({attempt:c+1,error:l,delayMs:m}),await delay(m,t.signal),c++}}function composeSignals(e,t){return e?t?AbortSignal.any([e,t]):e:t}function isRetryableStatus(e){return e===408||e===425||e===429||e===500||e===502||e===503||e===504||e===521||e===522||e===524||e===525}function isRetryableError(e){if(e&&typeof e==`object`&&`name`in e&&e.name===`AbortError`)return!1;if(e instanceof TypeError)return!0;if(e&&typeof e==`object`&&`name`in e){let t=e.name;if(t===`FetchError`)return!0;if(t===`AbortError`)return!1}let t=e?.cause;if(t&&typeof t==`object`&&`code`in t){let e=t.code;if(typeof e==`string`)return e===`ECONNRESET`||e===`ECONNREFUSED`||e===`ENETUNREACH`||e===`ENOTFOUND`||e===`ETIMEDOUT`||e===`EAI_AGAIN`||e===`UND_ERR_SOCKET`||e===`UND_ERR_CONNECT_TIMEOUT`}return!1}function delay(e,t){return e<=0?Promise.resolve():new Promise((n,r)=>{let i=setTimeout(()=>{t?.removeEventListener?.(`abort`,onAbort),n()},e),onAbort=()=>{clearTimeout(i),r(signalAbortError(t))};if(t?.aborted){clearTimeout(i),r(signalAbortError(t));return}t?.addEventListener?.(`abort`,onAbort,{once:!0})})}function signalAbortError(e){let t=e&&`reason`in e?e.reason:void 0;if(t instanceof Error)return t;let n=Error(`Aborted`);return n.name=`AbortError`,n}async function verifyIntegrity(e,t){let n=t.trim().split(/\s+/);for(let t of n){let n=t.indexOf(`-`);if(n<0)continue;let r=t.slice(0,n).toLowerCase(),i=t.slice(n+1),a=globalThis.crypto?.subtle;if(!a)throw Error(`@gjsify/npm-registry: globalThis.crypto.subtle is missing`);let o=subriToWebCryptoAlgo(r);if(!o)continue;let s=await a.digest(o,dataAsArrayBuffer(e));if(bytesToBase64(new Uint8Array(s))===i)return!0}return!1}function subriToWebCryptoAlgo(e){switch(e){case`sha1`:return`SHA-1`;case`sha256`:return`SHA-256`;case`sha384`:return`SHA-384`;case`sha512`:return`SHA-512`;default:return null}}function dataAsArrayBuffer(e){if(e.byteOffset===0&&e.byteLength===e.buffer.byteLength)return e.buffer;let t=new Uint8Array(e.byteLength);return t.set(e),t.buffer}function bytesToBase64(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t)}function parseNpmrc(t){let n={registry:e,scopes:{},authTokens:{},basicAuth:{}},r=t.split(/\r?\n/),i={};for(let e of r){let t=e.replace(/^\s+|\s+$/g,``);if(!t||t.startsWith(`#`)||t.startsWith(`;`))continue;let r=t.indexOf(`=`);if(r<0)continue;let a=t.slice(0,r).trim(),o=expandEnv(stripQuotes(t.slice(r+1).trim()));if(a===`registry`){n.registry=ensureTrailingSlash(o);continue}let s=a.match(/^(@[^:]+):registry$/);if(s){n.scopes[s[1]]=ensureTrailingSlash(o);continue}let c=a.match(/^\/\/(.+):_authToken$/);if(c){n.authTokens[normalizeAuthHost(c[1])]=o;continue}let l=a.match(/^\/\/(.+):username$/);if(l){(i[normalizeAuthHost(l[1])]??={}).user=o;continue}let u=a.match(/^\/\/(.+):_password$/);if(u){let e=base64Decode(o);(i[normalizeAuthHost(u[1])]??={}).pass=e;continue}}for(let[e,t]of Object.entries(i))t.user&&t.pass!==void 0&&(n.basicAuth[e]={username:t.user,password:t.pass});return n}function buildHeaders(e,t){let n={"user-agent":`gjsify-install/0.3.7`,"accept-encoding":t.acceptEncoding??`identity`};if(t.npmrc){let r=resolveAuthForUrl(e,t.npmrc);r&&(n.authorization=r)}if(t.headers)for(let[e,r]of Object.entries(t.headers))n[e.toLowerCase()]=r;return n}function resolveAuthForUrl(e,t){let n=pathPrefixes(new URL(e));for(let e of n){let n=t.authTokens[e];if(n)return`Bearer ${n}`;let r=t.basicAuth[e];if(r)return`Basic ${btoa(`${r.username}:${r.password}`)}`}return null}function pathPrefixes(e){let t=e.pathname.split(`/`).filter(Boolean),n=[];for(let r=t.length;r>=0;r--){let i=t.slice(0,r).join(`/`);n.push(i?`//${e.host}/${i}`:`//${e.host}`)}return n}function normalizeAuthHost(e){return`//${e.replace(/\/+$/,``)}`}function ensureTrailingSlash(e){return e.endsWith(`/`)?e:e+`/`}function stripQuotes(e){return e.startsWith(`"`)&&e.endsWith(`"`)||e.startsWith(`'`)&&e.endsWith(`'`)?e.slice(1,-1):e}function expandEnv(e){return e.replace(/\$\{([A-Z0-9_]+)\}/gi,(e,t)=>globalThis.process?.env?.[t]??``)}function base64Decode(e){return atob(e)}async function whoami(e,t){let n=`${ensureTrailingSlash(e)}-/whoami`,r=buildHeaders(n,{npmrc:t});r.accept=`application/json`;let i=globalThis.fetch;if(!i)throw Error(`@gjsify/npm-registry: globalThis.fetch is missing`);let a=await i(n,{method:`GET`,headers:r});if(!a.ok)throw Error(`whoami GET ${n} -> ${a.status} ${a.statusText}`);let o=await a.json();if(o&&typeof o==`object`&&`username`in o){let e=o.username;if(typeof e==`string`&&e.length>0)return{username:e}}return{}}var PackageNotFoundError=class extends Error{name;url;constructor(e,t){super(`Package not found in registry: ${e} (${t})`),this.name=e,this.url=t,this.name=`PackageNotFoundError`}},IntegrityError=class extends Error{url;integrity;constructor(e,t){super(`Tarball integrity mismatch for ${e} (expected ${t})`),this.url=e,this.integrity=t,this.name=`IntegrityError`}},RegistryTimeoutError=class extends Error{url;timeoutMs;attempts;constructor(e,t,n){let r=Math.round(t/100)/10,i=Math.round(t*n/100)/10;super(`@gjsify/npm-registry: GET ${e} timed out after ${r}s × ${n} attempt(s) (total ~${i}s). This usually means the registry CDN is slow or unreachable.`),this.url=e,this.timeoutMs=t,this.attempts=n,this.name=`RegistryTimeoutError`}};export{e as DEFAULT_REGISTRY,IntegrityError,PackageNotFoundError,RegistryTimeoutError,assertPackument,buildHeaders,fetchPackument,fetchPackumentConditional,fetchTarball,fetchWithRetry,packumentUrl,parseNpmrc,registryFor,resolveAuthForUrl,verifyIntegrity,whoami};
@@ -1 +1 @@
1
- {"fileNames":["../../../../node_modules/@gjsify/tsc/lib/lib.es5.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2015.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2016.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2017.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2018.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2019.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2020.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2021.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2022.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2023.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2024.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2025.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.esnext.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.dom.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2015.core.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2015.collection.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2015.generator.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2015.iterable.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2015.promise.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2015.proxy.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2015.reflect.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2015.symbol.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2016.array.include.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2016.intl.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2017.arraybuffer.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2017.date.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2017.object.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2017.string.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2017.intl.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2018.intl.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2018.promise.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2018.regexp.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2019.array.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2019.object.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2019.string.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2019.symbol.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2019.intl.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2020.bigint.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2020.date.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2020.promise.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2020.string.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2020.intl.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2020.number.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2021.promise.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2021.string.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2021.weakref.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2021.intl.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2022.array.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2022.error.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2022.intl.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2022.object.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2022.string.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2022.regexp.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2023.array.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2023.collection.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2023.intl.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2024.arraybuffer.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2024.collection.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2024.object.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2024.promise.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2024.regexp.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2024.sharedmemory.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2024.string.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2025.collection.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2025.float16.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2025.intl.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2025.iterator.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2025.promise.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2025.regexp.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.esnext.array.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.esnext.collection.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.esnext.date.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.esnext.decorators.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.esnext.disposable.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.esnext.error.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.esnext.intl.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.esnext.sharedmemory.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.esnext.temporal.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.esnext.typedarrays.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.decorators.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.decorators.legacy.d.ts","../src/index.ts"],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":99},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":99},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":99},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":99},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":99},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":99},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":99},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":99},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":99},{"version":"1e9332c23e9a907175e0ffc6a49e236f97b48838cc8aec9ce7e4cec21e544b65","impliedFormat":99},{"version":"3753fbc1113dc511214802a2342280a8b284ab9094f6420e7aa171e868679f91","impliedFormat":99},{"version":"999ca32883495a866aa5737fe1babc764a469e4cde6ee6b136a4b9ae68853e4b","impliedFormat":99},{"version":"17f13ecb98cbc39243f2eee1f16d45cd8ec4706b03ee314f1915f1a8b42f6984","impliedFormat":99},{"version":"d6b1eba8496bdd0eed6fc8a685768fe01b2da4a0388b5fe7df558290bffcf32f","affectsGlobalScope":true,"impliedFormat":99},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":99},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":99},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":99},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":99},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":99},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":99},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":99},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":99},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":99},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":99},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":99},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":99},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":99},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":99},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":99},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":99},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":99},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":99},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":99},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":99},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":99},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":99},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":99},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":99},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":99},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":99},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":99},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":99},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":99},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":99},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":99},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":99},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":99},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":99},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":99},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":99},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":99},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":99},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":99},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":99},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":99},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":99},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":99},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":99},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":99},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":99},{"version":"0bd714129fca875f7d4c477a1a392200b0bcd13fb2e80928cd334b63830ea047","affectsGlobalScope":true,"impliedFormat":99},{"version":"e2c9037ae6cd2c52d80ceef0b3c5ffdb488627d71529cf4f63776daf11161c9a","affectsGlobalScope":true,"impliedFormat":99},{"version":"135d5cf4d345f59f1a9caadfafcd858d3d9cc68290db616cc85797224448cccc","affectsGlobalScope":true,"impliedFormat":99},{"version":"bc238c3f81c2984751932b6aab223cd5b830e0ac6cad76389e5e9d2ffc03287d","affectsGlobalScope":true,"impliedFormat":99},{"version":"4a07f9b76d361f572620927e5735b77d6d2101c23cdd94383eb5b706e7b36357","affectsGlobalScope":true,"impliedFormat":99},{"version":"7c4e8dc6ab834cc6baa0227e030606d29e3e8449a9f67cdf5605ea5493c4db29","affectsGlobalScope":true,"impliedFormat":99},{"version":"de7ba0fd02e06cd9a5bd4ab441ed0e122735786e67dde1e849cced1cd8b46b78","affectsGlobalScope":true,"impliedFormat":99},{"version":"6148e4e88d720a06855071c3db02069434142a8332cf9c182cda551adedf3156","affectsGlobalScope":true,"impliedFormat":99},{"version":"d63dba625b108316a40c95a4425f8d4294e0deeccfd6c7e59d819efa19e23409","affectsGlobalScope":true,"impliedFormat":99},{"version":"0568d6befee03dd435bed4fc25c4e46865b24bdcb8c563fdc21f580a2c301904","affectsGlobalScope":true,"impliedFormat":99},{"version":"30d62269b05b584741f19a5369852d5d34895aa2ac4fd948956f886d15f9cc0d","affectsGlobalScope":true,"impliedFormat":99},{"version":"f128dae7c44d8f35ee42e0a437000a57c9f06cc04f8b4fb42eebf44954d53dc8","affectsGlobalScope":true,"impliedFormat":99},{"version":"ffbe6d7b295306b2ba88030f65b74c107d8d99bdcf596ea99c62a02f606108b0","affectsGlobalScope":true,"impliedFormat":99},{"version":"996fb27b15277369c68a4ba46ed138b4e9e839a02fb4ec756f7997629242fd9f","affectsGlobalScope":true,"impliedFormat":99},{"version":"79b712591b270d4778c89706ca2cfc56ddb8c3f895840e477388f1710dc5eda9","affectsGlobalScope":true,"impliedFormat":99},{"version":"20884846cef428b992b9bd032e70a4ef88e349263f63aeddf04dda837a7dba26","affectsGlobalScope":true,"impliedFormat":99},{"version":"5fcab789c73a97cd43828ee3cc94a61264cf24d4c44472ce64ced0e0f148bdb2","affectsGlobalScope":true,"impliedFormat":99},{"version":"db59a81f070c1880ad645b2c0275022baa6a0c4f0acdc58d29d349c6efcf0903","affectsGlobalScope":true,"impliedFormat":99},{"version":"673294292640f5722b700e7d814e17aaf7d93f83a48a2c9b38f33cbc940ad8b0","affectsGlobalScope":true,"impliedFormat":99},{"version":"d786b48f934cbca483b3c6d0a798cb43bbb4ada283e76fb22c28e53ae05b9e69","affectsGlobalScope":true,"impliedFormat":99},{"version":"1ecb8e347cb6b2a8927c09b86263663289418df375f5e68e11a0ae683776978f","affectsGlobalScope":true,"impliedFormat":99},{"version":"142efd4ce210576f777dc34df121777be89eda476942d6d6663b03dcb53be3ff","affectsGlobalScope":true,"impliedFormat":99},{"version":"379bc41580c2d774f82e828c70308f24a005b490c25ba34d679d84bcf05c3d9d","affectsGlobalScope":true,"impliedFormat":99},{"version":"ed484fb2aa8a1a23d0277056ec3336e0a0b52f9b8d6a961f338a642faf43235d","affectsGlobalScope":true,"impliedFormat":99},{"version":"4ffedae1d1c2d53fdbca1c96d3c7dda544281f7d262f99b6880634f8fd8d9820","affectsGlobalScope":true,"impliedFormat":99},{"version":"83a730b125d477dd264df8ba479afab27a3dae7152b005c214ab94dc7ee44fd3","affectsGlobalScope":true,"impliedFormat":99},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":99},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":99},{"version":"5a60f4e5344528bb3d2b90eb3b176ae1a2c41dc3c2b72b917ae6df792d944157","signature":"09f04bf9aad2cd7360a9a4fc047f40ceaacd67eb8f2b1a282b49e3af813c81dc"}],"root":[89],"options":{"allowImportingTsExtensions":false,"composite":true,"declaration":true,"declarationDir":"./types","experimentalDecorators":true,"module":99,"outDir":"./esm","rootDir":"../src","skipLibCheck":true,"strict":true,"target":99},"latestChangedDtsFile":"./types/index.d.ts","version":"6.0.3"}
1
+ {"fileNames":["../../../../node_modules/@gjsify/tsc/lib/lib.es5.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2015.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2016.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2017.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2018.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2019.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2020.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2021.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2022.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2023.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2024.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2025.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.esnext.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.dom.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2015.core.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2015.collection.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2015.generator.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2015.iterable.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2015.promise.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2015.proxy.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2015.reflect.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2015.symbol.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2016.array.include.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2016.intl.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2017.arraybuffer.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2017.date.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2017.object.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2017.string.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2017.intl.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2018.intl.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2018.promise.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2018.regexp.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2019.array.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2019.object.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2019.string.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2019.symbol.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2019.intl.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2020.bigint.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2020.date.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2020.promise.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2020.string.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2020.intl.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2020.number.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2021.promise.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2021.string.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2021.weakref.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2021.intl.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2022.array.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2022.error.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2022.intl.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2022.object.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2022.string.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2022.regexp.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2023.array.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2023.collection.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2023.intl.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2024.arraybuffer.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2024.collection.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2024.object.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2024.promise.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2024.regexp.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2024.sharedmemory.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2024.string.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2025.collection.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2025.float16.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2025.intl.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2025.iterator.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2025.promise.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.es2025.regexp.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.esnext.array.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.esnext.collection.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.esnext.date.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.esnext.decorators.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.esnext.disposable.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.esnext.error.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.esnext.intl.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.esnext.sharedmemory.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.esnext.temporal.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.esnext.typedarrays.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.decorators.d.ts","../../../../node_modules/@gjsify/tsc/lib/lib.decorators.legacy.d.ts","../src/index.ts"],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":99},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":99},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":99},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":99},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":99},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":99},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":99},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":99},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":99},{"version":"1e9332c23e9a907175e0ffc6a49e236f97b48838cc8aec9ce7e4cec21e544b65","impliedFormat":99},{"version":"3753fbc1113dc511214802a2342280a8b284ab9094f6420e7aa171e868679f91","impliedFormat":99},{"version":"999ca32883495a866aa5737fe1babc764a469e4cde6ee6b136a4b9ae68853e4b","impliedFormat":99},{"version":"17f13ecb98cbc39243f2eee1f16d45cd8ec4706b03ee314f1915f1a8b42f6984","impliedFormat":99},{"version":"d6b1eba8496bdd0eed6fc8a685768fe01b2da4a0388b5fe7df558290bffcf32f","affectsGlobalScope":true,"impliedFormat":99},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":99},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":99},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":99},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":99},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":99},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":99},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":99},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":99},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":99},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":99},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":99},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":99},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":99},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":99},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":99},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":99},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":99},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":99},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":99},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":99},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":99},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":99},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":99},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":99},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":99},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":99},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":99},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":99},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":99},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":99},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":99},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":99},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":99},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":99},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":99},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":99},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":99},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":99},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":99},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":99},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":99},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":99},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":99},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":99},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":99},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":99},{"version":"0bd714129fca875f7d4c477a1a392200b0bcd13fb2e80928cd334b63830ea047","affectsGlobalScope":true,"impliedFormat":99},{"version":"e2c9037ae6cd2c52d80ceef0b3c5ffdb488627d71529cf4f63776daf11161c9a","affectsGlobalScope":true,"impliedFormat":99},{"version":"135d5cf4d345f59f1a9caadfafcd858d3d9cc68290db616cc85797224448cccc","affectsGlobalScope":true,"impliedFormat":99},{"version":"bc238c3f81c2984751932b6aab223cd5b830e0ac6cad76389e5e9d2ffc03287d","affectsGlobalScope":true,"impliedFormat":99},{"version":"4a07f9b76d361f572620927e5735b77d6d2101c23cdd94383eb5b706e7b36357","affectsGlobalScope":true,"impliedFormat":99},{"version":"7c4e8dc6ab834cc6baa0227e030606d29e3e8449a9f67cdf5605ea5493c4db29","affectsGlobalScope":true,"impliedFormat":99},{"version":"de7ba0fd02e06cd9a5bd4ab441ed0e122735786e67dde1e849cced1cd8b46b78","affectsGlobalScope":true,"impliedFormat":99},{"version":"6148e4e88d720a06855071c3db02069434142a8332cf9c182cda551adedf3156","affectsGlobalScope":true,"impliedFormat":99},{"version":"d63dba625b108316a40c95a4425f8d4294e0deeccfd6c7e59d819efa19e23409","affectsGlobalScope":true,"impliedFormat":99},{"version":"0568d6befee03dd435bed4fc25c4e46865b24bdcb8c563fdc21f580a2c301904","affectsGlobalScope":true,"impliedFormat":99},{"version":"30d62269b05b584741f19a5369852d5d34895aa2ac4fd948956f886d15f9cc0d","affectsGlobalScope":true,"impliedFormat":99},{"version":"f128dae7c44d8f35ee42e0a437000a57c9f06cc04f8b4fb42eebf44954d53dc8","affectsGlobalScope":true,"impliedFormat":99},{"version":"ffbe6d7b295306b2ba88030f65b74c107d8d99bdcf596ea99c62a02f606108b0","affectsGlobalScope":true,"impliedFormat":99},{"version":"996fb27b15277369c68a4ba46ed138b4e9e839a02fb4ec756f7997629242fd9f","affectsGlobalScope":true,"impliedFormat":99},{"version":"79b712591b270d4778c89706ca2cfc56ddb8c3f895840e477388f1710dc5eda9","affectsGlobalScope":true,"impliedFormat":99},{"version":"20884846cef428b992b9bd032e70a4ef88e349263f63aeddf04dda837a7dba26","affectsGlobalScope":true,"impliedFormat":99},{"version":"5fcab789c73a97cd43828ee3cc94a61264cf24d4c44472ce64ced0e0f148bdb2","affectsGlobalScope":true,"impliedFormat":99},{"version":"db59a81f070c1880ad645b2c0275022baa6a0c4f0acdc58d29d349c6efcf0903","affectsGlobalScope":true,"impliedFormat":99},{"version":"673294292640f5722b700e7d814e17aaf7d93f83a48a2c9b38f33cbc940ad8b0","affectsGlobalScope":true,"impliedFormat":99},{"version":"d786b48f934cbca483b3c6d0a798cb43bbb4ada283e76fb22c28e53ae05b9e69","affectsGlobalScope":true,"impliedFormat":99},{"version":"1ecb8e347cb6b2a8927c09b86263663289418df375f5e68e11a0ae683776978f","affectsGlobalScope":true,"impliedFormat":99},{"version":"142efd4ce210576f777dc34df121777be89eda476942d6d6663b03dcb53be3ff","affectsGlobalScope":true,"impliedFormat":99},{"version":"379bc41580c2d774f82e828c70308f24a005b490c25ba34d679d84bcf05c3d9d","affectsGlobalScope":true,"impliedFormat":99},{"version":"ed484fb2aa8a1a23d0277056ec3336e0a0b52f9b8d6a961f338a642faf43235d","affectsGlobalScope":true,"impliedFormat":99},{"version":"4ffedae1d1c2d53fdbca1c96d3c7dda544281f7d262f99b6880634f8fd8d9820","affectsGlobalScope":true,"impliedFormat":99},{"version":"83a730b125d477dd264df8ba479afab27a3dae7152b005c214ab94dc7ee44fd3","affectsGlobalScope":true,"impliedFormat":99},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":99},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":99},{"version":"4d9b382b6c8e80a38f77621f702c844db622365eff1de258142426d61b641cfd","signature":"8dbc0cc4ad2f02d53b846c2055925a22fc861a231578a1951230aa95640bd225"}],"root":[89],"options":{"allowImportingTsExtensions":false,"composite":true,"declaration":true,"declarationDir":"./types","experimentalDecorators":true,"module":99,"outDir":"./esm","rootDir":"../src","skipLibCheck":true,"strict":true,"target":99},"latestChangedDtsFile":"./types/index.d.ts","version":"6.0.3"}
@@ -82,6 +82,16 @@ export interface FetchOptions {
82
82
  error: unknown;
83
83
  delayMs: number;
84
84
  }) => void;
85
+ /**
86
+ * Treat HTTP 404 as a transient (retryable) failure rather than a hard
87
+ * "not found". Default false. Opt in for TARBALL fetches: a tarball URL
88
+ * already came from a successfully-resolved packument, so a 404 on the
89
+ * `.tgz` is a registry/CDN hiccup under load (observed on heavy parallel
90
+ * `@girs/*` installs — npm itself fails the same way) rather than a
91
+ * genuinely-missing artifact. Packument 404s must stay permanent (the
92
+ * package really doesn't exist), so leave this false there.
93
+ */
94
+ retryNotFound?: boolean;
85
95
  }
86
96
  /** Strict-validate a packument shape. Throws on schema mismatch. */
87
97
  export declare function assertPackument(name: string, body: unknown): asserts body is Packument;
@@ -141,7 +151,9 @@ export declare function fetchTarball(url: string, opts?: FetchOptions & {
141
151
  *
142
152
  * Does NOT retry on:
143
153
  * - 4xx other than 408/425/429 (semantic errors — 404 surfaces via the
144
- * caller's PackageNotFoundError path)
154
+ * caller's PackageNotFoundError path) UNLESS `opts.retryNotFound` is set,
155
+ * which `fetchTarball` enables so a transient CDN 404 on a `.tgz` (whose
156
+ * URL already came from a resolved packument) is retried like any blip
145
157
  * - AbortError from the CALLER's signal (`opts.signal` — caller wants out)
146
158
  * - any other thrown shape that doesn't look transient
147
159
  *
@@ -158,7 +170,7 @@ export declare function fetchWithRetry(url: string, init: {
158
170
  headers: Record<string, string>;
159
171
  signal?: AbortSignal;
160
172
  compress?: boolean;
161
- }, opts: Pick<FetchOptions, 'fetch' | 'retries' | 'retryDelayMs' | 'timeoutMs' | 'onRetry'>): Promise<Response>;
173
+ }, opts: Pick<FetchOptions, 'fetch' | 'retries' | 'retryDelayMs' | 'timeoutMs' | 'onRetry' | 'retryNotFound'>): Promise<Response>;
162
174
  /**
163
175
  * Verify an SRI string (e.g. `sha512-base64==`) against bytes.
164
176
  * Multiple hashes (space-separated) accepted; any match passes.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gjsify/npm-registry",
3
- "version": "0.4.42",
3
+ "version": "0.4.44",
4
4
  "description": "npm registry client for the gjsify install backend — packuments, tarballs, .npmrc auth (Node + GJS)",
5
5
  "type": "module",
6
6
  "module": "lib/esm/index.js",
@@ -37,8 +37,8 @@
37
37
  ],
38
38
  "license": "MIT",
39
39
  "devDependencies": {
40
- "@gjsify/cli": "^0.4.42",
41
- "@gjsify/unit": "^0.4.42",
40
+ "@gjsify/cli": "^0.4.44",
41
+ "@gjsify/unit": "^0.4.44",
42
42
  "typescript": "^6.0.3"
43
43
  },
44
44
  "repository": {