@vulfram/transport-napi 0.22.4-alpha → 0.23.0-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.
@@ -1,9 +1,9 @@
1
1
  {
2
- "channel": "alpha",
3
- "version": "0.22.4-alpha",
2
+ "channel": "beta",
3
+ "version": "0.23.0-beta",
4
4
  "binding": "napi",
5
5
  "platform": "linux-arm64",
6
6
  "rust_target": "aarch64-unknown-linux-gnu",
7
7
  "artifact": "vulfram_core.node",
8
- "sha256": "0d84562044484efc65fcac5f976be654199c4f38e096cae35fc01330d40ead87"
8
+ "sha256": "fc6f9abbf6d665483ef14130de07f7204542949fc0e657ff540d8163fe794b2f"
9
9
  }
Binary file
@@ -1 +1 @@
1
- 0d84562044484efc65fcac5f976be654199c4f38e096cae35fc01330d40ead87
1
+ fc6f9abbf6d665483ef14130de07f7204542949fc0e657ff540d8163fe794b2f
@@ -1,9 +1,9 @@
1
1
  {
2
- "channel": "alpha",
3
- "version": "0.22.4-alpha",
2
+ "channel": "beta",
3
+ "version": "0.23.0-beta",
4
4
  "binding": "napi",
5
5
  "platform": "linux-x64",
6
6
  "rust_target": "x86_64-unknown-linux-gnu",
7
7
  "artifact": "vulfram_core.node",
8
- "sha256": "f6b98361946719cb5872dbeead4ab3523ce1b3aff9f281e42c41f4d262e52dfa"
8
+ "sha256": "4b66124161446465786be04b8bde6e0ba4652fc59f43cf20323f6edf536059b0"
9
9
  }
Binary file
@@ -1 +1 @@
1
- f6b98361946719cb5872dbeead4ab3523ce1b3aff9f281e42c41f4d262e52dfa
1
+ 4b66124161446465786be04b8bde6e0ba4652fc59f43cf20323f6edf536059b0
@@ -1,9 +1,9 @@
1
1
  {
2
- "channel": "alpha",
3
- "version": "0.22.4-alpha",
2
+ "channel": "beta",
3
+ "version": "0.23.0-beta",
4
4
  "binding": "napi",
5
5
  "platform": "macos-arm64",
6
6
  "rust_target": "aarch64-apple-darwin",
7
7
  "artifact": "vulfram_core.node",
8
- "sha256": "e31686727979b51c08946bbc7857d1127616ce7d99b8c40f86a37636169a09f0"
8
+ "sha256": "255ce0a65c2cb801a461739fd34af8eb532e35d93c2745b9940c7540ce3900c5"
9
9
  }
Binary file
@@ -1 +1 @@
1
- e31686727979b51c08946bbc7857d1127616ce7d99b8c40f86a37636169a09f0
1
+ 255ce0a65c2cb801a461739fd34af8eb532e35d93c2745b9940c7540ce3900c5
@@ -1,9 +1,9 @@
1
1
  {
2
- "channel": "alpha",
3
- "version": "0.22.4-alpha",
2
+ "channel": "beta",
3
+ "version": "0.23.0-beta",
4
4
  "binding": "napi",
5
5
  "platform": "macos-x64",
6
6
  "rust_target": "x86_64-apple-darwin",
7
7
  "artifact": "vulfram_core.node",
8
- "sha256": "006e0d7eb15ba8b60085271538a8f984f94cf1fe2990736f2dd8aadd15eac7b7"
8
+ "sha256": "0024737192f9631cebd610389c9dc9a9d73b0aff908f95b16a90662f81007c6f"
9
9
  }
Binary file
@@ -1 +1 @@
1
- 006e0d7eb15ba8b60085271538a8f984f94cf1fe2990736f2dd8aadd15eac7b7
1
+ 0024737192f9631cebd610389c9dc9a9d73b0aff908f95b16a90662f81007c6f
@@ -1,9 +1,9 @@
1
1
  {
2
- "channel": "alpha",
3
- "version": "0.22.4-alpha",
2
+ "channel": "beta",
3
+ "version": "0.23.0-beta",
4
4
  "binding": "napi",
5
5
  "platform": "windows-arm64",
6
6
  "rust_target": "aarch64-pc-windows-msvc",
7
7
  "artifact": "vulfram_core.node",
8
- "sha256": "90ab90a2566c3fb0ed8bc6f2837a55c7c0c1d310e8a7d6eac8d5c4bfcbe17d95"
8
+ "sha256": "da614f734783b184b312707f8ffe29d58ee16601d66e5e9638adf49a46096e15"
9
9
  }
