Skip to content

Commit

Permalink
WAM: Fix missing atob in audioworklet #1050
Browse files Browse the repository at this point in the history
  • Loading branch information
olilarkin committed Feb 17, 2024
1 parent a2288d7 commit ea2831f
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 1 deletion.
40 changes: 40 additions & 0 deletions IPlug/WEB/Template/scripts/atob-polyfill.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
// Copied from https://github.com/strophe/strophejs/blob/e06d027/src/polyfills.js#L149

// This code was written by Tyler Akins and has been placed in the
// public domain. It would be nice if you left this header intact.
// Base64 code from Tyler Akins -- http://rumkin.com

/**
* Decodes a base64 string.
* @param {string} input The string to decode.
*/
function atob(input) {
var keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';

var output = '';
var chr1, chr2, chr3;
var enc1, enc2, enc3, enc4;
var i = 0;
// remove all characters that are not A-Z, a-z, 0-9, +, /, or =
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, '');
do {
enc1 = keyStr.indexOf(input.charAt(i++));
enc2 = keyStr.indexOf(input.charAt(i++));
enc3 = keyStr.indexOf(input.charAt(i++));
enc4 = keyStr.indexOf(input.charAt(i++));

chr1 = (enc1 << 2) | (enc2 >> 4);
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
chr3 = ((enc3 & 3) << 6) | enc4;

output = output + String.fromCharCode(chr1);

if (enc3 !== 64) {
output = output + String.fromCharCode(chr2);
}
if (enc4 !== 64) {
output = output + String.fromCharCode(chr3);
}
} while (i < input.length);
return output;
};
3 changes: 2 additions & 1 deletion common-web.mk
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,8 @@ LDFLAGS = -s ALLOW_MEMORY_GROWTH=1 --bind
# The following settings mean the WASM is delivered as BASE64 and included in the MyPluginName-wam.js file.
WAM_LDFLAGS = -s EXPORTED_RUNTIME_METHODS="['ccall', 'cwrap', 'setValue', 'UTF8ToString']" \
-s BINARYEN_ASYNC_COMPILATION=0 \
-s SINGLE_FILE=1
-s SINGLE_FILE=1 \
--pre-js=$(IPLUG2_ROOT)/IPlug/WEB/Template/scripts/atob-polyfill.js
#-s ENVIRONMENT=worker

WEB_LDFLAGS = -s EXPORTED_FUNCTIONS=$(WEB_EXPORTS) \
Expand Down

0 comments on commit ea2831f

Please sign in to comment.