@greenpandastudios/aug-cli 0.19.0 → 0.20.1

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 (459) hide show
  1. package/README.md +9 -6
  2. package/THIRD_PARTY_NOTICES.md +4 -0
  3. package/bin/aug.mjs +12 -2
  4. package/docs/about.md +27 -0
  5. package/docs/api/crypto.md +103 -69
  6. package/docs/api/io.md +35 -33
  7. package/docs/api/json.md +3 -3
  8. package/docs/api/memory.md +23 -19
  9. package/docs/api/time.md +10 -9
  10. package/docs/api/web.md +33 -38
  11. package/docs/compatibility.md +3 -3
  12. package/docs/contributing-benchmarks.md +38 -0
  13. package/docs/dev-containers.md +95 -0
  14. package/docs/diagnostics.md +15 -5
  15. package/docs/docker.md +174 -12
  16. package/docs/editor.md +35 -0
  17. package/docs/example-projects.json +206 -24
  18. package/docs/examples/approved-design/counters.md +34 -126
  19. package/docs/examples/approved-design/dependencies/august/0.20.1/io/contracts.md +178 -0
  20. package/docs/examples/approved-design/domain/app.md +13 -77
  21. package/docs/examples/approved-design/domain/export.md +5 -19
  22. package/docs/examples/approved-design/domain/models.md +4 -23
  23. package/docs/examples/approved-design/domain/numbers.md +24 -114
  24. package/docs/examples/approved-design/index.md +16 -7
  25. package/docs/examples/approved-design/main.md +19 -96
  26. package/docs/examples/benchmark/index.md +6 -5
  27. package/docs/examples/benchmark/main.md +7 -35
  28. package/docs/examples/cli-args/index.md +6 -5
  29. package/docs/examples/cli-args/main.md +6 -31
  30. package/docs/examples/collections/index.md +6 -5
  31. package/docs/examples/collections/main.md +7 -35
  32. package/docs/examples/collections-benchmark/index.md +6 -5
  33. package/docs/examples/collections-benchmark/main.md +7 -35
  34. package/docs/examples/cpu-benchmark/index.md +6 -5
  35. package/docs/examples/cpu-benchmark/main.md +5 -24
  36. package/docs/examples/developer-workflow/calculator.md +39 -186
  37. package/docs/examples/developer-workflow/dependencies/august/0.20.1/io/contracts.md +178 -0
  38. package/docs/examples/developer-workflow/index.md +16 -7
  39. package/docs/examples/developer-workflow/logging/console.md +10 -56
  40. package/docs/examples/developer-workflow/logging/export.md +4 -14
  41. package/docs/examples/developer-workflow/logging/logger.md +7 -43
  42. package/docs/examples/developer-workflow/main.md +17 -69
  43. package/docs/examples/drop/index.md +6 -5
  44. package/docs/examples/drop/main.md +7 -27
  45. package/docs/examples/drop/resource.md +7 -30
  46. package/docs/examples/errors/errors.md +7 -27
  47. package/docs/examples/errors/index.md +6 -5
  48. package/docs/examples/errors/main.md +7 -28
  49. package/docs/examples/ffi/index.md +6 -5
  50. package/docs/examples/ffi/main.md +6 -20
  51. package/docs/examples/ffi/native.md +8 -34
  52. package/docs/examples/generic-di/dependencies/august/0.20.1/io/contracts.md +178 -0
  53. package/docs/examples/generic-di/index.md +6 -5
  54. package/docs/examples/generic-di/main.md +9 -39
  55. package/docs/examples/generic-di/types.md +23 -92
  56. package/docs/examples/generics/index.md +6 -5
  57. package/docs/examples/generics/main.md +10 -47
  58. package/docs/examples/generics/types.md +25 -100
  59. package/docs/examples/hello/app/export.md +4 -12
  60. package/docs/examples/hello/app/greeter.md +13 -91
  61. package/docs/examples/hello/dependencies/august/0.20.1/io/contracts.md +178 -0
  62. package/docs/examples/hello/index.md +17 -6
  63. package/docs/examples/hello/logging/console.md +10 -54
  64. package/docs/examples/hello/logging/export.md +4 -14
  65. package/docs/examples/hello/logging/logger.md +7 -45
  66. package/docs/examples/hello/main.md +9 -39
  67. package/docs/examples/http-benchmark/index.md +6 -5
  68. package/docs/examples/http-benchmark/main.md +6 -20
  69. package/docs/examples/http-benchmark/routes.md +9 -31
  70. package/docs/examples/index.md +46 -29
  71. package/docs/examples/interceptors/app.md +20 -139
  72. package/docs/examples/interceptors/dependencies/august/0.20.1/io/contracts.md +178 -0
  73. package/docs/examples/interceptors/index.md +6 -5
  74. package/docs/examples/interceptors/interceptors.md +24 -148
  75. package/docs/examples/interceptors/logging.md +13 -76
  76. package/docs/examples/interceptors/main.md +10 -65
  77. package/docs/examples/json-benchmark/data.md +4 -20
  78. package/docs/examples/json-benchmark/dependencies/packages/@git/url_2d3c37c690c0fa115be1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.md +67 -0
  79. package/docs/examples/json-benchmark/index.md +7 -5
  80. package/docs/examples/json-benchmark/main-yaml.md +20 -0
  81. package/docs/examples/json-benchmark/main.md +10 -49
  82. package/docs/examples/new-syntax/console.md +10 -52
  83. package/docs/examples/new-syntax/dependencies/august/0.20.1/io/contracts.md +178 -0
  84. package/docs/examples/new-syntax/greeter.md +13 -71
  85. package/docs/examples/new-syntax/index.md +6 -5
  86. package/docs/examples/new-syntax/logger.md +7 -43
  87. package/docs/examples/new-syntax/main.md +10 -53
  88. package/docs/examples/new-syntax/math.md +6 -24
  89. package/docs/examples/oidc-login/client/contracts.md +10 -61
  90. package/docs/examples/oidc-login/client/endpoints.md +32 -154
  91. package/docs/examples/oidc-login/client/export.md +5 -23
  92. package/docs/examples/oidc-login/client/login.md +234 -344
  93. package/docs/examples/oidc-login/client/logout.md +38 -143
  94. package/docs/examples/oidc-login/client/protocol.md +183 -304
  95. package/docs/examples/oidc-login/client/session.md +41 -149
  96. package/docs/examples/oidc-login/client/views.md +13 -58
  97. package/docs/examples/oidc-login/common/export.md +6 -26
  98. package/docs/examples/oidc-login/common/headers.md +42 -72
  99. package/docs/examples/oidc-login/common/keys.md +40 -164
  100. package/docs/examples/oidc-login/common/settings.md +24 -40
  101. package/docs/examples/oidc-login/common/views.md +7 -28
  102. package/docs/examples/oidc-login/dependencies/packages/@git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/store.md +205 -0
  103. package/docs/examples/oidc-login/dependencies/packages/@git/url_2d3c37c690c0fa115be1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.md +67 -0
  104. package/docs/examples/oidc-login/dependencies/packages/@git/url_897efafd565158fc4908/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.md +267 -0
  105. package/docs/examples/oidc-login/dependencies/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/contracts.md +415 -0
  106. package/docs/examples/oidc-login/dependencies/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/jose.md +271 -0
  107. package/docs/examples/oidc-login/dependencies/packages/@git/url_c092cd151499c4e1d8a1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.md +89 -0
  108. package/docs/examples/oidc-login/index.md +8 -7
  109. package/docs/examples/oidc-login/main-yaml.md +7 -0
  110. package/docs/examples/oidc-login/main.md +26 -153
  111. package/docs/examples/oidc-login/provider/authorization.md +232 -275
  112. package/docs/examples/oidc-login/provider/contracts.md +24 -146
  113. package/docs/examples/oidc-login/provider/credentials.md +24 -57
  114. package/docs/examples/oidc-login/provider/discovery.md +48 -122
  115. package/docs/examples/oidc-login/provider/export.md +11 -37
  116. package/docs/examples/oidc-login/provider/token.md +159 -237
  117. package/docs/examples/oidc-login/provider/userinfo.md +47 -102
  118. package/docs/examples/oidc-login/provider/views.md +13 -53
  119. package/docs/examples/ownership/counter.md +17 -63
  120. package/docs/examples/ownership/index.md +6 -5
  121. package/docs/examples/ownership/main.md +7 -30
  122. package/docs/examples/ownership-transfer/dependencies/august/0.20.1/io/contracts.md +178 -0
  123. package/docs/examples/ownership-transfer/index.md +6 -5
  124. package/docs/examples/ownership-transfer/main.md +10 -52
  125. package/docs/examples/ownership-transfer/resource.md +15 -67
  126. package/docs/examples/packages-app/dependencies/packages/@example/aug-math/0.1.0/arithmetic.md +12 -50
  127. package/docs/examples/packages-app/index.md +7 -6
  128. package/docs/examples/packages-app/main.md +7 -25
  129. package/docs/examples/packages-math/aug-package-json.md +1 -1
  130. package/docs/examples/packages-math/index.md +7 -6
  131. package/docs/examples/packages-math/src/arithmetic.md +12 -50
  132. package/docs/examples/packages-math/src/export.md +4 -12
  133. package/docs/examples/startup-benchmark/index.md +6 -5
  134. package/docs/examples/startup-benchmark/main.md +5 -17
  135. package/docs/examples/visibility/counter.md +19 -67
  136. package/docs/examples/visibility/index.md +6 -5
  137. package/docs/examples/visibility/main.md +7 -31
  138. package/docs/examples/weather-api/forecasts.md +168 -0
  139. package/docs/examples/weather-api/index.md +42 -0
  140. package/docs/examples/weather-api/main-yaml.md +21 -0
  141. package/docs/examples/weather-api/main.md +65 -0
  142. package/docs/examples.json +10 -0
  143. package/docs/getting-started.md +105 -2
  144. package/docs/grammar.md +6 -4
  145. package/docs/guides/change-a-module.md +64 -0
  146. package/docs/guides/index.md +27 -0
  147. package/docs/index.md +51 -29
  148. package/docs/language-conformance.md +1 -1
  149. package/docs/language-constructs.md +22 -22
  150. package/docs/language-design-audit.md +1 -1
  151. package/docs/learn/data-and-errors.md +77 -0
  152. package/docs/learn/index.md +30 -0
  153. package/docs/learn/modules-and-dependencies.md +73 -0
  154. package/docs/learn/state-and-tests.md +71 -0
  155. package/docs/learn/values-and-functions.md +62 -0
  156. package/docs/lesson-failures.json +8 -0
  157. package/docs/maintaining-docs.md +16 -4
  158. package/docs/packages.md +72 -126
  159. package/docs/performance.md +13 -41
  160. package/docs/production-readiness.md +5 -4
  161. package/docs/public/downloads/approved-design.zip +0 -0
  162. package/docs/public/downloads/benchmark.zip +0 -0
  163. package/docs/public/downloads/cli-args.zip +0 -0
  164. package/docs/public/downloads/collections-benchmark.zip +0 -0
  165. package/docs/public/downloads/collections.zip +0 -0
  166. package/docs/public/downloads/cpu-benchmark.zip +0 -0
  167. package/docs/public/downloads/developer-workflow.zip +0 -0
  168. package/docs/public/downloads/drop.zip +0 -0
  169. package/docs/public/downloads/errors.zip +0 -0
  170. package/docs/public/downloads/ffi.zip +0 -0
  171. package/docs/public/downloads/generic-di.zip +0 -0
  172. package/docs/public/downloads/generics.zip +0 -0
  173. package/docs/public/downloads/hello.zip +0 -0
  174. package/docs/public/downloads/http-benchmark.zip +0 -0
  175. package/docs/public/downloads/interceptors.zip +0 -0
  176. package/docs/public/downloads/json-benchmark.zip +0 -0
  177. package/docs/public/downloads/new-syntax.zip +0 -0
  178. package/docs/public/downloads/oidc-login.zip +0 -0
  179. package/docs/public/downloads/ownership-transfer.zip +0 -0
  180. package/docs/public/downloads/ownership.zip +0 -0
  181. package/docs/public/downloads/packages-app.zip +0 -0
  182. package/docs/public/downloads/packages-math.zip +0 -0
  183. package/docs/public/downloads/startup-benchmark.zip +0 -0
  184. package/docs/public/downloads/visibility.zip +0 -0
  185. package/docs/public/downloads/weather-api.zip +0 -0
  186. package/docs/reference.md +23 -17
  187. package/docs/releasing.md +29 -15
  188. package/docs/research/code-to-natural-language.md +108 -0
  189. package/docs/research/ecosystem-workflow.md +41 -0
  190. package/docs/research/wiki-editorial-design.md +71 -0
  191. package/docs/roadmap.md +1 -1
  192. package/docs/specifications.md +27 -11
  193. package/docs/testing.md +19 -5
  194. package/docs/tooling.md +25 -12
  195. package/docs/weather-api.md +65 -0
  196. package/docs/web.md +50 -18
  197. package/docs/writing-docs.md +49 -0
  198. package/examples/{hello/.aug-spec/august/0.19.0 → approved-design/.aug-spec/august/0.20.1}/io/contracts.aug +4 -3
  199. package/examples/approved-design/.aug-spec/august/0.20.1/io/contracts.aug.md +82 -0
  200. package/examples/approved-design/.aug-spec/manifest.json +3 -3
  201. package/examples/approved-design/counters.aug +5 -4
  202. package/examples/approved-design/counters.aug.md +25 -132
  203. package/examples/approved-design/domain/app.aug +2 -1
  204. package/examples/approved-design/domain/app.aug.md +10 -80
  205. package/examples/approved-design/domain/export.aug +1 -0
  206. package/examples/approved-design/domain/export.aug.md +4 -20
  207. package/examples/approved-design/domain/models.aug +1 -0
  208. package/examples/approved-design/domain/models.aug.md +3 -25
  209. package/examples/approved-design/domain/numbers.aug +3 -2
  210. package/examples/approved-design/domain/numbers.aug.md +19 -116
  211. package/examples/approved-design/main.aug +1 -0
  212. package/examples/approved-design/main.aug.md +12 -95
  213. package/examples/benchmark/.aug-spec/manifest.json +1 -1
  214. package/examples/benchmark/main.aug +1 -0
  215. package/examples/benchmark/main.aug.md +6 -36
  216. package/examples/cli-args/.aug-spec/manifest.json +1 -1
  217. package/examples/cli-args/main.aug +1 -0
  218. package/examples/cli-args/main.aug.md +5 -32
  219. package/examples/collections/.aug-spec/manifest.json +1 -1
  220. package/examples/collections/main.aug +1 -0
  221. package/examples/collections/main.aug.md +6 -36
  222. package/examples/{generic-di/.aug-spec/august/0.19.0 → developer-workflow/.aug-spec/august/0.20.1}/io/contracts.aug +4 -3
  223. package/examples/developer-workflow/.aug-spec/august/0.20.1/io/contracts.aug.md +82 -0
  224. package/examples/developer-workflow/.aug-spec/manifest.json +3 -3
  225. package/examples/developer-workflow/calculator.aug +3 -2
  226. package/examples/developer-workflow/calculator.aug.md +28 -189
  227. package/examples/developer-workflow/logging/console.aug +2 -1
  228. package/examples/developer-workflow/logging/console.aug.md +7 -57
  229. package/examples/developer-workflow/logging/export.aug +1 -0
  230. package/examples/developer-workflow/logging/export.aug.md +3 -15
  231. package/examples/developer-workflow/logging/logger.aug +1 -0
  232. package/examples/developer-workflow/logging/logger.aug.md +6 -46
  233. package/examples/developer-workflow/main.aug +1 -0
  234. package/examples/developer-workflow/main.aug.md +10 -68
  235. package/examples/drop/.aug-spec/manifest.json +1 -1
  236. package/examples/drop/main.aug +1 -0
  237. package/examples/drop/main.aug.md +6 -28
  238. package/examples/drop/resource.aug +1 -0
  239. package/examples/drop/resource.aug.md +6 -34
  240. package/examples/errors/.aug-spec/manifest.json +1 -1
  241. package/examples/errors/errors.aug +2 -1
  242. package/examples/errors/errors.aug.md +4 -27
  243. package/examples/errors/main.aug +1 -0
  244. package/examples/errors/main.aug.md +6 -29
  245. package/examples/ffi/.aug-spec/manifest.json +1 -1
  246. package/examples/ffi/main.aug +1 -0
  247. package/examples/ffi/main.aug.md +5 -21
  248. package/examples/ffi/native.aug +2 -1
  249. package/examples/ffi/native.aug.md +5 -35
  250. package/examples/{approved-design/.aug-spec/august/0.19.0 → generic-di/.aug-spec/august/0.20.1}/io/contracts.aug +4 -3
  251. package/examples/generic-di/.aug-spec/august/0.20.1/io/contracts.aug.md +82 -0
  252. package/examples/generic-di/.aug-spec/manifest.json +3 -3
  253. package/examples/generic-di/main.aug +1 -0
  254. package/examples/generic-di/main.aug.md +8 -40
  255. package/examples/generic-di/types.aug +3 -2
  256. package/examples/generic-di/types.aug.md +18 -97
  257. package/examples/generics/.aug-spec/manifest.json +1 -1
  258. package/examples/generics/main.aug +1 -0
  259. package/examples/generics/main.aug.md +9 -48
  260. package/examples/generics/types.aug +4 -3
  261. package/examples/generics/types.aug.md +18 -104
  262. package/examples/{developer-workflow/.aug-spec/august/0.19.0 → hello/.aug-spec/august/0.20.1}/io/contracts.aug +4 -3
  263. package/examples/hello/.aug-spec/august/0.20.1/io/contracts.aug.md +82 -0
  264. package/examples/hello/.aug-spec/manifest.json +3 -3
  265. package/examples/hello/app/export.aug +1 -0
  266. package/examples/hello/app/export.aug.md +3 -13
  267. package/examples/hello/app/greeter.aug +2 -1
  268. package/examples/hello/app/greeter.aug.md +10 -94
  269. package/examples/hello/logging/console.aug +2 -1
  270. package/examples/hello/logging/console.aug.md +7 -55
  271. package/examples/hello/logging/export.aug +1 -0
  272. package/examples/hello/logging/export.aug.md +3 -15
  273. package/examples/hello/logging/logger.aug +1 -0
  274. package/examples/hello/logging/logger.aug.md +6 -48
  275. package/examples/hello/main.aug +1 -0
  276. package/examples/hello/main.aug.md +8 -40
  277. package/examples/interceptors/.aug-spec/august/0.20.1/io/contracts.aug +37 -0
  278. package/examples/interceptors/.aug-spec/august/0.20.1/io/contracts.aug.md +82 -0
  279. package/examples/interceptors/.aug-spec/manifest.json +3 -3
  280. package/examples/interceptors/app.aug +3 -2
  281. package/examples/interceptors/app.aug.md +15 -141
  282. package/examples/interceptors/interceptors.aug +3 -2
  283. package/examples/interceptors/interceptors.aug.md +19 -152
  284. package/examples/interceptors/logging.aug +2 -1
  285. package/examples/interceptors/logging.aug.md +10 -79
  286. package/examples/interceptors/main.aug +1 -0
  287. package/examples/interceptors/main.aug.md +9 -66
  288. package/examples/new-syntax/.aug-spec/august/0.20.1/io/contracts.aug +37 -0
  289. package/examples/new-syntax/.aug-spec/august/0.20.1/io/contracts.aug.md +82 -0
  290. package/examples/new-syntax/.aug-spec/manifest.json +3 -3
  291. package/examples/new-syntax/console.aug +2 -1
  292. package/examples/new-syntax/console.aug.md +7 -53
  293. package/examples/new-syntax/greeter.aug +2 -1
  294. package/examples/new-syntax/greeter.aug.md +10 -74
  295. package/examples/new-syntax/logger.aug +1 -0
  296. package/examples/new-syntax/logger.aug.md +6 -46
  297. package/examples/new-syntax/main.aug +1 -0
  298. package/examples/new-syntax/main.aug.md +9 -54
  299. package/examples/new-syntax/math.aug +2 -1
  300. package/examples/new-syntax/math.aug.md +3 -24
  301. package/examples/oidc-login/.aug-spec/manifest.json +13 -13
  302. package/examples/oidc-login/.aug-spec/packages/@git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/store.aug.md +71 -0
  303. package/examples/oidc-login/.aug-spec/packages/@git/url_2d3c37c690c0fa115be1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md +17 -0
  304. package/examples/oidc-login/.aug-spec/packages/@git/url_897efafd565158fc4908/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md +125 -0
  305. package/examples/oidc-login/.aug-spec/{august/0.19.0/crypto → packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40}/contracts.aug +12 -11
  306. package/examples/oidc-login/.aug-spec/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/contracts.aug.md +244 -0
  307. package/examples/oidc-login/.aug-spec/{august/0.19.0/crypto → packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40}/jose.aug +6 -5
  308. package/examples/oidc-login/.aug-spec/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/jose.aug.md +71 -0
  309. package/examples/oidc-login/.aug-spec/packages/@git/url_c092cd151499c4e1d8a1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md +30 -0
  310. package/examples/oidc-login/aug.lock.json +100 -0
  311. package/examples/oidc-login/client/contracts.aug +1 -0
  312. package/examples/oidc-login/client/contracts.aug.md +9 -66
  313. package/examples/oidc-login/client/endpoints.aug +6 -5
  314. package/examples/oidc-login/client/endpoints.aug.md +13 -145
  315. package/examples/oidc-login/client/export.aug +1 -0
  316. package/examples/oidc-login/client/export.aug.md +4 -24
  317. package/examples/oidc-login/client/login.aug +7 -6
  318. package/examples/oidc-login/client/login.aug.md +25 -303
  319. package/examples/oidc-login/client/logout.aug +5 -4
  320. package/examples/oidc-login/client/logout.aug.md +13 -135
  321. package/examples/oidc-login/client/protocol.aug +7 -6
  322. package/examples/oidc-login/client/protocol.aug.md +36 -283
  323. package/examples/oidc-login/client/session.aug +5 -4
  324. package/examples/oidc-login/client/session.aug.md +12 -139
  325. package/examples/oidc-login/client/views.aug +3 -2
  326. package/examples/oidc-login/client/views.aug.md +8 -57
  327. package/examples/oidc-login/common/export.aug +1 -0
  328. package/examples/oidc-login/common/export.aug.md +5 -27
  329. package/examples/oidc-login/common/headers.aug +4 -3
  330. package/examples/oidc-login/common/headers.aug.md +9 -67
  331. package/examples/oidc-login/common/keys.aug +6 -5
  332. package/examples/oidc-login/common/keys.aug.md +29 -165
  333. package/examples/oidc-login/common/settings.aug +2 -1
  334. package/examples/oidc-login/common/settings.aug.md +5 -39
  335. package/examples/oidc-login/common/views.aug +2 -1
  336. package/examples/oidc-login/common/views.aug.md +4 -28
  337. package/examples/oidc-login/main.aug +6 -16
  338. package/examples/oidc-login/main.aug.md +17 -146
  339. package/examples/oidc-login/main.yaml +7 -0
  340. package/examples/oidc-login/provider/authorization.aug +7 -6
  341. package/examples/oidc-login/provider/authorization.aug.md +23 -238
  342. package/examples/oidc-login/provider/contracts.aug +1 -0
  343. package/examples/oidc-login/provider/contracts.aug.md +23 -158
  344. package/examples/oidc-login/provider/credentials.aug +3 -2
  345. package/examples/oidc-login/provider/credentials.aug.md +9 -53
  346. package/examples/oidc-login/provider/discovery.aug +4 -3
  347. package/examples/oidc-login/provider/discovery.aug.md +11 -118
  348. package/examples/oidc-login/provider/export.aug +1 -0
  349. package/examples/oidc-login/provider/export.aug.md +6 -34
  350. package/examples/oidc-login/provider/token.aug +6 -5
  351. package/examples/oidc-login/provider/token.aug.md +16 -204
  352. package/examples/oidc-login/provider/userinfo.aug +4 -3
  353. package/examples/oidc-login/provider/userinfo.aug.md +10 -92
  354. package/examples/oidc-login/provider/views.aug +3 -2
  355. package/examples/oidc-login/provider/views.aug.md +8 -52
  356. package/examples/ownership/.aug-spec/manifest.json +1 -1
  357. package/examples/ownership/counter.aug +3 -2
  358. package/examples/ownership/counter.aug.md +12 -66
  359. package/examples/ownership/main.aug +1 -0
  360. package/examples/ownership/main.aug.md +6 -31
  361. package/examples/ownership-transfer/.aug-spec/august/0.20.1/io/contracts.aug +37 -0
  362. package/examples/ownership-transfer/.aug-spec/august/0.20.1/io/contracts.aug.md +82 -0
  363. package/examples/ownership-transfer/.aug-spec/manifest.json +3 -3
  364. package/examples/ownership-transfer/main.aug +1 -0
  365. package/examples/ownership-transfer/main.aug.md +9 -53
  366. package/examples/ownership-transfer/resource.aug +2 -1
  367. package/examples/ownership-transfer/resource.aug.md +12 -71
  368. package/examples/packages/app/.aug-spec/manifest.json +1 -1
  369. package/examples/packages/app/.aug-spec/packages/@example/aug-math/0.1.0/arithmetic.aug +2 -1
  370. package/examples/packages/app/.aug-spec/packages/@example/aug-math/0.1.0/arithmetic.aug.md +9 -51
  371. package/examples/packages/app/main.aug +1 -0
  372. package/examples/packages/app/main.aug.md +6 -26
  373. package/examples/packages/math/.aug-spec/manifest.json +1 -1
  374. package/examples/packages/math/aug-package.json +1 -1
  375. package/examples/packages/math/src/arithmetic.aug +2 -1
  376. package/examples/packages/math/src/arithmetic.aug.md +9 -51
  377. package/examples/packages/math/src/export.aug +1 -0
  378. package/examples/packages/math/src/export.aug.md +3 -13
  379. package/examples/visibility/.aug-spec/manifest.json +1 -1
  380. package/examples/visibility/counter.aug +4 -3
  381. package/examples/visibility/counter.aug.md +12 -68
  382. package/examples/visibility/main.aug +1 -0
  383. package/examples/visibility/main.aug.md +6 -32
  384. package/examples/weather-api/.aug-spec/manifest.json +8 -0
  385. package/examples/weather-api/AGENTS.md +17 -0
  386. package/examples/weather-api/README.md +19 -0
  387. package/examples/weather-api/forecasts.aug +47 -0
  388. package/examples/weather-api/forecasts.aug.md +32 -0
  389. package/examples/weather-api/main.aug +4 -0
  390. package/examples/weather-api/main.aug.md +15 -0
  391. package/examples/weather-api/main.yaml +5 -0
  392. package/examples/weather-api/weather.http +5 -0
  393. package/package.json +3 -4
  394. package/scripts/bootstrap-native.mjs +181 -106
  395. package/scripts/native-setup.mjs +98 -0
  396. package/scripts/native-toolchain.mjs +28 -0
  397. package/src/builtins.js +1 -1
  398. package/src/checker.js +259 -72
  399. package/src/cli.js +114 -20
  400. package/src/codegen.js +1 -1
  401. package/src/config.js +1 -1
  402. package/src/contracts.js +10 -0
  403. package/src/editor.js +71 -16
  404. package/src/fixes.js +90 -2
  405. package/src/formatter.js +19 -8
  406. package/src/git-packages.js +110 -0
  407. package/src/help.js +24 -23
  408. package/src/http-contracts.js +14 -0
  409. package/src/http-policies.js +5 -5
  410. package/src/libraries.js +1 -1
  411. package/src/lsp.js +14 -5
  412. package/src/native.js +19 -13
  413. package/src/navigation.js +4 -2
  414. package/src/openapi.js +5 -4
  415. package/src/package-locking.js +45 -0
  416. package/src/package-manager.js +251 -67
  417. package/src/parser.js +13 -5
  418. package/src/policies.js +3 -3
  419. package/src/project-init.js +78 -4
  420. package/src/project.js +9 -7
  421. package/src/semantic.js +46 -2
  422. package/src/snippets.js +59 -0
  423. package/src/spec-hints.js +56 -0
  424. package/src/spec-tree.js +241 -0
  425. package/src/spec.js +626 -303
  426. package/docs/examples/approved-design/dependencies/august/0.19.0/io/contracts.md +0 -395
  427. package/docs/examples/developer-workflow/dependencies/august/0.19.0/io/contracts.md +0 -395
  428. package/docs/examples/generic-di/dependencies/august/0.19.0/io/contracts.md +0 -395
  429. package/docs/examples/hello/dependencies/august/0.19.0/io/contracts.md +0 -395
  430. package/docs/examples/interceptors/dependencies/august/0.19.0/io/contracts.md +0 -395
  431. package/docs/examples/json-benchmark/dependencies/august/0.19.0/json/contracts.md +0 -103
  432. package/docs/examples/new-syntax/dependencies/august/0.19.0/io/contracts.md +0 -395
  433. package/docs/examples/oidc-login/dependencies/august/0.19.0/crypto/contracts.md +0 -925
  434. package/docs/examples/oidc-login/dependencies/august/0.19.0/crypto/jose.md +0 -434
  435. package/docs/examples/oidc-login/dependencies/august/0.19.0/json/contracts.md +0 -103
  436. package/docs/examples/oidc-login/dependencies/august/0.19.0/memory/store.md +0 -374
  437. package/docs/examples/oidc-login/dependencies/august/0.19.0/time/contracts.md +0 -150
  438. package/docs/examples/oidc-login/dependencies/august/0.19.0/web/contracts.md +0 -532
  439. package/docs/examples/ownership-transfer/dependencies/august/0.19.0/io/contracts.md +0 -395
  440. package/examples/approved-design/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
  441. package/examples/developer-workflow/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
  442. package/examples/generic-di/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
  443. package/examples/hello/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
  444. package/examples/interceptors/.aug-spec/august/0.19.0/io/contracts.aug +0 -36
  445. package/examples/interceptors/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
  446. package/examples/new-syntax/.aug-spec/august/0.19.0/io/contracts.aug +0 -36
  447. package/examples/new-syntax/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
  448. package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/contracts.aug.md +0 -791
  449. package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/jose.aug.md +0 -266
  450. package/examples/oidc-login/.aug-spec/august/0.19.0/json/contracts.aug.md +0 -55
  451. package/examples/oidc-login/.aug-spec/august/0.19.0/memory/store.aug.md +0 -250
  452. package/examples/oidc-login/.aug-spec/august/0.19.0/time/contracts.aug.md +0 -96
  453. package/examples/oidc-login/.aug-spec/august/0.19.0/web/contracts.aug.md +0 -420
  454. package/examples/ownership-transfer/.aug-spec/august/0.19.0/io/contracts.aug +0 -36
  455. package/examples/ownership-transfer/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
  456. /package/examples/oidc-login/.aug-spec/{august/0.19.0/memory → packages/@git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301}/store.aug +0 -0
  457. /package/examples/oidc-login/.aug-spec/{august/0.19.0/json → packages/@git/url_2d3c37c690c0fa115be1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301}/contracts.aug +0 -0
  458. /package/examples/oidc-login/.aug-spec/{august/0.19.0/web → packages/@git/url_897efafd565158fc4908/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301}/contracts.aug +0 -0
  459. /package/examples/oidc-login/.aug-spec/{august/0.19.0/time → packages/@git/url_c092cd151499c4e1d8a1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301}/contracts.aug +0 -0
