@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,207 +1,71 @@
1
1
  <!-- Generated by aug spec. Edit the August source, then regenerate. -->
2
2
 
3
- # `keys.aug` specification
4
-
5
- August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
6
-
7
- ## In this file
8
-
9
- - [`KeyError`](keys.aug.md#symbol-KeyError) is a class implementing `Error`.
10
- - [`SigningKeys`](keys.aug.md#symbol-SigningKeys) is a capability interface.
11
- - [`MemorySigningKeys`](keys.aug.md#symbol-MemorySigningKeys) is a class implementing `SigningKeys`.
12
- - [`initializeKeys`](keys.aug.md#symbol-initializeKeys) is a function.
3
+ # `keys.aug`
13
4
 
14
5
  <a id="symbol-KeyError"></a>
6
+ ## `KeyError` · class · [source](keys.aug#L4)
15
7
 
16
- ## `KeyError`
17
-
18
- [source](keys.aug#L3)
19
-
20
- Behavioral class.
21
-
22
- Satisfies `Error`.
8
+ It implements `Error`.
23
9
 
24
10
  <a id="symbol-SigningKeys"></a>
25
-
26
- ## `SigningKeys`
27
-
28
- [source](keys.aug#L6)
29
-
30
- Capability interface.
31
-
32
- **Author documentation**
11
+ ## `SigningKeys` · capability interface · [source](keys.aug#L7)
33
12
 
34
13
  Keys are initialized explicitly in main and expose distinct provider and session roles.
35
14
 
36
15
  <a id="symbol-SigningKeys.configure"></a>
16
+ ### `SigningKeys.configure` · [source](keys.aug#L8)
37
17
 
38
- ### `SigningKeys.configure`
39
-
40
- [source](keys.aug#L7)
41
-
42
- **Inputs**
43
-
44
- - `provider` (`RsaPrivateKey`) — required labeled input.
45
- - `session` (`RsaPrivateKey`) — required labeled input.
46
-
47
- Returns: no value.
48
-
49
- Capabilities: [`SigningKeys.configure`](keys.aug.md#symbol-SigningKeys.configure).
50
-
51
- Can fail with `KeyError`. Callers must catch or propagate these errors.
52
-
53
- Interface contract. A selected implementation supplies the behavior.
18
+ It takes `provider` and `session` as `RsaPrivateKey`. It can call [`SigningKeys.configure`](keys.aug.md#symbol-SigningKeys.configure). Failures can raise [`KeyError`](keys.aug.md#symbol-KeyError).
54
19
 
55
20
  <a id="symbol-SigningKeys.provider"></a>
21
+ ### `SigningKeys.provider` · [source](keys.aug#L9)
56
22
 
57
- ### `SigningKeys.provider`
58
-
59
- [source](keys.aug#L8)
60
-
61
- Returns: `RsaPrivateKey`.
62
-
63
- Capabilities: [`SigningKeys.provider`](keys.aug.md#symbol-SigningKeys.provider).
64
-
65
- Can fail with `KeyError`. Callers must catch or propagate these errors.
66
-
67
- Interface contract. A selected implementation supplies the behavior.
23
+ It returns `RsaPrivateKey`. It can call [`SigningKeys.provider`](keys.aug.md#symbol-SigningKeys.provider). Failures can raise [`KeyError`](keys.aug.md#symbol-KeyError).
68
24
 
69
25
  <a id="symbol-SigningKeys.session"></a>
26
+ ### `SigningKeys.session` · [source](keys.aug#L10)
70
27
 
71
- ### `SigningKeys.session`
72
-
73
- [source](keys.aug#L9)
74
-
75
- Returns: `RsaPrivateKey`.
76
-
77
- Capabilities: [`SigningKeys.session`](keys.aug.md#symbol-SigningKeys.session).
78
-
79
- Can fail with `KeyError`. Callers must catch or propagate these errors.
80
-
81
- Interface contract. A selected implementation supplies the behavior.
28
+ It returns `RsaPrivateKey`. It can call [`SigningKeys.session`](keys.aug.md#symbol-SigningKeys.session). Failures can raise [`KeyError`](keys.aug.md#symbol-KeyError).
82
29
 
83
30
  <a id="symbol-MemorySigningKeys"></a>
31
+ ## `MemorySigningKeys` · class · [source](keys.aug#L12)
84
32
 
85
- ## `MemorySigningKeys`
86
-
87
- [source](keys.aug#L11)
88
-
89
- Behavioral class.
90
-
91
- Satisfies [`SigningKeys`](keys.aug.md#symbol-SigningKeys).
92
-
93
- **Field initialization**
94
-
95
- - Initialize `_keys` of type `Shared<Map<string,RsaPrivateKey>>` to call `Shared` with `value` = an empty map from `string` to `RsaPrivateKey`. Read-only storage, private to this class.
33
+ It implements [`SigningKeys`](keys.aug.md#symbol-SigningKeys). The read-only, private field `_keys` has type `Shared<Map<string,RsaPrivateKey>>` and starts as a `Shared` with `value` from an empty map from `string` to `RsaPrivateKey`.
96
34
 
97
35
  <a id="symbol-MemorySigningKeys.configure"></a>
36
+ ### `MemorySigningKeys.configure` · [source](keys.aug#L14)
98
37
 
99
- ### `MemorySigningKeys.configure`
100
-
101
- [source](keys.aug#L13)
102
-
103
- **Inputs**
104
-
105
- - `provider` (`RsaPrivateKey`) — required labeled input.
106
- - `session` (`RsaPrivateKey`) — required labeled input.
38
+ It takes `provider` and `session` as `RsaPrivateKey`. Failures can raise [`KeyError`](keys.aug.md#symbol-KeyError).
107
39
 
108
- Returns: no value.
40
+ While holding the lock on `_keys` as mutable `keys`, it checks that the number of elements in `keys` equals `0`. It raises a [`KeyError`](keys.aug.md#symbol-KeyError) at the first failed check. It stores `provider` in `keys` under `"provider"`. It stores `session` in `keys` under `"session"`.
109
41
 
110
- Capabilities: [`SigningKeys.configure`](keys.aug.md#symbol-SigningKeys.configure).
111
-
112
- Can fail with `KeyError`. Callers must catch or propagate these errors.
113
-
114
- **What it does**
115
-
116
- - Lock `_keys`, expose its mutable value as `keys`, and release the lock on every exit:
117
- - If call `length` on `keys` does not equal `0`:
118
- - Fail with call [`KeyError`](keys.aug.md#symbol-KeyError). Transfer control to a matching catch or propagate the failure.
119
- - Call `set` on `keys` with `key` = `"provider"`; `value` = `provider`.
120
- - Call `set` on `keys` with `key` = `"session"`; `value` = `session`.
42
+ Release this lock when the block exits, including on return or failure.
121
43
 
122
44
  <a id="symbol-MemorySigningKeys.provider"></a>
45
+ ### `MemorySigningKeys.provider` · [source](keys.aug#L20)
123
46
 
124
- ### `MemorySigningKeys.provider`
125
-
126
- [source](keys.aug#L19)
47
+ Failures can raise [`KeyError`](keys.aug.md#symbol-KeyError).
127
48
 
128
- Returns: `RsaPrivateKey`.
49
+ While holding the lock on `_keys` as mutable `keys`, it obtains the value under `"provider"` in `keys`. If no value is found, it raises a [`KeyError`](keys.aug.md#symbol-KeyError). The non-null result becomes `key`. It returns `key`.
129
50
 
130
- Capabilities: [`SigningKeys.provider`](keys.aug.md#symbol-SigningKeys.provider).
131
-
132
- Can fail with `KeyError`. Callers must catch or propagate these errors.
133
-
134
- **What it does**
135
-
136
- - Lock `_keys`, expose its mutable value as `keys`, and release the lock on every exit:
137
- - Select the matching case for call `get` on `keys` with `key` = `"provider"`:
138
- - A null value, including omitted optional input:
139
- - Fail with call [`KeyError`](keys.aug.md#symbol-KeyError). Transfer control to a matching catch or propagate the failure.
140
- - A present, non-null value, named `key`:
141
- - Return `key`.
51
+ Release this lock when the block exits, including on return or failure.
142
52
 
143
53
  <a id="symbol-MemorySigningKeys.session"></a>
54
+ ### `MemorySigningKeys.session` · [source](keys.aug#L27)
144
55
 
145
- ### `MemorySigningKeys.session`
146
-
147
- [source](keys.aug#L26)
148
-
149
- Returns: `RsaPrivateKey`.
150
-
151
- Capabilities: [`SigningKeys.session`](keys.aug.md#symbol-SigningKeys.session).
152
-
153
- Can fail with `KeyError`. Callers must catch or propagate these errors.
56
+ Failures can raise [`KeyError`](keys.aug.md#symbol-KeyError).
154
57
 
155
- **What it does**
58
+ While holding the lock on `_keys` as mutable `keys`, it obtains the value under `"session"` in `keys`. If no value is found, it raises a [`KeyError`](keys.aug.md#symbol-KeyError). The non-null result becomes `key`. It returns `key`.
156
59
 
157
- - Lock `_keys`, expose its mutable value as `keys`, and release the lock on every exit:
158
- - Select the matching case for call `get` on `keys` with `key` = `"session"`:
159
- - A null value, including omitted optional input:
160
- - Fail with call [`KeyError`](keys.aug.md#symbol-KeyError). Transfer control to a matching catch or propagate the failure.
161
- - A present, non-null value, named `key`:
162
- - Return `key`.
60
+ Release this lock when the block exits, including on return or failure.
163
61
 
164
62
  <a id="symbol-initializeKeys"></a>
63
+ ## `initializeKeys` · [source](keys.aug#L35)
165
64
 
166
- ## `initializeKeys`
167
-
168
- [source](keys.aug#L34)
169
-
170
- **Inputs**
171
-
172
- - `crypto` ([`Crypto`](../.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto)) — injected; callers omit it.
173
- - `keys` ([`SigningKeys`](keys.aug.md#symbol-SigningKeys)) — injected; callers omit it.
174
-
175
- Returns: no value.
176
-
177
- Capabilities: [`crypto.generateRsa`](../.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.generateRsa), [`keys.configure`](keys.aug.md#symbol-SigningKeys.configure).
178
-
179
- Can fail with `CryptoError`, `KeyError`. Callers must catch or propagate these errors.
180
-
181
- **What it does**
182
-
183
- - Set `provider` to call [`Crypto.generateRsa`](../.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.generateRsa) on `crypto`.
184
- - Set `session` to call [`Crypto.generateRsa`](../.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.generateRsa) on `crypto`.
185
- - Call [`SigningKeys.configure`](keys.aug.md#symbol-SigningKeys.configure) on `keys` with `provider` = `provider`; `session` = `session`.
186
-
187
- ## Dependencies used by this file
188
-
189
- Only referenced types and operations appear here. Each name links to its complete specification.
190
-
191
- ### [`Crypto`](../.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto)
192
-
193
- Capability interface from `august.crypto`.
194
-
195
- - [`Crypto.generateRsa`](../.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.generateRsa) (no caller inputs) → `RsaPrivateKey`; can fail with `CryptoError`.
196
-
197
- ## Built-in operations used by this file
198
-
199
- - `Map<string, RsaPrivateKey>.get` (`key`: `string`) → `optional RsaPrivateKey`: Read a value by key; an absent key returns null. contains distinguishes an absent key from a stored null.
200
- - `Map<string, RsaPrivateKey>.length` (no inputs) → `int`: Read the number of elements.
201
- - `Map<string, RsaPrivateKey>.set` (`key`: `string`, `value`: `RsaPrivateKey`) → `void`: Insert or replace an entry with exclusive mutable access. Changes the receiver.
65
+ It gets `crypto` ([`Crypto`](../.aug-spec/packages/%40git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/contracts.aug.md#symbol-Crypto)) and `keys` ([`SigningKeys`](keys.aug.md#symbol-SigningKeys)) from dependency injection. Failures can raise `CryptoError` and [`KeyError`](keys.aug.md#symbol-KeyError). It sets `provider` and `session` separately, each to [`crypto.generateRsa`](../.aug-spec/packages/%40git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/contracts.aug.md#symbol-Crypto.generateRsa). It calls [`keys.configure`](keys.aug.md#symbol-SigningKeys.configure) with `provider` and `session`.
202
66
 
203
- [Full built-in reference](https://greenpandastudios.github.io/augscript/language-constructs).
67
+ ## Dependencies
204
68
 
205
- ## Shared language rules
69
+ It uses [`Crypto`](../.aug-spec/packages/%40git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/contracts.aug.md#symbol-Crypto) ([`generateRsa`](../.aug-spec/packages/%40git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/contracts.aug.md#symbol-Crypto.generateRsa)) from `crypto`.
206
70
 
207
- See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
71
+ Built-in operations follow the [language reference](https://greenpandastudios.github.io/augscript/language-constructs).
@@ -1,4 +1,5 @@
1
+ // aug-spec: "settings.aug.md" explains this file. Read it before changes; refresh with aug spec.
1
2
  /** Explicit loopback development settings. The provider accepts one registered client and its exact callback URI. */
2
3
  record Settings(string baseUrl, string issuer, string clientId, string callback, int sessionSeconds, bool secureCookies)
3
- settings() returns Settings:
4
+ settings() :
4
5
  return Settings(baseUrl="http://127.0.0.1:8787", issuer="http://127.0.0.1:8787/provider", clientId="august-login-app", callback="http://127.0.0.1:8787/login/callback", sessionSeconds=900, secureCookies=false)
@@ -1,47 +1,13 @@
1
1
  <!-- Generated by aug spec. Edit the August source, then regenerate. -->
2
2
 
3
- # `settings.aug` specification
4
-
5
- August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
6
-
7
- ## In this file
8
-
9
- - [`Settings`](settings.aug.md#symbol-Settings) is an immutable record.
10
- - [`settings`](settings.aug.md#symbol-settings) is a function returning `Settings`.
3
+ # `settings.aug`
11
4
 
12
5
  <a id="symbol-Settings"></a>
6
+ ## `Settings` · immutable record · [source](settings.aug#L3)
13
7
 
14
- ## `Settings`
15
-
16
- [source](settings.aug#L2)
17
-
18
- Immutable record.
19
-
20
- **Author documentation**
21
-
22
- Explicit loopback development settings. The provider accepts one registered client and its exact callback URI.
23
-
24
- **Inputs**
25
-
26
- - `baseUrl` (`string`) — required labeled input — stored as `baseUrl` and read-only after initialization.
27
- - `issuer` (`string`) — required labeled input — stored as `issuer` and read-only after initialization.
28
- - `clientId` (`string`) — required labeled input — stored as `clientId` and read-only after initialization.
29
- - `callback` (`string`) — required labeled input — stored as `callback` and read-only after initialization.
30
- - `sessionSeconds` (`int`) — required labeled input — stored as `sessionSeconds` and read-only after initialization.
31
- - `secureCookies` (`bool`) — required labeled input — stored as `secureCookies` and read-only after initialization.
8
+ Explicit loopback development settings. The provider accepts one registered client and its exact callback URI. It takes `baseUrl`, `issuer`, `clientId`, and `callback` as strings, kept read-only, `sessionSeconds` as an integer, kept read-only, and `secureCookies` as a boolean, kept read-only.
32
9
 
33
10
  <a id="symbol-settings"></a>
11
+ ## `settings` · [source](settings.aug#L4)
34
12
 
35
- ## `settings`
36
-
37
- [source](settings.aug#L3)
38
-
39
- Returns: [`Settings`](settings.aug.md#symbol-Settings).
40
-
41
- **What it does**
42
-
43
- - Return call [`Settings`](settings.aug.md#symbol-Settings) with `baseUrl` = `"http://127.0.0.1:8787"`; `issuer` = `"http://127.0.0.1:8787/provider"`; `clientId` = `"august-login-app"`; `callback` = `"http://127.0.0.1:8787/login/callback"`; `sessionSeconds` = `900`; `secureCookies` = `false`.
44
-
45
- ## Shared language rules
46
-
47
- See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
13
+ It returns a [`Settings`](settings.aug.md#symbol-Settings) with `baseUrl` `"http://127.0.0.1:8787"`, `issuer` `"http://127.0.0.1:8787/provider"`, `clientId` `"august-login-app"`, `callback` `"http://127.0.0.1:8787/login/callback"`, `sessionSeconds` `900`, and `secureCookies` `false`.
@@ -1,5 +1,6 @@
1
+ // aug-spec: "views.aug.md" explains this file. Read it before changes; refresh with aug spec.
1
2
  /** Small server components keep each page's behavior and dependencies visible. */
2
- Page(string title, List<Html> children) returns Html:
3
+ Page(string title, List<Html> children) :
3
4
  return <html lang="en">
4
5
  <head>
5
6
  <meta charset="utf-8" />
@@ -1,34 +1,10 @@
1
1
  <!-- Generated by aug spec. Edit the August source, then regenerate. -->
2
2
 
3
- # `views.aug` specification
4
-
5
- August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
6
-
7
- ## In this file
8
-
9
- - [`Page`](views.aug.md#symbol-Page) is a function returning `Html`.
3
+ # `views.aug`
10
4
 
11
5
  <a id="symbol-Page"></a>
6
+ ## `Page` · [source](views.aug#L3)
12
7
 
13
- ## `Page`
14
-
15
- [source](views.aug#L2)
16
-
17
- **Inputs**
18
-
19
- - `title` (`string`) — required labeled input.
20
- - `children` (`List<Html>`) — required labeled input.
21
-
22
- Returns: `Html`.
23
-
24
- **What it does**
25
-
26
- - Return the HTML element `html` with `lang` = `"en"` containing the HTML element `head` containing the HTML element `meta` with `charset` = `"utf-8"` (rendered on the server with embedded text escaped), the HTML element `meta` with `name` = `"viewport"`, `content` = `"width=device-width, initial-scale=1"` (rendered on the server with embedded text escaped), the HTML element `title` containing `title`, ` — August` (rendered on the server with embedded text escaped) (rendered on the server with embedded text escaped), the HTML element `body` with `style` = `"margin:0;background:#f3f5f9;color:#17233a;font:17px system-ui,sans-serif;line-height:1.6"` containing the HTML element `main` with `style` = `"max-width:640px;margin:48px auto;padding:28px;background:white;border-radius:20px;box-shadow:0 12px 48px #17233a12"` containing the HTML element `nav` containing the HTML element `a` with `href` = `"/"`, `style` = `"color:#4852d7;font-weight:750;text-decoration:none"` containing `August · OpenID Connect` (rendered on the server with embedded text escaped) (rendered on the server with embedded text escaped), the HTML element `h1` containing `title` (rendered on the server with embedded text escaped), `children` (rendered on the server with embedded text escaped) (rendered on the server with embedded text escaped) (rendered on the server with embedded text escaped).
27
-
28
- **Author documentation**
29
-
30
- Small server components keep each page's behavior and dependencies visible.
31
-
32
- ## Shared language rules
8
+ Small server components keep each page's behavior and dependencies visible. It takes `title` as a string and `children` as `List<Html>`.
33
9
 
34
- See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
10
+ It returns the HTML element `html` with `lang` = `"en"` containing the HTML element `head` containing the HTML element `meta` with `charset` = `"utf-8"` with escaped text, the HTML element `meta` with `name` = `"viewport"`, `content` = `"width=device-width, initial-scale=1"` with escaped text, the HTML element `title` containing `title`, ` — August` with escaped text with escaped text, the HTML element `body` with `style` = `"margin:0;background:#f3f5f9;color:#17233a;font:17px system-ui,sans-serif;line-height:1.6"` containing the HTML element `main` with `style` = `"max-width:640px;margin:48px auto;padding:28px;background:white;border-radius:20px;box-shadow:0 12px 48px #17233a12"` containing the HTML element `nav` containing a link with `href` = `"/"`, `style` = `"color:#4852d7;font-weight:750;text-decoration:none"` containing `August · OpenID Connect` with escaped text with escaped text, a heading containing `title` with escaped text, `children` with escaped text with escaped text with escaped text.
@@ -1,7 +1,8 @@
1
- import Crypto and GnuTlsCrypto from august.crypto
2
- import Clock and SystemClock from august.time
3
- import HttpClient and WebHttpClient from august.web
4
- import ExpiringStore and MemoryStore from august.memory
1
+ // aug-spec: "main.aug.md" explains this file. Read it before changes; refresh with aug spec.
2
+ import Crypto and GnuTlsCrypto from crypto
3
+ import Clock and SystemClock from time
4
+ import HttpClient and WebHttpClient from web
5
+ import ExpiringStore and MemoryStore from memory
5
6
  import LoginTransaction and SessionClaims and home and me and logout and startLogin and loginCallback from client
6
7
  import AuthorizationRequest and AuthorizationCode and AccessGrant and discovery and jwks and authorize and providerLogin and token and userinfo from provider
7
8
  import SigningKeys and MemorySigningKeys and initializeKeys and KeyError from common
@@ -25,15 +26,4 @@ catch KeyError error:
25
26
  print(value="Signing keys could not be initialized")
26
27
  exit(status=1)
27
28
 
28
- serve home
29
- and me
30
- and logout
31
- and startLogin
32
- and loginCallback
33
- and discovery
34
- and jwks
35
- and authorize
36
- and providerLogin
37
- and token
38
- and userinfo
39
- on port 8787
29
+ serve home and me and logout and startLogin and loginCallback and discovery and jwks and authorize and providerLogin and token and userinfo on port 8787
@@ -1,166 +1,37 @@
1
1
  <!-- Generated by aug spec. Edit the August source, then regenerate. -->
2
2
 
3
- # `main.aug` specification
4
-
5
- August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
6
-
7
- ## In this file
8
-
9
- - Register 9 dependency providers before startup.
10
- - Run startup operations with checked error recovery.
11
- - Serve 11 HTTP routes.
3
+ # `main.aug`
12
4
 
13
5
  ## HTTP configuration
14
6
 
15
- Listen on `127.0.0.1`. Limit request bodies to 16384 bytes and buffered responses to 1048576 bytes.
16
-
17
- Serve the OpenAPI document at `/openapi.json` and API documentation at `/docs`.
18
-
19
- ## Dependency providers
20
-
21
- Register these providers before startup. Their declaration order does not set initialization order; shared instances initialize in dependency order.
22
-
23
- - Provide [`GnuTlsCrypto`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-GnuTlsCrypto) when `Crypto` is requested. Reuse one instance.
24
- - Provide [`SystemClock`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-SystemClock) when `Clock` is requested. Reuse one instance.
25
- - Provide [`WebHttpClient`](.aug-spec/august/0.19.0/web/contracts.aug.md#symbol-WebHttpClient) when `HttpClient` is requested. Reuse one instance.
26
- - Provide [`MemorySigningKeys`](common/keys.aug.md#symbol-MemorySigningKeys) when `SigningKeys` is requested. Reuse one instance. Permit explicit shared mutation.
27
- - Provide [`MemoryStore<LoginTransaction>`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-MemoryStore) when `ExpiringStore<LoginTransaction>` is requested. Reuse one instance. Permit explicit shared mutation.
28
- - Provide [`MemoryStore<AuthorizationRequest>`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-MemoryStore) when `ExpiringStore<AuthorizationRequest>` is requested. Reuse one instance. Permit explicit shared mutation.
29
- - Provide [`MemoryStore<AuthorizationCode>`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-MemoryStore) when `ExpiringStore<AuthorizationCode>` is requested. Reuse one instance. Permit explicit shared mutation.
30
- - Provide [`MemoryStore<SessionClaims>`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-MemoryStore) when `ExpiringStore<SessionClaims>` is requested. Reuse one instance. Permit explicit shared mutation.
31
- - Provide [`MemoryStore<AccessGrant>`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-MemoryStore) when `ExpiringStore<AccessGrant>` is requested. Reuse one instance. Permit explicit shared mutation.
32
-
33
- ## Startup, in source order
34
-
35
- - Try these operations:
36
- - Call [`initializeKeys`](common/keys.aug.md#symbol-initializeKeys); inject `crypto` from `Crypto`, `keys` from `SigningKeys`.
37
- - If they fail with `CryptoError`, name the failure `error` and recover:
38
- - Call `print` with `value` = `"Cryptographic initialization failed"`.
39
- - Call `exit` with `status` = `1`.
40
- - If they fail with [`KeyError`](common/keys.aug.md#symbol-KeyError), name the failure `error` and recover:
41
- - Call `print` with `value` = `"Signing keys could not be initialized"`.
42
- - Call `exit` with `status` = `1`.
43
- - Serve [`home`](client/endpoints.aug.md#symbol-home), [`me`](client/endpoints.aug.md#symbol-me), [`logout`](client/logout.aug.md#symbol-logout), [`startLogin`](client/login.aug.md#symbol-startLogin), [`loginCallback`](client/login.aug.md#symbol-loginCallback), [`discovery`](provider/discovery.aug.md#symbol-discovery), [`jwks`](provider/discovery.aug.md#symbol-jwks), [`authorize`](provider/authorization.aug.md#symbol-authorize), [`providerLogin`](provider/authorization.aug.md#symbol-providerLogin), [`token`](provider/token.aug.md#symbol-token), [`userinfo`](provider/userinfo.aug.md#symbol-userinfo) on port `8787`.
44
-
45
- ## Dependencies used by this file
46
-
47
- Only referenced types and operations appear here. Each name links to its complete specification.
48
-
49
- ### [`GnuTlsCrypto`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-GnuTlsCrypto)
50
-
51
- Class from `august.crypto`.
52
-
53
- Used as a type or provider.
54
-
55
- ### [`MemoryStore`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-MemoryStore)
56
-
57
- Class from `august.memory`.
58
-
59
- Used as a type or provider.
60
-
61
- ### [`SystemClock`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-SystemClock)
62
-
63
- Class from `august.time`.
64
-
65
- Used as a type or provider.
66
-
67
- ### [`WebHttpClient`](.aug-spec/august/0.19.0/web/contracts.aug.md#symbol-WebHttpClient)
68
-
69
- Class from `august.web`.
70
-
71
- Used as a type or provider.
72
-
73
- ### [`home`](client/endpoints.aug.md#symbol-home)
74
-
75
- Function from `client`.
76
-
77
- - [`home`](client/endpoints.aug.md#symbol-home) (`token`: `optional string` from HTTP cookie `aug_session`) → `HttpResponse<Html>`; inject `crypto`: [`Crypto`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto), `clock`: [`Clock`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock), `keys`: [`SigningKeys`](common/keys.aug.md#symbol-SigningKeys), `sessions`: [`ExpiringStore<SessionClaims>`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore); uses [`crypto.publicRsa`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.publicRsa), [`crypto.decodeBase64url`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.decodeBase64url), [`crypto.verifyRsa`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.verifyRsa), [`crypto.equal`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.equal), [`clock.now`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock.now), [`keys.session`](common/keys.aug.md#symbol-SigningKeys.session), [`sessions.get`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore.get); can fail with `KeyError`, `TimeError`, `HttpError`.
78
-
79
- ### [`me`](client/endpoints.aug.md#symbol-me)
80
-
81
- Function from `client`.
82
-
83
- - [`me`](client/endpoints.aug.md#symbol-me) (`token`: `optional string` from HTTP cookie `aug_session`) → `HttpResponse<UserInfo>`; inject `crypto`: [`Crypto`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto), `clock`: [`Clock`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock), `keys`: [`SigningKeys`](common/keys.aug.md#symbol-SigningKeys), `sessions`: [`ExpiringStore<SessionClaims>`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore); uses [`crypto.publicRsa`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.publicRsa), [`crypto.decodeBase64url`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.decodeBase64url), [`crypto.verifyRsa`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.verifyRsa), [`crypto.equal`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.equal), [`clock.now`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock.now), [`keys.session`](common/keys.aug.md#symbol-SigningKeys.session), [`sessions.get`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore.get); can fail with `SessionError`, `KeyError`, `TimeError`, `HttpError`.
84
-
85
- ### [`loginCallback`](client/login.aug.md#symbol-loginCallback)
86
-
87
- Function from `client`.
88
-
89
- - [`loginCallback`](client/login.aug.md#symbol-loginCallback) (`code`: `string` from HTTP query, `state`: `string` from HTTP query, `browser`: `optional string` from HTTP cookie `aug_login`) → `HttpResponse<Html>`; inject `crypto`: [`Crypto`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto), `clock`: [`Clock`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock), `client`: [`HttpClient`](.aug-spec/august/0.19.0/web/contracts.aug.md#symbol-HttpClient), `keys`: [`SigningKeys`](common/keys.aug.md#symbol-SigningKeys), `transactions`: [`ExpiringStore<LoginTransaction>`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore), `sessions`: [`ExpiringStore<SessionClaims>`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore); uses [`crypto.equal`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.equal), [`crypto.random`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.random), [`crypto.signRsa`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.signRsa), [`crypto.decodeBase64url`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.decodeBase64url), [`crypto.importRsa`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.importRsa), [`crypto.verifyRsa`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.verifyRsa), [`clock.now`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock.now), [`client.request`](.aug-spec/august/0.19.0/web/contracts.aug.md#symbol-HttpClient.request), [`keys.session`](common/keys.aug.md#symbol-SigningKeys.session), [`transactions.take`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore.take), [`sessions.put`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore.put); can fail with `SessionError`, `CryptoError`, `TimeError`, `KeyError`, `StoreFull`, `JwtError`, `JsonError`, `HttpError`.
90
-
91
- ### [`startLogin`](client/login.aug.md#symbol-startLogin)
92
-
93
- Function from `client`.
94
-
95
- - [`startLogin`](client/login.aug.md#symbol-startLogin) (no caller inputs) → `HttpResponse<Html>`; inject `crypto`: [`Crypto`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto), `clock`: [`Clock`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock), `client`: [`HttpClient`](.aug-spec/august/0.19.0/web/contracts.aug.md#symbol-HttpClient), `transactions`: [`ExpiringStore<LoginTransaction>`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore); uses [`crypto.random`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.random), [`crypto.sha256`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.sha256), [`clock.now`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock.now), [`client.request`](.aug-spec/august/0.19.0/web/contracts.aug.md#symbol-HttpClient.request), [`transactions.put`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore.put); can fail with `SessionError`, `CryptoError`, `TimeError`, `StoreFull`, `HttpError`.
96
-
97
- ### [`logout`](client/logout.aug.md#symbol-logout)
98
-
99
- Function from `client`.
100
-
101
- - [`logout`](client/logout.aug.md#symbol-logout) (`input`: [`LogoutForm`](client/contracts.aug.md#symbol-LogoutForm) from HTTP form, `token`: `optional string` from HTTP cookie `aug_session`, `origin`: `optional string` from HTTP header) → `HttpResponse<Html>`; inject `crypto`: [`Crypto`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto), `clock`: [`Clock`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock), `keys`: [`SigningKeys`](common/keys.aug.md#symbol-SigningKeys), `sessions`: [`ExpiringStore<SessionClaims>`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore); uses [`crypto.publicRsa`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.publicRsa), [`crypto.decodeBase64url`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.decodeBase64url), [`crypto.verifyRsa`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.verifyRsa), [`crypto.equal`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.equal), [`clock.now`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock.now), [`keys.session`](common/keys.aug.md#symbol-SigningKeys.session), [`sessions.get`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore.get), [`sessions.take`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore.take); can fail with `SessionError`, `KeyError`, `TimeError`, `CryptoError`, `HttpError`.
102
-
103
- ### [`KeyError`](common/keys.aug.md#symbol-KeyError)
104
-
105
- Class from `common`.
106
-
107
- Used as a type or provider.
108
-
109
- ### [`MemorySigningKeys`](common/keys.aug.md#symbol-MemorySigningKeys)
110
-
111
- Class from `common`.
112
-
113
- Used as a type or provider.
114
-
115
- ### [`initializeKeys`](common/keys.aug.md#symbol-initializeKeys)
116
-
117
- Function from `common`.
118
-
119
- - [`initializeKeys`](common/keys.aug.md#symbol-initializeKeys) (no caller inputs) → `void`; inject `crypto`: [`Crypto`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto), `keys`: [`SigningKeys`](common/keys.aug.md#symbol-SigningKeys); uses [`crypto.generateRsa`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.generateRsa), [`keys.configure`](common/keys.aug.md#symbol-SigningKeys.configure); can fail with `CryptoError`, `KeyError`.
120
-
121
- ### [`authorize`](provider/authorization.aug.md#symbol-authorize)
122
-
123
- Function from `provider`.
124
-
125
- - [`authorize`](provider/authorization.aug.md#symbol-authorize) (`response_type`: `string` from HTTP query, `client_id`: `string` from HTTP query, `redirect_uri`: `string` from HTTP query, `requestedScope`: `string` from HTTP query `scope`, `state`: `string` from HTTP query, `nonce`: `string` from HTTP query, `code_challenge`: `string` from HTTP query, `code_challenge_method`: `string` from HTTP query) → `HttpResponse<Html>`; inject `crypto`: [`Crypto`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto), `clock`: [`Clock`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock), `requests`: [`ExpiringStore<AuthorizationRequest>`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore); uses [`crypto.random`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.random), [`crypto.decodeBase64url`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.decodeBase64url), [`clock.now`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock.now), [`requests.put`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore.put); can fail with `LoginError`, `CryptoError`, `TimeError`, `StoreFull`, `HttpError`.
126
-
127
- ### [`providerLogin`](provider/authorization.aug.md#symbol-providerLogin)
128
-
129
- Function from `provider`.
130
-
131
- - [`providerLogin`](provider/authorization.aug.md#symbol-providerLogin) (`form`: [`LoginForm`](provider/contracts.aug.md#symbol-LoginForm) from HTTP form, `browser`: `optional string` from HTTP cookie `aug_authorize`, `origin`: `optional string` from HTTP header `origin`) → `HttpResponse<Html>`; inject `crypto`: [`Crypto`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto), `clock`: [`Clock`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock), `requests`: [`ExpiringStore<AuthorizationRequest>`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore), `codes`: [`ExpiringStore<AuthorizationCode>`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore); uses [`crypto.equal`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.equal), [`crypto.random`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.random), [`crypto.passwordHash`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.passwordHash), [`crypto.decodeBase64url`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.decodeBase64url), [`clock.now`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock.now), [`requests.take`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore.take), [`codes.put`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore.put); can fail with `CryptoError`, `TimeError`, `StoreFull`, `HttpError`.
132
-
133
- ### [`discovery`](provider/discovery.aug.md#symbol-discovery)
134
-
135
- Function from `provider`.
7
+ Listen on `127.0.0.1`. Limit request bodies to 16384 bytes and buffered responses to 1048576 bytes. Serve OpenAPI at `/openapi.json` and API docs at `/docs`.
136
8
 
137
- - [`discovery`](provider/discovery.aug.md#symbol-discovery) (no caller inputs) → [`Discovery`](provider/discovery.aug.md#symbol-Discovery).
9
+ ## Providers
138
10
 
139
- ### [`jwks`](provider/discovery.aug.md#symbol-jwks)
11
+ `Crypto` is provided by [`GnuTlsCrypto`](.aug-spec/packages/%40git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/contracts.aug.md#symbol-GnuTlsCrypto). The same instance is shared. `Clock` is provided by [`SystemClock`](.aug-spec/packages/%40git/url_c092cd151499c4e1d8a1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md#symbol-SystemClock). The same instance is shared.
140
12
 
141
- Function from `provider`.
13
+ `HttpClient` is provided by [`WebHttpClient`](.aug-spec/packages/%40git/url_897efafd565158fc4908/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md#symbol-WebHttpClient). The same instance is shared.
142
14
 
143
- - [`jwks`](provider/discovery.aug.md#symbol-jwks) (no caller inputs) → [`RsaJwks`](.aug-spec/august/0.19.0/crypto/jose.aug.md#symbol-RsaJwks); inject `crypto`: [`Crypto`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto), `keys`: [`SigningKeys`](common/keys.aug.md#symbol-SigningKeys); uses [`keys.provider`](common/keys.aug.md#symbol-SigningKeys.provider), [`crypto.publicRsa`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.publicRsa), [`crypto.exportRsa`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.exportRsa); can fail with `KeyError`, `CryptoError`.
15
+ `SigningKeys` is provided by [`MemorySigningKeys`](common/keys.aug.md#symbol-MemorySigningKeys). The same instance is shared. Shared mutation is allowed.
144
16
 
145
- ### [`token`](provider/token.aug.md#symbol-token)
17
+ `ExpiringStore<LoginTransaction>` is provided by [`MemoryStore<LoginTransaction>`](.aug-spec/packages/%40git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/store.aug.md#symbol-MemoryStore). The same instance is shared. Shared mutation is allowed.
146
18
 
147
- Function from `provider`.
19
+ `ExpiringStore<AuthorizationRequest>` is provided by [`MemoryStore<AuthorizationRequest>`](.aug-spec/packages/%40git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/store.aug.md#symbol-MemoryStore). The same instance is shared. Shared mutation is allowed.
148
20
 
149
- - [`token`](provider/token.aug.md#symbol-token) (`http`: `HttpRequest` from HTTP request) → `HttpResponse<Json>`; inject `crypto`: [`Crypto`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto), `clock`: [`Clock`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock), `keys`: [`SigningKeys`](common/keys.aug.md#symbol-SigningKeys), `codes`: [`ExpiringStore<AuthorizationCode>`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore), `access`: [`ExpiringStore<AccessGrant>`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore); uses [`crypto.sha256`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.sha256), [`crypto.equal`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.equal), [`crypto.random`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.random), [`crypto.signRsa`](.aug-spec/august/0.19.0/crypto/contracts.aug.md#symbol-Crypto.signRsa), [`clock.now`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock.now), [`keys.provider`](common/keys.aug.md#symbol-SigningKeys.provider), [`codes.take`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore.take), [`access.put`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore.put); can fail with `CryptoError`, `TimeError`, `KeyError`, `JwtError`, `StoreFull`, `HttpError`.
21
+ `ExpiringStore<AuthorizationCode>` is provided by [`MemoryStore<AuthorizationCode>`](.aug-spec/packages/%40git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/store.aug.md#symbol-MemoryStore). The same instance is shared. Shared mutation is allowed.
150
22
 
151
- ### [`userinfo`](provider/userinfo.aug.md#symbol-userinfo)
23
+ `ExpiringStore<SessionClaims>` is provided by [`MemoryStore<SessionClaims>`](.aug-spec/packages/%40git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/store.aug.md#symbol-MemoryStore). The same instance is shared. Shared mutation is allowed.
152
24
 
153
- Function from `provider`.
25
+ `ExpiringStore<AccessGrant>` is provided by [`MemoryStore<AccessGrant>`](.aug-spec/packages/%40git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/store.aug.md#symbol-MemoryStore). The same instance is shared. Shared mutation is allowed.
154
26
 
155
- - [`userinfo`](provider/userinfo.aug.md#symbol-userinfo) (`authorization`: `optional string` from HTTP header) → `HttpResponse<Json>`; inject `clock`: [`Clock`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock), `access`: [`ExpiringStore<AccessGrant>`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore); uses [`clock.now`](.aug-spec/august/0.19.0/time/contracts.aug.md#symbol-Clock.now), [`access.get`](.aug-spec/august/0.19.0/memory/store.aug.md#symbol-ExpiringStore.get); can fail with `TimeError`, `HttpError`.
27
+ ## Startup
156
28
 
157
- ## Built-in operations used by this file
29
+ It tries to call [`initializeKeys`](common/keys.aug.md#symbol-initializeKeys) using injected `Crypto` for `crypto` and `SigningKeys` for `keys`. If this work raises `CryptoError`, it prints `"Cryptographic initialization failed"`; then it calls `exit` with `status` `1`. If this work raises [`KeyError`](common/keys.aug.md#symbol-KeyError), it prints `"Signing keys could not be initialized"`; then it calls `exit` with `status` `1`. It serves [`home`](client/endpoints.aug.md#symbol-home), [`me`](client/endpoints.aug.md#symbol-me), [`logout`](client/logout.aug.md#symbol-logout), [`startLogin`](client/login.aug.md#symbol-startLogin), [`loginCallback`](client/login.aug.md#symbol-loginCallback), [`discovery`](provider/discovery.aug.md#symbol-discovery), [`jwks`](provider/discovery.aug.md#symbol-jwks), [`authorize`](provider/authorization.aug.md#symbol-authorize), [`providerLogin`](provider/authorization.aug.md#symbol-providerLogin), [`token`](provider/token.aug.md#symbol-token), and [`userinfo`](provider/userinfo.aug.md#symbol-userinfo) on port `8787`.
158
30
 
159
- - `exit` (`status`: `int`) → `void`: Exit from main with a status from 0 to 255 after cancellation and cleanup.
160
- - `print` (`value`: `any`) → `void`: Composition and test output. Other callables receive Console and declare uses console.write.
31
+ ## Dependencies
161
32
 
162
- [Full built-in reference](https://greenpandastudios.github.io/augscript/language-constructs).
33
+ It uses [`MemoryStore`](.aug-spec/packages/%40git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/store.aug.md#symbol-MemoryStore) from `memory`. It uses [`WebHttpClient`](.aug-spec/packages/%40git/url_897efafd565158fc4908/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md#symbol-WebHttpClient) from `web`. It uses [`GnuTlsCrypto`](.aug-spec/packages/%40git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/contracts.aug.md#symbol-GnuTlsCrypto) from `crypto`. It uses [`SystemClock`](.aug-spec/packages/%40git/url_c092cd151499c4e1d8a1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md#symbol-SystemClock) from `time`.
163
34
 
164
- ## Shared language rules
35
+ It uses [`home`](client/endpoints.aug.md#symbol-home), [`me`](client/endpoints.aug.md#symbol-me), [`loginCallback`](client/login.aug.md#symbol-loginCallback), [`startLogin`](client/login.aug.md#symbol-startLogin), and [`logout`](client/logout.aug.md#symbol-logout) from `client`. It uses [`KeyError`](common/keys.aug.md#symbol-KeyError), [`MemorySigningKeys`](common/keys.aug.md#symbol-MemorySigningKeys), and [`initializeKeys`](common/keys.aug.md#symbol-initializeKeys) from `common`. It uses [`authorize`](provider/authorization.aug.md#symbol-authorize), [`providerLogin`](provider/authorization.aug.md#symbol-providerLogin), [`discovery`](provider/discovery.aug.md#symbol-discovery), [`jwks`](provider/discovery.aug.md#symbol-jwks), [`token`](provider/token.aug.md#symbol-token), and [`userinfo`](provider/userinfo.aug.md#symbol-userinfo) from `provider`.
165
36
 
166
- See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
37
+ Built-in operations follow the [language reference](https://greenpandastudios.github.io/augscript/language-constructs).
@@ -10,3 +10,10 @@ openapi:
10
10
  path: /openapi.json
11
11
  docs: /docs
12
12
  output: .aug-build/openapi.json
13
+
14
+ packages:
15
+ crypto: "https://github.com/GreenPandaStudios/augscript/src/stdlib/crypto#b14a0f9aa41f1ce58bd51133bcdc424033e40d40"
16
+ json: "https://github.com/GreenPandaStudios/augscript/src/stdlib/json#v0.19.0"
17
+ memory: "https://github.com/GreenPandaStudios/augscript/src/stdlib/memory#v0.19.0"
18
+ time: "https://github.com/GreenPandaStudios/augscript/src/stdlib/time#v0.19.0"
19
+ web: "https://github.com/GreenPandaStudios/augscript/src/stdlib/web#v0.19.0"