@grafema/core 0.2.3-beta → 0.2.4-beta
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/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/storage/backends/RFDBServerBackend.d.ts +1 -5
- package/dist/storage/backends/RFDBServerBackend.d.ts.map +1 -1
- package/dist/storage/backends/RFDBServerBackend.js +7 -57
- package/dist/utils/findRfdbBinary.d.ts +39 -0
- package/dist/utils/findRfdbBinary.d.ts.map +1 -0
- package/dist/utils/findRfdbBinary.js +140 -0
- package/package.json +2 -2
- package/src/index.ts +2 -0
- package/src/storage/backends/RFDBServerBackend.ts +7 -63
- package/src/utils/findRfdbBinary.ts +160 -0
package/dist/index.d.ts
CHANGED
|
@@ -17,6 +17,8 @@ export { GraphBackend, typeToKind, edgeTypeToNumber } from './core/GraphBackend.
|
|
|
17
17
|
export type { Node, Edge, EdgeType, AttrQuery, GraphStats, GraphExport } from './core/GraphBackend.js';
|
|
18
18
|
export { RFDBClient } from '@grafema/rfdb-client';
|
|
19
19
|
export { RFDBServerBackend } from './storage/backends/RFDBServerBackend.js';
|
|
20
|
+
export { findRfdbBinary, getPlatformDir, getBinaryNotFoundMessage } from './utils/findRfdbBinary.js';
|
|
21
|
+
export type { FindBinaryOptions } from './utils/findRfdbBinary.js';
|
|
20
22
|
export { NodeFactory } from './core/NodeFactory.js';
|
|
21
23
|
export { Profiler } from './core/Profiler.js';
|
|
22
24
|
export { computeSemanticId, parseSemanticId, computeDiscriminator } from './core/SemanticId.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,YAAY,EACZ,WAAW,EACX,eAAe,EACf,aAAa,EACb,aAAa,EACb,WAAW,EACX,aAAa,EACb,eAAe,EACf,eAAe,GAChB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAG/E,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC1E,YAAY,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACnG,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGvG,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC/D,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EACV,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,YAAY,GACb,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACpF,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGvG,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,YAAY,EACZ,WAAW,EACX,eAAe,EACf,aAAa,EACb,aAAa,EACb,WAAW,EACX,aAAa,EACb,eAAe,EACf,eAAe,GAChB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAG/E,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC1E,YAAY,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACnG,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGvG,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC/D,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EACV,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,YAAY,GACb,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACpF,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGvG,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrG,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,QAAQ,EACR,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,KAAK,UAAU,IAAI,aAAa,EAAE,KAAK,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACrI,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,YAAY,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,YAAY,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAG/E,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAGtG,OAAO,EACL,WAAW,EACX,0BAA0B,EAC1B,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAGxF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1E,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAGxJ,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACpG,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAG/G,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,YAAY,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAGnE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAG3D,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAGhH,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,KAAK,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAC5F,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,KAAK,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACxF,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAC5F,OAAO,EAAE,sBAAsB,EAAE,KAAK,4BAA4B,EAAE,KAAK,6BAA6B,EAAE,MAAM,wCAAwC,CAAC;AAGvJ,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,YAAY,EACZ,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,0CAA0C,CAAC;AAClD,YAAY,EACV,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,YAAY,EACZ,4BAA4B,EAC5B,+BAA+B,EAC/B,2BAA2B,EAC5B,MAAM,0CAA0C,CAAC;AAGlD,OAAO,EACL,eAAe,EACf,OAAO,EACP,SAAS,EACT,cAAc,EACd,gBAAgB,EACjB,MAAM,0CAA0C,CAAC;AAClD,YAAY,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AAK7E,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;AAC1F,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAG5E,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,iDAAiD,CAAC;AAG5F,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,MAAM,iDAAiD,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AACxF,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AACxF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AACpF,OAAO,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AAGxF,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGvG,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,EAAE,0BAA0B,EAAE,MAAM,oDAAoD,CAAC;AAChG,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,qDAAqD,CAAC;AAClG,OAAO,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AACtF,OAAO,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AAGtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iDAAiD,CAAC;AAC3F,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAC/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,gDAAgD,CAAC;AACzF,YAAY,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;AAG/F,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,yCAAyC,CAAC;AACjD,YAAY,EACV,aAAa,EACb,wBAAwB,EACxB,eAAe,EACf,gBAAgB,EACjB,MAAM,yCAAyC,CAAC;AAGjD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACrF,YAAY,EACV,SAAS,EACT,iBAAiB,EACjB,WAAW,EACX,QAAQ,EACR,QAAQ,GACT,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAG7D,OAAO,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACnF,YAAY,EACV,eAAe,EACf,cAAc,EACd,cAAc,EACd,WAAW,EACX,cAAc,EACd,cAAc,EACd,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,WAAW,EAAE,eAAe,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACpK,YAAY,EACV,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAG5B,mBAAmB,gBAAgB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -18,6 +18,7 @@ export { GraphBackend, typeToKind, edgeTypeToNumber } from './core/GraphBackend.
|
|
|
18
18
|
// RFDB
|
|
19
19
|
export { RFDBClient } from '@grafema/rfdb-client';
|
|
20
20
|
export { RFDBServerBackend } from './storage/backends/RFDBServerBackend.js';
|
|
21
|
+
export { findRfdbBinary, getPlatformDir, getBinaryNotFoundMessage } from './utils/findRfdbBinary.js';
|
|
21
22
|
// Core utilities
|
|
22
23
|
export { NodeFactory } from './core/NodeFactory.js';
|
|
23
24
|
export { Profiler } from './core/Profiler.js';
|
|
@@ -95,11 +95,7 @@ export declare class RFDBServerBackend {
|
|
|
95
95
|
*/
|
|
96
96
|
initialize(): Promise<void>;
|
|
97
97
|
/**
|
|
98
|
-
* Find RFDB server binary
|
|
99
|
-
* 1. packages/rfdb-server/target/release (monorepo development - prioritized for dev)
|
|
100
|
-
* 2. packages/rfdb-server/target/debug
|
|
101
|
-
* 3. @grafema/rfdb npm package
|
|
102
|
-
* 4. ~/.local/bin/rfdb-server (user-installed binary)
|
|
98
|
+
* Find RFDB server binary using shared utility
|
|
103
99
|
*/
|
|
104
100
|
private _findServerBinary;
|
|
105
101
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RFDBServerBackend.d.ts","sourceRoot":"","sources":["../../../src/storage/backends/RFDBServerBackend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;
|
|
1
|
+
{"version":3,"file":"RFDBServerBackend.d.ts","sourceRoot":"","sources":["../../../src/storage/backends/RFDBServerBackend.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,11 +21,8 @@ import { RFDBClient } from '@grafema/rfdb-client';
|
|
|
21
21
|
import { existsSync, unlinkSync } from 'fs';
|
|
22
22
|
import { spawn } from 'child_process';
|
|
23
23
|
import { join, dirname } from 'path';
|
|
24
|
-
import { fileURLToPath } from 'url';
|
|
25
|
-
import { createRequire } from 'module';
|
|
26
24
|
import { setTimeout as sleep } from 'timers/promises';
|
|
27
|
-
|
|
28
|
-
const __dirname = dirname(__filename);
|
|
25
|
+
import { findRfdbBinary, getBinaryNotFoundMessage } from '../../utils/findRfdbBinary.js';
|
|
29
26
|
export class RFDBServerBackend {
|
|
30
27
|
socketPath;
|
|
31
28
|
dbPath;
|
|
@@ -97,59 +94,14 @@ export class RFDBServerBackend {
|
|
|
97
94
|
return this.connect();
|
|
98
95
|
}
|
|
99
96
|
/**
|
|
100
|
-
* Find RFDB server binary
|
|
101
|
-
* 1. packages/rfdb-server/target/release (monorepo development - prioritized for dev)
|
|
102
|
-
* 2. packages/rfdb-server/target/debug
|
|
103
|
-
* 3. @grafema/rfdb npm package
|
|
104
|
-
* 4. ~/.local/bin/rfdb-server (user-installed binary)
|
|
97
|
+
* Find RFDB server binary using shared utility
|
|
105
98
|
*/
|
|
106
99
|
_findServerBinary() {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
if (existsSync(releaseBinary)) {
|
|
111
|
-
console.log(`[RFDBServerBackend] Found release binary: ${releaseBinary}`);
|
|
112
|
-
return releaseBinary;
|
|
100
|
+
const binaryPath = findRfdbBinary();
|
|
101
|
+
if (binaryPath) {
|
|
102
|
+
console.log(`[RFDBServerBackend] Found binary: ${binaryPath}`);
|
|
113
103
|
}
|
|
114
|
-
|
|
115
|
-
const debugBinary = join(projectRoot, 'packages/rfdb-server/target/debug/rfdb-server');
|
|
116
|
-
if (existsSync(debugBinary)) {
|
|
117
|
-
console.log(`[RFDBServerBackend] Found debug binary: ${debugBinary}`);
|
|
118
|
-
return debugBinary;
|
|
119
|
-
}
|
|
120
|
-
// 3. Check @grafema/rfdb npm package
|
|
121
|
-
try {
|
|
122
|
-
const require = createRequire(import.meta.url);
|
|
123
|
-
const rfdbPkg = require.resolve('@grafema/rfdb');
|
|
124
|
-
const rfdbDir = dirname(rfdbPkg);
|
|
125
|
-
const platform = process.platform;
|
|
126
|
-
const arch = process.arch;
|
|
127
|
-
let platformDir;
|
|
128
|
-
if (platform === 'darwin') {
|
|
129
|
-
platformDir = arch === 'arm64' ? 'darwin-arm64' : 'darwin-x64';
|
|
130
|
-
}
|
|
131
|
-
else if (platform === 'linux') {
|
|
132
|
-
platformDir = arch === 'arm64' ? 'linux-arm64' : 'linux-x64';
|
|
133
|
-
}
|
|
134
|
-
else {
|
|
135
|
-
platformDir = `${platform}-${arch}`;
|
|
136
|
-
}
|
|
137
|
-
const npmBinary = join(rfdbDir, 'prebuilt', platformDir, 'rfdb-server');
|
|
138
|
-
if (existsSync(npmBinary)) {
|
|
139
|
-
console.log(`[RFDBServerBackend] Found binary in @grafema/rfdb: ${npmBinary}`);
|
|
140
|
-
return npmBinary;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
catch {
|
|
144
|
-
// @grafema/rfdb not installed
|
|
145
|
-
}
|
|
146
|
-
// 4. Check ~/.local/bin (user-installed binary for unsupported platforms)
|
|
147
|
-
const homeBinary = join(process.env.HOME || '', '.local', 'bin', 'rfdb-server');
|
|
148
|
-
if (existsSync(homeBinary)) {
|
|
149
|
-
console.log(`[RFDBServerBackend] Found user binary: ${homeBinary}`);
|
|
150
|
-
return homeBinary;
|
|
151
|
-
}
|
|
152
|
-
return null;
|
|
104
|
+
return binaryPath;
|
|
153
105
|
}
|
|
154
106
|
/**
|
|
155
107
|
* Start RFDB server process
|
|
@@ -161,9 +113,7 @@ export class RFDBServerBackend {
|
|
|
161
113
|
// Find server binary - check multiple locations
|
|
162
114
|
const binaryPath = this._findServerBinary();
|
|
163
115
|
if (!binaryPath) {
|
|
164
|
-
throw new Error(
|
|
165
|
-
'Install @grafema/rfdb: npm install @grafema/rfdb\n' +
|
|
166
|
-
'Or build from source: cargo build --release --bin rfdb-server');
|
|
116
|
+
throw new Error(getBinaryNotFoundMessage());
|
|
167
117
|
}
|
|
168
118
|
// Remove stale socket
|
|
169
119
|
if (existsSync(this.socketPath)) {
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared utility for finding rfdb-server binary
|
|
3
|
+
*
|
|
4
|
+
* Used by:
|
|
5
|
+
* - RFDBServerBackend (core)
|
|
6
|
+
* - CLI server command
|
|
7
|
+
* - VS Code extension
|
|
8
|
+
* - rfdb-server bin wrapper
|
|
9
|
+
*
|
|
10
|
+
* Search order:
|
|
11
|
+
* 1. Explicit path (from config or flag)
|
|
12
|
+
* 2. GRAFEMA_RFDB_SERVER environment variable
|
|
13
|
+
* 3. Monorepo target/release (development)
|
|
14
|
+
* 4. Monorepo target/debug (development)
|
|
15
|
+
* 5. @grafema/rfdb npm package (prebuilt)
|
|
16
|
+
* 6. ~/.local/bin/rfdb-server (user-installed)
|
|
17
|
+
*/
|
|
18
|
+
export interface FindBinaryOptions {
|
|
19
|
+
/** Explicit path to binary (highest priority) */
|
|
20
|
+
explicitPath?: string;
|
|
21
|
+
/** Base directory for monorepo search (defaults to auto-detect) */
|
|
22
|
+
monorepoRoot?: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Get platform directory name for prebuilt binaries
|
|
26
|
+
*/
|
|
27
|
+
export declare function getPlatformDir(): string;
|
|
28
|
+
/**
|
|
29
|
+
* Find rfdb-server binary using standard search order
|
|
30
|
+
*
|
|
31
|
+
* @param options - Search options
|
|
32
|
+
* @returns Path to binary or null if not found
|
|
33
|
+
*/
|
|
34
|
+
export declare function findRfdbBinary(options?: FindBinaryOptions): string | null;
|
|
35
|
+
/**
|
|
36
|
+
* Get human-readable error message when binary not found
|
|
37
|
+
*/
|
|
38
|
+
export declare function getBinaryNotFoundMessage(): string;
|
|
39
|
+
//# sourceMappingURL=findRfdbBinary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findRfdbBinary.d.ts","sourceRoot":"","sources":["../../src/utils/findRfdbBinary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAUH,MAAM,WAAW,iBAAiB;IAChC,iDAAiD;IACjD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAUvC;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,iBAAsB,GAAG,MAAM,GAAG,IAAI,CAoD7E;AA0BD;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAwBjD"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared utility for finding rfdb-server binary
|
|
3
|
+
*
|
|
4
|
+
* Used by:
|
|
5
|
+
* - RFDBServerBackend (core)
|
|
6
|
+
* - CLI server command
|
|
7
|
+
* - VS Code extension
|
|
8
|
+
* - rfdb-server bin wrapper
|
|
9
|
+
*
|
|
10
|
+
* Search order:
|
|
11
|
+
* 1. Explicit path (from config or flag)
|
|
12
|
+
* 2. GRAFEMA_RFDB_SERVER environment variable
|
|
13
|
+
* 3. Monorepo target/release (development)
|
|
14
|
+
* 4. Monorepo target/debug (development)
|
|
15
|
+
* 5. @grafema/rfdb npm package (prebuilt)
|
|
16
|
+
* 6. ~/.local/bin/rfdb-server (user-installed)
|
|
17
|
+
*/
|
|
18
|
+
import { existsSync } from 'fs';
|
|
19
|
+
import { join, dirname, resolve } from 'path';
|
|
20
|
+
import { createRequire } from 'module';
|
|
21
|
+
import { fileURLToPath } from 'url';
|
|
22
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
23
|
+
const __dirname = dirname(__filename);
|
|
24
|
+
/**
|
|
25
|
+
* Get platform directory name for prebuilt binaries
|
|
26
|
+
*/
|
|
27
|
+
export function getPlatformDir() {
|
|
28
|
+
const platform = process.platform;
|
|
29
|
+
const arch = process.arch;
|
|
30
|
+
if (platform === 'darwin') {
|
|
31
|
+
return arch === 'arm64' ? 'darwin-arm64' : 'darwin-x64';
|
|
32
|
+
}
|
|
33
|
+
else if (platform === 'linux') {
|
|
34
|
+
return arch === 'arm64' ? 'linux-arm64' : 'linux-x64';
|
|
35
|
+
}
|
|
36
|
+
return `${platform}-${arch}`;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Find rfdb-server binary using standard search order
|
|
40
|
+
*
|
|
41
|
+
* @param options - Search options
|
|
42
|
+
* @returns Path to binary or null if not found
|
|
43
|
+
*/
|
|
44
|
+
export function findRfdbBinary(options = {}) {
|
|
45
|
+
// 1. Explicit path (from config or --binary flag)
|
|
46
|
+
if (options.explicitPath) {
|
|
47
|
+
const resolved = resolve(options.explicitPath);
|
|
48
|
+
if (existsSync(resolved)) {
|
|
49
|
+
return resolved;
|
|
50
|
+
}
|
|
51
|
+
// Explicit path was given but not found - don't fallback
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
// 2. Environment variable
|
|
55
|
+
const envBinary = process.env.GRAFEMA_RFDB_SERVER;
|
|
56
|
+
if (envBinary && existsSync(envBinary)) {
|
|
57
|
+
return envBinary;
|
|
58
|
+
}
|
|
59
|
+
// 3-4. Monorepo development builds
|
|
60
|
+
const monorepoRoot = options.monorepoRoot || findMonorepoRoot();
|
|
61
|
+
if (monorepoRoot) {
|
|
62
|
+
const releaseBinary = join(monorepoRoot, 'packages', 'rfdb-server', 'target', 'release', 'rfdb-server');
|
|
63
|
+
if (existsSync(releaseBinary)) {
|
|
64
|
+
return releaseBinary;
|
|
65
|
+
}
|
|
66
|
+
const debugBinary = join(monorepoRoot, 'packages', 'rfdb-server', 'target', 'debug', 'rfdb-server');
|
|
67
|
+
if (existsSync(debugBinary)) {
|
|
68
|
+
return debugBinary;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// 5. @grafema/rfdb npm package
|
|
72
|
+
try {
|
|
73
|
+
const require = createRequire(import.meta.url);
|
|
74
|
+
const rfdbPkg = require.resolve('@grafema/rfdb');
|
|
75
|
+
const rfdbDir = dirname(rfdbPkg);
|
|
76
|
+
const platformDir = getPlatformDir();
|
|
77
|
+
const npmBinary = join(rfdbDir, 'prebuilt', platformDir, 'rfdb-server');
|
|
78
|
+
if (existsSync(npmBinary)) {
|
|
79
|
+
return npmBinary;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
// @grafema/rfdb not installed
|
|
84
|
+
}
|
|
85
|
+
// 6. User-installed binary in ~/.local/bin
|
|
86
|
+
const homeBinary = join(process.env.HOME || '', '.local', 'bin', 'rfdb-server');
|
|
87
|
+
if (existsSync(homeBinary)) {
|
|
88
|
+
return homeBinary;
|
|
89
|
+
}
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Find monorepo root by looking for characteristic files
|
|
94
|
+
*/
|
|
95
|
+
function findMonorepoRoot() {
|
|
96
|
+
// Start from this file's location and walk up
|
|
97
|
+
const searchPaths = [
|
|
98
|
+
// From packages/core/src/utils -> packages/core -> packages -> root
|
|
99
|
+
join(__dirname, '..', '..', '..', '..'),
|
|
100
|
+
// Common development locations
|
|
101
|
+
process.env.GRAFEMA_ROOT,
|
|
102
|
+
].filter(Boolean);
|
|
103
|
+
for (const candidate of searchPaths) {
|
|
104
|
+
// Check for grafema monorepo markers
|
|
105
|
+
const hasPackagesDir = existsSync(join(candidate, 'packages', 'core'));
|
|
106
|
+
const hasRfdbServer = existsSync(join(candidate, 'packages', 'rfdb-server', 'Cargo.toml'));
|
|
107
|
+
if (hasPackagesDir && hasRfdbServer) {
|
|
108
|
+
return candidate;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Get human-readable error message when binary not found
|
|
115
|
+
*/
|
|
116
|
+
export function getBinaryNotFoundMessage() {
|
|
117
|
+
const platformDir = getPlatformDir();
|
|
118
|
+
return `RFDB server binary not found for ${platformDir}
|
|
119
|
+
|
|
120
|
+
Options:
|
|
121
|
+
1. Specify path: grafema server start --binary /path/to/rfdb-server
|
|
122
|
+
|
|
123
|
+
2. Add to config.yaml:
|
|
124
|
+
server:
|
|
125
|
+
binaryPath: /path/to/rfdb-server
|
|
126
|
+
|
|
127
|
+
3. Set environment variable:
|
|
128
|
+
export GRAFEMA_RFDB_SERVER=/path/to/rfdb-server
|
|
129
|
+
|
|
130
|
+
4. Build from source and install:
|
|
131
|
+
git clone https://github.com/Disentinel/grafema.git
|
|
132
|
+
cd grafema/packages/rfdb-server
|
|
133
|
+
cargo build --release
|
|
134
|
+
mkdir -p ~/.local/bin
|
|
135
|
+
cp target/release/rfdb-server ~/.local/bin/
|
|
136
|
+
|
|
137
|
+
5. Install prebuilt (if available for your platform):
|
|
138
|
+
npm install @grafema/rfdb
|
|
139
|
+
`;
|
|
140
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grafema/core",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.4-beta",
|
|
4
4
|
"description": "Core analysis engine for Grafema code analysis toolkit",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"oxc-parser": "^0.96.0",
|
|
44
44
|
"yaml": "^2.8.2",
|
|
45
45
|
"@grafema/rfdb-client": "0.2.1-beta",
|
|
46
|
-
"@grafema/types": "0.2.
|
|
46
|
+
"@grafema/types": "0.2.4-beta"
|
|
47
47
|
},
|
|
48
48
|
"optionalDependencies": {
|
|
49
49
|
"@grafema/rfdb": "^0.1.0-alpha.2"
|
package/src/index.ts
CHANGED
|
@@ -52,6 +52,8 @@ export type { Node, Edge, EdgeType, AttrQuery, GraphStats, GraphExport } from '.
|
|
|
52
52
|
// RFDB
|
|
53
53
|
export { RFDBClient } from '@grafema/rfdb-client';
|
|
54
54
|
export { RFDBServerBackend } from './storage/backends/RFDBServerBackend.js';
|
|
55
|
+
export { findRfdbBinary, getPlatformDir, getBinaryNotFoundMessage } from './utils/findRfdbBinary.js';
|
|
56
|
+
export type { FindBinaryOptions } from './utils/findRfdbBinary.js';
|
|
55
57
|
|
|
56
58
|
// Core utilities
|
|
57
59
|
export { NodeFactory } from './core/NodeFactory.js';
|
|
@@ -22,17 +22,13 @@ import { RFDBClient } from '@grafema/rfdb-client';
|
|
|
22
22
|
import { existsSync, unlinkSync } from 'fs';
|
|
23
23
|
import { spawn, type ChildProcess } from 'child_process';
|
|
24
24
|
import { join, dirname } from 'path';
|
|
25
|
-
import { fileURLToPath } from 'url';
|
|
26
|
-
import { createRequire } from 'module';
|
|
27
25
|
import { setTimeout as sleep } from 'timers/promises';
|
|
28
26
|
|
|
29
27
|
import type { WireNode, WireEdge } from '@grafema/types';
|
|
30
28
|
import type { NodeType, EdgeType } from '@grafema/types';
|
|
31
29
|
import type { BaseNodeRecord, EdgeRecord } from '@grafema/types';
|
|
32
30
|
import type { AttrQuery, GraphStats, GraphExport } from '../../core/GraphBackend.js';
|
|
33
|
-
|
|
34
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
35
|
-
const __dirname = dirname(__filename);
|
|
31
|
+
import { findRfdbBinary, getBinaryNotFoundMessage } from '../../utils/findRfdbBinary.js';
|
|
36
32
|
|
|
37
33
|
/**
|
|
38
34
|
* Options for RFDBServerBackend
|
|
@@ -169,62 +165,14 @@ export class RFDBServerBackend {
|
|
|
169
165
|
}
|
|
170
166
|
|
|
171
167
|
/**
|
|
172
|
-
* Find RFDB server binary
|
|
173
|
-
* 1. packages/rfdb-server/target/release (monorepo development - prioritized for dev)
|
|
174
|
-
* 2. packages/rfdb-server/target/debug
|
|
175
|
-
* 3. @grafema/rfdb npm package
|
|
176
|
-
* 4. ~/.local/bin/rfdb-server (user-installed binary)
|
|
168
|
+
* Find RFDB server binary using shared utility
|
|
177
169
|
*/
|
|
178
170
|
private _findServerBinary(): string | null {
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
if (existsSync(releaseBinary)) {
|
|
183
|
-
console.log(`[RFDBServerBackend] Found release binary: ${releaseBinary}`);
|
|
184
|
-
return releaseBinary;
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
// 2. Check debug build
|
|
188
|
-
const debugBinary = join(projectRoot, 'packages/rfdb-server/target/debug/rfdb-server');
|
|
189
|
-
if (existsSync(debugBinary)) {
|
|
190
|
-
console.log(`[RFDBServerBackend] Found debug binary: ${debugBinary}`);
|
|
191
|
-
return debugBinary;
|
|
171
|
+
const binaryPath = findRfdbBinary();
|
|
172
|
+
if (binaryPath) {
|
|
173
|
+
console.log(`[RFDBServerBackend] Found binary: ${binaryPath}`);
|
|
192
174
|
}
|
|
193
|
-
|
|
194
|
-
// 3. Check @grafema/rfdb npm package
|
|
195
|
-
try {
|
|
196
|
-
const require = createRequire(import.meta.url);
|
|
197
|
-
const rfdbPkg = require.resolve('@grafema/rfdb');
|
|
198
|
-
const rfdbDir = dirname(rfdbPkg);
|
|
199
|
-
const platform = process.platform;
|
|
200
|
-
const arch = process.arch;
|
|
201
|
-
|
|
202
|
-
let platformDir: string;
|
|
203
|
-
if (platform === 'darwin') {
|
|
204
|
-
platformDir = arch === 'arm64' ? 'darwin-arm64' : 'darwin-x64';
|
|
205
|
-
} else if (platform === 'linux') {
|
|
206
|
-
platformDir = arch === 'arm64' ? 'linux-arm64' : 'linux-x64';
|
|
207
|
-
} else {
|
|
208
|
-
platformDir = `${platform}-${arch}`;
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
const npmBinary = join(rfdbDir, 'prebuilt', platformDir, 'rfdb-server');
|
|
212
|
-
if (existsSync(npmBinary)) {
|
|
213
|
-
console.log(`[RFDBServerBackend] Found binary in @grafema/rfdb: ${npmBinary}`);
|
|
214
|
-
return npmBinary;
|
|
215
|
-
}
|
|
216
|
-
} catch {
|
|
217
|
-
// @grafema/rfdb not installed
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
// 4. Check ~/.local/bin (user-installed binary for unsupported platforms)
|
|
221
|
-
const homeBinary = join(process.env.HOME || '', '.local', 'bin', 'rfdb-server');
|
|
222
|
-
if (existsSync(homeBinary)) {
|
|
223
|
-
console.log(`[RFDBServerBackend] Found user binary: ${homeBinary}`);
|
|
224
|
-
return homeBinary;
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
return null;
|
|
175
|
+
return binaryPath;
|
|
228
176
|
}
|
|
229
177
|
|
|
230
178
|
/**
|
|
@@ -238,11 +186,7 @@ export class RFDBServerBackend {
|
|
|
238
186
|
// Find server binary - check multiple locations
|
|
239
187
|
const binaryPath = this._findServerBinary();
|
|
240
188
|
if (!binaryPath) {
|
|
241
|
-
throw new Error(
|
|
242
|
-
'RFDB server binary not found.\n' +
|
|
243
|
-
'Install @grafema/rfdb: npm install @grafema/rfdb\n' +
|
|
244
|
-
'Or build from source: cargo build --release --bin rfdb-server'
|
|
245
|
-
);
|
|
189
|
+
throw new Error(getBinaryNotFoundMessage());
|
|
246
190
|
}
|
|
247
191
|
|
|
248
192
|
// Remove stale socket
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared utility for finding rfdb-server binary
|
|
3
|
+
*
|
|
4
|
+
* Used by:
|
|
5
|
+
* - RFDBServerBackend (core)
|
|
6
|
+
* - CLI server command
|
|
7
|
+
* - VS Code extension
|
|
8
|
+
* - rfdb-server bin wrapper
|
|
9
|
+
*
|
|
10
|
+
* Search order:
|
|
11
|
+
* 1. Explicit path (from config or flag)
|
|
12
|
+
* 2. GRAFEMA_RFDB_SERVER environment variable
|
|
13
|
+
* 3. Monorepo target/release (development)
|
|
14
|
+
* 4. Monorepo target/debug (development)
|
|
15
|
+
* 5. @grafema/rfdb npm package (prebuilt)
|
|
16
|
+
* 6. ~/.local/bin/rfdb-server (user-installed)
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
import { existsSync } from 'fs';
|
|
20
|
+
import { join, dirname, resolve } from 'path';
|
|
21
|
+
import { createRequire } from 'module';
|
|
22
|
+
import { fileURLToPath } from 'url';
|
|
23
|
+
|
|
24
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
25
|
+
const __dirname = dirname(__filename);
|
|
26
|
+
|
|
27
|
+
export interface FindBinaryOptions {
|
|
28
|
+
/** Explicit path to binary (highest priority) */
|
|
29
|
+
explicitPath?: string;
|
|
30
|
+
/** Base directory for monorepo search (defaults to auto-detect) */
|
|
31
|
+
monorepoRoot?: string;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Get platform directory name for prebuilt binaries
|
|
36
|
+
*/
|
|
37
|
+
export function getPlatformDir(): string {
|
|
38
|
+
const platform = process.platform;
|
|
39
|
+
const arch = process.arch;
|
|
40
|
+
|
|
41
|
+
if (platform === 'darwin') {
|
|
42
|
+
return arch === 'arm64' ? 'darwin-arm64' : 'darwin-x64';
|
|
43
|
+
} else if (platform === 'linux') {
|
|
44
|
+
return arch === 'arm64' ? 'linux-arm64' : 'linux-x64';
|
|
45
|
+
}
|
|
46
|
+
return `${platform}-${arch}`;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Find rfdb-server binary using standard search order
|
|
51
|
+
*
|
|
52
|
+
* @param options - Search options
|
|
53
|
+
* @returns Path to binary or null if not found
|
|
54
|
+
*/
|
|
55
|
+
export function findRfdbBinary(options: FindBinaryOptions = {}): string | null {
|
|
56
|
+
// 1. Explicit path (from config or --binary flag)
|
|
57
|
+
if (options.explicitPath) {
|
|
58
|
+
const resolved = resolve(options.explicitPath);
|
|
59
|
+
if (existsSync(resolved)) {
|
|
60
|
+
return resolved;
|
|
61
|
+
}
|
|
62
|
+
// Explicit path was given but not found - don't fallback
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// 2. Environment variable
|
|
67
|
+
const envBinary = process.env.GRAFEMA_RFDB_SERVER;
|
|
68
|
+
if (envBinary && existsSync(envBinary)) {
|
|
69
|
+
return envBinary;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// 3-4. Monorepo development builds
|
|
73
|
+
const monorepoRoot = options.monorepoRoot || findMonorepoRoot();
|
|
74
|
+
if (monorepoRoot) {
|
|
75
|
+
const releaseBinary = join(monorepoRoot, 'packages', 'rfdb-server', 'target', 'release', 'rfdb-server');
|
|
76
|
+
if (existsSync(releaseBinary)) {
|
|
77
|
+
return releaseBinary;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const debugBinary = join(monorepoRoot, 'packages', 'rfdb-server', 'target', 'debug', 'rfdb-server');
|
|
81
|
+
if (existsSync(debugBinary)) {
|
|
82
|
+
return debugBinary;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// 5. @grafema/rfdb npm package
|
|
87
|
+
try {
|
|
88
|
+
const require = createRequire(import.meta.url);
|
|
89
|
+
const rfdbPkg = require.resolve('@grafema/rfdb');
|
|
90
|
+
const rfdbDir = dirname(rfdbPkg);
|
|
91
|
+
const platformDir = getPlatformDir();
|
|
92
|
+
const npmBinary = join(rfdbDir, 'prebuilt', platformDir, 'rfdb-server');
|
|
93
|
+
if (existsSync(npmBinary)) {
|
|
94
|
+
return npmBinary;
|
|
95
|
+
}
|
|
96
|
+
} catch {
|
|
97
|
+
// @grafema/rfdb not installed
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// 6. User-installed binary in ~/.local/bin
|
|
101
|
+
const homeBinary = join(process.env.HOME || '', '.local', 'bin', 'rfdb-server');
|
|
102
|
+
if (existsSync(homeBinary)) {
|
|
103
|
+
return homeBinary;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Find monorepo root by looking for characteristic files
|
|
111
|
+
*/
|
|
112
|
+
function findMonorepoRoot(): string | null {
|
|
113
|
+
// Start from this file's location and walk up
|
|
114
|
+
const searchPaths = [
|
|
115
|
+
// From packages/core/src/utils -> packages/core -> packages -> root
|
|
116
|
+
join(__dirname, '..', '..', '..', '..'),
|
|
117
|
+
// Common development locations
|
|
118
|
+
process.env.GRAFEMA_ROOT,
|
|
119
|
+
].filter(Boolean) as string[];
|
|
120
|
+
|
|
121
|
+
for (const candidate of searchPaths) {
|
|
122
|
+
// Check for grafema monorepo markers
|
|
123
|
+
const hasPackagesDir = existsSync(join(candidate, 'packages', 'core'));
|
|
124
|
+
const hasRfdbServer = existsSync(join(candidate, 'packages', 'rfdb-server', 'Cargo.toml'));
|
|
125
|
+
if (hasPackagesDir && hasRfdbServer) {
|
|
126
|
+
return candidate;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Get human-readable error message when binary not found
|
|
135
|
+
*/
|
|
136
|
+
export function getBinaryNotFoundMessage(): string {
|
|
137
|
+
const platformDir = getPlatformDir();
|
|
138
|
+
return `RFDB server binary not found for ${platformDir}
|
|
139
|
+
|
|
140
|
+
Options:
|
|
141
|
+
1. Specify path: grafema server start --binary /path/to/rfdb-server
|
|
142
|
+
|
|
143
|
+
2. Add to config.yaml:
|
|
144
|
+
server:
|
|
145
|
+
binaryPath: /path/to/rfdb-server
|
|
146
|
+
|
|
147
|
+
3. Set environment variable:
|
|
148
|
+
export GRAFEMA_RFDB_SERVER=/path/to/rfdb-server
|
|
149
|
+
|
|
150
|
+
4. Build from source and install:
|
|
151
|
+
git clone https://github.com/Disentinel/grafema.git
|
|
152
|
+
cd grafema/packages/rfdb-server
|
|
153
|
+
cargo build --release
|
|
154
|
+
mkdir -p ~/.local/bin
|
|
155
|
+
cp target/release/rfdb-server ~/.local/bin/
|
|
156
|
+
|
|
157
|
+
5. Install prebuilt (if available for your platform):
|
|
158
|
+
npm install @grafema/rfdb
|
|
159
|
+
`;
|
|
160
|
+
}
|