{"_id":"@acryl/acryl-browser-bus","_rev":"1-e930dbd341280f5dccbe2d111c11da89","name":"@acryl/acryl-browser-bus","dist-tags":{"latest":"0.2.1"},"versions":{"0.2.1":{"name":"@acryl/acryl-browser-bus","version":"0.2.1","main":"dist/browser-bus.min.js","types":"dist/index.d.ts","repository":{"type":"git","url":"git+ssh://git@github.com/acrylplatform/acryl-browser-bus.git"},"bugs":{"url":"https://github.com/acrylplatform/acryl-browser-bus/issues"},"publishConfig":{"access":"public"},"devDependencies":{"@types/jest":"^24.0.18","browserify":"^16.2.3","jest":"^24.9.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","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":"2782582934aa15c214767446dec63afac6ab0737","description":"Библиотека для работы над текстовым протоколом. Позволяет реализовать связь например для:  * двух различных окон браузера  * окно браузера с iframe","homepage":"https://github.com/acrylplatform/acryl-browser-bus#readme","_id":"@acryl/acryl-browser-bus@0.2.1","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","dist":{"integrity":"sha512-6lPkeEiKUcLdKj4Ds9nmY1zFAR8+qHt5j1aPqxSDYfzwYSh14HYTe+PE7kI81xjrqSBMCvxxVLJx3eqC1TSvuw==","shasum":"5a08e09c3ca2e6678a80f4b8bd0d1e575bfac4bb","tarball":"https://registry.npmjs.org/@acryl/acryl-browser-bus/-/acryl-browser-bus-0.2.1.tgz","fileCount":24,"unpackedSize":85067,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdb34rCRA9TVsSAnZWagAA18gQAIGFJ/FZ1oawLSNLQBE3\n+mEJ4EFbdry9l/Mrt87n0tPwNOOt/AtRoHQv2lpQzInoG/8xbd7RKcdF2ALI\nsqtb4xQf7urIJTO+9ywHxeFOCm2Yn30YmhhDH2E22TO1fHqkW+HugJwUlA6x\n8QsgEJGoWwJofMv7S4xMACSw8nrSzrdROWDYIMl8nCWgQSEY8S8eGeAuz+Zw\nErsBHp+lnXEWhC1AUo47UnxhI+Bpn9uECT+tqWbmbB7lNwUpGDeomhX5Y14y\n02XHbXSfgBVQHS03IdV3N1uD2ShLQQtlK3SBuxK3SlmmaRJ8ZgPcKMdms5HI\ndf8CNeGAgxPvDdDxF/NNSPr1L6U13sOpI8efPpJSScTGur7SUfL+7fqIDJeB\n1jaOkQq9EAeSc1xRamK1ku4ROjXodJbYgU/u4xzvWBLWNthrk+Knr0AO3I6y\nGFAgAyoGIoCjcgZShf4BLT31CrPGfj1mQm0A10RXh3b7yKxAmyZdP0vuh0iq\nwAiHLBt+ff3+S1QyVXa8Y7t7NtqDHM9iCyuY5MTBuFcPaKE0rdSqeLTXmniU\nqO8g350WagPfxqn5YMtE4FDs01IUGc6CJqdDeNMUO57aYKGcRccIX/h+R1hI\nfypXzkCFeLYwduv6Sfk2FES9WC2KhKi3pS8Kfr6i3OWlfmgdU78xVDqfdDh+\n6rsY\r\n=23Cz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDqWniIg1kCN+JdfbcMAW9L+BrYr7LNT90Q3DAWISmF9gIgW4vsKc/nXVCV+q0bR29vEpDVCuyPr4MYYG0KJN5dXYs="}]},"maintainers":[{"name":"deadblackclover","email":"deadblackclover@protonmail.com"},{"name":"eaz","email":"eaz@acrylplatform.com"}],"_npmUser":{"name":"eaz","email":"eaz@acrylplatform.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/acryl-browser-bus_0.2.1_1567587882775_0.6579322431501142"},"_hasShrinkwrap":false}},"time":{"created":"2019-09-04T09:04:42.555Z","0.2.1":"2019-09-04T09:04:42.892Z","modified":"2022-04-04T11:16:32.074Z"},"maintainers":[{"name":"deadblackclover","email":"deadblackclover@protonmail.com"},{"name":"eaz","email":"eaz@acrylplatform.com"}],"description":"Библиотека для работы над текстовым протоколом. Позволяет реализовать связь например для:  * двух различных окон браузера  * окно браузера с iframe","homepage":"https://github.com/acrylplatform/acryl-browser-bus#readme","repository":{"type":"git","url":"git+ssh://git@github.com/acrylplatform/acryl-browser-bus.git"},"bugs":{"url":"https://github.com/acrylplatform/acryl-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 '@acryl/acryl-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 '@acryl/acryl-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```","readmeFilename":"README.md"}