@@ -1,532 +0,0 @@
1
- ---
2
- title: "august/0.19.0/web/contracts.aug · OpenID Connect login application"
3
- generated: true
4
- source: "examples/oidc-login/.aug-spec/august/0.19.0/web/contracts.aug"
5
- editLink: false
6
- prev: false
7
- next: false
8
- outline: [2, 3]
9
- search: false
10
- pageClass: aug-example-page
11
- ---
12
-
13
- # `august/0.19.0/web/contracts.aug`
14
-
15
- [OpenID Connect login application](../../../../index.md) · Dependency source and specification
16
-
17
- This is the exact dependency version used by this example.
18
-
19
- ::::: example-compare
20
-
21
- :::: example-code
22
-
23
- ## Code {#code}
24
-
25
- ::: code-group
26
-
27
- ```aug [Indentation]
28
- /** Immutable identity returned by an explicitly injected authentication adapter. */
29
- record Principal(string subject, List<string> permissions)
30
- /** Verify the request's credentials. null means unauthenticated; adapter failures raise HttpError. */
31
- capability Authentication:
32
- authenticate(HttpRequest request) returns optional Principal uses Authentication.authenticate unless HttpError
33
- /** Decide whether a verified identity has one named permission. */
34
- capability Authorization:
35
- authorize(Principal identity, string permission) returns bool uses Authorization.authorize unless HttpError
36
- /** Observe a completed HTTP exchange, including failures and disconnects. */
37
- capability RequestLogger:
38
- complete(string method, string path, int status, int milliseconds) uses RequestLogger.complete
39
- extern C value _aug_http_log(string method, string path, int status, int milliseconds) uses RequestLogger.complete
40
- /** Emit escaped JSON request metadata to standard error. Credentials and query strings are excluded. */
41
- WebRequestLogger() implements RequestLogger:
42
- complete(string method, string path, int status, int milliseconds):
43
- unsafe:
44
- _aug_http_log(method, path, status, milliseconds)
45
- /** An explicit outbound network capability. TLS verifies the peer and redirects are returned to the caller. */
46
- capability HttpClient:
47
- /** Perform an HTTP request with bounded bytes. Inside a task, waiting suspends the task's C stack. */
48
- request(string method, string url, optional Headers headers, optional Bytes body) returns HttpResponse<Bytes> uses HttpClient.request unless HttpError
49
- extern C value _aug_http_request(string method, string url, optional Headers headers, optional Bytes body) returns HttpResponse<Bytes> uses HttpClient.request unless HttpError
50
- /** Native libwebsockets transport. No socket is opened by construction. */
51
- WebHttpClient() implements HttpClient:
52
- request(string method, string url, optional Headers headers, optional Bytes body) returns HttpResponse<Bytes> unless HttpError:
53
- unsafe:
54
- return _aug_http_request(method=method, url=url, headers=headers, body=body)
55
- /** Return a redirect with an explicit status. Location is checked as a header value. */
56
- redirect(string location, optional int status) returns HttpResponse<string> unless HttpError:
57
- code = 303
58
- match status:
59
- when null:
60
- pass
61
- when some value:
62
- code = value
63
- headers = Headers().with(name="location", value=location)
64
- return HttpResponse(body="", status=code, headers=headers)
65
- extern C value pure _aug_http_url_encode(string input) returns string unless HttpError
66
- /** Encode a UTF-8 value as one URL query or form component using RFC 3986 unreserved characters. */
67
- urlEncode(string input) returns string unless HttpError:
68
- unsafe:
69
- return _aug_http_url_encode(input)
70
- extern C value pure _aug_http_cookie(string name, string value, string path, int maxAge, bool secure) returns Headers unless HttpError
71
- /** Construct an HttpOnly, SameSite=Lax session cookie. Secure defaults are chosen explicitly at the call site. Values and paths reject delimiters and controls. maxAge=0 clears the cookie. */
72
- cookie(string name, string value, string path, int maxAge, bool secure) returns Headers unless HttpError:
73
- unsafe:
74
- return _aug_http_cookie(name, value, path, maxAge, secure)
75
- ```
76
-
77
- ```aug [Braces]
78
- /** Immutable identity returned by an explicitly injected authentication adapter. */
79
- record Principal(string subject, List<string> permissions)
80
- /** Verify the request's credentials. null means unauthenticated; adapter failures raise HttpError. */
81
- capability Authentication {
82
- authenticate(HttpRequest request) returns optional Principal uses Authentication.authenticate unless HttpError
83
- }
84
- /** Decide whether a verified identity has one named permission. */
85
- capability Authorization {
86
- authorize(Principal identity, string permission) returns bool uses Authorization.authorize unless HttpError
87
- }
88
- /** Observe a completed HTTP exchange, including failures and disconnects. */
89
- capability RequestLogger {
90
- complete(string method, string path, int status, int milliseconds) uses RequestLogger.complete
91
- }
92
- extern C value _aug_http_log(string method, string path, int status, int milliseconds) uses RequestLogger.complete
93
- /** Emit escaped JSON request metadata to standard error. Credentials and query strings are excluded. */
94
- WebRequestLogger() implements RequestLogger {
95
- complete(string method, string path, int status, int milliseconds) {
96
- unsafe {
97
- _aug_http_log(method, path, status, milliseconds)
98
- }
99
- }
100
- }
101
- /** An explicit outbound network capability. TLS verifies the peer and redirects are returned to the caller. */
102
- capability HttpClient {
103
- /** Perform an HTTP request with bounded bytes. Inside a task, waiting suspends the task's C stack. */
104
- request(string method, string url, optional Headers headers, optional Bytes body) returns HttpResponse<Bytes> uses HttpClient.request unless HttpError
105
- }
106
- extern C value _aug_http_request(string method, string url, optional Headers headers, optional Bytes body) returns HttpResponse<Bytes> uses HttpClient.request unless HttpError
107
- /** Native libwebsockets transport. No socket is opened by construction. */
108
- WebHttpClient() implements HttpClient {
109
- request(string method, string url, optional Headers headers, optional Bytes body) returns HttpResponse<Bytes> unless HttpError {
110
- unsafe {
111
- return _aug_http_request(method=method, url=url, headers=headers, body=body)
112
- }
113
- }
114
- }
115
- /** Return a redirect with an explicit status. Location is checked as a header value. */
116
- redirect(string location, optional int status) returns HttpResponse<string> unless HttpError {
117
- code = 303
118
- match status {
119
- when null {
120
- pass
121
- }
122
- when some value {
123
- code = value
124
- }
125
- }
126
- headers = Headers().with(name="location", value=location)
127
- return HttpResponse(body="", status=code, headers=headers)
128
- }
129
- extern C value pure _aug_http_url_encode(string input) returns string unless HttpError
130
- /** Encode a UTF-8 value as one URL query or form component using RFC 3986 unreserved characters. */
131
- urlEncode(string input) returns string unless HttpError {
132
- unsafe {
133
- return _aug_http_url_encode(input)
134
- }
135
- }
136
- extern C value pure _aug_http_cookie(string name, string value, string path, int maxAge, bool secure) returns Headers unless HttpError
137
- /** Construct an HttpOnly, SameSite=Lax session cookie. Secure defaults are chosen explicitly at the call site. Values and paths reject delimiters and controls. maxAge=0 clears the cookie. */
138
- cookie(string name, string value, string path, int maxAge, bool secure) returns Headers unless HttpError {
139
- unsafe {
140
- return _aug_http_cookie(name, value, path, maxAge, secure)
141
- }
142
- }
143
- ```
144
-
145
- :::
146
-
147
- ::::
148
-
149
- :::: example-spec
150
-
151
- ## Compiled specification {#specification}
152
-
153
- August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
154
-
155
- ### In this file
156
-
157
- - [`Principal`](contracts.md#symbol-Principal) is an immutable record.
158
- - [`Authentication`](contracts.md#symbol-Authentication) is a capability interface.
159
- - [`Authorization`](contracts.md#symbol-Authorization) is a capability interface.
160
- - [`RequestLogger`](contracts.md#symbol-RequestLogger) is a capability interface.
161
- - [`_aug_http_log`](contracts.md#symbol-_aug_http_log) is a function.
162
- - [`WebRequestLogger`](contracts.md#symbol-WebRequestLogger) is a class implementing `RequestLogger`.
163
- - [`HttpClient`](contracts.md#symbol-HttpClient) is a capability interface.
164
- - [`_aug_http_request`](contracts.md#symbol-_aug_http_request) is a function returning `HttpResponse<Bytes>`.
165
- - [`WebHttpClient`](contracts.md#symbol-WebHttpClient) is a class implementing `HttpClient`.
166
- - [`redirect`](contracts.md#symbol-redirect) is a function returning `HttpResponse<string>`.
167
- - [`_aug_http_url_encode`](contracts.md#symbol-_aug_http_url_encode) is a function returning `string`.
168
- - [`urlEncode`](contracts.md#symbol-urlEncode) is a function returning `string`.
169
- - [`_aug_http_cookie`](contracts.md#symbol-_aug_http_cookie) is a function returning `Headers`.
170
- - [`cookie`](contracts.md#symbol-cookie) is a function returning `Headers`.
171
-
172
- ### `Principal` {#symbol-Principal}
173
-
174
- [source](contracts.md#code)
175
-
176
- Immutable record.
177
-
178
- **Author documentation**
179
-
180
- Immutable identity returned by an explicitly injected authentication adapter.
181
-
182
- **Inputs**
183
-
184
- - `subject` (`string`) — required labeled input — stored as `subject` and read-only after initialization.
185
- - `permissions` (`List<string>`) — required labeled input — stored as `permissions` and read-only after initialization.
186
-
187
- ### `Authentication` {#symbol-Authentication}
188
-
189
- [source](contracts.md#code)
190
-
191
- Capability interface.
192
-
193
- **Author documentation**
194
-
195
- Verify the request's credentials. null means unauthenticated; adapter failures raise HttpError.
196
-
197
- #### `Authentication.authenticate` {#symbol-Authentication.authenticate}
198
-
199
- [source](contracts.md#code)
200
-
201
- **Inputs**
202
-
203
- - `request` (`HttpRequest`) — required labeled input.
204
-
205
- Returns: [`optional Principal`](contracts.md#symbol-Principal).
206
-
207
- Capabilities: [`Authentication.authenticate`](contracts.md#symbol-Authentication.authenticate).
208
-
209
- Can fail with `HttpError`. Callers must catch or propagate these errors.
210
-
211
- Interface contract. A selected implementation supplies the behavior.
212
-
213
- ### `Authorization` {#symbol-Authorization}
214
-
215
- [source](contracts.md#code)
216
-
217
- Capability interface.
218
-
219
- **Author documentation**
220
-
221
- Decide whether a verified identity has one named permission.
222
-
223
- #### `Authorization.authorize` {#symbol-Authorization.authorize}
224
-
225
- [source](contracts.md#code)
226
-
227
- **Inputs**
228
-
229
- - `identity` ([`Principal`](contracts.md#symbol-Principal)) — required labeled input.
230
- - `permission` (`string`) — required labeled input.
231
-
232
- Returns: `bool`.
233
-
234
- Capabilities: [`Authorization.authorize`](contracts.md#symbol-Authorization.authorize).
235
-
236
- Can fail with `HttpError`. Callers must catch or propagate these errors.
237
-
238
- Interface contract. A selected implementation supplies the behavior.
239
-
240
- ### `RequestLogger` {#symbol-RequestLogger}
241
-
242
- [source](contracts.md#code)
243
-
244
- Capability interface.
245
-
246
- **Author documentation**
247
-
248
- Observe a completed HTTP exchange, including failures and disconnects.
249
-
250
- #### `RequestLogger.complete` {#symbol-RequestLogger.complete}
251
-
252
- [source](contracts.md#code)
253
-
254
- **Inputs**
255
-
256
- - `method` (`string`) — required labeled input.
257
- - `path` (`string`) — required labeled input.
258
- - `status` (`int`) — required labeled input.
259
- - `milliseconds` (`int`) — required labeled input.
260
-
261
- Returns: no value.
262
-
263
- Capabilities: [`RequestLogger.complete`](contracts.md#symbol-RequestLogger.complete).
264
-
265
- Interface contract. A selected implementation supplies the behavior.
266
-
267
- ### `WebRequestLogger` {#symbol-WebRequestLogger}
268
-
269
- [source](contracts.md#code)
270
-
271
- Behavioral class.
272
-
273
- Satisfies [`RequestLogger`](contracts.md#symbol-RequestLogger).
274
-
275
- **Author documentation**
276
-
277
- Emit escaped JSON request metadata to standard error. Credentials and query strings are excluded.
278
-
279
- #### `WebRequestLogger.complete` {#symbol-WebRequestLogger.complete}
280
-
281
- [source](contracts.md#code)
282
-
283
- **Inputs**
284
-
285
- - `method` (`string`) — required labeled input.
286
- - `path` (`string`) — required labeled input.
287
- - `status` (`int`) — required labeled input.
288
- - `milliseconds` (`int`) — required labeled input.
289
-
290
- Returns: no value.
291
-
292
- Capabilities: [`RequestLogger.complete`](contracts.md#symbol-RequestLogger.complete).
293
-
294
- **What it does**
295
-
296
- - Enter an unsafe boundary. Native calls use their declared contracts; their foreign implementation is outside this specification:
297
- - Call [`_aug_http_log`](contracts.md#symbol-_aug_http_log) with `method` = `method`; `path` = `path`; `status` = `status`; `milliseconds` = `milliseconds`.
298
-
299
- ### `HttpClient` {#symbol-HttpClient}
300
-
301
- [source](contracts.md#code)
302
-
303
- Capability interface.
304
-
305
- **Author documentation**
306
-
307
- An explicit outbound network capability. TLS verifies the peer and redirects are returned to the caller.
308
-
309
- #### `HttpClient.request` {#symbol-HttpClient.request}
310
-
311
- [source](contracts.md#code)
312
-
313
- **Inputs**
314
-
315
- - `method` (`string`) — required labeled input.
316
- - `url` (`string`) — required labeled input.
317
- - `headers` (`optional Headers`) — optional labeled input; omission becomes null.
318
- - `body` (`optional Bytes`) — optional labeled input; omission becomes null.
319
-
320
- Returns: `HttpResponse<Bytes>`.
321
-
322
- Capabilities: [`HttpClient.request`](contracts.md#symbol-HttpClient.request).
323
-
324
- Can fail with `HttpError`. Callers must catch or propagate these errors.
325
-
326
- Interface contract. A selected implementation supplies the behavior.
327
-
328
- **Author documentation**
329
-
330
- Perform an HTTP request with bounded bytes. Inside a task, waiting suspends the task's C stack.
331
-
332
- ### `WebHttpClient` {#symbol-WebHttpClient}
333
-
334
- [source](contracts.md#code)
335
-
336
- Behavioral class.
337
-
338
- Satisfies [`HttpClient`](contracts.md#symbol-HttpClient).
339
-
340
- **Author documentation**
341
-
342
- Native libwebsockets transport. No socket is opened by construction.
343
-
344
- #### `WebHttpClient.request` {#symbol-WebHttpClient.request}
345
-
346
- [source](contracts.md#code)
347
-
348
- **Inputs**
349
-
350
- - `method` (`string`) — required labeled input.
351
- - `url` (`string`) — required labeled input.
352
- - `headers` (`optional Headers`) — optional labeled input; omission becomes null.
353
- - `body` (`optional Bytes`) — optional labeled input; omission becomes null.
354
-
355
- Returns: `HttpResponse<Bytes>`.
356
-
357
- Capabilities: [`HttpClient.request`](contracts.md#symbol-HttpClient.request).
358
-
359
- Can fail with `HttpError`. Callers must catch or propagate these errors.
360
-
361
- **What it does**
362
-
363
- - Enter an unsafe boundary. Native calls use their declared contracts; their foreign implementation is outside this specification:
364
- - Return call [`_aug_http_request`](contracts.md#symbol-_aug_http_request) with `method` = `method`; `url` = `url`; `headers` = `headers`; `body` = `body`.
365
-
366
- **Author documentation**
367
-
368
- Perform an HTTP request with bounded bytes. Inside a task, waiting suspends the task's C stack.
369
-
370
- ### `redirect` {#symbol-redirect}
371
-
372
- [source](contracts.md#code)
373
-
374
- **Inputs**
375
-
376
- - `location` (`string`) — required labeled input.
377
- - `status` (`optional int`) — optional labeled input; omission becomes null.
378
-
379
- Returns: `HttpResponse<string>`.
380
-
381
- Can fail with `HttpError`. Callers must catch or propagate these errors.
382
-
383
- **What it does**
384
-
385
- - Set `code` to `303`.
386
- - Select the matching case for `status`:
387
- - A null value, including omitted optional input:
388
- - Continue without another operation.
389
- - A present, non-null value, named `value`:
390
- - Set `code` to `value`.
391
- - Set `headers` to call `with` on call `Headers` with `name` = `"location"`; `value` = `location`.
392
- - Return call `HttpResponse` with `body` = `""`; `status` = `code`; `headers` = `headers`.
393
-
394
- **Author documentation**
395
-
396
- Return a redirect with an explicit status. Location is checked as a header value.
397
-
398
- ### `urlEncode` {#symbol-urlEncode}
399
-
400
- [source](contracts.md#code)
401
-
402
- **Inputs**
403
-
404
- - `input` (`string`) — required labeled input.
405
-
406
- Returns: `string`.
407
-
408
- Can fail with `HttpError`. Callers must catch or propagate these errors.
409
-
410
- **What it does**
411
-
412
- - Enter an unsafe boundary. Native calls use their declared contracts; their foreign implementation is outside this specification:
413
- - Return call [`_aug_http_url_encode`](contracts.md#symbol-_aug_http_url_encode) with `input` = `input`.
414
-
415
- **Author documentation**
416
-
417
- Encode a UTF-8 value as one URL query or form component using RFC 3986 unreserved characters.
418
-
419
- ### `cookie` {#symbol-cookie}
420
-
421
- [source](contracts.md#code)
422
-
423
- **Inputs**
424
-
425
- - `name` (`string`) — required labeled input.
426
- - `value` (`string`) — required labeled input.
427
- - `path` (`string`) — required labeled input.
428
- - `maxAge` (`int`) — required labeled input.
429
- - `secure` (`bool`) — required labeled input.
430
-
431
- Returns: `Headers`.
432
-
433
- Can fail with `HttpError`. Callers must catch or propagate these errors.
434
-
435
- **What it does**
436
-
437
- - Enter an unsafe boundary. Native calls use their declared contracts; their foreign implementation is outside this specification:
438
- - Return call [`_aug_http_cookie`](contracts.md#symbol-_aug_http_cookie) with `name` = `name`; `value` = `value`; `path` = `path`; `maxAge` = `maxAge`; `secure` = `secure`.
439
-
440
- **Author documentation**
441
-
442
- Construct an HttpOnly, SameSite=Lax session cookie. Secure defaults are chosen explicitly at the call site. Values and paths reject delimiters and controls. maxAge=0 clears the cookie.
443
-
444
- ### `_aug_http_log` {#symbol-_aug_http_log}
445
-
446
- [source](contracts.md#code)
447
-
448
- Private to its defining scope.
449
-
450
- **Inputs**
451
-
452
- - `method` (`string`) — required labeled input.
453
- - `path` (`string`) — required labeled input.
454
- - `status` (`int`) — required labeled input.
455
- - `milliseconds` (`int`) — required labeled input.
456
-
457
- Returns: no value.
458
-
459
- Capabilities: [`RequestLogger.complete`](contracts.md#symbol-RequestLogger.complete).
460
-
461
- Native C operation. Its declared inputs, result, effects, and errors are the visible contract. The C implementation is outside this specification.
462
-
463
- ### `_aug_http_request` {#symbol-_aug_http_request}
464
-
465
- [source](contracts.md#code)
466
-
467
- Private to its defining scope.
468
-
469
- **Inputs**
470
-
471
- - `method` (`string`) — required labeled input.
472
- - `url` (`string`) — required labeled input.
473
- - `headers` (`optional Headers`) — optional labeled input; omission becomes null.
474
- - `body` (`optional Bytes`) — optional labeled input; omission becomes null.
475
-
476
- Returns: `HttpResponse<Bytes>`.
477
-
478
- Capabilities: [`HttpClient.request`](contracts.md#symbol-HttpClient.request).
479
-
480
- Can fail with `HttpError`. Callers must catch or propagate these errors.
481
-
482
- Native C operation. Its declared inputs, result, effects, and errors are the visible contract. The C implementation is outside this specification.
483
-
484
- ### `_aug_http_url_encode` {#symbol-_aug_http_url_encode}
485
-
486
- [source](contracts.md#code)
487
-
488
- Private to its defining scope.
489
-
490
- **Inputs**
491
-
492
- - `input` (`string`) — required labeled input.
493
-
494
- Returns: `string`.
495
-
496
- Can fail with `HttpError`. Callers must catch or propagate these errors.
497
-
498
- Native C operation. Its declared inputs, result, effects, and errors are the visible contract. The C implementation is outside this specification.
499
-
500
- ### `_aug_http_cookie` {#symbol-_aug_http_cookie}
501
-
502
- [source](contracts.md#code)
503
-
504
- Private to its defining scope.
505
-
506
- **Inputs**
507
-
508
- - `name` (`string`) — required labeled input.
509
- - `value` (`string`) — required labeled input.
510
- - `path` (`string`) — required labeled input.
511
- - `maxAge` (`int`) — required labeled input.
512
- - `secure` (`bool`) — required labeled input.
513
-
514
- Returns: `Headers`.
515
-
516
- Can fail with `HttpError`. Callers must catch or propagate these errors.
517
-
518
- Native C operation. Its declared inputs, result, effects, and errors are the visible contract. The C implementation is outside this specification.
519
-
520
- ### Built-in operations used by this file
521
-
522
- - `Headers.with` (`name`: `string`, `value`: `string`) → `Headers`: Return new headers with one additional validated field. Header names ignore case; duplicate values remain separate. Can fail with `HttpError`.
523
-
524
- [Full built-in reference](https://greenpandastudios.github.io/augscript/language-constructs).
525
-
526
- ### Shared language rules
527
-
528
- See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
529
-
530
- ::::
531
-
532
- :::::