kibi-swipl-linux-x64-gnu 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (550) hide show
  1. package/README.md +29 -0
  2. package/bin/swipl +0 -0
  3. package/bin/swipl-win +0 -0
  4. package/build-manifest.json +70 -0
  5. package/lib/cmake/swipl/SWIPLConfig.cmake +21 -0
  6. package/lib/cmake/swipl/SWIPLConfigVersion.cmake +65 -0
  7. package/lib/cmake/swipl/SWIPLTargets-release.cmake +28 -0
  8. package/lib/cmake/swipl/SWIPLTargets.cmake +109 -0
  9. package/lib/swipl/ABI +1 -0
  10. package/lib/swipl/LICENSE +41 -0
  11. package/lib/swipl/README.md +116 -0
  12. package/lib/swipl/app/README.md +25 -0
  13. package/lib/swipl/app/app.pl +87 -0
  14. package/lib/swipl/app/pack.pl +350 -0
  15. package/lib/swipl/app/qlf.pl +521 -0
  16. package/lib/swipl/app/splfr.pl +177 -0
  17. package/lib/swipl/app/sys.pl +310 -0
  18. package/lib/swipl/bin/swipl.home +1 -0
  19. package/lib/swipl/boot/apply.pl +73 -0
  20. package/lib/swipl/boot/attvar.pl +344 -0
  21. package/lib/swipl/boot/autoload.pl +1226 -0
  22. package/lib/swipl/boot/bags.pl +283 -0
  23. package/lib/swipl/boot/dcg.pl +388 -0
  24. package/lib/swipl/boot/dicts.pl +193 -0
  25. package/lib/swipl/boot/dwim.pl +485 -0
  26. package/lib/swipl/boot/engines.pl +152 -0
  27. package/lib/swipl/boot/expand.pl +1628 -0
  28. package/lib/swipl/boot/gc.pl +65 -0
  29. package/lib/swipl/boot/history.pl +304 -0
  30. package/lib/swipl/boot/init.pl +4682 -0
  31. package/lib/swipl/boot/iri.pl +64 -0
  32. package/lib/swipl/boot/license.pl +390 -0
  33. package/lib/swipl/boot/load.pl +81 -0
  34. package/lib/swipl/boot/messages.pl +2521 -0
  35. package/lib/swipl/boot/packs.pl +306 -0
  36. package/lib/swipl/boot/predopts.pl +154 -0
  37. package/lib/swipl/boot/qlf.pl +141 -0
  38. package/lib/swipl/boot/rc.pl +263 -0
  39. package/lib/swipl/boot/syspred.pl +1634 -0
  40. package/lib/swipl/boot/tabling.pl +2321 -0
  41. package/lib/swipl/boot/threads.pl +42 -0
  42. package/lib/swipl/boot/toplevel.pl +2248 -0
  43. package/lib/swipl/boot/topvars.pl +261 -0
  44. package/lib/swipl/boot.prc +0 -0
  45. package/lib/swipl/cmake/swipl.cmake +131 -0
  46. package/lib/swipl/customize/README.md +23 -0
  47. package/lib/swipl/customize/edit +101 -0
  48. package/lib/swipl/customize/init.pl +164 -0
  49. package/lib/swipl/demo/README.md +33 -0
  50. package/lib/swipl/demo/likes.pl +44 -0
  51. package/lib/swipl/doc/packages/examples/chr/bool.chr +281 -0
  52. package/lib/swipl/doc/packages/examples/chr/chrdif.chr +87 -0
  53. package/lib/swipl/doc/packages/examples/chr/chrfreeze.chr +6 -0
  54. package/lib/swipl/doc/packages/examples/chr/family.chr +116 -0
  55. package/lib/swipl/doc/packages/examples/chr/fib.chr +24 -0
  56. package/lib/swipl/doc/packages/examples/chr/fibonacci.chr +31 -0
  57. package/lib/swipl/doc/packages/examples/chr/gcd.chr +28 -0
  58. package/lib/swipl/doc/packages/examples/chr/leq.chr +34 -0
  59. package/lib/swipl/doc/packages/examples/chr/listdom.chr +138 -0
  60. package/lib/swipl/doc/packages/examples/chr/primes.chr +29 -0
  61. package/lib/swipl/doc/packages/examples/http/README.md +98 -0
  62. package/lib/swipl/doc/packages/examples/http/calc.pl +92 -0
  63. package/lib/swipl/doc/packages/examples/http/demo_body.pl +232 -0
  64. package/lib/swipl/doc/packages/examples/http/demo_client.pl +165 -0
  65. package/lib/swipl/doc/packages/examples/http/demo_daemon.pl +38 -0
  66. package/lib/swipl/doc/packages/examples/http/demo_files.pl +50 -0
  67. package/lib/swipl/doc/packages/examples/http/demo_hello.pl +15 -0
  68. package/lib/swipl/doc/packages/examples/http/demo_login.pl +280 -0
  69. package/lib/swipl/doc/packages/examples/http/demo_openid.pl +177 -0
  70. package/lib/swipl/doc/packages/examples/http/demo_pwp.pl +20 -0
  71. package/lib/swipl/doc/packages/examples/http/demo_rest.pl +56 -0
  72. package/lib/swipl/doc/packages/examples/http/demo_threads.pl +52 -0
  73. package/lib/swipl/doc/packages/examples/http/linux-init-script +126 -0
  74. package/lib/swipl/doc/packages/examples/http/pwp/context.pwp +23 -0
  75. package/lib/swipl/doc/packages/examples/http/pwp/index.pwp +25 -0
  76. package/lib/swipl/doc/packages/examples/http/pwp/pwp1.pwp +12 -0
  77. package/lib/swipl/doc/packages/examples/http/pwp/pwp2.pwp +10 -0
  78. package/lib/swipl/doc/packages/examples/http/pwp/pwp3.pwp +25 -0
  79. package/lib/swipl/doc/packages/examples/http/pwp/pwp4.pwp +23 -0
  80. package/lib/swipl/doc/packages/examples/http/pwp/pwp5.pwp +11 -0
  81. package/lib/swipl/doc/packages/examples/http/pwp/pwp6.pwp +3 -0
  82. package/lib/swipl/doc/packages/examples/http/pwp/pwp7.pwp +3 -0
  83. package/lib/swipl/doc/packages/examples/http/pwp/pwp8.pwp +3 -0
  84. package/lib/swipl/doc/packages/examples/http/pwp/pwpdb.pl +12 -0
  85. package/lib/swipl/doc/packages/examples/http/systemd-script.service +18 -0
  86. package/lib/swipl/doc/packages/examples/http/upstart-script.conf +20 -0
  87. package/lib/swipl/doc/packages/examples/plunit/read.pl +17 -0
  88. package/lib/swipl/doc/packages/examples/plunit/simple.pl +33 -0
  89. package/lib/swipl/doc/packages/examples/ssl/client.pl +83 -0
  90. package/lib/swipl/doc/packages/examples/ssl/etc/README +52 -0
  91. package/lib/swipl/doc/packages/examples/ssl/etc/client/client-cert.p12 +0 -0
  92. package/lib/swipl/doc/packages/examples/ssl/etc/client/client-cert.pem +85 -0
  93. package/lib/swipl/doc/packages/examples/ssl/etc/client/client-key.pem +30 -0
  94. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/cacert.pem +82 -0
  95. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/careq.pem +18 -0
  96. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/crlnumber +1 -0
  97. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/index.txt +3 -0
  98. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/index.txt.attr +1 -0
  99. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/newcerts/9DC08797A0F63F7C.pem +85 -0
  100. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/newcerts/9DC08797A0F63F7D.pem +85 -0
  101. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/private/cakey.pem +30 -0
  102. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/serial +1 -0
  103. package/lib/swipl/doc/packages/examples/ssl/etc/server/server-cert.pem +85 -0
  104. package/lib/swipl/doc/packages/examples/ssl/etc/server/server-key.pem +30 -0
  105. package/lib/swipl/doc/packages/examples/ssl/https.pl +267 -0
  106. package/lib/swipl/doc/packages/examples/ssl/server.pl +106 -0
  107. package/lib/swipl/include/SWI-Prolog.h +1544 -0
  108. package/lib/swipl/include/SWI-Stream.h +537 -0
  109. package/lib/swipl/include/Yap/YapInterface.h +283 -0
  110. package/lib/swipl/include/sicstus/sicstus.h +452 -0
  111. package/lib/swipl/lib/x86_64-linux/cgi.so +0 -0
  112. package/lib/swipl/lib/x86_64-linux/crypt.so +0 -0
  113. package/lib/swipl/lib/x86_64-linux/crypto4pl.so +0 -0
  114. package/lib/swipl/lib/x86_64-linux/double_metaphone.so +0 -0
  115. package/lib/swipl/lib/x86_64-linux/files.so +0 -0
  116. package/lib/swipl/lib/x86_64-linux/hashstream.so +0 -0
  117. package/lib/swipl/lib/x86_64-linux/http_stream.so +0 -0
  118. package/lib/swipl/lib/x86_64-linux/isub.so +0 -0
  119. package/lib/swipl/lib/x86_64-linux/json.so +0 -0
  120. package/lib/swipl/lib/x86_64-linux/libswipl.so.10 +0 -0
  121. package/lib/swipl/lib/x86_64-linux/mallocinfo.so +0 -0
  122. package/lib/swipl/lib/x86_64-linux/md54pl.so +0 -0
  123. package/lib/swipl/lib/x86_64-linux/memfile.so +0 -0
  124. package/lib/swipl/lib/x86_64-linux/ntriples.so +0 -0
  125. package/lib/swipl/lib/x86_64-linux/pcre4pl.so +0 -0
  126. package/lib/swipl/lib/x86_64-linux/porter_stem.so +0 -0
  127. package/lib/swipl/lib/x86_64-linux/process.so +0 -0
  128. package/lib/swipl/lib/x86_64-linux/prolog_stream.so +0 -0
  129. package/lib/swipl/lib/x86_64-linux/rdf_db.so +0 -0
  130. package/lib/swipl/lib/x86_64-linux/readutil.so +0 -0
  131. package/lib/swipl/lib/x86_64-linux/rlimit.so +0 -0
  132. package/lib/swipl/lib/x86_64-linux/sched.so +0 -0
  133. package/lib/swipl/lib/x86_64-linux/sgml2pl.so +0 -0
  134. package/lib/swipl/lib/x86_64-linux/sha4pl.so +0 -0
  135. package/lib/swipl/lib/x86_64-linux/snowball.so +0 -0
  136. package/lib/swipl/lib/x86_64-linux/socket.so +0 -0
  137. package/lib/swipl/lib/x86_64-linux/ssl4pl.so +0 -0
  138. package/lib/swipl/lib/x86_64-linux/streaminfo.so +0 -0
  139. package/lib/swipl/lib/x86_64-linux/syslog.so +0 -0
  140. package/lib/swipl/lib/x86_64-linux/time.so +0 -0
  141. package/lib/swipl/lib/x86_64-linux/turtle.so +0 -0
  142. package/lib/swipl/lib/x86_64-linux/uid.so +0 -0
  143. package/lib/swipl/lib/x86_64-linux/unix.so +0 -0
  144. package/lib/swipl/lib/x86_64-linux/uri.so +0 -0
  145. package/lib/swipl/lib/x86_64-linux/websocket.so +0 -0
  146. package/lib/swipl/lib/x86_64-linux/zlib4pl.so +0 -0
  147. package/lib/swipl/library/INDEX.pl +1020 -0
  148. package/lib/swipl/library/aggregate.pl +755 -0
  149. package/lib/swipl/library/ansi_term.pl +653 -0
  150. package/lib/swipl/library/apply.pl +426 -0
  151. package/lib/swipl/library/apply_macros.pl +497 -0
  152. package/lib/swipl/library/arithmetic.pl +320 -0
  153. package/lib/swipl/library/assoc.pl +522 -0
  154. package/lib/swipl/library/atom.pl +169 -0
  155. package/lib/swipl/library/backcomp.pl +688 -0
  156. package/lib/swipl/library/base32.pl +291 -0
  157. package/lib/swipl/library/base64.pl +441 -0
  158. package/lib/swipl/library/broadcast.pl +161 -0
  159. package/lib/swipl/library/build/cmake.pl +137 -0
  160. package/lib/swipl/library/build/conan.pl +232 -0
  161. package/lib/swipl/library/build/make.pl +168 -0
  162. package/lib/swipl/library/build/tools.pl +825 -0
  163. package/lib/swipl/library/charsio.pl +195 -0
  164. package/lib/swipl/library/check.pl +1097 -0
  165. package/lib/swipl/library/check_installation.pl +912 -0
  166. package/lib/swipl/library/clp/INDEX.pl +157 -0
  167. package/lib/swipl/library/clp/bounds.pl +2036 -0
  168. package/lib/swipl/library/clp/clp_distinct.pl +263 -0
  169. package/lib/swipl/library/clp/clp_events.pl +92 -0
  170. package/lib/swipl/library/clp/clpb.pl +1896 -0
  171. package/lib/swipl/library/clp/clpfd.pl +7906 -0
  172. package/lib/swipl/library/clp/simplex.pl +1580 -0
  173. package/lib/swipl/library/codesio.pl +182 -0
  174. package/lib/swipl/library/coinduction.pl +183 -0
  175. package/lib/swipl/library/console_input.pl +289 -0
  176. package/lib/swipl/library/csv.pl +611 -0
  177. package/lib/swipl/library/ctypes.pl +161 -0
  178. package/lib/swipl/library/date.pl +370 -0
  179. package/lib/swipl/library/dcg/INDEX.pl +35 -0
  180. package/lib/swipl/library/dcg/basics.pl +514 -0
  181. package/lib/swipl/library/dcg/high_order.pl +227 -0
  182. package/lib/swipl/library/debug.pl +499 -0
  183. package/lib/swipl/library/dialect/bim.pl +186 -0
  184. package/lib/swipl/library/dialect/commons.pl +77 -0
  185. package/lib/swipl/library/dialect/eclipse/test_util_iso.pl +355 -0
  186. package/lib/swipl/library/dialect/hprolog/format.pl +44 -0
  187. package/lib/swipl/library/dialect/hprolog.pl +314 -0
  188. package/lib/swipl/library/dialect/ifprolog.pl +1317 -0
  189. package/lib/swipl/library/dialect/iso/iso_predicates.pl +277 -0
  190. package/lib/swipl/library/dialect/sicstus/README.TXT +1 -0
  191. package/lib/swipl/library/dialect/sicstus/arrays.pl +121 -0
  192. package/lib/swipl/library/dialect/sicstus/block.pl +278 -0
  193. package/lib/swipl/library/dialect/sicstus/lists.pl +167 -0
  194. package/lib/swipl/library/dialect/sicstus/ordsets.pl +52 -0
  195. package/lib/swipl/library/dialect/sicstus/sockets.pl +174 -0
  196. package/lib/swipl/library/dialect/sicstus/system.pl +262 -0
  197. package/lib/swipl/library/dialect/sicstus/terms.pl +57 -0
  198. package/lib/swipl/library/dialect/sicstus/timeout.pl +92 -0
  199. package/lib/swipl/library/dialect/sicstus.pl +582 -0
  200. package/lib/swipl/library/dialect/sicstus4/aggregate.pl +60 -0
  201. package/lib/swipl/library/dialect/sicstus4/between.pl +62 -0
  202. package/lib/swipl/library/dialect/sicstus4/clpfd.pl +75 -0
  203. package/lib/swipl/library/dialect/sicstus4/file_systems.pl +413 -0
  204. package/lib/swipl/library/dialect/sicstus4/lists.pl +274 -0
  205. package/lib/swipl/library/dialect/sicstus4/ordsets.pl +54 -0
  206. package/lib/swipl/library/dialect/sicstus4/samsort.pl +86 -0
  207. package/lib/swipl/library/dialect/sicstus4/sets.pl +124 -0
  208. package/lib/swipl/library/dialect/sicstus4/sockets.pl +164 -0
  209. package/lib/swipl/library/dialect/sicstus4/system.pl +80 -0
  210. package/lib/swipl/library/dialect/sicstus4/terms.pl +89 -0
  211. package/lib/swipl/library/dialect/sicstus4/timeout.pl +43 -0
  212. package/lib/swipl/library/dialect/sicstus4/types.pl +103 -0
  213. package/lib/swipl/library/dialect/sicstus4.pl +200 -0
  214. package/lib/swipl/library/dialect/swi/syspred_options.pl +250 -0
  215. package/lib/swipl/library/dialect/xsb/README.md +20 -0
  216. package/lib/swipl/library/dialect/xsb/basics.pl +318 -0
  217. package/lib/swipl/library/dialect/xsb/consult.pl +87 -0
  218. package/lib/swipl/library/dialect/xsb/curr_sym.pl +57 -0
  219. package/lib/swipl/library/dialect/xsb/error_handler.pl +111 -0
  220. package/lib/swipl/library/dialect/xsb/gensym.pl +53 -0
  221. package/lib/swipl/library/dialect/xsb/gpp.pl +138 -0
  222. package/lib/swipl/library/dialect/xsb/intern.pl +48 -0
  223. package/lib/swipl/library/dialect/xsb/lists.pl +47 -0
  224. package/lib/swipl/library/dialect/xsb/machine.pl +295 -0
  225. package/lib/swipl/library/dialect/xsb/ordsets.pl +53 -0
  226. package/lib/swipl/library/dialect/xsb/setof.pl +54 -0
  227. package/lib/swipl/library/dialect/xsb/source.pl +308 -0
  228. package/lib/swipl/library/dialect/xsb/standard.pl +169 -0
  229. package/lib/swipl/library/dialect/xsb/storage.pl +70 -0
  230. package/lib/swipl/library/dialect/xsb/string.pl +76 -0
  231. package/lib/swipl/library/dialect/xsb/thread.pl +62 -0
  232. package/lib/swipl/library/dialect/xsb/timed_call.pl +158 -0
  233. package/lib/swipl/library/dialect/xsb.pl +688 -0
  234. package/lib/swipl/library/dialect/yap/README.TXT +8 -0
  235. package/lib/swipl/library/dialect/yap.pl +283 -0
  236. package/lib/swipl/library/dialect.pl +123 -0
  237. package/lib/swipl/library/dicts.pl +399 -0
  238. package/lib/swipl/library/dif.pl +426 -0
  239. package/lib/swipl/library/edinburgh.pl +138 -0
  240. package/lib/swipl/library/edit.pl +783 -0
  241. package/lib/swipl/library/error.pl +495 -0
  242. package/lib/swipl/library/exceptions.pl +231 -0
  243. package/lib/swipl/library/explain.pl +543 -0
  244. package/lib/swipl/library/ext/RDF/INDEX.pl +25 -0
  245. package/lib/swipl/library/ext/RDF/rdf.pl +450 -0
  246. package/lib/swipl/library/ext/RDF/rdf_parser.pl +649 -0
  247. package/lib/swipl/library/ext/RDF/rdf_triple.pl +448 -0
  248. package/lib/swipl/library/ext/RDF/rdf_write.pl +701 -0
  249. package/lib/swipl/library/ext/RDF/rewrite_term.pl +177 -0
  250. package/lib/swipl/library/ext/chr/chr/a_star.pl +80 -0
  251. package/lib/swipl/library/ext/chr/chr/binomialheap.pl +142 -0
  252. package/lib/swipl/library/ext/chr/chr/builtins.pl +629 -0
  253. package/lib/swipl/library/ext/chr/chr/chr_compiler_errors.pl +179 -0
  254. package/lib/swipl/library/ext/chr/chr/chr_compiler_options.pl +382 -0
  255. package/lib/swipl/library/ext/chr/chr/chr_compiler_utility.pl +338 -0
  256. package/lib/swipl/library/ext/chr/chr/chr_debug.pl +59 -0
  257. package/lib/swipl/library/ext/chr/chr/chr_hashtable_store.pl +425 -0
  258. package/lib/swipl/library/ext/chr/chr/chr_integertable_store.pl +139 -0
  259. package/lib/swipl/library/ext/chr/chr/chr_messages.pl +176 -0
  260. package/lib/swipl/library/ext/chr/chr/chr_op.pl +53 -0
  261. package/lib/swipl/library/ext/chr/chr/chr_runtime.pl +1016 -0
  262. package/lib/swipl/library/ext/chr/chr/chr_translate.pl +25424 -0
  263. package/lib/swipl/library/ext/chr/chr/clean_code.pl +252 -0
  264. package/lib/swipl/library/ext/chr/chr/find.pl +78 -0
  265. package/lib/swipl/library/ext/chr/chr/guard_entailment.pl +19432 -0
  266. package/lib/swipl/library/ext/chr/chr/listmap.pl +108 -0
  267. package/lib/swipl/library/ext/chr/chr/pairlist.pl +78 -0
  268. package/lib/swipl/library/ext/chr/chr.pl +686 -0
  269. package/lib/swipl/library/ext/clib/INDEX.pl +158 -0
  270. package/lib/swipl/library/ext/clib/cgi.pl +86 -0
  271. package/lib/swipl/library/ext/clib/crypt.pl +44 -0
  272. package/lib/swipl/library/ext/clib/filesex.pl +644 -0
  273. package/lib/swipl/library/ext/clib/hash_stream.pl +119 -0
  274. package/lib/swipl/library/ext/clib/mallocinfo.pl +138 -0
  275. package/lib/swipl/library/ext/clib/md5.pl +68 -0
  276. package/lib/swipl/library/ext/clib/memfile.pl +61 -0
  277. package/lib/swipl/library/ext/clib/process.pl +573 -0
  278. package/lib/swipl/library/ext/clib/prolog_server.pl +157 -0
  279. package/lib/swipl/library/ext/clib/prolog_stream.pl +80 -0
  280. package/lib/swipl/library/ext/clib/rlimit.pl +54 -0
  281. package/lib/swipl/library/ext/clib/sched.pl +85 -0
  282. package/lib/swipl/library/ext/clib/sha.pl +162 -0
  283. package/lib/swipl/library/ext/clib/socket.pl +1102 -0
  284. package/lib/swipl/library/ext/clib/streaminfo.pl +103 -0
  285. package/lib/swipl/library/ext/clib/streampool.pl +136 -0
  286. package/lib/swipl/library/ext/clib/syslog.pl +180 -0
  287. package/lib/swipl/library/ext/clib/time.pl +194 -0
  288. package/lib/swipl/library/ext/clib/udp_broadcast.pl +975 -0
  289. package/lib/swipl/library/ext/clib/uid.pl +220 -0
  290. package/lib/swipl/library/ext/clib/unix.pl +317 -0
  291. package/lib/swipl/library/ext/clib/uri.pl +530 -0
  292. package/lib/swipl/library/ext/clib/uuid.pl +207 -0
  293. package/lib/swipl/library/ext/http/http/INDEX.pl +266 -0
  294. package/lib/swipl/library/ext/http/http/README.md +34 -0
  295. package/lib/swipl/library/ext/http/http/ax.pl +189 -0
  296. package/lib/swipl/library/ext/http/http/dcg_basics.pl +49 -0
  297. package/lib/swipl/library/ext/http/http/graphql.pl +1367 -0
  298. package/lib/swipl/library/ext/http/http/html_decl.pl +416 -0
  299. package/lib/swipl/library/ext/http/http/html_head.pl +654 -0
  300. package/lib/swipl/library/ext/http/http/html_quasiquotations.pl +120 -0
  301. package/lib/swipl/library/ext/http/http/html_write.pl +1425 -0
  302. package/lib/swipl/library/ext/http/http/htmx.pl +139 -0
  303. package/lib/swipl/library/ext/http/http/http_authenticate.pl +364 -0
  304. package/lib/swipl/library/ext/http/http/http_client.pl +412 -0
  305. package/lib/swipl/library/ext/http/http/http_cookie.pl +245 -0
  306. package/lib/swipl/library/ext/http/http/http_cors.pl +176 -0
  307. package/lib/swipl/library/ext/http/http/http_digest.pl +820 -0
  308. package/lib/swipl/library/ext/http/http/http_dirindex.pl +296 -0
  309. package/lib/swipl/library/ext/http/http/http_dispatch.pl +1552 -0
  310. package/lib/swipl/library/ext/http/http/http_dyn_workers.pl +214 -0
  311. package/lib/swipl/library/ext/http/http/http_error.pl +126 -0
  312. package/lib/swipl/library/ext/http/http/http_exception.pl +225 -0
  313. package/lib/swipl/library/ext/http/http/http_files.pl +163 -0
  314. package/lib/swipl/library/ext/http/http/http_header.pl +2820 -0
  315. package/lib/swipl/library/ext/http/http/http_hook.pl +106 -0
  316. package/lib/swipl/library/ext/http/http/http_host.pl +204 -0
  317. package/lib/swipl/library/ext/http/http/http_load.pl +113 -0
  318. package/lib/swipl/library/ext/http/http/http_log.pl +738 -0
  319. package/lib/swipl/library/ext/http/http/http_multipart_plugin.pl +232 -0
  320. package/lib/swipl/library/ext/http/http/http_open.pl +1821 -0
  321. package/lib/swipl/library/ext/http/http/http_openid.pl +1561 -0
  322. package/lib/swipl/library/ext/http/http/http_parameters.pl +504 -0
  323. package/lib/swipl/library/ext/http/http/http_path.pl +380 -0
  324. package/lib/swipl/library/ext/http/http/http_proxy.pl +80 -0
  325. package/lib/swipl/library/ext/http/http/http_pwp.pl +351 -0
  326. package/lib/swipl/library/ext/http/http/http_redis_plugin.pl +332 -0
  327. package/lib/swipl/library/ext/http/http/http_server.pl +105 -0
  328. package/lib/swipl/library/ext/http/http/http_server_files.pl +126 -0
  329. package/lib/swipl/library/ext/http/http/http_server_health.pl +186 -0
  330. package/lib/swipl/library/ext/http/http/http_session.pl +1040 -0
  331. package/lib/swipl/library/ext/http/http/http_sgml_plugin.pl +137 -0
  332. package/lib/swipl/library/ext/http/http/http_stream.pl +376 -0
  333. package/lib/swipl/library/ext/http/http/http_unix_daemon.pl +989 -0
  334. package/lib/swipl/library/ext/http/http/http_wrapper.pl +559 -0
  335. package/lib/swipl/library/ext/http/http/hub.pl +600 -0
  336. package/lib/swipl/library/ext/http/http/js_write.pl +461 -0
  337. package/lib/swipl/library/ext/http/http/mimepack.pl +224 -0
  338. package/lib/swipl/library/ext/http/http/mimetype.pl +276 -0
  339. package/lib/swipl/library/ext/http/http/term_html.pl +797 -0
  340. package/lib/swipl/library/ext/http/http/thread_httpd.pl +1181 -0
  341. package/lib/swipl/library/ext/http/http/web/css/dirindex.css +24 -0
  342. package/lib/swipl/library/ext/http/http/web/css/openid.css +57 -0
  343. package/lib/swipl/library/ext/http/http/web/icons/back.png +0 -0
  344. package/lib/swipl/library/ext/http/http/web/icons/c.png +0 -0
  345. package/lib/swipl/library/ext/http/http/web/icons/compressed.png +0 -0
  346. package/lib/swipl/library/ext/http/http/web/icons/folder.png +0 -0
  347. package/lib/swipl/library/ext/http/http/web/icons/generic.png +0 -0
  348. package/lib/swipl/library/ext/http/http/web/icons/layout.png +0 -0
  349. package/lib/swipl/library/ext/http/http/web/icons/openid-logo-square.png +0 -0
  350. package/lib/swipl/library/ext/http/http/web/icons/openid-logo-tiny.png +0 -0
  351. package/lib/swipl/library/ext/http/http/websocket.pl +729 -0
  352. package/lib/swipl/library/ext/http/http/yadis.pl +205 -0
  353. package/lib/swipl/library/ext/json/INDEX.pl +36 -0
  354. package/lib/swipl/library/ext/json/http/INDEX.pl +16 -0
  355. package/lib/swipl/library/ext/json/http/http_json.pl +490 -0
  356. package/lib/swipl/library/ext/json/http/js_grammar.pl +53 -0
  357. package/lib/swipl/library/ext/json/http/json.pl +48 -0
  358. package/lib/swipl/library/ext/json/http/json_convert.pl +48 -0
  359. package/lib/swipl/library/ext/json/json.pl +1215 -0
  360. package/lib/swipl/library/ext/json/json_convert.pl +681 -0
  361. package/lib/swipl/library/ext/json/json_grammar.pl +349 -0
  362. package/lib/swipl/library/ext/json/json_rpc_client.pl +423 -0
  363. package/lib/swipl/library/ext/json/json_rpc_common.pl +104 -0
  364. package/lib/swipl/library/ext/json/json_rpc_server.pl +489 -0
  365. package/lib/swipl/library/ext/json/json_schema.pl +2111 -0
  366. package/lib/swipl/library/ext/nlp/INDEX.pl +15 -0
  367. package/lib/swipl/library/ext/nlp/double_metaphone.pl +86 -0
  368. package/lib/swipl/library/ext/nlp/isub.pl +162 -0
  369. package/lib/swipl/library/ext/nlp/porter_stem.pl +50 -0
  370. package/lib/swipl/library/ext/nlp/snowball.pl +97 -0
  371. package/lib/swipl/library/ext/pcre/INDEX.pl +17 -0
  372. package/lib/swipl/library/ext/pcre/pcre.pl +974 -0
  373. package/lib/swipl/library/ext/plunit/INDEX.pl +20 -0
  374. package/lib/swipl/library/ext/plunit/plunit.pl +2631 -0
  375. package/lib/swipl/library/ext/plunit/test_wizard.pl +249 -0
  376. package/lib/swipl/library/ext/semweb/semweb/INDEX.pl +288 -0
  377. package/lib/swipl/library/ext/semweb/semweb/rdf11.pl +2106 -0
  378. package/lib/swipl/library/ext/semweb/semweb/rdf11_containers.pl +299 -0
  379. package/lib/swipl/library/ext/semweb/semweb/rdf_cache.pl +278 -0
  380. package/lib/swipl/library/ext/semweb/semweb/rdf_compare.pl +132 -0
  381. package/lib/swipl/library/ext/semweb/semweb/rdf_db.pl +3468 -0
  382. package/lib/swipl/library/ext/semweb/semweb/rdf_edit.pl +1145 -0
  383. package/lib/swipl/library/ext/semweb/semweb/rdf_http_plugin.pl +274 -0
  384. package/lib/swipl/library/ext/semweb/semweb/rdf_library.pl +1021 -0
  385. package/lib/swipl/library/ext/semweb/semweb/rdf_litindex.pl +1035 -0
  386. package/lib/swipl/library/ext/semweb/semweb/rdf_ntriples.pl +422 -0
  387. package/lib/swipl/library/ext/semweb/semweb/rdf_persistency.pl +1576 -0
  388. package/lib/swipl/library/ext/semweb/semweb/rdf_portray.pl +182 -0
  389. package/lib/swipl/library/ext/semweb/semweb/rdf_prefixes.pl +681 -0
  390. package/lib/swipl/library/ext/semweb/semweb/rdf_sandbox.pl +153 -0
  391. package/lib/swipl/library/ext/semweb/semweb/rdf_turtle.pl +54 -0
  392. package/lib/swipl/library/ext/semweb/semweb/rdf_turtle_write.pl +1587 -0
  393. package/lib/swipl/library/ext/semweb/semweb/rdf_zlib_plugin.pl +52 -0
  394. package/lib/swipl/library/ext/semweb/semweb/rdfa.pl +1510 -0
  395. package/lib/swipl/library/ext/semweb/semweb/rdfs.pl +475 -0
  396. package/lib/swipl/library/ext/semweb/semweb/sparql_client.pl +643 -0
  397. package/lib/swipl/library/ext/semweb/semweb/turtle.pl +455 -0
  398. package/lib/swipl/library/ext/sgml/DTD/HTML4.dcl +88 -0
  399. package/lib/swipl/library/ext/sgml/DTD/HTML4.dtd +1092 -0
  400. package/lib/swipl/library/ext/sgml/DTD/HTML4.soc +6 -0
  401. package/lib/swipl/library/ext/sgml/DTD/HTML5.dtd +906 -0
  402. package/lib/swipl/library/ext/sgml/DTD/HTMLlat1.ent +195 -0
  403. package/lib/swipl/library/ext/sgml/DTD/HTMLspec.ent +77 -0
  404. package/lib/swipl/library/ext/sgml/DTD/HTMLsym.ent +241 -0
  405. package/lib/swipl/library/ext/sgml/INDEX.pl +64 -0
  406. package/lib/swipl/library/ext/sgml/c14n2.pl +203 -0
  407. package/lib/swipl/library/ext/sgml/iso_639.pl +631 -0
  408. package/lib/swipl/library/ext/sgml/pwp.pl +705 -0
  409. package/lib/swipl/library/ext/sgml/sgml.pl +815 -0
  410. package/lib/swipl/library/ext/sgml/sgml_write.pl +1003 -0
  411. package/lib/swipl/library/ext/sgml/xpath.pl +620 -0
  412. package/lib/swipl/library/ext/sgml/xsdp_types.pl +232 -0
  413. package/lib/swipl/library/ext/ssl/INDEX.pl +60 -0
  414. package/lib/swipl/library/ext/ssl/crypto.pl +1015 -0
  415. package/lib/swipl/library/ext/ssl/http/INDEX.pl +5 -0
  416. package/lib/swipl/library/ext/ssl/http/http_ssl_plugin.pl +296 -0
  417. package/lib/swipl/library/ext/ssl/saml.pl +609 -0
  418. package/lib/swipl/library/ext/ssl/ssl.pl +647 -0
  419. package/lib/swipl/library/ext/ssl/xmldsig.pl +391 -0
  420. package/lib/swipl/library/ext/ssl/xmlenc.pl +354 -0
  421. package/lib/swipl/library/ext/zlib/INDEX.pl +8 -0
  422. package/lib/swipl/library/ext/zlib/zlib.pl +112 -0
  423. package/lib/swipl/library/fastrw.pl +105 -0
  424. package/lib/swipl/library/files.pl +80 -0
  425. package/lib/swipl/library/gensym.pl +111 -0
  426. package/lib/swipl/library/git.pl +1027 -0
  427. package/lib/swipl/library/hashtable.pl +365 -0
  428. package/lib/swipl/library/heaps.pl +252 -0
  429. package/lib/swipl/library/hotfix.pl +239 -0
  430. package/lib/swipl/library/http/jquery.pl +103 -0
  431. package/lib/swipl/library/http/web/js/jquery-3.6.0.min.js +2 -0
  432. package/lib/swipl/library/increval.pl +217 -0
  433. package/lib/swipl/library/intercept.pl +263 -0
  434. package/lib/swipl/library/iostream.pl +237 -0
  435. package/lib/swipl/library/iri_scheme/file.pl +70 -0
  436. package/lib/swipl/library/lazy_lists.pl +481 -0
  437. package/lib/swipl/library/listing.pl +1362 -0
  438. package/lib/swipl/library/lists.pl +860 -0
  439. package/lib/swipl/library/lynx/INDEX.pl +14 -0
  440. package/lib/swipl/library/lynx/format.pl +380 -0
  441. package/lib/swipl/library/lynx/html_style.pl +129 -0
  442. package/lib/swipl/library/lynx/html_text.pl +865 -0
  443. package/lib/swipl/library/lynx/pldoc_style.pl +87 -0
  444. package/lib/swipl/library/macros.pl +451 -0
  445. package/lib/swipl/library/main.pl +1200 -0
  446. package/lib/swipl/library/make.pl +197 -0
  447. package/lib/swipl/library/modules.pl +129 -0
  448. package/lib/swipl/library/nb_rbtrees.pl +267 -0
  449. package/lib/swipl/library/nb_set.pl +203 -0
  450. package/lib/swipl/library/obfuscate.pl +115 -0
  451. package/lib/swipl/library/occurs.pl +241 -0
  452. package/lib/swipl/library/operators.pl +182 -0
  453. package/lib/swipl/library/option.pl +388 -0
  454. package/lib/swipl/library/optparse.pl +966 -0
  455. package/lib/swipl/library/ordsets.pl +518 -0
  456. package/lib/swipl/library/oset.pl +160 -0
  457. package/lib/swipl/library/pairs.pl +187 -0
  458. package/lib/swipl/library/persistency.pl +713 -0
  459. package/lib/swipl/library/pio.pl +47 -0
  460. package/lib/swipl/library/portray_text.pl +277 -0
  461. package/lib/swipl/library/pprint.pl +940 -0
  462. package/lib/swipl/library/predicate_options.pl +975 -0
  463. package/lib/swipl/library/prolog_autoload.pl +233 -0
  464. package/lib/swipl/library/prolog_breakpoints.pl +396 -0
  465. package/lib/swipl/library/prolog_clause.pl +1104 -0
  466. package/lib/swipl/library/prolog_code.pl +416 -0
  467. package/lib/swipl/library/prolog_codewalk.pl +1248 -0
  468. package/lib/swipl/library/prolog_colour.pl +3301 -0
  469. package/lib/swipl/library/prolog_colour.qlf +0 -0
  470. package/lib/swipl/library/prolog_config.pl +154 -0
  471. package/lib/swipl/library/prolog_coverage.pl +1333 -0
  472. package/lib/swipl/library/prolog_debug.pl +404 -0
  473. package/lib/swipl/library/prolog_deps.pl +675 -0
  474. package/lib/swipl/library/prolog_evaluable.pl +234 -0
  475. package/lib/swipl/library/prolog_format.pl +219 -0
  476. package/lib/swipl/library/prolog_history.pl +161 -0
  477. package/lib/swipl/library/prolog_jiti.pl +333 -0
  478. package/lib/swipl/library/prolog_locale.pl +61 -0
  479. package/lib/swipl/library/prolog_metainference.pl +307 -0
  480. package/lib/swipl/library/prolog_pack.pl +3906 -0
  481. package/lib/swipl/library/prolog_profile.pl +346 -0
  482. package/lib/swipl/library/prolog_qlfmake.pl +533 -0
  483. package/lib/swipl/library/prolog_source.pl +1188 -0
  484. package/lib/swipl/library/prolog_stack.pl +794 -0
  485. package/lib/swipl/library/prolog_trace.pl +365 -0
  486. package/lib/swipl/library/prolog_versions.pl +347 -0
  487. package/lib/swipl/library/prolog_wrap.pl +164 -0
  488. package/lib/swipl/library/prolog_xref.pl +3090 -0
  489. package/lib/swipl/library/prolog_xref.qlf +0 -0
  490. package/lib/swipl/library/pure_input.pl +266 -0
  491. package/lib/swipl/library/qpforeign.pl +695 -0
  492. package/lib/swipl/library/qsave.pl +1516 -0
  493. package/lib/swipl/library/quasi_quotations.pl +300 -0
  494. package/lib/swipl/library/quintus.pl +437 -0
  495. package/lib/swipl/library/random.pl +459 -0
  496. package/lib/swipl/library/rbtrees.pl +1153 -0
  497. package/lib/swipl/library/readln.pl +256 -0
  498. package/lib/swipl/library/readutil.pl +304 -0
  499. package/lib/swipl/library/record.pl +544 -0
  500. package/lib/swipl/library/rwlocks.pl +172 -0
  501. package/lib/swipl/library/sandbox.pl +1384 -0
  502. package/lib/swipl/library/semweb/dc.rdfs +198 -0
  503. package/lib/swipl/library/semweb/eor.rdfs +95 -0
  504. package/lib/swipl/library/semweb/owl.owl +287 -0
  505. package/lib/swipl/library/semweb/rdf_library.ttl +90 -0
  506. package/lib/swipl/library/semweb/rdfs.rdfs +251 -0
  507. package/lib/swipl/library/settings.pl +755 -0
  508. package/lib/swipl/library/shell.pl +462 -0
  509. package/lib/swipl/library/shlib.pl +670 -0
  510. package/lib/swipl/library/solution_sequences.pl +439 -0
  511. package/lib/swipl/library/sort.pl +119 -0
  512. package/lib/swipl/library/statistics.pl +541 -0
  513. package/lib/swipl/library/streams.pl +118 -0
  514. package/lib/swipl/library/strings.pl +469 -0
  515. package/lib/swipl/library/system.pl +95 -0
  516. package/lib/swipl/library/tables.pl +381 -0
  517. package/lib/swipl/library/tableutil.pl +771 -0
  518. package/lib/swipl/library/tabling.pl +42 -0
  519. package/lib/swipl/library/terms.pl +457 -0
  520. package/lib/swipl/library/theme/auto.pl +61 -0
  521. package/lib/swipl/library/theme/dark.pl +455 -0
  522. package/lib/swipl/library/theme/light.pl +45 -0
  523. package/lib/swipl/library/thread.pl +810 -0
  524. package/lib/swipl/library/thread_pool.pl +508 -0
  525. package/lib/swipl/library/threadutil.pl +574 -0
  526. package/lib/swipl/library/tty.pl +316 -0
  527. package/lib/swipl/library/ugraphs.pl +644 -0
  528. package/lib/swipl/library/unicode/INDEX.pl +6 -0
  529. package/lib/swipl/library/unicode/blocks.pl +414 -0
  530. package/lib/swipl/library/url.pl +1129 -0
  531. package/lib/swipl/library/utf8.pl +145 -0
  532. package/lib/swipl/library/varnumbers.pl +221 -0
  533. package/lib/swipl/library/vm.pl +251 -0
  534. package/lib/swipl/library/wfs.pl +205 -0
  535. package/lib/swipl/library/when.pl +263 -0
  536. package/lib/swipl/library/writef.pl +278 -0
  537. package/lib/swipl/library/www_browser.pl +251 -0
  538. package/lib/swipl/library/yall.pl +574 -0
  539. package/lib/swipl/library/zip.pl +211 -0
  540. package/lib/swipl/swipl.home +1 -0
  541. package/lib/vendor/libcrypto.so.3 +0 -0
  542. package/lib/vendor/libpcre2-8.so.0 +0 -0
  543. package/lib/vendor/libssl.so.3 +0 -0
  544. package/lib/vendor/libz.so.1 +0 -0
  545. package/licenses/OpenSSL-LICENSE.txt +177 -0
  546. package/licenses/PCRE2-COPYING +5 -0
  547. package/licenses/README.md +12 -0
  548. package/licenses/SWI-Prolog-LICENSE +41 -0
  549. package/licenses/zlib-LICENSE +22 -0
  550. package/package.json +27 -0
