@irsdk-node/native 4.0.2 → 4.1.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 +46 -46
- package/binding.gyp +28 -19
- package/dist/INativeSDK.d.ts +28 -0
- package/dist/INativeSDK.js +2 -0
- package/dist/MockSdk.d.ts +43 -0
- package/dist/MockSdk.js +70 -0
- package/dist/mock-data/loader.d.ts +3 -0
- package/dist/mock-data/loader.js +41 -0
- package/dist/mock-data/session.json +4305 -0
- package/dist/mock-data/telemetry.json +4986 -0
- package/{src/index.d.ts → index.d.ts} +5 -35
- package/index.js +36 -0
- package/lib/irsdk_client.cpp +495 -495
- package/lib/irsdk_client.h +139 -139
- package/lib/irsdk_defines.h +528 -528
- package/{src → lib}/irsdk_node.cc +404 -375
- package/{src → lib}/irsdk_node.h +49 -50
- package/lib/irsdk_node_mocked.cc +226 -0
- package/lib/irsdk_utils.cpp +377 -377
- package/lib/yaml_parser.cpp +176 -176
- package/lib/yaml_parser.h +34 -34
- package/package.json +37 -29
- package/prebuilds/darwin-arm64/@irsdk-node+native.node +0 -0
- package/prebuilds/linux-x64/@irsdk-node+native.node +0 -0
- package/prebuilds/win32-x64/@irsdk-node+native.node +0 -0
- package/build/Debug/irsdk_node.exp +0 -0
- package/build/Debug/irsdk_node.lib +0 -0
- package/build/Debug/irsdk_node.node +0 -0
- package/build/Debug/irsdk_node.pdb +0 -0
- package/build/Debug/obj/irsdk_node/irsdk_node.node.recipe +0 -11
- package/build/Debug/obj/irsdk_node/irsdk_node.tlog/CL.command.1.tlog +0 -0
- package/build/Debug/obj/irsdk_node/irsdk_node.tlog/CL.read.1.tlog +0 -0
- package/build/Debug/obj/irsdk_node/irsdk_node.tlog/CL.write.1.tlog +0 -0
- package/build/Debug/obj/irsdk_node/irsdk_node.tlog/Cl.items.tlog +0 -4
- package/build/Debug/obj/irsdk_node/irsdk_node.tlog/irsdk_node.lastbuildstate +0 -2
- package/build/Debug/obj/irsdk_node/irsdk_node.tlog/link.command.1.tlog +0 -0
- package/build/Debug/obj/irsdk_node/irsdk_node.tlog/link.read.1.tlog +0 -0
- package/build/Debug/obj/irsdk_node/irsdk_node.tlog/link.secondary.1.tlog +0 -3
- package/build/Debug/obj/irsdk_node/irsdk_node.tlog/link.write.1.tlog +0 -0
- package/build/Debug/obj/irsdk_node/lib/irsdk_utils.obj +0 -0
- package/build/Debug/obj/irsdk_node/lib/yaml_parser.obj +0 -0
- package/build/Debug/obj/irsdk_node/src/irsdk_node.obj +0 -0
- package/build/Debug/obj/irsdk_node/vcpkg.applocal.log +0 -1
- package/build/Debug/obj/irsdk_node/win_delay_load_hook.obj +0 -0
- package/build/Release/irsdk_node.exp +0 -0
- package/build/Release/irsdk_node.iobj +0 -0
- package/build/Release/irsdk_node.ipdb +0 -0
- package/build/Release/irsdk_node.lib +0 -0
- package/build/Release/irsdk_node.node +0 -0
- package/build/Release/irsdk_node.pdb +0 -0
- package/build/Release/obj/irsdk_node/irsdk_node.node.recipe +0 -11
- package/build/Release/obj/irsdk_node/irsdk_node.tlog/CL.command.1.tlog +0 -0
- package/build/Release/obj/irsdk_node/irsdk_node.tlog/CL.read.1.tlog +0 -0
- package/build/Release/obj/irsdk_node/irsdk_node.tlog/CL.write.1.tlog +0 -0
- package/build/Release/obj/irsdk_node/irsdk_node.tlog/Cl.items.tlog +0 -4
- package/build/Release/obj/irsdk_node/irsdk_node.tlog/irsdk_node.lastbuildstate +0 -2
- package/build/Release/obj/irsdk_node/irsdk_node.tlog/link.command.1.tlog +0 -0
- package/build/Release/obj/irsdk_node/irsdk_node.tlog/link.read.1.tlog +0 -0
- package/build/Release/obj/irsdk_node/irsdk_node.tlog/link.secondary.1.tlog +0 -5
- package/build/Release/obj/irsdk_node/irsdk_node.tlog/link.write.1.tlog +0 -0
- package/build/Release/obj/irsdk_node/lib/irsdk_utils.obj +0 -0
- package/build/Release/obj/irsdk_node/lib/yaml_parser.obj +0 -0
- package/build/Release/obj/irsdk_node/src/irsdk_node.obj +0 -0
- package/build/Release/obj/irsdk_node/vcpkg.applocal.log +0 -1
- package/build/Release/obj/irsdk_node/win_delay_load_hook.obj +0 -0
- package/build/binding.sln +0 -19
- package/build/config.gypi +0 -426
- package/build/irsdk_node.vcxproj +0 -157
- package/build/irsdk_node.vcxproj.filters +0 -73
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -13
- package/src/index.js +0 -11
package/{src → lib}/irsdk_node.h
RENAMED
|
@@ -1,50 +1,49 @@
|
|
|
1
|
-
#ifndef IRSDK_NODE_H
|
|
2
|
-
#define IRSDK_NODE_H
|
|
3
|
-
|
|
4
|
-
#include <napi.h>
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
Napi::Value
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
//
|
|
21
|
-
|
|
22
|
-
Napi::Value
|
|
23
|
-
Napi::Value
|
|
24
|
-
Napi::Value
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
Napi::Value
|
|
28
|
-
Napi::Value
|
|
29
|
-
Napi::Value
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
Napi::Value
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
Napi::Object
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
int
|
|
45
|
-
int
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
#endif
|
|
1
|
+
#ifndef IRSDK_NODE_H
|
|
2
|
+
#define IRSDK_NODE_H
|
|
3
|
+
|
|
4
|
+
#include <napi.h>
|
|
5
|
+
|
|
6
|
+
class iRacingSdkNode : public Napi::ObjectWrap<iRacingSdkNode>
|
|
7
|
+
{
|
|
8
|
+
public:
|
|
9
|
+
static Napi::Object Init(Napi::Env env, Napi::Object exports);
|
|
10
|
+
iRacingSdkNode(const Napi::CallbackInfo& info);
|
|
11
|
+
|
|
12
|
+
private:
|
|
13
|
+
// Properties
|
|
14
|
+
Napi::Value GetCurrSessionDataVersion(const Napi::CallbackInfo &info);
|
|
15
|
+
Napi::Value GetEnableLogging(const Napi::CallbackInfo &info);
|
|
16
|
+
void SetEnableLogging(const Napi::CallbackInfo &info, const Napi::Value &value);
|
|
17
|
+
Napi::Value GetIsMocked(const Napi::CallbackInfo &info);
|
|
18
|
+
|
|
19
|
+
// Methods
|
|
20
|
+
// Control
|
|
21
|
+
Napi::Value StartSdk(const Napi::CallbackInfo &info);
|
|
22
|
+
Napi::Value StopSdk(const Napi::CallbackInfo &info);
|
|
23
|
+
Napi::Value WaitForData(const Napi::CallbackInfo &info);
|
|
24
|
+
Napi::Value BroadcastMessage(const Napi::CallbackInfo &info);
|
|
25
|
+
// Getters
|
|
26
|
+
Napi::Value IsRunning(const Napi::CallbackInfo &info);
|
|
27
|
+
Napi::Value GetSessionVersionNum(const Napi::CallbackInfo &info);
|
|
28
|
+
Napi::Value GetSessionData(const Napi::CallbackInfo &info);
|
|
29
|
+
Napi::Value GetTelemetryData(const Napi::CallbackInfo &info);
|
|
30
|
+
// Helpers
|
|
31
|
+
Napi::Value __GetTelemetryTypes(const Napi::CallbackInfo &info);
|
|
32
|
+
Napi::Value GetTelemetryVar(const Napi::CallbackInfo &info);
|
|
33
|
+
|
|
34
|
+
bool GetTelemetryBool(int entry, int index);
|
|
35
|
+
int GetTelemetryInt(int entry, int index);
|
|
36
|
+
float GetTelemetryFloat(int entry, int index);
|
|
37
|
+
double GetTelemetryDouble(int entry, int index);
|
|
38
|
+
Napi::Object GetTelemetryVarByIndex(const Napi::Env env, int index);
|
|
39
|
+
Napi::Object GetTelemetryVar(const Napi::Env env, const char *varName);
|
|
40
|
+
|
|
41
|
+
bool _loggingEnabled;
|
|
42
|
+
char* _data;
|
|
43
|
+
int _bufLineLen;
|
|
44
|
+
int _sessionStatusID;
|
|
45
|
+
int _lastSessionCt;
|
|
46
|
+
const char* _sessionData;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
#endif
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
#include "./irsdk_node.h"
|
|
2
|
+
#include "./yaml_parser.h"
|
|
3
|
+
|
|
4
|
+
const char *MOCK_PROP_NAME = "__mocked";
|
|
5
|
+
|
|
6
|
+
// ---------------------------
|
|
7
|
+
// Constructors
|
|
8
|
+
// ---------------------------
|
|
9
|
+
Napi::Object iRacingSdkNode::Init(Napi::Env env, Napi::Object exports)
|
|
10
|
+
{
|
|
11
|
+
Napi::Function func = DefineClass(env, "iRacingSdkNode", {
|
|
12
|
+
// Properties
|
|
13
|
+
InstanceAccessor<&iRacingSdkNode::GetCurrSessionDataVersion>("currDataVersion"),
|
|
14
|
+
InstanceAccessor<&iRacingSdkNode::GetEnableLogging, &iRacingSdkNode::SetEnableLogging>("enableLogging"),
|
|
15
|
+
InstanceAccessor<&iRacingSdkNode::GetIsMocked>("isMocked"),
|
|
16
|
+
|
|
17
|
+
// Methods
|
|
18
|
+
// Control
|
|
19
|
+
InstanceMethod<&iRacingSdkNode::StartSdk>("startSDK"),
|
|
20
|
+
InstanceMethod("stopSDK", &iRacingSdkNode::StopSdk),
|
|
21
|
+
InstanceMethod("waitForData", &iRacingSdkNode::WaitForData),
|
|
22
|
+
InstanceMethod("broadcast", &iRacingSdkNode::BroadcastMessage),
|
|
23
|
+
// Getters
|
|
24
|
+
InstanceMethod("isRunning", &iRacingSdkNode::IsRunning),
|
|
25
|
+
InstanceMethod("getSessionVersionNum", &iRacingSdkNode::GetSessionVersionNum),
|
|
26
|
+
InstanceMethod("getSessionData", &iRacingSdkNode::GetSessionData),
|
|
27
|
+
InstanceMethod("getTelemetryData", &iRacingSdkNode::GetTelemetryData),
|
|
28
|
+
InstanceMethod("getTelemetryVariable", &iRacingSdkNode::GetTelemetryVar),
|
|
29
|
+
// Helpers
|
|
30
|
+
InstanceMethod("__getTelemetryTypes", &iRacingSdkNode::__GetTelemetryTypes),
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
Napi::FunctionReference *constructor = new Napi::FunctionReference();
|
|
34
|
+
*constructor = Napi::Persistent(func);
|
|
35
|
+
env.SetInstanceData(constructor);
|
|
36
|
+
|
|
37
|
+
exports.Set("iRacingSdkNode", func);
|
|
38
|
+
return exports;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
iRacingSdkNode::iRacingSdkNode(const Napi::CallbackInfo &info)
|
|
42
|
+
: Napi::ObjectWrap<iRacingSdkNode>(info), _data(NULL), _bufLineLen(0), _sessionStatusID(0), _lastSessionCt(-1), _sessionData(NULL), _loggingEnabled(false)
|
|
43
|
+
{
|
|
44
|
+
printf("Initializing mock iRacingSdkNode\n");
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// ---------------------------
|
|
48
|
+
// Property implementations
|
|
49
|
+
// ---------------------------
|
|
50
|
+
Napi::Value iRacingSdkNode::GetCurrSessionDataVersion(const Napi::CallbackInfo &info)
|
|
51
|
+
{
|
|
52
|
+
int ver = this->_lastSessionCt;
|
|
53
|
+
return Napi::Number::New(info.Env(), ver);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
Napi::Value iRacingSdkNode::GetEnableLogging(const Napi::CallbackInfo &info)
|
|
57
|
+
{
|
|
58
|
+
bool enabled = this->_loggingEnabled;
|
|
59
|
+
return Napi::Boolean::New(info.Env(), enabled);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
void iRacingSdkNode::SetEnableLogging(const Napi::CallbackInfo &info, const Napi::Value &value)
|
|
63
|
+
{
|
|
64
|
+
Napi::Boolean enable;
|
|
65
|
+
if (info.Length() <= 0 || !info[0].IsBoolean())
|
|
66
|
+
{
|
|
67
|
+
enable = Napi::Boolean::New(info.Env(), false);
|
|
68
|
+
}
|
|
69
|
+
else
|
|
70
|
+
{
|
|
71
|
+
enable = info[0].As<Napi::Boolean>();
|
|
72
|
+
}
|
|
73
|
+
this->_loggingEnabled = enable;
|
|
74
|
+
if (this->_loggingEnabled)
|
|
75
|
+
printf("iRacingSDK Logging enabled\n");
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
Napi::Value iRacingSdkNode::GetIsMocked(const Napi::CallbackInfo &info)
|
|
79
|
+
{
|
|
80
|
+
return Napi::Boolean::New(info.Env(), true);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// ---------------------------
|
|
84
|
+
// Instance implementations
|
|
85
|
+
// ---------------------------
|
|
86
|
+
// SDK Control
|
|
87
|
+
Napi::Value iRacingSdkNode::StartSdk(const Napi::CallbackInfo &info)
|
|
88
|
+
{
|
|
89
|
+
if (this->_loggingEnabled)
|
|
90
|
+
printf("Starting Mock SDK...\n");
|
|
91
|
+
return Napi::Boolean::New(info.Env(), true);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
Napi::Value iRacingSdkNode::StopSdk(const Napi::CallbackInfo &info)
|
|
95
|
+
{
|
|
96
|
+
return Napi::Boolean::New(info.Env(), true);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
Napi::Value iRacingSdkNode::WaitForData(const Napi::CallbackInfo &info)
|
|
100
|
+
{
|
|
101
|
+
return Napi::Boolean::New(info.Env(), true);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
Napi::Value iRacingSdkNode::BroadcastMessage(const Napi::CallbackInfo &info)
|
|
105
|
+
{
|
|
106
|
+
auto env = info.Env();
|
|
107
|
+
|
|
108
|
+
// Determine message type
|
|
109
|
+
if (info.Length() <= 2 || !info[0].IsNumber())
|
|
110
|
+
{
|
|
111
|
+
return Napi::Boolean::New(env, false);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
if (info.Length() == 4 && !info[2].IsNumber())
|
|
115
|
+
{
|
|
116
|
+
return Napi::Boolean::New(env, false);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
return Napi::Boolean::New(env, true);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// SDK State Getters
|
|
123
|
+
Napi::Value iRacingSdkNode::IsRunning(const Napi::CallbackInfo &info)
|
|
124
|
+
{
|
|
125
|
+
return Napi::Boolean::New(info.Env(), true);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
Napi::Value iRacingSdkNode::GetSessionVersionNum(const Napi::CallbackInfo &info)
|
|
129
|
+
{
|
|
130
|
+
return Napi::Number::New(info.Env(), 1);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
Napi::Value iRacingSdkNode::GetSessionData(const Napi::CallbackInfo &info)
|
|
134
|
+
{
|
|
135
|
+
return Napi::String::New(info.Env(), MOCK_PROP_NAME);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
Napi::Value iRacingSdkNode::GetTelemetryVar(const Napi::CallbackInfo &info)
|
|
139
|
+
{
|
|
140
|
+
Napi::Env env = info.Env();
|
|
141
|
+
|
|
142
|
+
int varIndex;
|
|
143
|
+
if (info.Length() <= 0)
|
|
144
|
+
{
|
|
145
|
+
varIndex = 0;
|
|
146
|
+
}
|
|
147
|
+
else if (!info[0].IsNumber())
|
|
148
|
+
{
|
|
149
|
+
if (info[0].IsString())
|
|
150
|
+
{
|
|
151
|
+
auto obj = Napi::Object::New(env);
|
|
152
|
+
obj.Set(MOCK_PROP_NAME, true);
|
|
153
|
+
return obj;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
varIndex = 0;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
return this->GetTelemetryVarByIndex(env, varIndex);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
Napi::Value iRacingSdkNode::GetTelemetryData(const Napi::CallbackInfo &info)
|
|
163
|
+
{
|
|
164
|
+
auto env = info.Env();
|
|
165
|
+
auto telemVars = Napi::Object::New(env);
|
|
166
|
+
telemVars.Set(MOCK_PROP_NAME, true);
|
|
167
|
+
return telemVars;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// Helpers
|
|
171
|
+
Napi::Value iRacingSdkNode::__GetTelemetryTypes(const Napi::CallbackInfo &info)
|
|
172
|
+
{
|
|
173
|
+
auto env = info.Env();
|
|
174
|
+
auto result = Napi::Object::New(env);
|
|
175
|
+
result.Set(MOCK_PROP_NAME, true);
|
|
176
|
+
return result;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// ---------------------------
|
|
180
|
+
// Helper functions
|
|
181
|
+
// ---------------------------
|
|
182
|
+
bool iRacingSdkNode::GetTelemetryBool(int entry, int index)
|
|
183
|
+
{
|
|
184
|
+
return false;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
int iRacingSdkNode::GetTelemetryInt(int entry, int index)
|
|
188
|
+
{
|
|
189
|
+
return 0;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
float iRacingSdkNode::GetTelemetryFloat(int entry, int index)
|
|
193
|
+
{
|
|
194
|
+
return 0.0f;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
double iRacingSdkNode::GetTelemetryDouble(int entry, int index)
|
|
198
|
+
{
|
|
199
|
+
// Each double is 8 bytes
|
|
200
|
+
return 0.0;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
Napi::Object iRacingSdkNode::GetTelemetryVarByIndex(const Napi::Env env, int index)
|
|
204
|
+
{
|
|
205
|
+
auto telemVar = Napi::Object::New(env);
|
|
206
|
+
telemVar.Set(MOCK_PROP_NAME, true);
|
|
207
|
+
return telemVar;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
Napi::Object iRacingSdkNode::GetTelemetryVar(const Napi::Env env, const char *varName)
|
|
211
|
+
{
|
|
212
|
+
auto obj = Napi::Object::New(env);
|
|
213
|
+
obj.Set(MOCK_PROP_NAME, true);
|
|
214
|
+
return obj;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
Napi::Object InitAll(Napi::Env env, Napi::Object exports)
|
|
218
|
+
{
|
|
219
|
+
iRacingSdkNode::Init(env, exports);
|
|
220
|
+
|
|
221
|
+
exports.Set("mockedSdk", true);
|
|
222
|
+
|
|
223
|
+
return exports;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
NODE_API_MODULE(NODE_GYP_MODULE_NAME, InitAll);
|