Requesting HTML with Wrapped Scripts

This method wraps each script with various <script></script> tags and appends them into <body> tag.

Supported wrap options:

// wrapType = 0
<script>[SCRIPT]</script>
// wrapType = 1
<script src="data:text/javascript;base64,[SCRIPT]"></script>
// wrapType = 2
<script type="text/javascript+gzip" src="data:text/javascript;base64,[SCRIPT]"></script>
// wrapType = 3
<script type="text/javascript+png" src="data:text/javascript;base64,[SCRIPT]"></script>
// wrapType = anything other than 0, 1, 2, 3
[wrapPrefix][SCRIPT][wrapSuffix]

Example

WrappedScriptRequest[] memory requests = new InlineScriptRequest[](5);
requests[0].name = "rawScript";
requests[0].contractAddress = scriptyStorageContractAddress;
requests[0].wrapType = 0;
   
requests[1].name = "base64_encoded_script";
requests[1].contractAddress = scriptyStorageContractAddress;
requests[1].wrapType = 1;

requests[2].name = "base64_encoded_gzip_script";
requests[2].contractAddress = scriptyStorageContractAddress;
requests[2].wrapType = 2;

requests[3].name = "base64_encoded_png_script";
requests[3].contractAddress = scriptyStorageContractAddress;
requests[3].wrapType = 3;

requests[4].name = "script_with_custom_wrap";
requests[4].contractAddress = scriptyStorageContractAddress;
requests[4].wrapPrefix = '<script type="module">';
requests[4].wrapSuffix = '</script';
requests[4].wrapType = 4;

uint256 bufferSize = 100000;

bytes memory htmlFile = IScriptyBuilder(
    scriptyBuilderAddress
).getHTMLInline(getHTMLWrapped, bufferSize);

(bufferSize is set to 100000 as an example. In production, it's important to set an exact size. Please check here to learn more about buffer size.)

HTML file output:

<html>
    <body style='margin:0;'>
        <script>[rawScript_not_encoded]</script>
        <script src='data:text/javascript;base64,[base64_encoded_script]'></script>
        <script type="text/javascript+gzip" src="data:text/javascript;base64,[base64_encoded_gzip_script]"></script>
        <script type="text/javascript+png" src="data:text/javascript;base64,[base64_encoded_png_script]"></script>
        <script type="module">[script_with_custom_wrap]</script>
    </body>
</html>

Please note that when wrapType is 1, 2 or 3, stored scripts should be in base64 format.

Last updated