@greenpandastudios/aug-cli 0.19.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 (414) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +13 -0
  3. package/THIRD_PARTY_NOTICES.md +18 -0
  4. package/bin/aug.mjs +3 -0
  5. package/docs/api/crypto.md +351 -0
  6. package/docs/api/io.md +207 -0
  7. package/docs/api/json.md +21 -0
  8. package/docs/api/memory.md +109 -0
  9. package/docs/api/time.md +54 -0
  10. package/docs/api/web.md +184 -0
  11. package/docs/assets/benchmarks/execution.svg +2978 -0
  12. package/docs/assets/benchmarks/http.svg +1674 -0
  13. package/docs/assets/benchmarks/improvements.svg +2315 -0
  14. package/docs/assets/benchmarks/memory.svg +1891 -0
  15. package/docs/benchmark-baseline.json +1087 -0
  16. package/docs/benchmark-results.json +91123 -0
  17. package/docs/benchmarks.json +38 -0
  18. package/docs/compatibility.md +42 -0
  19. package/docs/concurrency-implementation.md +18 -0
  20. package/docs/diagnostics.md +97 -0
  21. package/docs/docker.md +35 -0
  22. package/docs/example-projects.json +26 -0
  23. package/docs/examples/approved-design/counters.md +253 -0
  24. package/docs/examples/approved-design/dependencies/august/0.19.0/io/contracts.md +395 -0
  25. package/docs/examples/approved-design/domain/app.md +165 -0
  26. package/docs/examples/approved-design/domain/export.md +83 -0
  27. package/docs/examples/approved-design/domain/models.md +80 -0
  28. package/docs/examples/approved-design/domain/numbers.md +248 -0
  29. package/docs/examples/approved-design/index.md +39 -0
  30. package/docs/examples/approved-design/main-yaml.md +24 -0
  31. package/docs/examples/approved-design/main.md +215 -0
  32. package/docs/examples/benchmark/index.md +33 -0
  33. package/docs/examples/benchmark/main-yaml.md +17 -0
  34. package/docs/examples/benchmark/main.md +117 -0
  35. package/docs/examples/cli-args/index.md +32 -0
  36. package/docs/examples/cli-args/main.md +107 -0
  37. package/docs/examples/collections/index.md +32 -0
  38. package/docs/examples/collections/main.md +118 -0
  39. package/docs/examples/collections-benchmark/index.md +34 -0
  40. package/docs/examples/collections-benchmark/main.md +115 -0
  41. package/docs/examples/cpu-benchmark/index.md +34 -0
  42. package/docs/examples/cpu-benchmark/main.md +90 -0
  43. package/docs/examples/developer-workflow/calculator.md +357 -0
  44. package/docs/examples/developer-workflow/dependencies/august/0.19.0/io/contracts.md +395 -0
  45. package/docs/examples/developer-workflow/index.md +37 -0
  46. package/docs/examples/developer-workflow/logging/console.md +124 -0
  47. package/docs/examples/developer-workflow/logging/export.md +70 -0
  48. package/docs/examples/developer-workflow/logging/logger.md +111 -0
  49. package/docs/examples/developer-workflow/main.md +172 -0
  50. package/docs/examples/drop/index.md +33 -0
  51. package/docs/examples/drop/main.md +85 -0
  52. package/docs/examples/drop/resource.md +95 -0
  53. package/docs/examples/errors/errors.md +85 -0
  54. package/docs/examples/errors/index.md +33 -0
  55. package/docs/examples/errors/main.md +92 -0
  56. package/docs/examples/ffi/index.md +33 -0
  57. package/docs/examples/ffi/main.md +75 -0
  58. package/docs/examples/ffi/native.md +93 -0
  59. package/docs/examples/generic-di/dependencies/august/0.19.0/io/contracts.md +395 -0
  60. package/docs/examples/generic-di/index.md +33 -0
  61. package/docs/examples/generic-di/main.md +111 -0
  62. package/docs/examples/generic-di/types.md +180 -0
  63. package/docs/examples/generics/index.md +33 -0
  64. package/docs/examples/generics/main.md +120 -0
  65. package/docs/examples/generics/types.md +189 -0
  66. package/docs/examples/hello/app/export.md +67 -0
  67. package/docs/examples/hello/app/greeter.md +190 -0
  68. package/docs/examples/hello/dependencies/august/0.19.0/io/contracts.md +395 -0
  69. package/docs/examples/hello/index.md +37 -0
  70. package/docs/examples/hello/logging/console.md +121 -0
  71. package/docs/examples/hello/logging/export.md +71 -0
  72. package/docs/examples/hello/logging/logger.md +120 -0
  73. package/docs/examples/hello/main.md +115 -0
  74. package/docs/examples/http-benchmark/index.md +35 -0
  75. package/docs/examples/http-benchmark/main.md +79 -0
  76. package/docs/examples/http-benchmark/routes.md +88 -0
  77. package/docs/examples/index.md +60 -0
  78. package/docs/examples/interceptors/app.md +250 -0
  79. package/docs/examples/interceptors/dependencies/august/0.19.0/io/contracts.md +395 -0
  80. package/docs/examples/interceptors/index.md +35 -0
  81. package/docs/examples/interceptors/interceptors.md +284 -0
  82. package/docs/examples/interceptors/logging.md +155 -0
  83. package/docs/examples/interceptors/main.md +162 -0
  84. package/docs/examples/json-benchmark/data.md +71 -0
  85. package/docs/examples/json-benchmark/dependencies/august/0.19.0/json/contracts.md +103 -0
  86. package/docs/examples/json-benchmark/index.md +35 -0
  87. package/docs/examples/json-benchmark/main.md +131 -0
  88. package/docs/examples/new-syntax/console.md +118 -0
  89. package/docs/examples/new-syntax/dependencies/august/0.19.0/io/contracts.md +395 -0
  90. package/docs/examples/new-syntax/greeter.md +145 -0
  91. package/docs/examples/new-syntax/index.md +36 -0
  92. package/docs/examples/new-syntax/logger.md +111 -0
  93. package/docs/examples/new-syntax/main.md +135 -0
  94. package/docs/examples/new-syntax/math.md +79 -0
  95. package/docs/examples/oidc-login/client/contracts.md +151 -0
  96. package/docs/examples/oidc-login/client/endpoints.md +263 -0
  97. package/docs/examples/oidc-login/client/export.md +107 -0
  98. package/docs/examples/oidc-login/client/login.md +515 -0
  99. package/docs/examples/oidc-login/client/logout.md +249 -0
  100. package/docs/examples/oidc-login/client/protocol.md +595 -0
  101. package/docs/examples/oidc-login/client/session.md +297 -0
  102. package/docs/examples/oidc-login/client/views.md +144 -0
  103. package/docs/examples/oidc-login/common/export.md +115 -0
  104. package/docs/examples/oidc-login/common/headers.md +162 -0
  105. package/docs/examples/oidc-login/common/keys.md +336 -0
  106. package/docs/examples/oidc-login/common/settings.md +116 -0
  107. package/docs/examples/oidc-login/common/views.md +103 -0
  108. package/docs/examples/oidc-login/dependencies/august/0.19.0/crypto/contracts.md +925 -0
  109. package/docs/examples/oidc-login/dependencies/august/0.19.0/crypto/jose.md +434 -0
  110. package/docs/examples/oidc-login/dependencies/august/0.19.0/json/contracts.md +103 -0
  111. package/docs/examples/oidc-login/dependencies/august/0.19.0/memory/store.md +374 -0
  112. package/docs/examples/oidc-login/dependencies/august/0.19.0/time/contracts.md +150 -0
  113. package/docs/examples/oidc-login/dependencies/august/0.19.0/web/contracts.md +532 -0
  114. package/docs/examples/oidc-login/index.md +57 -0
  115. package/docs/examples/oidc-login/main-yaml.md +28 -0
  116. package/docs/examples/oidc-login/main.md +283 -0
  117. package/docs/examples/oidc-login/provider/authorization.md +457 -0
  118. package/docs/examples/oidc-login/provider/contracts.md +267 -0
  119. package/docs/examples/oidc-login/provider/credentials.md +148 -0
  120. package/docs/examples/oidc-login/provider/discovery.md +215 -0
  121. package/docs/examples/oidc-login/provider/export.md +131 -0
  122. package/docs/examples/oidc-login/provider/token.md +364 -0
  123. package/docs/examples/oidc-login/provider/userinfo.md +228 -0
  124. package/docs/examples/oidc-login/provider/views.md +137 -0
  125. package/docs/examples/ownership/counter.md +140 -0
  126. package/docs/examples/ownership/index.md +33 -0
  127. package/docs/examples/ownership/main.md +90 -0
  128. package/docs/examples/ownership-transfer/dependencies/august/0.19.0/io/contracts.md +395 -0
  129. package/docs/examples/ownership-transfer/index.md +33 -0
  130. package/docs/examples/ownership-transfer/main.md +125 -0
  131. package/docs/examples/ownership-transfer/resource.md +150 -0
  132. package/docs/examples/packages-app/dependencies/packages/@example/aug-math/0.1.0/arithmetic.md +117 -0
  133. package/docs/examples/packages-app/index.md +34 -0
  134. package/docs/examples/packages-app/main-yaml.md +18 -0
  135. package/docs/examples/packages-app/main.md +80 -0
  136. package/docs/examples/packages-math/aug-package-json.md +24 -0
  137. package/docs/examples/packages-math/index.md +36 -0
  138. package/docs/examples/packages-math/package-json.md +25 -0
  139. package/docs/examples/packages-math/src/arithmetic.md +121 -0
  140. package/docs/examples/packages-math/src/export.md +63 -0
  141. package/docs/examples/startup-benchmark/index.md +34 -0
  142. package/docs/examples/startup-benchmark/main.md +68 -0
  143. package/docs/examples/visibility/counter.md +142 -0
  144. package/docs/examples/visibility/index.md +33 -0
  145. package/docs/examples/visibility/main.md +96 -0
  146. package/docs/examples.json +47 -0
  147. package/docs/getting-started.md +5 -0
  148. package/docs/grammar.md +136 -0
  149. package/docs/implementation-map.md +106 -0
  150. package/docs/index.md +46 -0
  151. package/docs/language-conformance.md +30 -0
  152. package/docs/language-constructs.md +1461 -0
  153. package/docs/language-design-audit.md +147 -0
  154. package/docs/maintaining-docs.md +43 -0
  155. package/docs/packages.md +184 -0
  156. package/docs/performance.md +535 -0
  157. package/docs/production-readiness.md +39 -0
  158. package/docs/reference.md +361 -0
  159. package/docs/release-review.md +23 -0
  160. package/docs/releasing.md +79 -0
  161. package/docs/roadmap.md +13 -0
  162. package/docs/specifications.md +86 -0
  163. package/docs/testing.md +120 -0
  164. package/docs/tooling.md +197 -0
  165. package/docs/web-implementation-plan.md +39 -0
  166. package/docs/web-library-gaps.md +27 -0
  167. package/docs/web.md +197 -0
  168. package/examples/approved-design/.aug-spec/august/0.19.0/io/contracts.aug +36 -0
  169. package/examples/approved-design/.aug-spec/august/0.19.0/io/contracts.aug.md +316 -0
  170. package/examples/approved-design/.aug-spec/manifest.json +14 -0
  171. package/examples/approved-design/counters.aug +22 -0
  172. package/examples/approved-design/counters.aug.md +177 -0
  173. package/examples/approved-design/domain/app.aug +12 -0
  174. package/examples/approved-design/domain/app.aug.md +97 -0
  175. package/examples/approved-design/domain/export.aug +5 -0
  176. package/examples/approved-design/domain/export.aug.md +25 -0
  177. package/examples/approved-design/domain/models.aug +2 -0
  178. package/examples/approved-design/domain/models.aug.md +30 -0
  179. package/examples/approved-design/domain/numbers.aug +29 -0
  180. package/examples/approved-design/domain/numbers.aug.md +141 -0
  181. package/examples/approved-design/main.aug +26 -0
  182. package/examples/approved-design/main.aug.md +108 -0
  183. package/examples/approved-design/main.yaml +8 -0
  184. package/examples/benchmark/.aug-spec/manifest.json +7 -0
  185. package/examples/benchmark/main.aug +17 -0
  186. package/examples/benchmark/main.aug.md +43 -0
  187. package/examples/benchmark/main.yaml +1 -0
  188. package/examples/cli-args/.aug-spec/manifest.json +7 -0
  189. package/examples/cli-args/main.aug +15 -0
  190. package/examples/cli-args/main.aug.md +38 -0
  191. package/examples/collections/.aug-spec/manifest.json +7 -0
  192. package/examples/collections/main.aug +18 -0
  193. package/examples/collections/main.aug.md +43 -0
  194. package/examples/developer-workflow/.aug-spec/august/0.19.0/io/contracts.aug +36 -0
  195. package/examples/developer-workflow/.aug-spec/august/0.19.0/io/contracts.aug.md +316 -0
  196. package/examples/developer-workflow/.aug-spec/manifest.json +13 -0
  197. package/examples/developer-workflow/calculator.aug +55 -0
  198. package/examples/developer-workflow/calculator.aug.md +228 -0
  199. package/examples/developer-workflow/logging/console.aug +8 -0
  200. package/examples/developer-workflow/logging/console.aug.md +67 -0
  201. package/examples/developer-workflow/logging/export.aug +2 -0
  202. package/examples/developer-workflow/logging/export.aug.md +19 -0
  203. package/examples/developer-workflow/logging/logger.aug +6 -0
  204. package/examples/developer-workflow/logging/logger.aug.md +57 -0
  205. package/examples/developer-workflow/main.aug +25 -0
  206. package/examples/developer-workflow/main.aug.md +79 -0
  207. package/examples/drop/.aug-spec/manifest.json +8 -0
  208. package/examples/drop/main.aug +3 -0
  209. package/examples/drop/main.aug.md +35 -0
  210. package/examples/drop/resource.aug +8 -0
  211. package/examples/drop/resource.aug.md +44 -0
  212. package/examples/errors/.aug-spec/manifest.json +8 -0
  213. package/examples/errors/errors.aug +6 -0
  214. package/examples/errors/errors.aug.md +33 -0
  215. package/examples/errors/main.aug +7 -0
  216. package/examples/errors/main.aug.md +36 -0
  217. package/examples/ffi/.aug-spec/manifest.json +8 -0
  218. package/examples/ffi/main.aug +2 -0
  219. package/examples/ffi/main.aug.md +27 -0
  220. package/examples/ffi/native.aug +6 -0
  221. package/examples/ffi/native.aug.md +43 -0
  222. package/examples/generic-di/.aug-spec/august/0.19.0/io/contracts.aug +36 -0
  223. package/examples/generic-di/.aug-spec/august/0.19.0/io/contracts.aug.md +316 -0
  224. package/examples/generic-di/.aug-spec/manifest.json +10 -0
  225. package/examples/generic-di/main.aug +9 -0
  226. package/examples/generic-di/main.aug.md +49 -0
  227. package/examples/generic-di/types.aug +17 -0
  228. package/examples/generic-di/types.aug.md +124 -0
  229. package/examples/generics/.aug-spec/manifest.json +8 -0
  230. package/examples/generics/main.aug +9 -0
  231. package/examples/generics/main.aug.md +58 -0
  232. package/examples/generics/types.aug +19 -0
  233. package/examples/generics/types.aug.md +132 -0
  234. package/examples/hello/.aug-spec/august/0.19.0/io/contracts.aug +36 -0
  235. package/examples/hello/.aug-spec/august/0.19.0/io/contracts.aug.md +316 -0
  236. package/examples/hello/.aug-spec/manifest.json +14 -0
  237. package/examples/hello/app/export.aug +1 -0
  238. package/examples/hello/app/export.aug.md +17 -0
  239. package/examples/hello/app/greeter.aug +22 -0
  240. package/examples/hello/app/greeter.aug.md +109 -0
  241. package/examples/hello/logging/console.aug +7 -0
  242. package/examples/hello/logging/console.aug.md +65 -0
  243. package/examples/hello/logging/export.aug +2 -0
  244. package/examples/hello/logging/export.aug.md +19 -0
  245. package/examples/hello/logging/logger.aug +9 -0
  246. package/examples/hello/logging/logger.aug.md +59 -0
  247. package/examples/hello/main.aug +9 -0
  248. package/examples/hello/main.aug.md +49 -0
  249. package/examples/interceptors/.aug-spec/august/0.19.0/io/contracts.aug +36 -0
  250. package/examples/interceptors/.aug-spec/august/0.19.0/io/contracts.aug.md +316 -0
  251. package/examples/interceptors/.aug-spec/manifest.json +12 -0
  252. package/examples/interceptors/app.aug +28 -0
  253. package/examples/interceptors/app.aug.md +162 -0
  254. package/examples/interceptors/interceptors.aug +40 -0
  255. package/examples/interceptors/interceptors.aug.md +180 -0
  256. package/examples/interceptors/logging.aug +12 -0
  257. package/examples/interceptors/logging.aug.md +96 -0
  258. package/examples/interceptors/main.aug +22 -0
  259. package/examples/interceptors/main.aug.md +76 -0
  260. package/examples/new-syntax/.aug-spec/august/0.19.0/io/contracts.aug +36 -0
  261. package/examples/new-syntax/.aug-spec/august/0.19.0/io/contracts.aug.md +316 -0
  262. package/examples/new-syntax/.aug-spec/manifest.json +13 -0
  263. package/examples/new-syntax/console.aug +7 -0
  264. package/examples/new-syntax/console.aug.md +63 -0
  265. package/examples/new-syntax/greeter.aug +10 -0
  266. package/examples/new-syntax/greeter.aug.md +89 -0
  267. package/examples/new-syntax/logger.aug +6 -0
  268. package/examples/new-syntax/logger.aug.md +57 -0
  269. package/examples/new-syntax/main.aug +12 -0
  270. package/examples/new-syntax/main.aug.md +64 -0
  271. package/examples/new-syntax/math.aug +3 -0
  272. package/examples/new-syntax/math.aug.md +29 -0
  273. package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/contracts.aug +73 -0
  274. package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/contracts.aug.md +791 -0
  275. package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/jose.aug +68 -0
  276. package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/jose.aug.md +266 -0
  277. package/examples/oidc-login/.aug-spec/august/0.19.0/json/contracts.aug +6 -0
  278. package/examples/oidc-login/.aug-spec/august/0.19.0/json/contracts.aug.md +55 -0
  279. package/examples/oidc-login/.aug-spec/august/0.19.0/memory/store.aug +45 -0
  280. package/examples/oidc-login/.aug-spec/august/0.19.0/memory/store.aug.md +250 -0
  281. package/examples/oidc-login/.aug-spec/august/0.19.0/time/contracts.aug +11 -0
  282. package/examples/oidc-login/.aug-spec/august/0.19.0/time/contracts.aug.md +96 -0
  283. package/examples/oidc-login/.aug-spec/august/0.19.0/web/contracts.aug +58 -0
  284. package/examples/oidc-login/.aug-spec/august/0.19.0/web/contracts.aug.md +420 -0
  285. package/examples/oidc-login/.aug-spec/manifest.json +40 -0
  286. package/examples/oidc-login/README.md +29 -0
  287. package/examples/oidc-login/client/contracts.aug +7 -0
  288. package/examples/oidc-login/client/contracts.aug.md +80 -0
  289. package/examples/oidc-login/client/endpoints.aug +21 -0
  290. package/examples/oidc-login/client/endpoints.aug.md +161 -0
  291. package/examples/oidc-login/client/export.aug +7 -0
  292. package/examples/oidc-login/client/export.aug.md +29 -0
  293. package/examples/oidc-login/client/login.aug +58 -0
  294. package/examples/oidc-login/client/login.aug.md +331 -0
  295. package/examples/oidc-login/client/logout.aug +18 -0
  296. package/examples/oidc-login/client/logout.aug.md +150 -0
  297. package/examples/oidc-login/client/protocol.aug +106 -0
  298. package/examples/oidc-login/client/protocol.aug.md +326 -0
  299. package/examples/oidc-login/client/session.aug +34 -0
  300. package/examples/oidc-login/client/session.aug.md +155 -0
  301. package/examples/oidc-login/client/views.aug +21 -0
  302. package/examples/oidc-login/client/views.aug.md +68 -0
  303. package/examples/oidc-login/common/export.aug +9 -0
  304. package/examples/oidc-login/common/export.aug.md +33 -0
  305. package/examples/oidc-login/common/headers.aug +11 -0
  306. package/examples/oidc-login/common/headers.aug.md +79 -0
  307. package/examples/oidc-login/common/keys.aug +37 -0
  308. package/examples/oidc-login/common/keys.aug.md +207 -0
  309. package/examples/oidc-login/common/settings.aug +4 -0
  310. package/examples/oidc-login/common/settings.aug.md +47 -0
  311. package/examples/oidc-login/common/views.aug +16 -0
  312. package/examples/oidc-login/common/views.aug.md +34 -0
  313. package/examples/oidc-login/main.aug +39 -0
  314. package/examples/oidc-login/main.aug.md +166 -0
  315. package/examples/oidc-login/main.yaml +12 -0
  316. package/examples/oidc-login/provider/authorization.aug +59 -0
  317. package/examples/oidc-login/provider/authorization.aug.md +264 -0
  318. package/examples/oidc-login/provider/contracts.aug +15 -0
  319. package/examples/oidc-login/provider/contracts.aug.md +193 -0
  320. package/examples/oidc-login/provider/credentials.aug +10 -0
  321. package/examples/oidc-login/provider/credentials.aug.md +64 -0
  322. package/examples/oidc-login/provider/discovery.aug +13 -0
  323. package/examples/oidc-login/provider/discovery.aug.md +133 -0
  324. package/examples/oidc-login/provider/export.aug +13 -0
  325. package/examples/oidc-login/provider/export.aug.md +41 -0
  326. package/examples/oidc-login/provider/token.aug +37 -0
  327. package/examples/oidc-login/provider/token.aug.md +223 -0
  328. package/examples/oidc-login/provider/userinfo.aug +26 -0
  329. package/examples/oidc-login/provider/userinfo.aug.md +104 -0
  330. package/examples/oidc-login/provider/views.aug +18 -0
  331. package/examples/oidc-login/provider/views.aug.md +63 -0
  332. package/examples/ownership/.aug-spec/manifest.json +8 -0
  333. package/examples/ownership/counter.aug +14 -0
  334. package/examples/ownership/counter.aug.md +85 -0
  335. package/examples/ownership/main.aug +4 -0
  336. package/examples/ownership/main.aug.md +38 -0
  337. package/examples/ownership-transfer/.aug-spec/august/0.19.0/io/contracts.aug +36 -0
  338. package/examples/ownership-transfer/.aug-spec/august/0.19.0/io/contracts.aug.md +316 -0
  339. package/examples/ownership-transfer/.aug-spec/manifest.json +10 -0
  340. package/examples/ownership-transfer/main.aug +9 -0
  341. package/examples/ownership-transfer/main.aug.md +63 -0
  342. package/examples/ownership-transfer/resource.aug +16 -0
  343. package/examples/ownership-transfer/resource.aug.md +89 -0
  344. package/examples/packages/README.md +15 -0
  345. package/examples/packages/app/.aug-spec/manifest.json +9 -0
  346. package/examples/packages/app/.aug-spec/packages/@example/aug-math/0.1.0/arithmetic.aug +9 -0
  347. package/examples/packages/app/.aug-spec/packages/@example/aug-math/0.1.0/arithmetic.aug.md +63 -0
  348. package/examples/packages/app/main.aug +2 -0
  349. package/examples/packages/app/main.aug.md +33 -0
  350. package/examples/packages/app/main.yaml +2 -0
  351. package/examples/packages/math/.aug-spec/manifest.json +8 -0
  352. package/examples/packages/math/README.md +3 -0
  353. package/examples/packages/math/aug-package.json +8 -0
  354. package/examples/packages/math/package.json +9 -0
  355. package/examples/packages/math/src/arithmetic.aug +8 -0
  356. package/examples/packages/math/src/arithmetic.aug.md +63 -0
  357. package/examples/packages/math/src/export.aug +1 -0
  358. package/examples/packages/math/src/export.aug.md +17 -0
  359. package/examples/visibility/.aug-spec/manifest.json +8 -0
  360. package/examples/visibility/counter.aug +14 -0
  361. package/examples/visibility/counter.aug.md +87 -0
  362. package/examples/visibility/main.aug +7 -0
  363. package/examples/visibility/main.aug.md +39 -0
  364. package/package.json +50 -0
  365. package/runtime/aug_crypto.c +121 -0
  366. package/runtime/aug_html.c +93 -0
  367. package/runtime/aug_http.c +829 -0
  368. package/runtime/aug_json.c +165 -0
  369. package/runtime/aug_runtime.c +792 -0
  370. package/runtime/aug_runtime.h +245 -0
  371. package/runtime/aug_tasks.c +172 -0
  372. package/runtime/aug_time.c +5 -0
  373. package/runtime/aug_values.c +80 -0
  374. package/scripts/bootstrap-native.mjs +121 -0
  375. package/scripts/native-dependencies.lock.json +65 -0
  376. package/scripts/native-home.mjs +11 -0
  377. package/src/actions.js +109 -0
  378. package/src/ast.js +19 -0
  379. package/src/builtins.js +93 -0
  380. package/src/checker.js +2896 -0
  381. package/src/cli.js +344 -0
  382. package/src/codegen.js +1159 -0
  383. package/src/config.js +149 -0
  384. package/src/continuation.js +110 -0
  385. package/src/di.js +24 -0
  386. package/src/documentation.js +27 -0
  387. package/src/editor.js +782 -0
  388. package/src/effects.js +29 -0
  389. package/src/fixes.js +222 -0
  390. package/src/formatter.js +296 -0
  391. package/src/freshness.js +154 -0
  392. package/src/help.js +212 -0
  393. package/src/html.js +27 -0
  394. package/src/http-policies.js +90 -0
  395. package/src/inference.js +16 -0
  396. package/src/interceptors.js +70 -0
  397. package/src/javadoc.js +67 -0
  398. package/src/lexer.js +199 -0
  399. package/src/libraries.js +31 -0
  400. package/src/lsp.js +180 -0
  401. package/src/native.js +144 -0
  402. package/src/navigation.js +162 -0
  403. package/src/openapi.js +220 -0
  404. package/src/ownership.js +232 -0
  405. package/src/package-manager.js +299 -0
  406. package/src/parser.js +1155 -0
  407. package/src/policies.js +130 -0
  408. package/src/project-init.js +19 -0
  409. package/src/project.js +292 -0
  410. package/src/schemas.js +62 -0
  411. package/src/semantic.js +255 -0
  412. package/src/spec.js +738 -0
  413. package/src/testing.js +186 -0
  414. package/src/types.js +10 -0
