@ifc-lite/server-bin 1.21.0 → 1.22.1
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 +4 -0
- package/dist/binary.d.ts.map +1 -1
- package/dist/binary.js +46 -24
- package/dist/binary.js.map +1 -1
- package/dist/checksum-parse.d.ts +8 -0
- package/dist/checksum-parse.d.ts.map +1 -0
- package/dist/checksum-parse.js +32 -0
- package/dist/checksum-parse.js.map +1 -0
- package/dist/checksum.d.ts.map +1 -1
- package/dist/checksum.js +8 -35
- package/dist/checksum.js.map +1 -1
- package/dist/cli.js +1 -1
- package/dist/postinstall.js +1 -2
- package/dist/postinstall.js.map +1 -1
- package/dist/release-fallback.d.ts +51 -0
- package/dist/release-fallback.d.ts.map +1 -0
- package/dist/release-fallback.js +207 -0
- package/dist/release-fallback.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -89,6 +89,10 @@ IFC_LITE_SKIP_DOWNLOAD=1 npm install @ifc-lite/server-bin
|
|
|
89
89
|
npx @ifc-lite/server-bin download
|
|
90
90
|
```
|
|
91
91
|
|
|
92
|
+
## When a version has no release binaries
|
|
93
|
+
|
|
94
|
+
The binary is downloaded from the GitHub release `v<package version>`. If that release is missing, or has no archive for your platform (every URL returns 404), the downloader uses the newest **older** `vX.Y.Z` release that has your platform's archive and a checksum. It verifies that archive the same way and prints a warning naming both versions. The warning is repeated on every run that uses the fallback binary. To try the exact version again, run `npx @ifc-lite/server-bin download`. A network error, 5xx response or rate limit never triggers the fallback. If `GITHUB_TOKEN` or `GH_TOKEN` is set, the release lookup is authenticated.
|
|
95
|
+
|
|
92
96
|
## Falling back
|
|
93
97
|
|
|
94
98
|
If pre-built binaries don't fit (unsupported platform, locked-down corp environment, custom config), fall back to:
|
package/dist/binary.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binary.d.ts","sourceRoot":"","sources":["../src/binary.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"binary.d.ts","sourceRoot":"","sources":["../src/binary.ts"],"names":[],"mappings":"AAeA,OAAO,EAA2C,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AA8B3F;;GAEG;AACH,wBAAgB,aAAa,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,MAAM,CAGjE;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAwBvD;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAwG3E;;GAEG;AACH,wBAAsB,cAAc,CAAC,UAAU,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAqHnF;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,UAAU,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAKjF;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAsDpE;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI;IAC/B,QAAQ,EAAE,YAAY,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB,CASA"}
|
package/dist/binary.js
CHANGED
|
@@ -13,6 +13,7 @@ import { extract } from 'tar';
|
|
|
13
13
|
import { execFileSync } from 'child_process';
|
|
14
14
|
import { getPlatformInfo, getPlatformDescription } from './platform.js';
|
|
15
15
|
import { verifyArchiveChecksum } from './checksum.js';
|
|
16
|
+
import { fallbackInUseWarning, findFallbackRelease, HttpStatusError, noBinaryMessage, parseVersionSidecar, versionSidecar } from './release-fallback.js';
|
|
16
17
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
17
18
|
// GitHub release URL pattern
|
|
18
19
|
const GITHUB_REPO = 'LTplus-AG/ifc-lite';
|
|
@@ -53,9 +54,13 @@ export async function isBinaryCached() {
|
|
|
53
54
|
return false;
|
|
54
55
|
}
|
|
55
56
|
try {
|
|
56
|
-
const
|
|
57
|
+
const cached = parseVersionSidecar(await readFile(VERSION_FILE, 'utf-8'));
|
|
57
58
|
const currentVersion = await getPackageVersion();
|
|
58
|
-
|
|
59
|
+
if (cached.version !== currentVersion)
|
|
60
|
+
return false;
|
|
61
|
+
if (cached.fallback)
|
|
62
|
+
console.warn(fallbackInUseWarning(currentVersion, cached.fallback));
|
|
63
|
+
return true;
|
|
59
64
|
}
|
|
60
65
|
catch {
|
|
61
66
|
// Legitimately silent: an unreadable version sidecar means "not cached",
|
|
@@ -75,7 +80,7 @@ async function downloadFile(url, destPath, onProgress) {
|
|
|
75
80
|
redirect: 'follow',
|
|
76
81
|
});
|
|
77
82
|
if (!response.ok) {
|
|
78
|
-
throw new
|
|
83
|
+
throw new HttpStatusError(response.status, response.statusText);
|
|
79
84
|
}
|
|
80
85
|
const contentLength = response.headers.get('content-length');
|
|
81
86
|
const total = contentLength ? parseInt(contentLength, 10) : 0;
|
|
@@ -157,15 +162,14 @@ export async function downloadBinary(onProgress) {
|
|
|
157
162
|
const downloadUrl = `${RELEASE_BASE_URL}/v${version}/${platformInfo.archiveName}`;
|
|
158
163
|
const archivePath = join(CACHE_DIR, platformInfo.archiveName);
|
|
159
164
|
const binaryPath = getBinaryPath(platformInfo);
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
unlinkSync(archivePath);
|
|
163
|
-
}
|
|
165
|
+
if (existsSync(archivePath))
|
|
166
|
+
unlinkSync(archivePath); // stale partial download
|
|
164
167
|
// Download archive
|
|
165
168
|
console.log(`Downloading from: ${downloadUrl}`);
|
|
166
169
|
// Track the asset URL that actually succeeded so the checksum sidecar is
|
|
167
170
|
// fetched from the SAME release/asset that produced this archive.
|
|
168
171
|
let resolvedAssetUrl = downloadUrl;
|
|
172
|
+
let fallbackVersion;
|
|
169
173
|
try {
|
|
170
174
|
await downloadFile(downloadUrl, archivePath, onProgress);
|
|
171
175
|
}
|
|
@@ -175,6 +179,10 @@ export async function downloadBinary(onProgress) {
|
|
|
175
179
|
`${RELEASE_BASE_URL}/server-v${version}/${platformInfo.archiveName}`,
|
|
176
180
|
`${RELEASE_BASE_URL}/${version}/${platformInfo.archiveName}`,
|
|
177
181
|
];
|
|
182
|
+
// Only a clean "not found" on every URL means this version has no
|
|
183
|
+
// release; any other failure (network, 5xx) must not silently swap in a
|
|
184
|
+
// different server version.
|
|
185
|
+
let allNotFound = error instanceof HttpStatusError && error.status === 404;
|
|
178
186
|
let downloaded = false;
|
|
179
187
|
for (const altUrl of altUrls) {
|
|
180
188
|
try {
|
|
@@ -184,25 +192,38 @@ export async function downloadBinary(onProgress) {
|
|
|
184
192
|
downloaded = true;
|
|
185
193
|
break;
|
|
186
194
|
}
|
|
187
|
-
catch {
|
|
188
|
-
//
|
|
189
|
-
//
|
|
190
|
-
|
|
191
|
-
// original download failure.
|
|
195
|
+
catch (altError) {
|
|
196
|
+
// Speculative URL shapes: a miss is the expected case. Only whether
|
|
197
|
+
// it was a 404 matters, for the fallback decision below.
|
|
198
|
+
allNotFound &&= altError instanceof HttpStatusError && altError.status === 404;
|
|
192
199
|
continue;
|
|
193
200
|
}
|
|
194
201
|
}
|
|
195
202
|
if (!downloaded) {
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
`
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
203
|
+
const errorText = error instanceof Error ? error.message : String(error);
|
|
204
|
+
const lookup = allNotFound
|
|
205
|
+
? await findFallbackRelease(platformInfo.archiveName, version)
|
|
206
|
+
: { found: null, reason: `the download failed for a reason other than a missing release (${errorText})` };
|
|
207
|
+
if (!lookup.found) {
|
|
208
|
+
throw new Error(noBinaryMessage({
|
|
209
|
+
version, downloadUrl, errorText, reason: lookup.reason, archiveName: platformInfo.archiveName,
|
|
210
|
+
}));
|
|
211
|
+
}
|
|
212
|
+
const fallback = lookup.found;
|
|
213
|
+
console.warn(`Warning: @ifc-lite/server-bin@${version} has no published binary for ${platformInfo.targetTriple} ` +
|
|
214
|
+
`(release v${version} is missing or lacks this platform's archive).\n` +
|
|
215
|
+
`Warning: falling back to the server binary from release v${fallback.version}.`);
|
|
216
|
+
console.log(`Downloading from: ${fallback.assetUrl}`);
|
|
217
|
+
try {
|
|
218
|
+
await downloadFile(fallback.assetUrl, archivePath, onProgress);
|
|
219
|
+
}
|
|
220
|
+
catch (fallbackError) {
|
|
221
|
+
throw new Error(`Release v${version} has no binary, and downloading the fallback from v${fallback.version} failed: ` +
|
|
222
|
+
`${fallbackError instanceof Error ? fallbackError.message : String(fallbackError)}\n` +
|
|
223
|
+
`Fix: npm i @ifc-lite/server-bin@${fallback.version}`);
|
|
224
|
+
}
|
|
225
|
+
resolvedAssetUrl = fallback.assetUrl;
|
|
226
|
+
fallbackVersion = fallback.version;
|
|
206
227
|
}
|
|
207
228
|
}
|
|
208
229
|
// Verify archive integrity before we extract / chmod / execute it. Fails
|
|
@@ -222,8 +243,9 @@ export async function downloadBinary(onProgress) {
|
|
|
222
243
|
throw new Error(`Binary not found after extraction: ${binaryPath}\n` +
|
|
223
244
|
`Archive may have unexpected structure.`);
|
|
224
245
|
}
|
|
225
|
-
//
|
|
226
|
-
|
|
246
|
+
// Keyed on THIS package's version even for a fallback install (reused, not
|
|
247
|
+
// re-resolved every run); the sidecar names the fallback so each run warns.
|
|
248
|
+
await writeFile(VERSION_FILE, versionSidecar(version, fallbackVersion));
|
|
227
249
|
// Clean up archive
|
|
228
250
|
unlinkSync(archivePath);
|
|
229
251
|
console.log(`Binary installed at: ${binaryPath}`);
|
package/dist/binary.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"binary.js","sourceRoot":"","sources":["../src/binary.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"binary.js","sourceRoot":"","sources":["../src/binary.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse an expected SHA-256 hex digest for the given archive file name out of a
|
|
3
|
+
* checksum body. Supports both the single-digest sidecar form ("<hex>" or
|
|
4
|
+
* "<hex> <name>") and the multi-line SHA256SUMS form ("<hex> <name>" per
|
|
5
|
+
* line). Returns the lowercased 64-char hex digest, or null if not found.
|
|
6
|
+
*/
|
|
7
|
+
export declare function parseExpectedSha256(body: string, archiveName: string): string | null;
|
|
8
|
+
//# sourceMappingURL=checksum-parse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checksum-parse.d.ts","sourceRoot":"","sources":["../src/checksum-parse.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAkBpF"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
4
|
+
/**
|
|
5
|
+
* Parse an expected SHA-256 hex digest for the given archive file name out of a
|
|
6
|
+
* checksum body. Supports both the single-digest sidecar form ("<hex>" or
|
|
7
|
+
* "<hex> <name>") and the multi-line SHA256SUMS form ("<hex> <name>" per
|
|
8
|
+
* line). Returns the lowercased 64-char hex digest, or null if not found.
|
|
9
|
+
*/
|
|
10
|
+
export function parseExpectedSha256(body, archiveName) {
|
|
11
|
+
const lines = body.split('\n');
|
|
12
|
+
for (const raw of lines) {
|
|
13
|
+
const line = raw.trim();
|
|
14
|
+
if (!line)
|
|
15
|
+
continue;
|
|
16
|
+
// Each line is "<hex>" or "<hex> <filename>" (filename may have a leading '*').
|
|
17
|
+
const match = line.match(/^([0-9a-fA-F]{64})(?:[ \t]+\*?(.+))?$/);
|
|
18
|
+
if (!match)
|
|
19
|
+
continue;
|
|
20
|
+
const [, digest, name] = match;
|
|
21
|
+
// A bare single-digest sidecar (no filename) always applies to this asset.
|
|
22
|
+
if (!name)
|
|
23
|
+
return digest.toLowerCase();
|
|
24
|
+
// SHA256SUMS lists many files; only accept the line for this archive.
|
|
25
|
+
const fileName = name.trim();
|
|
26
|
+
if (fileName === archiveName || fileName.endsWith(`/${archiveName}`)) {
|
|
27
|
+
return digest.toLowerCase();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=checksum-parse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checksum-parse.js","sourceRoot":"","sources":["../src/checksum-parse.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,sEAAsE;AACtE,4DAA4D;AAE5D;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,WAAmB;IACnE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,iFAAiF;QACjF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAClE,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;QAC/B,2EAA2E;QAC3E,IAAI,CAAC,IAAI;YAAE,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC;QACvC,sEAAsE;QACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,QAAQ,KAAK,WAAW,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,WAAW,EAAE,CAAC,EAAE,CAAC;YACrE,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/checksum.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checksum.d.ts","sourceRoot":"","sources":["../src/checksum.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"checksum.d.ts","sourceRoot":"","sources":["../src/checksum.ts"],"names":[],"mappings":"AA0EA;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAmCf"}
|
package/dist/checksum.js
CHANGED
|
@@ -11,17 +11,18 @@
|
|
|
11
11
|
* checksum fail closed: the artifact is unlinked and an error thrown.
|
|
12
12
|
*
|
|
13
13
|
* Failing closed on a missing sidecar cannot break a supported install:
|
|
14
|
-
* binary.ts derives the release tag from this package's own version,
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* sidecar per archive (.github/workflows/server-binaries.yml, "Create
|
|
14
|
+
* binary.ts derives the release tag from this package's own version, and
|
|
15
|
+
* every release cut at or after the version that ships this code publishes
|
|
16
|
+
* one sidecar per archive (.github/workflows/server-binaries.yml, "Create
|
|
18
17
|
* Checksum Sidecar" - enforced by scripts/check-server-bin-targets.mjs).
|
|
19
|
-
*
|
|
20
|
-
*
|
|
18
|
+
* When that release is missing, binary.ts falls back to an older release
|
|
19
|
+
* (release-fallback.ts), and only to one whose asset list carries a checksum,
|
|
20
|
+
* which is then verified here exactly like the primary download.
|
|
21
21
|
*/
|
|
22
22
|
import { existsSync, unlinkSync, createReadStream } from 'fs';
|
|
23
23
|
import { pipeline } from 'stream/promises';
|
|
24
24
|
import { createHash } from 'crypto';
|
|
25
|
+
import { parseExpectedSha256 } from './checksum-parse.js';
|
|
25
26
|
/**
|
|
26
27
|
* Compute the SHA-256 of a file, streamed so large archives are not buffered
|
|
27
28
|
* entirely in memory.
|
|
@@ -31,34 +32,6 @@ async function computeFileSha256(filePath) {
|
|
|
31
32
|
await pipeline(createReadStream(filePath), hash);
|
|
32
33
|
return hash.digest('hex');
|
|
33
34
|
}
|
|
34
|
-
/**
|
|
35
|
-
* Parse an expected SHA-256 hex digest for the given archive file name out of a
|
|
36
|
-
* checksum body. Supports both the single-digest sidecar form ("<hex>" or
|
|
37
|
-
* "<hex> <name>") and the multi-line SHA256SUMS form ("<hex> <name>" per
|
|
38
|
-
* line). Returns the lowercased 64-char hex digest, or null if not found.
|
|
39
|
-
*/
|
|
40
|
-
function parseExpectedSha256(body, archiveName) {
|
|
41
|
-
const lines = body.split('\n');
|
|
42
|
-
for (const raw of lines) {
|
|
43
|
-
const line = raw.trim();
|
|
44
|
-
if (!line)
|
|
45
|
-
continue;
|
|
46
|
-
// Each line is "<hex>" or "<hex> <filename>" (filename may have a leading '*').
|
|
47
|
-
const match = line.match(/^([0-9a-fA-F]{64})(?:[ \t]+\*?(.+))?$/);
|
|
48
|
-
if (!match)
|
|
49
|
-
continue;
|
|
50
|
-
const [, digest, name] = match;
|
|
51
|
-
// A bare single-digest sidecar (no filename) always applies to this asset.
|
|
52
|
-
if (!name)
|
|
53
|
-
return digest.toLowerCase();
|
|
54
|
-
// SHA256SUMS lists many files; only accept the line for this archive.
|
|
55
|
-
const fileName = name.trim();
|
|
56
|
-
if (fileName === archiveName || fileName.endsWith(`/${archiveName}`)) {
|
|
57
|
-
return digest.toLowerCase();
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
return null;
|
|
61
|
-
}
|
|
62
35
|
/**
|
|
63
36
|
* Fetch the expected SHA-256 for the resolved asset from the SAME release.
|
|
64
37
|
* Tries the per-asset sidecar ("<assetUrl>.sha256") first, then a release-wide
|
|
@@ -111,7 +84,7 @@ export async function verifyArchiveChecksum(archivePath, assetUrl, archiveName)
|
|
|
111
84
|
` 2. A network problem blocked the checksum fetch\n` +
|
|
112
85
|
` 3. The release is incomplete - report at https://github.com/LTplus-AG/ifc-lite/issues\n` +
|
|
113
86
|
`Alternatives:\n` +
|
|
114
|
-
` -
|
|
87
|
+
` - Pin a version whose release carries verified binaries: npm i @ifc-lite/server-bin@X.Y.Z\n` +
|
|
115
88
|
` - Build from source: cargo build --release -p ifc-lite-server`);
|
|
116
89
|
}
|
|
117
90
|
const actual = await computeFileSha256(archivePath);
|
package/dist/checksum.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checksum.js","sourceRoot":"","sources":["../src/checksum.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,sEAAsE;AACtE,4DAA4D;AAE5D;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,IAAI,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"checksum.js","sourceRoot":"","sources":["../src/checksum.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -57,7 +57,7 @@ Documentation:
|
|
|
57
57
|
https://github.com/LTplus-AG/ifc-lite
|
|
58
58
|
|
|
59
59
|
Alternatives:
|
|
60
|
-
-
|
|
60
|
+
- Another version: npm i @ifc-lite/server-bin@X.Y.Z (one whose release has binaries)
|
|
61
61
|
- From source: cargo run --release -p ifc-lite-server
|
|
62
62
|
`;
|
|
63
63
|
async function main() {
|
package/dist/postinstall.js
CHANGED
|
@@ -37,8 +37,7 @@ async function main() {
|
|
|
37
37
|
// Don't fail installation, just warn
|
|
38
38
|
console.warn(`\n[ifc-lite-server] Warning: Failed to download binary.\n` +
|
|
39
39
|
`Error: ${error instanceof Error ? error.message : String(error)}\n` +
|
|
40
|
-
`You can download manually later with: npx @ifc-lite/server-bin download
|
|
41
|
-
`Or use Docker: npx create-ifc-lite my-app --template server`);
|
|
40
|
+
`You can download manually later with: npx @ifc-lite/server-bin download`);
|
|
42
41
|
}
|
|
43
42
|
}
|
|
44
43
|
main();
|
package/dist/postinstall.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postinstall.js","sourceRoot":"","sources":["../src/postinstall.ts"],"names":[],"mappings":";AAEA,sEAAsE;AACtE,sEAAsE;AACtE,4DAA4D;AAE5D;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAExE,KAAK,UAAU,IAAI;IACjB,wCAAwC;IACxC,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAC;QAC1F,OAAO;IACT,CAAC;IAED,yBAAyB;IACzB,IAAI,MAAM,cAAc,EAAE,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;QAC1E,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,4CAA4C,sBAAsB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAEnG,MAAM,cAAc,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE;YACzC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACd,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;gBACvD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,OAAO,GAAG,CAAC,CAAC;YACvE,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;IACrE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,qCAAqC;QACrC,OAAO,CAAC,IAAI,CACV,2DAA2D;YAC3D,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI;YACpE,
|
|
1
|
+
{"version":3,"file":"postinstall.js","sourceRoot":"","sources":["../src/postinstall.ts"],"names":[],"mappings":";AAEA,sEAAsE;AACtE,sEAAsE;AACtE,4DAA4D;AAE5D;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAExE,KAAK,UAAU,IAAI;IACjB,wCAAwC;IACxC,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAC;QAC1F,OAAO;IACT,CAAC;IAED,yBAAyB;IACzB,IAAI,MAAM,cAAc,EAAE,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;QAC1E,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,4CAA4C,sBAAsB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAEnG,MAAM,cAAc,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE;YACzC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACd,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;gBACvD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,OAAO,GAAG,CAAC,CAAC;YACvE,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;IACrE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,qCAAqC;QACrC,OAAO,CAAC,IAAI,CACV,2DAA2D;YAC3D,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI;YACpE,yEAAyE,CAC1E,CAAC;IACJ,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/** A download that failed with an HTTP status (as opposed to a network error). */
|
|
2
|
+
export declare class HttpStatusError extends Error {
|
|
3
|
+
readonly status: number;
|
|
4
|
+
constructor(status: number, statusText: string);
|
|
5
|
+
}
|
|
6
|
+
export interface FallbackRelease {
|
|
7
|
+
/** Semver of the release, without the leading `v`. */
|
|
8
|
+
version: string;
|
|
9
|
+
/** Browser download URL of this platform's archive in that release. */
|
|
10
|
+
assetUrl: string;
|
|
11
|
+
}
|
|
12
|
+
export type FallbackLookup = {
|
|
13
|
+
found: FallbackRelease;
|
|
14
|
+
} | {
|
|
15
|
+
found: null;
|
|
16
|
+
reason: string;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Find the newest release OLDER than `requestedVersion` that carries
|
|
20
|
+
* `archiveName` plus its checksum. Never throws: API, rate-limit and network
|
|
21
|
+
* failures come back as `{ found: null, reason }` so the caller can put them
|
|
22
|
+
* in its error message.
|
|
23
|
+
*/
|
|
24
|
+
export declare function findFallbackRelease(archiveName: string, requestedVersion: string): Promise<FallbackLookup>;
|
|
25
|
+
/**
|
|
26
|
+
* The version sidecar (`.cache/version.txt`). Its first line is the package
|
|
27
|
+
* version the cache is keyed on; a fallback install adds a second line naming
|
|
28
|
+
* the release that actually supplied the binary, so every later run can say so
|
|
29
|
+
* instead of the substitution being visible only in a (usually hidden)
|
|
30
|
+
* postinstall log.
|
|
31
|
+
*/
|
|
32
|
+
export declare function versionSidecar(version: string, fallbackVersion?: string): string;
|
|
33
|
+
export declare function parseVersionSidecar(text: string): {
|
|
34
|
+
version: string;
|
|
35
|
+
fallback: string | null;
|
|
36
|
+
};
|
|
37
|
+
/** The warning printed on every run that reuses a fallback binary. */
|
|
38
|
+
export declare function fallbackInUseWarning(version: string, fallbackVersion: string): string;
|
|
39
|
+
/**
|
|
40
|
+
* The error text for "no binary for this version and no usable fallback".
|
|
41
|
+
* It names the concrete fix (pin a version whose release has binaries)
|
|
42
|
+
* rather than an alternative install route.
|
|
43
|
+
*/
|
|
44
|
+
export declare function noBinaryMessage(details: {
|
|
45
|
+
version: string;
|
|
46
|
+
downloadUrl: string;
|
|
47
|
+
errorText: string;
|
|
48
|
+
reason: string;
|
|
49
|
+
archiveName: string;
|
|
50
|
+
}): string;
|
|
51
|
+
//# sourceMappingURL=release-fallback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-fallback.d.ts","sourceRoot":"","sources":["../src/release-fallback.ts"],"names":[],"mappings":"AA+BA,kFAAkF;AAClF,qBAAa,eAAgB,SAAQ,KAAK;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;CAIxD;AAED,MAAM,WAAW,eAAe;IAC9B,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,KAAK,EAAE,eAAe,CAAA;CAAE,GAC1B;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AA0EpC;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,cAAc,CAAC,CAiEzB;AAiBD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhF;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAI9F;AAED,sEAAsE;AACtE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,CAMrF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,MAAM,CAWT"}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
4
|
+
/**
|
|
5
|
+
* Fallback release resolution for when this package version's own release
|
|
6
|
+
* carries no archive for the current platform (#5525).
|
|
7
|
+
*
|
|
8
|
+
* binary.ts derives the release tag from the package version, so a version
|
|
9
|
+
* that reaches npm without a matching `v<version>` release (1.20.0 and 1.21.0
|
|
10
|
+
* both did) 404s on every platform. Instead of failing, look up the newest
|
|
11
|
+
* OLDER `vX.Y.Z` release that does carry this platform's archive, via the
|
|
12
|
+
* unauthenticated GitHub releases API. The caller verifies the fallback's
|
|
13
|
+
* checksum exactly as it does the primary download.
|
|
14
|
+
*/
|
|
15
|
+
import { parseExpectedSha256 } from './checksum-parse.js';
|
|
16
|
+
const GITHUB_REPO = 'LTplus-AG/ifc-lite';
|
|
17
|
+
const RELEASES_API_URL = `https://api.github.com/repos/${GITHUB_REPO}/releases`;
|
|
18
|
+
const RELEASES_PAGE_URL = `https://github.com/${GITHUB_REPO}/releases`;
|
|
19
|
+
const RELEASES_DOWNLOAD_URL = `${RELEASES_PAGE_URL}/download`;
|
|
20
|
+
/**
|
|
21
|
+
* The repo publishes one GitHub release per npm package, so `v*` server
|
|
22
|
+
* releases are sparse in the listing. Five pages of 100 cover weeks of
|
|
23
|
+
* releases while staying well under the 60/hour unauthenticated rate limit.
|
|
24
|
+
*/
|
|
25
|
+
const PER_PAGE = 100;
|
|
26
|
+
const MAX_PAGES = 5;
|
|
27
|
+
/** A download that failed with an HTTP status (as opposed to a network error). */
|
|
28
|
+
export class HttpStatusError extends Error {
|
|
29
|
+
status;
|
|
30
|
+
constructor(status, statusText) {
|
|
31
|
+
super(`Download failed: ${status} ${statusText}`);
|
|
32
|
+
this.status = status;
|
|
33
|
+
this.name = 'HttpStatusError';
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function parseSemver(version) {
|
|
37
|
+
const match = /^(\d+)\.(\d+)\.(\d+)$/.exec(version);
|
|
38
|
+
return match ? [Number(match[1]), Number(match[2]), Number(match[3])] : null;
|
|
39
|
+
}
|
|
40
|
+
function compareSemver(a, b) {
|
|
41
|
+
return a[0] - b[0] || a[1] - b[1] || a[2] - b[2];
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* A release-wide SHA256SUMS need not list every platform: one that covers the
|
|
45
|
+
* others but not this archive would be chosen, downloaded, and then fail the
|
|
46
|
+
* fail-closed verification, aborting the install while an older release could
|
|
47
|
+
* still have worked. So a SHA256SUMS-only candidate counts only once its body
|
|
48
|
+
* is seen to carry a line for this archive.
|
|
49
|
+
*/
|
|
50
|
+
async function sumsCoverArchive(candidate, archiveName) {
|
|
51
|
+
if (!candidate.sumsOnly)
|
|
52
|
+
return true;
|
|
53
|
+
try {
|
|
54
|
+
const response = await fetch(candidate.assetUrl.replace(/[^/]+$/, 'SHA256SUMS'), {
|
|
55
|
+
headers: { 'User-Agent': 'ifc-lite-server-bin' },
|
|
56
|
+
redirect: 'follow',
|
|
57
|
+
});
|
|
58
|
+
return response.ok && parseExpectedSha256(await response.text(), archiveName) !== null;
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
// Unreadable now means unverifiable at install time too: try an older one.
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function usableAsset(release, archiveName) {
|
|
66
|
+
if (release.draft === true || release.prerelease === true)
|
|
67
|
+
return null;
|
|
68
|
+
if (typeof release.tag_name !== 'string' || !release.tag_name.startsWith('v'))
|
|
69
|
+
return null;
|
|
70
|
+
const version = release.tag_name.slice(1);
|
|
71
|
+
if (!parseSemver(version) || !Array.isArray(release.assets))
|
|
72
|
+
return null;
|
|
73
|
+
const assets = release.assets.filter((a) => typeof a.name === 'string' && (a.state === undefined || a.state === 'uploaded'));
|
|
74
|
+
const archive = assets.find((a) => a.name === archiveName);
|
|
75
|
+
const hasSidecar = assets.some((a) => a.name === `${archiveName}.sha256`);
|
|
76
|
+
const hasSums = assets.some((a) => a.name === 'SHA256SUMS');
|
|
77
|
+
if (!archive || !(hasSidecar || hasSums) || typeof archive.browser_download_url !== 'string')
|
|
78
|
+
return null;
|
|
79
|
+
// The checksum is fetched relative to this URL, so it must be the release's
|
|
80
|
+
// own asset on github.com, not whatever the API response names.
|
|
81
|
+
if (!archive.browser_download_url.startsWith(`${RELEASES_DOWNLOAD_URL}/${release.tag_name}/`))
|
|
82
|
+
return null;
|
|
83
|
+
return { version, assetUrl: archive.browser_download_url, sumsOnly: !hasSidecar };
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Find the newest release OLDER than `requestedVersion` that carries
|
|
87
|
+
* `archiveName` plus its checksum. Never throws: API, rate-limit and network
|
|
88
|
+
* failures come back as `{ found: null, reason }` so the caller can put them
|
|
89
|
+
* in its error message.
|
|
90
|
+
*/
|
|
91
|
+
export async function findFallbackRelease(archiveName, requestedVersion) {
|
|
92
|
+
const requested = parseSemver(requestedVersion);
|
|
93
|
+
// Without a plain X.Y.Z (e.g. a prerelease) "older" is undefined, and a
|
|
94
|
+
// fallback could pick a newer or unrelated release. Refuse instead.
|
|
95
|
+
if (!requested) {
|
|
96
|
+
return { found: null, reason: `v${requestedVersion} is not a plain X.Y.Z version, so no older release can be chosen` };
|
|
97
|
+
}
|
|
98
|
+
for (let page = 1; page <= MAX_PAGES; page++) {
|
|
99
|
+
const url = `${RELEASES_API_URL}?per_page=${PER_PAGE}&page=${page}`;
|
|
100
|
+
let releases;
|
|
101
|
+
try {
|
|
102
|
+
const response = await fetch(url, { headers: apiHeaders() });
|
|
103
|
+
if (!response.ok) {
|
|
104
|
+
const rateLimited = (response.status === 403 || response.status === 429) &&
|
|
105
|
+
response.headers?.get('x-ratelimit-remaining') === '0';
|
|
106
|
+
return {
|
|
107
|
+
found: null,
|
|
108
|
+
reason: rateLimited
|
|
109
|
+
? 'the GitHub API rate limit for unauthenticated requests is exhausted (retry within the hour)'
|
|
110
|
+
: `the GitHub releases API answered ${response.status} ${response.statusText}`,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
releases = await response.json();
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
return {
|
|
117
|
+
found: null,
|
|
118
|
+
reason: `the GitHub releases API could not be reached: ${error instanceof Error ? error.message : String(error)}`,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
if (!Array.isArray(releases)) {
|
|
122
|
+
return { found: null, reason: 'the GitHub releases API returned an unexpected response' };
|
|
123
|
+
}
|
|
124
|
+
const candidates = [];
|
|
125
|
+
for (const release of releases) {
|
|
126
|
+
const candidate = usableAsset(release, archiveName);
|
|
127
|
+
if (!candidate)
|
|
128
|
+
continue;
|
|
129
|
+
const semver = parseSemver(candidate.version);
|
|
130
|
+
if (!semver)
|
|
131
|
+
continue;
|
|
132
|
+
// Only ever fall BACK: a release newer than the requested version is
|
|
133
|
+
// not what this package version was built against.
|
|
134
|
+
if (compareSemver(semver, requested) >= 0)
|
|
135
|
+
continue;
|
|
136
|
+
candidates.push({ candidate, semver });
|
|
137
|
+
}
|
|
138
|
+
// Releases are listed newest first, so this page's candidates are newer
|
|
139
|
+
// than any later page's; the newest one whose checksum covers the archive
|
|
140
|
+
// wins.
|
|
141
|
+
candidates.sort((a, b) => compareSemver(b.semver, a.semver));
|
|
142
|
+
for (const { candidate } of candidates) {
|
|
143
|
+
if (await sumsCoverArchive(candidate, archiveName)) {
|
|
144
|
+
return { found: { version: candidate.version, assetUrl: candidate.assetUrl } };
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
// A short page is the end of the list.
|
|
148
|
+
if (releases.length < PER_PAGE)
|
|
149
|
+
break;
|
|
150
|
+
}
|
|
151
|
+
return {
|
|
152
|
+
found: null,
|
|
153
|
+
reason: `no release older than v${requestedVersion} in the ${MAX_PAGES * PER_PAGE} most recent carries ${archiveName} with a checksum`,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Headers for the releases API. A `GITHUB_TOKEN` / `GH_TOKEN` in the
|
|
158
|
+
* environment (CI, shared NAT: where the 60/hour unauthenticated limit runs
|
|
159
|
+
* out first) is sent so the lookup gets the authenticated limit.
|
|
160
|
+
*/
|
|
161
|
+
function apiHeaders() {
|
|
162
|
+
const headers = {
|
|
163
|
+
'User-Agent': 'ifc-lite-server-bin',
|
|
164
|
+
Accept: 'application/vnd.github+json',
|
|
165
|
+
};
|
|
166
|
+
const token = process.env.GITHUB_TOKEN || process.env.GH_TOKEN;
|
|
167
|
+
if (token)
|
|
168
|
+
headers.Authorization = `Bearer ${token}`;
|
|
169
|
+
return headers;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* The version sidecar (`.cache/version.txt`). Its first line is the package
|
|
173
|
+
* version the cache is keyed on; a fallback install adds a second line naming
|
|
174
|
+
* the release that actually supplied the binary, so every later run can say so
|
|
175
|
+
* instead of the substitution being visible only in a (usually hidden)
|
|
176
|
+
* postinstall log.
|
|
177
|
+
*/
|
|
178
|
+
export function versionSidecar(version, fallbackVersion) {
|
|
179
|
+
return fallbackVersion ? `${version}\nfallback ${fallbackVersion}\n` : version;
|
|
180
|
+
}
|
|
181
|
+
export function parseVersionSidecar(text) {
|
|
182
|
+
const [first = '', second = ''] = text.trim().split(/\r?\n/);
|
|
183
|
+
const fallback = /^fallback (\S+)$/.exec(second.trim());
|
|
184
|
+
return { version: first.trim(), fallback: fallback ? fallback[1] : null };
|
|
185
|
+
}
|
|
186
|
+
/** The warning printed on every run that reuses a fallback binary. */
|
|
187
|
+
export function fallbackInUseWarning(version, fallbackVersion) {
|
|
188
|
+
return (`Warning: @ifc-lite/server-bin@${version} is running the server binary from release v${fallbackVersion}, ` +
|
|
189
|
+
`because release v${version} had no binary for this platform when it was installed.\n` +
|
|
190
|
+
`Warning: run "npx @ifc-lite/server-bin download" to retry v${version}, or pin: npm i @ifc-lite/server-bin@${fallbackVersion}`);
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* The error text for "no binary for this version and no usable fallback".
|
|
194
|
+
* It names the concrete fix (pin a version whose release has binaries)
|
|
195
|
+
* rather than an alternative install route.
|
|
196
|
+
*/
|
|
197
|
+
export function noBinaryMessage(details) {
|
|
198
|
+
return (`Failed to download the IFC-Lite server binary for @ifc-lite/server-bin@${details.version}.\n` +
|
|
199
|
+
`URL: ${details.downloadUrl}\n` +
|
|
200
|
+
`Error: ${details.errorText}\n` +
|
|
201
|
+
`No fallback release was used: ${details.reason}.\n\n` +
|
|
202
|
+
`Fix: install a server-bin version whose GitHub release carries binaries.\n` +
|
|
203
|
+
` 1. Pick the newest "vX.Y.Z" release listing ${details.archiveName}: ${RELEASES_PAGE_URL}\n` +
|
|
204
|
+
` 2. npm i @ifc-lite/server-bin@X.Y.Z (or: npx @ifc-lite/server-bin@X.Y.Z)\n` +
|
|
205
|
+
`Or build from source: cargo build --release -p ifc-lite-server`);
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=release-fallback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-fallback.js","sourceRoot":"","sources":["../src/release-fallback.ts"],"names":[],"mappings":"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"}
|