@@ -0,0 +1,441 @@
1
+ /* Part of SWI-Prolog
2
+
3
+ Author: Jan Wielemaker
4
+ E-mail: J.Wielemaker@vu.nl
5
+ WWW: http://www.swi-prolog.org
6
+ Copyright (c) 2007-2023, University of Amsterdam
7
+ VU University Amsterdam
8
+ SWI-Prolog Solutions b.v.
9
+ All rights reserved.
10
+
11
+ Redistribution and use in source and binary forms, with or without
12
+ modification, are permitted provided that the following conditions
13
+ are met:
14
+
15
+ 1. Redistributions of source code must retain the above copyright
16
+ notice, this list of conditions and the following disclaimer.
17
+
18
+ 2. Redistributions in binary form must reproduce the above copyright
19
+ notice, this list of conditions and the following disclaimer in
20
+ the documentation and/or other materials provided with the
21
+ distribution.
22
+
23
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
26
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
27
+ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
28
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
29
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
31
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
33
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34
+ POSSIBILITY OF SUCH DAMAGE.
35
+ */
36
+
37
+ :- module(base64,
38
+ [ base64_encoded/3, % ?Plain, ?Encoded, +Options
39
+ base64_encoded//2, % ?Plain, +Options
40
+
41
+ base64/2, % ?PlainText, ?Encoded
42
+ base64//1, % ?PlainText
43
+
44
+ base64url/2, % ?PlainText, ?Encoded
45
+ base64url//1 % ?PlainText
46
+ ]).
47
+ :- autoload(library(error),
48
+ [instantiation_error/1,must_be/2,syntax_error/1]).
49
+ :- autoload(library(option),[option/3]).
50
+
51
+ :- encoding(utf8).
52
+
53
+ /** <module> Base64 encoding and decoding
54
+
55
+ Prolog-based base64 encoding using DCG rules. Encoding according to
56
+ rfc2045. For example:
57
+
58
+ ==
59
+ 1 ?- base64('Hello World', X).
60
+ X = 'SGVsbG8gV29ybGQ='.
61
+
62
+ 2 ?- base64(H, 'SGVsbG8gV29ybGQ=').
63
+ H = 'Hello World'.
64
+ ==
65
+
66
+ The Base64URL encoding provides a URL and file name friendly alternative
67
+ to base64. Base64URL encoded strings do not contain white space.
68
+
69
+ @tbd Stream I/O
70
+ @tbd White-space introduction and parsing
71
+ @tbd Encoding support (notably UTF-8)
72
+ @bug Base64 only works with _bytes_. The grammars do not check
73
+ the input to be in the range 0..255.
74
+ */
75
+
76
+ %! base64_encoded(+Plain, -Encoded, +Options) is det.
77
+ %! base64_encoded(-Plain, +Encoded, +Options) is det.
78
+ %
79
+ % General the base64 encoding and decoding. This predicate subsumes
80
+ % base64/2 and base64url/2, providing control over padding, the
81
+ % characters used for encoding and the output type. Options:
82
+ %
83
+ % - charset(+Charset)
84
+ % Define the encoding character set to use. The (default) `classic`
85
+ % uses the classical rfc2045 characters. The value `url` uses URL
86
+ % and file name friendly characters. See base64url/2. The value
87
+ % `openbsd` uses the OpenBSD password-file alphabet.
88
+ % - padding(+Boolean)
89
+ % If `true` (default), the output is padded with `=` characters.
90
+ % - as(+Type)
91
+ % Defines the type of the output. One of `string` (default) or
92
+ % `atom`.
93
+ % - encoding(+Encoding)
94
+ % Encoding to use for translation between (Unicode) text and
95
+ % _bytes_ (Base64 is an encoding for bytes). Default is `utf8`.
96
+ %
97
+ % @arg Plain is an atom or string containing the unencoded (plain)
98
+ % text.
99
+ % @arg Encoded is an atom or string containing the base64 encoded
100
+ % version of Plain.
101
+
102
+ base64_encoded(Plain, Encoded, Options) :-
103
+ option(charset(CharSet), Options, classic),
104
+ option(padding(Padding), Options, true),
105
+ option(as(As), Options, string),
106
+ option(encoding(Enc), Options, utf8),
107
+ ( nonvar(Plain)
108
+ -> string_bytes(Plain, PlainBytes, Enc),
109
+ phrase(base64(Padding, PlainBytes, CharSet), EncCodes),
110
+ as(As, Encoded, EncCodes, iso_latin_1)
111
+ ; nonvar(Encoded)
112
+ -> string_bytes(Encoded, EncCodes, iso_latin_1),
113
+ phrase(base64(Padding, PlainBytes, CharSet), EncCodes),
114
+ as(As, Plain, PlainBytes, Enc)
115
+ ; instantiation_error(base64(Plain, Encoded))
116
+ ).
117
+
118
+ as(atom, Atom, Codes, Enc) :-
119
+ !,
120
+ string_bytes(String, Codes, Enc),
121
+ atom_string(Atom, String).
122
+ as(string, String, Codes, Enc) :-
123
+ !,
124
+ string_bytes(String, Codes, Enc).
125
+ as(As, _, _, _) :-
126
+ must_be(oneof([atom,string]), As).
127
+
128
+ %! base64(+Plain, -Encoded) is det.
129
+ %! base64(-Plain, +Encoded) is det.
130
+ %
131
+ % Equivalent to base64_encoded/3 using the options as(atom) and
132
+ % encoding(iso_latin_1).
133
+ %
134
+ % @deprecated New code should use base64_encoded/3. Notably the
135
+ % `iso_latin_1` should be `utf8` in most today's applications.
136
+
137
+ base64(Plain, Encoded) :-
138
+ base64_encoded(Plain, Encoded, [ as(atom), encoding(iso_latin_1) ]).
139
+
140
+ %! base64url(+Plain, -Encoded) is det.
141
+ %! base64url(-Plain, +Encoded) is det.
142
+ %
143
+ % Translates between plaintext and base64url encoded atom or
144
+ % string. Base64URL encoded values can safely be used as URLs and
145
+ % file names. The use "-" instead of "+", "_" instead of "/" and
146
+ % do not use padding. This implies that the encoded value cannot
147
+ % be embedded inside a longer string.
148
+ %
149
+ % Equivalent to base64_encoded/3 using the options as(atom),
150
+ % encoding(utf8) and charset(url).
151
+
152
+ base64url(Plain, Encoded) :-
153
+ base64_encoded(Plain, Encoded,
154
+ [ as(atom),
155
+ encoding(utf8),
156
+ charset(url)
157
+ ]).
158
+
159
+ %! base64_encoded(+PlainText, +Options)// is det.
160
+ %! base64_encoded(-PlainText, +Options)// is det.
161
+
162
+ base64_encoded(PlainText, Options) -->
163
+ { option(charset(CharSet), Options, classic),
164
+ option(padding(Padding), Options, true)
165
+ },
166
+ base64(Padding, PlainText, CharSet).
167
+
168
+
169
+ %! base64(+PlainText)// is det.
170
+ %! base64(-PlainText)// is det.
171
+ %
172
+ % Encode/decode list of character codes using _base64_. See also
173
+ % base64/2.
174
+
175
+ base64(PlainText) -->
176
+ base64(true, PlainText, classic).
177
+
178
+ %! base64url(+PlainText)// is det.
179
+ %! base64url(-PlainText)// is det.
180
+ %
181
+ % Encode/decode list of character codes using Base64URL. See also
182
+ % base64url/2.
183
+
184
+ base64url(PlainText) -->
185
+ base64(false, PlainText, url).
186
+
187
+ base64(Padded, Input, Charset) -->
188
+ { nonvar(Input) },
189
+ !,
190
+ encode(Padded, Input, Charset).
191
+ base64(Padded, Output, Charset) -->
192
+ decode(Padded, Output, Charset).
193
+
194
+ /*******************************
195
+ * ENCODING *
196
+ *******************************/
197
+
198
+ %! encode(+Padded, +PlainText, +Charset)//
199
+
200
+ encode(Padded, [I0, I1, I2|Rest], Charset) -->
201
+ !,
202
+ [O0, O1, O2, O3],
203
+ { A is (I0<<16)+(I1<<8)+I2,
204
+ O00 is (A>>18) /\ 0x3f,
205
+ O01 is (A>>12) /\ 0x3f,
206
+ O02 is (A>>6) /\ 0x3f,
207
+ O03 is A /\ 0x3f,
208
+ base64_char(Charset, O00, O0),
209
+ base64_char(Charset, O01, O1),
210
+ base64_char(Charset, O02, O2),
211
+ base64_char(Charset, O03, O3)
212
+ },
213
+ encode(Padded, Rest, Charset).
214
+ encode(true, [I0, I1], Charset) -->
215
+ !,
216
+ [O0, O1, O2, 0'=],
217
+ { A is (I0<<16)+(I1<<8),
218
+ O00 is (A>>18) /\ 0x3f,
219
+ O01 is (A>>12) /\ 0x3f,
220
+ O02 is (A>>6) /\ 0x3f,
221
+ base64_char(Charset, O00, O0),
222
+ base64_char(Charset, O01, O1),
223
+ base64_char(Charset, O02, O2)
224
+ }.
225
+ encode(true, [I0], Charset) -->
226
+ !,
227
+ [O0, O1, 0'=, 0'=],
228
+ { A is (I0<<16),
229
+ O00 is (A>>18) /\ 0x3f,
230
+ O01 is (A>>12) /\ 0x3f,
231
+ base64_char(Charset, O00, O0),
232
+ base64_char(Charset, O01, O1)
233
+ }.
234
+ encode(false, [I0, I1], Charset) -->
235
+ !,
236
+ [O0, O1, O2],
237
+ { A is (I0<<16)+(I1<<8),
238
+ O00 is (A>>18) /\ 0x3f,
239
+ O01 is (A>>12) /\ 0x3f,
240
+ O02 is (A>>6) /\ 0x3f,
241
+ base64_char(Charset, O00, O0),
242
+ base64_char(Charset, O01, O1),
243
+ base64_char(Charset, O02, O2)
244
+ }.
245
+ encode(false, [I0], Charset) -->
246
+ !,
247
+ [O0, O1],
248
+ { A is (I0<<16),
249
+ O00 is (A>>18) /\ 0x3f,
250
+ O01 is (A>>12) /\ 0x3f,
251
+ base64_char(Charset, O00, O0),
252
+ base64_char(Charset, O01, O1)
253
+ }.
254
+ encode(_, [], _) -->
255
+ [].
256
+
257
+
258
+ /*******************************
259
+ * DECODE *
260
+ *******************************/
261
+
262
+ %! decode(+Padded, -PlainText, +Charset)//
263
+
264
+ decode(true, Text, Charset) -->
265
+ [C0, C1, C2, C3],
266
+ !,
267
+ { base64_char(Charset, B0, C0),
268
+ base64_char(Charset, B1, C1)
269
+ },
270
+ !,
271
+ { C3 == 0'=
272
+ -> ( C2 == 0'=
273
+ -> A is (B0<<18) + (B1<<12),
274
+ I0 is (A>>16) /\ 0xff,
275
+ Text = [I0|Rest]
276
+ ; base64_char(Charset, B2, C2)
277
+ -> A is (B0<<18) + (B1<<12) + (B2<<6),
278
+ I0 is (A>>16) /\ 0xff,
279
+ I1 is (A>>8) /\ 0xff,
280
+ Text = [I0,I1|Rest]
281
+ )
282
+ ; base64_char(Charset, B2, C2),
283
+ base64_char(Charset, B3, C3)
284
+ -> A is (B0<<18) + (B1<<12) + (B2<<6) + B3,
285
+ I0 is (A>>16) /\ 0xff,
286
+ I1 is (A>>8) /\ 0xff,
287
+ I2 is A /\ 0xff,
288
+ Text = [I0,I1,I2|Rest]
289
+ },
290
+ decode(true, Rest, Charset).
291
+ decode(false, Text, Charset) -->
292
+ [C0, C1, C2, C3],
293
+ !,
294
+ { base64_char(Charset, B0, C0),
295
+ base64_char(Charset, B1, C1),
296
+ base64_char(Charset, B2, C2),
297
+ base64_char(Charset, B3, C3),
298
+ A is (B0<<18) + (B1<<12) + (B2<<6) + B3,
299
+ I0 is (A>>16) /\ 0xff,
300
+ I1 is (A>>8) /\ 0xff,
301
+ I2 is A /\ 0xff,
302
+ Text = [I0,I1,I2|Rest]
303
+ },
304
+ decode(false, Rest, Charset).
305
+ decode(false, Text, Charset) -->
306
+ [C0, C1, C2],
307
+ !,
308
+ { base64_char(Charset, B0, C0),
309
+ base64_char(Charset, B1, C1),
310
+ base64_char(Charset, B2, C2),
311
+ A is (B0<<18) + (B1<<12) + (B2<<6),
312
+ I0 is (A>>16) /\ 0xff,
313
+ I1 is (A>>8) /\ 0xff,
314
+ Text = [I0,I1]
315
+ }.
316
+ decode(false, Text, Charset) -->
317
+ [C0, C1],
318
+ !,
319
+ { base64_char(Charset, B0, C0),
320
+ base64_char(Charset, B1, C1),
321
+ A is (B0<<18) + (B1<<12),
322
+ I0 is (A>>16) /\ 0xff,
323
+ Text = [I0]
324
+ }.
325
+ decode(_, [], _) -->
326
+ [].
327
+
328
+
329
+
330
+ /*******************************
331
+ * BASIC CHARACTER ENCODING *
332
+ *******************************/
333
+
334
+ base64_char(00, 0'A).
335
+ base64_char(01, 0'B).
336
+ base64_char(02, 0'C).
337
+ base64_char(03, 0'D).
338
+ base64_char(04, 0'E).
339
+ base64_char(05, 0'F).
340
+ base64_char(06, 0'G).
341
+ base64_char(07, 0'H).
342
+ base64_char(08, 0'I).
343
+ base64_char(09, 0'J).
344
+ base64_char(10, 0'K).
345
+ base64_char(11, 0'L).
346
+ base64_char(12, 0'M).
347
+ base64_char(13, 0'N).
348
+ base64_char(14, 0'O).
349
+ base64_char(15, 0'P).
350
+ base64_char(16, 0'Q).
351
+ base64_char(17, 0'R).
352
+ base64_char(18, 0'S).
353
+ base64_char(19, 0'T).
354
+ base64_char(20, 0'U).
355
+ base64_char(21, 0'V).
356
+ base64_char(22, 0'W).
357
+ base64_char(23, 0'X).
358
+ base64_char(24, 0'Y).
359
+ base64_char(25, 0'Z).
360
+ base64_char(26, 0'a).
361
+ base64_char(27, 0'b).
362
+ base64_char(28, 0'c).
363
+ base64_char(29, 0'd).
364
+ base64_char(30, 0'e).
365
+ base64_char(31, 0'f).
366
+ base64_char(32, 0'g).
367
+ base64_char(33, 0'h).
368
+ base64_char(34, 0'i).
369
+ base64_char(35, 0'j).
370
+ base64_char(36, 0'k).
371
+ base64_char(37, 0'l).
372
+ base64_char(38, 0'm).
373
+ base64_char(39, 0'n).
374
+ base64_char(40, 0'o).
375
+ base64_char(41, 0'p).
376
+ base64_char(42, 0'q).
377
+ base64_char(43, 0'r).
378
+ base64_char(44, 0's).
379
+ base64_char(45, 0't).
380
+ base64_char(46, 0'u).
381
+ base64_char(47, 0'v).
382
+ base64_char(48, 0'w).
383
+ base64_char(49, 0'x).
384
+ base64_char(50, 0'y).
385
+ base64_char(51, 0'z).
386
+ base64_char(52, 0'0).
387
+ base64_char(53, 0'1).
388
+ base64_char(54, 0'2).
389
+ base64_char(55, 0'3).
390
+ base64_char(56, 0'4).
391
+ base64_char(57, 0'5).
392
+ base64_char(58, 0'6).
393
+ base64_char(59, 0'7).
394
+ base64_char(60, 0'8).
395
+ base64_char(61, 0'9).
396
+ base64_char(62, 0'+).
397
+ base64_char(63, 0'/).
398
+
399
+ base64url_char_x(62, 0'-).
400
+ base64url_char_x(63, 0'_).
401
+
402
+ base64bsd_char_x(00, 0'.).
403
+ base64bsd_char_x(01, 0'/).
404
+
405
+ base64_char(classic, Value, Char) :-
406
+ ( base64_char(Value, Char)
407
+ -> true
408
+ ; syntax_error(base64_char(Value, Char))
409
+ ).
410
+ base64_char(url, Value, Char) :-
411
+ ( base64url_char_x(Value, Char)
412
+ -> true
413
+ ; base64_char(Value, Char)
414
+ -> true
415
+ ; syntax_error(base64_char(Value, Char))
416
+ ).
417
+ base64_char(openbsd, Value, Char) :-
418
+ ( base64bsd_char_x(Value, Char)
419
+ -> true
420
+ ; nonvar(Value)
421
+ -> Value0 is Value - 2,
422
+ ( base64_char(Value0, Char)
423
+ -> true
424
+ ; syntax_error(base64_char(Value, Char))
425
+ )
426
+ ; ( base64_char(Value0, Char)
427
+ -> Value0 < 62, Value is Value0 + 2
428
+ ; syntax_error(base64_char(Value, Char))
429
+ )
430
+ ).
431
+
432
+ /*******************************
433
+ * MESSAGES *
434
+ *******************************/
435
+
436
+ :- multifile prolog:error_message//1.
437
+
438
+ prolog:error_message(syntax_error(base64_char(_D,E))) -->
439
+ { nonvar(E) },
440
+ !,
441
+ [ 'Illegal Base64 character: "~c"'-[E] ].
@@ -0,0 +1,161 @@
1
+ /* Part of SWI-Prolog
2
+
3
+ Author: Jan Wielemaker
4
+ E-mail: J.Wielemaker@vu.nl
5
+ WWW: http://www.swi-prolog.org
6
+ Copyright (c) 2006-2013, University of Amsterdam
7
+ VU University Amsterdam
8
+ All rights reserved.
9
+
10
+ Redistribution and use in source and binary forms, with or without
11
+ modification, are permitted provided that the following conditions
12
+ are met:
13
+
14
+ 1. Redistributions of source code must retain the above copyright
15
+ notice, this list of conditions and the following disclaimer.
16
+
17
+ 2. Redistributions in binary form must reproduce the above copyright
18
+ notice, this list of conditions and the following disclaimer in
19
+ the documentation and/or other materials provided with the
20
+ distribution.
21
+
22
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
25
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
26
+ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
27
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
28
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
29
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
30
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
32
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33
+ POSSIBILITY OF SUCH DAMAGE.
34
+ */
35
+
36
+ :- module(broadcast,
37
+ [ listen/3, % Listener x Templ x Goal
38
+ listen/2, % Templ x Goal
39
+ unlisten/1, % Listener
40
+ unlisten/2, % Listener x Templ
41
+ unlisten/3, % Listener x Templ x Goal
42
+ listening/3, % Listener x Templ x Goal
43
+ broadcast/1, % Templ
44
+ broadcast_request/1 % Templ
45
+ ]).
46
+ :- meta_predicate
47
+ listen(+, 0),
48
+ listen(+, +, 0),
49
+ unlisten(+, +, 0).
50
+
51
+ :- dynamic
52
+ listener/4.
53
+
54
+ /** <module> Event service
55
+
56
+ Generic broadcasting service. Broadcasts are made using the predicate
57
+ broadcast(+Templ). All registered `listeners' will have their goal
58
+ called. Success or failure of this is ignored. The listener can not bind
59
+ arguments.
60
+
61
+ This library is particularly useful for disconnecting modules in an
62
+ application. Modules can broadcast events such as changes, anticipating
63
+ other modules need to react on such changes. For example, settings.pl
64
+ broadcasts changes to settings, allowing dependent modules to react on
65
+ changes:
66
+
67
+ ==
68
+ :- listen(setting(changed(http:workers, New)),
69
+ change_workers(New)).
70
+
71
+ change_workers(New) :-
72
+ setting(http:port, Port),
73
+ http_workers(Port, New).
74
+ ==
75
+ */
76
+
77
+ %! listen(+Listener, +Templ, :Goal) is det.
78
+ %! listen(+Templ, :Goal) is det.
79
+ %
80
+ % Open a channel for listening for events of the given `Templ'.
81
+
82
+ listen(Listener0, Templ, Module:Goal) :-
83
+ canonical_listener(Listener0, Listener),
84
+ assert_listener(Templ, Listener, Module, Goal).
85
+
86
+ listen(Templ, Module:Goal) :-
87
+ assert_listener(Templ, Module, Module, Goal).
88
+
89
+
90
+ %! unlisten(+Listener) is det.
91
+ %! unlisten(+Listener, +Templ) is det.
92
+ %! unlisten(+Listener, +Templ, :Goal) is det.
93
+ %
94
+ % Destroy a channel. All arguments may be variables, removing the
95
+ % all matching listening channels.
96
+
97
+ unlisten(Listener0) :-
98
+ canonical_listener(Listener0, Listener),
99
+ retractall(listener(_, Listener, _, _)).
100
+ unlisten(Listener0, Templ) :-
101
+ canonical_listener(Listener0, Listener),
102
+ retractall(listener(Templ, Listener, _, _)).
103
+ unlisten(Listener0, Templ, Module:Goal) :-
104
+ canonical_listener(Listener0, Listener),
105
+ retract_listener(Templ, Listener, Module, Goal).
106
+
107
+
108
+ %! listening(?Listener, ?Templ, ?Goal) is nondet.
109
+ %
110
+ % returns currently open channels
111
+
112
+ listening(Listener0, Templ, Module:Goal) :-
113
+ canonical_listener(Listener0, Listener),
114
+ listener(Templ, Listener, Module, Goal).
115
+
116
+
117
+ %! broadcast(+Templ) is det.
118
+ %
119
+ % Broadcast given event.
120
+
121
+ broadcast(Templ) :-
122
+ ( listener(Templ, _Listener, Module, Goal),
123
+ ( Module:Goal
124
+ -> fail
125
+ )
126
+ ; true
127
+ ).
128
+
129
+
130
+ %! broadcast_request(+Templ) is nondet.
131
+ %
132
+ % Broadcast given event till accepted. Succeeds then, fail if no
133
+ % listener accepts the call. Bindings made by the listener goal
134
+ % are maintained. May be used to make broadcast requests.
135
+
136
+ broadcast_request(Templ) :-
137
+ listener(Templ, _Listener, Module, Goal),
138
+ Module:Goal.
139
+
140
+
141
+ % {assert,retract}_listener(+Templ, +Listener, +Module, +Goal)
142
+ %
143
+ % Implemented as sub-predicate to ensure storage in this module.
144
+ % Second registration is ignored. Is this ok? It avoids problems
145
+ % using multiple registration of global listen channels.
146
+
147
+ assert_listener(Templ, Listener, Module, TheGoal) :-
148
+ listener(Templ, Listener, Module, TheGoal),
149
+ !.
150
+ assert_listener(Templ, Listener, Module, TheGoal) :-
151
+ asserta(listener(Templ, Listener, Module, TheGoal)).
152
+
153
+ retract_listener(Templ, Listener, Module, TheGoal) :-
154
+ retractall(listener(Templ, Listener, Module, TheGoal)).
155
+
156
+ %! canonical_listener(+Raw, -Canonical)
157
+ %
158
+ % Entry for later optimization.
159
+
160
+ canonical_listener(Templ, Templ).
161
+