@@ -0,0 +1,532 @@
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
+ :::::
@@ -0,0 +1,57 @@
1
+ ---
2
+ title: "OpenID Connect login application"
3
+ generated: true
4
+ source: "examples/oidc-login"
5
+ editLink: false
6
+ prev: false
7
+ next: false
8
+ outline: [2, 3]
9
+ ---
10
+
11
+ # OpenID Connect login application
12
+
13
+ A login page, provider, client, session JWT, and logout flow in one August project.
14
+
15
+ Read a file below to see its highlighted source and the Markdown produced by `aug spec`. Choose **Indentation** or **Braces** above the code. Both views describe the same checked program; your choice is kept when you open another file.
16
+
17
+ ## Project files
18
+
19
+ - [`main.aug`](main.md)
20
+ - [`client/contracts.aug`](client/contracts.md)
21
+ - [`client/endpoints.aug`](client/endpoints.md)
22
+ - [`client/export.aug`](client/export.md)
23
+ - [`client/login.aug`](client/login.md)
24
+ - [`client/logout.aug`](client/logout.md)
25
+ - [`client/protocol.aug`](client/protocol.md)
26
+ - [`client/session.aug`](client/session.md)
27
+ - [`client/views.aug`](client/views.md)
28
+ - [`common/export.aug`](common/export.md)
29
+ - [`common/headers.aug`](common/headers.md)
30
+ - [`common/keys.aug`](common/keys.md)
31
+ - [`common/settings.aug`](common/settings.md)
32
+ - [`common/views.aug`](common/views.md)
33
+ - [`provider/authorization.aug`](provider/authorization.md)
34
+ - [`provider/contracts.aug`](provider/contracts.md)
35
+ - [`provider/credentials.aug`](provider/credentials.md)
36
+ - [`provider/discovery.aug`](provider/discovery.md)
37
+ - [`provider/export.aug`](provider/export.md)
38
+ - [`provider/token.aug`](provider/token.md)
39
+ - [`provider/userinfo.aug`](provider/userinfo.md)
40
+ - [`provider/views.aug`](provider/views.md)
41
+
42
+ - [`main.yaml`](main-yaml.md)
43
+
44
+ ## Try this project
45
+
46
+ From a repository checkout with August installed:
47
+
48
+ ```sh
49
+ aug check examples/oidc-login
50
+ aug spec examples/oidc-login
51
+ aug test examples/oidc-login
52
+ aug run examples/oidc-login
53
+ ```
54
+
55
+ Open `http://127.0.0.1:8787` and sign in with **ada** / **august-demo**. This development example keeps accounts, signing keys, and sessions in process memory. See [web and crypto](../../web.md) and [the remaining library gaps](../../web-library-gaps.md).
56
+
57
+ [Browse all examples](../index.md)
@@ -0,0 +1,28 @@
1
+ ---
2
+ title: "main.yaml · OpenID Connect login application"
3
+ generated: true
4
+ source: "examples/oidc-login/main.yaml"
5
+ editLink: false
6
+ prev: false
7
+ next: false
8
+ outline: [2, 3]
9
+ ---
10
+
11
+ # `main.yaml`
12
+
13
+ [OpenID Connect login application](index.md) · Project configuration
14
+
15
+ ```yaml
16
+ block_style: indent
17
+ web:
18
+ host: 127.0.0.1
19
+ body_limit: 16384
20
+ response_limit: 1048576
21
+ openapi:
22
+ enabled: true
23
+ title: August OpenID Connect demo
24
+ version: 0.1.0
25
+ path: /openapi.json
26
+ docs: /docs
27
+ output: .aug-build/openapi.json
28
+ ```