loop ... until
endpoints

protocol router preview
site state domain
demo demo of all s4-units https://{site}.{host}
enviski https://www.enviski.com
plain https://{host}/{site}.html
qqq main entry site, backdoor https://{site}.{host}
repolero https://{site}.{host}
www dummy entry page https://{site}.{host}

architecture

architecture: .backup/qqq/tmp.untiloop.mdg.png
structure: .backup/qqq/out.untiloop.png

4url

s4url tests preview

"assets:/fonts/google-fonts.css"
"https://assets.untiloop.website/fonts/google-fonts.css"
"assets:/auto-scripts/autocomplete.min.css"
"https://assets.untiloop.website/auto-scripts/autocomplete.min.css"
"assets:/auto-scripts/pure-min.css"
"https://assets.untiloop.website/auto-scripts/pure-min.css"
"assets:/auto-scripts/grids-responsive-min.css"
"https://assets.untiloop.website/auto-scripts/grids-responsive-min.css"
"assets:/auto-scripts/siimple-icons.css"
"https://assets.untiloop.website/auto-scripts/siimple-icons.css"
"assets:/theme-bare/water-css/water-hack.css"
"https://assets.untiloop.website/theme-bare/water-css/water-hack.css"
"assets:/auto-scripts/highliht-js/default.min.css"
"https://assets.untiloop.website/auto-scripts/highliht-js/default.min.css"
"assets:/auto-scripts/highliht-js/atom-one-light.min.css"
"https://assets.untiloop.website/auto-scripts/highliht-js/atom-one-light.min.css"
"assets:/auto-scripts/highliht-js/atom-one-dark.min.css"
"https://assets.untiloop.website/auto-scripts/highliht-js/atom-one-dark.min.css"
"assets:/auto-scripts/tabulator/dist/css/tabulator_simple.min.css"
"https://assets.untiloop.website/auto-scripts/tabulator/dist/css/tabulator_simple.min.css"
"theme://repolero.css"
"https://assets.untiloop.website/theme-bare/repolero.css"
"assets:/auto-scripts/autocomplete.min.js"
"https://assets.untiloop.website/auto-scripts/autocomplete.min.js"
"assets:/auto-scripts/redis/socket.io.min.js"
"https://assets.untiloop.website/auto-scripts/redis/socket.io.min.js"
"assets:/auto-scripts/hash-router.min.js"
"https://assets.untiloop.website/auto-scripts/hash-router.min.js"
"assets:/auto-scripts/store2.min.js"
"https://assets.untiloop.website/auto-scripts/store2.min.js"
"assets:/auto-scripts/aja.min.js"
"https://assets.untiloop.website/auto-scripts/aja.min.js"
"assets:/auto-scripts/highliht-js/highlight.min.js"
"https://assets.untiloop.website/auto-scripts/highliht-js/highlight.min.js"
"assets:/auto-scripts/highliht-js/crystal.min.js"
"https://assets.untiloop.website/auto-scripts/highliht-js/crystal.min.js"
"assets:/auto-scripts/highliht-js/lua.min.js"
"https://assets.untiloop.website/auto-scripts/highliht-js/lua.min.js"
"assets:/auto-scripts/highliht-js/javascript.min.js"
"https://assets.untiloop.website/auto-scripts/highliht-js/javascript.min.js"
"assets:/auto-scripts/highliht-js/go.min.js"
"https://assets.untiloop.website/auto-scripts/highliht-js/go.min.js"
"assets:/auto-scripts/highliht-js/json.min.js"
"https://assets.untiloop.website/auto-scripts/highliht-js/json.min.js"
"assets:/auto-scripts/code-viewer.min.js"
"https://assets.untiloop.website/auto-scripts/code-viewer.min.js"
"assets:/auto-scripts/keymage.min.js"
"https://assets.untiloop.website/auto-scripts/keymage.min.js"
"assets:/auto-scripts/crel.js"
"https://assets.untiloop.website/auto-scripts/crel.js"
"assets:/auto-scripts/vega/vega.min.js"
"https://assets.untiloop.website/auto-scripts/vega/vega.min.js"
"assets:/auto-scripts/vega/vega-lite.min.js"
"https://assets.untiloop.website/auto-scripts/vega/vega-lite.min.js"
"assets:/auto-scripts/vega/vega-embed.min.js"
"https://assets.untiloop.website/auto-scripts/vega/vega-embed.min.js"
"assets:/auto-scripts/stomp.umd.min.js"
"https://assets.untiloop.website/auto-scripts/stomp.umd.min.js"
"assets:/auto-scripts/interact.min.js"
"https://assets.untiloop.website/auto-scripts/interact.min.js"
"assets:/auto-scripts/tabulator/dist/js/tabulator.min.js"
"https://assets.untiloop.website/auto-scripts/tabulator/dist/js/tabulator.min.js"
"assets:/auto-scripts/2d/rbush.min.js"
"https://assets.untiloop.website/auto-scripts/2d/rbush.min.js"
"assets:/auto-scripts/2d/rbush-knn.min.js"
"https://assets.untiloop.website/auto-scripts/2d/rbush-knn.min.js"

