@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.
- package/LICENSE +21 -0
- package/README.md +13 -0
- package/THIRD_PARTY_NOTICES.md +18 -0
- package/bin/aug.mjs +3 -0
- package/docs/api/crypto.md +351 -0
- package/docs/api/io.md +207 -0
- package/docs/api/json.md +21 -0
- package/docs/api/memory.md +109 -0
- package/docs/api/time.md +54 -0
- package/docs/api/web.md +184 -0
- package/docs/assets/benchmarks/execution.svg +2978 -0
- package/docs/assets/benchmarks/http.svg +1674 -0
- package/docs/assets/benchmarks/improvements.svg +2315 -0
- package/docs/assets/benchmarks/memory.svg +1891 -0
- package/docs/benchmark-baseline.json +1087 -0
- package/docs/benchmark-results.json +91123 -0
- package/docs/benchmarks.json +38 -0
- package/docs/compatibility.md +42 -0
- package/docs/concurrency-implementation.md +18 -0
- package/docs/diagnostics.md +97 -0
- package/docs/docker.md +35 -0
- package/docs/example-projects.json +26 -0
- package/docs/examples/approved-design/counters.md +253 -0
- package/docs/examples/approved-design/dependencies/august/0.19.0/io/contracts.md +395 -0
- package/docs/examples/approved-design/domain/app.md +165 -0
- package/docs/examples/approved-design/domain/export.md +83 -0
- package/docs/examples/approved-design/domain/models.md +80 -0
- package/docs/examples/approved-design/domain/numbers.md +248 -0
- package/docs/examples/approved-design/index.md +39 -0
- package/docs/examples/approved-design/main-yaml.md +24 -0
- package/docs/examples/approved-design/main.md +215 -0
- package/docs/examples/benchmark/index.md +33 -0
- package/docs/examples/benchmark/main-yaml.md +17 -0
- package/docs/examples/benchmark/main.md +117 -0
- package/docs/examples/cli-args/index.md +32 -0
- package/docs/examples/cli-args/main.md +107 -0
- package/docs/examples/collections/index.md +32 -0
- package/docs/examples/collections/main.md +118 -0
- package/docs/examples/collections-benchmark/index.md +34 -0
- package/docs/examples/collections-benchmark/main.md +115 -0
- package/docs/examples/cpu-benchmark/index.md +34 -0
- package/docs/examples/cpu-benchmark/main.md +90 -0
- package/docs/examples/developer-workflow/calculator.md +357 -0
- package/docs/examples/developer-workflow/dependencies/august/0.19.0/io/contracts.md +395 -0
- package/docs/examples/developer-workflow/index.md +37 -0
- package/docs/examples/developer-workflow/logging/console.md +124 -0
- package/docs/examples/developer-workflow/logging/export.md +70 -0
- package/docs/examples/developer-workflow/logging/logger.md +111 -0
- package/docs/examples/developer-workflow/main.md +172 -0
- package/docs/examples/drop/index.md +33 -0
- package/docs/examples/drop/main.md +85 -0
- package/docs/examples/drop/resource.md +95 -0
- package/docs/examples/errors/errors.md +85 -0
- package/docs/examples/errors/index.md +33 -0
- package/docs/examples/errors/main.md +92 -0
- package/docs/examples/ffi/index.md +33 -0
- package/docs/examples/ffi/main.md +75 -0
- package/docs/examples/ffi/native.md +93 -0
- package/docs/examples/generic-di/dependencies/august/0.19.0/io/contracts.md +395 -0
- package/docs/examples/generic-di/index.md +33 -0
- package/docs/examples/generic-di/main.md +111 -0
- package/docs/examples/generic-di/types.md +180 -0
- package/docs/examples/generics/index.md +33 -0
- package/docs/examples/generics/main.md +120 -0
- package/docs/examples/generics/types.md +189 -0
- package/docs/examples/hello/app/export.md +67 -0
- package/docs/examples/hello/app/greeter.md +190 -0
- package/docs/examples/hello/dependencies/august/0.19.0/io/contracts.md +395 -0
- package/docs/examples/hello/index.md +37 -0
- package/docs/examples/hello/logging/console.md +121 -0
- package/docs/examples/hello/logging/export.md +71 -0
- package/docs/examples/hello/logging/logger.md +120 -0
- package/docs/examples/hello/main.md +115 -0
- package/docs/examples/http-benchmark/index.md +35 -0
- package/docs/examples/http-benchmark/main.md +79 -0
- package/docs/examples/http-benchmark/routes.md +88 -0
- package/docs/examples/index.md +60 -0
- package/docs/examples/interceptors/app.md +250 -0
- package/docs/examples/interceptors/dependencies/august/0.19.0/io/contracts.md +395 -0
- package/docs/examples/interceptors/index.md +35 -0
- package/docs/examples/interceptors/interceptors.md +284 -0
- package/docs/examples/interceptors/logging.md +155 -0
- package/docs/examples/interceptors/main.md +162 -0
- package/docs/examples/json-benchmark/data.md +71 -0
- package/docs/examples/json-benchmark/dependencies/august/0.19.0/json/contracts.md +103 -0
- package/docs/examples/json-benchmark/index.md +35 -0
- package/docs/examples/json-benchmark/main.md +131 -0
- package/docs/examples/new-syntax/console.md +118 -0
- package/docs/examples/new-syntax/dependencies/august/0.19.0/io/contracts.md +395 -0
- package/docs/examples/new-syntax/greeter.md +145 -0
- package/docs/examples/new-syntax/index.md +36 -0
- package/docs/examples/new-syntax/logger.md +111 -0
- package/docs/examples/new-syntax/main.md +135 -0
- package/docs/examples/new-syntax/math.md +79 -0
- package/docs/examples/oidc-login/client/contracts.md +151 -0
- package/docs/examples/oidc-login/client/endpoints.md +263 -0
- package/docs/examples/oidc-login/client/export.md +107 -0
- package/docs/examples/oidc-login/client/login.md +515 -0
- package/docs/examples/oidc-login/client/logout.md +249 -0
- package/docs/examples/oidc-login/client/protocol.md +595 -0
- package/docs/examples/oidc-login/client/session.md +297 -0
- package/docs/examples/oidc-login/client/views.md +144 -0
- package/docs/examples/oidc-login/common/export.md +115 -0
- package/docs/examples/oidc-login/common/headers.md +162 -0
- package/docs/examples/oidc-login/common/keys.md +336 -0
- package/docs/examples/oidc-login/common/settings.md +116 -0
- package/docs/examples/oidc-login/common/views.md +103 -0
- package/docs/examples/oidc-login/dependencies/august/0.19.0/crypto/contracts.md +925 -0
- package/docs/examples/oidc-login/dependencies/august/0.19.0/crypto/jose.md +434 -0
- package/docs/examples/oidc-login/dependencies/august/0.19.0/json/contracts.md +103 -0
- package/docs/examples/oidc-login/dependencies/august/0.19.0/memory/store.md +374 -0
- package/docs/examples/oidc-login/dependencies/august/0.19.0/time/contracts.md +150 -0
- package/docs/examples/oidc-login/dependencies/august/0.19.0/web/contracts.md +532 -0
- package/docs/examples/oidc-login/index.md +57 -0
- package/docs/examples/oidc-login/main-yaml.md +28 -0
- package/docs/examples/oidc-login/main.md +283 -0
- package/docs/examples/oidc-login/provider/authorization.md +457 -0
- package/docs/examples/oidc-login/provider/contracts.md +267 -0
- package/docs/examples/oidc-login/provider/credentials.md +148 -0
- package/docs/examples/oidc-login/provider/discovery.md +215 -0
- package/docs/examples/oidc-login/provider/export.md +131 -0
- package/docs/examples/oidc-login/provider/token.md +364 -0
- package/docs/examples/oidc-login/provider/userinfo.md +228 -0
- package/docs/examples/oidc-login/provider/views.md +137 -0
- package/docs/examples/ownership/counter.md +140 -0
- package/docs/examples/ownership/index.md +33 -0
- package/docs/examples/ownership/main.md +90 -0
- package/docs/examples/ownership-transfer/dependencies/august/0.19.0/io/contracts.md +395 -0
- package/docs/examples/ownership-transfer/index.md +33 -0
- package/docs/examples/ownership-transfer/main.md +125 -0
- package/docs/examples/ownership-transfer/resource.md +150 -0
- package/docs/examples/packages-app/dependencies/packages/@example/aug-math/0.1.0/arithmetic.md +117 -0
- package/docs/examples/packages-app/index.md +34 -0
- package/docs/examples/packages-app/main-yaml.md +18 -0
- package/docs/examples/packages-app/main.md +80 -0
- package/docs/examples/packages-math/aug-package-json.md +24 -0
- package/docs/examples/packages-math/index.md +36 -0
- package/docs/examples/packages-math/package-json.md +25 -0
- package/docs/examples/packages-math/src/arithmetic.md +121 -0
- package/docs/examples/packages-math/src/export.md +63 -0
- package/docs/examples/startup-benchmark/index.md +34 -0
- package/docs/examples/startup-benchmark/main.md +68 -0
- package/docs/examples/visibility/counter.md +142 -0
- package/docs/examples/visibility/index.md +33 -0
- package/docs/examples/visibility/main.md +96 -0
- package/docs/examples.json +47 -0
- package/docs/getting-started.md +5 -0
- package/docs/grammar.md +136 -0
- package/docs/implementation-map.md +106 -0
- package/docs/index.md +46 -0
- package/docs/language-conformance.md +30 -0
- package/docs/language-constructs.md +1461 -0
- package/docs/language-design-audit.md +147 -0
- package/docs/maintaining-docs.md +43 -0
- package/docs/packages.md +184 -0
- package/docs/performance.md +535 -0
- package/docs/production-readiness.md +39 -0
- package/docs/reference.md +361 -0
- package/docs/release-review.md +23 -0
- package/docs/releasing.md +79 -0
- package/docs/roadmap.md +13 -0
- package/docs/specifications.md +86 -0
- package/docs/testing.md +120 -0
- package/docs/tooling.md +197 -0
- package/docs/web-implementation-plan.md +39 -0
- package/docs/web-library-gaps.md +27 -0
- package/docs/web.md +197 -0
- package/examples/approved-design/.aug-spec/august/0.19.0/io/contracts.aug +36 -0
- package/examples/approved-design/.aug-spec/august/0.19.0/io/contracts.aug.md +316 -0
- package/examples/approved-design/.aug-spec/manifest.json +14 -0
- package/examples/approved-design/counters.aug +22 -0
- package/examples/approved-design/counters.aug.md +177 -0
- package/examples/approved-design/domain/app.aug +12 -0
- package/examples/approved-design/domain/app.aug.md +97 -0
- package/examples/approved-design/domain/export.aug +5 -0
- package/examples/approved-design/domain/export.aug.md +25 -0
- package/examples/approved-design/domain/models.aug +2 -0
- package/examples/approved-design/domain/models.aug.md +30 -0
- package/examples/approved-design/domain/numbers.aug +29 -0
- package/examples/approved-design/domain/numbers.aug.md +141 -0
- package/examples/approved-design/main.aug +26 -0
- package/examples/approved-design/main.aug.md +108 -0
- package/examples/approved-design/main.yaml +8 -0
- package/examples/benchmark/.aug-spec/manifest.json +7 -0
- package/examples/benchmark/main.aug +17 -0
- package/examples/benchmark/main.aug.md +43 -0
- package/examples/benchmark/main.yaml +1 -0
- package/examples/cli-args/.aug-spec/manifest.json +7 -0
- package/examples/cli-args/main.aug +15 -0
- package/examples/cli-args/main.aug.md +38 -0
- package/examples/collections/.aug-spec/manifest.json +7 -0
- package/examples/collections/main.aug +18 -0
- package/examples/collections/main.aug.md +43 -0
- package/examples/developer-workflow/.aug-spec/august/0.19.0/io/contracts.aug +36 -0
- package/examples/developer-workflow/.aug-spec/august/0.19.0/io/contracts.aug.md +316 -0
- package/examples/developer-workflow/.aug-spec/manifest.json +13 -0
- package/examples/developer-workflow/calculator.aug +55 -0
- package/examples/developer-workflow/calculator.aug.md +228 -0
- package/examples/developer-workflow/logging/console.aug +8 -0
- package/examples/developer-workflow/logging/console.aug.md +67 -0
- package/examples/developer-workflow/logging/export.aug +2 -0
- package/examples/developer-workflow/logging/export.aug.md +19 -0
- package/examples/developer-workflow/logging/logger.aug +6 -0
- package/examples/developer-workflow/logging/logger.aug.md +57 -0
- package/examples/developer-workflow/main.aug +25 -0
- package/examples/developer-workflow/main.aug.md +79 -0
- package/examples/drop/.aug-spec/manifest.json +8 -0
- package/examples/drop/main.aug +3 -0
- package/examples/drop/main.aug.md +35 -0
- package/examples/drop/resource.aug +8 -0
- package/examples/drop/resource.aug.md +44 -0
- package/examples/errors/.aug-spec/manifest.json +8 -0
- package/examples/errors/errors.aug +6 -0
- package/examples/errors/errors.aug.md +33 -0
- package/examples/errors/main.aug +7 -0
- package/examples/errors/main.aug.md +36 -0
- package/examples/ffi/.aug-spec/manifest.json +8 -0
- package/examples/ffi/main.aug +2 -0
- package/examples/ffi/main.aug.md +27 -0
- package/examples/ffi/native.aug +6 -0
- package/examples/ffi/native.aug.md +43 -0
- package/examples/generic-di/.aug-spec/august/0.19.0/io/contracts.aug +36 -0
- package/examples/generic-di/.aug-spec/august/0.19.0/io/contracts.aug.md +316 -0
- package/examples/generic-di/.aug-spec/manifest.json +10 -0
- package/examples/generic-di/main.aug +9 -0
- package/examples/generic-di/main.aug.md +49 -0
- package/examples/generic-di/types.aug +17 -0
- package/examples/generic-di/types.aug.md +124 -0
- package/examples/generics/.aug-spec/manifest.json +8 -0
- package/examples/generics/main.aug +9 -0
- package/examples/generics/main.aug.md +58 -0
- package/examples/generics/types.aug +19 -0
- package/examples/generics/types.aug.md +132 -0
- package/examples/hello/.aug-spec/august/0.19.0/io/contracts.aug +36 -0
- package/examples/hello/.aug-spec/august/0.19.0/io/contracts.aug.md +316 -0
- package/examples/hello/.aug-spec/manifest.json +14 -0
- package/examples/hello/app/export.aug +1 -0
- package/examples/hello/app/export.aug.md +17 -0
- package/examples/hello/app/greeter.aug +22 -0
- package/examples/hello/app/greeter.aug.md +109 -0
- package/examples/hello/logging/console.aug +7 -0
- package/examples/hello/logging/console.aug.md +65 -0
- package/examples/hello/logging/export.aug +2 -0
- package/examples/hello/logging/export.aug.md +19 -0
- package/examples/hello/logging/logger.aug +9 -0
- package/examples/hello/logging/logger.aug.md +59 -0
- package/examples/hello/main.aug +9 -0
- package/examples/hello/main.aug.md +49 -0
- package/examples/interceptors/.aug-spec/august/0.19.0/io/contracts.aug +36 -0
- package/examples/interceptors/.aug-spec/august/0.19.0/io/contracts.aug.md +316 -0
- package/examples/interceptors/.aug-spec/manifest.json +12 -0
- package/examples/interceptors/app.aug +28 -0
- package/examples/interceptors/app.aug.md +162 -0
- package/examples/interceptors/interceptors.aug +40 -0
- package/examples/interceptors/interceptors.aug.md +180 -0
- package/examples/interceptors/logging.aug +12 -0
- package/examples/interceptors/logging.aug.md +96 -0
- package/examples/interceptors/main.aug +22 -0
- package/examples/interceptors/main.aug.md +76 -0
- package/examples/new-syntax/.aug-spec/august/0.19.0/io/contracts.aug +36 -0
- package/examples/new-syntax/.aug-spec/august/0.19.0/io/contracts.aug.md +316 -0
- package/examples/new-syntax/.aug-spec/manifest.json +13 -0
- package/examples/new-syntax/console.aug +7 -0
- package/examples/new-syntax/console.aug.md +63 -0
- package/examples/new-syntax/greeter.aug +10 -0
- package/examples/new-syntax/greeter.aug.md +89 -0
- package/examples/new-syntax/logger.aug +6 -0
- package/examples/new-syntax/logger.aug.md +57 -0
- package/examples/new-syntax/main.aug +12 -0
- package/examples/new-syntax/main.aug.md +64 -0
- package/examples/new-syntax/math.aug +3 -0
- package/examples/new-syntax/math.aug.md +29 -0
- package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/contracts.aug +73 -0
- package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/contracts.aug.md +791 -0
- package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/jose.aug +68 -0
- package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/jose.aug.md +266 -0
- package/examples/oidc-login/.aug-spec/august/0.19.0/json/contracts.aug +6 -0
- package/examples/oidc-login/.aug-spec/august/0.19.0/json/contracts.aug.md +55 -0
- package/examples/oidc-login/.aug-spec/august/0.19.0/memory/store.aug +45 -0
- package/examples/oidc-login/.aug-spec/august/0.19.0/memory/store.aug.md +250 -0
- package/examples/oidc-login/.aug-spec/august/0.19.0/time/contracts.aug +11 -0
- package/examples/oidc-login/.aug-spec/august/0.19.0/time/contracts.aug.md +96 -0
- package/examples/oidc-login/.aug-spec/august/0.19.0/web/contracts.aug +58 -0
- package/examples/oidc-login/.aug-spec/august/0.19.0/web/contracts.aug.md +420 -0
- package/examples/oidc-login/.aug-spec/manifest.json +40 -0
- package/examples/oidc-login/README.md +29 -0
- package/examples/oidc-login/client/contracts.aug +7 -0
- package/examples/oidc-login/client/contracts.aug.md +80 -0
- package/examples/oidc-login/client/endpoints.aug +21 -0
- package/examples/oidc-login/client/endpoints.aug.md +161 -0
- package/examples/oidc-login/client/export.aug +7 -0
- package/examples/oidc-login/client/export.aug.md +29 -0
- package/examples/oidc-login/client/login.aug +58 -0
- package/examples/oidc-login/client/login.aug.md +331 -0
- package/examples/oidc-login/client/logout.aug +18 -0
- package/examples/oidc-login/client/logout.aug.md +150 -0
- package/examples/oidc-login/client/protocol.aug +106 -0
- package/examples/oidc-login/client/protocol.aug.md +326 -0
- package/examples/oidc-login/client/session.aug +34 -0
- package/examples/oidc-login/client/session.aug.md +155 -0
- package/examples/oidc-login/client/views.aug +21 -0
- package/examples/oidc-login/client/views.aug.md +68 -0
- package/examples/oidc-login/common/export.aug +9 -0
- package/examples/oidc-login/common/export.aug.md +33 -0
- package/examples/oidc-login/common/headers.aug +11 -0
- package/examples/oidc-login/common/headers.aug.md +79 -0
- package/examples/oidc-login/common/keys.aug +37 -0
- package/examples/oidc-login/common/keys.aug.md +207 -0
- package/examples/oidc-login/common/settings.aug +4 -0
- package/examples/oidc-login/common/settings.aug.md +47 -0
- package/examples/oidc-login/common/views.aug +16 -0
- package/examples/oidc-login/common/views.aug.md +34 -0
- package/examples/oidc-login/main.aug +39 -0
- package/examples/oidc-login/main.aug.md +166 -0
- package/examples/oidc-login/main.yaml +12 -0
- package/examples/oidc-login/provider/authorization.aug +59 -0
- package/examples/oidc-login/provider/authorization.aug.md +264 -0
- package/examples/oidc-login/provider/contracts.aug +15 -0
- package/examples/oidc-login/provider/contracts.aug.md +193 -0
- package/examples/oidc-login/provider/credentials.aug +10 -0
- package/examples/oidc-login/provider/credentials.aug.md +64 -0
- package/examples/oidc-login/provider/discovery.aug +13 -0
- package/examples/oidc-login/provider/discovery.aug.md +133 -0
- package/examples/oidc-login/provider/export.aug +13 -0
- package/examples/oidc-login/provider/export.aug.md +41 -0
- package/examples/oidc-login/provider/token.aug +37 -0
- package/examples/oidc-login/provider/token.aug.md +223 -0
- package/examples/oidc-login/provider/userinfo.aug +26 -0
- package/examples/oidc-login/provider/userinfo.aug.md +104 -0
- package/examples/oidc-login/provider/views.aug +18 -0
- package/examples/oidc-login/provider/views.aug.md +63 -0
- package/examples/ownership/.aug-spec/manifest.json +8 -0
- package/examples/ownership/counter.aug +14 -0
- package/examples/ownership/counter.aug.md +85 -0
- package/examples/ownership/main.aug +4 -0
- package/examples/ownership/main.aug.md +38 -0
- package/examples/ownership-transfer/.aug-spec/august/0.19.0/io/contracts.aug +36 -0
- package/examples/ownership-transfer/.aug-spec/august/0.19.0/io/contracts.aug.md +316 -0
- package/examples/ownership-transfer/.aug-spec/manifest.json +10 -0
- package/examples/ownership-transfer/main.aug +9 -0
- package/examples/ownership-transfer/main.aug.md +63 -0
- package/examples/ownership-transfer/resource.aug +16 -0
- package/examples/ownership-transfer/resource.aug.md +89 -0
- package/examples/packages/README.md +15 -0
- package/examples/packages/app/.aug-spec/manifest.json +9 -0
- package/examples/packages/app/.aug-spec/packages/@example/aug-math/0.1.0/arithmetic.aug +9 -0
- package/examples/packages/app/.aug-spec/packages/@example/aug-math/0.1.0/arithmetic.aug.md +63 -0
- package/examples/packages/app/main.aug +2 -0
- package/examples/packages/app/main.aug.md +33 -0
- package/examples/packages/app/main.yaml +2 -0
- package/examples/packages/math/.aug-spec/manifest.json +8 -0
- package/examples/packages/math/README.md +3 -0
- package/examples/packages/math/aug-package.json +8 -0
- package/examples/packages/math/package.json +9 -0
- package/examples/packages/math/src/arithmetic.aug +8 -0
- package/examples/packages/math/src/arithmetic.aug.md +63 -0
- package/examples/packages/math/src/export.aug +1 -0
- package/examples/packages/math/src/export.aug.md +17 -0
- package/examples/visibility/.aug-spec/manifest.json +8 -0
- package/examples/visibility/counter.aug +14 -0
- package/examples/visibility/counter.aug.md +87 -0
- package/examples/visibility/main.aug +7 -0
- package/examples/visibility/main.aug.md +39 -0
- package/package.json +50 -0
- package/runtime/aug_crypto.c +121 -0
- package/runtime/aug_html.c +93 -0
- package/runtime/aug_http.c +829 -0
- package/runtime/aug_json.c +165 -0
- package/runtime/aug_runtime.c +792 -0
- package/runtime/aug_runtime.h +245 -0
- package/runtime/aug_tasks.c +172 -0
- package/runtime/aug_time.c +5 -0
- package/runtime/aug_values.c +80 -0
- package/scripts/bootstrap-native.mjs +121 -0
- package/scripts/native-dependencies.lock.json +65 -0
- package/scripts/native-home.mjs +11 -0
- package/src/actions.js +109 -0
- package/src/ast.js +19 -0
- package/src/builtins.js +93 -0
- package/src/checker.js +2896 -0
- package/src/cli.js +344 -0
- package/src/codegen.js +1159 -0
- package/src/config.js +149 -0
- package/src/continuation.js +110 -0
- package/src/di.js +24 -0
- package/src/documentation.js +27 -0
- package/src/editor.js +782 -0
- package/src/effects.js +29 -0
- package/src/fixes.js +222 -0
- package/src/formatter.js +296 -0
- package/src/freshness.js +154 -0
- package/src/help.js +212 -0
- package/src/html.js +27 -0
- package/src/http-policies.js +90 -0
- package/src/inference.js +16 -0
- package/src/interceptors.js +70 -0
- package/src/javadoc.js +67 -0
- package/src/lexer.js +199 -0
- package/src/libraries.js +31 -0
- package/src/lsp.js +180 -0
- package/src/native.js +144 -0
- package/src/navigation.js +162 -0
- package/src/openapi.js +220 -0
- package/src/ownership.js +232 -0
- package/src/package-manager.js +299 -0
- package/src/parser.js +1155 -0
- package/src/policies.js +130 -0
- package/src/project-init.js +19 -0
- package/src/project.js +292 -0
- package/src/schemas.js +62 -0
- package/src/semantic.js +255 -0
- package/src/spec.js +738 -0
- package/src/testing.js +186 -0
- package/src/types.js +10 -0
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
<!-- Generated by aug spec. Edit the August source, then regenerate. -->
|
|
2
|
+
|
|
3
|
+
# `contracts.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
|
+
- [`Console`](contracts.aug.md#symbol-Console) is a capability interface.
|
|
10
|
+
- [`SystemConsole`](contracts.aug.md#symbol-SystemConsole) is a class implementing `Console`.
|
|
11
|
+
- [`FileReader`](contracts.aug.md#symbol-FileReader) is a capability interface.
|
|
12
|
+
- [`FileWriter`](contracts.aug.md#symbol-FileWriter) is a capability interface.
|
|
13
|
+
- [`LocalFiles`](contracts.aug.md#symbol-LocalFiles) is a class implementing `FileReader`, `FileWriter`.
|
|
14
|
+
- [`Arguments`](contracts.aug.md#symbol-Arguments) is a capability interface.
|
|
15
|
+
- [`ProcessArguments`](contracts.aug.md#symbol-ProcessArguments) is a class implementing `Arguments`.
|
|
16
|
+
|
|
17
|
+
<a id="symbol-Console"></a>
|
|
18
|
+
|
|
19
|
+
## `Console`
|
|
20
|
+
|
|
21
|
+
[source](contracts.aug#L3)
|
|
22
|
+
|
|
23
|
+
Capability interface.
|
|
24
|
+
|
|
25
|
+
**Author documentation**
|
|
26
|
+
|
|
27
|
+
Permission to write to a console, provided by an explicitly selected adapter.
|
|
28
|
+
|
|
29
|
+
<a id="symbol-Console.write"></a>
|
|
30
|
+
|
|
31
|
+
### `Console.write`
|
|
32
|
+
|
|
33
|
+
[source](contracts.aug#L5)
|
|
34
|
+
|
|
35
|
+
Type parameters: `T`.
|
|
36
|
+
|
|
37
|
+
**Inputs**
|
|
38
|
+
|
|
39
|
+
- `value` (`T`) — required labeled input.
|
|
40
|
+
|
|
41
|
+
Returns: no value.
|
|
42
|
+
|
|
43
|
+
Capabilities: [`Console.write`](contracts.aug.md#symbol-Console.write).
|
|
44
|
+
|
|
45
|
+
Interface contract. A selected implementation supplies the behavior.
|
|
46
|
+
|
|
47
|
+
**Author documentation**
|
|
48
|
+
|
|
49
|
+
Write one line of text.
|
|
50
|
+
|
|
51
|
+
**Parameters**
|
|
52
|
+
- `value`: Text to display.
|
|
53
|
+
|
|
54
|
+
<a id="symbol-SystemConsole"></a>
|
|
55
|
+
|
|
56
|
+
## `SystemConsole`
|
|
57
|
+
|
|
58
|
+
[source](contracts.aug#L8)
|
|
59
|
+
|
|
60
|
+
Behavioral class.
|
|
61
|
+
|
|
62
|
+
Satisfies [`Console`](contracts.aug.md#symbol-Console).
|
|
63
|
+
|
|
64
|
+
**Author documentation**
|
|
65
|
+
|
|
66
|
+
The native standard-output adapter. Construction performs no output.
|
|
67
|
+
|
|
68
|
+
<a id="symbol-SystemConsole.write"></a>
|
|
69
|
+
|
|
70
|
+
### `SystemConsole.write`
|
|
71
|
+
|
|
72
|
+
[source](contracts.aug#L9)
|
|
73
|
+
|
|
74
|
+
Type parameters: `T`.
|
|
75
|
+
|
|
76
|
+
**Inputs**
|
|
77
|
+
|
|
78
|
+
- `value` (`T`) — required labeled input.
|
|
79
|
+
|
|
80
|
+
Returns: no value.
|
|
81
|
+
|
|
82
|
+
Capabilities: [`Console.write`](contracts.aug.md#symbol-Console.write).
|
|
83
|
+
|
|
84
|
+
**What it does**
|
|
85
|
+
|
|
86
|
+
- Call `print` with `value` = `value`.
|
|
87
|
+
|
|
88
|
+
**Author documentation**
|
|
89
|
+
|
|
90
|
+
Write one line of text.
|
|
91
|
+
|
|
92
|
+
**Parameters**
|
|
93
|
+
- `value`: Text to display.
|
|
94
|
+
|
|
95
|
+
<a id="symbol-FileReader"></a>
|
|
96
|
+
|
|
97
|
+
## `FileReader`
|
|
98
|
+
|
|
99
|
+
[source](contracts.aug#L13)
|
|
100
|
+
|
|
101
|
+
Capability interface.
|
|
102
|
+
|
|
103
|
+
**Author documentation**
|
|
104
|
+
|
|
105
|
+
Read UTF-8 text through an explicitly selected filesystem adapter.
|
|
106
|
+
|
|
107
|
+
<a id="symbol-FileReader.read"></a>
|
|
108
|
+
|
|
109
|
+
### `FileReader.read`
|
|
110
|
+
|
|
111
|
+
[source](contracts.aug#L15)
|
|
112
|
+
|
|
113
|
+
**Inputs**
|
|
114
|
+
|
|
115
|
+
- `path` (`string`) — required labeled input.
|
|
116
|
+
|
|
117
|
+
Returns: `string`.
|
|
118
|
+
|
|
119
|
+
Capabilities: [`FileReader.read`](contracts.aug.md#symbol-FileReader.read).
|
|
120
|
+
|
|
121
|
+
Can fail with `FileError`. Callers must catch or propagate these errors.
|
|
122
|
+
|
|
123
|
+
Interface contract. A selected implementation supplies the behavior.
|
|
124
|
+
|
|
125
|
+
**Author documentation**
|
|
126
|
+
|
|
127
|
+
Read text.
|
|
128
|
+
|
|
129
|
+
**Parameters**
|
|
130
|
+
- `path`: File path.
|
|
131
|
+
|
|
132
|
+
**Throws**
|
|
133
|
+
- `FileError`: The file could not be read.
|
|
134
|
+
|
|
135
|
+
<a id="symbol-FileWriter"></a>
|
|
136
|
+
|
|
137
|
+
## `FileWriter`
|
|
138
|
+
|
|
139
|
+
[source](contracts.aug#L18)
|
|
140
|
+
|
|
141
|
+
Capability interface.
|
|
142
|
+
|
|
143
|
+
**Author documentation**
|
|
144
|
+
|
|
145
|
+
Write UTF-8 text through an explicitly selected filesystem adapter.
|
|
146
|
+
|
|
147
|
+
<a id="symbol-FileWriter.write"></a>
|
|
148
|
+
|
|
149
|
+
### `FileWriter.write`
|
|
150
|
+
|
|
151
|
+
[source](contracts.aug#L20)
|
|
152
|
+
|
|
153
|
+
**Inputs**
|
|
154
|
+
|
|
155
|
+
- `path` (`string`) — required labeled input.
|
|
156
|
+
- `content` (`string`) — required labeled input.
|
|
157
|
+
|
|
158
|
+
Returns: no value.
|
|
159
|
+
|
|
160
|
+
Capabilities: [`FileWriter.write`](contracts.aug.md#symbol-FileWriter.write).
|
|
161
|
+
|
|
162
|
+
Can fail with `FileError`. Callers must catch or propagate these errors.
|
|
163
|
+
|
|
164
|
+
Interface contract. A selected implementation supplies the behavior.
|
|
165
|
+
|
|
166
|
+
**Author documentation**
|
|
167
|
+
|
|
168
|
+
Write text.
|
|
169
|
+
|
|
170
|
+
**Parameters**
|
|
171
|
+
- `path`: File path.
|
|
172
|
+
- `content`: Text.
|
|
173
|
+
|
|
174
|
+
**Throws**
|
|
175
|
+
- `FileError`: Writing failed.
|
|
176
|
+
|
|
177
|
+
<a id="symbol-LocalFiles"></a>
|
|
178
|
+
|
|
179
|
+
## `LocalFiles`
|
|
180
|
+
|
|
181
|
+
[source](contracts.aug#L23)
|
|
182
|
+
|
|
183
|
+
Behavioral class.
|
|
184
|
+
|
|
185
|
+
Satisfies [`FileReader`](contracts.aug.md#symbol-FileReader), [`FileWriter`](contracts.aug.md#symbol-FileWriter).
|
|
186
|
+
|
|
187
|
+
**Author documentation**
|
|
188
|
+
|
|
189
|
+
Native files. Operations are explicit; construction opens no files.
|
|
190
|
+
|
|
191
|
+
<a id="symbol-LocalFiles.read"></a>
|
|
192
|
+
|
|
193
|
+
### `LocalFiles.read`
|
|
194
|
+
|
|
195
|
+
[source](contracts.aug#L24)
|
|
196
|
+
|
|
197
|
+
**Inputs**
|
|
198
|
+
|
|
199
|
+
- `path` (`string`) — required labeled input.
|
|
200
|
+
|
|
201
|
+
Returns: `string`.
|
|
202
|
+
|
|
203
|
+
Capabilities: [`FileReader.read`](contracts.aug.md#symbol-FileReader.read).
|
|
204
|
+
|
|
205
|
+
Can fail with `FileError`. Callers must catch or propagate these errors.
|
|
206
|
+
|
|
207
|
+
**What it does**
|
|
208
|
+
|
|
209
|
+
- Return call `read_file` with `path` = `path`.
|
|
210
|
+
|
|
211
|
+
**Author documentation**
|
|
212
|
+
|
|
213
|
+
Read text.
|
|
214
|
+
|
|
215
|
+
**Parameters**
|
|
216
|
+
- `path`: File path.
|
|
217
|
+
|
|
218
|
+
**Throws**
|
|
219
|
+
- `FileError`: The file could not be read.
|
|
220
|
+
|
|
221
|
+
<a id="symbol-LocalFiles.write"></a>
|
|
222
|
+
|
|
223
|
+
### `LocalFiles.write`
|
|
224
|
+
|
|
225
|
+
[source](contracts.aug#L26)
|
|
226
|
+
|
|
227
|
+
**Inputs**
|
|
228
|
+
|
|
229
|
+
- `path` (`string`) — required labeled input.
|
|
230
|
+
- `content` (`string`) — required labeled input.
|
|
231
|
+
|
|
232
|
+
Returns: no value.
|
|
233
|
+
|
|
234
|
+
Capabilities: [`FileWriter.write`](contracts.aug.md#symbol-FileWriter.write).
|
|
235
|
+
|
|
236
|
+
Can fail with `FileError`. Callers must catch or propagate these errors.
|
|
237
|
+
|
|
238
|
+
**What it does**
|
|
239
|
+
|
|
240
|
+
- Call `write_file` with `path` = `path`; `content` = `content`.
|
|
241
|
+
|
|
242
|
+
**Author documentation**
|
|
243
|
+
|
|
244
|
+
Write text.
|
|
245
|
+
|
|
246
|
+
**Parameters**
|
|
247
|
+
- `path`: File path.
|
|
248
|
+
- `content`: Text.
|
|
249
|
+
|
|
250
|
+
**Throws**
|
|
251
|
+
- `FileError`: Writing failed.
|
|
252
|
+
|
|
253
|
+
<a id="symbol-Arguments"></a>
|
|
254
|
+
|
|
255
|
+
## `Arguments`
|
|
256
|
+
|
|
257
|
+
[source](contracts.aug#L30)
|
|
258
|
+
|
|
259
|
+
Capability interface.
|
|
260
|
+
|
|
261
|
+
**Author documentation**
|
|
262
|
+
|
|
263
|
+
Read command-line input through an explicit dependency.
|
|
264
|
+
|
|
265
|
+
<a id="symbol-Arguments.read"></a>
|
|
266
|
+
|
|
267
|
+
### `Arguments.read`
|
|
268
|
+
|
|
269
|
+
[source](contracts.aug#L31)
|
|
270
|
+
|
|
271
|
+
Returns: `List<string>`.
|
|
272
|
+
|
|
273
|
+
Capabilities: [`Arguments.read`](contracts.aug.md#symbol-Arguments.read).
|
|
274
|
+
|
|
275
|
+
Interface contract. A selected implementation supplies the behavior.
|
|
276
|
+
|
|
277
|
+
<a id="symbol-ProcessArguments"></a>
|
|
278
|
+
|
|
279
|
+
## `ProcessArguments`
|
|
280
|
+
|
|
281
|
+
[source](contracts.aug#L34)
|
|
282
|
+
|
|
283
|
+
Behavioral class.
|
|
284
|
+
|
|
285
|
+
Satisfies [`Arguments`](contracts.aug.md#symbol-Arguments).
|
|
286
|
+
|
|
287
|
+
**Author documentation**
|
|
288
|
+
|
|
289
|
+
Native command-line arguments.
|
|
290
|
+
|
|
291
|
+
<a id="symbol-ProcessArguments.read"></a>
|
|
292
|
+
|
|
293
|
+
### `ProcessArguments.read`
|
|
294
|
+
|
|
295
|
+
[source](contracts.aug#L35)
|
|
296
|
+
|
|
297
|
+
Returns: `List<string>`.
|
|
298
|
+
|
|
299
|
+
Capabilities: [`Arguments.read`](contracts.aug.md#symbol-Arguments.read).
|
|
300
|
+
|
|
301
|
+
**What it does**
|
|
302
|
+
|
|
303
|
+
- Return call `arguments`.
|
|
304
|
+
|
|
305
|
+
## Built-in operations used by this file
|
|
306
|
+
|
|
307
|
+
- `arguments` (no inputs) → `List<string>`: Composition arguments. Other callables receive the Arguments capability.
|
|
308
|
+
- `print` (`value`: `any`) → `void`: Composition and test output. Other callables receive Console and declare uses console.write.
|
|
309
|
+
- `read_file` (`path`: `string`) → `string`: Root-only UTF-8 text input. Other callables receive FileReader. Invalid Unicode and NUL raise FileError. Can fail with `FileError`.
|
|
310
|
+
- `write_file` (`path`: `string`, `content`: `string`) → `void`: Root-only UTF-8 text output. Other callables receive FileWriter. Can fail with `FileError`.
|
|
311
|
+
|
|
312
|
+
[Full built-in reference](https://greenpandastudios.github.io/augscript/language-constructs).
|
|
313
|
+
|
|
314
|
+
## Shared language rules
|
|
315
|
+
|
|
316
|
+
See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"format": 1,
|
|
3
|
+
"files": [
|
|
4
|
+
".aug-spec/august/0.19.0/io/contracts.aug",
|
|
5
|
+
".aug-spec/august/0.19.0/io/contracts.aug.md",
|
|
6
|
+
"calculator.aug.md",
|
|
7
|
+
"logging/console.aug.md",
|
|
8
|
+
"logging/export.aug.md",
|
|
9
|
+
"logging/logger.aug.md",
|
|
10
|
+
"main.aug.md"
|
|
11
|
+
],
|
|
12
|
+
"digest": "315eaa1aa7535c1e0d877120cc13528bdba05fb193bcba9e466597f98958b47b"
|
|
13
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import Console and SystemConsole from august.io
|
|
2
|
+
import Logger from logging
|
|
3
|
+
/** Adds two integers. */
|
|
4
|
+
interface Arithmetic {
|
|
5
|
+
add(resolve Console console, int left, int right) returns int uses Console.write
|
|
6
|
+
}
|
|
7
|
+
/** Uses the selected logger to describe each addition. */
|
|
8
|
+
Calculator(resolve Logger logger to _logger) implements Arithmetic {
|
|
9
|
+
/**
|
|
10
|
+
* Adds left and right, logging the operation.
|
|
11
|
+
* @param left First integer.
|
|
12
|
+
* @param right Second integer.
|
|
13
|
+
* @return Sum of the two integers.
|
|
14
|
+
*/
|
|
15
|
+
add(resolve Console console, int left, int right) returns int uses Console.write {
|
|
16
|
+
_logger.log(message="adding integers")
|
|
17
|
+
return left + right
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Demonstrates a checked failure instead of a successful result.
|
|
22
|
+
* @param fail Whether to simulate a failed load.
|
|
23
|
+
* @throws FileError When fail is true.
|
|
24
|
+
*/
|
|
25
|
+
load(bool fail) returns string unless FileError {
|
|
26
|
+
if fail {
|
|
27
|
+
throw FileError()
|
|
28
|
+
}
|
|
29
|
+
return "loaded"
|
|
30
|
+
}
|
|
31
|
+
/** Test adapter: keeps calculator tests independent of console output. */
|
|
32
|
+
_SilentLogger() implements Logger {
|
|
33
|
+
log(resolve Console console, string message) uses Console.write {
|
|
34
|
+
pass
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
test Calculator calculator {
|
|
38
|
+
when "addition" {
|
|
39
|
+
implement Console with SystemConsole
|
|
40
|
+
implement Logger with _SilentLogger
|
|
41
|
+
calculator = Calculator()
|
|
42
|
+
List<int> values = [1, 2]
|
|
43
|
+
it "adds labeled inputs" {
|
|
44
|
+
assert(calculator.add(right=2, left=1) == 3)
|
|
45
|
+
borrow values {
|
|
46
|
+
values.append(value=3)
|
|
47
|
+
}
|
|
48
|
+
assert(values.length() == 3)
|
|
49
|
+
}
|
|
50
|
+
it "starts with fresh setup" {
|
|
51
|
+
assert(values.length() == 2)
|
|
52
|
+
assert(calculator.add(left=values.get(index=0), right=values.get(index=1)) == 3)
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
<!-- Generated by aug spec. Edit the August source, then regenerate. -->
|
|
2
|
+
|
|
3
|
+
# `calculator.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
|
+
- [`Arithmetic`](calculator.aug.md#symbol-Arithmetic) is an interface.
|
|
10
|
+
- [`Calculator`](calculator.aug.md#symbol-Calculator) is a class implementing `Arithmetic`.
|
|
11
|
+
- [`load`](calculator.aug.md#symbol-load) is a function returning `string`.
|
|
12
|
+
- [`_SilentLogger`](calculator.aug.md#symbol-_SilentLogger) is a class implementing `Logger`.
|
|
13
|
+
- [`test Calculator calculator`](calculator.aug.md#symbol-test%20Calculator%20calculator) is a same-file test suite.
|
|
14
|
+
|
|
15
|
+
<a id="symbol-Arithmetic"></a>
|
|
16
|
+
|
|
17
|
+
## `Arithmetic`
|
|
18
|
+
|
|
19
|
+
[source](calculator.aug#L4)
|
|
20
|
+
|
|
21
|
+
Interface.
|
|
22
|
+
|
|
23
|
+
**Author documentation**
|
|
24
|
+
|
|
25
|
+
Adds two integers.
|
|
26
|
+
|
|
27
|
+
<a id="symbol-Arithmetic.add"></a>
|
|
28
|
+
|
|
29
|
+
### `Arithmetic.add`
|
|
30
|
+
|
|
31
|
+
[source](calculator.aug#L5)
|
|
32
|
+
|
|
33
|
+
**Inputs**
|
|
34
|
+
|
|
35
|
+
- `console` ([`Console`](.aug-spec/august/0.19.0/io/contracts.aug.md#symbol-Console)) — injected; callers omit it.
|
|
36
|
+
- `left` (`int`) — required labeled input.
|
|
37
|
+
- `right` (`int`) — required labeled input.
|
|
38
|
+
|
|
39
|
+
Returns: `int`.
|
|
40
|
+
|
|
41
|
+
Capabilities: [`Console.write`](.aug-spec/august/0.19.0/io/contracts.aug.md#symbol-Console.write).
|
|
42
|
+
|
|
43
|
+
Interface contract. A selected implementation supplies the behavior.
|
|
44
|
+
|
|
45
|
+
<a id="symbol-Calculator"></a>
|
|
46
|
+
|
|
47
|
+
## `Calculator`
|
|
48
|
+
|
|
49
|
+
[source](calculator.aug#L8)
|
|
50
|
+
|
|
51
|
+
Behavioral class.
|
|
52
|
+
|
|
53
|
+
Satisfies [`Arithmetic`](calculator.aug.md#symbol-Arithmetic).
|
|
54
|
+
|
|
55
|
+
**Author documentation**
|
|
56
|
+
|
|
57
|
+
Uses the selected logger to describe each addition.
|
|
58
|
+
|
|
59
|
+
**Inputs**
|
|
60
|
+
|
|
61
|
+
- `logger` ([`Logger`](logging/logger.aug.md#symbol-Logger)) — injected; callers omit it — stored as `_logger` (private) and read-only after initialization.
|
|
62
|
+
|
|
63
|
+
<a id="symbol-Calculator.add"></a>
|
|
64
|
+
|
|
65
|
+
### `Calculator.add`
|
|
66
|
+
|
|
67
|
+
[source](calculator.aug#L15)
|
|
68
|
+
|
|
69
|
+
**Inputs**
|
|
70
|
+
|
|
71
|
+
- `console` ([`Console`](.aug-spec/august/0.19.0/io/contracts.aug.md#symbol-Console)) — injected; callers omit it.
|
|
72
|
+
- `left` (`int`) — required labeled input.
|
|
73
|
+
- `right` (`int`) — required labeled input.
|
|
74
|
+
|
|
75
|
+
Returns: `int`.
|
|
76
|
+
|
|
77
|
+
Capabilities: [`Console.write`](.aug-spec/august/0.19.0/io/contracts.aug.md#symbol-Console.write).
|
|
78
|
+
|
|
79
|
+
**What it does**
|
|
80
|
+
|
|
81
|
+
- Call [`Logger.log`](logging/logger.aug.md#symbol-Logger.log) on `_logger` with `message` = `"adding integers"`; inject `console` from `console`.
|
|
82
|
+
- Return `left` plus `right`.
|
|
83
|
+
|
|
84
|
+
**Author documentation**
|
|
85
|
+
|
|
86
|
+
Adds left and right, logging the operation.
|
|
87
|
+
|
|
88
|
+
**Returns** Sum of the two integers.
|
|
89
|
+
|
|
90
|
+
**Parameters**
|
|
91
|
+
- `left`: First integer.
|
|
92
|
+
- `right`: Second integer.
|
|
93
|
+
|
|
94
|
+
<a id="symbol-load"></a>
|
|
95
|
+
|
|
96
|
+
## `load`
|
|
97
|
+
|
|
98
|
+
[source](calculator.aug#L25)
|
|
99
|
+
|
|
100
|
+
**Inputs**
|
|
101
|
+
|
|
102
|
+
- `fail` (`bool`) — required labeled input.
|
|
103
|
+
|
|
104
|
+
Returns: `string`.
|
|
105
|
+
|
|
106
|
+
Can fail with `FileError`. Callers must catch or propagate these errors.
|
|
107
|
+
|
|
108
|
+
**What it does**
|
|
109
|
+
|
|
110
|
+
- If `fail` is true:
|
|
111
|
+
- Fail with call `FileError`. Transfer control to a matching catch or propagate the failure.
|
|
112
|
+
- Return `"loaded"`.
|
|
113
|
+
|
|
114
|
+
**Author documentation**
|
|
115
|
+
|
|
116
|
+
Demonstrates a checked failure instead of a successful result.
|
|
117
|
+
|
|
118
|
+
**Parameters**
|
|
119
|
+
- `fail`: Whether to simulate a failed load.
|
|
120
|
+
|
|
121
|
+
**Throws**
|
|
122
|
+
- `FileError`: When fail is true.
|
|
123
|
+
|
|
124
|
+
<a id="symbol-_SilentLogger"></a>
|
|
125
|
+
|
|
126
|
+
## `_SilentLogger`
|
|
127
|
+
|
|
128
|
+
[source](calculator.aug#L32)
|
|
129
|
+
|
|
130
|
+
Behavioral class, private to this file.
|
|
131
|
+
|
|
132
|
+
Satisfies [`Logger`](logging/logger.aug.md#symbol-Logger).
|
|
133
|
+
|
|
134
|
+
**Author documentation**
|
|
135
|
+
|
|
136
|
+
Test adapter: keeps calculator tests independent of console output.
|
|
137
|
+
|
|
138
|
+
<a id="symbol-_SilentLogger.log"></a>
|
|
139
|
+
|
|
140
|
+
### `_SilentLogger.log`
|
|
141
|
+
|
|
142
|
+
[source](calculator.aug#L33)
|
|
143
|
+
|
|
144
|
+
**Inputs**
|
|
145
|
+
|
|
146
|
+
- `console` ([`Console`](.aug-spec/august/0.19.0/io/contracts.aug.md#symbol-Console)) — injected; callers omit it.
|
|
147
|
+
- `message` (`string`) — required labeled input.
|
|
148
|
+
|
|
149
|
+
Returns: no value.
|
|
150
|
+
|
|
151
|
+
Capabilities: [`Console.write`](.aug-spec/august/0.19.0/io/contracts.aug.md#symbol-Console.write).
|
|
152
|
+
|
|
153
|
+
**What it does**
|
|
154
|
+
|
|
155
|
+
- Continue without another operation.
|
|
156
|
+
|
|
157
|
+
**Author documentation**
|
|
158
|
+
|
|
159
|
+
**Parameters**
|
|
160
|
+
- `message`: Text to write.
|
|
161
|
+
|
|
162
|
+
<a id="symbol-test Calculator calculator"></a>
|
|
163
|
+
|
|
164
|
+
## `test Calculator calculator`
|
|
165
|
+
|
|
166
|
+
[source](calculator.aug#L37)
|
|
167
|
+
|
|
168
|
+
Same-file class tests for [`Calculator`](calculator.aug.md#symbol-Calculator). Each case gets isolated setup and dependency bindings.
|
|
169
|
+
|
|
170
|
+
### Group `addition`
|
|
171
|
+
|
|
172
|
+
**Setup before each case**
|
|
173
|
+
|
|
174
|
+
- Provide [`SystemConsole`](.aug-spec/august/0.19.0/io/contracts.aug.md#symbol-SystemConsole) when `Console` is requested. Use a fresh instance when this provider retains state; otherwise reuse one instance.
|
|
175
|
+
- Provide [`_SilentLogger`](calculator.aug.md#symbol-_SilentLogger) when `Logger` is requested. Use a fresh instance when this provider retains state; otherwise reuse one instance.
|
|
176
|
+
- Set `calculator` to call [`Calculator`](calculator.aug.md#symbol-Calculator); inject `_logger` from `Logger`.
|
|
177
|
+
- Set `values` of type `List<int>` to a list containing `1`, `2`.
|
|
178
|
+
|
|
179
|
+
#### `adds labeled inputs`
|
|
180
|
+
|
|
181
|
+
[source](calculator.aug#L43)
|
|
182
|
+
|
|
183
|
+
- Call `assert` with (call [`Calculator.add`](calculator.aug.md#symbol-Calculator.add) on `calculator` with `right` = `2`; `left` = `1`; inject `console` from `Console` equals `3`).
|
|
184
|
+
- Grant exclusive mutable access to `values` for this block, then end the borrow:
|
|
185
|
+
- Call `append` on `values` with `value` = `3`.
|
|
186
|
+
- Call `assert` with (call `length` on `values` equals `3`).
|
|
187
|
+
|
|
188
|
+
#### `starts with fresh setup`
|
|
189
|
+
|
|
190
|
+
[source](calculator.aug#L50)
|
|
191
|
+
|
|
192
|
+
- Call `assert` with (call `length` on `values` equals `2`).
|
|
193
|
+
- Call `assert` with (call [`Calculator.add`](calculator.aug.md#symbol-Calculator.add) on `calculator` with `left` = call `get` on `values` with `index` = `0`; `right` = call `get` on `values` with `index` = `1`; inject `console` from `Console` equals `3`).
|
|
194
|
+
|
|
195
|
+
## Dependencies used by this file
|
|
196
|
+
|
|
197
|
+
Only referenced types and operations appear here. Each name links to its complete specification.
|
|
198
|
+
|
|
199
|
+
### [`Console`](.aug-spec/august/0.19.0/io/contracts.aug.md#symbol-Console)
|
|
200
|
+
|
|
201
|
+
Capability interface from `august.io`.
|
|
202
|
+
|
|
203
|
+
- [`Console.write`](.aug-spec/august/0.19.0/io/contracts.aug.md#symbol-Console.write)<`T`> (`value`: `T`) → `void`.
|
|
204
|
+
|
|
205
|
+
### [`SystemConsole`](.aug-spec/august/0.19.0/io/contracts.aug.md#symbol-SystemConsole)
|
|
206
|
+
|
|
207
|
+
Class from `august.io`.
|
|
208
|
+
|
|
209
|
+
Used as a type or provider.
|
|
210
|
+
|
|
211
|
+
### [`Logger`](logging/logger.aug.md#symbol-Logger)
|
|
212
|
+
|
|
213
|
+
Interface from `logging`.
|
|
214
|
+
|
|
215
|
+
- [`Logger.log`](logging/logger.aug.md#symbol-Logger.log) (`message`: `string`) → `void`; inject `console`: [`Console`](.aug-spec/august/0.19.0/io/contracts.aug.md#symbol-Console); uses [`Console.write`](.aug-spec/august/0.19.0/io/contracts.aug.md#symbol-Console.write).
|
|
216
|
+
|
|
217
|
+
## Built-in operations used by this file
|
|
218
|
+
|
|
219
|
+
- `List<int>.append` (`value`: `int`) → `void`: Append an element with exclusive mutable access. Read-only and owned aliases cannot be stored here. Changes the receiver.
|
|
220
|
+
- `List<int>.get` (`index`: `int`) → `int`: Read a zero-based position. An invalid index raises checked IndexError. Reference results grant reading. Can fail with `IndexError`.
|
|
221
|
+
- `List<int>.length` (no inputs) → `int`: Read the number of elements.
|
|
222
|
+
- `assert` (`condition`: `bool`) → `void`: Assert a bool in a test case or its setup. Catching an assertion failure cannot make the case pass; every case must execute an assertion.
|
|
223
|
+
|
|
224
|
+
[Full built-in reference](https://greenpandastudios.github.io/augscript/language-constructs).
|
|
225
|
+
|
|
226
|
+
## Shared language rules
|
|
227
|
+
|
|
228
|
+
See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
<!-- Generated by aug spec. Edit the August source, then regenerate. -->
|
|
2
|
+
|
|
3
|
+
# `console.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
|
+
- [`ConsoleLogger`](console.aug.md#symbol-ConsoleLogger) is a class implementing `Logger`.
|
|
10
|
+
|
|
11
|
+
<a id="symbol-ConsoleLogger"></a>
|
|
12
|
+
|
|
13
|
+
## `ConsoleLogger`
|
|
14
|
+
|
|
15
|
+
[source](console.aug#L4)
|
|
16
|
+
|
|
17
|
+
Behavioral class.
|
|
18
|
+
|
|
19
|
+
Satisfies [`Logger`](logger.aug.md#symbol-Logger).
|
|
20
|
+
|
|
21
|
+
**Author documentation**
|
|
22
|
+
|
|
23
|
+
Writes application messages to standard output.
|
|
24
|
+
|
|
25
|
+
<a id="symbol-ConsoleLogger.log"></a>
|
|
26
|
+
|
|
27
|
+
### `ConsoleLogger.log`
|
|
28
|
+
|
|
29
|
+
[source](console.aug#L5)
|
|
30
|
+
|
|
31
|
+
**Inputs**
|
|
32
|
+
|
|
33
|
+
- `console` ([`Console`](../.aug-spec/august/0.19.0/io/contracts.aug.md#symbol-Console)) — injected; callers omit it.
|
|
34
|
+
- `message` (`string`) — required labeled input.
|
|
35
|
+
|
|
36
|
+
Returns: no value.
|
|
37
|
+
|
|
38
|
+
Capabilities: [`Console.write`](../.aug-spec/august/0.19.0/io/contracts.aug.md#symbol-Console.write).
|
|
39
|
+
|
|
40
|
+
**What it does**
|
|
41
|
+
|
|
42
|
+
- Call [`Console.write`](../.aug-spec/august/0.19.0/io/contracts.aug.md#symbol-Console.write) on `console` with `value` = `message`.
|
|
43
|
+
|
|
44
|
+
**Author documentation**
|
|
45
|
+
|
|
46
|
+
**Parameters**
|
|
47
|
+
- `message`: Text to write.
|
|
48
|
+
|
|
49
|
+
## Dependencies used by this file
|
|
50
|
+
|
|
51
|
+
Only referenced types and operations appear here. Each name links to its complete specification.
|
|
52
|
+
|
|
53
|
+
### [`Console`](../.aug-spec/august/0.19.0/io/contracts.aug.md#symbol-Console)
|
|
54
|
+
|
|
55
|
+
Capability interface from `august.io`.
|
|
56
|
+
|
|
57
|
+
- [`Console.write`](../.aug-spec/august/0.19.0/io/contracts.aug.md#symbol-Console.write)<`T`> (`value`: `T`) → `void`.
|
|
58
|
+
|
|
59
|
+
### [`Logger`](logger.aug.md#symbol-Logger)
|
|
60
|
+
|
|
61
|
+
Interface from `logger`.
|
|
62
|
+
|
|
63
|
+
Used as a type or provider.
|
|
64
|
+
|
|
65
|
+
## Shared language rules
|
|
66
|
+
|
|
67
|
+
See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
|