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_file This 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=>COMPRESSION Configures if compression of packed files should be enabled. The only compression option supported is 'deflate'. Any other value will disable compression. embedded embedded => FLAG If 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. next_set_name next_file_name html_root current_set current_file set_prefix flush