@irsdk-node/native 5.0.0 → 5.2.0

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 CHANGED
@@ -113,3 +113,21 @@ $ pnpm clean
113
113
  # Lint package
114
114
  $ pnpm lint
115
115
  ```
116
+
117
+ #### ⚠️ C++ Build errors from prebuildify/node-gyp
118
+
119
+ If the C++ build fails with an error similar to:
120
+
121
+ ```
122
+ gyp: /<path>/<to>/common.gypi not found (cwd: /<cwd>/<path>) while reading includes of binding.gyp...
123
+ ```
124
+
125
+ Then try looking for your global node-gyp and prebuildify caches. On Windows, they should be somewhere around:
126
+
127
+ - Node-gyp:
128
+ - `C:\Users\<YourUser>\AppData\Local\node-gyp`
129
+ - `C:\Users\<YourUser>\AppData\Local\.node-gyp`
130
+ - Prebuildify:
131
+ - `C:\Users\<YourUser>\AppData\Local\Temp\prebuildify`
132
+
133
+ Once cleared, you can try running `pnpm clean && pnpm build` again. Prebuildify and Node-GYP should then attempt to do a fresh install before attempting to build.
package/binding.gyp CHANGED
@@ -3,19 +3,11 @@
3
3
  {
4
4
  "target_name": "irsdk_node",
5
5
  "sources": [
6
- "lib/yaml_parser.cpp",
7
- ],
8
- "conditions": [
9
- ["OS=='win'", {
10
- "sources": [
11
- "lib/irsdk_node.cc",
12
- "lib/irsdk_utils.cpp",
13
- "lib/irsdk_defines.h"
14
- ]
15
- }],
16
- ["OS!='win'", {
17
- "sources": ["lib/irsdk_node_mocked.cc"]
18
- }]
6
+ "lib/root.cpp",
7
+ "lib/logger.cpp",
8
+ "lib/irsdk_node.cpp",
9
+ "lib/irsdk_utils.cpp",
10
+ "lib/irsdk_defines.h"
19
11
  ],
20
12
  "defines": [
21
13
  "NAPI_DISABLE_CPP_EXCEPTIONS",
@@ -9336,6 +9336,7 @@ var require_telemetry = __commonJS({
9336
9336
  // src/index.ts
9337
9337
  var index_exports = {};
9338
9338
  __export(index_exports, {
9339
+ LogLevel: () => LogLevel,
9339
9340
  NativeSDK: () => NativeSDK,
9340
9341
  sdkIsMocked: () => sdkIsMocked
9341
9342
  });
@@ -9351,6 +9352,16 @@ var import_node_gyp_build = __toESM(require("node-gyp-build"), 1);
9351
9352
  // src/MockSdk.ts
9352
9353
  var import_node_console = require("node:console");
9353
9354
 
9355
+ // src/INativeSDK.ts
9356
+ var LogLevel = /* @__PURE__ */ ((LogLevel2) => {
9357
+ LogLevel2[LogLevel2["None"] = 0] = "None";
9358
+ LogLevel2[LogLevel2["Error"] = 1] = "Error";
9359
+ LogLevel2[LogLevel2["Warn"] = 2] = "Warn";
9360
+ LogLevel2[LogLevel2["Info"] = 3] = "Info";
9361
+ LogLevel2[LogLevel2["Debug"] = 4] = "Debug";
9362
+ return LogLevel2;
9363
+ })(LogLevel || {});
9364
+
9354
9365
  // src/mock-data/loader.ts
9355
9366
  var import_js_yaml = require("js-yaml");
9356
9367
  var loadMockSessionData = async () => {
@@ -9369,6 +9380,7 @@ var MockSDK = class {
9369
9380
  currDataVersion = 1;
9370
9381
  isMocked = true;
9371
9382
  enableLogging = false;
9383
+ logLevel = 0 /* None */;
9372
9384
  _isRunning = false;
9373
9385
  constructor() {
9374
9386
  this._loadMockData().catch((reason) => {
@@ -9398,14 +9410,21 @@ var MockSDK = class {
9398
9410
  return this._isRunning;
9399
9411
  }
9400
9412
  waitForData(_timeout) {
9401
- return this._isRunning;
9413
+ const dataNotReady = !mockSession || !mockTelemetry;
9414
+ return this._isRunning && !dataNotReady;
9402
9415
  }
9403
9416
  getSessionData() {
9404
9417
  return mockSession ?? "";
9405
9418
  }
9419
+ getSessionConnectionID() {
9420
+ return mockSession ? 1 : -1;
9421
+ }
9422
+ getSessionVersionNum() {
9423
+ return mockSession ? 1 : -1;
9424
+ }
9406
9425
  getTelemetryData() {
9407
9426
  if (!mockTelemetry) {
9408
- throw new Error("Attempted accessing mock telemetry before it was loaded.");
9427
+ return {};
9409
9428
  }
9410
9429
  return mockTelemetry;
9411
9430
  }
@@ -9418,8 +9437,9 @@ var MockSDK = class {
9418
9437
  }
9419
9438
  return mockTelemetry[name];
9420
9439
  }
9421
- broadcast(...args) {
9422
- (0, import_node_console.log)("Mocking SDK call:", ...args);
9440
+ broadcast(message, ...args) {
9441
+ (0, import_node_console.log)("Mocking SDK call:", message, ...args);
9442
+ return true;
9423
9443
  }
9424
9444
  __getTelemetryTypes() {
9425
9445
  return {};
@@ -9429,16 +9449,11 @@ var MockSDK = class {
9429
9449
  // src/index.ts
9430
9450
  var DIR_NAME = getDirname();
9431
9451
  var sdkBinding;
9432
- var isMocked;
9452
+ var isMocked = false;
9433
9453
  try {
9434
9454
  const rootDir = (0, import_node_path.join)(DIR_NAME, "../..");
9435
9455
  const binding = (0, import_node_gyp_build.default)(rootDir);
9436
- isMocked = binding.mockedSdk;
9437
- if (isMocked) {
9438
- sdkBinding = MockSDK;
9439
- } else {
9440
- sdkBinding = binding.iRacingSdkNode;
9441
- }
9456
+ sdkBinding = binding.iRacingSdkNode;
9442
9457
  } catch {
9443
9458
  console.warn("Failed to load native iRacing SDK module. Loading mock SDK instead.");
9444
9459
  isMocked = true;
@@ -9448,6 +9463,7 @@ var NativeSDK = sdkBinding;
9448
9463
  var sdkIsMocked = isMocked;
9449
9464
  // Annotate the CommonJS export names for ESM import in node:
9450
9465
  0 && (module.exports = {
9466
+ LogLevel,
9451
9467
  NativeSDK,
9452
9468
  sdkIsMocked
9453
9469
  });
package/dist/esm/index.js CHANGED
@@ -9339,6 +9339,16 @@ import importNativeModule from "node-gyp-build";
9339
9339
  // src/MockSdk.ts
9340
9340
  import { error, warn, log } from "node:console";
9341
9341
 
9342
+ // src/INativeSDK.ts
9343
+ var LogLevel = /* @__PURE__ */ ((LogLevel2) => {
9344
+ LogLevel2[LogLevel2["None"] = 0] = "None";
9345
+ LogLevel2[LogLevel2["Error"] = 1] = "Error";
9346
+ LogLevel2[LogLevel2["Warn"] = 2] = "Warn";
9347
+ LogLevel2[LogLevel2["Info"] = 3] = "Info";
9348
+ LogLevel2[LogLevel2["Debug"] = 4] = "Debug";
9349
+ return LogLevel2;
9350
+ })(LogLevel || {});
9351
+
9342
9352
  // src/mock-data/loader.ts
9343
9353
  import { dump } from "js-yaml";
9344
9354
  var loadMockSessionData = async () => {
@@ -9357,6 +9367,7 @@ var MockSDK = class {
9357
9367
  currDataVersion = 1;
9358
9368
  isMocked = true;
9359
9369
  enableLogging = false;
9370
+ logLevel = 0 /* None */;
9360
9371
  _isRunning = false;
9361
9372
  constructor() {
9362
9373
  this._loadMockData().catch((reason) => {
@@ -9386,14 +9397,21 @@ var MockSDK = class {
9386
9397
  return this._isRunning;
9387
9398
  }
9388
9399
  waitForData(_timeout) {
9389
- return this._isRunning;
9400
+ const dataNotReady = !mockSession || !mockTelemetry;
9401
+ return this._isRunning && !dataNotReady;
9390
9402
  }
9391
9403
  getSessionData() {
9392
9404
  return mockSession ?? "";
9393
9405
  }
9406
+ getSessionConnectionID() {
9407
+ return mockSession ? 1 : -1;
9408
+ }
9409
+ getSessionVersionNum() {
9410
+ return mockSession ? 1 : -1;
9411
+ }
9394
9412
  getTelemetryData() {
9395
9413
  if (!mockTelemetry) {
9396
- throw new Error("Attempted accessing mock telemetry before it was loaded.");
9414
+ return {};
9397
9415
  }
9398
9416
  return mockTelemetry;
9399
9417
  }
@@ -9406,8 +9424,9 @@ var MockSDK = class {
9406
9424
  }
9407
9425
  return mockTelemetry[name];
9408
9426
  }
9409
- broadcast(...args) {
9410
- log("Mocking SDK call:", ...args);
9427
+ broadcast(message, ...args) {
9428
+ log("Mocking SDK call:", message, ...args);
9429
+ return true;
9411
9430
  }
9412
9431
  __getTelemetryTypes() {
9413
9432
  return {};
@@ -9417,16 +9436,11 @@ var MockSDK = class {
9417
9436
  // src/index.ts
9418
9437
  var DIR_NAME = getDirname();
9419
9438
  var sdkBinding;
9420
- var isMocked;
9439
+ var isMocked = false;
9421
9440
  try {
9422
9441
  const rootDir = join(DIR_NAME, "../..");
9423
9442
  const binding = importNativeModule(rootDir);
9424
- isMocked = binding.mockedSdk;
9425
- if (isMocked) {
9426
- sdkBinding = MockSDK;
9427
- } else {
9428
- sdkBinding = binding.iRacingSdkNode;
9429
- }
9443
+ sdkBinding = binding.iRacingSdkNode;
9430
9444
  } catch {
9431
9445
  console.warn("Failed to load native iRacing SDK module. Loading mock SDK instead.");
9432
9446
  isMocked = true;
@@ -9435,6 +9449,7 @@ try {
9435
9449
  var NativeSDK = sdkBinding;
9436
9450
  var sdkIsMocked = isMocked;
9437
9451
  export {
9452
+ LogLevel,
9438
9453
  NativeSDK,
9439
9454
  sdkIsMocked
9440
9455
  };
@@ -1,5 +1,12 @@
1
- import { BroadcastMessages, CameraState, ChatCommand, FFBCommand, PitCommand, ReloadTexturesCommand, ReplayPositionCommand, ReplaySearchCommand, ReplayStateCommand, TelemetryCommand, TelemetryVariable, TelemetryVarList, VideoCaptureCommand } from '@irsdk-node/types';
1
+ import { BroadcastCommand, BroadcastCommandArgs, TelemetryVariable, TelemetryVarList } from '@irsdk-node/types';
2
2
  export type TelemetryTypesDict = Record<string, number>;
3
+ export declare enum LogLevel {
4
+ None = 0,
5
+ Error = 1,
6
+ Warn = 2,
7
+ Info = 3,
8
+ Debug = 4
9
+ }
3
10
  /**
4
11
  * Interface of the iRacing SDK native module.
5
12
  *
@@ -9,29 +16,20 @@ export type TelemetryTypesDict = Record<string, number>;
9
16
  export interface INativeSDK {
10
17
  readonly currDataVersion: number;
11
18
  readonly isMocked: boolean;
19
+ /** @deprecated use .logLevel instead */
12
20
  enableLogging: boolean;
21
+ logLevel: LogLevel;
13
22
  startSDK(): boolean;
14
23
  stopSDK(): void;
15
24
  isRunning(): boolean;
16
25
  waitForData(timeout?: number): boolean;
17
26
  getSessionData(): string;
18
27
  getTelemetryData(): TelemetryVarList;
28
+ getSessionVersionNum(): number;
29
+ getSessionConnectionID(): number;
19
30
  getTelemetryVariable<T>(index: number): TelemetryVariable<T>;
20
31
  getTelemetryVariable<T>(name: string): TelemetryVariable<T>;
21
32
  __getTelemetryTypes(): TelemetryTypesDict;
22
- broadcast(message: BroadcastMessages.CameraSwitchPos, pos: number, group: number, camera: number): void;
23
- broadcast(message: BroadcastMessages.CameraSwitchNum, driver: number, group: number, camera: number): void;
24
- broadcast(message: BroadcastMessages.CameraSetState, state: CameraState): void;
25
- broadcast(message: BroadcastMessages.ReplaySetPlaySpeed, speed: number, slowMotion: number): void;
26
- broadcast(message: BroadcastMessages.ReplaySetPlayPosition, pos: ReplayPositionCommand, frame: number): void;
27
- broadcast(message: BroadcastMessages.ReplaySearch, mode: ReplaySearchCommand): void;
28
- broadcast(message: BroadcastMessages.ReplaySetState, state: ReplayStateCommand): void;
29
- broadcast(message: BroadcastMessages.ReloadTextures, command: ReloadTexturesCommand, carIndex?: number): void;
30
- broadcast(message: BroadcastMessages.ChatCommand, command: ChatCommand, macro?: number): void;
31
- broadcast(message: BroadcastMessages.PitCommand, command: PitCommand, param?: number): void;
32
- broadcast(message: BroadcastMessages.TelemCommand, command: TelemetryCommand): void;
33
- broadcast(message: BroadcastMessages.FFBCommand, command: FFBCommand, value: number): void;
34
- broadcast(message: BroadcastMessages.ReplaySearchSessionTime, session: number, time: number): void;
35
- broadcast(message: BroadcastMessages.VideoCapture, command: VideoCaptureCommand): void;
33
+ broadcast<Command extends BroadcastCommand = BroadcastCommand>(message: Command, ...args: BroadcastCommandArgs<Command>): boolean;
36
34
  }
37
35
  export type NativeSDKImpl = new () => INativeSDK;
@@ -1,5 +1,5 @@
1
- import { BroadcastMessages, CameraState, ChatCommand, FFBCommand, PitCommand, ReloadTexturesCommand, ReplayPositionCommand, ReplaySearchCommand, ReplayStateCommand, TelemetryCommand, TelemetryVariable, TelemetryVarList, VideoCaptureCommand } from '@irsdk-node/types';
2
- import type { INativeSDK, TelemetryTypesDict } from './INativeSDK.js';
1
+ import { BroadcastCommand, BroadcastCommandArgs, TelemetryVariable, TelemetryVarList } from '@irsdk-node/types';
2
+ import { LogLevel, type INativeSDK, type TelemetryTypesDict } from './INativeSDK.js';
3
3
  type TelemetryVarKey = keyof TelemetryVarList;
4
4
  type TelemetryResultTypes = boolean | number | string;
5
5
  /**
@@ -14,6 +14,7 @@ export declare class MockSDK implements INativeSDK {
14
14
  currDataVersion: number;
15
15
  isMocked: boolean;
16
16
  enableLogging: boolean;
17
+ logLevel: LogLevel;
17
18
  private _isRunning;
18
19
  constructor();
19
20
  private _loadMockData;
@@ -22,23 +23,12 @@ export declare class MockSDK implements INativeSDK {
22
23
  isRunning(): boolean;
23
24
  waitForData(_timeout?: number): boolean;
24
25
  getSessionData(): string;
26
+ getSessionConnectionID(): number;
27
+ getSessionVersionNum(): number;
25
28
  getTelemetryData(): TelemetryVarList;
26
29
  getTelemetryVariable<T extends TelemetryResultTypes>(index: number): TelemetryVariable<T[]>;
27
30
  getTelemetryVariable<T extends TelemetryResultTypes>(name: TelemetryVarKey): TelemetryVariable<T[]>;
28
- broadcast(message: BroadcastMessages.CameraSwitchPos, pos: number, group: number, camera: number): void;
29
- broadcast(message: BroadcastMessages.CameraSwitchNum, driver: number, group: number, camera: number): void;
30
- broadcast(message: BroadcastMessages.CameraSetState, state: CameraState): void;
31
- broadcast(message: BroadcastMessages.ReplaySetPlaySpeed, speed: number, slowMotion: number): void;
32
- broadcast(message: BroadcastMessages.ReplaySetPlayPosition, pos: ReplayPositionCommand, frame: number): void;
33
- broadcast(message: BroadcastMessages.ReplaySearch, mode: ReplaySearchCommand): void;
34
- broadcast(message: BroadcastMessages.ReplaySetState, state: ReplayStateCommand): void;
35
- broadcast(message: BroadcastMessages.ReloadTextures, command: ReloadTexturesCommand, carIndex?: number): void;
36
- broadcast(message: BroadcastMessages.ChatCommand, command: ChatCommand, macro?: number): void;
37
- broadcast(message: BroadcastMessages.PitCommand, command: PitCommand, param?: number): void;
38
- broadcast(message: BroadcastMessages.TelemCommand, command: TelemetryCommand): void;
39
- broadcast(message: BroadcastMessages.FFBCommand, command: FFBCommand, value: number): void;
40
- broadcast(message: BroadcastMessages.ReplaySearchSessionTime, session: number, time: number): void;
41
- broadcast(message: BroadcastMessages.VideoCapture, command: VideoCaptureCommand): void;
31
+ broadcast<Command extends BroadcastCommand = BroadcastCommand>(message: Command, ...args: BroadcastCommandArgs<Command>): boolean;
42
32
  __getTelemetryTypes(): TelemetryTypesDict;
43
33
  }
44
34
  export {};
@@ -1,4 +1,5 @@
1
1
  import { NativeSDKImpl } from './INativeSDK.js';
2
2
  export declare const NativeSDK: NativeSDKImpl;
3
3
  export declare const sdkIsMocked: boolean;
4
+ export { LogLevel } from './INativeSDK.js';
4
5
  export type { INativeSDK, TelemetryTypesDict } from './INativeSDK.js';