Comparing version 0.5.3 to 1.0.0
@@ -1,1 +0,1 @@ | ||
!function(e,n,t){"object"==typeof exports?module.exports=t():"function"==typeof define&&define.amd?define(t):n.morsify=t()}(0,this,function(){var a={1:{A:"01",B:"1000",C:"1010",D:"100",E:"0",F:"0010",G:"110",H:"0000",I:"00",J:"0111",K:"101",L:"0100",M:"11",N:"10",O:"111",P:"0110",Q:"1101",R:"010",S:"000",T:"1",U:"001",V:"0001",W:"011",X:"1001",Y:"1011",Z:"1100"},2:{0:"11111",1:"01111",2:"00111",3:"00011",4:"00001",5:"00000",6:"10000",7:"11000",8:"11100",9:"11110"},3:{".":"010101",",":"110011","?":"001100","'":"011110","!":"101011","/":"10010","(":"10110",")":"101101","&":"01000",":":"111000",";":"101010","=":"10001","+":"01010","-":"100001",_:"001101",'"':"010010",$:"0001001","@":"011010","¿":"00101","¡":"110001"},4:{"Ã":"01101","Á":"01101","Å":"01101","À":"01101","Â":"01101","Ä":"0101","Ą":"0101","Æ":"0101","Ç":"10100","Ć":"10100","Ĉ":"10100","Č":"110","Đ":"00100","Ð":"00110","È":"01001","Ë":"00100","Ę":"00100","É":"00100","Ê":"10010","Ğ":"11010","Ĝ":"11010","Ĥ":"1111","İ":"01001","Ï":"10011","Ì":"01110","Ĵ":"01110","Ł":"01001","Ń":"11011","Ñ":"11011","Ó":"1110","Ò":"1110","Ö":"1110","Ô":"1110","Ø":"1110","Ś":"0001000","Ş":"01100","Ș":"1111","Š":"1111","Ŝ":"00010","ß":"000000","Þ":"01100","Ü":"0011","Ù":"0011","Ŭ":"0011","Ž":"11001","Ź":"110010","Ż":"11001"},5:{"А":"01","Б":"1000","В":"011","Г":"110","Д":"100","Е":"0","Ж":"0001","З":"1100","И":"00","Й":"0111","К":"101","Л":"0100","М":"11","Н":"10","О":"111","П":"0110","Р":"010","С":"000","Т":"1","У":"001","Ф":"0010","Х":"0000","Ц":"1010","Ч":"1110","Ш":"1111","Щ":"1101","Ъ":"11011","Ы":"1011","Ь":"1001","Э":"00100","Ю":"0011","Я":"0101"},6:{"Α":"01","Β":"1000","Γ":"110","Δ":"100","Ε":"0","Ζ":"1100","Η":"0000","Θ":"1010","Ι":"00","Κ":"101","Λ":"0100","Μ":"11","Ν":"10","Ξ":"1001","Ο":"111","Π":"0110","Ρ":"010","Σ":"000","Τ":"1","Υ":"1011","Φ":"0010","Χ":"1111","Ψ":"1101","Ω":"011"},7:{"א":"01","ב":"1000","ג":"110","ד":"100","ה":"111","ו":"0","ז":"1100","ח":"0000","ט":"001","י":"00","כ":"101","ל":"0100","מ":"11","נ":"10","ס":"1010","ע":"0111","פ":"0110","צ":"011","ק":"1101","ר":"010","ש":"000","ת":"1"},8:{"ا":"01","ب":"1000","ت":"1","ث":"1010","ج":"0111","ح":"0000","خ":"111","د":"100","ذ":"1100","ر":"010","ز":"1110","س":"000","ش":"1111","ص":"1001","ض":"0001","ط":"001","ظ":"1011","ع":"0101","غ":"110","ف":"0010","ق":"1101","ك":"101","ل":"0100","م":"11","ن":"10","ه":"00100","و":"011","ي":"00","ﺀ":"0"},9:{"ا":"01","ب":"1000","پ":"0110","ت":"1","ث":"1010","ج":"0111","چ":"1110","ح":"0000","خ":"1001","د":"100","ذ":"0001","ر":"010","ز":"1100","ژ":"110","س":"000","ش":"1111","ص":"0101","ض":"00100","ط":"001","ظ":"1011","ع":"111","غ":"0011","ف":"0010","ق":"111000","ک":"101","گ":"1101","ل":"0100","م":"11","ن":"10","و":"011","ه":"0","ی":"00"},10:{"ア":"11011","カ":"0100","サ":"10101","タ":"10","ナ":"010","ハ":"1000","マ":"1001","ヤ":"011","ラ":"000","ワ":"101","イ":"01","キ":"10100","シ":"11010","チ":"0010","ニ":"1010","ヒ":"11001","ミ":"00101","リ":"110","ヰ":"01001","ウ":"001","ク":"0001","ス":"11101","ツ":"0110","ヌ":"0000","フ":"1100","ム":"1","ユ":"10011","ル":"10110","ン":"01010","エ":"01000","ケ":"1011","セ":"01110","テ":"01011","ネ":"1101","ヘ":"0","メ":"10001","レ":"111","ヱ":"01100","、":"010101","オ":"10111","コ":"1111","ソ":"1110","ト":"00100","ノ":"0011","ホ":"100","モ":"10010","ヨ":"11","ロ":"0101","ヲ":"0111","。":"010100"},11:{"ㄱ":"0100","ㄴ":"0010","ㄷ":"1000","ㄹ":"0001","ㅁ":"11","ㅂ":"011","ㅅ":"110","ㅇ":"101","ㅈ":"0110","ㅊ":"1010","ㅋ":"1001","ㅌ":"1100","ㅍ":"111","ㅎ":"0111","ㅏ":"0","ㅑ":"00","ㅓ":"1","ㅕ":"000","ㅗ":"01","ㅛ":"10","ㅜ":"0000","ㅠ":"010","ㅡ":"100","ㅣ":"001"},12:{"ก":"110","ข":"1010","ค":"101","ง":"10110","จ":"10010","ฉ":"1111","ช":"1001","ซ":"1100","ญ":"0111","ด":"100","ต":"1","ถ":"10100","ท":"10011","น":"10","บ":"1000","ป":"0110","ผ":"1101","ฝ":"10101","พ":"01100","ฟ":"0010","ม":"11","ย":"1011","ร":"010","ล":"0100","ว":"011","ส":"000","ห":"0000","อ":"10001","ฮ":"11011","ฤ":"01011","ะ":"01000","า":"01","ิ":"00100","ี":"00","ึ":"00110","ื":"0011","ุ":"00101","ู":"1110","เ":"0","แ":"0101","ไ":"01001","โ":"111","ำ":"00010","่":"001","้":"0001","๊":"11000","๋":"01010","ั":"01101","็":"11100","์":"11001","ๆ":"10111","ฯ":"11010"}},i=function(e,n){var t=s(e),r={};for(var o in a)for(var i in r[o]={},a[o])r[o][i]=a[o][i].replace(/0/g,t.dot).replace(/1/g,t.dash);return!0!==n&&delete r[0],r},s=function(e){return(e=e||{}).oscillator=e.oscillator||{},e={dash:e.dash||"-",dot:e.dot||".",space:e.space||"/",invalid:e.invalid||"#",priority:e.priority||1,unit:e.unit||.08,oscillator:{type:e.oscillator.type||"sine",frequency:e.oscillator.frequency||500,onended:e.oscillator.onended||null}},a[0]=a[e.priority],e},p=function(e,n){var t=s(n);return e.replace(/\s+/g,"").toLocaleUpperCase().split("").map(function(e){for(var n in a)if(void 0!==a[n]&&void 0!==a[n][e])return a[n][e];return 13===parseInt(t.priority)?function(e){for(var n=[],t=0;t<e.length;t++)n[t]=("00"+e.charCodeAt(t).toString(16)).slice(-4);return parseInt(n.join(""),16).toString(2)}(e):t.invalid}).join(t.space).replace(/0/g,t.dot).replace(/1/g,t.dash)};return{characters:i,decode:function(e,n){var r=s(n),o=function(e){var n={},t=i(e,!0);for(var r in t)for(var o in t[r])void 0===n[t[r][o]]&&(n[t[r][o]]=o);return n}(r);return e.split(r.space).map(function(e){return void 0!==o[e]?o[e]:13===parseInt(r.priority)?(t=r,n=(n=e).replace(new RegExp("\\"+t.dot,"g"),"0").replace(new RegExp("\\"+t.dash,"g"),"1"),n=parseInt(n,2),isNaN(n)?t.invalid:decodeURIComponent(JSON.parse('"\\u'+n.toString(16)+'"'))):r.invalid;var n,t}).join(" ").replace(/\s+/g," ")},encode:p,audio:function(e,n){var t=s(n),r=p(e,n),o=new(window.AudioContext||window.webkitAudioContext),i=o.currentTime,a=o.createOscillator(),c=o.createGain();a.type=t.oscillator.type,a.frequency.value=t.oscillator.frequency,a.onended=t.oscillator.onended,c.gain.setValueAtTime(0,i);for(var l=function(e){c.gain.setValueAtTime(1,i),i+=e*t.unit},u=function(e){c.gain.setValueAtTime(0,i),i+=e*t.unit},d=0;d<=r.length;d++)r[d]===t.space?u(7):r[d]===t.dot?(l(1),u(1)):r[d]===t.dash?(l(3),u(1)):u(3);return a.connect(c),c.connect(o.destination),{play:function(){a.start(o.currentTime),a.stop(o.currentTime+i)},stop:function(){a.stop(o.currentTime)},context:o,oscillator:a,gainNode:c}}}}); | ||
function _typeof(a){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}(function(a,b,c){"object"===("undefined"==typeof exports?"undefined":_typeof(exports))?module.exports=c():"function"==typeof define&&define.amd?define(c):b[a]=c()})("morsify",this,function(){"use strict";var a={1:{A:"01",B:"1000",C:"1010",D:"100",E:"0",F:"0010",G:"110",H:"0000",I:"00",J:"0111",K:"101",L:"0100",M:"11",N:"10",O:"111",P:"0110",Q:"1101",R:"010",S:"000",T:"1",U:"001",V:"0001",W:"011",X:"1001",Y:"1011",Z:"1100"},2:{0:"11111",1:"01111",2:"00111",3:"00011",4:"00001",5:"00000",6:"10000",7:"11000",8:"11100",9:"11110"},3:{".":"010101",",":"110011","?":"001100","'":"011110","!":"101011","/":"10010","(":"10110",")":"101101","&":"01000",":":"111000",";":"101010","=":"10001","+":"01010","-":"100001",_:"001101",'"':"010010",$:"0001001","@":"011010","¿":"00101","¡":"110001"},4:{Ã:"01101",Á:"01101",Å:"01101",À:"01101",Â:"01101",Ä:"0101",Ą:"0101",Æ:"0101",Ç:"10100",Ć:"10100",Ĉ:"10100",Č:"110",Đ:"00100",Ð:"00110",È:"01001",Ë:"00100",Ę:"00100",É:"00100",Ê:"10010",Ğ:"11010",Ĝ:"11010",Ĥ:"1111",İ:"01001",Ï:"10011",Ì:"01110",Ĵ:"01110",Ł:"01001",Ń:"11011",Ñ:"11011",Ó:"1110",Ò:"1110",Ö:"1110",Ô:"1110",Ø:"1110",Ś:"0001000",Ş:"01100",Ș:"1111",Š:"1111",Ŝ:"00010",ß:"000000",Þ:"01100",Ü:"0011",Ù:"0011",Ŭ:"0011",Ž:"11001",Ź:"110010",Ż:"11001"},5:{А:"01",Б:"1000",В:"011",Г:"110",Д:"100",Е:"0",Ж:"0001",З:"1100",И:"00",Й:"0111",К:"101",Л:"0100",М:"11",Н:"10",О:"111",П:"0110",Р:"010",С:"000",Т:"1",У:"001",Ф:"0010",Х:"0000",Ц:"1010",Ч:"1110",Ш:"1111",Щ:"1101",Ъ:"11011",Ы:"1011",Ь:"1001",Э:"00100",Ю:"0011",Я:"0101"},6:{Α:"01",Β:"1000",Γ:"110",Δ:"100",Ε:"0",Ζ:"1100",Η:"0000",Θ:"1010",Ι:"00",Κ:"101",Λ:"0100",Μ:"11",Ν:"10",Ξ:"1001",Ο:"111",Π:"0110",Ρ:"010",Σ:"000",Τ:"1",Υ:"1011",Φ:"0010",Χ:"1111",Ψ:"1101",Ω:"011"},7:{א:"01",ב:"1000",ג:"110",ד:"100",ה:"111",ו:"0",ז:"1100",ח:"0000",ט:"001",י:"00",כ:"101",ל:"0100",מ:"11",נ:"10",ס:"1010",ע:"0111",פ:"0110",צ:"011",ק:"1101",ר:"010",ש:"000",ת:"1"},8:{ا:"01",ب:"1000",ت:"1",ث:"1010",ج:"0111",ح:"0000",خ:"111",د:"100",ذ:"1100",ر:"010",ز:"1110",س:"000",ش:"1111",ص:"1001",ض:"0001",ط:"001",ظ:"1011",ع:"0101",غ:"110",ف:"0010",ق:"1101",ك:"101",ل:"0100",م:"11",ن:"10",ه:"00100",و:"011",ي:"00",ﺀ:"0"},9:{ا:"01",ب:"1000",پ:"0110",ت:"1",ث:"1010",ج:"0111",چ:"1110",ح:"0000",خ:"1001",د:"100",ذ:"0001",ر:"010",ز:"1100",ژ:"110",س:"000",ش:"1111",ص:"0101",ض:"00100",ط:"001",ظ:"1011",ع:"111",غ:"0011",ف:"0010",ق:"111000",ک:"101",گ:"1101",ل:"0100",م:"11",ن:"10",و:"011",ه:"0",ی:"00"},10:{ア:"11011",カ:"0100",サ:"10101",タ:"10",ナ:"010",ハ:"1000",マ:"1001",ヤ:"011",ラ:"000",ワ:"101",イ:"01",キ:"10100",シ:"11010",チ:"0010",ニ:"1010",ヒ:"11001",ミ:"00101",リ:"110",ヰ:"01001",ウ:"001",ク:"0001",ス:"11101",ツ:"0110",ヌ:"0000",フ:"1100",ム:"1",ユ:"10011",ル:"10110",ン:"01010",エ:"01000",ケ:"1011",セ:"01110",テ:"01011",ネ:"1101",ヘ:"0",メ:"10001",レ:"111",ヱ:"01100","、":"010101",オ:"10111",コ:"1111",ソ:"1110",ト:"00100",ノ:"0011",ホ:"100",モ:"10010",ヨ:"11",ロ:"0101",ヲ:"0111","。":"010100"},11:{ㄱ:"0100",ㄴ:"0010",ㄷ:"1000",ㄹ:"0001",ㅁ:"11",ㅂ:"011",ㅅ:"110",ㅇ:"101",ㅈ:"0110",ㅊ:"1010",ㅋ:"1001",ㅌ:"1100",ㅍ:"111",ㅎ:"0111",ㅏ:"0",ㅑ:"00",ㅓ:"1",ㅕ:"000",ㅗ:"01",ㅛ:"10",ㅜ:"0000",ㅠ:"010",ㅡ:"100",ㅣ:"001"},12:{ก:"110",ข:"1010",ค:"101",ง:"10110",จ:"10010",ฉ:"1111",ช:"1001",ซ:"1100",ญ:"0111",ด:"100",ต:"1",ถ:"10100",ท:"10011",น:"10",บ:"1000",ป:"0110",ผ:"1101",ฝ:"10101",พ:"01100",ฟ:"0010",ม:"11",ย:"1011",ร:"010",ล:"0100",ว:"011",ส:"000",ห:"0000",อ:"10001",ฮ:"11011",ฤ:"01011",ะ:"01000",า:"01","ิ":"00100","ี":"00","ึ":"00110","ื":"0011","ุ":"00101","ู":"1110",เ:"0",แ:"0101",ไ:"01001",โ:"111",ำ:"00010","่":"001","้":"0001","๊":"11000","๋":"01010","ั":"01101","็":"11100","์":"11001",ๆ:"10111",ฯ:"11010"}},b=function(b,c){var d=f(b),e={};for(var g in a)for(var h in e[g]={},a[g])e[g][h]=a[g][h].replace(/0/g,d.dot).replace(/1/g,d.dash);return!0!==c&&delete e[0],e},c=function(a){var c={},d=b(a,!0);for(var e in d)for(var f in d[e])"undefined"==typeof c[d[e][f]]&&(c[d[e][f]]=f);return c},d=function(a){for(var b=[],c=0;c<a.length;c++)b[c]=("00"+a.charCodeAt(c).toString(16)).slice(-4);return parseInt(b.join(""),16).toString(2)},e=function(a,b){return a=a.replace(new RegExp("\\"+b.dot,"g"),"0").replace(new RegExp("\\"+b.dash,"g"),"1"),a=parseInt(a,2),isNaN(a)?b.invalid:decodeURIComponent(JSON.parse("\"\\u"+a.toString(16)+"\""))},f=function(b){return b=b||{},b.oscillator=b.oscillator||{},b={dash:b.dash||"-",dot:b.dot||".",space:b.space||"/",invalid:b.invalid||"#",priority:b.priority||1,unit:b.unit||.08,oscillator:{type:b.oscillator.type||"sine",frequency:b.oscillator.frequency||500,onended:b.oscillator.onended||null}},a[0]=a[b.priority],b},g=function(b,c){var e=f(c);return b.replace(/\s+/g,"").toLocaleUpperCase().split("").map(function(b){for(var c in a)if("undefined"!=typeof a[c]&&"undefined"!=typeof a[c][b])return a[c][b];return 13===parseInt(e.priority)?d(b):e.invalid}).join(e.space).replace(/0/g,e.dot).replace(/1/g,e.dash)},h="undefined"!=typeof window,i=h?window.AudioContext||window.webkitAudioContext:null,j=h?new i:null;return{characters:b,decode:function(a,b){var d=f(b),g=c(d);return a.split(d.space).map(function(a){return"undefined"==typeof g[a]?13===parseInt(d.priority)?e(a,d):d.invalid:g[a]}).join(" ").replace(/\s+/g," ")},encode:g,audio:function(a,b){var c,d=f(b),e=g(a,b),h=j.createOscillator(),k=j.createGain(),l=j.currentTime;h.type=d.oscillator.type,h.frequency.value=d.oscillator.frequency,h.onended=d.oscillator.onended,k.gain.setValueAtTime(0,l);for(var m=function(a){k.gain.setValueAtTime(1,l),l+=a*d.unit},n=function(a){k.gain.setValueAtTime(0,l),l+=a*d.unit},o=0;o<=e.length;o++)e[o]===d.space?n(7):e[o]===d.dot?(m(1),n(1)):e[o]===d.dash?(m(3),n(1)):n(3);h.connect(k),k.connect(j.destination);var p=function(){h.start(j.currentTime),c=setTimeout(function(){return q()},1e3*(l-j.currentTime))},q=function(){clearTimeout(c),c=0,h.stop(0)};return{play:p,stop:q,context:j,oscillator:h,gainNode:k}}}}); |
{ | ||
"name": "morsify", | ||
"version": "0.5.3", | ||
"version": "1.0.0", | ||
"description": "Morse code translator and decoder which also generates audio.", | ||
@@ -28,11 +28,13 @@ "keywords": [ | ||
"devDependencies": { | ||
"coveralls": "^2.13.0", | ||
"@babel/core": "^7.1.2", | ||
"@babel/preset-env": "^7.1.0", | ||
"coveralls": "^2.13.3", | ||
"gulp": "^3.9.1", | ||
"gulp-babel": "^8.0.0", | ||
"gulp-babel-minify": "^0.5.0", | ||
"gulp-concat": "^2.6.1", | ||
"gulp-uglify": "^3.0.0", | ||
"istanbul": "^0.4.5", | ||
"jshint": "^2.9.0", | ||
"lodash": "^4.17.10", | ||
"mocha": "^3.4.0", | ||
"pump": "^1.0.2" | ||
"jshint": "^2.9.6", | ||
"lodash": "^4.17.11", | ||
"mocha": "^3.5.3" | ||
}, | ||
@@ -39,0 +41,0 @@ "main": "./src/morsify.js", |
@@ -27,7 +27,7 @@ # morsify | ||
```js | ||
var morsify = require('morsify'); | ||
var encoded = morsify.encode('SOS'); // .../---/... | ||
var decoded = morsify.decode('.../---/...'); // S O S | ||
var characters = morsify.characters(); // {'1': {'A': '.-', ...}, ..., '11': {'ㄱ': '.-..', ...}} | ||
var audio = morsify.audio('SOS'); | ||
const morsify = require('morsify'); | ||
const encoded = morsify.encode('SOS'); // .../---/... | ||
const decoded = morsify.decode('.../---/...'); // S O S | ||
const characters = morsify.characters(); // {'1': {'A': '.-', ...}, ..., '11': {'ㄱ': '.-..', ...}} | ||
const audio = morsify.audio('SOS'); | ||
audio.play(); // play audio | ||
@@ -34,0 +34,0 @@ audio.stop(); // stop audio |
@@ -1,2 +0,2 @@ | ||
;(function (name, root, factory) { | ||
;(((name, root, factory) => { | ||
if (typeof exports === 'object') { | ||
@@ -9,5 +9,6 @@ module.exports = factory(); | ||
} | ||
} ('morsify', this, function () { | ||
var characters = { | ||
})('morsify', this, () => { | ||
'use strict'; | ||
const characters = { | ||
'1': { // Latin => https://en.wikipedia.org/wiki/Morse_code | ||
@@ -107,7 +108,8 @@ 'A': '01', 'B': '1000', 'C': '1010', 'D': '100', 'E': '0', 'F': '0010', | ||
var getCharacters = function (opts, usePriority) { | ||
var options = getOptions(opts), mapped = {}; | ||
for (var set in characters) { | ||
const getCharacters = (opts, usePriority) => { | ||
const options = getOptions(opts); | ||
const mapped = {}; | ||
for (const set in characters) { | ||
mapped[set] = {}; | ||
for (var key in characters[set]) { | ||
for (const key in characters[set]) { | ||
mapped[set][key] = characters[set][key].replace(/0/g, options.dot).replace(/1/g, options.dash); | ||
@@ -122,6 +124,7 @@ } | ||
var swapCharacters = function (options) { | ||
var swapped = {}, mappedCharacters = getCharacters(options, true); | ||
for (var set in mappedCharacters) { | ||
for (var key in mappedCharacters[set]) { | ||
const swapCharacters = (options) => { | ||
const swapped = {}; | ||
const mappedCharacters = getCharacters(options, true); | ||
for (const set in mappedCharacters) { | ||
for (const key in mappedCharacters[set]) { | ||
if (typeof swapped[mappedCharacters[set][key]] === 'undefined') { | ||
@@ -135,5 +138,5 @@ swapped[mappedCharacters[set][key]] = key; | ||
var unicodeToMorse = function (character) { | ||
var ch = []; | ||
for (var i = 0; i < character.length; i++) { | ||
const unicodeToMorse = (character) => { | ||
const ch = []; | ||
for (let i = 0; i < character.length; i++) { | ||
ch[i] = ('00' + character.charCodeAt(i).toString(16)).slice(-4); | ||
@@ -144,3 +147,3 @@ } | ||
var unicodeToHex = function (morse, options) { | ||
const unicodeToHex = (morse, options) => { | ||
morse = morse.replace(new RegExp('\\' + options.dot, 'g'), '0').replace(new RegExp('\\' + options.dash, 'g'), '1'); | ||
@@ -154,3 +157,3 @@ morse = parseInt(morse, 2); | ||
var getOptions = function (options) { | ||
const getOptions = (options) => { | ||
options = options || {}; | ||
@@ -175,6 +178,6 @@ options.oscillator = options.oscillator || {}; | ||
var encode = function (text, opts) { | ||
var options = getOptions(opts); | ||
const encode = (text, opts) => { | ||
const options = getOptions(opts); | ||
return text.replace(/\s+/g, '').toLocaleUpperCase().split('').map(function(character) { | ||
for (var set in characters) { | ||
for (let set in characters) { | ||
if (typeof characters[set] !== 'undefined' && typeof characters[set][character] !== 'undefined') { | ||
@@ -188,4 +191,4 @@ return characters[set][character]; | ||
var decode = function (morse, opts) { | ||
var options = getOptions(opts), swapped = swapCharacters(options); | ||
const decode = (morse, opts) => { | ||
const options = getOptions(opts), swapped = swapCharacters(options); | ||
return morse.split(options.space).map(function(characters) { | ||
@@ -199,7 +202,15 @@ if (typeof swapped[characters] !== 'undefined') { | ||
var audio = function (text, opts) { | ||
var options = getOptions(opts), morse = encode(text, opts), | ||
AudioContext = window.AudioContext || window.webkitAudioContext, context = new AudioContext(), | ||
t = context.currentTime, oscillator = context.createOscillator(), gainNode = context.createGain(); | ||
const isBrowser = typeof window !== 'undefined'; | ||
const AudioContext = isBrowser ? window.AudioContext || window.webkitAudioContext : null; | ||
const context = isBrowser ? new AudioContext() : null; | ||
const audio = (text, opts) => { | ||
const options = getOptions(opts); | ||
const morse = encode(text, opts); | ||
const oscillator = context.createOscillator(); | ||
const gainNode = context.createGain(); | ||
let timeout; | ||
let t = context.currentTime; | ||
oscillator.type = options.oscillator.type; | ||
@@ -211,6 +222,8 @@ oscillator.frequency.value = options.oscillator.frequency; | ||
var tone = function (i) { | ||
const tone = (i) => { | ||
gainNode.gain.setValueAtTime(1, t); | ||
t += i * options.unit; | ||
}, silence = function (i) { | ||
}; | ||
const silence = (i) => { | ||
gainNode.gain.setValueAtTime(0, t); | ||
@@ -220,3 +233,3 @@ t += i * options.unit; | ||
for (var i = 0; i <= morse.length; i++) { | ||
for (let i = 0; i <= morse.length; i++) { | ||
if (morse[i] === options.space) { | ||
@@ -238,13 +251,20 @@ silence(7); | ||
const play = () => { | ||
oscillator.start(context.currentTime); | ||
timeout = setTimeout(() => stop(), (t - context.currentTime) * 1000); | ||
}; | ||
const stop = () => { | ||
clearTimeout(timeout); | ||
timeout = 0; | ||
oscillator.stop(0); | ||
}; | ||
return { | ||
play: function () { | ||
oscillator.start(context.currentTime); | ||
oscillator.stop(context.currentTime + t); | ||
}, | ||
stop: function () { | ||
oscillator.stop(context.currentTime); | ||
}, | ||
context: context, | ||
oscillator: oscillator, | ||
gainNode: gainNode | ||
play, | ||
stop, | ||
context, | ||
oscillator, | ||
gainNode | ||
}; | ||
@@ -255,7 +275,6 @@ }; | ||
characters: getCharacters, | ||
decode: decode, | ||
encode: encode, | ||
audio: audio | ||
decode, | ||
encode, | ||
audio | ||
}; | ||
})); |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
39324
6
810
0
11
1