pax_global_header 0000666 0000000 0000000 00000000064 14170321715 0014513 g ustar 00root root 0000000 0000000 52 comment=9cf7ad7fee6de6920a440b1e982eb4ecb2d039cb
eliom-9.4.0/ 0000775 0000000 0000000 00000000000 14170321715 0012632 5 ustar 00root root 0000000 0000000 eliom-9.4.0/.github/ 0000775 0000000 0000000 00000000000 14170321715 0014172 5 ustar 00root root 0000000 0000000 eliom-9.4.0/.github/workflows/ 0000775 0000000 0000000 00000000000 14170321715 0016227 5 ustar 00root root 0000000 0000000 eliom-9.4.0/.github/workflows/workflow.yml 0000664 0000000 0000000 00000002135 14170321715 0020625 0 ustar 00root root 0000000 0000000 name: Main workflow
on:
pull_request:
push:
schedule:
# Prime the caches every Monday
- cron: 0 1 * * MON
jobs:
build:
strategy:
fail-fast: false
matrix:
os:
- macos-latest
- ubuntu-latest
ocaml-compiler:
- 4.08.x
- 4.09.x
- 4.10.x
- 4.11.x
- 4.12.x
- 4.13.x
runs-on: ${{ matrix.os }}
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Use OCaml ${{ matrix.ocaml-compiler }}
uses: ocaml/setup-ocaml@v2
with:
ocaml-compiler: ${{ matrix.ocaml-compiler }}
opam-depext: false
opam-pin: false
- name: Re-export the proper PKG_CONFIG_PATH variable to the environment on macOS
run: echo "PKG_CONFIG_PATH=$(brew --prefix openssl)/lib/pkgconfig:$PKG_CONFIG_PATH" >>"$GITHUB_ENV"
if: ${{ matrix.os == 'macos-latest' }}
- run: opam pin add eliom.dev . --no-action
- run: opam depext eliom --yes
- run: opam install . --deps-only
- run: opam exec -- make all
eliom-9.4.0/.gitignore 0000664 0000000 0000000 00000000344 14170321715 0014623 0 ustar 00root root 0000000 0000000 *~
#*
*#
.#*
_build
eliom.install
src/**/*.mllib
src/**/*.mldylib
src/**/*.odocl
local/etc
local/var/run
local/var/lib
local/var/log
local/tmp
local/var/www/distillery-*
tests/distillery/distillery-*
ocsigen.org-data
_opam
eliom-9.4.0/.jenkins.sh 0000664 0000000 0000000 00000001523 14170321715 0014706 0 ustar 00root root 0000000 0000000 opam pin add js_of_ocaml --dev-repo --no-action
for pkg in camlp4 compiler lwt ocamlbuild ppx tyxml; do
opam pin add js_of_ocaml-$pkg \
https://github.com/ocsigen/js_of_ocaml.git \
--no-action
done
opam pin add --no-action eliom .
opam install --deps-only eliom
opam install --verbose eliom
do_build_doc () {
make wikidoc
cp -Rf doc/manual-wiki/*.wiki ${MANUAL_SRC_DIR}
mkdir -p ${API_DIR}/server ${API_DIR}/client ${API_DIR}/ocamlbuild ${API_DIR}/ppx
cp -Rf _build/src/lib/server/api.wikidocdir/*.wiki ${API_DIR}/server/
cp -Rf _build/src/lib/client/api.wikidocdir/*.wiki ${API_DIR}/client/
cp -Rf _build/src/ocamlbuild/api.wikidocdir/*.wiki ${API_DIR}/ocamlbuild/
cp -Rf _build/src/ppx/api.wikidocdir/*.wiki ${API_DIR}/ppx/
cp -Rf doc/index.wiki ${API_DIR}/
}
do_remove () {
opam remove --verbose eliom
}
eliom-9.4.0/.merlin 0000664 0000000 0000000 00000000264 14170321715 0014123 0 ustar 00root root 0000000 0000000 B _build/src/*
S src/*
PKG js_of_ocaml
PKG lwt
PKG calendar
PKG ocsipersist
PKG ocsigenserver
PKG react
PKG reactiveData
PKG ipaddr
FLG -w +A-4-6-7-9-27-32-33-34-37-40-42-44-48
eliom-9.4.0/.ocp-indent 0000664 0000000 0000000 00000000052 14170321715 0014670 0 ustar 00root root 0000000 0000000 normal
with=0
syntax=lwt mll
max_indent=2
eliom-9.4.0/CHANGES 0000664 0000000 0000000 00000124630 14170321715 0013633 0 ustar 00root root 0000000 0000000 ===== 9.0 (2021-10-16) =====
* compatibility with ocsigenserver.5.0.0 (outsourced Ocsipersist)
===== 8.8 (2021-10-05) =====
* rework Eliom_client
* more debugging info
* restore functions to access uploaded file info
===== 8.6 (2021-07-26) =====
* improvements of history handling and DOM caching
===== 8.5 (2020-10-28) ====
* Compatibility with ocsigenserver 4.0
===== 6.9 (2019-11-12) =====
* fix scrolling bug: scrolling to top happens before page change
* Server functions: log function argument on uncaught exceptions
* Compile Eliom libraries with the linkall option
===== 6.8 (2019-09-11) =====
* Use directly Pcre instead of relying on Netstring_pcre
* Improved async exception handler
* Remove camlp4 syntax
* Adapt to OCaml 4.08
* PPX extension: use migrate-parse-tree
===== 6.7 (2018-02-08) =====
* Eliom_client.Page_status: function while_active; ?stop parameter
* DOM caching: treat history as linear and keep only reachable pages in cache
===== 6.6 (2018-01-17) =====
* Add missing function Eliom_request_info.get_remote_port
* Eliom_client.Page_status.oninactive
* Some documentation on DOM caching
* Eliom_wrap: fix compilation on 32-bit architectures
===== 6.5 (2018-12-18) =====
* Compatibility with tyxml.4.3.x and js_of_caml.3.3.x
===== 6.4 (2018-12-17) =====
* Compatibility with Lwt 4.x
* New configuration option to set html content type
* Comet: deactivate when window does not have the focus; deactivate polling when idle
* eliom_request_info.in_request_handler
* Client-side non-localized parameters
* Provide a way to serve global data separately from the initial page
===== 6.3 (2018-02-08) =====
* Compatibility with OCaml 4.06, js_of_ocaml 3.0 and Lwt 3.0
* DOM caching (preview)
* Various small fixes and improvements
===== 6.2 (2017-02-07) =====
* Implement Eliom_client.onchangepage
* Fix URL-related bugs arising in mobile apps
===== 6.1 (2016-12-20) =====
* Remove redundant dependency on calendar
* Permit client routing to "./"
* -y parameter for eliom-distillery (do not ask)
* Eliom_client: do not execute onload after OCaml services
* Permit suffix params in Eliom_service.create_attached_post
===== 6.0 (2016-12-08) =====
* Improve Eliom_service and Eliom_registration APIs using GADTs
* Implement client-side services, useful for mobile apps. This includes
** client-side service registration (Eliom_registration)
** client-side service routing (Eliom_client.change_page_uri)
* Transition to PPX internally
* Compatibility with
** OCaml 4.03.0 and 4.04.0
** Js_of_ocaml 2.8.2 and newer
** TyXML 4.0 and newer
* Various bugfixes and improvements
===== 5.0 (2016-01-28) =====
* Add Eliom_shared and server-side Eliom_content.{Html5,Svg}.R modules
* Add PPX syntax extension
* Clean-up form APIs, now available under Eliom_content.Html5.{D,F}.Form
* Patches to significantly reduce the size of request data
* Compatibility with TyXML 3.6, Js_of_ocaml 2.7, and reactiveData 0.2
* Various bugfixes and enhancements
===== 4.2 (2015-07-21) =====
* Add Manip.children, to get the html children of an element.
* Simplify Html5 and Svg signatures using tyxml's signature functors.
* Various logging improvements, in particular in Eliom_client.
* Fix eliomdep's exit code when calling option "-sort".
* Fix #168: call_ocaml_service always sends boolean true.
* Makes server function return types covariant.
* Restore compatibility with ocsigenserver 2.6 and lwt 2.4.7.
* Various bugfixes and wiki updates.
===== 4.1 (2014-10-01) =====
* Compatibility with js_of_ocaml-2.5 and tyxml-3.3.0
* Improvements:
** Simplify typing of services
** Use GADT to encode service parameters (Eliom_parameter)
Eliom need OCaml 4.00 at least.
** bugfixes for service parameters
** Various bugfixes and enhancement
===== 4.0 (2014-05) =====
* Main new features:
** Reactive DOM elements (thanks to a contribution by besport.com)
** PUT and DELETE services for RESTful Eliom Applications
(Contribution by Domoco)
** EXPERIMENTAL: Mobile apps with Eliom. By making it possible to start
the application from client-side.
** Documentation improvements
* Improvements:
** Improvements in typing of services (Contribution by Jacques-Pascal Deplaix)
** Filtering data from Eliom buses
** "caml" in value or type names now replaced by "OCaml" everywhere
** New module {{{Eliom_registration.File_ct}}} to make easier to send files with
their content type
** Now possible to define services in shared sections
** Adding function {{{Eliom_client.change_url}}} to change the URL without doing a request
** Adding function {{{Eliom_service.attach_coservice'}}} to attach a non-attached coservice to an URL
** Improving comet configurations: now possible to stay idle instead of being completely inactive
** Now using defaultprotocol option (from ocsigenserver) to compute URLs
** The default expiration date for cookies on client side is now 10 years
** Now possible to send files in {{{Eliom_client.call_ocaml_service}}}
** Various additions and bugfixes in {{{Manip}}}, {{{Eliom_request_info}}},
{{{Eliom_content.html5}}} (events) (contributions by besport.com)
** eliom-destillery renamed into eliom-distillery
** Templates for eliom-distillery
** New programs: eliomdoc and eliompp
** Ocamlbuild package
** Various bugfixes
And many other things (see git commits)
===== 3.0.0 (2012-12-10) =====
* Language
** Generalized client values in server code
** Injections into client sections
* Tools
** Added eliom-destillery for generating project scaffolds
** Support Eliom interface files (.eliomi) in eliomc, eliomdep
** eliomdep: Generate dependencies between eliom-modules
** eliomc: infer only with option -infer, drop option -noinfer
** eliomc: Basic support for -i on eliom-files
** eliom{c,dep,opt},js_of_eliom: -dump to output the intermediate code
** eliomc,js_of_eliom: always open Eliom_pervasives in eliom files
* API
** Eliom_pervasives.server_function to easily access the from the client
** Get current state of a scope
** Module to access values of Eliom references in external states (Eliom_state.Ext)
** Scope names are now named scope hierarchies
** Iterate the scope hierarchy (group > session > client > request)
** Adding Eliom_parameter.(type_checker, neopt)
** Add functions to insert html5 in atom feeds
** Eliom_tools.{F,D}.html to ease creation of head-tag
** Eliom_tools.wrap_handler as an easy alernative to Eliom_registration.Customize
** Test for initial request of a client on the server
* Changed server behaviour
** Eliom_state.discard_everything now also discards request state
** Don't send nodes as data when they are part of the document
* Changed client behaviour
** Show progress cursor during navigation with change_page
** Improved error messages
** Fail on the client when a [server_function] or call_caml_service fails on the server
* Bugfixes
** Allow % for injections directly after parentheses
* Support dropped for
** Xhtml
** OCamlDuce
** Eliom_compatibility_2_1
* A myriade of bugfixes
===== 2.2.2 (2012-06-11) =====
* Fix (re-disable) generation of API doc for ocamlduce modules
===== 2.2.1 (2012-06-07) =====
Addendum to the great renaming
* Eliom_cookies -> Eliom_cookie
* Eliom_comet.Channels -> Eliom_comet.Channel
===== 2.2 (2012-06-02) =====
The great renaming: Make Eliom's API more coherent
* Dropped Eliom_pervasives, split into
** Eliom_lib (extension of stdlib)
** Eliom_content (content creation)
* Moved all Html5,Xhtml content function to Eliom_content.{Html5,Xhtml}
** {HTML5,SVG,XHTML}.M -> Eliom_content.{Html5,Svg,Xhtml}.F
** {HTML5,SVG,XHTML}.DOM -> Eliom_content.{Html5,Svg,Xhtml}.D
** Eliom_output.{Html5,Xhtml}: form functions to Eliom_content.{Html5,Xhtml}
** Eliom_client.Html5 -> Eliom_content.Html5.To_dom
** Eliom_dom -> Eliom_content.Html5.Manip
** HTML5.of_element -> Eliom_content.Html5.Of_dom.of_element
* Removed default implementations in Eliom_content.{Html5,Svg,Xhtml} (was inclusion of DOM)
* Rename Eliom_output to Eliom_registration
* Rename Eliom_registration.Eliom_appl to Eliom_registration.App
* Conform naming conventions for modules (singular, lower-case)
** XML -> Xml
** SVG -> Svg
** XML_types -> Xml_types
** XHTML_types -> Xhtml_types
** HTML5_types -> Html5_types
** Eliom_services -> Eliom_service
** Eliom_parameters -> Eliom_parameter
** Eliom_references -> Eliom_reference
** Eliom_extensions -> Eliom_extension
* Approximating compatibility module for Eliom 2.1: Eliom_compatibility_2_1
===== 2.1.1 (2012-03-20) =====
* Server: Add Eliom references of scope site
* Server: Add an non-Lwt interface to volatile Eliom references
* Client: Add an option to restrict usage of XHR.
* Bugfixes:
** Client: More robust and portable history handling
** Client: More robust CSS preloading (change_page)
** Client: Better compatibility with Opera
===== 2.1.0 (2012-02-24) =====
* Page loading rewritten.
** We do not traverse the HTML tree anymore for retrieving links
and putting events handlers, it use querySelectorAll instead.
(with a fallback for older browsers)
*** We do not send a sparse tree along the page anymore.
*** It is faster and more resilient to ugly browser plugins
** Add css loading optimisations: It fetch the css included
using @include with XHR before changing page and construct only
one concatenated css. It avoids page blinking when the css change
and is faster (browsers tend to render the page once per css).
** Unwrapping hand rewritten in js.
** And a lot of other optimisations.
* Rework of unique nodes:
** Introduce new lightweight 'unique' node of scope request,
a.k.a. DOM nodes: use it through HTML5.DOM.{div,...} or its alias
HTML5.{div,...}.
** To create unique node of scope application, the function
'HTML5.M.unique ?copy' has been renamed 'HTML5.create_global_elt
?id'
** Abstract id for application node are created with
"HTML.new_global_elt_id"
** Node representation now differs between the client and the
server. They are unwrapped on the client to simplify the XML
representation: "unique" node that have already a "Javascript DOM
representation" only contains a reference to the DOM
representation.
* Server API Changes:
** Add Eliom_state.get_*_session_group_size to know the number of
session in a session group
** Parameters of type any can't be suffixes (semantic problem)
** Add Eliom_comet.wait_timeout to notify when a client isn't active
** Allow services to setup "Cache-policy: max-age" with Text, CssText and
Files modules.
** Eliom_state.discard and discard_data now accept scope request.
* Client API Changes:
** add an Eliom_dom module provinding imperative function on unique HTML5.elt.
(for instance {{{appendChild: ?before:'a elt -> 'b elt -> 'c elt -> unit}}}).
** HTML5.M.a_on{click,...} functions directly expect a
function as parameter (XML.event_handler_of_function isn't
required anymore).
** Eliom_comet: configuration option for time until timeout after the focus is lost
** Handling wrapping of int32 type.
** Onload event handlers on HTML elements are executed when they are converted to
DOM (using Eliom_client.of_ functions). This allows them to be added to nodes not
sent in the page.
** Calls to {{{Eliom_services.onload}}} are taken into account for services sending
caml values. The handlers are executed when the call to
{{{Eliom_client.caml_call_service}}} terminates.
* Eliom syntax:
** Event handlers can now access the current event using the _ev variable
inside {{ ... }} typed according to the attribute.
** Allow modules to be used inside client expr {{ ... }} and client_expr
{{ ... }} to be used inside modules
** Add -ppopt option to eliomc
* And a lot of bugfixes.
===== 2.0.2 (2001-11-30) =====
* Compatibility with js_of_ocaml-1.0.8 and tyxml-2.0.1
* API Changes:
** Eliom_output.Redirection: use 302 as default and introduce
abstract nome for all the 30x HTTP code
** Eliom_output.Customize: remove unrequired Functor parameters.
* Delayed URl computation: this allows relative links to be created
outside of service handler.
* Client: do not ignore "onload" events attached on Dom elements
other than window.
* Bugfixes:
** Client: do not execute change_page_uri when the middle button or
any modifier key is pressed.
** Client: update correctly the location when changing page with
forms.
** Server: displaying better dynlink error messages.
** Syntax extension: avoid infinite loop while parsing first-order
module expression
** Eliom_parameters: fixing wrong parameter names for list of list
** Eliom_parameters: fixing bug causing stack overflow when lists
parameter names were wrong
** Fixing bug with non-localized parameters and service not keeping
non-attached params
** Eliom_comet: stateless channels can be registered multiple times
(close #220)
===== 2.0.1 (2011-09-28) =====
* Bugfixes in eliom appl.:
** Preload css when changing page to avoid a disgraceful "flash" effect
** Use