akeyless-client-commons 1.0.227 → 1.0.229

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.
@@ -3,7 +3,7 @@ import { FirebaseStorage } from 'firebase/storage';
3
3
  import { Auth, GoogleAuthProvider, User } from 'firebase/auth';
4
4
  import { AppCheck } from 'firebase/app-check';
5
5
  import { WhereFilterOp, Unsubscribe, Firestore, CollectionReference, DocumentData, Timestamp, DocumentSnapshot } from 'firebase/firestore';
6
- import { TObject, NxUser, CountryOptions, LanguageOptions, UserPermissionsObject, userPermissionsObjectValue, Client } from 'akeyless-types-commons';
6
+ import { TObject, NxUser, CountryOptions, LanguageOptions, UserPermissionsObject, userPermissionsObjectValue, Client, RedisUpdateType, RedisUpdatePayload, SocketCallbackResponse } from 'akeyless-types-commons';
7
7
  import React, { Dispatch, SetStateAction } from 'react';
8
8
  import { ClassValue } from 'clsx';
9
9
 
@@ -249,4 +249,36 @@ declare const initializeUserPermissions: ({ phoneNumber, email, firstTimeArray,
249
249
  permissions: TObject<TObject<boolean>>;
250
250
  }>;
251
251
 
252
- export { type ValidationType, addAuditRecord, addLoginAudit, add_document, addressRegex, akeylessOnlineDomain, app, appCheck, auth, baseDomain, biDomain, calculateBearing, callCenterEventsDomain, callCenterGeoDomain, carsRegex, chartsRegex, checkUserPermissions, cleanNxSites, cn, collections, colorRegex, createSelectors, db, delete_document, devicesDomain, displayFormatPhoneNumber, emailRegex, extractAlertsData, extractBoardsData, extractCanbusData, extractCarsData, extractClientData, extractLocationData, extractSiteData, fire_base_TIME_TEMP, formatCarNumber, getAddressByGeo, getFixedNumber, getFormCheckboxValue, getFormElementValue, getLocationUrl, getUserByEmail, getUserByIdentifier, getUserByPhone, getUserCountryByIp, get_all_documents, get_document_by_id, get_international_phone_number, googleLoginProvider, handleChange, handleInvalid, handlePaste, initializeUserPermissions, international_israel_phone_format, isInternational, isInternationalIsraelPhone, isLocal, isNodeEnv, is_iccid, local_israel_phone_format, mode, multiStringFormat, notificationsDomain, numbersOnlyRegex, numbersRegex, nxApiCall, parseMultiSelectInput, parsePermissions, parseSnapshotAsArray, priceRegex, propsAreEqual, query_document, query_document_by_conditions, query_documents, query_documents_by_conditions, renderOnce, setFormElementValue, setState, set_document, simpleExtractData, snapshot, snapshotDocument, sort_by_timestamp, storage, textNumbersRegex, textRegex, timestamp_to_millis, timestamp_to_string, useLoginWithGoogle, useStoreValues, useValidation, userNameFormat, validateAndCast, validateUserStatusAndPermissions };
252
+ interface GetDataPayload<T = any> {
253
+ key: string;
254
+ collection_name: string;
255
+ callback: (value: T) => void;
256
+ defaultValue: T;
257
+ }
258
+ declare class SocketService {
259
+ private static instance;
260
+ private socket;
261
+ private connectCallbacks;
262
+ private disconnectCallbacks;
263
+ private initSocket;
264
+ private constructor();
265
+ static getInstance(): SocketService;
266
+ private getSocketInstance;
267
+ subscribeToCollections(config: OnSnapshotConfig[]): () => void;
268
+ setData<UpdateType extends RedisUpdateType, DataType = any>(payload: RedisUpdatePayload<UpdateType, DataType>): Promise<SocketCallbackResponse>;
269
+ getCollectionData<T>(payload: Omit<GetDataPayload<T>, "key">): void;
270
+ getDocumentData<T>(payload: GetDataPayload<T>): void;
271
+ deleteData(payload: {
272
+ key: string;
273
+ collection_name: string;
274
+ }): Promise<SocketCallbackResponse>;
275
+ clearAllRedisData(): Promise<SocketCallbackResponse>;
276
+ onConnect(callback: () => void): void;
277
+ offConnect(callback: () => void): void;
278
+ onDisconnect(callback: () => void): void;
279
+ offDisconnect(callback: () => void): void;
280
+ isConnected(): boolean;
281
+ }
282
+ declare const socketServiceInstance: SocketService;
283
+
284
+ export { type ValidationType, addAuditRecord, addLoginAudit, add_document, addressRegex, akeylessOnlineDomain, app, appCheck, auth, baseDomain, biDomain, calculateBearing, callCenterEventsDomain, callCenterGeoDomain, carsRegex, chartsRegex, checkUserPermissions, cleanNxSites, cn, collections, colorRegex, createSelectors, db, delete_document, devicesDomain, displayFormatPhoneNumber, emailRegex, extractAlertsData, extractBoardsData, extractCanbusData, extractCarsData, extractClientData, extractLocationData, extractSiteData, fire_base_TIME_TEMP, formatCarNumber, getAddressByGeo, getFixedNumber, getFormCheckboxValue, getFormElementValue, getLocationUrl, getUserByEmail, getUserByIdentifier, getUserByPhone, getUserCountryByIp, get_all_documents, get_document_by_id, get_international_phone_number, googleLoginProvider, handleChange, handleInvalid, handlePaste, initializeUserPermissions, international_israel_phone_format, isInternational, isInternationalIsraelPhone, isLocal, isNodeEnv, is_iccid, local_israel_phone_format, mode, multiStringFormat, notificationsDomain, numbersOnlyRegex, numbersRegex, nxApiCall, parseMultiSelectInput, parsePermissions, parseSnapshotAsArray, priceRegex, propsAreEqual, query_document, query_document_by_conditions, query_documents, query_documents_by_conditions, renderOnce, setFormElementValue, setState, set_document, simpleExtractData, snapshot, snapshotDocument, socketServiceInstance, sort_by_timestamp, storage, textNumbersRegex, textRegex, timestamp_to_millis, timestamp_to_string, useLoginWithGoogle, useStoreValues, useValidation, userNameFormat, validateAndCast, validateUserStatusAndPermissions };
@@ -3,7 +3,7 @@ import { FirebaseStorage } from 'firebase/storage';
3
3
  import { Auth, GoogleAuthProvider, User } from 'firebase/auth';
4
4
  import { AppCheck } from 'firebase/app-check';
5
5
  import { WhereFilterOp, Unsubscribe, Firestore, CollectionReference, DocumentData, Timestamp, DocumentSnapshot } from 'firebase/firestore';
6
- import { TObject, NxUser, CountryOptions, LanguageOptions, UserPermissionsObject, userPermissionsObjectValue, Client } from 'akeyless-types-commons';
6
+ import { TObject, NxUser, CountryOptions, LanguageOptions, UserPermissionsObject, userPermissionsObjectValue, Client, RedisUpdateType, RedisUpdatePayload, SocketCallbackResponse } from 'akeyless-types-commons';
7
7
  import React, { Dispatch, SetStateAction } from 'react';
8
8
  import { ClassValue } from 'clsx';
9
9
 
@@ -249,4 +249,36 @@ declare const initializeUserPermissions: ({ phoneNumber, email, firstTimeArray,
249
249
  permissions: TObject<TObject<boolean>>;
250
250
  }>;
251
251
 
252
- export { type ValidationType, addAuditRecord, addLoginAudit, add_document, addressRegex, akeylessOnlineDomain, app, appCheck, auth, baseDomain, biDomain, calculateBearing, callCenterEventsDomain, callCenterGeoDomain, carsRegex, chartsRegex, checkUserPermissions, cleanNxSites, cn, collections, colorRegex, createSelectors, db, delete_document, devicesDomain, displayFormatPhoneNumber, emailRegex, extractAlertsData, extractBoardsData, extractCanbusData, extractCarsData, extractClientData, extractLocationData, extractSiteData, fire_base_TIME_TEMP, formatCarNumber, getAddressByGeo, getFixedNumber, getFormCheckboxValue, getFormElementValue, getLocationUrl, getUserByEmail, getUserByIdentifier, getUserByPhone, getUserCountryByIp, get_all_documents, get_document_by_id, get_international_phone_number, googleLoginProvider, handleChange, handleInvalid, handlePaste, initializeUserPermissions, international_israel_phone_format, isInternational, isInternationalIsraelPhone, isLocal, isNodeEnv, is_iccid, local_israel_phone_format, mode, multiStringFormat, notificationsDomain, numbersOnlyRegex, numbersRegex, nxApiCall, parseMultiSelectInput, parsePermissions, parseSnapshotAsArray, priceRegex, propsAreEqual, query_document, query_document_by_conditions, query_documents, query_documents_by_conditions, renderOnce, setFormElementValue, setState, set_document, simpleExtractData, snapshot, snapshotDocument, sort_by_timestamp, storage, textNumbersRegex, textRegex, timestamp_to_millis, timestamp_to_string, useLoginWithGoogle, useStoreValues, useValidation, userNameFormat, validateAndCast, validateUserStatusAndPermissions };
252
+ interface GetDataPayload<T = any> {
253
+ key: string;
254
+ collection_name: string;
255
+ callback: (value: T) => void;
256
+ defaultValue: T;
257
+ }
258
+ declare class SocketService {
259
+ private static instance;
260
+ private socket;
261
+ private connectCallbacks;
262
+ private disconnectCallbacks;
263
+ private initSocket;
264
+ private constructor();
265
+ static getInstance(): SocketService;
266
+ private getSocketInstance;
267
+ subscribeToCollections(config: OnSnapshotConfig[]): () => void;
268
+ setData<UpdateType extends RedisUpdateType, DataType = any>(payload: RedisUpdatePayload<UpdateType, DataType>): Promise<SocketCallbackResponse>;
269
+ getCollectionData<T>(payload: Omit<GetDataPayload<T>, "key">): void;
270
+ getDocumentData<T>(payload: GetDataPayload<T>): void;
271
+ deleteData(payload: {
272
+ key: string;
273
+ collection_name: string;
274
+ }): Promise<SocketCallbackResponse>;
275
+ clearAllRedisData(): Promise<SocketCallbackResponse>;
276
+ onConnect(callback: () => void): void;
277
+ offConnect(callback: () => void): void;
278
+ onDisconnect(callback: () => void): void;
279
+ offDisconnect(callback: () => void): void;
280
+ isConnected(): boolean;
281
+ }
282
+ declare const socketServiceInstance: SocketService;
283
+
284
+ export { type ValidationType, addAuditRecord, addLoginAudit, add_document, addressRegex, akeylessOnlineDomain, app, appCheck, auth, baseDomain, biDomain, calculateBearing, callCenterEventsDomain, callCenterGeoDomain, carsRegex, chartsRegex, checkUserPermissions, cleanNxSites, cn, collections, colorRegex, createSelectors, db, delete_document, devicesDomain, displayFormatPhoneNumber, emailRegex, extractAlertsData, extractBoardsData, extractCanbusData, extractCarsData, extractClientData, extractLocationData, extractSiteData, fire_base_TIME_TEMP, formatCarNumber, getAddressByGeo, getFixedNumber, getFormCheckboxValue, getFormElementValue, getLocationUrl, getUserByEmail, getUserByIdentifier, getUserByPhone, getUserCountryByIp, get_all_documents, get_document_by_id, get_international_phone_number, googleLoginProvider, handleChange, handleInvalid, handlePaste, initializeUserPermissions, international_israel_phone_format, isInternational, isInternationalIsraelPhone, isLocal, isNodeEnv, is_iccid, local_israel_phone_format, mode, multiStringFormat, notificationsDomain, numbersOnlyRegex, numbersRegex, nxApiCall, parseMultiSelectInput, parsePermissions, parseSnapshotAsArray, priceRegex, propsAreEqual, query_document, query_document_by_conditions, query_documents, query_documents_by_conditions, renderOnce, setFormElementValue, setState, set_document, simpleExtractData, snapshot, snapshotDocument, socketServiceInstance, sort_by_timestamp, storage, textNumbersRegex, textRegex, timestamp_to_millis, timestamp_to_string, useLoginWithGoogle, useStoreValues, useValidation, userNameFormat, validateAndCast, validateUserStatusAndPermissions };
@@ -39,6 +39,25 @@ function _async_to_generator(fn) {
39
39
  });
40
40
  };
