{"_id":"@bancoin/bancoin-browser-bus","_rev":"1-ae361f02876a901bbe2d439b1fb6ed54","name":"@bancoin/bancoin-browser-bus","dist-tags":{"latest":"0.2.3"},"versions":{"0.2.3":{"name":"@bancoin/bancoin-browser-bus","version":"0.2.3","main":"dist/index.js","types":"dist/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/bancoinplatform/bancoin-browser-bus.git"},"bugs":{"url":"https://github.com/bancoinplatform/bancoin-browser-bus/issues"},"devDependencies":{"@types/jest":"^24.0.4","browserify":"^16.2.3","jest":"^24.1.0","ts-jest":"^23.10.5","ts-utils":"^6.0.7","typescript":"^3.3.3","uglifyjs":"^2.4.11"},"jest":{"collectCoverage":true,"coveragePathIgnorePatterns":["/node_modules/","/test/"],"moduleFileExtensions":["ts","tsx","js"],"transform":{"^.+\\.(ts|tsx)$":"ts-jest"},"testMatch":["**/test/*test.+(ts)"]},"scripts":{"patch":"npm version patch && npm publish && git push","prepare":"npm run build","preversion":"npm run test","postversion":"npm publish","postpublish":"git push","build":"tsc --build ./ && npm run _build-full","test":"jest","_build-full":"browserify ./dist/index.js -s bus -o ./dist/browser-bus.js && uglifyjs ./dist/browser-bus.js -o ./dist/browser-bus.min.js"},"dependencies":{"@types/node":"^11.9.4","typed-ts-events":"^1.0.5"},"gitHead":"0610b284f760c469294f81f142e888f82ab73fd8","description":"Библиотека для работы над текстовым протоколом. Позволяет реализовать связь например для:  * двух различных окон браузера  * окно браузера с iframe","homepage":"https://github.com/bancoinplatform/bancoin-browser-bus#readme","_id":"@bancoin/bancoin-browser-bus@0.2.3","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-01QOO2JmAxStOjA8QBCDeWsLl3jebgExXRL2pxnCF3Ln7JmTK9M48pRvJfTu8rXCTZ5fHm3PD47la+RbLwH60Q==","shasum":"94007988f36fefb05597e70aa136ae5914636f80","tarball":"https://registry.npmjs.org/@bancoin/bancoin-browser-bus/-/bancoin-browser-bus-0.2.3.tgz","fileCount":24,"unpackedSize":86002,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+8QtCRA9TVsSAnZWagAAozMQAIN7Zj6BIt9qfD9uubZ2\nSZGRmF8XVEUoQulbx+0oq+r1U/IiRnirJifo+NtfkuxPwhlWkcczEBuunxQc\niN1su7+g2zQP0ZVLJx8Y48nvvLQrjKz4fCPWK6fD6vL2/jqcoZekkeOo/5P0\ndwKOqS0KtUIp6DQqK/uq5NkQIo1XAONo15R+m8VyXoqxkhlTUoZ4juao/LYX\nnKkWoGyLEbM32wUdtWDK8nEzwcu64bDNjcrUaOZWAJdZDN3430NHHgCRBpr/\nygM4B0H1cDPWhwveueJLCueKwGF0vaM+1oow5lofQyIplmJgIadkaCZpRrm3\neay8gP0TphpavhQMWCDWsGwEc/nI2hjjISQzm0yz9o02BN3QZ1BxaGlGPT6J\nbQg9H8yhudHHxHyy2vKeIgqXmiucncT2xPy2bm/PQos9wnCafv9cELte+Kxd\nULvlyy4NYhBQ+/4l2pXxYW2hAbmg5ofB/89dbpivOgDoONJiBBhOtOcZgX2M\nG38d+4m7ZDv5H/X/eVq42E0BAwYLN7mcJppyMzxGw5ZdpcVQLHdNmxA40mjc\navfEVr8THidBD2yZG25l/Dno/E/SBWPGwn+U5FYwqTPWcHndt0wEisBYv4Ae\nEzCCWVyNXc9bPVuxO72zGnLpnDE6ZoLQRPbhH0hJUP1NeERDHySCPSaz3sZH\nWL0x\r\n=DaLj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC1L+Rm1kjdoWEMRFi3wGsyVMUYCnvqCBbjnITigTYLXAIhAMOxomnMYWZSxF/kBm7j4/xCM5btvucaq6ou+DENxkyG"}]},"maintainers":[{"name":"jestevez","email":"jose.estevez.prieto@gmail.com"},{"name":"hbastidas","email":"heberbastidas@gmail.com"}],"_npmUser":{"name":"hbastidas","email":"heberbastidas@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bancoin-browser-bus_0.2.3_1576780845442_0.9560767759248165"},"_hasShrinkwrap":false}},"time":{"created":"2019-12-19T18:40:45.219Z","0.2.3":"2019-12-19T18:40:45.525Z","modified":"2022-04-04T17:40:56.573Z"},"maintainers":[{"name":"jestevez","email":"jose.estevez.prieto@gmail.com"},{"name":"hbastidas","email":"heberbastidas@gmail.com"}],"description":"Библиотека для работы над текстовым протоколом. Позволяет реализовать связь например для:  * двух различных окон браузера  * окно браузера с iframe","homepage":"https://github.com/bancoinplatform/bancoin-browser-bus#readme","repository":{"type":"git","url":"git+ssh://git@github.com/bancoinplatform/bancoin-browser-bus.git"},"bugs":{"url":"https://github.com/bancoinplatform/bancoin-browser-bus/issues"},"readme":"# Browser Bus     \n\nБиблиотека для работы над текстовым протоколом.\nПозволяет реализовать связь например для:\n * двух различных окон браузера\n * окно браузера с iframe\n\n## Browser Bus API\n\nВ библиотеке содержится классы Bus, Adapter и WindowAdapter, кроме того есть конфигурирование \nуровня логирования.\nДля работы библиотеки должны быть 2 \nстороны между которыми можно отправлять сообщения любого формата.\nС каждой из этих сторон нужно создать по экземпляру класса Bus для отправки и получения\nзапросов и событий.\n\n## Bus\n\nПозволяет отправлять и подписываться на события. \n\nПринимает экземпляр класса Adapter отвечающий за реализацию протокола отправки сообщений \nи время ожидания ответа по умолчанию (в миллисекундах).\nВремя ответа не обязательный параметр и по умолчанию равен 5 секунд.\n\nПример связи iframe и родительского окна:\n\nНа стороне родительского окна:\n```javascript\n    import { Bus, WindowAdapter } from '@bancoin/bancoin-browser-bus';\n\n    const url = 'https://some-iframe-content-url.com';\n    const iframe = document.createElement('iframe');\n    \n    WindowAdapter.createSimpleWindowAdapter(iframe).then(adapter => {\n        const bus = new Bus(adapter);\n        \n        bus.once('ready', () => {\n            // Получено сообщение от iframe \n        });\n    });\n    iframe.src = url; // Предпочтительно присваивать url после вызова WindowAdapter.createSimpleWindowAdapter\n    document.body.appendChild(iframe);\n```\nНа стороне iframe:\n```javascript\n    import { Bus, WindowAdapter } from '@bancoin/bancoin-browser-bus';\n    WindowAdapter.createSimpleWindowAdapter().then(adapter => {\n        const bus = new Bus(adapter);\n        \n        bus.dispatchEvent('ready', null); // Отправили сообщение в родительское окно\n    });\n    \n```\n\n### dispatchEvent\n\nОтправляет событие. Все экземпляры Bus, с которыми установлена связь и есть подписка на это событие, получат это сообщение.\nВторым аргументом передаются данные для обработчиков. \nВезде, кроме IE, допустимы объекты, которые клонируются, а в IE – только строка. \n\n```javascript\n\nbus.dispatchEvent('some-event-name', jsonLikeData);\n\n```\n\n### request\n\nПараметры:\n+ name - метод запроса котоый вызовится на другом экземпляре Bus\n+ [data] - данные которые будут переданы в метод\n+ [timeout] - время ожидания ответа (default = 5000)\n\nЕсли за время `timeout` ответа не последует - будет сгенерирована ошибка по таймауту.\nЕсли другой экземпляр Bus не имеет обработчика с именем `name` будет сгенерирована ошибка \n(см. `registerRequestHandler`)\nЕсли во время выполнения метода произойдёт ошибка - она вернётся в Promise.reject.\n\nОтправляет запрос к другому экземпляру Bus.\n\n```javascript\n\nbus.request('some-event-name', jsonLikeData, 100).then(data => {\n    // data - ответ от Bus \n});\n\n```\n\n### on\nПозволяет подписаться на события из Bus.  \n\nПример:\n```javascript\n   bus.on('some-event', data => {\n        //data - данные пришедшие в событии  \n   });\n```\n\n\n### once\nПозволяет однократно подписаться на события из Bus.  \n\nПример:\n```javascript\n   bus.once('some-event', data => {\n        //data - данные пришедшие в событии  \n   });\n```\n\n### off\nПозволяет отписаться от событий другого Bus.\n\nПараметры:\n+ [eventName] - имя события. Если не передано отпишется от всех событий с переданным `handler`.  \n+ [handler] - обработчик событий. Если не передан - отпишется от всех обработчиков с данным `eventName`.\n\nЕсли параметры не переданы - отпишется от всех событий.\n\nПример:\n```javascript\n   bus.off('some-event', handler); // Отпишется от `some-event` с обработчиком `handler`\n   bus.off('some-event'); // Отпишется от всех обработчиков на имя `some-event`\n   bus.off(null, handler); // Отпишется во всех именах от обработчика `handler`\n   bus.off(); // Отпишется от всех событий\n```\n\n\n\n### registerRequestHandler\nМетод для обработки запроса из другого экземпляра bus.\n\nПараметры:\n+ name - имя метода который будет доступен для вызова из другого bus\n+ handler - обработчик который будет отвечать в другой bus\nЕсли обработчик возвращает `Promise`, то bus дождется окончания и отправит результат.\n\nПример:\n```javascript\n    // В коде c одним из bus (например в iframe)\n    bus.registerRequestHandler('get-random', () => Math.random());\n    \n    // В основном коде приложения\n    bus.request('get-random').then(num => {\n        // Получили ответ из окна в iframe\n    })\n\n    \n```\n\nили\n\n```javascript\n    // В коде c одним из bus (например в iframe)\n    bus.registerRequestHandler('get-random', () => Promise.resolve(Math.random()));\n    \n    // В основном коде приложения\n    bus.request('get-random').then(num => {\n        // Получили ответ из окна в iframe\n    })\n\n    \n```\n\n","readmeFilename":"readme.md"}