@@ -1 +1 @@
1
- 90ab90a2566c3fb0ed8bc6f2837a55c7c0c1d310e8a7d6eac8d5c4bfcbe17d95
1
+ da614f734783b184b312707f8ffe29d58ee16601d66e5e9638adf49a46096e15
@@ -1,9 +1,9 @@
1
1
  {
2
- "channel": "alpha",
3
- "version": "0.22.4-alpha",
2
+ "channel": "beta",
3
+ "version": "0.23.0-beta",
4
4
  "binding": "napi",
5
5
  "platform": "windows-x64",
6
6
  "rust_target": "x86_64-pc-windows-msvc",
7
7
  "artifact": "vulfram_core.node",
8
- "sha256": "0706546100695b1db7c165b5cabbc87c29dd94dc7b412d01003f199ec1b189fc"
8
+ "sha256": "957079ae1b8c9410fd3ec6f56dac51020520606684a6a9ff1c43402511469d03"
9
9
  }
Binary file
@@ -1 +1 @@
1
- 0706546100695b1db7c165b5cabbc87c29dd94dc7b412d01003f199ec1b189fc
1
+ 957079ae1b8c9410fd3ec6f56dac51020520606684a6a9ff1c43402511469d03
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vulfram/transport-napi",
3
- "version": "0.22.4-alpha",
3
+ "version": "0.23.0-beta",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -8,10 +8,11 @@
8
8
  "directory": "packages/transport-napi"
9
9
  },
10
10
  "type": "module",
11
- "types": "dist/index.d.ts",
12
- "main": "dist/index.js",
13
- "module": "dist/index.js",
11
+ "types": "src/index.ts",
12
+ "main": "src/index.ts",
13
+ "module": "src/index.ts",
14
14
  "files": [
15
+ "src",
15
16
  "dist",
16
17
  "README.md"
17
18
  ],
@@ -22,6 +23,6 @@
22
23
  "@vulfram/transport-types": "^0.3.0"
23
24
  },
24
25
  "devDependencies": {
25
- "@types/bun": "^1.3.10"
26
+ "@types/bun": "^1.3.11"
26
27
  }
27
28
  }