41
41
  }
42
+ function _class_call_check(instance, Constructor) {
43
+ if (!(instance instanceof Constructor)) {
44
+ throw new TypeError("Cannot call a class as a function");
45
+ }
46
+ }
47
+ function _defineProperties(target, props) {
48
+ for(var i = 0; i < props.length; i++){
49
+ var descriptor = props[i];
50
+ descriptor.enumerable = descriptor.enumerable || false;
51
+ descriptor.configurable = true;
52
+ if ("value" in descriptor) descriptor.writable = true;
53
+ Object.defineProperty(target, descriptor.key, descriptor);
54
+ }
55
+ }
56
+ function _create_class(Constructor, protoProps, staticProps) {
57
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
58
+ if (staticProps) _defineProperties(Constructor, staticProps);
59
+ return Constructor;
60
+ }
42
61
  function _define_property(obj, key, value) {
43
62
  if (key in obj) {
44
63
  Object.defineProperty(obj, key, {
@@ -548,6 +567,9 @@ __export(index_exports, {
548
567
  snapshotDocument: function() {
549
568
  return snapshotDocument;
550
569
  },
570
+ socketServiceInstance: function() {
571
+ return socketServiceInstance;
572
+ },
551
573
  sort_by_timestamp: function() {
552
574
  return sort_by_timestamp;
553
575
  },
@@ -2227,6 +2249,278 @@ var nxApiCall = /*#__PURE__*/ function() {
2227
2249
  return _ref.apply(this, arguments);
2228
2250
  };
2229
2251
  }();
2252
+ // src/helpers/socket.ts
2253
+ var import_socket = require("socket.io-client");
2254
+ var SocketService = /*#__PURE__*/ function() {
2255
+ "use strict";
2256
+ function _SocketService() {
2257
+ _class_call_check(this, _SocketService);
2258
+ this.socket = null;
2259
+ this.connectCallbacks = [];
2260
+ this.disconnectCallbacks = [];
2261
+ this.initSocket();
2262
+ }
2263
+ _create_class(_SocketService, [
2264
+ {
2265
+ /// Initialize the socket connection
2266
+ key: "initSocket",
2267
+ value: function initSocket() {
2268
+ var _this = this;
2269
+ if (!this.socket) {
2270
+ var SOCKET_SERVER_URL = "http://localhost:9009";
2271
+ var SOCKET_PATH = "/api/data-socket/connect";
2272
+ this.socket = (0, import_socket.io)(SOCKET_SERVER_URL, {
2273
+ path: SOCKET_PATH,
2274
+ transports: [
2275
+ "websocket"
2276
+ ]
2277
+ });
2278
+ this.socket.on("connect", function() {
2279
+ var _this_socket;
2280
+ console.log("Socket connected:", (_this_socket = _this.socket) === null || _this_socket === void 0 ? void 0 : _this_socket.id);
2281
+ _this.connectCallbacks.forEach(function(cb) {
2282
+ return cb();
2283
+ });
2284
+ });
2285
+ this.socket.on("disconnect", function(reason) {
2286
+ console.log("Socket disconnected:", reason);
2287
+ _this.disconnectCallbacks.forEach(function(cb) {
2288
+ return cb();
2289
+ });
2290
+ });
2291
+ this.socket.on("connect_error", function(error) {
2292
+ console.error("Socket connection error:", error);
2293
+ });
2294
+ }
2295
+ }
2296
+ },
2297
+ {
2298
+ /// get socket instance
2299
+ key: "getSocketInstance",
2300
+ value: function getSocketInstance() {
2301
+ if (!this.socket) {
2302
+ this.initSocket();
2303
+ }
2304
+ if (!this.socket) {
2305
+ throw new Error("Socket not initialized");
2306
+ }
2307
+ if (!this.socket.connected) {
2308
+ this.socket.connect();
2309
+ }
2310
+ return this.socket;
2311
+ }
2312
+ },
2313
+ {
2314
+ /// subscribe to collections
2315
+ key: "subscribeToCollections",
2316
+ value: function subscribeToCollections(config) {
2317
+ var s = this.getSocketInstance();
2318
+ var collectionsNames = config.map(function(c) {
2319
+ return c.collectionName;
2320
+ });
2321
+ var eventHandlers = [];
2322
+ config.forEach(function(configuration) {
2323
+ var collectionName = configuration.collectionName, onAdd = configuration.onAdd, onFirstTime = configuration.onFirstTime, onModify = configuration.onModify, onRemove = configuration.onRemove, extraParsers = configuration.extraParsers, conditions = configuration.conditions, orderBy2 = configuration.orderBy;
2324
+ s.on("initial:".concat(collectionName), onFirstTime);
2325
+ eventHandlers.push({
2326
+ eventName: "initial:".concat(collectionName),
2327
+ handler: onFirstTime
2328
+ });
2329
+ s.on("add:".concat(collectionName), onAdd);
2330
+ eventHandlers.push({
2331
+ eventName: "add:".concat(collectionName),
2332
+ handler: onAdd
2333
+ });
2334
+ s.on("update:".concat(collectionName), onModify);
2335
+ eventHandlers.push({
2336
+ eventName: "update:".concat(collectionName),
2337
+ handler: onModify
2338
+ });
2339
+ s.on("delete:".concat(collectionName), onRemove);
2340
+ eventHandlers.push({
2341
+ eventName: "delete:".concat(collectionName),
2342
+ handler: onRemove
2343
+ });
2344
+ extraParsers === null || extraParsers === void 0 ? void 0 : extraParsers.forEach(function(parsers) {
2345
+ var extraOnAdd = parsers.onAdd, extraOnFirstTime = parsers.onFirstTime, extraOnModify = parsers.onModify, extraOnRemove = parsers.onRemove;
2346
+ s.on("initial:".concat(collectionName), extraOnFirstTime);
2347
+ eventHandlers.push({
2348
+ eventName: "initial:".concat(collectionName),
2349
+ handler: extraOnFirstTime
2350
+ });
2351
+ s.on("add:".concat(collectionName), extraOnAdd);
2352
+ eventHandlers.push({
2353
+ eventName: "add:".concat(collectionName),
2354
+ handler: extraOnAdd
2355
+ });
2356
+ s.on("update:".concat(collectionName), extraOnModify);
2357
+ eventHandlers.push({
2358
+ eventName: "update:".concat(collectionName),
2359
+ handler: extraOnModify
2360
+ });
2361
+ s.on("delete:".concat(collectionName), extraOnRemove);
2362
+ eventHandlers.push({
2363
+ eventName: "delete:".concat(collectionName),
2364
+ handler: extraOnRemove
2365
+ });
2366
+ });
2367
+ });
2368
+ s.emit("subscribe_collections", collectionsNames, function(callback) {
2369
+ if (callback.success) {
2370
+ console.log("Successfully subscribed to: ".concat(collectionsNames.join(", ")));
2371
+ } else {
2372
+ console.error("Failed to subscribe to ".concat(config.join(", "), ": ").concat(callback.message));
2373
+ }
2374
+ });
2375
+ return function() {
2376
+ console.log("Cleaning up subscriptions for: ".concat(collectionsNames.join(", ")));
2377
+ s.emit("unsubscribe_collections", collectionsNames);
2378
+ eventHandlers.forEach(function(eh) {
2379
+ s.off(eh.eventName, eh.handler);
2380
+ });
2381
+ };
2382
+ }
2383
+ },
2384
+ {
2385
+ /// set data
2386
+ key: "setData",
2387
+ value: function setData(payload) {
2388
+ var s = this.getSocketInstance();
2389
+ return new Promise(function(resolve, reject) {
2390
+ s.emit("set_data", payload, function(callback) {
2391
+ if (callback.success) {
2392
+ console.log("Data saved successfully:", payload);
2393
+ console.log("ack", callback);
2394
+ resolve(callback);
2395
+ } else {
2396
+ reject(new Error(callback.message || "Save operation failed"));
2397
+ }
2398
+ });
2399
+ });
2400
+ }
2401
+ },
2402
+ {
2403
+ /// get data
2404
+ key: "getCollectionData",
2405
+ value: function getCollectionData(payload) {
2406
+ var s = this.getSocketInstance();
2407
+ s.emit("get_data", {
2408
+ collection_name: payload.collection_name
2409
+ }, function(socketCallback) {
2410
+ if (socketCallback.success && socketCallback.data) {
2411
+ payload.callback(socketCallback.data);
2412
+ } else {
2413
+ payload.callback(payload.defaultValue);
2414
+ }
2415
+ });
2416
+ }
2417
+ },
2418
+ {
2419
+ key: "getDocumentData",
2420
+ value: function getDocumentData(payload) {
2421
+ var s = this.getSocketInstance();
2422
+ s.emit("get_data", {
2423
+ collection_name: payload.collection_name,
2424
+ key: payload.key
2425
+ }, function(socketCallback) {
2426
+ if (socketCallback.success && socketCallback.data) {
2427
+ payload.callback(socketCallback.data);
2428
+ } else {
2429
+ payload.callback(payload.defaultValue);
2430
+ }
2431
+ });
2432
+ }
2433
+ },
2434
+ {
2435
+ /// delete data
2436
+ key: "deleteData",
2437
+ value: function deleteData(payload) {
2438
+ var s = this.getSocketInstance();
2439
+ return new Promise(function(resolve, reject) {
2440
+ s.emit("delete_data", payload, function(callback) {
2441
+ if (callback.success) {
2442
+ console.log("Data deleted successfully:", payload);
2443
+ console.log("delete ack", callback);
2444
+ resolve(callback);
2445
+ } else {
2446
+ reject(new Error(callback.message || "Delete operation failed"));
2447
+ }
2448
+ });
2449
+ });
2450
+ }
2451
+ },
2452
+ {
2453
+ key: "clearAllRedisData",
2454
+ value: function clearAllRedisData() {
2455
+ var s = this.getSocketInstance();
2456
+ return new Promise(function(resolve, reject) {
2457
+ s.emit("clear_all_redis_data", function(ack) {
2458
+ if (ack.success) {
2459
+ resolve(ack);
2460
+ } else {
2461
+ reject(new Error(ack.message || "Clear all Redis data operation failed"));
2462
+ }
2463
+ });
2464
+ });
2465
+ }
2466
+ },
2467
+ {
2468
+ /// connection management methods
2469
+ key: "onConnect",
2470
+ value: function onConnect(callback) {
2471
+ var _this_socket;
2472
+ this.connectCallbacks.push(callback);
2473
+ if ((_this_socket = this.socket) === null || _this_socket === void 0 ? void 0 : _this_socket.connected) {
2474
+ callback();
2475
+ }
2476
+ }
2477
+ },
2478
+ {
2479
+ key: "offConnect",
2480
+ value: function offConnect(callback) {
2481
+ this.connectCallbacks = this.connectCallbacks.filter(function(cb) {
2482
+ return cb !== callback;
2483
+ });
2484
+ }
2485
+ },
2486
+ {
2487
+ key: "onDisconnect",
2488
+ value: function onDisconnect(callback) {
2489
+ this.disconnectCallbacks.push(callback);
2490
+ if (this.socket && !this.socket.connected) {
2491
+ callback();
2492
+ }
2493
+ }
2494
+ },
2495
+ {
2496
+ key: "offDisconnect",
2497
+ value: function offDisconnect(callback) {
2498
+ this.disconnectCallbacks = this.disconnectCallbacks.filter(function(cb) {
2499
+ return cb !== callback;
2500
+ });
2501
+ }
2502
+ },
2503
+ {
2504
+ key: "isConnected",
2505
+ value: function isConnected() {
2506
+ var _this_socket;
2507
+ return ((_this_socket = this.socket) === null || _this_socket === void 0 ? void 0 : _this_socket.connected) || false;
2508
+ }
2509
+ }
2510
+ ], [
2511
+ {
2512
+ key: "getInstance",
2513
+ value: function getInstance() {
2514
+ if (!_SocketService.instance) {
2515
+ _SocketService.instance = new _SocketService();
2516
+ }
2517
+ return _SocketService.instance;
2518
+ }
2519
+ }
2520
+ ]);
2521
+ return _SocketService;
2522
+ }();
2523
+ var socketServiceInstance = SocketService.getInstance();
2230
2524
  // Annotate the CommonJS export names for ESM import in node:
2231
2525
  0 && (module.exports = {
2232
2526
  addAuditRecord: addAuditRecord,
@@ -2310,6 +2604,7 @@ var nxApiCall = /*#__PURE__*/ function() {
2310
2604
  simpleExtractData: simpleExtractData,
2311
2605
  snapshot: snapshot,
2312
2606
  snapshotDocument: snapshotDocument,
2607
+ socketServiceInstance: socketServiceInstance,
2313
2608
  sort_by_timestamp: sort_by_timestamp,
2314
2609
  storage: storage,
2315
2610
  textNumbersRegex: textNumbersRegex,