protocolRouter

"s4:/?(env:loc)" => "https://assets.untiloop.website/s4/?(env:loc)"
pattern: http://assets.untiloop.loc/s4/
s4:/?(env:loc)/some-file.test => "https://assets.untiloop.website/s4/?(env:loc)/some-file.txt"
"s4:/?(env:linode)" => "https://assets.untiloop.website/s4/?(env:linode)"
pattern: https://assets.untiloop.website/s4/
s4:/?(env:linode)/some-file.test => "https://assets.untiloop.website/s4/?(env:linode)/some-file.txt"
"mq:/" => "wss://mq-ws.untiloop.website/"
pattern: wss://mq-ws.untiloop.website/
mq://some-file.test => "wss://mq-ws.untiloop.website/some-file.txt"
"crud:/" => "https://crud.untiloop.website/"
pattern: https://crud.untiloop.website/
crud://some-file.test => "https://crud.untiloop.website/some-file.txt"
"crud:/?(env:loc)" => "https://crud.untiloop.website/?(env:loc)"
pattern: http://crud.untiloop.loc/
crud:/?(env:loc)/some-file.test => "https://crud.untiloop.website/?(env:loc)/some-file.txt"
"portal:/?(env:loc)" => "https://portal.untiloop.website/portal/?(env:loc)"
pattern: http://portal.untiloop.loc/portal/
portal:/?(env:loc)/some-file.test => "https://portal.untiloop.website/portal/?(env:loc)/some-file.txt"
"portal:/?(env:linode)" => "https://portal.untiloop.website/portal/?(env:linode)"
pattern: https://portal.untiloop.website/portal/
portal:/?(env:linode)/some-file.test => "https://portal.untiloop.website/portal/?(env:linode)/some-file.txt"
"webhook:/?(env:loc)" => "https://webhook.untiloop.website/?(env:loc)"
pattern: http://webhook.untiloop.loc/
webhook:/?(env:loc)/some-file.test => "https://webhook.untiloop.website/?(env:loc)/some-file.txt"
"webhook:/?(env:linode)" => "https://webhook.untiloop.website/?(env:linode)"
pattern: https://webhook.untiloop.website/
webhook:/?(env:linode)/some-file.test => "https://webhook.untiloop.website/?(env:linode)/some-file.txt"
"assets:/?(env:loc)" => "https://assets.untiloop.website/?(env:loc)"
pattern: http://assets.untiloop.loc/
assets:/?(env:loc)/some-file.test => "https://assets.untiloop.website/?(env:loc)/some-file.txt"
"assets:/?(env:linode)" => "https://assets.untiloop.website/?(env:linode)"
pattern: https://assets.untiloop.website/
assets:/?(env:linode)/some-file.test => "https://assets.untiloop.website/?(env:linode)/some-file.txt"
"theme-bare:/?(env:loc)" => "https://assets.untiloop.website/theme-bare/?(env:loc)"
pattern: http://assets.untiloop.loc/theme-bare/
theme-bare:/?(env:loc)/some-file.test => "https://assets.untiloop.website/theme-bare/?(env:loc)/some-file.txt"
"theme-bare:/?(env:linode)" => "https://assets.untiloop.website/theme-bare/?(env:linode)"
pattern: https://assets.untiloop.website/theme-bare/
theme-bare:/?(env:linode)/some-file.test => "https://assets.untiloop.website/theme-bare/?(env:linode)/some-file.txt"
"theme-minimal:/" => "https:///assets.untiloop.website/theme-minimal/"
pattern: http://0.0.0.0:8080/assets/theme-minimal/
theme-minimal://some-file.test => "https:///assets.untiloop.website/theme-minimal/some-file.txt"
"theme-minimal:/?(env:linode)" => "https:///assets.untiloop.website/theme-minimal/?(env:linode)"
pattern: https:///assets.untiloop.website/theme-minimal/
theme-minimal:/?(env:linode)/some-file.test => "https:///assets.untiloop.website/theme-minimal/?(env:linode)/some-file.txt"
"theme-dracula:/" => "https:///assets.untiloop.website/theme-dracula/"
pattern: http://0.0.0.0:8080/assets/theme-dracula/
theme-dracula://some-file.test => "https:///assets.untiloop.website/theme-dracula/some-file.txt"
"theme-dracula:/?(env:linode)" => "https:///assets.untiloop.website/theme-dracula/?(env:linode)"
pattern: https:///assets.untiloop.website/theme-dracula/
theme-dracula:/?(env:linode)/some-file.test => "https:///assets.untiloop.website/theme-dracula/?(env:linode)/some-file.txt"
"theme-one:/" => "https://assets.untiloop.website/theme-one/"
pattern: http://0.0.0.0:8080/assets/theme-one/
theme-one://some-file.test => "https://assets.untiloop.website/theme-one/some-file.txt"
"theme-one:/?(env:linode)" => "https://assets.untiloop.website/theme-one/?(env:linode)"
pattern: https://assets.untiloop.website/theme-one/
theme-one:/?(env:linode)/some-file.test => "https://assets.untiloop.website/theme-one/?(env:linode)/some-file.txt"
"repo:/?(env:loc)" => "https://repo.untiloop.website?(env:loc)"
pattern: http://repo.untiloop.loc
repo:/?(env:loc)/some-file.test => "https://repo.untiloop.website?(env:loc)/some-file.txt"
"repo:/?(env:linode)" => "https://repo.untiloop.website?(env:linode)"
pattern: https://repo.untiloop.website
repo:/?(env:linode)/some-file.test => "https://repo.untiloop.website?(env:linode)/some-file.txt"
"data:/?(env:loc)" => "https://repo.untiloop.website/?(env:loc)"
pattern: http://repo.untiloop.loc/{name}
data:/?(env:loc)/some-file.test => "https://repo.untiloop.website/?(env:loc)/some-file.txt"
"data:/?(env:linode)" => "https://repo.untiloop.website/?(env:linode)"
pattern: https://repo.untiloop.website/{name}
data:/?(env:linode)/some-file.test => "https://repo.untiloop.website/?(env:linode)/some-file.txt"
";sqlite:/?(env:loc)" => ""
pattern: https://db?
;sqlite:/?(env:loc)/some-file.test => ""
";sqlite:/?(env:linode)" => ""
pattern: https://db?
;sqlite:/?(env:linode)/some-file.test => ""
";ouchdb:/?(env:loc)" => ""
pattern: https://ouchdb?
;ouchdb:/?(env:loc)/some-file.test => ""
";ouchdb:/?(env:linode)" => ""
pattern: https://ouchdb?
;ouchdb:/?(env:linode)/some-file.test => ""