@multiplayer-app/session-recorder-node 1.2.6 → 1.2.10
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 +72 -9
- package/dist/sessionRecorder.d.ts.map +1 -1
- package/dist/sessionRecorder.js +3 -3
- package/dist/sessionRecorder.js.map +1 -1
- package/examples/cli/package.json +2 -2
- package/examples/cli/src/index.ts +1 -1
- package/examples/http-server/package.json +2 -2
- package/package.json +3 -3
- package/src/sessionRecorder.ts +3 -3
package/README.md
CHANGED
|
@@ -76,10 +76,10 @@ import { OTLPLogExporter } from "@opentelemetry/exporter-logs-otlp-http"
|
|
|
76
76
|
// set up Multiplayer exporters. Note: GRPC exporters are also available.
|
|
77
77
|
// see: `SessionRecorderGrpcTraceExporter` and `SessionRecorderGrpcLogsExporter`
|
|
78
78
|
const multiplayerTraceExporter = new SessionRecorderHttpTraceExporter({
|
|
79
|
-
apiKey: "
|
|
79
|
+
apiKey: "MULTIPLAYER_API_KEY", // note: replace with your Multiplayer API key
|
|
80
80
|
})
|
|
81
81
|
const multiplayerLogExporter = new SessionRecorderHttpLogsExporter({
|
|
82
|
-
apiKey: "
|
|
82
|
+
apiKey: "MULTIPLAYER_API_KEY", // note: replace with your Multiplayer API key
|
|
83
83
|
})
|
|
84
84
|
|
|
85
85
|
// Multiplayer exporter wrappers filter out session recording atrtributes before passing to provided exporter
|
|
@@ -183,6 +183,10 @@ See an additional example below.
|
|
|
183
183
|
|
|
184
184
|
Use the following code below to initialize and run the session recorder.
|
|
185
185
|
|
|
186
|
+
The example relies on [opentelemetry.ts](./examples/cli/src/opentelemetry.ts). Copy that file and put it next to quick start code.
|
|
187
|
+
|
|
188
|
+
### Initialize
|
|
189
|
+
|
|
186
190
|
```javascript
|
|
187
191
|
// IMPORTANT: set up OpenTelemetry
|
|
188
192
|
// for an example see ./examples/cli/src/opentelemetry.ts
|
|
@@ -198,21 +202,27 @@ import {
|
|
|
198
202
|
} from "@multiplayer-app/session-recorder-node"
|
|
199
203
|
|
|
200
204
|
SessionRecorder.init({
|
|
201
|
-
apiKey: "
|
|
205
|
+
apiKey: "MULTIPLAYER_API_KEY", // note: replace with your Multiplayer API key
|
|
202
206
|
traceIdGenerator: idGenerator,
|
|
203
207
|
resourceAttributes: {
|
|
204
|
-
|
|
208
|
+
componentName: "{YOUR_APPLICATION_NAME}",
|
|
205
209
|
version: "{YOUR_APPLICATION_VERSION}",
|
|
206
210
|
environment: "{YOUR_APPLICATION_ENVIRONMENT}",
|
|
207
211
|
}
|
|
208
212
|
})
|
|
213
|
+
```
|
|
209
214
|
|
|
215
|
+
### Manual session recording
|
|
216
|
+
|
|
217
|
+
Below is an example showing how to create a session recording in `MANUAL` mode. Manual session recordings stream and save all the data between calling `start` and `stop`.
|
|
218
|
+
|
|
219
|
+
```javascript
|
|
210
220
|
await sessionRecorder.start(
|
|
211
|
-
SessionType.
|
|
221
|
+
SessionType.MANUAL,
|
|
212
222
|
{
|
|
213
223
|
name: "This is test session",
|
|
214
224
|
sessionAttributes: {
|
|
215
|
-
accountId: "
|
|
225
|
+
accountId: "1234",
|
|
216
226
|
accountName: "Acme Corporation"
|
|
217
227
|
}
|
|
218
228
|
}
|
|
@@ -223,8 +233,61 @@ await sessionRecorder.start(
|
|
|
223
233
|
await sessionRecorder.stop()
|
|
224
234
|
```
|
|
225
235
|
|
|
226
|
-
|
|
236
|
+
### Continuous session recording
|
|
237
|
+
|
|
238
|
+
Below is an example showing how to create a session in `CONTINUOUS` mode. Continuous session recordings **stream** all the data received between calling `start` and `stop` -
|
|
239
|
+
but only **save** a rolling window data (90 seconds by default) when:
|
|
240
|
+
|
|
241
|
+
- an exception or error occurs;
|
|
242
|
+
- when `save` is called; or
|
|
243
|
+
- programmatically, when the auto-save attribute is attached to a span.
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
```javascript
|
|
247
|
+
await sessionRecorder.start(
|
|
248
|
+
SessionType.CONTINUOUS,
|
|
249
|
+
{
|
|
250
|
+
name: "This is test session",
|
|
251
|
+
sessionAttributes: {
|
|
252
|
+
accountId: "1234",
|
|
253
|
+
accountName: "Acme Corporation"
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
)
|
|
257
|
+
|
|
258
|
+
// do something here
|
|
227
259
|
|
|
228
|
-
|
|
260
|
+
await sessionRecorder.save()
|
|
229
261
|
|
|
230
|
-
|
|
262
|
+
// do something here
|
|
263
|
+
|
|
264
|
+
await sessionRecorder.save()
|
|
265
|
+
|
|
266
|
+
// do something here
|
|
267
|
+
|
|
268
|
+
await sessionRecorder.stop()
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
Continuous session recordings may also be saved from within any service or component involved in a trace by adding the attributes below to a span:
|
|
272
|
+
|
|
273
|
+
```javascript
|
|
274
|
+
import { trace, context } from "@opentelemetry/api"
|
|
275
|
+
import SessionRecorder from "@multiplayer-app/session-recorder-node"
|
|
276
|
+
|
|
277
|
+
const activeContext = context.active()
|
|
278
|
+
|
|
279
|
+
const activeSpan = trace.getSpan(activeContext)
|
|
280
|
+
|
|
281
|
+
activeSpan.setAttribute(
|
|
282
|
+
SessionRecorder.ATTR_MULTIPLAYER_CONTINUOUS_SESSION_AUTO_SAVE,
|
|
283
|
+
true
|
|
284
|
+
)
|
|
285
|
+
activeSpan.setAttribute(
|
|
286
|
+
SessionRecorder.ATTR_MULTIPLAYER_CONTINUOUS_SESSION_AUTO_SAVE_REASON,
|
|
287
|
+
"Some reason"
|
|
288
|
+
)
|
|
289
|
+
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
Replace the placeholders with your application’s version, name, environment, and API key.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionRecorder.d.ts","sourceRoot":"","sources":["../src/sessionRecorder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAEX,0BAA0B,EAG3B,MAAM,0CAA0C,CAAA;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAIlC,qBAAa,eAAe;IAC1B,OAAO,CAAC,cAAc,CAAQ;IAE9B,OAAO,CAAC,eAAe,CAA0B;IAEjD,OAAO,CAAC,iBAAiB,CAAwC;IACjE,OAAO,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"sessionRecorder.d.ts","sourceRoot":"","sources":["../src/sessionRecorder.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAEX,0BAA0B,EAG3B,MAAM,0CAA0C,CAAA;AAEjD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAIlC,qBAAa,eAAe;IAC1B,OAAO,CAAC,cAAc,CAAQ;IAE9B,OAAO,CAAC,eAAe,CAA0B;IAEjD,OAAO,CAAC,iBAAiB,CAAwC;IACjE,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,aAAa,CAA8C;IACnE,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,wBAAwB,CAAqF;IAErH,OAAO,CAAC,mBAAmB,CAAa;IAExC;;OAEG;;IAGH;;;;;;;;OAQG;IACI,IAAI,CAAC,MAAM,EAAE;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,gBAAgB,EAAE,0BAA0B,CAAC;QAC7C,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,6BAA6B,CAAC,EAAE,OAAO,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;QACzD,UAAU,CAAC,EAAE,MAAM,CAAA;KACpB,GAAG,IAAI;IAyBR;;;;;OAKG;IACU,KAAK,CAChB,WAAW,EAAE,WAAW,EACxB,cAAc,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,GACrC,OAAO,CAAC,IAAI,CAAC;IAqDhB;;;;OAIG;WACU,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM;IAIjC;;;;OAIG;IACU,IAAI,CACf,WAAW,CAAC,EAAE,QAAQ,GACrB,OAAO,CAAC,IAAI,CAAC;IAiChB;;;;OAIG;IACU,IAAI,CACf,WAAW,CAAC,EAAE,QAAQ,GACrB,OAAO,CAAC,IAAI,CAAC;IAiChB;;;OAGG;IACU,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IA8BpC;;;;OAIG;IACU,4BAA4B,CACvC,cAAc,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAC,GACjD,OAAO,CAAC,IAAI,CAAC;CAsBjB"}
|
package/dist/sessionRecorder.js
CHANGED
|
@@ -12,7 +12,7 @@ class SessionRecorder {
|
|
|
12
12
|
constructor() {
|
|
13
13
|
this._isInitialized = false;
|
|
14
14
|
this._shortSessionId = false;
|
|
15
|
-
this._sessionType = session_recorder_common_1.SessionType.
|
|
15
|
+
this._sessionType = session_recorder_common_1.SessionType.MANUAL;
|
|
16
16
|
this._sessionState = 'STOPPED';
|
|
17
17
|
this._apiService = new api_service_1.ApiService();
|
|
18
18
|
this._sessionShortIdGenerator = session_recorder_common_1.SessionRecorderSdk.getIdGenerator(session_recorder_common_1.MULTIPLAYER_TRACE_DEBUG_SESSION_SHORT_ID_LENGTH);
|
|
@@ -139,7 +139,7 @@ class SessionRecorder {
|
|
|
139
139
|
|| typeof this._shortSessionId !== 'string') {
|
|
140
140
|
throw new Error('Session should be active or paused');
|
|
141
141
|
}
|
|
142
|
-
if (this._sessionType !== session_recorder_common_1.SessionType.
|
|
142
|
+
if (this._sessionType !== session_recorder_common_1.SessionType.MANUAL) {
|
|
143
143
|
throw new Error('Invalid session type');
|
|
144
144
|
}
|
|
145
145
|
await this._apiService.stopSession(this._shortSessionId, sessionData || {});
|
|
@@ -169,7 +169,7 @@ class SessionRecorder {
|
|
|
169
169
|
if (this._sessionType === session_recorder_common_1.SessionType.CONTINUOUS) {
|
|
170
170
|
await this._apiService.stopContinuousSession(this._shortSessionId);
|
|
171
171
|
}
|
|
172
|
-
else if (this._sessionType === session_recorder_common_1.SessionType.
|
|
172
|
+
else if (this._sessionType === session_recorder_common_1.SessionType.MANUAL) {
|
|
173
173
|
await this._apiService.cancelSession(this._shortSessionId);
|
|
174
174
|
}
|
|
175
175
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionRecorder.js","sourceRoot":"","sources":["../src/sessionRecorder.ts"],"names":[],"mappings":";;;AAAA,sFAMiD;AACjD,wDAAmD;AAEnD,qCAA2C;AAC3C,qCAAmD;AAEnD,MAAa,eAAe;IAa1B;;OAEG;IACH;QAfQ,mBAAc,GAAG,KAAK,CAAA;QAEtB,oBAAe,GAAqB,KAAK,CAAA;QAGzC,iBAAY,GAAgB,qCAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"sessionRecorder.js","sourceRoot":"","sources":["../src/sessionRecorder.ts"],"names":[],"mappings":";;;AAAA,sFAMiD;AACjD,wDAAmD;AAEnD,qCAA2C;AAC3C,qCAAmD;AAEnD,MAAa,eAAe;IAa1B;;OAEG;IACH;QAfQ,mBAAc,GAAG,KAAK,CAAA;QAEtB,oBAAe,GAAqB,KAAK,CAAA;QAGzC,iBAAY,GAAgB,qCAAW,CAAC,MAAM,CAAA;QAC9C,kBAAa,GAAqC,SAAS,CAAA;QAC3D,gBAAW,GAAG,IAAI,wBAAU,EAAE,CAAA;QAC9B,6BAAwB,GAAG,4CAAkB,CAAC,cAAc,CAAC,yEAA+C,CAAC,CAAA;QAE7G,wBAAmB,GAAW,EAAE,CAAA;IAKxB,CAAC;IAEjB;;;;;;;;OAQG;IACI,IAAI,CAAC,MAMX;;QACC,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,kBAAkB,IAAI;YACtD,CAAC,mEAAyC,CAAC,EAAE,iCAAwB;SACtE,CAAA;QACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;QAE1B,IAAI,OAAO,MAAM,CAAC,6BAA6B,KAAK,UAAU,EAAE,CAAC;YAC/D,IAAI,CAAC,wBAAwB,GAAG,MAAM,CAAC,6BAA6B,CAAA;QACtE,CAAC;QAED,IAAI,CAAC,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,0CAAE,MAAM,CAAA,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;QACzC,CAAC;QAED,IAAI,CAAC,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,gBAAgB,0CAAE,YAAY,CAAA,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;QACpD,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAA;QAChD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YACpB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,MAAM,CAAC,UAAU;SAC9B,CAAC,CAAA;IACJ,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,KAAK,CAChB,WAAwB,EACxB,cAAsC;;QAEtC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,2EAA2E,CAC5E,CAAA;QACH,CAAC;QAED,IACE,CAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,OAAO;eACpB,CAAA,MAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,OAAO,0CAAE,MAAM,MAAK,yEAA+C,EACtF,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;QAC7C,CAAC;QAED,cAAc,GAAG,cAAc,IAAI,EAAE,CAAA;QAErC,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA;QACrE,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,WAAW,CAAA;QAE/B,IAAI,OAAiB,CAAA;QAErB,cAAc,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI;YACvC,CAAC,CAAC,cAAc,CAAC,IAAI;YACrB,CAAC,CAAC,cAAc,IAAA,yBAAgB,EAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAA;QAEhD,cAAc,CAAC,kBAAkB,GAAG;YAClC,GAAG,IAAI,CAAC,mBAAmB;YAC3B,GAAG,cAAc,CAAC,kBAAkB;SACrC,CAAA;QAED,IAAI,IAAI,CAAC,YAAY,KAAK,qCAAW,CAAC,UAAU,EAAE,CAAC;YACjD,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAA;QACzE,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,cAAc,CAAC,CAAA;QAC/D,CAAC;QAED,IAAI,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,CAAA,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;QAC5C,CAAC;QAED,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,OAAiB,CAAA;QAE/C,IAAI,CAAC,iBAAgD,CAAC,YAAY,CACjE,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,YAAY,CAClB,CAAA;QAED,IAAI,CAAC,aAAa,GAAG,SAAS,CAAA;IAChC,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAe;QAC/B,4CAAkB,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAA;IAClD,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,IAAI,CACf,WAAsB;QAEtB,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CACb,2EAA2E,CAC5E,CAAA;YACH,CAAC;YAED,IACE,IAAI,CAAC,aAAa,KAAK,SAAS;mBAC7B,OAAO,IAAI,CAAC,eAAe,KAAK,QAAQ,EAC3C,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;YACvD,CAAC;YAED,IAAI,IAAI,CAAC,YAAY,KAAK,qCAAW,CAAC,UAAU,EAAE,CAAC;gBACjD,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;YACzC,CAAC;YAED,MAAM,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAC1C,IAAI,CAAC,eAAe,EACpB;gBACE,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;gBACtB,IAAI,EAAE,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,IAAI;oBACrB,CAAC,CAAC,WAAW,CAAC,IAAI;oBAClB,CAAC,CAAC,cAAc,IAAA,yBAAgB,EAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE;aACjD,CACF,CAAA;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,CAAA;QACT,CAAC;IACH,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,IAAI,CACf,WAAsB;QAEtB,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CACb,2EAA2E,CAC5E,CAAA;YACH,CAAC;YAED,IACE,IAAI,CAAC,aAAa,KAAK,SAAS;mBAC7B,OAAO,IAAI,CAAC,eAAe,KAAK,QAAQ,EAC3C,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;YACvD,CAAC;YAED,IAAI,IAAI,CAAC,YAAY,KAAK,qCAAW,CAAC,MAAM,EAAE,CAAC;gBAC7C,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;YACzC,CAAC;YAED,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAChC,IAAI,CAAC,eAAe,EACpB,WAAW,IAAI,EAAE,CAClB,CAAA;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,CAAA;QACT,CAAC;gBAAS,CAAC;YACR,IAAI,CAAC,iBAAgD,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;YAEvE,IAAI,CAAC,eAAe,GAAG,KAAK,CAAA;YAC5B,IAAI,CAAC,aAAa,GAAG,SAAS,CAAA;QAChC,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,MAAM;QACjB,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CACb,2EAA2E,CAC5E,CAAA;YACH,CAAC;YAED,IACE,IAAI,CAAC,aAAa,KAAK,SAAS;mBAC7B,OAAO,IAAI,CAAC,eAAe,KAAK,QAAQ,EAC3C,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;YACvD,CAAC;YAED,IAAI,IAAI,CAAC,YAAY,KAAK,qCAAW,CAAC,UAAU,EAAE,CAAC;gBACjD,MAAM,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;YACpE,CAAC;iBAAM,IAAI,IAAI,CAAC,YAAY,KAAK,qCAAW,CAAC,MAAM,EAAE,CAAC;gBACpD,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;YAC5D,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,CAAA;QACT,CAAC;gBAAS,CAAC;YACR,IAAI,CAAC,iBAAgD,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;YAEvE,IAAI,CAAC,eAAe,GAAG,KAAK,CAAA;YAC5B,IAAI,CAAC,aAAa,GAAG,SAAS,CAAA;QAChC,CAAC;IACH,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,4BAA4B,CACvC,cAAkD;QAElD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,2EAA2E,CAC5E,CAAA;QACH,CAAC;QAED,cAAc,GAAG,cAAc,IAAI,EAAE,CAAA;QAErC,cAAc,CAAC,kBAAkB,GAAG;YAClC,GAAG,CAAC,cAAc,CAAC,kBAAkB,IAAI,EAAE,CAAC;YAC5C,GAAG,IAAI,CAAC,mBAAmB;SAC5B,CAAA;QAED,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAA;QAE3E,IAAI,KAAK,IAAI,OAAO,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACzD,MAAM,IAAI,CAAC,KAAK,CAAC,qCAAW,CAAC,UAAU,EAAE,cAAc,CAAC,CAAA;QAC1D,CAAC;aAAM,IAAI,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YAC/D,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;QACnB,CAAC;IACH,CAAC;CACF;AAhRD,0CAgRC"}
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"lint": "eslint src/**/*.ts --config ../../.eslintrc"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@multiplayer-app/session-recorder-common": "1.2.
|
|
33
|
+
"@multiplayer-app/session-recorder-common": "1.2.10",
|
|
34
34
|
"@opentelemetry/api": "1.9.0",
|
|
35
35
|
"@opentelemetry/api-logs": "0.203.0",
|
|
36
36
|
"@opentelemetry/auto-instrumentations-node": "0.62.1",
|
|
@@ -53,4 +53,4 @@
|
|
|
53
53
|
"ts-node": "10.9.1",
|
|
54
54
|
"typescript": "5.7.3"
|
|
55
55
|
}
|
|
56
|
-
}
|
|
56
|
+
}
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
},
|
|
18
18
|
"author": "Multiplayer",
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@multiplayer-app/session-recorder-node": "1.2.
|
|
20
|
+
"@multiplayer-app/session-recorder-node": "1.2.10",
|
|
21
21
|
"@opentelemetry/api": "1.9.0",
|
|
22
22
|
"@opentelemetry/api-logs": "0.203.0",
|
|
23
23
|
"@opentelemetry/auto-instrumentations-node": "0.62.1",
|
|
@@ -45,4 +45,4 @@
|
|
|
45
45
|
"ts-node": "10.9.1",
|
|
46
46
|
"typescript": "5.7.3"
|
|
47
47
|
}
|
|
48
|
-
}
|
|
48
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@multiplayer-app/session-recorder-node",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.10",
|
|
4
4
|
"description": "Multiplayer Fullstack Session Recorder for Node.js",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Multiplayer Software, Inc.",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"prepublishOnly": "npm run build"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@multiplayer-app/session-recorder-common": "1.2.
|
|
39
|
+
"@multiplayer-app/session-recorder-common": "1.2.10",
|
|
40
40
|
"@opentelemetry/api": "^1.9.0",
|
|
41
41
|
"@opentelemetry/core": "^2.0.1",
|
|
42
42
|
"@opentelemetry/otlp-exporter-base": "^0.203.0",
|
|
@@ -49,4 +49,4 @@
|
|
|
49
49
|
"@types/node": "24.0.12",
|
|
50
50
|
"typescript": "5.8.3"
|
|
51
51
|
}
|
|
52
|
-
}
|
|
52
|
+
}
|
package/src/sessionRecorder.ts
CHANGED
|
@@ -16,7 +16,7 @@ export class SessionRecorder {
|
|
|
16
16
|
private _shortSessionId: string | boolean = false
|
|
17
17
|
|
|
18
18
|
private _traceIdGenerator: SessionRecorderIdGenerator | undefined
|
|
19
|
-
private _sessionType: SessionType = SessionType.
|
|
19
|
+
private _sessionType: SessionType = SessionType.MANUAL
|
|
20
20
|
private _sessionState: 'STARTED' | 'STOPPED' | 'PAUSED' = 'STOPPED'
|
|
21
21
|
private _apiService = new ApiService()
|
|
22
22
|
private _sessionShortIdGenerator = SessionRecorderSdk.getIdGenerator(MULTIPLAYER_TRACE_DEBUG_SESSION_SHORT_ID_LENGTH)
|
|
@@ -201,7 +201,7 @@ export class SessionRecorder {
|
|
|
201
201
|
throw new Error('Session should be active or paused')
|
|
202
202
|
}
|
|
203
203
|
|
|
204
|
-
if (this._sessionType !== SessionType.
|
|
204
|
+
if (this._sessionType !== SessionType.MANUAL) {
|
|
205
205
|
throw new Error('Invalid session type')
|
|
206
206
|
}
|
|
207
207
|
|
|
@@ -240,7 +240,7 @@ export class SessionRecorder {
|
|
|
240
240
|
|
|
241
241
|
if (this._sessionType === SessionType.CONTINUOUS) {
|
|
242
242
|
await this._apiService.stopContinuousSession(this._shortSessionId)
|
|
243
|
-
} else if (this._sessionType === SessionType.
|
|
243
|
+
} else if (this._sessionType === SessionType.MANUAL) {
|
|
244
244
|
await this._apiService.cancelSession(this._shortSessionId)
|
|
245
245
|
}
|
|
246
246
|
} catch (e) {
|