@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,228 @@
1
+ ---
2
+ title: "provider/userinfo.aug · OpenID Connect login application"
3
+ generated: true
4
+ source: "examples/oidc-login/provider/userinfo.aug"
5
+ editLink: false
6
+ prev: false
7
+ next: false
8
+ outline: [2, 3]
9
+ pageClass: aug-example-page
10
+ ---
11
+
12
+ # `provider/userinfo.aug`
13
+
14
+ [OpenID Connect login application](../index.md) · Source and specification
15
+
16
+ ::: details Files in this project
17
+
18
+ - [`main.aug`](../main.md)
19
+ - [`client/contracts.aug`](../client/contracts.md)
20
+ - [`client/endpoints.aug`](../client/endpoints.md)
21
+ - [`client/export.aug`](../client/export.md)
22
+ - [`client/login.aug`](../client/login.md)
23
+ - [`client/logout.aug`](../client/logout.md)
24
+ - [`client/protocol.aug`](../client/protocol.md)
25
+ - [`client/session.aug`](../client/session.md)
26
+ - [`client/views.aug`](../client/views.md)
27
+ - [`common/export.aug`](../common/export.md)
28
+ - [`common/headers.aug`](../common/headers.md)
29
+ - [`common/keys.aug`](../common/keys.md)
30
+ - [`common/settings.aug`](../common/settings.md)
31
+ - [`common/views.aug`](../common/views.md)
32
+ - [`provider/authorization.aug`](authorization.md)
33
+ - [`provider/contracts.aug`](contracts.md)
34
+ - [`provider/credentials.aug`](credentials.md)
35
+ - [`provider/discovery.aug`](discovery.md)
36
+ - [`provider/export.aug`](export.md)
37
+ - [`provider/token.aug`](token.md)
38
+ - [`provider/userinfo.aug`](userinfo.md)
39
+ - [`provider/views.aug`](views.md)
40
+
41
+ :::
42
+
43
+ ::::: example-compare
44
+
45
+ :::: example-code
46
+
47
+ ## Code {#code}
48
+
49
+ ::: code-group
50
+
51
+ ```aug [Indentation]
52
+ import UserInfo and AccessGrant from contracts
53
+ import securityHeaders from common
54
+ import Clock from august.time
55
+ import ExpiringStore from august.memory
56
+ /** The opaque access token is valid only at this provider. Missing, expired and malformed credentials receive the same response. */
57
+ endpoint GET "/provider/userinfo" as userinfo(optional string authorization from header, resolve Clock clock, resolve ExpiringStore<AccessGrant> access) returns HttpResponse<Json> uses clock.now and access.get unless TimeError and HttpError:
58
+ match authorization:
59
+ when null:
60
+ pass
61
+ when some header:
62
+ parts = header.split(separator=" ")
63
+ if parts.length() == 2:
64
+ try:
65
+ if parts.get(index=0) == "Bearer":
66
+ token = parts.get(index=1)
67
+ if token.isToken(min=43, max=43):
68
+ match access.get(key=token, now=clock.now()):
69
+ when null:
70
+ pass
71
+ when some grant:
72
+ return HttpResponse(body=Json(value=UserInfo(sub=grant.subject, name=grant.name)), headers=securityHeaders())
73
+ catch IndexError error:
74
+ pass
75
+ headers = securityHeaders().with(name="www-authenticate", value="Bearer error=\"invalid_token\"")
76
+ return HttpResponse(body=Json(value={"error": "invalid_token"}), status=401, headers=headers)
77
+ ```
78
+
79
+ ```aug [Braces]
80
+ import UserInfo and AccessGrant from contracts
81
+ import securityHeaders from common
82
+ import Clock from august.time
83
+ import ExpiringStore from august.memory
84
+ /** The opaque access token is valid only at this provider. Missing, expired and malformed credentials receive the same response. */
85
+ endpoint GET "/provider/userinfo" as userinfo(optional string authorization from header, resolve Clock clock, resolve ExpiringStore<AccessGrant> access) returns HttpResponse<Json> uses clock.now and access.get unless TimeError and HttpError {
86
+ match authorization {
87
+ when null {
88
+ pass
89
+ }
90
+ when some header {
91
+ parts = header.split(separator=" ")
92
+ if parts.length() == 2 {
93
+ try {
94
+ if parts.get(index=0) == "Bearer" {
95
+ token = parts.get(index=1)
96
+ if token.isToken(min=43, max=43) {
97
+ match access.get(key=token, now=clock.now()) {
98
+ when null {
99
+ pass
100
+ }
101
+ when some grant {
102
+ return HttpResponse(body=Json(value=UserInfo(sub=grant.subject, name=grant.name)), headers=securityHeaders())
103
+ }
104
+ }
105
+ }
106
+ }
107
+ }
108
+ catch IndexError error {
109
+ pass
110
+ }
111
+ }
112
+ }
113
+ }
114
+ headers = securityHeaders().with(name="www-authenticate", value="Bearer error=\"invalid_token\"")
115
+ return HttpResponse(body=Json(value={"error": "invalid_token"}), status=401, headers=headers)
116
+ }
117
+ ```
118
+
119
+ :::
120
+
121
+ ::::
122
+
123
+ :::: example-spec
124
+
125
+ ## Compiled specification {#specification}
126
+
127
+ August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
128
+
129
+ ### In this file
130
+
131
+ - [`userinfo`](userinfo.md#symbol-userinfo) handles `GET` `/provider/userinfo` returning `HttpResponse<Json>`.
132
+
133
+ ### `userinfo` {#symbol-userinfo}
134
+
135
+ [source](userinfo.md#code)
136
+
137
+ **Inputs**
138
+
139
+ - `authorization` (`optional string`) — read from the HTTP header; absent value becomes null.
140
+ - `clock` ([`Clock`](../dependencies/august/0.19.0/time/contracts.md#symbol-Clock)) — injected; callers omit it.
141
+ - `access` ([`ExpiringStore<AccessGrant>`](../dependencies/august/0.19.0/memory/store.md#symbol-ExpiringStore)) — injected; callers omit it.
142
+
143
+ Returns: `HttpResponse<Json>`.
144
+
145
+ Capabilities: [`clock.now`](../dependencies/august/0.19.0/time/contracts.md#symbol-Clock.now), [`access.get`](../dependencies/august/0.19.0/memory/store.md#symbol-ExpiringStore.get).
146
+
147
+ Can fail with `TimeError`, `HttpError`. Callers must catch or propagate these errors.
148
+
149
+ HTTP route: `GET` `/provider/userinfo`. Use status 200 when the handler returns a body; a returned HttpResponse can set its own status. An unhandled request failure returns status 500 and cancels its request tasks.
150
+
151
+ **What it does**
152
+
153
+ - Select the matching case for `authorization`:
154
+ - A null value, including omitted optional input:
155
+ - Continue without another operation.
156
+ - A present, non-null value, named `header`:
157
+ - Set `parts` to call `split` on `header` with `separator` = `" "`.
158
+ - If call `length` on `parts` equals `2`:
159
+ - Try these operations:
160
+ - If call `get` on `parts` with `index` = `0` equals `"Bearer"`:
161
+ - Set `token` to call `get` on `parts` with `index` = `1`.
162
+ - If call `isToken` on `token` with `min` = `43`; `max` = `43` is true:
163
+ - Select the matching case for call [`ExpiringStore.get`](../dependencies/august/0.19.0/memory/store.md#symbol-ExpiringStore.get) on `access` with `key` = `token`; `now` = call [`Clock.now`](../dependencies/august/0.19.0/time/contracts.md#symbol-Clock.now) on `clock`:
164
+ - A null value, including omitted optional input:
165
+ - Continue without another operation.
166
+ - A present, non-null value, named `grant`:
167
+ - Return call `HttpResponse` with `body` = call `Json` with `value` = call [`UserInfo`](contracts.md#symbol-UserInfo) with `sub` = `subject` of `grant`; `name` = `name` of `grant`; `headers` = call [`securityHeaders`](../common/headers.md#symbol-securityHeaders).
168
+ - If they fail with `IndexError`, name the failure `error` and recover:
169
+ - Continue without another operation.
170
+ - Set `headers` to call `with` on call [`securityHeaders`](../common/headers.md#symbol-securityHeaders) with `name` = `"www-authenticate"`; `value` = `"Bearer error=\"invalid_token\""`.
171
+ - Return call `HttpResponse` with `body` = call `Json` with `value` = a map with `"error"` mapped to `"invalid_token"`; `status` = `401`; `headers` = `headers`.
172
+
173
+ **Author documentation**
174
+
175
+ The opaque access token is valid only at this provider. Missing, expired and malformed credentials receive the same response.
176
+
177
+ ### Dependencies used by this file
178
+
179
+ Only referenced types and operations appear here. Each name links to its complete specification.
180
+
181
+ #### [`ExpiringStore`](../dependencies/august/0.19.0/memory/store.md#symbol-ExpiringStore)
182
+
183
+ Capability interface from `august.memory`.
184
+
185
+ - [`ExpiringStore.get`](../dependencies/august/0.19.0/memory/store.md#symbol-ExpiringStore.get) (`key`: `string`, `now`: `int`) → `optional T`.
186
+
187
+ #### [`Clock`](../dependencies/august/0.19.0/time/contracts.md#symbol-Clock)
188
+
189
+ Capability interface from `august.time`.
190
+
191
+ - [`Clock.now`](../dependencies/august/0.19.0/time/contracts.md#symbol-Clock.now) (no caller inputs) → `int`; can fail with `TimeError`.
192
+
193
+ #### [`securityHeaders`](../common/headers.md#symbol-securityHeaders)
194
+
195
+ Function from `common`.
196
+
197
+ - [`securityHeaders`](../common/headers.md#symbol-securityHeaders) (no caller inputs) → `Headers`; can fail with `HttpError`.
198
+
199
+ #### [`AccessGrant`](contracts.md#symbol-AccessGrant)
200
+
201
+ Record from `contracts`.
202
+
203
+ - Read `name` (`string`).
204
+ - Read `subject` (`string`).
205
+
206
+ #### [`UserInfo`](contracts.md#symbol-UserInfo)
207
+
208
+ Record from `contracts`.
209
+
210
+ - Construct with `sub`: `string`, `name`: `string` → [`UserInfo`](contracts.md#symbol-UserInfo).
211
+
212
+ ### Built-in operations used by this file
213
+
214
+ - `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`.
215
+ - `List<string>.get` (`index`: `int`) → `string`: Read a zero-based position. An invalid index raises checked IndexError. Reference results grant reading. Can fail with `IndexError`.
216
+ - `List<string>.length` (no inputs) → `int`: Read the number of elements.
217
+ - `string.isToken` (`min`: `int`, `max`: `int`) → `bool`: Require an ASCII RFC 3986 unreserved token with a bounded length.
218
+ - `string.split` (`separator`: `string`) → `List<string>`: Split at an exact separator, preserving empty parts.
219
+
220
+ [Full built-in reference](https://greenpandastudios.github.io/augscript/language-constructs).
221
+
222
+ ### Shared language rules
223
+
224
+ See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
225
+
226
+ ::::
227
+
228
+ :::::
@@ -0,0 +1,137 @@
1
+ ---
2
+ title: "provider/views.aug · OpenID Connect login application"
3
+ generated: true
4
+ source: "examples/oidc-login/provider/views.aug"
5
+ editLink: false
6
+ prev: false
7
+ next: false
8
+ outline: [2, 3]
9
+ pageClass: aug-example-page
10
+ ---
11
+
12
+ # `provider/views.aug`
13
+
14
+ [OpenID Connect login application](../index.md) · Source and specification
15
+
16
+ ::: details Files in this project
17
+
18
+ - [`main.aug`](../main.md)
19
+ - [`client/contracts.aug`](../client/contracts.md)
20
+ - [`client/endpoints.aug`](../client/endpoints.md)
21
+ - [`client/export.aug`](../client/export.md)
22
+ - [`client/login.aug`](../client/login.md)
23
+ - [`client/logout.aug`](../client/logout.md)
24
+ - [`client/protocol.aug`](../client/protocol.md)
25
+ - [`client/session.aug`](../client/session.md)
26
+ - [`client/views.aug`](../client/views.md)
27
+ - [`common/export.aug`](../common/export.md)
28
+ - [`common/headers.aug`](../common/headers.md)
29
+ - [`common/keys.aug`](../common/keys.md)
30
+ - [`common/settings.aug`](../common/settings.md)
31
+ - [`common/views.aug`](../common/views.md)
32
+ - [`provider/authorization.aug`](authorization.md)
33
+ - [`provider/contracts.aug`](contracts.md)
34
+ - [`provider/credentials.aug`](credentials.md)
35
+ - [`provider/discovery.aug`](discovery.md)
36
+ - [`provider/export.aug`](export.md)
37
+ - [`provider/token.aug`](token.md)
38
+ - [`provider/userinfo.aug`](userinfo.md)
39
+ - [`provider/views.aug`](views.md)
40
+
41
+ :::
42
+
43
+ ::::: example-compare
44
+
45
+ :::: example-code
46
+
47
+ ## Code {#code}
48
+
49
+ ::: code-group
50
+
51
+ ```aug [Indentation]
52
+ import Page from common
53
+ /** A server form with a checked HTTP action. The browser submits to the provider endpoint. */
54
+ ProviderLogin(string requestId, string csrf, string message, HttpAction submit) returns Html:
55
+ return <Page title={"Sign in with the August provider"}><p>{message}</p><p style={"background:#f3f5f9;padding:12px;border-radius:8px"}>Demo account: <strong>ada</strong> · password <strong>august-demo</strong></p><form method={"post"} action={"/provider/login"} onSubmit={submit}><input type={"hidden"} name={"request_id"} value={requestId} /><input type={"hidden"} name={"csrf"} value={csrf} /><p><label for={"username"}>Username</label><br /><input id={"username"} name={"username"} autocomplete={"username"} value={"ada"} maxlength={"64"} required={true} style={"padding:10px;width:90%"} /></p><p><label for={"password"}>Password</label><br /><input id={"password"} type={"password"} name={"password"} autocomplete={"current-password"} maxlength={"256"} required={true} style={"padding:10px;width:90%"} /></p><button type={"submit"} style={"padding:12px 20px;border:0;border-radius:9px;background:#4852d7;color:white;font:inherit"}>Sign in and return to the app</button></form><p style={"font-size:14px;color:#677189"}>The provider and app run in the same executable. Authorization codes still travel through the OpenID Connect protocol.</p></Page>
56
+ ProviderFailure(string message) returns Html:
57
+ return <Page title={"Sign-in could not continue"}><p>{message}</p><a href={"/login/start"}>Start a new sign-in</a></Page>
58
+ ```
59
+
60
+ ```aug [Braces]
61
+ import Page from common
62
+ /** A server form with a checked HTTP action. The browser submits to the provider endpoint. */
63
+ ProviderLogin(string requestId, string csrf, string message, HttpAction submit) returns Html {
64
+ return <Page title={"Sign in with the August provider"}><p>{message}</p><p style={"background:#f3f5f9;padding:12px;border-radius:8px"}>Demo account: <strong>ada</strong> · password <strong>august-demo</strong></p><form method={"post"} action={"/provider/login"} onSubmit={submit}><input type={"hidden"} name={"request_id"} value={requestId} /><input type={"hidden"} name={"csrf"} value={csrf} /><p><label for={"username"}>Username</label><br /><input id={"username"} name={"username"} autocomplete={"username"} value={"ada"} maxlength={"64"} required={true} style={"padding:10px;width:90%"} /></p><p><label for={"password"}>Password</label><br /><input id={"password"} type={"password"} name={"password"} autocomplete={"current-password"} maxlength={"256"} required={true} style={"padding:10px;width:90%"} /></p><button type={"submit"} style={"padding:12px 20px;border:0;border-radius:9px;background:#4852d7;color:white;font:inherit"}>Sign in and return to the app</button></form><p style={"font-size:14px;color:#677189"}>The provider and app run in the same executable. Authorization codes still travel through the OpenID Connect protocol.</p></Page>
65
+ }
66
+ ProviderFailure(string message) returns Html {
67
+ return <Page title={"Sign-in could not continue"}><p>{message}</p><a href={"/login/start"}>Start a new sign-in</a></Page>
68
+ }
69
+ ```
70
+
71
+ :::
72
+
73
+ ::::
74
+
75
+ :::: example-spec
76
+
77
+ ## Compiled specification {#specification}
78
+
79
+ August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
80
+
81
+ ### In this file
82
+
83
+ - [`ProviderLogin`](views.md#symbol-ProviderLogin) is a function returning `Html`.
84
+ - [`ProviderFailure`](views.md#symbol-ProviderFailure) is a function returning `Html`.
85
+
86
+ ### `ProviderLogin` {#symbol-ProviderLogin}
87
+
88
+ [source](views.md#code)
89
+
90
+ **Inputs**
91
+
92
+ - `requestId` (`string`) — required labeled input.
93
+ - `csrf` (`string`) — required labeled input.
94
+ - `message` (`string`) — required labeled input.
95
+ - `submit` (`HttpAction`) — required labeled input.
96
+
97
+ Returns: `Html`.
98
+
99
+ **What it does**
100
+
101
+ - Return the server component [`Page`](../common/views.md#symbol-Page) with `title` = `"Sign in with the August provider"` containing the HTML element `p` containing `message` (rendered on the server with embedded text escaped), the HTML element `p` with `style` = `"background:#f3f5f9;padding:12px;border-radius:8px"` containing `Demo account: `, the HTML element `strong` containing `ada` (rendered on the server with embedded text escaped), ` · password `, the HTML element `strong` containing `august-demo` (rendered on the server with embedded text escaped) (rendered on the server with embedded text escaped), the HTML element `form` with `method` = `"post"`, `action` = `"/provider/login"`, `onSubmit` = `submit` containing the HTML element `input` with `type` = `"hidden"`, `name` = `"request_id"`, `value` = `requestId` (rendered on the server with embedded text escaped), the HTML element `input` with `type` = `"hidden"`, `name` = `"csrf"`, `value` = `csrf` (rendered on the server with embedded text escaped), the HTML element `p` containing the HTML element `label` with `for` = `"username"` containing `Username` (rendered on the server with embedded text escaped), the HTML element `br` (rendered on the server with embedded text escaped), the HTML element `input` with `id` = `"username"`, `name` = `"username"`, `autocomplete` = `"username"`, `value` = `"ada"`, `maxlength` = `"64"`, `required` = `true`, `style` = `"padding:10px;width:90%"` (rendered on the server with embedded text escaped) (rendered on the server with embedded text escaped), the HTML element `p` containing the HTML element `label` with `for` = `"password"` containing `Password` (rendered on the server with embedded text escaped), the HTML element `br` (rendered on the server with embedded text escaped), the HTML element `input` with `id` = `"password"`, `type` = `"password"`, `name` = `"password"`, `autocomplete` = `"current-password"`, `maxlength` = `"256"`, `required` = `true`, `style` = `"padding:10px;width:90%"` (rendered on the server with embedded text escaped) (rendered on the server with embedded text escaped), the HTML element `button` with `type` = `"submit"`, `style` = `"padding:12px 20px;border:0;border-radius:9px;background:#4852d7;color:white;font:inherit"` containing `Sign in and return to the app` (rendered on the server with embedded text escaped) (rendered on the server with embedded text escaped), the HTML element `p` with `style` = `"font-size:14px;color:#677189"` containing `The provider and app run in the same executable. Authorization codes still travel through the OpenID Connect protocol.` (rendered on the server with embedded text escaped) (rendered on the server with embedded text escaped).
102
+
103
+ **Author documentation**
104
+
105
+ A server form with a checked HTTP action. The browser submits to the provider endpoint.
106
+
107
+ ### `ProviderFailure` {#symbol-ProviderFailure}
108
+
109
+ [source](views.md#code)
110
+
111
+ **Inputs**
112
+
113
+ - `message` (`string`) — required labeled input.
114
+
115
+ Returns: `Html`.
116
+
117
+ **What it does**
118
+
119
+ - Return the server component [`Page`](../common/views.md#symbol-Page) with `title` = `"Sign-in could not continue"` containing the HTML element `p` containing `message` (rendered on the server with embedded text escaped), the HTML element `a` with `href` = `"/login/start"` containing `Start a new sign-in` (rendered on the server with embedded text escaped) (rendered on the server with embedded text escaped).
120
+
121
+ ### Dependencies used by this file
122
+
123
+ Only referenced types and operations appear here. Each name links to its complete specification.
124
+
125
+ #### [`Page`](../common/views.md#symbol-Page)
126
+
127
+ Function from `common`.
128
+
129
+ - [`Page`](../common/views.md#symbol-Page) (`title`: `string`, `children`: `List<Html>`) → `Html`.
130
+
131
+ ### Shared language rules
132
+
133
+ See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
134
+
135
+ ::::
136
+
137
+ :::::
@@ -0,0 +1,140 @@
1
+ ---
2
+ title: "counter.aug · Read access and mutable borrows"
3
+ generated: true
4
+ source: "examples/ownership/counter.aug"
5
+ editLink: false
6
+ prev: false
7
+ next: false
8
+ outline: [2, 3]
9
+ pageClass: aug-example-page
10
+ ---
11
+
12
+ # `counter.aug`
13
+
14
+ [Read access and mutable borrows](index.md) · Source and specification
15
+
16
+ ::: details Files in this project
17
+
18
+ - [`main.aug`](main.md)
19
+ - [`counter.aug`](counter.md)
20
+
21
+ :::
22
+
23
+ ::::: example-compare
24
+
25
+ :::: example-code
26
+
27
+ ## Code {#code}
28
+
29
+ ::: code-group
30
+
31
+ ```aug [Indentation]
32
+ Counter(mutable int value) implements ICounter:
33
+ increment() changes self:
34
+ borrow self:
35
+ value = value + 1
36
+ read() returns int:
37
+ return value
38
+ interface ICounter:
39
+ increment() changes self
40
+ read() returns int
41
+ ```
42
+
43
+ ```aug [Braces]
44
+ Counter(mutable int value) implements ICounter {
45
+ increment() changes self {
46
+ borrow self {
47
+ value = value + 1
48
+ }
49
+ }
50
+ read() returns int {
51
+ return value
52
+ }
53
+ }
54
+ interface ICounter {
55
+ increment() changes self
56
+ read() returns int
57
+ }
58
+ ```
59
+
60
+ :::
61
+
62
+ ::::
63
+
64
+ :::: example-spec
65
+
66
+ ## Compiled specification {#specification}
67
+
68
+ August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
69
+
70
+ ### In this file
71
+
72
+ - [`Counter`](counter.md#symbol-Counter) is a class implementing `ICounter`.
73
+ - [`ICounter`](counter.md#symbol-ICounter) is an interface.
74
+
75
+ ### `Counter` {#symbol-Counter}
76
+
77
+ [source](counter.md#code)
78
+
79
+ Behavioral class.
80
+
81
+ Satisfies [`ICounter`](counter.md#symbol-ICounter).
82
+
83
+ **Inputs**
84
+
85
+ - `value` (`int`) — required labeled input — stored as `value` and mutable.
86
+
87
+ #### `Counter.increment` {#symbol-Counter.increment}
88
+
89
+ [source](counter.md#code)
90
+
91
+ Returns: no value.
92
+
93
+ May change: `self`.
94
+
95
+ **What it does**
96
+
97
+ - Grant exclusive mutable access to `self` for this block, then end the borrow:
98
+ - Set `value` to `value` plus `1`.
99
+
100
+ #### `Counter.read` {#symbol-Counter.read}
101
+
102
+ [source](counter.md#code)
103
+
104
+ Returns: `int`.
105
+
106
+ **What it does**
107
+
108
+ - Return `value`.
109
+
110
+ ### `ICounter` {#symbol-ICounter}
111
+
112
+ [source](counter.md#code)
113
+
114
+ Interface.
115
+
116
+ #### `ICounter.increment` {#symbol-ICounter.increment}
117
+
118
+ [source](counter.md#code)
119
+
120
+ Returns: no value.
121
+
122
+ May change: `self`.
123
+
124
+ Interface contract. A selected implementation supplies the behavior.
125
+
126
+ #### `ICounter.read` {#symbol-ICounter.read}
127
+
128
+ [source](counter.md#code)
129
+
130
+ Returns: `int`.
131
+
132
+ Interface contract. A selected implementation supplies the behavior.
133
+
134
+ ### Shared language rules
135
+
136
+ See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
137
+
138
+ ::::
139
+
140
+ :::::
@@ -0,0 +1,33 @@
1
+ ---
2
+ title: "Read access and mutable borrows"
3
+ generated: true
4
+ source: "examples/ownership"
5
+ editLink: false
6
+ prev: false
7
+ next: false
8
+ outline: [2, 3]
9
+ ---
10
+
11
+ # Read access and mutable borrows
12
+
13
+ Share a reference for reading and grant explicit access for mutation.
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
+ - [`counter.aug`](counter.md)
21
+
22
+
23
+ ## Try this project
24
+
25
+ From a repository checkout with August installed:
26
+
27
+ ```sh
28
+ aug check examples/ownership
29
+ aug spec examples/ownership
30
+ aug run examples/ownership
31
+ ```
32
+
33
+ [Browse all examples](../index.md)
@@ -0,0 +1,90 @@
1
+ ---
2
+ title: "main.aug · Read access and mutable borrows"
3
+ generated: true
4
+ source: "examples/ownership/main.aug"
5
+ editLink: false
6
+ prev: false
7
+ next: false
8
+ outline: [2, 3]
9
+ pageClass: aug-example-page
10
+ ---
11
+
12
+ # `main.aug`
13
+
14
+ [Read access and mutable borrows](index.md) · Source and specification
15
+
16
+ ::: details Files in this project
17
+
18
+ - [`main.aug`](main.md)
19
+ - [`counter.aug`](counter.md)
20
+
21
+ :::
22
+
23
+ ::::: example-compare
24
+
25
+ :::: example-code
26
+
27
+ ## Code {#code}
28
+
29
+ ::: code-group
30
+
31
+ ```aug [Indentation]
32
+ import Counter from counter
33
+ own Counter counter = Counter(value=1)
34
+ counter.increment()
35
+ print(value=counter.read())
36
+ ```
37
+
38
+ ```aug [Braces]
39
+ import Counter from counter
40
+ own Counter counter = Counter(value=1)
41
+ counter.increment()
42
+ print(value=counter.read())
43
+ ```
44
+
45
+ :::
46
+
47
+ ::::
48
+
49
+ :::: example-spec
50
+
51
+ ## Compiled specification {#specification}
52
+
53
+ August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
54
+
55
+ ### In this file
56
+
57
+ - Run 3 other startup steps in source order.
58
+
59
+ ### Startup, in source order
60
+
61
+ - Set `counter` of type [`Counter`](counter.md#symbol-Counter) to call [`Counter`](counter.md#symbol-Counter) with `value` = `1`.
62
+ - This variable owns the value.
63
+ - Call [`Counter.increment`](counter.md#symbol-Counter.increment) on `counter`.
64
+ - Call `print` with `value` = call [`Counter.read`](counter.md#symbol-Counter.read) on `counter`.
65
+
66
+ ### Dependencies used by this file
67
+
68
+ Only referenced types and operations appear here. Each name links to its complete specification.
69
+
70
+ #### [`Counter`](counter.md#symbol-Counter)
71
+
72
+ Class from `counter`.
73
+
74
+ - Construct with `value`: `int` → [`Counter`](counter.md#symbol-Counter).
75
+ - [`Counter.increment`](counter.md#symbol-Counter.increment) (no caller inputs) → `void`; changes `self`.
76
+ - [`Counter.read`](counter.md#symbol-Counter.read) (no caller inputs) → `int`.
77
+
78
+ ### Built-in operations used by this file
79
+
80
+ - `print` (`value`: `any`) → `void`: Composition and test output. Other callables receive Console and declare uses console.write.
81
+
82
+ [Full built-in reference](https://greenpandastudios.github.io/augscript/language-constructs).
83
+
84
+ ### Shared language rules
85
+
86
+ See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
87
+
88
+ ::::
89
+
90
+ :::::