@@ -0,0 +1,119 @@
1
+ import {
2
+ detectRuntime,
3
+ getArtifactFileName,
4
+ resolveNativePlatform,
5
+ selectPlatformLoader,
6
+ type PlatformLoaderMap
7
+ } from '@vulfram/transport-types';
8
+ import type { BufferResult } from './types';
9
+ import { createRequire } from 'module';
10
+ import { dirname, join } from 'path';
11
+ import { existsSync } from 'fs';
12
+ import { fileURLToPath } from 'url';
13
+
14
+ const requireNative = createRequire(import.meta.url);
15
+
16
+ const bundledLoaders: PlatformLoaderMap<{ default: string }> = {
17
+ darwin: {
18
+ arm64: () =>
19
+ // @ts-expect-error
20
+ import('../../dist/macos-arm64/vulfram_core.node', {
21
+ with: { type: 'file' }
22
+ }),
23
+ x64: () =>
24
+ // @ts-expect-error
25
+ import('../../dist/macos-x64/vulfram_core.node', {
26
+ with: { type: 'file' }
27
+ })
28
+ },
29
+ linux: {
30
+ arm64: () =>
31
+ // @ts-expect-error
32
+ import('../../dist/linux-arm64/vulfram_core.node', {
33
+ with: { type: 'file' }
34
+ }),
35
+ x64: () =>
36
+ // @ts-expect-error
37
+ import('../../dist/linux-x64/vulfram_core.node', {
38
+ with: { type: 'file' }
39
+ })
40
+ },
41
+ win32: {
42
+ arm64: () =>
43
+ // @ts-expect-error
44
+ import('../../dist/windows-arm64/vulfram_core.node', {
45
+ with: { type: 'file' }
46
+ }),
47
+ x64: () =>
48
+ // @ts-expect-error
49
+ import('../../dist/windows-x64/vulfram_core.node', {
50
+ with: { type: 'file' }
51
+ })
52
+ }
53
+ };
54
+
55
+ function getExpectedLocalArtifact(): string {
56
+ try {
57
+ const platform = resolveNativePlatform();
58
+ const filename = getArtifactFileName('napi', platform);
59
+ return `../../dist/${platform}/${filename}`;
60
+ } catch {
61
+ return '../../dist/<platform>/vulfram_core.node';
62
+ }
63
+ }
64
+
65
+ async function resolveNativeModulePath(): Promise<string> {
66
+ const platform = resolveNativePlatform();
67
+ const filename = getArtifactFileName('napi', platform);
68
+ const moduleDir = dirname(fileURLToPath(import.meta.url));
69
+ const candidates = [
70
+ join(moduleDir, '..', '..', 'dist', platform, filename),
71
+ join(moduleDir, platform, filename),
72
+ join(moduleDir, '..', platform, filename)
73
+ ];
74
+
75
+ try {
76
+ const resolved = candidates.find((candidate) => existsSync(candidate));
77
+ if (resolved) {
78
+ return resolved;
79
+ }
80
+
81
+ const importLoader = selectPlatformLoader(bundledLoaders, 'N-API');
82
+ return (await importLoader()).default;
83
+ } catch (error) {
84
+ const runtime = detectRuntime();
85
+ const expectedArtifact = getExpectedLocalArtifact();
86
+ throw new Error(
87
+ `Failed to load bundled N-API artifact (runtime=${runtime.runtime}, platform=${runtime.platform ?? 'unknown'}, arch=${runtime.arch ?? 'unknown'}, expected=${expectedArtifact}): ${String(error)}`
88
+ );
89
+ }
90
+ }
91
+
92
+ const modulePath = await resolveNativeModulePath();
93
+ const raw = requireNative(modulePath) as {
94
+ vulframInit: () => number;
95
+ vulframDispose: () => number;
96
+ vulframSendQueue: (buffer: Buffer) => number;
97
+ vulframReceiveQueue: () => BufferResult;
98
+ vulframReceiveEvents: () => BufferResult;
99
+ vulframUploadBuffer: (id: number, uploadType: number, buffer: Buffer) => number;
100
+ vulframTick: (timeMs: number, deltaMs: number) => number;
101
+ vulframGetProfiling: () => BufferResult;
102
+ };
103
+
104
+ export const VULFRAM_CORE = {
105
+ vulframInit: () => raw.vulframInit(),
106
+ vulframDispose: () => raw.vulframDispose(),
107
+ vulframReceiveQueue: () => raw.vulframReceiveQueue(),
108
+ vulframReceiveEvents: () => raw.vulframReceiveEvents(),
109
+ vulframTick: (timeMs: number, deltaMs: number) => raw.vulframTick(timeMs, deltaMs),
110
+ vulframGetProfiling: () => raw.vulframGetProfiling(),
111
+ vulframSendQueue: (buffer: Uint8Array) => {
112
+ const data = Buffer.isBuffer(buffer) ? buffer : Buffer.from(buffer);
113
+ return raw.vulframSendQueue(data);
114
+ },
115
+ vulframUploadBuffer: (id: number, uploadType: number, buffer: Uint8Array) => {
116
+ const data = Buffer.isBuffer(buffer) ? buffer : Buffer.from(buffer);
117
+ return raw.vulframUploadBuffer(id, uploadType, data);
118
+ }
119
+ };
@@ -0,0 +1,4 @@
1
+ export interface BufferResult {
2
+ buffer: Buffer;
3
+ result: number;
4
+ }
package/src/index.ts ADDED
@@ -0,0 +1,4 @@
1
+ import type { EngineTransportFactory } from '@vulfram/transport-types';
2
+ import { VULFRAM_CORE } from './bind/napi-loader';
3
+
4
+ export const transportNapi: EngineTransportFactory = () => VULFRAM_CORE;