{"version":3,"file":"index.cjs","sources":["../src/constants/config.js","../src/constants/index.js","../src/error.js","../src/protos/raccoon.js","../src/logger.js","../src/blob.js","../src/transport.js","../src/processor.js","../src/scheduler.js","../src/event.js","../src/store.js","../src/id.js","../src/validator.js","../src/clickstream.js"],"sourcesContent":["/**\n * @typedef {object} EventConfig - Event configuration\n * @property {{instant: string[]}=} classification - event classification\n * @property {string=} group - product group name\n */\n\n/**\n * @typedef {object} BatchConfig - Batch configuration\n * @property {number=} maxTimeBetweenTwoBatches - Maximum wait time between two batches\n * @property {number=} maxBatchSize - Maximum size of a batch\n * @property {string=} dbName - name for indexedDB\n */\n\n/**\n * @typedef {object} NetworkConfig - Network configuration\n * @property {string | URL} url - base url\n * @property {Headers} headers - request headers\n * @property {number=} maxRetries - max retries\n * @property {number=} timeBetweenTwoRetries - time in seconds between two retries\n * @property {number=} timeToResumeRetries - time in seconds to resume retries\n */\n\n/**\n * @typedef {object} Config - Configuration\n * @property {EventConfig=} event - event configurations\n * @property {BatchConfig=} batch - batch configurations\n * @property {NetworkConfig} network - network configurations\n * @property {object=} crypto - crypto module instance\n * @property {Boolean=} debug - debug option\n */\n\n/** @type {Config} } */\nexport const defaultConfig = {\n  event: {\n    classification: {\n      instant: [],\n    },\n    group: \"\",\n  },\n  batch: {\n    // max interval time between two batches, in seconds\n    maxTimeBetweenTwoBatches: 10,\n    // max size of batch, in bytes\n    maxBatchSize: 50000,\n    // name for indexedDB, must be unique per domain\n    dbName: \"clickstream_db\",\n  },\n  network: {\n    url: \"\",\n    headers: new Headers({}),\n    // max number of retries before pausing\n    maxRetries: 5,\n    // gap between two retries (mSec)\n    timeBetweenTwoRetries: 1000,\n    // time after which retry will resume after hitting max retry count threshold (mSec)\n    timeToResumeRetries: 20000,\n  },\n  crypto: null,\n}\n","export * from \"./config.js\"\n\nexport const EVENT_TYPE = {\n  INSTANT: \"instant\",\n  REALTIME: \"realTime\",\n}\n\nexport const CUSTOM_EVENT = {\n  BATCH_CREATED: \"batchCreated\",\n  BATCH_FAILED: \"batchFailed\",\n}\n\nexport const TICK_TIME = 1000\n","export const errorCodes = {\n  CLICKSTREAM_ERROR: \"clickstreamError\",\n  VALIDATION_ERROR: \"validationError\",\n  DATABASE_ERROR: \"databaseError\",\n  NETWORK_ERROR: \"networkError\",\n  TRACKING_ERROR: \"trackingError\",\n  CLEANUP_ERROR: \"cleanupError\",\n}\n\nexport const errorNames = {\n  CLICKSTREAM_ERROR: \"Clickstream Error\",\n  VALIDATION_ERROR: \"Validation Error\",\n  DATABASE_ERROR: \"Database Error\",\n  NETWORK_ERROR: \"Network Error\",\n  TRACKING_ERROR: \"Tracking Error\",\n  CLEANUP_ERROR: \"Cleanup Error\",\n}\n\nexport class ClickstreamError extends Error {\n  constructor(message, options) {\n    super(message, options)\n    this.name = options?.name ?? errorNames.CLICKSTREAM_ERROR\n    this.code = options?.code ?? errorCodes.CLICKSTREAM_ERROR\n  }\n}\n\nexport class ValidationError extends ClickstreamError {\n  constructor(message, options) {\n    super(message, options)\n    this.name = errorNames.VALIDATION_ERROR\n    this.code = errorCodes.VALIDATION_ERROR\n  }\n}\n\nexport class DatabaseError extends ClickstreamError {\n  constructor(message, options) {\n    super(message, options)\n    this.name = errorNames.DATABASE_ERROR\n    this.code = errorCodes.DATABASE_ERROR\n  }\n}\n\nexport class NetworkError extends ClickstreamError {\n  constructor(message, options) {\n    super(message, options)\n    this.name = errorNames.NETWORK_ERROR\n    this.code = errorCodes.NETWORK_ERROR\n  }\n}\n","// @ts-nocheck\n/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/\nimport * as $protobuf1 from \"protobufjs/minimal.js\"\n\nlet $protobuf\n\nif ($protobuf1.default) {\n  $protobuf = $protobuf1.default\n}\n\n// Common aliases\nconst $Reader = $protobuf.Reader,\n  $Writer = $protobuf.Writer,\n  $util = $protobuf.util\n\n// Exported root namespace\nconst $root = $protobuf.roots[\"default\"] || ($protobuf.roots[\"default\"] = {})\n\n/**\n * @type {Class}\n */\nexport const EventService = ($root.EventService = (() => {\n  /**\n   * Constructs a new EventService service.\n   * @exports EventService\n   * @classdesc Represents an EventService\n   * @extends $protobuf.rpc.Service\n   * @constructor\n   * @param {$protobuf.RPCImpl} rpcImpl RPC implementation\n   * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\n   * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\n   */\n  function EventService(rpcImpl, requestDelimited, responseDelimited) {\n    $protobuf.rpc.Service.call(\n      this,\n      rpcImpl,\n      requestDelimited,\n      responseDelimited\n    )\n  }\n\n  ;(EventService.prototype = Object.create(\n    $protobuf.rpc.Service.prototype\n  )).constructor = EventService\n\n  /**\n   * Creates new EventService service using the specified rpc implementation.\n   * @function create\n   * @memberof EventService\n   * @static\n   * @param {$protobuf.RPCImpl} rpcImpl RPC implementation\n   * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\n   * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\n   * @returns {EventService} RPC service. Useful where requests and/or responses are streamed.\n   */\n  EventService.create = function create(\n    rpcImpl,\n    requestDelimited,\n    responseDelimited\n  ) {\n    return new this(rpcImpl, requestDelimited, responseDelimited)\n  }\n\n  /**\n   * Callback as used by {@link EventService#sendEvent}.\n   * @memberof EventService\n   * @typedef SendEventCallback\n   * @type {function}\n   * @param {Error|null} error Error, if any\n   * @param {SendEventResponse} [response] SendEventResponse\n   */\n\n  /**\n   * Calls SendEvent.\n   * @function sendEvent\n   * @memberof EventService\n   * @instance\n   * @param {ISendEventRequest} request SendEventRequest message or plain object\n   * @param {EventService.SendEventCallback} callback Node-style callback called with the error, if any, and SendEventResponse\n   * @returns {undefined}\n   * @variation 1\n   */\n  Object.defineProperty(\n    (EventService.prototype.sendEvent = function sendEvent(request, callback) {\n      return this.rpcCall(\n        sendEvent,\n        $root.SendEventRequest,\n        $root.SendEventResponse,\n        request,\n        callback\n      )\n    }),\n    \"name\",\n    { value: \"SendEvent\" }\n  )\n\n  /**\n   * Calls SendEvent.\n   * @function sendEvent\n   * @memberof EventService\n   * @instance\n   * @param {ISendEventRequest} request SendEventRequest message or plain object\n   * @returns {Promise<SendEventResponse>} Promise\n   * @variation 2\n   */\n\n  return EventService\n})())\n\n/**\n * @type {Class}\n */\nexport const SendEventRequest = ($root.SendEventRequest = (() => {\n  /**\n   * Properties of a SendEventRequest.\n   * @exports ISendEventRequest\n   * @interface ISendEventRequest\n   * @property {string|null} [reqGuid] SendEventRequest reqGuid\n   * @property {ITimestamp|null} [sentTime] SendEventRequest sentTime\n   * @property {Array.<IEvent>|null} [events] SendEventRequest events\n   */\n\n  /**\n   * Constructs a new SendEventRequest.\n   * @exports SendEventRequest\n   * @classdesc Represents a SendEventRequest.\n   * @implements ISendEventRequest\n   * @constructor\n   * @param {ISendEventRequest=} [properties] Properties to set\n   */\n  function SendEventRequest(properties) {\n    this.events = []\n    if (properties)\n      for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]\n  }\n\n  /**\n   * SendEventRequest reqGuid.\n   * @member {string} reqGuid\n   * @memberof SendEventRequest\n   * @instance\n   */\n  SendEventRequest.prototype.reqGuid = \"\"\n\n  /**\n   * SendEventRequest sentTime.\n   * @member {ITimestamp|null|undefined} sentTime\n   * @memberof SendEventRequest\n   * @instance\n   */\n  SendEventRequest.prototype.sentTime = null\n\n  /**\n   * SendEventRequest events.\n   * @member {Array.<IEvent>} events\n   * @memberof SendEventRequest\n   * @instance\n   */\n  SendEventRequest.prototype.events = $util.emptyArray\n\n  /**\n   * Creates a new SendEventRequest instance using the specified properties.\n   * @function create\n   * @memberof SendEventRequest\n   * @static\n   * @param {ISendEventRequest=} [properties] Properties to set\n   * @returns {SendEventRequest} SendEventRequest instance\n   */\n  SendEventRequest.create = function create(properties) {\n    return new SendEventRequest(properties)\n  }\n\n  /**\n   * Encodes the specified SendEventRequest message. Does not implicitly {@link SendEventRequest.verify|verify} messages.\n   * @function encode\n   * @memberof SendEventRequest\n   * @static\n   * @param {ISendEventRequest} message SendEventRequest message or plain object to encode\n   * @param {$protobuf.Writer} [writer] Writer to encode to\n   * @returns {$protobuf.Writer} Writer\n   */\n  SendEventRequest.encode = function encode(message, writer) {\n    if (!writer) writer = $Writer.create()\n    if (\n      message.reqGuid != null &&\n      Object.hasOwnProperty.call(message, \"reqGuid\")\n    )\n      writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.reqGuid)\n    if (\n      message.sentTime != null &&\n      Object.hasOwnProperty.call(message, \"sentTime\")\n    )\n      $root.Timestamp.encode(\n        message.sentTime,\n        writer.uint32(/* id 2, wireType 2 =*/ 18).fork()\n      ).ldelim()\n    if (message.events != null && message.events.length)\n      for (let i = 0; i < message.events.length; ++i)\n        $root.Event.encode(\n          message.events[i],\n          writer.uint32(/* id 3, wireType 2 =*/ 26).fork()\n        ).ldelim()\n    return writer\n  }\n\n  /**\n   * Decodes a SendEventRequest message from the specified reader or buffer.\n   * @function decode\n   * @memberof SendEventRequest\n   * @static\n   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n   * @param {number} [length] Message length if known beforehand\n   * @returns {SendEventRequest} SendEventRequest\n   * @throws {Error} If the payload is not a reader or valid buffer\n   * @throws {$protobuf.util.ProtocolError} If required fields are missing\n   */\n  SendEventRequest.decode = function decode(reader, length) {\n    if (!(reader instanceof $Reader)) reader = $Reader.create(reader)\n    let end = length === undefined ? reader.len : reader.pos + length,\n      message = new $root.SendEventRequest()\n    while (reader.pos < end) {\n      let tag = reader.uint32()\n      switch (tag >>> 3) {\n        case 1: {\n          message.reqGuid = reader.string()\n          break\n        }\n        case 2: {\n          message.sentTime = $root.Timestamp.decode(reader, reader.uint32())\n          break\n        }\n        case 3: {\n          if (!(message.events && message.events.length)) message.events = []\n          message.events.push($root.Event.decode(reader, reader.uint32()))\n          break\n        }\n        default:\n          reader.skipType(tag & 7)\n          break\n      }\n    }\n    return message\n  }\n\n  /**\n   * Verifies a SendEventRequest message.\n   * @function verify\n   * @memberof SendEventRequest\n   * @static\n   * @param {Object.<string,*>} message Plain object to verify\n   * @returns {string|null} `null` if valid, otherwise the reason why it is not\n   */\n  SendEventRequest.verify = function verify(message) {\n    if (typeof message !== \"object\" || message === null)\n      return \"object expected\"\n    if (message.reqGuid != null && message.hasOwnProperty(\"reqGuid\"))\n      if (!$util.isString(message.reqGuid)) return \"reqGuid: string expected\"\n    if (message.sentTime != null && message.hasOwnProperty(\"sentTime\")) {\n      let error = $root.Timestamp.verify(message.sentTime)\n      if (error) return \"sentTime.\" + error\n    }\n    if (message.events != null && message.hasOwnProperty(\"events\")) {\n      if (!Array.isArray(message.events)) return \"events: array expected\"\n      for (let i = 0; i < message.events.length; ++i) {\n        let error = $root.Event.verify(message.events[i])\n        if (error) return \"events.\" + error\n      }\n    }\n    return null\n  }\n\n  /**\n   * Gets the default type url for SendEventRequest\n   * @function getTypeUrl\n   * @memberof SendEventRequest\n   * @static\n   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n   * @returns {string} The default type url\n   */\n  SendEventRequest.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n    if (typeUrlPrefix === undefined) {\n      typeUrlPrefix = \"type.googleapis.com\"\n    }\n    return typeUrlPrefix + \"/SendEventRequest\"\n  }\n\n  return SendEventRequest\n})())\n\n/**\n * @type {Class}\n */\nexport const Timestamp = ($root.Timestamp = (() => {\n  /**\n   * Properties of a Timestamp.\n   * @exports ITimestamp\n   * @interface ITimestamp\n   * @property {number|Long|null} [seconds] Timestamp seconds\n   * @property {number|null} [nanos] Timestamp nanos\n   */\n\n  /**\n   * Constructs a new Timestamp.\n   * @exports Timestamp\n   * @classdesc Represents a Timestamp.\n   * @implements ITimestamp\n   * @constructor\n   * @param {ITimestamp=} [properties] Properties to set\n   */\n  function Timestamp(properties) {\n    if (properties)\n      for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]\n  }\n\n  /**\n   * Timestamp seconds.\n   * @member {number|Long} seconds\n   * @memberof Timestamp\n   * @instance\n   */\n  Timestamp.prototype.seconds = $util.Long\n    ? $util.Long.fromBits(0, 0, false)\n    : 0\n\n  /**\n   * Timestamp nanos.\n   * @member {number} nanos\n   * @memberof Timestamp\n   * @instance\n   */\n  Timestamp.prototype.nanos = 0\n\n  /**\n   * Creates a new Timestamp instance using the specified properties.\n   * @function create\n   * @memberof Timestamp\n   * @static\n   * @param {ITimestamp=} [properties] Properties to set\n   * @returns {Timestamp} Timestamp instance\n   */\n  Timestamp.create = function create(properties) {\n    return new Timestamp(properties)\n  }\n\n  /**\n   * Encodes the specified Timestamp message. Does not implicitly {@link Timestamp.verify|verify} messages.\n   * @function encode\n   * @memberof Timestamp\n   * @static\n   * @param {ITimestamp} message Timestamp message or plain object to encode\n   * @param {$protobuf.Writer} [writer] Writer to encode to\n   * @returns {$protobuf.Writer} Writer\n   */\n  Timestamp.encode = function encode(message, writer) {\n    if (!writer) writer = $Writer.create()\n    if (\n      message.seconds != null &&\n      Object.hasOwnProperty.call(message, \"seconds\")\n    )\n      writer.uint32(/* id 1, wireType 0 =*/ 8).int64(message.seconds)\n    if (message.nanos != null && Object.hasOwnProperty.call(message, \"nanos\"))\n      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.nanos)\n    return writer\n  }\n\n  /**\n   * Decodes a Timestamp message from the specified reader or buffer.\n   * @function decode\n   * @memberof Timestamp\n   * @static\n   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n   * @param {number} [length] Message length if known beforehand\n   * @returns {Timestamp} Timestamp\n   * @throws {Error} If the payload is not a reader or valid buffer\n   * @throws {$protobuf.util.ProtocolError} If required fields are missing\n   */\n  Timestamp.decode = function decode(reader, length) {\n    if (!(reader instanceof $Reader)) reader = $Reader.create(reader)\n    let end = length === undefined ? reader.len : reader.pos + length,\n      message = new $root.Timestamp()\n    while (reader.pos < end) {\n      let tag = reader.uint32()\n      switch (tag >>> 3) {\n        case 1: {\n          message.seconds = reader.int64()\n          break\n        }\n        case 2: {\n          message.nanos = reader.int32()\n          break\n        }\n        default:\n          reader.skipType(tag & 7)\n          break\n      }\n    }\n    return message\n  }\n\n  /**\n   * Verifies a Timestamp message.\n   * @function verify\n   * @memberof Timestamp\n   * @static\n   * @param {Object.<string,*>} message Plain object to verify\n   * @returns {string|null} `null` if valid, otherwise the reason why it is not\n   */\n  Timestamp.verify = function verify(message) {\n    if (typeof message !== \"object\" || message === null)\n      return \"object expected\"\n    if (message.seconds != null && message.hasOwnProperty(\"seconds\"))\n      if (\n        !$util.isInteger(message.seconds) &&\n        !(\n          message.seconds &&\n          $util.isInteger(message.seconds.low) &&\n          $util.isInteger(message.seconds.high)\n        )\n      )\n        return \"seconds: integer|Long expected\"\n    if (message.nanos != null && message.hasOwnProperty(\"nanos\"))\n      if (!$util.isInteger(message.nanos)) return \"nanos: integer expected\"\n    return null\n  }\n\n  /**\n   * Gets the default type url for Timestamp\n   * @function getTypeUrl\n   * @memberof Timestamp\n   * @static\n   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n   * @returns {string} The default type url\n   */\n  Timestamp.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n    if (typeUrlPrefix === undefined) {\n      typeUrlPrefix = \"type.googleapis.com\"\n    }\n    return typeUrlPrefix + \"/Timestamp\"\n  }\n\n  return Timestamp\n})())\n\n/**\n * @type {Class}\n */\nexport const Event = ($root.Event = (() => {\n  /**\n   * Properties of an Event.\n   * @exports IEvent\n   * @interface IEvent\n   * @property {Uint8Array|null} [eventBytes] Event eventBytes\n   * @property {string|null} [type] Event type\n   */\n\n  /**\n   * Constructs a new Event.\n   * @exports Event\n   * @classdesc Represents an Event.\n   * @implements IEvent\n   * @constructor\n   * @param {IEvent=} [properties] Properties to set\n   */\n  function Event(properties) {\n    if (properties)\n      for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]\n  }\n\n  /**\n   * Event eventBytes.\n   * @member {Uint8Array} eventBytes\n   * @memberof Event\n   * @instance\n   */\n  Event.prototype.eventBytes = $util.newBuffer([])\n\n  /**\n   * Event type.\n   * @member {string} type\n   * @memberof Event\n   * @instance\n   */\n  Event.prototype.type = \"\"\n\n  /**\n   * Creates a new Event instance using the specified properties.\n   * @function create\n   * @memberof Event\n   * @static\n   * @param {IEvent=} [properties] Properties to set\n   * @returns {Event} Event instance\n   */\n  Event.create = function create(properties) {\n    return new Event(properties)\n  }\n\n  /**\n   * Encodes the specified Event message. Does not implicitly {@link Event.verify|verify} messages.\n   * @function encode\n   * @memberof Event\n   * @static\n   * @param {IEvent} message Event message or plain object to encode\n   * @param {$protobuf.Writer} [writer] Writer to encode to\n   * @returns {$protobuf.Writer} Writer\n   */\n  Event.encode = function encode(message, writer) {\n    if (!writer) writer = $Writer.create()\n    if (\n      message.eventBytes != null &&\n      Object.hasOwnProperty.call(message, \"eventBytes\")\n    )\n      writer.uint32(/* id 1, wireType 2 =*/ 10).bytes(message.eventBytes)\n    if (message.type != null && Object.hasOwnProperty.call(message, \"type\"))\n      writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.type)\n    return writer\n  }\n\n  /**\n   * Decodes an Event message from the specified reader or buffer.\n   * @function decode\n   * @memberof Event\n   * @static\n   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n   * @param {number} [length] Message length if known beforehand\n   * @returns {Event} Event\n   * @throws {Error} If the payload is not a reader or valid buffer\n   * @throws {$protobuf.util.ProtocolError} If required fields are missing\n   */\n  Event.decode = function decode(reader, length) {\n    if (!(reader instanceof $Reader)) reader = $Reader.create(reader)\n    let end = length === undefined ? reader.len : reader.pos + length,\n      message = new $root.Event()\n    while (reader.pos < end) {\n      let tag = reader.uint32()\n      switch (tag >>> 3) {\n        case 1: {\n          message.eventBytes = reader.bytes()\n          break\n        }\n        case 2: {\n          message.type = reader.string()\n          break\n        }\n        default:\n          reader.skipType(tag & 7)\n          break\n      }\n    }\n    return message\n  }\n\n  /**\n   * Verifies an Event message.\n   * @function verify\n   * @memberof Event\n   * @static\n   * @param {Object.<string,*>} message Plain object to verify\n   * @returns {string|null} `null` if valid, otherwise the reason why it is not\n   */\n  Event.verify = function verify(message) {\n    if (typeof message !== \"object\" || message === null)\n      return \"object expected\"\n    if (message.eventBytes != null && message.hasOwnProperty(\"eventBytes\"))\n      if (\n        !(\n          (message.eventBytes &&\n            typeof message.eventBytes.length === \"number\") ||\n          $util.isString(message.eventBytes)\n        )\n      )\n        return \"eventBytes: buffer expected\"\n    if (message.type != null && message.hasOwnProperty(\"type\"))\n      if (!$util.isString(message.type)) return \"type: string expected\"\n    return null\n  }\n\n  /**\n   * Gets the default type url for Event\n   * @function getTypeUrl\n   * @memberof Event\n   * @static\n   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n   * @returns {string} The default type url\n   */\n  Event.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n    if (typeUrlPrefix === undefined) {\n      typeUrlPrefix = \"type.googleapis.com\"\n    }\n    return typeUrlPrefix + \"/Event\"\n  }\n\n  return Event\n})())\n\n/**\n * @type Class\n */\nexport const SendEventResponse = ($root.SendEventResponse = (() => {\n  /**\n   * Properties of a SendEventResponse.\n   * @exports ISendEventResponse\n   * @interface ISendEventResponse\n   * @property {Status|null} [status] SendEventResponse status\n   * @property {Code|null} [code] SendEventResponse code\n   * @property {number|Long|null} [sentTime] SendEventResponse sentTime\n   * @property {string|null} [reason] SendEventResponse reason\n   * @property {Object.<string,string>|null} [data] SendEventResponse data\n   */\n\n  /**\n   * Constructs a new SendEventResponse.\n   * @exports SendEventResponse\n   * @classdesc Represents a SendEventResponse.\n   * @implements ISendEventResponse\n   * @constructor\n   * @param {ISendEventResponse=} [properties] Properties to set\n   */\n  function SendEventResponse(properties) {\n    this.data = {}\n    if (properties)\n      for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n        if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]]\n  }\n\n  /**\n   * SendEventResponse status.\n   * @member {Status} status\n   * @memberof SendEventResponse\n   * @instance\n   */\n  SendEventResponse.prototype.status = 0\n\n  /**\n   * SendEventResponse code.\n   * @member {Code} code\n   * @memberof SendEventResponse\n   * @instance\n   */\n  SendEventResponse.prototype.code = 0\n\n  /**\n   * SendEventResponse sentTime.\n   * @member {number|Long} sentTime\n   * @memberof SendEventResponse\n   * @instance\n   */\n  SendEventResponse.prototype.sentTime = $util.Long\n    ? $util.Long.fromBits(0, 0, false)\n    : 0\n\n  /**\n   * SendEventResponse reason.\n   * @member {string} reason\n   * @memberof SendEventResponse\n   * @instance\n   */\n  SendEventResponse.prototype.reason = \"\"\n\n  /**\n   * SendEventResponse data.\n   * @member {Object.<string,string>} data\n   * @memberof SendEventResponse\n   * @instance\n   */\n  SendEventResponse.prototype.data = $util.emptyObject\n\n  /**\n   * Creates a new SendEventResponse instance using the specified properties.\n   * @function create\n   * @memberof SendEventResponse\n   * @static\n   * @param {ISendEventResponse=} [properties] Properties to set\n   * @returns {SendEventResponse} SendEventResponse instance\n   */\n  SendEventResponse.create = function create(properties) {\n    return new SendEventResponse(properties)\n  }\n\n  /**\n   * Encodes the specified SendEventResponse message. Does not implicitly {@link SendEventResponse.verify|verify} messages.\n   * @function encode\n   * @memberof SendEventResponse\n   * @static\n   * @param {ISendEventResponse} message SendEventResponse message or plain object to encode\n   * @param {$protobuf.Writer} [writer] Writer to encode to\n   * @returns {$protobuf.Writer} Writer\n   */\n  SendEventResponse.encode = function encode(message, writer) {\n    if (!writer) writer = $Writer.create()\n    if (message.status != null && Object.hasOwnProperty.call(message, \"status\"))\n      writer.uint32(/* id 1, wireType 0 =*/ 8).int32(message.status)\n    if (message.code != null && Object.hasOwnProperty.call(message, \"code\"))\n      writer.uint32(/* id 2, wireType 0 =*/ 16).int32(message.code)\n    if (\n      message.sentTime != null &&\n      Object.hasOwnProperty.call(message, \"sentTime\")\n    )\n      writer.uint32(/* id 3, wireType 0 =*/ 24).int64(message.sentTime)\n    if (message.reason != null && Object.hasOwnProperty.call(message, \"reason\"))\n      writer.uint32(/* id 4, wireType 2 =*/ 34).string(message.reason)\n    if (message.data != null && Object.hasOwnProperty.call(message, \"data\"))\n      for (let keys = Object.keys(message.data), i = 0; i < keys.length; ++i)\n        writer\n          .uint32(/* id 5, wireType 2 =*/ 42)\n          .fork()\n          .uint32(/* id 1, wireType 2 =*/ 10)\n          .string(keys[i])\n          .uint32(/* id 2, wireType 2 =*/ 18)\n          .string(message.data[keys[i]])\n          .ldelim()\n    return writer\n  }\n\n  /**\n   * Decodes a SendEventResponse message from the specified reader or buffer.\n   * @function decode\n   * @memberof SendEventResponse\n   * @static\n   * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n   * @param {number} [length] Message length if known beforehand\n   * @returns {SendEventResponse} SendEventResponse\n   * @throws {Error} If the payload is not a reader or valid buffer\n   * @throws {$protobuf.util.ProtocolError} If required fields are missing\n   */\n  SendEventResponse.decode = function decode(reader, length) {\n    if (!(reader instanceof $Reader)) reader = $Reader.create(reader)\n    let end = length === undefined ? reader.len : reader.pos + length,\n      message = new $root.SendEventResponse(),\n      key,\n      value\n    while (reader.pos < end) {\n      let tag = reader.uint32()\n      switch (tag >>> 3) {\n        case 1: {\n          message.status = reader.int32()\n          break\n        }\n        case 2: {\n          message.code = reader.int32()\n          break\n        }\n        case 3: {\n          message.sentTime = reader.int64()\n          break\n        }\n        case 4: {\n          message.reason = reader.string()\n          break\n        }\n        case 5: {\n          if (message.data === $util.emptyObject) message.data = {}\n          let end2 = reader.uint32() + reader.pos\n          key = \"\"\n          value = \"\"\n          while (reader.pos < end2) {\n            let tag2 = reader.uint32()\n            switch (tag2 >>> 3) {\n              case 1:\n                key = reader.string()\n                break\n              case 2:\n                value = reader.string()\n                break\n              default:\n                reader.skipType(tag2 & 7)\n                break\n            }\n          }\n          message.data[key] = value\n          break\n        }\n        default:\n          reader.skipType(tag & 7)\n          break\n      }\n    }\n    return message\n  }\n\n  /**\n   * Verifies a SendEventResponse message.\n   * @function verify\n   * @memberof SendEventResponse\n   * @static\n   * @param {Object.<string,*>} message Plain object to verify\n   * @returns {string|null} `null` if valid, otherwise the reason why it is not\n   */\n  SendEventResponse.verify = function verify(message) {\n    if (typeof message !== \"object\" || message === null)\n      return \"object expected\"\n    if (message.status != null && message.hasOwnProperty(\"status\"))\n      switch (message.status) {\n        default:\n          return \"status: enum value expected\"\n        case 0:\n        case 1:\n        case 2:\n          break\n      }\n    if (message.code != null && message.hasOwnProperty(\"code\"))\n      switch (message.code) {\n        default:\n          return \"code: enum value expected\"\n        case 0:\n        case 1:\n        case 2:\n        case 3:\n        case 4:\n        case 5:\n          break\n      }\n    if (message.sentTime != null && message.hasOwnProperty(\"sentTime\"))\n      if (\n        !$util.isInteger(message.sentTime) &&\n        !(\n          message.sentTime &&\n          $util.isInteger(message.sentTime.low) &&\n          $util.isInteger(message.sentTime.high)\n        )\n      )\n        return \"sentTime: integer|Long expected\"\n    if (message.reason != null && message.hasOwnProperty(\"reason\"))\n      if (!$util.isString(message.reason)) return \"reason: string expected\"\n    if (message.data != null && message.hasOwnProperty(\"data\")) {\n      if (!$util.isObject(message.data)) return \"data: object expected\"\n      let key = Object.keys(message.data)\n      for (let i = 0; i < key.length; ++i)\n        if (!$util.isString(message.data[key[i]]))\n          return \"data: string{k:string} expected\"\n    }\n    return null\n  }\n\n  /**\n   * Gets the default type url for SendEventResponse\n   * @function getTypeUrl\n   * @memberof SendEventResponse\n   * @static\n   * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n   * @returns {string} The default type url\n   */\n  SendEventResponse.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n    if (typeUrlPrefix === undefined) {\n      typeUrlPrefix = \"type.googleapis.com\"\n    }\n    return typeUrlPrefix + \"/SendEventResponse\"\n  }\n\n  return SendEventResponse\n})())\n\n/**\n * Status enum.\n * @exports Status\n * @enum {number}\n * @property {number} STATUS_UNSPECIFIED=0 STATUS_UNSPECIFIED value\n * @property {number} STATUS_SUCCESS=1 STATUS_SUCCESS value\n * @property {number} STATUS_ERROR=2 STATUS_ERROR value\n */\nexport const Status = ($root.Status = (() => {\n  const valuesById = {},\n    values = Object.create(valuesById)\n  values[(valuesById[0] = \"STATUS_UNSPECIFIED\")] = 0\n  values[(valuesById[1] = \"STATUS_SUCCESS\")] = 1\n  values[(valuesById[2] = \"STATUS_ERROR\")] = 2\n  return values\n})())\n\n/**\n * Code enum.\n * @exports Code\n * @enum {number}\n * @property {number} CODE_UNSPECIFIED=0 CODE_UNSPECIFIED value\n * @property {number} CODE_OK=1 CODE_OK value\n * @property {number} CODE_BAD_REQUEST=2 CODE_BAD_REQUEST value\n * @property {number} CODE_INTERNAL_ERROR=3 CODE_INTERNAL_ERROR value\n * @property {number} CODE_MAX_CONNECTION_LIMIT_REACHED=4 CODE_MAX_CONNECTION_LIMIT_REACHED value\n * @property {number} CODE_MAX_USER_LIMIT_REACHED=5 CODE_MAX_USER_LIMIT_REACHED value\n */\nexport const Code = ($root.Code = (() => {\n  const valuesById = {},\n    values = Object.create(valuesById)\n  values[(valuesById[0] = \"CODE_UNSPECIFIED\")] = 0\n  values[(valuesById[1] = \"CODE_OK\")] = 1\n  values[(valuesById[2] = \"CODE_BAD_REQUEST\")] = 2\n  values[(valuesById[3] = \"CODE_INTERNAL_ERROR\")] = 3\n  values[(valuesById[4] = \"CODE_MAX_CONNECTION_LIMIT_REACHED\")] = 4\n  values[(valuesById[5] = \"CODE_MAX_USER_LIMIT_REACHED\")] = 5\n  return values\n})())\n\nexport { $root as default }\n","let logging = false\n\nfunction format(prefix, args) {\n  if (!prefix) return args\n  return [prefix, ...args]\n}\n\nconst info = function (prefix = \"\", ...args) {\n  if (!logging) return\n  console.log(...format(prefix, args))\n}\n\nconst debug = function (prefix = \"\", ...args) {\n  if (!logging) return\n  console.debug(...format(prefix, args))\n}\n\nconst warn = function (prefix = \"\", ...args) {\n  if (!logging) return\n  console.warn(...format(prefix, args))\n}\n\nconst error = function (prefix = \"\", ...args) {\n  console.error(...format(prefix, args))\n}\n\nexport const logger = {\n  info,\n  debug,\n  warn,\n  error,\n  get logging() {\n    return logging\n  },\n  set logging(value) {\n    logging = Boolean(value)\n  },\n}\n","/**\n * Returns a promise that resolves with the content of a blob as an ArrayBuffer\n *\n * @param {Blob} blob blob content\n * @returns {Promise}\n */\nexport const readAsBuffer = async (blob) => {\n  if (blob.arrayBuffer) {\n    return blob.arrayBuffer()\n  }\n\n  return new Promise((resolve, reject) => {\n    const reader = new FileReader()\n\n    reader.onloadend = () => {\n      // https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readyState\n      if (reader.readyState === 2) {\n        resolve(reader.result)\n      }\n    }\n    reader.onerror = (err) => reject(err)\n\n    reader.readAsArrayBuffer(blob)\n  })\n}\n","import { CUSTOM_EVENT, EVENT_TYPE } from \"./constants/index.js\"\nimport { NetworkError } from \"./error.js\"\nimport { SendEventRequest, SendEventResponse, Event } from \"./protos/raccoon.js\"\nimport { logger } from \"./logger.js\"\nimport { readAsBuffer } from \"./blob.js\"\n\nconst logPrefix = \"Network:\"\n\n/**\n * Gives timestamp object as google timestamp format\n * @returns timestamp object containing seconds\n */\nconst getTimestamp = () => {\n  const date = new Date()\n  const seconds = Math.floor(date.getTime() / 1000)\n\n  return { seconds }\n}\n\nexport default class Transport {\n  #config\n  #store\n  #eventBus\n  #id\n  #retryCount = 0\n  #resetRetryTimeout\n  constructor({ config, eventBus, store, id }) {\n    this.#config = config\n    this.#eventBus = eventBus\n    this.#store = store\n    this.#retryCount = 0\n    this.#resetRetryTimeout = undefined\n    this.#id = id\n  }\n\n  #createRequest(batch) {\n    const reqGuid = this.#id.uuidv4()\n    const { seconds } = getTimestamp()\n\n    logger.info(logPrefix, \"generated reqGuid\", reqGuid)\n    logger.info(logPrefix, \"generated timestamp(seconds)\", seconds)\n\n    // update QoS1 events in store\n    const realTimeBatch = batch.filter((event) => {\n      return event.eventType === EVENT_TYPE.REALTIME\n    })\n\n    if (realTimeBatch.length && this.#store.isOpen) {\n      this.#store.update(realTimeBatch, \"reqGuid\", reqGuid)\n      logger.info(logPrefix, \"updated reqGuid for all events in store\")\n    }\n\n    const encodedBatch = batch.map((payload) => {\n      const { data, type } = payload\n      return Event.create({\n        eventBytes: data,\n        type,\n      })\n    })\n\n    const request = SendEventRequest.create({\n      reqGuid,\n      sentTime: {\n        seconds,\n      },\n      events: [...encodedBatch],\n    })\n\n    logger.debug(logPrefix, \"network request\", request)\n\n    return {\n      reqGuid,\n      body: SendEventRequest.encode(request).finish(),\n    }\n  }\n\n  #retry(request) {\n    const { maxRetries, timeBetweenTwoRetries, timeToResumeRetries } =\n      this.#config\n\n    if (this.#retryCount < maxRetries) {\n      if (this.#resetRetryTimeout) {\n        window.clearTimeout(this.#resetRetryTimeout)\n        this.#resetRetryTimeout = undefined\n      }\n\n      this.#retryCount += 1\n\n      logger.debug(logPrefix, \"retry\", this.#retryCount)\n      window.setTimeout(() => {\n        this.#eventBus.emit(CUSTOM_EVENT.BATCH_FAILED, {\n          reqGuid: request.reqGuid,\n        })\n      }, timeBetweenTwoRetries)\n    } else if (this.#retryCount === maxRetries) {\n      if (this.#resetRetryTimeout === undefined) {\n        logger.debug(logPrefix, \"waiting for\", timeToResumeRetries)\n        this.#resetRetryTimeout = window.setTimeout(() => {\n          this.#retryCount = 0\n          this.#retry(request)\n        }, timeToResumeRetries)\n      }\n    }\n  }\n\n  async #makeRequest(request, { retry }) {\n    const headers = new Headers(this.#config.headers)\n    headers.append(\"Content-Type\", \"application/proto\")\n\n    try {\n      const response = await fetch(this.#config.url, {\n        method: \"POST\",\n        headers,\n        body: request.body,\n      })\n\n      if (!response.ok) {\n        logger.error(\n          logPrefix,\n          new NetworkError(\n            `Network request to raccoon failed with status code ${response.status}`\n          )\n        )\n        if (retry) this.#retry(request)\n        return\n      }\n\n      logger.info(logPrefix, \"received response from raccoon \")\n      if (this.#store.isOpen()) {\n        const blob = await response.blob()\n\n        const buffer = await readAsBuffer(blob)\n\n        const uInt = new Uint8Array(buffer)\n        const res = SendEventResponse.decode(uInt)\n\n        logger.debug(\n          logPrefix,\n          \"response data from Raccoon\",\n          res,\n          JSON.stringify(res, undefined, 2)\n        )\n\n        const events = await this.#store.readByReqGuid(res.data[\"req_guid\"])\n        this.#store.remove(events)\n        logger.debug(\n          \"remove events from store with reqGuid\",\n          res.data[\"req_guid\"]\n        )\n      }\n    } catch (err) {\n      logger.error(logPrefix, new NetworkError(err.message, { cause: err }))\n      if (retry) this.#retry(request)\n    }\n  }\n\n  /**\n   * Send data over network to clickstream BE\n   *\n   * @param batch batch to send\n   */\n  async send(\n    /** @type {import(\"./store.js\").Event[]} */ batch,\n    { retry = false } = {}\n  ) {\n    const request = this.#createRequest(batch)\n    this.#makeRequest(request, { retry })\n  }\n}\n","import { EVENT_TYPE } from \"./constants/index.js\"\nimport { logger } from \"./logger.js\"\n\nconst logPrefix = \"Processor:\"\n\nexport default class Processor {\n  #config\n  #store\n  #id\n  #isRealTimeEventsSupported\n  constructor({ config, store, id, isRealTimeEventsSupported }) {\n    this.#config = config\n    this.#store = store\n    this.#id = id\n    this.#isRealTimeEventsSupported = isRealTimeEventsSupported\n  }\n\n  #type(proto) {\n    if (!this.#isRealTimeEventsSupported) {\n      logger.info(\n        logPrefix,\n        `treating \"${proto.eventName}\" event as QoS0 as QoS1 events are not supported`\n      )\n      return EVENT_TYPE.INSTANT\n    }\n\n    // if the storage is not available, event is treated as instant event\n    if (!this.#store.isOpen()) {\n      logger.info(\n        logPrefix,\n        `treating \"${proto.eventName}\" event as QoS0 as indexedDB is not supported`\n      )\n      return EVENT_TYPE.INSTANT\n    }\n\n    if (this.#config?.classification?.instant?.includes(proto.eventName)) {\n      logger.info(\n        logPrefix,\n        `\"${proto.eventName}\" event is classified as QoS0 as per configuration`\n      )\n      return EVENT_TYPE.INSTANT\n    }\n\n    logger.info(\n      logPrefix,\n      `\"${proto.eventName}\" event is considered as QoS1 by default configuration`\n    )\n    return EVENT_TYPE.REALTIME\n  }\n\n  #createEvent(payload, eventType) {\n    const PayloadConstructor = payload.constructor\n    const encodedEvent = PayloadConstructor.encode(payload).finish()\n\n    try {\n      if (PayloadConstructor.decode) {\n        const decodedEvent = PayloadConstructor.decode(encodedEvent)\n        logger.debug(logPrefix, \"decoded event payload\", decodedEvent)\n      }\n    } catch (err) {\n      logger.debug(logPrefix, \"event decoding failed\", err)\n    }\n\n    const typeUrlSplit = PayloadConstructor.getTypeUrl(\"\").split(\".\")\n    const typeUrl = typeUrlSplit[typeUrlSplit.length - 1].toLowerCase()\n    const type = this.#config.group\n      ? `${this.#config.group}-${typeUrl}`\n      : typeUrl\n\n    logger.info(logPrefix, \"topic name is set to\", type)\n\n    /** @type {import(\"./store.js\").Event} */\n    const event = {\n      data: encodedEvent,\n      eventType,\n      type,\n    }\n\n    if (eventType === EVENT_TYPE.REALTIME) {\n      event.eventGuid = this.#id.uuidv4()\n      event.reqGuid = \"\"\n    }\n\n    logger.info(logPrefix, \"created a new event\")\n    logger.debug(logPrefix, \"new event data\", event)\n    return event\n  }\n\n  /**\n   * Processes an event\n   *\n   * @param proto - event proto\n   * @returns type and event\n   */\n  process(/** @type {object} */ proto) {\n    const type = this.#type(proto)\n    const event = this.#createEvent(proto, type)\n    return {\n      type,\n      event,\n    }\n  }\n}\n","import { CUSTOM_EVENT, TICK_TIME } from \"./constants/index.js\"\nimport { logger } from \"./logger.js\"\n\nconst logPrefix = \"Scheduler:\"\nexport default class Scheduler {\n  /** @type { number | NodeJS.Timer | undefined } */\n  #intervalId\n  #waitTime\n  #batching\n  #config\n  #eventBus\n  #store\n  #batch\n  #lastBatch\n  constructor({ config, eventBus, store }) {\n    this.#config = config\n    this.#eventBus = eventBus\n    this.#store = store\n    this.#intervalId = undefined\n    this.#waitTime = 0\n    this.#batching = false\n    this.#batch = []\n    this.#lastBatch = []\n  }\n\n  /**\n   * Return if the scheduler is running or not\n   */\n  isRunning() {\n    return this.#batching\n  }\n\n  /**\n   * Start the scheduler\n   */\n  start() {\n    this.#batching = true\n    this.#run()\n    this.#listeners()\n  }\n\n  /**\n   * Stop the scheduler\n   */\n  stop() {\n    this.#clearInterval()\n    this.#waitTime = 0\n    this.#batching = false\n  }\n\n  /**\n   * Pause the scheduler\n   */\n  pause() {\n    this.#batching = false\n  }\n\n  /**\n   * Resume the scheduler\n   */\n  resume() {\n    this.#batching = true\n  }\n\n  async free() {\n    try {\n      this.stop()\n      logger.info(logPrefix, \"scheduler is stopped\")\n      logger.info(logPrefix, \"flushing all events\")\n      if (this.#store.isOpen()) {\n        await this.#flush()\n      }\n      this.#removeListeners()\n    } catch (err) {\n      return Promise.reject(err)\n    }\n  }\n\n  /**\n   * Flushes all the events in store\n   */\n  async #flush() {\n    let events = await this.#store.read()\n\n    // filter out existing events in batch and last batch\n    events = events.filter((event) => {\n      return ![...this.#batch, ...this.#lastBatch].some((data) => {\n        return data.eventGuid === event.eventGuid\n      })\n    })\n\n    logger.debug(logPrefix, \"flushed events\", events)\n    this.#batch.push(...events)\n\n    this.#emit()\n  }\n\n  #clearInterval() {\n    if (this.#intervalId !== undefined) {\n      clearInterval(this.#intervalId)\n      this.#intervalId = undefined\n    }\n  }\n\n  #emit() {\n    if (this.#batch.length) {\n      this.#eventBus.emit(CUSTOM_EVENT.BATCH_CREATED, { batch: this.#batch })\n    }\n\n    this.#waitTime = 0\n    this.#lastBatch = this.#batch\n    this.#batch = []\n  }\n\n  #listeners() {\n    this.#eventBus?.on(CUSTOM_EVENT.BATCH_FAILED, async (e) => {\n      logger.debug(logPrefix, \"batch failed with reqGuid\", e.detail.reqGuid)\n      const events = await this.#store.readByReqGuid(e.detail.reqGuid)\n      this.#eventBus.emit(CUSTOM_EVENT.BATCH_CREATED, { batch: events })\n    })\n    logger.info(logPrefix, 'added \"BATCH_FAILED\" listener')\n  }\n\n  #removeListeners() {\n    this.#eventBus?.remove(CUSTOM_EVENT.BATCH_FAILED)\n    logger.info(logPrefix, 'removed \"BATCH_FAILED\" listener')\n  }\n\n  #batchSize(batch) {\n    return batch.reduce((prev, curr) => {\n      return prev + new Blob(curr?.data).size\n    }, 0)\n  }\n\n  #splitBySize(events) {\n    const unitSize = this.#batchSize([events[0]])\n    const batchSize = this.#batchSize(this.#batch)\n    const remSize = this.#config.maxBatchSize - batchSize\n\n    logger.debug(logPrefix, \"current batch size\", batchSize)\n    logger.debug(logPrefix, \"max batch size\", this.#config.maxBatchSize)\n    logger.debug(logPrefix, \"remaining batch size\", remSize)\n\n    return events.splice(0, Math.ceil(remSize / unitSize) + 1)\n  }\n\n  async #getRealTimeEvents() {\n    if (!this.#store.isOpen()) {\n      logger.debug(logPrefix, \"store is not open\")\n      return []\n    }\n    try {\n      let events = await this.#store.read()\n\n      // filter out existing events in batch and last batch\n      events = events.filter((event) => {\n        return ![...this.#batch, ...this.#lastBatch].some((data) => {\n          return data.eventGuid === event.eventGuid\n        })\n      })\n\n      if (!events.length) {\n        logger.debug(\"no new QoS1 events are found\")\n        return []\n      }\n\n      const eventsBySize = this.#splitBySize(events)\n\n      logger.debug(\n        logPrefix,\n        \"events before splitting by size\",\n        events,\n        events.length\n      )\n\n      logger.debug(\n        logPrefix,\n        \"events after splitting by size\",\n        eventsBySize,\n        eventsBySize.length\n      )\n\n      return eventsBySize\n    } catch (error) {\n      logger.error(logPrefix, error)\n      return []\n    }\n  }\n\n  async #fill() {\n    const realTimeEvents = await this.#getRealTimeEvents()\n    logger.debug(logPrefix, \"QoS1 events\", realTimeEvents)\n    if (realTimeEvents.length) {\n      this.#batch.push(...realTimeEvents)\n      logger.debug(logPrefix, \"QoS1 events pushed in batch\", this.#batch)\n    }\n  }\n\n  #run() {\n    this.#clearInterval()\n    this.#intervalId = setInterval(() => {\n      if (!this.#batching) {\n        logger.debug(logPrefix, \"batching is not running\")\n        return\n      }\n\n      this.#waitTime += 1\n      this.#fill()\n\n      const batchSize = this.#batchSize(this.#batch)\n\n      if (batchSize >= this.#config.maxBatchSize) {\n        this.#emit()\n        logger.info(\n          logPrefix,\n          \"this batch of size\",\n          batchSize,\n          \"batch has reached max size threshold of\",\n          this.#config.maxBatchSize\n        )\n      } else if (this.#waitTime >= this.#config.maxTimeBetweenTwoBatches) {\n        this.#emit()\n        logger.info(\n          logPrefix,\n          \"batch has waited max time of\",\n          this.#config.maxTimeBetweenTwoBatches\n        )\n      }\n    }, TICK_TIME)\n  }\n}\n","export default class EventBus {\n  constructor() {\n    this.eventTarget = new EventTarget()\n  }\n  /**\n   * Event emitter\n   *\n   * emit the event on EventTarget\n   *\n   * @param type name of the event\n   * @param payload data to attach in event\n   */\n  emit(/** @type {string} */ type, /** @type {object} */ payload) {\n    const event = new CustomEvent(type, { detail: payload })\n    this.eventTarget.dispatchEvent(event)\n  }\n\n  /**\n   * Event listener\n   *\n   * Subscribes to the given event on the same EventTarget\n   *\n   * @param type name of the event\n   * @param callback callback function\n   */\n  on(/** @type {string} */ type, callback) {\n    this.eventTarget.addEventListener(type, callback)\n  }\n\n  /**\n   * Event remover\n   *\n   * Removes to the given event on the same EventTarget\n   *\n   * @param type name of the event\n   * @param callback callback function\n   */\n  remove(/** @type {string} */ type, callback) {\n    this.eventTarget.removeEventListener(type, callback)\n  }\n}\n","import { DatabaseError } from \"./error.js\"\nimport { logger } from \"./logger.js\"\n\nconst STORE = \"events\"\nconst logPrefix = \"Store:\"\n\n/**\n * @typedef {object} Event - Event type used in database\n * @property {Uint8Array} data - encoded event data\n * @property {string=} eventGuid - eventGuid\n * @property {string=} reqGuid - reqGuid\n * @property {string} eventType - event type\n * @property {string} type - type\n */\nexport default class Store {\n  #name\n  #version\n  #db\n  #isOpen\n  constructor({ name = \"clickstream_db\", version = 1 }) {\n    this.#name = name\n    this.#version = version\n    this.#isOpen = false\n  }\n\n  isOpen() {\n    return this.#isOpen\n  }\n\n  /**\n   * Open a new database connection\n   * @returns Returns status\n   */\n  open() {\n    return new Promise((resolve, reject) => {\n      const request = window.indexedDB.open(this.#name, this.#version)\n\n      request.onblocked = (event) => {\n        // If some other tab is loaded with the database, then it needs to be closed\n        // before we can proceed.\n        logger.info(\n          logPrefix,\n          \"please close all other tabs with this site open\"\n        )\n        // @ts-ignore\n        reject(event.target.error)\n      }\n\n      request.onerror = (event) => {\n        // @ts-ignore\n        reject(event.target.error)\n      }\n\n      request.onsuccess = (event) => {\n        // @ts-ignore\n        this.#db = event.target.result\n        this.#isOpen = true\n        resolve(\"success\")\n        logger.info(logPrefix, \"store is open with name\", this.#name)\n\n        this.#db.addEventListener(\"close\", () => {\n          logger.info(logPrefix, \"database connection is closed\")\n        })\n      }\n\n      request.onupgradeneeded = (event) => {\n        // @ts-ignore\n        this.#db = event.target.result\n\n        switch (event.oldVersion) {\n          case 0: {\n            const objectStore = this.#db.createObjectStore(STORE, {\n              keyPath: \"eventGuid\",\n            })\n\n            objectStore.createIndex(\"reqGuid\", \"reqGuid\", { unique: false })\n\n            objectStore.createIndex(\"eventGuid\", \"eventGuid\", { unique: true })\n          }\n        }\n\n        this.#db.onversionchange = (event) => {\n          this.#db.close()\n          this.#isOpen = false\n          logger.info(\n            logPrefix,\n            \"a new version of this page is ready, please reload or close this tab\"\n          )\n          reject(event.target.error)\n        }\n      }\n    })\n  }\n\n  /**\n   * Reads all the data in the store\n   * @returns all the data present in the store\n   */\n  read() {\n    return new Promise((resolve, reject) => {\n      try {\n        const objectStore = this.#db.transaction(STORE).objectStore(STORE)\n\n        objectStore.getAll().onsuccess = (event) => {\n          resolve(event.target.result)\n        }\n\n        objectStore.getAll().onerror = (event) => {\n          reject(event.target.error)\n        }\n      } catch (err) {\n        this.#isOpen = false\n        logger.error(logPrefix, new DatabaseError(err.message, { cause: err }))\n      }\n    })\n  }\n\n  /**\n   *\n   * @param reqGuid\n   * @returns Events with same reqGuid\n   */\n  readByReqGuid(reqGuid) {\n    return new Promise((resolve) => {\n      const events = []\n      try {\n        const objectStore = this.#db\n          .transaction([STORE], \"readwrite\")\n          .objectStore(STORE)\n\n        const index = objectStore.index(\"reqGuid\")\n\n        index.openCursor().onsuccess = (event) => {\n          try {\n            const cursor = event.target.result\n            if (cursor) {\n              if (cursor.value.reqGuid === reqGuid) {\n                events.push(cursor.value)\n              }\n              cursor.continue()\n            } else {\n              resolve(events)\n            }\n          } catch (err) {\n            logger.error(\n              logPrefix,\n              new DatabaseError(err.message, { cause: err })\n            )\n          }\n        }\n      } catch (err) {\n        this.#isOpen = false\n        logger.error(logPrefix, new DatabaseError(err.message, { cause: err }))\n      }\n    })\n  }\n\n  /**\n   * Writes events to db store\n   * @param events Events to write in the db store\n   * @returns Status of the transaction\n   */\n  write(/** @type {Event | Event[]} */ events) {\n    return new Promise((resolve, reject) => {\n      if (!Array.isArray(events)) {\n        events = [events]\n      }\n\n      try {\n        const transaction = this.#db.transaction([STORE], \"readwrite\")\n        const objectStore = transaction.objectStore(STORE)\n\n        transaction.oncomplete = () => {\n          resolve(\"success\")\n        }\n\n        transaction.onerror = (event) => {\n          reject(event.target.error)\n        }\n\n        try {\n          events.forEach((event) => {\n            objectStore.add(event)\n          })\n        } catch (err) {\n          logger.error(\n            logPrefix,\n            new DatabaseError(err.message, { cause: err })\n          )\n        }\n      } catch (err) {\n        this.#isOpen = false\n        logger.error(logPrefix, new DatabaseError(err.message, { cause: err }))\n      }\n    })\n  }\n\n  /**\n   * Update events within db store\n   * @param events Events\n   * @param key key\n   * @param val value\n   */\n  update(\n    /** @type {Event[]} */ events,\n    /** @type {string} */ key,\n    /** @type {string} */ val\n  ) {\n    try {\n      const objectStore = this.#db\n        .transaction([STORE], \"readwrite\")\n        .objectStore(STORE)\n\n      try {\n        events.forEach((event) => {\n          event[key] = val\n          objectStore.put(event)\n        })\n      } catch (err) {\n        logger.error(logPrefix, new DatabaseError(err.message, { cause: err }))\n      }\n    } catch (err) {\n      this.#isOpen = false\n      logger.error(logPrefix, new DatabaseError(err.message, { cause: err }))\n    }\n  }\n\n  /**\n   * Remove events from store\n   * @param events events to remove\n   * @returns status of the call\n   */\n  remove(/** @type {Event[]} */ events) {\n    return new Promise((resolve, reject) => {\n      try {\n        const transaction = this.#db.transaction([STORE], \"readwrite\")\n        const objectStore = transaction.objectStore(STORE)\n\n        transaction.oncomplete = () => {\n          resolve(\"success\")\n        }\n\n        transaction.onerror = (event) => {\n          reject(event.target.error)\n        }\n\n        try {\n          events.forEach((event) => {\n            objectStore.delete(event.eventGuid)\n          })\n        } catch (err) {\n          logger.error(\n            logPrefix,\n            new DatabaseError(err.message, { cause: err })\n          )\n        }\n      } catch (err) {\n        this.#isOpen = false\n        logger.error(logPrefix, new DatabaseError(err.message, { cause: err }))\n      }\n    })\n  }\n\n  /**\n   * Deletes the database\n   */\n  delete() {\n    return new Promise((resolve, reject) => {\n      let request = window.indexedDB.deleteDatabase(this.#name)\n\n      request.onerror = (event) => {\n        // @ts-ignore\n        reject(event.target.error)\n      }\n\n      request.onsuccess = (event) => {\n        this.#db = null\n        this.#isOpen = false\n        // @ts-ignore\n        resolve(event.target.result)\n      }\n    })\n  }\n}\n","export default class Id {\n  #crypto\n  constructor({ crypto: cryptoObj }) {\n    this.#crypto = cryptoObj || crypto\n  }\n  /**\n   * Gives a unique random v4 uuid\n   *\n   * @returns Unique random uuidv4 string\n   */\n  uuidv4() {\n    return `${1e7}-${1e3}-${4e3}-${8e3}-${1e11}`.replace(\n      /[018]/g,\n      (/** @type any */ c) =>\n        (\n          c ^\n          (this.#crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))\n        ).toString(16)\n    )\n  }\n}\n","import { ValidationError } from \"./error.js\"\n\nconst isPositiveInteger = (value) => {\n  return Number.isInteger(value) && value > 0\n}\n\nconst isString = (value) => {\n  return typeof value === \"string\"\n}\n\nconst isDefined = (value) => {\n  return value !== undefined\n}\n\nexport default class Validator {\n  validate(\n    /** @type {import(\"./constants/config.js\").EventConfig} */\n    event,\n    /** @type {import(\"./constants/config.js\").BatchConfig} */\n    batch,\n    /** @type {import(\"./constants/config.js\").NetworkConfig} */\n    network,\n    /** @type {object} */\n    crypto\n  ) {\n    // network validation\n    if (!network?.url) {\n      throw new ValidationError(\"provide url in network config\")\n    }\n\n    if (\n      isDefined(network.url) &&\n      !isString(network.url) &&\n      !(network.url instanceof URL)\n    ) {\n      throw new ValidationError(\n        \"network url must be of type string or instance of URL\"\n      )\n    }\n\n    if (!network?.headers) {\n      throw new ValidationError(\n        `provide \"Authorization\" header in network config`\n      )\n    }\n\n    if (isDefined(network.headers) && !(network.headers instanceof Headers)) {\n      throw new ValidationError(\"network headers must be instance of Headers\")\n    }\n\n    if (!network.headers.get(\"Authorization\")) {\n      throw new ValidationError(\n        `provide \"Authorization\" header in network config`\n      )\n    }\n\n    if (isDefined(network.timeBetweenTwoRetries)) {\n      if (!isPositiveInteger(network.timeBetweenTwoRetries)) {\n        throw new ValidationError(\n          `\"timeBetweenTwoRetries\" must be a positive integer`\n        )\n      }\n    }\n\n    if (isDefined(network.timeToResumeRetries)) {\n      if (!isPositiveInteger(network.timeToResumeRetries)) {\n        throw new ValidationError(\n          `\"timeToResumeRetries\" must be a positive integer`\n        )\n      }\n    }\n\n    // event validation\n    if (isDefined(event?.classification?.instant)) {\n      const isNonString = event.classification.instant.some((eventName) => {\n        return !isString(eventName)\n      })\n\n      if (isNonString) {\n        throw new ValidationError(\n          `\"instant\" event names must be of type string`\n        )\n      }\n    }\n\n    if (isDefined(event?.group) && !isString(event.group)) {\n      throw new ValidationError(`\"group\" name must be of type string`)\n    }\n\n    // batch validation\n    if (\n      isDefined(batch?.maxTimeBetweenTwoBatches) &&\n      !isPositiveInteger(batch.maxTimeBetweenTwoBatches)\n    ) {\n      throw new ValidationError(\n        \"maxTimeBetweenTwoBatches must be a positive integer\"\n      )\n    }\n\n    if (\n      isDefined(batch?.maxBatchSize) &&\n      !isPositiveInteger(batch.maxBatchSize)\n    ) {\n      throw new ValidationError(`\"maxBatchSize\" must be a positive integer`)\n    }\n\n    if (isDefined(batch?.dbName) && !isString(batch.dbName)) {\n      throw new ValidationError(`\"dbName\" name must be of type string`)\n    }\n\n    // crypto validation\n    if (isDefined(crypto) && typeof crypto !== \"object\") {\n      throw new ValidationError(`\"crypto\" must be of type object`)\n    }\n  }\n}\n","import Transport from \"./transport.js\"\nimport Processor from \"./processor.js\"\nimport Scheduler from \"./scheduler.js\"\nimport EventBus from \"./event.js\"\nimport Store from \"./store.js\"\nimport Id from \"./id.js\"\nimport { CUSTOM_EVENT, EVENT_TYPE, defaultConfig } from \"./constants/index.js\"\nimport Validator from \"./validator.js\"\nimport { logger } from \"./logger.js\"\nimport {\n  ClickstreamError,\n  DatabaseError,\n  errorCodes,\n  errorNames,\n} from \"./error.js\"\n\nconst logPrefix = \"Cickstream:\"\n\nconst runtime = {\n  BROWSER: \"browser\",\n  NODE: \"node\",\n  UNKNOWN: \"unknown\",\n}\n\nconst getRuntime = () => {\n  if (typeof globalThis.process === \"object\") {\n    return runtime.NODE\n  } else if (typeof globalThis.window !== \"undefined\") {\n    return runtime.BROWSER\n  } else {\n    return runtime.UNKNOWN\n  }\n}\n\nconst logMetaData = async () => {\n  const rt = getRuntime()\n\n  logger.debug(logPrefix, \"runtime detected:\", rt)\n\n  if (rt === runtime.BROWSER) {\n    const { vendor, userAgent, platform } = globalThis.navigator\n\n    logger.debug(logPrefix, \"url:\", document?.location.href ?? null)\n    logger.debug(logPrefix, \"platform:\", platform)\n    logger.debug(logPrefix, \"vendor:\", vendor)\n    logger.debug(logPrefix, \"userAgent:\", userAgent)\n  } else if (rt === runtime.NODE) {\n    logger.debug(logPrefix, `node version: ${globalThis.process.version}`)\n  }\n}\n\nconst isRealTimeEventsSupported = () => {\n  if (globalThis.indexedDB === undefined) {\n    return false\n  }\n\n  if (globalThis.EventTarget === undefined) {\n    return false\n  }\n\n  return true\n}\n\nexport default class Clickstream {\n  #tracking\n  #processor\n  #scheduler\n  #transport\n  #store\n  #id\n  #eventBus\n  #eventConfig\n  #batchConfig\n  #networkConfig\n  #isRealTimeEventsSupported\n  /**\n   * @constructor\n   * @param options Configuration options\n   */\n  constructor(\n    /** @type {import(\"./constants/config.js\").Config} */ {\n      event,\n      batch,\n      network,\n      crypto,\n      debug,\n    }\n  ) {\n    if (debug) {\n      logger.logging = debug\n      logger.info(logPrefix, \"logging is set to\", logger.logging)\n    }\n\n    logMetaData()\n\n    logger.info(logPrefix, \"configuration received\")\n    logger.debug(logPrefix, \"event configuration received\", event)\n    logger.debug(logPrefix, \"batch configuration received\", batch)\n    logger.debug(logPrefix, \"network configuration received\", network)\n    logger.debug(logPrefix, \"crypto configuration received\", crypto)\n\n    new Validator().validate(event, batch, network, crypto)\n\n    logger.info(logPrefix, \"configuration validation is successful\")\n\n    this.#isRealTimeEventsSupported = isRealTimeEventsSupported()\n\n    logger.info(\n      logPrefix,\n      `QoS1 events are ${\n        this.#isRealTimeEventsSupported ? \"\" : \"not\"\n      } supported`\n    )\n\n    this.#eventConfig = Object.assign(defaultConfig.event, event)\n    this.#batchConfig = Object.assign(defaultConfig.batch, batch)\n    this.#networkConfig = Object.assign(defaultConfig.network, network)\n\n    logger.info(logPrefix, \"configuration merged with default configuration\")\n    logger.debug(logPrefix, \"event configuration\", this.#eventConfig)\n    logger.debug(logPrefix, \"batch configuration\", this.#batchConfig)\n    logger.debug(logPrefix, \"network configuration\", this.#networkConfig)\n    logger.debug(logPrefix, \"crypto configuration\", crypto)\n\n    this.#tracking = true\n\n    this.#store = new Store({\n      name: this.#batchConfig.dbName,\n    })\n\n    if (this.#isRealTimeEventsSupported) {\n      this.#eventBus = new EventBus()\n    }\n\n    this.#id = new Id({ crypto })\n\n    this.#processor = new Processor({\n      config: this.#eventConfig,\n      store: this.#store,\n      id: this.#id,\n      isRealTimeEventsSupported,\n    })\n\n    this.#scheduler = new Scheduler({\n      config: this.#batchConfig,\n      eventBus: this.#eventBus,\n      store: this.#store,\n    })\n\n    this.#transport = new Transport({\n      config: this.#networkConfig,\n      eventBus: this.#eventBus,\n      store: this.#store,\n      id: this.#id,\n    })\n\n    this.#init()\n  }\n\n  #init() {\n    if (this.#isRealTimeEventsSupported) {\n      this.#listeners()\n      this.#scheduler.start()\n      logger.info(logPrefix, \"scheduler is up and running\")\n    }\n  }\n\n  #listeners() {\n    this.#eventBus?.on(CUSTOM_EVENT.BATCH_CREATED, (e) => {\n      logger.info(logPrefix, \"new batch created\")\n      logger.debug(logPrefix, \"new batch data\", e.detail.batch)\n      this.#transport.send(e.detail.batch, { retry: true })\n    })\n  }\n\n  /**\n   * Dispatches a new event asynchronously.\n   *\n   * It processes the event and registers them in the system.\n   * It doesn't take network request into account, success of the .track() doesn't mean that event is sent and stored at backend.\n   *\n   * In case of failure it rejects the promise with error, and in that case event is not registered in the system.\n   *\n   * @param payload - JavaScript proto instance\n   * @returns Promise\n   */\n  async track(/** @type {object} */ payload) {\n    if (!this.#tracking) {\n      return Promise.reject(\n        new ClickstreamError(\n          \"Tracking is paused, call .resume() method to resume tracking\",\n          { code: errorCodes.TRACKING_ERROR }\n        )\n      )\n    }\n\n    if (this.#isRealTimeEventsSupported && !this.#scheduler.isRunning()) {\n      this.#scheduler.start()\n      logger.info(logPrefix, \"restarted scheduler\")\n    }\n\n    if (this.#isRealTimeEventsSupported && !this.#store?.isOpen()) {\n      try {\n        await this.#store.open()\n      } catch (error) {\n        return Promise.reject(\n          new DatabaseError(error.message, { cause: error })\n        )\n      }\n    }\n\n    const { type, event } = this.#processor.process(payload)\n\n    logger.info(logPrefix, \"event type is set to\", type)\n\n    try {\n      if (type === EVENT_TYPE.REALTIME) {\n        await this.#store.write(event)\n        logger.info(\n          logPrefix,\n          \"event is stored in the store with eventGuid\",\n          event.eventGuid\n        )\n      } else if (type === EVENT_TYPE.INSTANT) {\n        logger.info(logPrefix, \"event is sent to transport layer\")\n        this.#transport.send([event])\n      }\n    } catch (error) {\n      return Promise.reject(\n        new ClickstreamError(error.message, { cause: error })\n      )\n    }\n  }\n\n  /**\n   * Pauses the tracking.\n   *\n   * New .track() method calls are ignored, existing events in the system are still processed.\n   * Tracking can be resumed by calling .resume() method.\n   */\n  pause() {\n    this.#tracking = false\n    logger.info(logPrefix, \"tracking is set to\", this.#tracking)\n  }\n\n  /**\n   * Resumes the tracking if it is paused by calling .pause() method, have no effect otherwise.\n   */\n  resume() {\n    this.#tracking = true\n    logger.info(logPrefix, \"tracking is set to\", this.#tracking)\n  }\n\n  /**\n   * frees up all the resource used by the Clickstream instance asynchronously.\n   *\n   * clears the timeouts and intervals used.\n   * removes all the event listeners.\n   * flushes all the existing events in the system.\n   * deletes the indexedDB database in use.\n   *\n   * It has no side effect on the working oh the SDK.\n   * calling .track() method again will re-create all the timeouts, interval and database for event tracking.\n   */\n  async free() {\n    try {\n      await this.#scheduler.free()\n      logger.info(logPrefix, \"scheduler resources are released\")\n      if (this.#store.isOpen()) {\n        await this.#store.delete()\n        logger.info(logPrefix, \"store is deleted\")\n      }\n      logger.info(logPrefix, \"cleanup is done\")\n    } catch (error) {\n      return Promise.reject(\n        new ClickstreamError(error.message, {\n          name: errorNames.CLEANUP_ERROR,\n          code: errorCodes.CLEANUP_ERROR,\n        })\n      )\n    }\n  }\n}\n"],"names":["defaultConfig","event","classification","instant","group","batch","maxTimeBetweenTwoBatches","maxBatchSize","dbName","network","url","headers","Headers","maxRetries","timeBetweenTwoRetries","timeToResumeRetries","crypto","EVENT_TYPE","INSTANT","REALTIME","CUSTOM_EVENT","BATCH_CREATED","BATCH_FAILED","TICK_TIME","errorCodes","CLICKSTREAM_ERROR","VALIDATION_ERROR","DATABASE_ERROR","NETWORK_ERROR","TRACKING_ERROR","CLEANUP_ERROR","errorNames","ClickstreamError","Error","constructor","message","options","name","code","ValidationError","DatabaseError","NetworkError","$protobuf","$protobuf1","default","$Reader","Reader","$Writer","Writer","$util","util","$root","roots","EventService","rpcImpl","requestDelimited","responseDelimited","rpc","Service","call","prototype","Object","create","defineProperty","sendEvent","request","callback","rpcCall","SendEventRequest","SendEventResponse","value","properties","events","keys","i","length","reqGuid","sentTime","emptyArray","encode","writer","hasOwnProperty","uint32","string","Timestamp","fork","ldelim","Event","decode","reader","end","undefined","len","pos","tag","push","skipType","verify","isString","error","Array","isArray","getTypeUrl","typeUrlPrefix","seconds","Long","fromBits","nanos","int64","int32","isInteger","low","high","eventBytes","newBuffer","type","bytes","data","status","reason","emptyObject","key","end2","tag2","isObject","Status","valuesById","values","Code","logging","format","prefix","args","info","console","log","debug","warn","logger","Boolean","readAsBuffer","blob","arrayBuffer","Promise","resolve","reject","FileReader","onloadend","readyState","result","onerror","err","readAsArrayBuffer","logPrefix","getTimestamp","date","Date","Math","floor","getTime","_config","_store","_eventBus","_id","Transport","config","eventBus","store","id","send","retry","uuidv4","realTimeBatch","filter","eventType","isOpen","update","encodedBatch","map","payload","body","finish","window","clearTimeout","setTimeout","emit","append","response","fetch","method","ok","buffer","uInt","Uint8Array","res","JSON","stringify","readByReqGuid","remove","cause","_isRealTimeEventsSupported","Processor","isRealTimeEventsSupported","process","proto","eventName","includes","PayloadConstructor","encodedEvent","decodedEvent","typeUrlSplit","split","typeUrl","toLowerCase","eventGuid","_listeners","Scheduler","isRunning","start","stop","pause","resume","free","read","some","clearInterval","_listeners2","on","e","detail","reduce","prev","curr","Blob","size","unitSize","batchSize","remSize","splice","ceil","eventsBySize","realTimeEvents","setInterval","EventBus","eventTarget","EventTarget","CustomEvent","dispatchEvent","addEventListener","removeEventListener","STORE","Store","version","open","indexedDB","onblocked","target","onsuccess","onupgradeneeded","oldVersion","objectStore","createObjectStore","keyPath","createIndex","unique","onversionchange","close","transaction","getAll","index","openCursor","cursor","continue","write","oncomplete","forEach","add","val","put","delete","deleteDatabase","Id","cryptoObj","replace","c","getRandomValues","toString","isPositiveInteger","Number","isDefined","Validator","validate","URL","get","isNonString","runtime","BROWSER","NODE","UNKNOWN","getRuntime","globalThis","logMetaData","rt","vendor","userAgent","platform","navigator","document","location","href","Clickstream","assign","track"],"mappings":"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"}