{"_id":"@alexcambose/recjs","_rev":"4-4f0be97cb80e59be19289eae32a02fa5","name":"@alexcambose/recjs","description":"Lightweight user session recorder based on JSON","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.0":{"name":"@alexcambose/recjs","version":"1.0.0","description":"Lightweight user session recorder based on JSON","main":"src/index.js","scripts":{"test":"mocha"},"repository":{"type":"git","url":"git+https://github.com/alexcambose/recjs.git"},"keywords":["user","recording","dom","JSON","spy","screen","session","movie"],"author":{"name":"Alexandru Cambose"},"license":"MIT","devDependencies":{"babel-core":"^6.26.0","babel-loader":"^7.1.2","babel-preset-es2015":"^6.24.1","chai":"^4.1.2","eslint":"^4.15.0","eslint-config-standard":"^11.0.0-beta.0","eslint-plugin-import":"^2.8.0","eslint-plugin-node":"^5.2.1","eslint-plugin-promise":"^3.6.0","eslint-plugin-standard":"^3.0.1","jsdom":"^11.5.1","mocha":"^4.1.0","mocha-jsdom":"^1.1.0","uglifyjs-webpack-plugin":"^1.1.6","webpack":"^3.10.0","webpack-dev-server":"^2.10.0"},"gitHead":"7ca75c012c91f96c78e6ecd950313fa5da110b91","bugs":{"url":"https://github.com/alexcambose/recjs/issues"},"homepage":"https://github.com/alexcambose/recjs#readme","_id":"@alexcambose/recjs@1.0.0","_npmVersion":"5.5.1","_nodeVersion":"9.3.0","_npmUser":{"name":"alexcambose","email":"alexcambose@yahoo.com"},"dist":{"integrity":"sha512-qcMFlohX0b7FFGS3/pH+vOk0rcEhh/30Dix6HgYyuHpR/tH70+hlGClXsDydYT+SENJx2KWSe247FTtdoy2pzQ==","shasum":"139518f99a465eacb17f1b072803330805ddd279","tarball":"https://registry.npmjs.org/@alexcambose/recjs/-/recjs-1.0.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEj4IaVgpVNOA9mMjRl7ac7gliw4l42nmUjL+w0vFJLVAiAlamMVTIMmDnDNFCqBKDt7QdutLfb59mjhu+iCa4mTYw=="}]},"maintainers":[{"name":"alexcambose","email":"alexcambose@yahoo.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/recjs-1.0.0.tgz_1515680371353_0.7361158153507859"}},"1.0.1":{"name":"@alexcambose/recjs","version":"1.0.1","description":"Lightweight user session recorder based on JSON","main":"src/index.js","scripts":{"test":"mocha"},"repository":{"type":"git","url":"git+https://github.com/alexcambose/recjs.git"},"keywords":["user","recording","dom","JSON","spy","screen","session","movie"],"author":{"name":"Alexandru Cambose"},"license":"MIT","devDependencies":{"babel-core":"^6.26.0","babel-loader":"^7.1.2","babel-preset-es2015":"^6.24.1","chai":"^4.1.2","eslint":"^4.15.0","eslint-config-standard":"^11.0.0-beta.0","eslint-plugin-import":"^2.8.0","eslint-plugin-node":"^5.2.1","eslint-plugin-promise":"^3.6.0","eslint-plugin-standard":"^3.0.1","jsdom":"^11.5.1","mocha":"^4.1.0","mocha-jsdom":"^1.1.0","uglifyjs-webpack-plugin":"^1.1.6","webpack":"^3.10.0","webpack-dev-server":"^2.10.0"},"gitHead":"56619f40dd785061841eadf26529db95f47f0656","bugs":{"url":"https://github.com/alexcambose/recjs/issues"},"homepage":"https://github.com/alexcambose/recjs#readme","_id":"@alexcambose/recjs@1.0.1","_npmVersion":"5.5.1","_nodeVersion":"9.3.0","_npmUser":{"name":"alexcambose","email":"alexcambose@yahoo.com"},"dist":{"integrity":"sha512-sudUYzZLdOUsO1p2flWqAG1ADxSnmAeRxvPbIAVIYtwtxcy8py2FXhJjcA/bNNwSEhKZNGooB6reEhbeCSmJBg==","shasum":"cc82532e49d06aec5573bb4040d6ecc1015ef1f2","tarball":"https://registry.npmjs.org/@alexcambose/recjs/-/recjs-1.0.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEGG9O94zsSf5zaJwC5CUoGIF4izJeZjMFpL10BNwLqwAiAa4Z4PKlrxXhYAhnWMLzv1N/sk4g8oG/ypoIds86p1zg=="}]},"maintainers":[{"name":"alexcambose","email":"alexcambose@yahoo.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/recjs-1.0.1.tgz_1515766520709_0.14132097200490534"}},"1.0.2":{"name":"@alexcambose/recjs","version":"1.0.2","description":"Lightweight user session recorder based on JSON","main":"src/index.js","scripts":{"test":"mocha"},"repository":{"type":"git","url":"git+https://github.com/alexcambose/recjs.git"},"keywords":["user","recording","dom","JSON","spy","screen","session","movie"],"author":{"name":"Alexandru Cambose"},"license":"MIT","devDependencies":{"babel-core":"^6.26.0","babel-loader":"^7.1.2","babel-preset-es2015":"^6.24.1","chai":"^4.1.2","eslint":"^4.15.0","eslint-config-standard":"^11.0.0-beta.0","eslint-plugin-import":"^2.8.0","eslint-plugin-node":"^5.2.1","eslint-plugin-promise":"^3.6.0","eslint-plugin-standard":"^3.0.1","jsdom":"^11.5.1","mocha":"^4.1.0","mocha-jsdom":"^1.1.0","uglifyjs-webpack-plugin":"^1.1.6","webpack":"^3.10.0","webpack-dev-server":"^2.10.0"},"gitHead":"fa2645a6664855d3f66b6acbe923353b7c1f4e1f","bugs":{"url":"https://github.com/alexcambose/recjs/issues"},"homepage":"https://github.com/alexcambose/recjs#readme","_id":"@alexcambose/recjs@1.0.2","_npmVersion":"5.5.1","_nodeVersion":"9.3.0","_npmUser":{"name":"alexcambose","email":"alexcambose@yahoo.com"},"dist":{"integrity":"sha512-ruNA2hEJu62d8gWTXk07b07cjSOCCrdbEeBwnaHYbOyMfGHzEQ1Jw+UIlNVwBxcK7TJt8PEdSXoI4rolvPPmWQ==","shasum":"f04411053a630cbcab55b9fddb26312bbdff36d1","tarball":"https://registry.npmjs.org/@alexcambose/recjs/-/recjs-1.0.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDiwcCqsTbyMQ2BQYnzb+3TagqVyUMEZNbagJwO/IjwggIgWXWiVFDtJE0XLk/bNq246bhN7geZgG3vXZLSgZSsNYE="}]},"maintainers":[{"name":"alexcambose","email":"alexcambose@yahoo.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/recjs-1.0.2.tgz_1515766629815_0.8917858588974923"}},"1.0.3":{"name":"@alexcambose/recjs","version":"1.0.3","description":"Lightweight user session recorder based on JSON","main":"src/index.js","scripts":{"test":"mocha","lint":"eslint"},"repository":{"type":"git","url":"git+https://github.com/alexcambose/recjs.git"},"keywords":["user","recording","dom","JSON","spy","screen","session","movie"],"author":{"name":"Alexandru Cambose"},"license":"MIT","devDependencies":{"babel-core":"^6.26.0","babel-loader":"^7.1.2","babel-preset-es2015":"^6.24.1","chai":"^4.1.2","eslint":"^4.15.0","eslint-config-standard":"^11.0.0-beta.0","jsdom":"^11.5.1","mocha":"^4.1.0","mocha-jsdom":"^1.1.0","uglifyjs-webpack-plugin":"^1.1.6","webpack":"^3.10.0","webpack-dev-server":"^2.10.0"},"gitHead":"4c16485238a14600d1834c909633c244f7a61e34","bugs":{"url":"https://github.com/alexcambose/recjs/issues"},"homepage":"https://github.com/alexcambose/recjs#readme","_id":"@alexcambose/recjs@1.0.3","_npmVersion":"5.5.1","_nodeVersion":"8.9.2","_npmUser":{"name":"alexcambose","email":"alexcambose@yahoo.com"},"dist":{"integrity":"sha512-OSCmcWqliP2ogXwaLrYJa5v7FeTu8niLaQe9e0G4C8w0aPtDFQglqMQc0tnTjFtCAHCXKzcgOAfQTUEmuRnRyA==","shasum":"858269ea2778a3dbd591a948ca02af414ba2989d","tarball":"https://registry.npmjs.org/@alexcambose/recjs/-/recjs-1.0.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHMfy38GaPBRiYPXKbXjf5SR+O9V/9GCJsTr2lqhN+x9AiAa9txCDURYHyym2THPpxEl4PxbIDqNDdzHNhOPqwqm0w=="}]},"maintainers":[{"name":"alexcambose","email":"alexcambose@yahoo.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/recjs-1.0.3.tgz_1516679691270_0.9343509285245091"}}},"readme":"# recjs\n\n[![JavaScript Style Guide](https://cdn.rawgit.com/standard/standard/master/badge.svg)](https://github.com/standard/standard)\n[![Build Status](https://travis-ci.org/alexcambose/recjs.svg?branch=master)](https://travis-ci.org/alexcambose/recjs)\n\nLightweight user session recorder based on JSON\n\n## Installation\nIn browser:\n\n```html\n<script src=\"dist/dist.js\"></script>\n```\n\nIn Node.js\n\n```bash\nnpm install --save @alexcambose/recjs\n```\n\n```javascript\nimport Recjs from 'recjs';\n```\n\n## Usage\n\n```html\n...\n<body>\n    <div id=\"someElement\"></div>\n</body>\n...\n```\n\n### Example 1\n\n```javascript\nconst recjs = new Recjs({\n    el: '#someElement',\n});\nrecjs.recorder.record(); // starts recording\n\nsetTimeout(() => {\n    recjs.recorder.stop(); // stops recording after 3 seconds\n    console.log(recjs.recorder.getData()) // gets recording data\n}, 3000);\n```\n\n### Example 2\n\n```javascript\nconst recjs = new Recjs({\n    el: '#someElement',\n});\nrecjs.recorder.record(); // starts recording\n\nsetTimeout(() => {\n    recjs.recorder.stop(); // stops recording after 3 seconds\n    recjs.player.play(recjs.recorder.getData(), () => console.log('Finished')); // plays current recording and logs when finishes\n}, 3000);\n```\n\n## API Reference\n\n## Classes\n\n<dl>\n<dt><a href=\"#Recjs\">Recjs</a></dt>\n<dd></dd>\n<dt><a href=\"#Recorder\">Recorder</a></dt>\n<dd><p>Recorder class</p>\n</dd>\n<dt><a href=\"#Player\">Player</a></dt>\n<dd><p>Player class</p>\n</dd>\n</dl>\n\n<a name=\"Recjs\"></a>\n\n## Recjs\n**Kind**: global class\n<a name=\"new_Recjs_new\"></a>\n\n### new Recjs($0)\n\n| Param | Type | Default | Description |\n| --- | --- | --- | --- |\n| $0 | <code>Object</code> |  |  |\n| $0.el | <code>string</code> |  | Target element that is going to be recorded |\n| [$0.events] | <code>array</code> | <code>[&#x27;scroll&#x27;, &#x27;mousemove&#x27;, &#x27;keypress&#x27;, &#x27;click&#x27;, &#x27;contextmenu&#x27;]</code> | User events that will be recorded |\n| [$0.fps] | <code>integer</code> | <code>30</code> | Number of frames per second |\n| [$0.document] | <code>object</code> | <code>window.document</code> | Document object to be used. (in case of an iframe) |\n\n**Example**\n```js\nconst recjs = new Recjs({\n    el: '#someElement',\n    events: ['scroll'],\n    fps: 60\n});\n```\n<a name=\"Recorder\"></a>\n\n## Recorder\nRecorder class\n\n**Kind**: global class\n\n* [Recorder](#Recorder)\n    * [.record()](#Recorder+record)\n    * [.isRecording()](#Recorder+isRecording) ⇒ <code>boolean</code>\n    * [.stop()](#Recorder+stop)\n    * [.pause()](#Recorder+pause)\n    * [.getData(stringify)](#Recorder+getData) ⇒ <code>object</code> \\| <code>string</code>\n\n<a name=\"Recorder+record\"></a>\n\n### recorder.record()\nStarts recording\n\n**Kind**: instance method of [<code>Recorder</code>](#Recorder)\n**Example**\n```js\nrecjs.recorder.record()\n```\n<a name=\"Recorder+isRecording\"></a>\n\n### recorder.isRecording() ⇒ <code>boolean</code>\nCheck if it is recording\n\n**Kind**: instance method of [<code>Recorder</code>](#Recorder)\n**Returns**: <code>boolean</code> - True if it's recording\n**Example**\n```js\nrecjs.recorder.isRecording()\n```\n<a name=\"Recorder+stop\"></a>\n\n### recorder.stop()\nStops recording\n\n**Kind**: instance method of [<code>Recorder</code>](#Recorder)\n**Example**\n```js\nrecjs.recorder.stop()\n```\n<a name=\"Recorder+pause\"></a>\n\n### recorder.pause()\nPauses current recording\n\n**Kind**: instance method of [<code>Recorder</code>](#Recorder)\n**Example**\n```js\nrecjs.recorder.pause()\n```\n<a name=\"Recorder+getData\"></a>\n\n### recorder.getData(stringify) ⇒ <code>object</code> \\| <code>string</code>\nReturns recorded data\n\n**Kind**: instance method of [<code>Recorder</code>](#Recorder)\n\n| Param | Type | Default |\n| --- | --- | --- |\n| stringify | <code>boolean</code> | <code>false</code> |\n\n**Example**\n```js\nrecjs.recorder.getData(true)\n```\n<a name=\"Player\"></a>\n\n## Player\nPlayer class\n\n**Kind**: global class\n\n* [Player](#Player)\n    * [.play(data, onEnd)](#Player+play)\n    * [.pause()](#Player+pause)\n    * [.stop()](#Player+stop)\n    * [.setFrameIndex(index)](#Player+setFrameIndex)\n    * [.currentFrame()](#Player+currentFrame) ⇒ <code>object</code>\n    * [.currentFrameIndex()](#Player+currentFrameIndex) ⇒ <code>number</code>\n    * [.isPlaying()](#Player+isPlaying) ⇒ <code>boolean</code>\n\n<a name=\"Player+play\"></a>\n\n### player.play(data, onEnd)\nStarts playing a recording\n\n**Kind**: instance method of [<code>Player</code>](#Player)\n\n| Param | Type | Description |\n| --- | --- | --- |\n| data | <code>object</code> | Recorded data |\n| onEnd | <code>function</code> | Calls when playing finishes |\n\n**Example**\n```js\nrecjs.player.play(recjs.recorder.getData(), () => {\n    console.log('Finished playing')\n})\n```\n<a name=\"Player+pause\"></a>\n\n### player.pause()\nPauses playing\n\n**Kind**: instance method of [<code>Player</code>](#Player)\n**Example**\n```js\nrecjs.player.pause()\n```\n<a name=\"Player+stop\"></a>\n\n### player.stop()\nStops playing\n\n**Kind**: instance method of [<code>Player</code>](#Player)\n**Example**\n```js\nrecjs.player.stop()\n```\n<a name=\"Player+setFrameIndex\"></a>\n\n### player.setFrameIndex(index)\nSet current frame\n\n**Kind**: instance method of [<code>Player</code>](#Player)\n\n| Param | Type | Description |\n| --- | --- | --- |\n| index | <code>number</code> | Frame index |\n\n**Example**\n```js\nrecjs.player.setFrameIndex(87)\n```\n<a name=\"Player+currentFrame\"></a>\n\n### player.currentFrame() ⇒ <code>object</code>\nGet current frame\n\n**Kind**: instance method of [<code>Player</code>](#Player)\n**Returns**: <code>object</code> - Frame object\n**Example**\n```js\nrecjs.player.currentFrame()\n```\n<a name=\"Player+currentFrameIndex\"></a>\n\n### player.currentFrameIndex() ⇒ <code>number</code>\nGet current frame index\n\n**Kind**: instance method of [<code>Player</code>](#Player)\n**Returns**: <code>number</code> - Frame index\n**Example**\n```js\nrecjs.player.currentFrameIndex()\n```\n<a name=\"Player+isPlaying\"></a>\n\n### player.isPlaying() ⇒ <code>boolean</code>\nIs playing\n\n**Kind**: instance method of [<code>Player</code>](#Player)\n**Returns**: <code>boolean</code> - Returns true if it is playing\n**Example**\n```\nrecjs.player.isPlaying()\n```\n","maintainers":[{"name":"alexcambose","email":"alexcambose@yahoo.com"}],"time":{"modified":"2022-04-04T12:39:30.648Z","created":"2018-01-11T14:19:32.276Z","1.0.0":"2018-01-11T14:19:32.276Z","1.0.1":"2018-01-12T14:15:21.630Z","1.0.2":"2018-01-12T14:17:10.740Z","1.0.3":"2018-01-23T03:54:52.312Z"},"homepage":"https://github.com/alexcambose/recjs#readme","keywords":["user","recording","dom","JSON","spy","screen","session","movie"],"repository":{"type":"git","url":"git+https://github.com/alexcambose/recjs.git"},"author":{"name":"Alexandru Cambose"},"bugs":{"url":"https://github.com/alexcambose/recjs/issues"},"license":"MIT","readmeFilename":"README.md"}