NAME
Data::JPack - Offline/Online Web Application Packer
SYNOPISIS
use Data::JPack;
my $packer=Data::JPack->new();
$packer->encode ($data);
DESCRIPTION
Provides a platform to package application content suitable for web clients, templating, via Template::Plexsite and a foundation for a client side worker pool for CPU intensive javavscript tasks.
Application code (javascript), textual and binary data can be packaged and loaded without the requirement of a server (ie local files) and avoiding samesite / origin security issues.
The client side javascript is installed and accessable via Data::JPack::App.
API (Server side)
Construction
new
Data::JPack->new(OPTIONS)
Create a new packer object, configured with OPTIONS, which are key value pairs. The options supported are:
- html_container
-
html_container=> Path_to_html_fileThis is a path to a html which will be considered the root or container for the data. If a path to a html is given, the dirname is extracted and is used as the the actual container path. If a directory path is provided, this is used directly.
- jpack_type
-
html_container=> "data";Currently the only supported value for this option is
"data"; - jpack_compression
-
jpack_compression=>COMPRESSIONConfigures if compression of packed files should be enabled. The only compression option supported is
'deflate'. Any other value will disable compression. - embedded
-
embedded => FLAGIf FLAG is true, the data encoded will be configured for inline/embedded usage in a html file. Otherwise the encoded data will be configured for loading from a external file.
The default is
false.
Single Shot Encoding
With an existing Data::JPack object, these methods these methods will process a single data chunk, with required header and footer.
encode
$packer->encode($data);
Single call that wraps and encodes data suitable for storing in a standalone file, or embeded if the $packer object is conifigured.
Returns the encoded data.
decode
$packer->decode($data);
Decodes $data expected in Data::JPack format. Returns the decoded data.
encode_file
$packer->encode_file($path);
Single call the encodes the data from a file located and $path. Calls encode internally.
Returns the encoded data.
Streaming Encoding
To encoding a data a chunk at a time, first encode the header, then 0 or more data, then the footer:
$packer->encode_header; # Must be first
$packer->encode_data($data); # 0 or more times
$packer->encode_footer; # Must be last
encode_header
$packer->encode_header;
Serializes the header information required. The actual header created depends on the embedded flag of the $packer object. The Output of this sub must before any data chunk encoded.
encode_data
$packer->encode_data;
Encodes the provided data and returns it. Note no filtering of the $data is performed. It must be done manaully before hand.
Returns the encoded data.
encode_footer
$packer->encode_footer;
Serializes the end of the encoded file. The output of this sub must be after all data chunks to be encoded.
Container Management and Inspection
The container contains multiple files.