{"_id":"@absinthe-noarrows/socket","_rev":"3-4dcbdba84b005b11943796eb405da89b","name":"@absinthe-noarrows/socket","dist-tags":{"latest":"0.2.3"},"versions":{"0.2.1":{"name":"@absinthe-noarrows/socket","version":"0.2.1","description":"Absinthe Socket","module":"dist/index.js","main":"compat/cjs/index.js","react-native":"src/index","scripts":{"version":"nps version","prepack":"nps prepack"},"repository":{"type":"git","url":"git+https://github.com/absinthe-graphql/absinthe-socket.git"},"author":{"name":"Mauro Titimoli","email":"mgtitimoli@gmail.com","url":"https://github.com/mgtitimoli"},"license":"MIT","bugs":{"url":"https://github.com/absinthe-graphql/absinthe-socket/issues"},"homepage":"https://github.com/absinthe-graphql/absinthe-socket#readme","keywords":["absinthe","phoenix","socket","client","graphql","utilities","utils"],"dependencies":{"@babel/runtime":"7.2.0","@jumpn/utils-array":"0.3.4","@jumpn/utils-composite":"0.7.0","@jumpn/utils-graphql":"0.6.0","core-js":"2.6.0","zen-observable":"0.8.11"},"devDependencies":{"nps":"5.9.3"},"peerDependencies":{"phoenix":"^1.4.0"},"_id":"@absinthe-noarrows/socket@0.2.1","_nodeVersion":"16.4.2","_npmVersion":"7.18.1","dist":{"integrity":"sha512-UdBKLBg7uf0bfDq82k1EnF+vEUxU+ZN3xFiOhfEt6owP/qyWFPe9mr2IsRs8eeFxBnHH5YBDtSkp6wiiLHnQzQ==","shasum":"ac8f3c0576ae90d38e36c0cad88416808f048de9","tarball":"https://registry.npmjs.org/@absinthe-noarrows/socket/-/socket-0.2.1.tgz","fileCount":215,"unpackedSize":1732573,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh3b2HCRA9TVsSAnZWagAAa1AP/RWvxStUXVJzmjc1zHJY\ns45y3oAnb0J1fZ5UOB8Q684/icGzgKfU60ZfGEP2et+5kGJ9mcczIQx2uRC6\nO6VggBh01d9ZuNs908VsN7pixgciG3+ziWVek8Pb9OkXYAq40I2Avo9lRkWL\n3UsSHK4WfEOl8s2g22Es8rPP0u64TMO+JFrkFwbA2qLZckaLL0j8RAmLrbgJ\nlfDu9YVgLBON2vVnOiJo3j9VzPRWjBEAxmmmzp8Gfd13UduDSnRLoC37gcAh\nRb3Kkd9usaAZ8wKXbtZpEpeQgvveoGfnl/EzLvCAbLkwJXxISJzZwy3TDcHM\npKdO44xQfIy6Z6vyZt35Hnd99LP1zFPeRYnuF5vo+hxr5FqjBN73X7EXoqDT\ng+eWA6uGFAwYWq45iZGiR1sc4zzZLfywyAwPiKNHOqPu5wnOjVSPDXrhnTJq\n4WE6TSewDwzL4HBUgoGkJSVvlc0xL794Rr8Bd6PeXkfBPKH0jIiez+q+NV7a\nNrTexmrFQ/35PIGByJlyQfIfyn6zdIVoxnba+fRJDx0GBNn5RRdFzI4+LiRM\ny3XShq3ddn4gWJtWrY0bAgZf8cyn7lIT8O72Rxta3j0l+6p/TkeKkm0GBWrt\nLIdVgOh5Slt17KciXk1sdYcsPWYg/i4wqcetpeg1ccDpR8PYQF6ohiJa2bbM\n2/R1\r\n=zf8L\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCdDE3pbrJwoBTMe3JoqKnwQDSJItt7GfkGBK7ncPONFQIhAOPm2xoEU9pe2fA/hX7msKk66dX7CXjX59E8DZuj/M53"}]},"_npmUser":{"name":"neurodynamicdev","email":"9263.8047.4045@hey.com"},"directories":{},"maintainers":[{"name":"neurodynamicdev","email":"9263.8047.4045@hey.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/socket_0.2.1_1641921927526_0.9186400514831958"},"_hasShrinkwrap":false},"0.2.2":{"name":"@absinthe-noarrows/socket","version":"0.2.2","description":"Absinthe Socket","module":"dist/index.js","main":"compat/cjs/index.js","react-native":"src/index","scripts":{"version":"nps version","prepack":"nps prepack"},"repository":{"type":"git","url":"git+https://github.com/absinthe-graphql/absinthe-socket.git"},"author":{"name":"Mauro Titimoli","email":"mgtitimoli@gmail.com","url":"https://github.com/mgtitimoli"},"license":"MIT","bugs":{"url":"https://github.com/absinthe-graphql/absinthe-socket/issues"},"homepage":"https://github.com/absinthe-graphql/absinthe-socket#readme","keywords":["absinthe","phoenix","socket","client","graphql","utilities","utils"],"dependencies":{"@babel/runtime":"7.2.0","@jumpn/utils-array":"0.3.4","@jumpn/utils-composite":"0.7.0","@jumpn/utils-graphql":"0.6.0","core-js":"2.6.0","zen-observable":"0.8.11"},"devDependencies":{"nps":"5.9.3"},"peerDependencies":{"phoenix":"^1.4.0"},"_id":"@absinthe-noarrows/socket@0.2.2","_nodeVersion":"16.4.2","_npmVersion":"7.18.1","dist":{"integrity":"sha512-/b5kMiE7qI2hggZZq5/J+3UZ59VVZ9r91lW4Gi94f+fJkQM2qVRE9emNm3yY00vt3Ynhbpcw4TZGiNy48Uz2JA==","shasum":"ec2f26125d31f365757c322c37fa67bc32219e51","tarball":"https://registry.npmjs.org/@absinthe-noarrows/socket/-/socket-0.2.2.tgz","fileCount":215,"unpackedSize":1695116,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh3cHoCRA9TVsSAnZWagAA2FMQAJzTLGzYgEpo/Kg4pp26\nrmDeWJXqGzE2i2CDtOUUF8k8kzoquhS76pTHvT6yJnNosrY3g0mwytSZQKMc\nWz8N9WwfjRCFCtNLG1vGbErPdqbo66Apkf00eI3TtoHd0kZustFTRqxg0TOU\nO///Mw+HdY3Vq/E+jShgYOkAZ7fKWq2RxYFrOdg9kOwUv3399bZMshyJMdQf\nfHOgltKbpY1GtGEuCBgBGg8MOcqvHjW3BJUbYom92EyqsNFTVNYx42CezXKf\nQJYSH2AokU7Hip6RVC+1xzMONrErQ4YQCPDpCCCVJM+8cblxxsZl9EC5rhza\n8G0/pl5sAEiUo0z7kUSNxtJPMEe6fNij618NX/i7X7ieQsQpwoCVfMMhZN3m\nNIfTwVJwgIemjDjwiuLHBElmwMs6xUvhdqs5Q2DAXGsSTk3ols0H82Altn2c\norhgIA0OEpu33nT6lRYupXCz2T21/buuFTUNt2L3oX8Yc5nVFxlqbQ0hK3A8\n9OtEXAdAuhorxSYbY3lIxRfFO5ZaubErSwGAXxKM2ItJaYBxzVdHfgJ6mvO+\nWb7BFxZGSZDnQJ++2A9d+5uVIVh+Onz0rUO6LSnGv7WA8ri8nkbNBYYfVOVg\nG8z+PSxLmybTU6fM2umdzMaVqIyELoiJrN2wYke++9buuISH1aeZUqWuSoPu\njKMC\r\n=YhU5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGdsLHLVRPzlHPtu/r8Q3yVzc+Mm1maSK+NnC9dvC6UGAiEA3JMITY5n6zkyNyZY0rhslwrn+kIcDL/UsUsvcYaT/mM="}]},"_npmUser":{"name":"neurodynamicdev","email":"9263.8047.4045@hey.com"},"directories":{},"maintainers":[{"name":"neurodynamicdev","email":"9263.8047.4045@hey.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/socket_0.2.2_1641923048493_0.5700831527618613"},"_hasShrinkwrap":false},"0.2.3":{"name":"@absinthe-noarrows/socket","version":"0.2.3","description":"Absinthe Socket","module":"dist/index.js","main":"compat/cjs/index.js","react-native":"src/index","scripts":{"version":"nps version","prepack":"nps prepack"},"repository":{"type":"git","url":"git+https://github.com/absinthe-graphql/absinthe-socket.git"},"author":{"name":"Mauro Titimoli","email":"mgtitimoli@gmail.com","url":"https://github.com/mgtitimoli"},"license":"MIT","bugs":{"url":"https://github.com/absinthe-graphql/absinthe-socket/issues"},"homepage":"https://github.com/absinthe-graphql/absinthe-socket#readme","keywords":["absinthe","phoenix","socket","client","graphql","utilities","utils"],"dependencies":{"@babel/runtime":"7.2.0","@jumpn/utils-array":"0.3.4","@jumpn/utils-composite":"0.7.0","@jumpn/utils-graphql":"0.6.0","core-js":"2.6.0","zen-observable":"0.8.11"},"devDependencies":{"nps":"5.9.3"},"peerDependencies":{"phoenix":"^1.4.0"},"_id":"@absinthe-noarrows/socket@0.2.3","_nodeVersion":"16.4.2","_npmVersion":"7.18.1","dist":{"integrity":"sha512-GeIaiOhsoc9Re+zJaa39Q8gMZkAkj4/ihaFKuCg0hT3EzxpM1lonujQlpGJ0WB7r794GVRaVNsLAXQPHwM/vaA==","shasum":"1b4e5642be39d78839a1d5ebfa69b14322ea4f6f","tarball":"https://registry.npmjs.org/@absinthe-noarrows/socket/-/socket-0.2.3.tgz","fileCount":215,"unpackedSize":1691401,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh3cNkCRA9TVsSAnZWagAAfk8P+wXf2rqJcsGjvhbuqP2i\nZIkU/wpCiRO22ccwZ9OnoACWoe2gfMXv5qAAitJ/TtijgAhGLUHpGtWQBnEz\ny/k6NcEF75ns/Hg8o9hb5RzoGMb3e9AR/83fyGaQmEVuOboy5cCsQJOFWPh/\nuDOyafKs2ozPaEirUwirY/Y6GVWX2CaWHfe8jiS/wProq8rqMhK3X5f7++iM\n1JHVWAu+DlBzRh/Kj28FTpckFl1xNxjZFTPEa9Aody0VPABIOACzBg78L37h\nkiDBmapX/QMJhqSgL1dSUiS5Z+KmrSBZo6xn3AwxGY/iZTq+WuBoSvZdynrE\nitSe95POm+yopEDmub8kuJ/GF8IrNBSJwK65r4EZOKQ7YPL6NBdFg4H7he4U\nL0JOWXwYSNX4D0acxmcgpD6WRblPCO5J14QaG011h65lKXnQWwzAYgtxn5ls\nqfsc84mxMcpkfc8gCIuCd1NL1JqNCeFAxieYPb0XGBW/mXowOtCAIlMh4gSD\ncfWQSOyvCepxR/86WEOadLA6qRxzjKW/GHedJm+zP5jQg7+qcUUqJ/SZtXNx\nYRBANCK6zfWY3nkqPeFovqw0sSngfCEhFyENR1UPW3GdTW9Q4mEZ/T3Vzc7v\nK276G0vTe/N4h+xIH7AXPeC48vpj46v+ujQPNMGLVge5mBMLnRJl/KqftwYc\nc5Wu\r\n=16C+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDAco8BETDNEFfonLm/995ThPzczl+cbrbMYTj6M238+wIhAMlit2oe7ajaGO9CJrMWgLj+XejT7CO4VSeWaPdNjCoC"}]},"_npmUser":{"name":"neurodynamicdev","email":"9263.8047.4045@hey.com"},"directories":{},"maintainers":[{"name":"neurodynamicdev","email":"9263.8047.4045@hey.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/socket_0.2.3_1641923427752_0.006936673178221886"},"_hasShrinkwrap":false}},"time":{"created":"2022-01-11T17:25:27.479Z","0.2.1":"2022-01-11T17:25:27.926Z","modified":"2022-04-04T11:01:58.709Z","0.2.2":"2022-01-11T17:44:08.905Z","0.2.3":"2022-01-11T17:50:28.098Z"},"maintainers":[{"name":"neurodynamicdev","email":"9263.8047.4045@hey.com"}],"description":"Absinthe Socket","homepage":"https://github.com/absinthe-graphql/absinthe-socket#readme","keywords":["absinthe","phoenix","socket","client","graphql","utilities","utils"],"repository":{"type":"git","url":"git+https://github.com/absinthe-graphql/absinthe-socket.git"},"author":{"name":"Mauro Titimoli","email":"mgtitimoli@gmail.com","url":"https://github.com/mgtitimoli"},"bugs":{"url":"https://github.com/absinthe-graphql/absinthe-socket/issues"},"license":"MIT","readme":"# @absinthe/socket\n\n> Absinthe Socket\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n<!-- END doctoc -->\n\n- [Features](#features)\n- [Installation](#installation)\n  - [Using npm](#using-npm)\n  - [Using yarn](#using-yarn)\n- [Types](#types)\n- [API](#api)\n  - [cancel](#cancel)\n    - [Parameters](#parameters)\n    - [Examples](#examples)\n  - [create](#create)\n    - [Parameters](#parameters-1)\n    - [Examples](#examples-1)\n  - [observe](#observe)\n    - [Parameters](#parameters-2)\n    - [Examples](#examples-2)\n  - [send](#send)\n    - [Parameters](#parameters-3)\n    - [Examples](#examples-3)\n  - [toObservable](#toobservable)\n    - [Parameters](#parameters-4)\n    - [Examples](#examples-4)\n  - [unobserve](#unobserve)\n    - [Parameters](#parameters-5)\n    - [Examples](#examples-5)\n  - [unobserveOrCancel](#unobserveorcancel)\n    - [Parameters](#parameters-6)\n    - [Examples](#examples-6)\n- [License](#license)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n## Features\n\n-   Immutable functional API\n    > All received and returned objects with the exception of AbsintheSocket\n    >   instances (there are plans to make this immutable too) are treated in an\n    >   immutable way. Objects have no methods and instead we provide independant\n    >   stateless functions to interact with them.\n-   Lazy connect / join\n    > If provided phoenix socket instance is not connected, then instead of\n    >   connecting at creation time, connection will be established on the next\n    >   invocation of [send](#send).\n-   Handle pending operations on connection lost\n    > Pending mutations will be aborted, queries will be resent, and subscriptions\n    >   reestablished.\n-   Cancellable requests\n    > Calling [cancel](#cancel) removes given notifier from absintheSocket instance\n    >   and sends a Cancel event to all its observers and unsubscribes in case it\n    >   holds a subscription request.\n-   Operations deduplication\n    > If an already sent request is given to [send](#send), then instead of sending\n    >   it again, the notifier associated with it will be returned.\n-   Observer support of recoverable errors\n    > Since connection lost is handled, then two events needs to exist to represent\n    >   this fact: Error (recoverable), Abort (unrecoverable).\n-   Multiple observers per request\n    > Calling [send](#send) returns a notifier which allows attaching any number of\n    >   observers that will be notified when result arrives.\n-   Observer interaction depending on operation type\n    > For the case of subscriptions, _Start_ event is dispatched when the\n    >   subscription is established, while for the other types\n    >   (queries and mutations), when the request is sent.\n\n## Installation\n\n### Using [npm](https://docs.npmjs.com/cli/npm)\n\n    $ npm install --save phoenix @absinthe/socket\n\n### Using [yarn](https://yarnpkg.com)\n\n    $ yarn add phoenix @absinthe/socket\n\n## Types\n\n```flowtype\ntype RequestStatus = \"canceled\" | \"canceling\" | \"pending\" | \"sent\" | \"sending\";\n\n// from @jumpn/utils-graphql\ntype GqlRequest<Variables: void | Object = void> = {\n  operation: string,\n  variables?: Variables\n};\n\n// from @jumpn/utils-graphql\ntype GqlResponse<Data> = {\n  data?: Data,\n  errors?: Array<GqlError>\n};\n\n// from @jumpn/utils-graphql\ntype GqlOperationType = \"mutation\" | \"query\" | \"subscription\";\n\ntype Observer<Result, Variables: void | Object = void> = {|\n  onAbort?: (error: Error) => any,\n  onCancel?: () => any,\n  onError?: (error: Error) => any,\n  onStart?: (notifier: Notifier<Result, Variables>) => any,\n  onResult?: (result: Result) => any\n|};\n\ntype Notifier<Result, Variables: void | Object = void> = {|\n  activeObservers: $ReadOnlyArray<Observer<Result, Variables>>,\n  canceledObservers: $ReadOnlyArray<Observer<Result, Variables>>,\n  isActive: boolean,\n  operationType: GqlOperationType,\n  request: GqlRequest<Variables>,\n  requestStatus: RequestStatus,\n  subscriptionId?: string\n|};\n\ntype AbsintheSocket = {|\n  channel: Channel,\n  channelJoinCreated: boolean,\n  notifiers: Array<Notifier<any>>,\n  phoenixSocket: PhoenixSocket\n|};\n```\n\n## API\n\n<!-- Generated by documentation.js. Update this documentation by updating the source code. -->\n\n### cancel\n\nCancels a notifier sending a Cancel event to all its observers and\nunsubscribing in case it holds a subscription request\n\n#### Parameters\n\n-   `absintheSocket` **AbsintheSocket** \n-   `notifier` **Notifier&lt;any, any>** \n\n#### Examples\n\n```javascript\nimport * as withAbsintheSocket from \"@absinthe/socket\";\n\nwithAbsintheSocket.cancel(absintheSocket, notifier);\n```\n\nReturns **AbsintheSocket** \n\n### create\n\nCreates an Absinthe Socket using the given Phoenix Socket instance\n\n#### Parameters\n\n-   `phoenixSocket` **PhoenixSocket** \n\n#### Examples\n\n```javascript\nimport * as withAbsintheSocket from \"@absinthe/socket\";\nimport {Socket as PhoenixSocket} from \"phoenix\";\n\nconst absintheSocket = withAbsintheSocket.create(\n  new PhoenixSocket(\"ws://localhost:4000/socket\")\n);\n```\n\nReturns **AbsintheSocket** \n\n### observe\n\nObserves given notifier using the provided observer\n\n#### Parameters\n\n-   `absintheSocket` **AbsintheSocket** \n-   `notifier` **Notifier&lt;Result, Variables>** \n-   `observer` **Observer&lt;Result, Variables>** \n\n#### Examples\n\n```javascript\nimport * as withAbsintheSocket from \"@absinthe/socket\"\n\nconst logEvent = eventName => (...args) => console.log(eventName, ...args);\n\nconst updatedNotifier = withAbsintheSocket.observe(absintheSocket, notifier, {\n  onAbort: logEvent(\"abort\"),\n  onError: logEvent(\"error\"),\n  onStart: logEvent(\"open\"),\n  onResult: logEvent(\"result\")\n});\n```\n\n### send\n\nSends given request and returns an object (notifier) to track its progress\n(see observe function)\n\n#### Parameters\n\n-   `absintheSocket` **AbsintheSocket** \n-   `request` **GqlRequest&lt;Variables>** \n\n#### Examples\n\n```javascript\nimport * as withAbsintheSocket from \"@absinthe/socket\";\n\nconst operation = `\n  subscription userSubscription($userId: ID!) {\n    user(userId: $userId) {\n      id\n      name\n    }\n  }\n`;\n\n// This example uses a subscription, but the functionallity is the same for\n// all operation types (queries, mutations and subscriptions)\n\nconst notifier = withAbsintheSocket.send(absintheSocket, {\n  operation,\n  variables: {userId: 10}\n});\n```\n\nReturns **Notifier&lt;Result, Variables>** \n\n### toObservable\n\nCreates an Observable that will follow the given notifier\n\n#### Parameters\n\n-   `absintheSocket` **AbsintheSocket** \n-   `notifier` **Notifier&lt;Result, Variables>** \n-   `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?**  (optional, default `{}`)\n    -   `options.unsubscribe` **function (): [undefined](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined)?** \n    -   `options.onError` **function (error: [Error](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Error)): [undefined](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined)?** \n    -   `options.onStart` **function (notifier: Notifier&lt;Result, Variables>): [undefined](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined)?** \n    -   `options.handlers` **...any** \n\n#### Examples\n\n```javascript\nimport * as withAbsintheSocket from \"@absinthe/socket\";\n\nconst unobserveOrCancelIfNeeded = (absintheSocket, notifier, observer) => {\n  if (notifier && observer) {\n    withAbsintheSocket.unobserveOrCancel(absintheSocket, notifier, observer);\n  }\n};\n\nconst logEvent = eventName => (...args) => console.log(eventName, ...args);\n\nconst observable = withAbsintheSocket.toObservable(absintheSocket, notifier, {\n  onError: logEvent(\"error\"),\n  onStart: logEvent(\"open\"),\n  unsubscribe: unobserveOrCancelIfNeeded\n});\n```\n\nReturns **Observable** \n\n### unobserve\n\nDetaches observer from notifier\n\n#### Parameters\n\n-   `absintheSocket` **AbsintheSocket** \n-   `notifier` **Notifier&lt;any, any>** \n-   `observer` **Observer&lt;any, any>** \n\n#### Examples\n\n```javascript\nimport * as withAbsintheSocket from \"@absinthe/socket\";\n\nwithAbsintheSocket.unobserve(absintheSocket, notifier, observer);\n```\n\nReturns **AbsintheSocket** \n\n### unobserveOrCancel\n\nCancels notifier if there are no more observers apart from the one given, or\ndetaches given observer from notifier otherwise\n\n#### Parameters\n\n-   `absintheSocket` **AbsintheSocket** \n-   `notifier` **Notifier&lt;Result, Variables>** \n-   `observer` **Observer&lt;Result, Variables>** \n\n#### Examples\n\n```javascript\nimport * as withAbsintheSocket from \"@absinthe/socket\";\n\nwithAbsintheSocket.unobserve(absintheSocket, notifier, observer);\n```\n\n## License\n\n[MIT](LICENSE.txt) :copyright: Jumpn Limited.\n","readmeFilename":"README.md"}