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,530 @@
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) 2009-2025, VU University Amsterdam
7
+ SWI-Prolog Solutions b.v.
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(uri,
37
+ [ uri_components/2, % ?URI, ?Components
38
+ uri_data/3, % ?Field, +Components, ?Data
39
+ uri_data/4, % +Field, +Components, -Data, -New
40
+ uri_edit/3, % +Actions,+URI0,-URI
41
+
42
+ uri_normalized/2, % +URI, -NormalizedURI
43
+ iri_normalized/2, % +IRI, -NormalizedIRI
44
+ uri_normalized_iri/2, % +URI, -NormalizedIRI
45
+ uri_normalized/3, % +URI, +Base, -NormalizedURI
46
+ iri_normalized/3, % +IRI, +Base, -NormalizedIRI
47
+ uri_normalized_iri/3, % +URI, +Base, -NormalizedIRI
48
+ uri_resolve/3, % +URI, +Base, -AbsURI
49
+ uri_is_global/1, % +URI
50
+ uri_query_components/2, % ?QueryString, ?NameValueList
51
+ uri_authority_components/2, % ?Authority, ?Components
52
+ uri_authority_data/3, % ?Field, ?Components, ?Data
53
+ % Encoding
54
+ uri_encoded/3, % +Component, ?Value, ?Encoded
55
+ uri_file_name/2, % ?URI, ?Path
56
+ uri_iri/2 % ?URI, ?IRI
57
+ ]).
58
+ :- autoload(library(error), [domain_error/2]).
59
+ :- if(exists_source(library(socket))).
60
+ :- autoload(library(socket), [gethostname/1]).
61
+ :- endif.
62
+
63
+ :- use_foreign_library(foreign(uri)).
64
+
65
+ /** <module> Process URIs
66
+
67
+ This library provides high-performance C-based primitives for
68
+ manipulating URIs. We decided for a C-based implementation for the much
69
+ better performance on raw character manipulation. Notably, URI handling
70
+ primitives are used in time-critical parts of RDF processing. This
71
+ implementation is based on RFC-3986:
72
+
73
+ http://labs.apache.org/webarch/uri/rfc/rfc3986.html
74
+
75
+ The URI processing in this library is rather liberal. That is, we break
76
+ URIs according to the rules, but we do not validate that the components
77
+ are valid. Also, percent-decoding for IRIs is liberal. It first tries
78
+ UTF-8; then ISO-Latin-1 and finally accepts %-characters verbatim.
79
+
80
+ Earlier experience has shown that strict enforcement of the URI syntax
81
+ results in many errors that are accepted by many other web-document
82
+ processing tools.
83
+
84
+ This library provides explicit support for URN URIs.
85
+ */
86
+
87
+ %! uri_components(+URI, -Components) is det.
88
+ %! uri_components(-URI, +Components) is det.
89
+ %
90
+ % Break a URI into its 5 basic components according to the
91
+ % RFC-3986 regular expression:
92
+ %
93
+ % ```
94
+ % ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
95
+ % 12 3 4 5 6 7 8 9
96
+ % ```
97
+ %
98
+ % If the schema is `urn`, it is broken into its schema, NSI
99
+ % (_Namespace Identifier_) and NSS (_Namespace Specific String_).
100
+ %
101
+ % @arg Components is a one of
102
+ % - uri_components(Scheme, Authority, Path, Search, Fragment)
103
+ % If a URI is _parsed_, i.e., using mode (+,-), components that
104
+ % are not found are left _uninstantiated_ (variable). See
105
+ % uri_data/3 for accessing this structure.
106
+ % - urn_components(Scheme, NID, NSS, Search, Fragment)
107
+ % Here Scheme is always `urn`. Otherwise the same comments
108
+ % as for uri_components/5 apply.
109
+
110
+ %! uri_data(+Field, +Components, -Data) is semidet.
111
+ %! uri_data(-Field, +Components, -Data) is nondet.
112
+ %
113
+ % Provide access the `uri_components` or `urn_components` structure.
114
+ % The Field `scheme` is always present. Other fields depend on the
115
+ % scheme. The `urn` scheme provides `nid` and `nss`. Other schems
116
+ % provide `authority`, `path`, `search` and `fragment`
117
+
118
+ uri_data(Field, Components, Data), var(Field) =>
119
+ uri_data_(Field, Components, Data).
120
+ uri_data(Field, Components, Data), atom(Field) =>
121
+ uri_data_(Field, Components, Data),
122
+ !.
123
+
124
+ uri_data_(scheme, uri_components(S, _, _, _, _), S).
125
+ uri_data_(authority, uri_components(_, A, _, _, _), A).
126
+ uri_data_(path, uri_components(_, _, P, _, _), P).
127
+ uri_data_(search, uri_components(_, _, _, S, _), S).
128
+ uri_data_(fragment, uri_components(_, _, _, _, F), F).
129
+ uri_data_(scheme, urn_components(S, _, _, _, _), S).
130
+ uri_data_(nid, urn_components(_, I, _, _, _), I).
131
+ uri_data_(nss, urn_components(_, _, N, _, _), N).
132
+ uri_data_(search, urn_components(_, _, _, S, _), S).
133
+ uri_data_(fragment, urn_components(_, _, _, _, F), F).
134
+
135
+ %! uri_data(+Field, +Components, +Data, -NewComponents) is det.
136
+ %
137
+ % NewComponents is the same as Components with Field set to Data.
138
+ %
139
+ % @error domain_error(uri_field, Field) if Field is invalid.
140
+ % @error instantiation_error if Field or Components is unbound.
141
+
142
+ uri_data(scheme, uri_components(_, A, P, Q, F), S, New) =>
143
+ New = uri_components(S, A, P, Q, F).
144
+ uri_data(scheme, urn_components(_, I, N), S, New) =>
145
+ New = urn_components(S, I, N).
146
+ uri_data(authority, uri_components(S, _, P, Q, F), A, New) =>
147
+ New = uri_components(S, A, P, Q, F).
148
+ uri_data(path, uri_components(S, A, _, Q, F), P, New) =>
149
+ New = uri_components(S, A, P, Q, F).
150
+ uri_data(search, uri_components(S, A, P, _, F), Q, New) =>
151
+ New = uri_components(S, A, P, Q, F).
152
+ uri_data(search, urn_components(S, A, P, _, F), Q, New) =>
153
+ New = urn_components(S, A, P, Q, F).
154
+ uri_data(fragment, uri_components(S, A, P, Q, _), F, New) =>
155
+ New = uri_components(S, A, P, Q, F).
156
+ uri_data(fragment, urn_components(S, A, P, Q, _), F, New) =>
157
+ New = urn_components(S, A, P, Q, F).
158
+ uri_data(nid, urn_components(S, _, N), I, New) =>
159
+ New = urn_components(S, I, N).
160
+ uri_data(nss, urn_components(S, I, _), N, New) =>
161
+ New = urn_components(S, I, N).
162
+ uri_data(_, Components, _N, _New), var(Components) =>
163
+ instantiation_error(Components).
164
+ uri_data(Field, _, _N, _New) =>
165
+ domain_error(uri_field, Field).
166
+
167
+ %! uri_normalized(+URI, -NormalizedURI:atom) is det.
168
+ %
169
+ % NormalizedURI is the normalized form of URI. Normalization is
170
+ % syntactic and involves the following steps:
171
+ %
172
+ % * 6.2.2.1. Case Normalization
173
+ % * 6.2.2.2. Percent-Encoding Normalization
174
+ % * 6.2.2.3. Path Segment Normalization
175
+
176
+ %! iri_normalized(+IRI, -NormalizedIRI) is det.
177
+ %
178
+ % NormalizedIRI is the normalized form of IRI. Normalization is
179
+ % syntactic and involves the following steps:
180
+ %
181
+ % * 6.2.2.1. Case Normalization
182
+ % * 6.2.2.3. Path Segment Normalization
183
+ %
184
+ % @see This is similar to uri_normalized/2, but does not do
185
+ % normalization of %-escapes.
186
+
187
+ %! uri_normalized_iri(+URI, -NormalizedIRI) is det.
188
+ %
189
+ % As uri_normalized/2, but percent-encoding is translated into IRI
190
+ % Unicode characters. The translation is liberal: valid UTF-8
191
+ % sequences of %-encoded bytes are mapped to the Unicode
192
+ % character. Other %XX-sequences are mapped to the corresponding
193
+ % ISO-Latin-1 character and sole % characters are left untouched.
194
+ %
195
+ % @see uri_iri/2.
196
+
197
+
198
+ %! uri_is_global(+URI) is semidet.
199
+ %
200
+ % True if URI has a scheme. The semantics is the same as the code
201
+ % below, but the implementation is more efficient as it does not need
202
+ % to parse the other components, nor needs to bind the scheme. The
203
+ % condition to demand a scheme of more than one character is added to
204
+ % avoid confusion with DOS path names.
205
+ %
206
+ % ```
207
+ % uri_is_global(URI) :-
208
+ % uri_components(URI, Components),
209
+ % uri_data(scheme, Components, Scheme),
210
+ % nonvar(Scheme),
211
+ % atom_length(Scheme, Len),
212
+ % Len > 1.
213
+ % ```
214
+
215
+ %! uri_resolve(+URI, +Base, -GlobalURI:atom) is det.
216
+ %
217
+ % Resolve a possibly local URI relative to Base. This implements
218
+ % http://labs.apache.org/webarch/uri/rfc/rfc3986.html#relative-transform
219
+
220
+ %! uri_normalized(+URI, +Base, -NormalizedGlobalURI:atom) is det.
221
+ %
222
+ % NormalizedGlobalURI is the normalized global version of URI.
223
+ % Behaves as if defined by:
224
+ %
225
+ % ```
226
+ % uri_normalized(URI, Base, NormalizedGlobalURI) :-
227
+ % uri_resolve(URI, Base, GlobalURI),
228
+ % uri_normalized(GlobalURI, NormalizedGlobalURI).
229
+ % ```
230
+
231
+ %! iri_normalized(+IRI, +Base, -NormalizedGlobalIRI:atom) is det.
232
+ %
233
+ % NormalizedGlobalIRI is the normalized global version of IRI.
234
+ % This is similar to uri_normalized/3, but does not do %-escape
235
+ % normalization.
236
+
237
+ %! uri_normalized_iri(+URI, +Base, -NormalizedGlobalIRI:atom) is det.
238
+ %
239
+ % NormalizedGlobalIRI is the normalized global IRI of URI. Behaves
240
+ % as if defined by:
241
+ %
242
+ % ```
243
+ % uri_normalized(URI, Base, NormalizedGlobalIRI) :-
244
+ % uri_resolve(URI, Base, GlobalURI),
245
+ % uri_normalized_iri(GlobalURI, NormalizedGlobalIRI).
246
+ % ```
247
+
248
+ %! uri_query_components(+String, -Query:atom) is det.
249
+ %! uri_query_components(-String, +Query) is det.
250
+ %
251
+ % Perform encoding and decoding of an URI query string. Query is a
252
+ % list of fully decoded (Unicode) Name=Value pairs. In mode (-,+),
253
+ % query elements of the forms Name(Value) and Name-Value are also
254
+ % accepted to enhance interoperability with the option and pairs
255
+ % libraries. E.g.
256
+ %
257
+ % ```
258
+ % ?- uri_query_components(QS, [a=b, c('d+w'), n-'VU Amsterdam']).
259
+ % QS = 'a=b&c=d%2Bw&n=VU%20Amsterdam'.
260
+ %
261
+ % ?- uri_query_components('a=b&c=d%2Bw&n=VU%20Amsterdam', Q).
262
+ % Q = [a=b, c='d+w', n='VU Amsterdam'].
263
+ % ```
264
+
265
+
266
+ %! uri_authority_components(+Authority, -Components) is det.
267
+ %! uri_authority_components(-Authority:atom, +Components) is det.
268
+ %
269
+ % Break-down the authority component of a URI. The fields of the
270
+ % structure Components can be accessed using uri_authority_data/3.
271
+ % This predicate deals with IPv6 addresses written as ``[ip]``,
272
+ % returning the _ip_ as `host`, without the enclosing `[]`. When
273
+ % constructing an authority string and the host contains `:`, the
274
+ % host is embraced in `[]`. If `[]` is not used correctly, the
275
+ % behavior should be considered poorly defined. If there is no
276
+ % balancing `]` or the host part does not end with `]`, these
277
+ % characters are considered normal characters and part of the
278
+ % (invalid) host name.
279
+
280
+
281
+ %! uri_authority_data(+Field, ?Components, ?Data) is semidet.
282
+ %
283
+ % Provide access the uri_authority structure. Defined field-names
284
+ % are: `user`, `password`, `host` and `port`
285
+
286
+ uri_authority_data(user, uri_authority(U, _, _, _), U).
287
+ uri_authority_data(password, uri_authority(_, P, _, _), P).
288
+ uri_authority_data(host, uri_authority(_, _, H, _), H).
289
+ uri_authority_data(port, uri_authority(_, _, _, P), P).
290
+
291
+
292
+ %! uri_encoded(+Component, +Value, -Encoded:atom) is det.
293
+ %! uri_encoded(+Component, -Value:atom, +Encoded) is det.
294
+ %
295
+ % Encoded is the URI encoding for Value. When encoding
296
+ % (Value->Encoded), Component specifies the URI component where the
297
+ % value is used. It is one of `query_value`, `fragment`, `path` or
298
+ % `segment`. Besides alphanumerical characters, the following
299
+ % characters are passed verbatim (the set is split in logical groups
300
+ % according to RFC3986).
301
+ %
302
+ % $ query_value, fragment :
303
+ % "-._~" | "!$'()*,;" | "@" | "/?"
304
+ % $ path :
305
+ % "-._~" | "!$&'()*,;=" | "@" | "/"
306
+ % $ segment :
307
+ % "-._~" | "!$&'()*,;=" | "@"
308
+
309
+ %! uri_iri(+URI, -IRI:atom) is det.
310
+ %! uri_iri(-URI:atom, +IRI) is det.
311
+ %
312
+ % Convert between a URI, encoded in US-ASCII and an IRI. An IRI is
313
+ % a fully expanded Unicode string. Unicode strings are first
314
+ % encoded into UTF-8, after which %-encoding takes place.
315
+ %
316
+ % @error syntax_error(Culprit) in mode (+,-) if URI is not a
317
+ % legally percent-encoded UTF-8 string.
318
+
319
+
320
+ %! uri_file_name(+URI, -FileName:atom) is semidet.
321
+ %! uri_file_name(-URI:atom, +FileName) is det.
322
+ %
323
+ % Convert between a URI and a local file_name. This protocol is
324
+ % covered by RFC 1738. Please note that file-URIs use _absolute_
325
+ % paths. The mode (-, +) translates a possible relative path into
326
+ % an absolute one.
327
+
328
+ uri_file_name(URI, FileName) :-
329
+ nonvar(URI),
330
+ !,
331
+ uri_components(URI, Components),
332
+ uri_data(scheme, Components, File), File == file,
333
+ uri_data(authority, Components, Host),
334
+ my_host(Host),
335
+ uri_data(path, Components, FileNameEnc),
336
+ uri_encoded(path, FileName0, FileNameEnc),
337
+ delete_leading_slash(FileName0, FileName).
338
+ uri_file_name(URI, FileName) :-
339
+ nonvar(FileName),
340
+ !,
341
+ absolute_file_name(FileName, Path0),
342
+ ensure_leading_slash(Path0, Path),
343
+ uri_encoded(path, Path, PathEnc),
344
+ uri_data(scheme, Components, file),
345
+ uri_data(authority, Components, ''),
346
+ uri_data(path, Components, PathEnc),
347
+ uri_components(URI, Components).
348
+
349
+ my_host('') :- !.
350
+ my_host(localhost) :- !.
351
+ :- if(exists_source(library(socket))).
352
+ my_host(Host) :-
353
+ gethostname(Host).
354
+ :- endif.
355
+
356
+ %! ensure_leading_slash(+WinPath, -Path).
357
+ %! delete_leading_slash(+Path, -WinPath).
358
+ %
359
+ % Deal with the fact that absolute paths in Windows start with a
360
+ % drive letter rather than a /. For URIs we need a path that
361
+ % starts with a /.
362
+
363
+ ensure_leading_slash(Path, SlashPath) :-
364
+ ( sub_atom(Path, 0, _, _, /)
365
+ -> SlashPath = Path
366
+ ; atom_concat(/, Path, SlashPath)
367
+ ).
368
+
369
+ :- if(current_prolog_flag(windows, true)).
370
+ delete_leading_slash(Path, WinPath) :-
371
+ atom_concat(/, WinPath, Path),
372
+ is_absolute_file_name(WinPath),
373
+ !.
374
+ :- endif.
375
+ delete_leading_slash(Path, Path).
376
+
377
+
378
+ /*******************************
379
+ * MODIFYING *
380
+ *******************************/
381
+
382
+ %! uri_edit(+Actions, +URI0, -URI) is det.
383
+ %
384
+ % Modify a URI according to Actions. Actions is either a single
385
+ % action or a (nested) list of actions. Defined primitive actions
386
+ % are:
387
+ %
388
+ % - scheme(+Scheme)
389
+ % Set the Scheme of the URI (typically `http`, `https`, etc.)
390
+ % - user(+User)
391
+ % Add/set the user of the authority component.
392
+ % - password(+Password)
393
+ % Add/set the password of the authority component.
394
+ % - host(+Host)
395
+ % Add/set the host (or ip address) of the authority component.
396
+ % - port(+Port)
397
+ % Add/set the port of the authority component.
398
+ % - path(+Path)
399
+ % Set/extend the `path` component. If Path is not absolute it
400
+ % is taken relative to the path of URI0.
401
+ % - search(+KeyValues)
402
+ % Extend the `Key=Value` pairs of the current search (query)
403
+ % component. New values replace existing values. If KeyValues
404
+ % is written as =(KeyValues) the current search component is
405
+ % ignored. KeyValues is a list, whose elements are one of
406
+ % `Key=Value`, `Key-Value` or `Key(Value)`.
407
+ % - fragment(+Fragment)
408
+ % Set the Fragment of the uri.
409
+ % - nid(+NID)
410
+ % Set the _Namespace Identifier_ for a URN URI.
411
+ % - nss(+NSS)
412
+ % Set the _Namespace Specific String_ for a URN URI.
413
+ %
414
+ % Components can be _removed_ by using a variable as value, except
415
+ % from `path` which can be reset using path(/) and query which can
416
+ % be dropped using query(=([])).
417
+ %
418
+ % @arg URI0 is either a valid uri or a variable to start fresh.
419
+
420
+ uri_edit(Actions, URI0, URI) :-
421
+ ( var(URI0)
422
+ -> URI1 = '/'
423
+ ; URI1 = URI0
424
+ ),
425
+ uri_components(URI1, Comp0),
426
+ edit_components(Actions, Comp0, Comp),
427
+ uri_components(URI, Comp).
428
+
429
+ edit_components([], Comp0, Comp) =>
430
+ Comp = Comp0.
431
+ edit_components([H|T], Comp0, Comp) =>
432
+ edit_components(H, Comp0, Comp1),
433
+ edit_components(T, Comp1, Comp).
434
+ edit_components(scheme(Scheme), Comp0, Comp) =>
435
+ uri_data(scheme, Comp0, Scheme, Comp).
436
+ edit_components(path(Path), Comp0, Comp) =>
437
+ uri_data(path, Comp0, Path0),
438
+ ( ( var(Path0)
439
+ ; Path0 == ''
440
+ )
441
+ -> Path1 = '/'
442
+ ; Path1 = Path0
443
+ ),
444
+ uri_normalized(Path, Path1, Path2),
445
+ uri_data(path, Comp0, Path2, Comp).
446
+ edit_components(fragment(Fragment), Comp0, Comp) =>
447
+ uri_data(fragment, Comp0, Fragment, Comp).
448
+ edit_components(Authority, Comp0, Comp),
449
+ authority_field(Authority) =>
450
+ uri_data(authority, Comp0, Auth0),
451
+ ( var(Auth0)
452
+ -> true
453
+ ; uri_authority_components(Auth0, AComp0)
454
+ ),
455
+ edit_auth_components(Authority, AComp0, AComp),
456
+ uri_authority_components(Auth, AComp),
457
+ uri_data(authority, Comp0, Auth, Comp).
458
+ edit_components(query(Search), Comp0, Comp) =>
459
+ edit_components(search(Search), Comp0, Comp).
460
+ edit_components(search(=(Search)), Comp0, Comp) =>
461
+ uri_query_components(String, Search),
462
+ uri_data(search, Comp0, String, Comp).
463
+ edit_components(search(Search), Comp0, Comp) =>
464
+ uri_data(search, Comp0, SS0),
465
+ ( var(SS0)
466
+ -> Search0 = []
467
+ ; uri_query_components(SS0, Search0)
468
+ ),
469
+ join_search(Search0, Search, Search1),
470
+ uri_query_components(SS1, Search1),
471
+ uri_data(search, Comp0, SS1, Comp).
472
+ edit_components(nid(NID), Comp0, Comp) =>
473
+ uri_data(fragment, Comp0, NID, Comp).
474
+ edit_components(nss(NSS), Comp0, Comp) =>
475
+ uri_data(fragment, Comp0, NSS, Comp).
476
+ edit_components(Other, _, _) =>
477
+ domain_error(uri_edit, Other).
478
+
479
+ authority_field(user(_)).
480
+ authority_field(password(_)).
481
+ authority_field(host(_)).
482
+ authority_field(port(_)).
483
+
484
+ edit_auth_components(user(User),
485
+ uri_authority(_, Passwd, Host, Port),
486
+ uri_authority(User, Passwd, Host, Port)).
487
+ edit_auth_components(password(Passwd),
488
+ uri_authority(User, _, Host, Port),
489
+ uri_authority(User, Passwd, Host, Port)).
490
+ edit_auth_components(host(Host),
491
+ uri_authority(User, Passwd, _, Port),
492
+ uri_authority(User, Passwd, Host, Port)).
493
+ edit_auth_components(port(Port),
494
+ uri_authority(User, Passwd, Host, _),
495
+ uri_authority(User, Passwd, Host, Port)).
496
+
497
+ join_search([], Search, Search).
498
+ join_search([N=_|ST], New, Search) :-
499
+ ( memberchk(N=_, New)
500
+ -> true
501
+ ; functor(T, N, 1),
502
+ memberchk(T, New)
503
+ -> true
504
+ ; memberchk(N-_, New)
505
+ ),
506
+ !,
507
+ join_search(ST, New, Search).
508
+ join_search([H|ST], New, [H|Search]) :-
509
+ join_search(ST, New, Search).
510
+
511
+
512
+ /*******************************
513
+ * SANDBOX *
514
+ *******************************/
515
+
516
+ :- multifile sandbox:safe_primitive/1.
517
+
518
+ sandbox:safe_primitive(uri:uri_components(_,_)).
519
+ sandbox:safe_primitive(uri:uri_normalized(_,_)).
520
+ sandbox:safe_primitive(uri:iri_normalized(_,_)).
521
+ sandbox:safe_primitive(uri:uri_normalized_iri(_,_)).
522
+ sandbox:safe_primitive(uri:uri_normalized(_,_,_)).
523
+ sandbox:safe_primitive(uri:iri_normalized(_,_,_)).
524
+ sandbox:safe_primitive(uri:uri_normalized_iri(_,_,_)).
525
+ sandbox:safe_primitive(uri:uri_resolve(_,_,_)).
526
+ sandbox:safe_primitive(uri:uri_is_global(_)).
527
+ sandbox:safe_primitive(uri:uri_query_components(_,_)).
528
+ sandbox:safe_primitive(uri:uri_authority_components(_,_)).
529
+ sandbox:safe_primitive(uri:uri_encoded(_,_,_)).
530
+ sandbox:safe_primitive(uri:uri_iri(_,_)).