Skip to content

Commit 225970e

Browse files
committed
chore: engine npm package
1 parent 3720030 commit 225970e

File tree

19 files changed

+448
-197
lines changed

19 files changed

+448
-197
lines changed

engine/package.json

Lines changed: 0 additions & 8 deletions
This file was deleted.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
},
3434
"resolutions": {
3535
"rivetkit": "workspace:*",
36+
"@rivetkit/engine": "workspace:*",
3637
"@rivetkit/react": "workspace:*",
3738
"@rivetkit/next-js": "workspace:*",
3839
"@rivetkit/db": "workspace:*",

pnpm-lock.yaml

Lines changed: 28 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pnpm-workspace.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ packages:
1616
- frontend/packages/icons/
1717
- frontend/packages/shared-data/
1818
- rivetkit-typescript/packages/*
19+
- rivetkit-typescript/packages/engine/npm/*
1920
- rivetkit-swift/examples/*/server
2021
- scripts/release
2122
- scripts/tests
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
export interface ResolvedEngineBinary {
2+
packageName: string;
3+
packageDir: string;
4+
binaryPath: string;
5+
version: string;
6+
}
7+
8+
export declare function getInstalledVersion(): string;
9+
export declare function getEnginePackageNameForPlatform(
10+
platform?: NodeJS.Platform,
11+
arch?: typeof process.arch,
12+
): string;
13+
export declare function resolveEngineBinaryFor(
14+
platform?: NodeJS.Platform,
15+
arch?: typeof process.arch,
16+
): ResolvedEngineBinary;
17+
export declare function resolveEngineBinary(): ResolvedEngineBinary;
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
import fs from "node:fs";
2+
import path from "node:path";
3+
import { createRequire } from "node:module";
4+
5+
const require = createRequire(import.meta.url);
6+
7+
const PLATFORM_PACKAGES = {
8+
"darwin:arm64": "@rivetkit/engine-darwin-arm64",
9+
"darwin:x64": "@rivetkit/engine-darwin-x64",
10+
"linux:x64": "@rivetkit/engine-linux-x64-musl",
11+
"win32:x64": "@rivetkit/engine-win32-x64-gnu",
12+
};
13+
14+
export function getInstalledVersion() {
15+
const packageJsonPath = new URL("./package.json", import.meta.url);
16+
const packageJson = JSON.parse(
17+
fs.readFileSync(packageJsonPath, "utf8"),
18+
);
19+
return packageJson.version;
20+
}
21+
22+
export function getEnginePackageNameForPlatform(platform = process.platform, arch = process.arch) {
23+
const packageName = PLATFORM_PACKAGES[`${platform}:${arch}`];
24+
if (!packageName) {
25+
throw new Error(
26+
`unsupported platform for Rivet Engine npm package: ${platform}/${arch}`,
27+
);
28+
}
29+
return packageName;
30+
}
31+
32+
export function resolveEngineBinaryFor(platform = process.platform, arch = process.arch) {
33+
const packageName = getEnginePackageNameForPlatform(platform, arch);
34+
const packageJsonPath = require.resolve(`${packageName}/package.json`);
35+
const packageDir = path.dirname(packageJsonPath);
36+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf8"));
37+
const binaryRelativePath = packageJson.rivet?.binary;
38+
39+
if (!binaryRelativePath) {
40+
throw new Error(
41+
`missing rivet.binary field in ${packageName}/package.json`,
42+
);
43+
}
44+
45+
const binaryPath = path.join(packageDir, binaryRelativePath);
46+
if (!fs.existsSync(binaryPath)) {
47+
throw new Error(
48+
`Rivet Engine binary package ${packageName} is installed but the binary is missing at ${binaryPath}`,
49+
);
50+
}
51+
52+
return {
53+
packageName,
54+
packageDir,
55+
binaryPath,
56+
version: getInstalledVersion(),
57+
};
58+
}
59+
60+
export function resolveEngineBinary() {
61+
return resolveEngineBinaryFor();
62+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"name": "@rivetkit/engine-darwin-arm64",
3+
"version": "2.2.1",
4+
"description": "Rivet Engine binary for macOS arm64",
5+
"license": "Apache-2.0",
6+
"os": ["darwin"],
7+
"cpu": ["arm64"],
8+
"files": ["rivet-engine"],
9+
"rivet": {
10+
"binary": "rivet-engine"
11+
}
12+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"name": "@rivetkit/engine-darwin-x64",
3+
"version": "2.2.1",
4+
"description": "Rivet Engine binary for macOS x64",
5+
"license": "Apache-2.0",
6+
"os": ["darwin"],
7+
"cpu": ["x64"],
8+
"files": ["rivet-engine"],
9+
"rivet": {
10+
"binary": "rivet-engine"
11+
}
12+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"name": "@rivetkit/engine-linux-x64-musl",
3+
"version": "2.2.1",
4+
"description": "Rivet Engine binary for Linux x64",
5+
"license": "Apache-2.0",
6+
"os": ["linux"],
7+
"cpu": ["x64"],
8+
"files": ["rivet-engine"],
9+
"rivet": {
10+
"binary": "rivet-engine"
11+
}
12+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"name": "@rivetkit/engine-win32-x64-gnu",
3+
"version": "2.2.1",
4+
"description": "Rivet Engine binary for Windows x64 GNU",
5+
"license": "Apache-2.0",
6+
"os": ["win32"],
7+
"cpu": ["x64"],
8+
"files": ["rivet-engine.exe"],
9+
"rivet": {
10+
"binary": "rivet-engine.exe"
11+
}
12+
}

0 commit comments

Comments
 (0)