@greenpandastudios/aug-cli 0.19.0 → 0.20.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -6
- package/THIRD_PARTY_NOTICES.md +4 -0
- package/bin/aug.mjs +12 -2
- package/docs/about.md +27 -0
- package/docs/api/crypto.md +103 -69
- package/docs/api/io.md +35 -33
- package/docs/api/json.md +3 -3
- package/docs/api/memory.md +23 -19
- package/docs/api/time.md +10 -9
- package/docs/api/web.md +33 -38
- package/docs/compatibility.md +3 -3
- package/docs/contributing-benchmarks.md +38 -0
- package/docs/dev-containers.md +95 -0
- package/docs/diagnostics.md +15 -5
- package/docs/docker.md +174 -12
- package/docs/editor.md +35 -0
- package/docs/example-projects.json +206 -24
- package/docs/examples/approved-design/counters.md +34 -126
- package/docs/examples/approved-design/dependencies/august/0.20.1/io/contracts.md +178 -0
- package/docs/examples/approved-design/domain/app.md +13 -77
- package/docs/examples/approved-design/domain/export.md +5 -19
- package/docs/examples/approved-design/domain/models.md +4 -23
- package/docs/examples/approved-design/domain/numbers.md +24 -114
- package/docs/examples/approved-design/index.md +16 -7
- package/docs/examples/approved-design/main.md +19 -96
- package/docs/examples/benchmark/index.md +6 -5
- package/docs/examples/benchmark/main.md +7 -35
- package/docs/examples/cli-args/index.md +6 -5
- package/docs/examples/cli-args/main.md +6 -31
- package/docs/examples/collections/index.md +6 -5
- package/docs/examples/collections/main.md +7 -35
- package/docs/examples/collections-benchmark/index.md +6 -5
- package/docs/examples/collections-benchmark/main.md +7 -35
- package/docs/examples/cpu-benchmark/index.md +6 -5
- package/docs/examples/cpu-benchmark/main.md +5 -24
- package/docs/examples/developer-workflow/calculator.md +39 -186
- package/docs/examples/developer-workflow/dependencies/august/0.20.1/io/contracts.md +178 -0
- package/docs/examples/developer-workflow/index.md +16 -7
- package/docs/examples/developer-workflow/logging/console.md +10 -56
- package/docs/examples/developer-workflow/logging/export.md +4 -14
- package/docs/examples/developer-workflow/logging/logger.md +7 -43
- package/docs/examples/developer-workflow/main.md +17 -69
- package/docs/examples/drop/index.md +6 -5
- package/docs/examples/drop/main.md +7 -27
- package/docs/examples/drop/resource.md +7 -30
- package/docs/examples/errors/errors.md +7 -27
- package/docs/examples/errors/index.md +6 -5
- package/docs/examples/errors/main.md +7 -28
- package/docs/examples/ffi/index.md +6 -5
- package/docs/examples/ffi/main.md +6 -20
- package/docs/examples/ffi/native.md +8 -34
- package/docs/examples/generic-di/dependencies/august/0.20.1/io/contracts.md +178 -0
- package/docs/examples/generic-di/index.md +6 -5
- package/docs/examples/generic-di/main.md +9 -39
- package/docs/examples/generic-di/types.md +23 -92
- package/docs/examples/generics/index.md +6 -5
- package/docs/examples/generics/main.md +10 -47
- package/docs/examples/generics/types.md +25 -100
- package/docs/examples/hello/app/export.md +4 -12
- package/docs/examples/hello/app/greeter.md +13 -91
- package/docs/examples/hello/dependencies/august/0.20.1/io/contracts.md +178 -0
- package/docs/examples/hello/index.md +17 -6
- package/docs/examples/hello/logging/console.md +10 -54
- package/docs/examples/hello/logging/export.md +4 -14
- package/docs/examples/hello/logging/logger.md +7 -45
- package/docs/examples/hello/main.md +9 -39
- package/docs/examples/http-benchmark/index.md +6 -5
- package/docs/examples/http-benchmark/main.md +6 -20
- package/docs/examples/http-benchmark/routes.md +9 -31
- package/docs/examples/index.md +46 -29
- package/docs/examples/interceptors/app.md +20 -139
- package/docs/examples/interceptors/dependencies/august/0.20.1/io/contracts.md +178 -0
- package/docs/examples/interceptors/index.md +6 -5
- package/docs/examples/interceptors/interceptors.md +24 -148
- package/docs/examples/interceptors/logging.md +13 -76
- package/docs/examples/interceptors/main.md +10 -65
- package/docs/examples/json-benchmark/data.md +4 -20
- package/docs/examples/json-benchmark/dependencies/packages/@git/url_2d3c37c690c0fa115be1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.md +67 -0
- package/docs/examples/json-benchmark/index.md +7 -5
- package/docs/examples/json-benchmark/main-yaml.md +20 -0
- package/docs/examples/json-benchmark/main.md +10 -49
- package/docs/examples/new-syntax/console.md +10 -52
- package/docs/examples/new-syntax/dependencies/august/0.20.1/io/contracts.md +178 -0
- package/docs/examples/new-syntax/greeter.md +13 -71
- package/docs/examples/new-syntax/index.md +6 -5
- package/docs/examples/new-syntax/logger.md +7 -43
- package/docs/examples/new-syntax/main.md +10 -53
- package/docs/examples/new-syntax/math.md +6 -24
- package/docs/examples/oidc-login/client/contracts.md +10 -61
- package/docs/examples/oidc-login/client/endpoints.md +32 -154
- package/docs/examples/oidc-login/client/export.md +5 -23
- package/docs/examples/oidc-login/client/login.md +234 -344
- package/docs/examples/oidc-login/client/logout.md +38 -143
- package/docs/examples/oidc-login/client/protocol.md +183 -304
- package/docs/examples/oidc-login/client/session.md +41 -149
- package/docs/examples/oidc-login/client/views.md +13 -58
- package/docs/examples/oidc-login/common/export.md +6 -26
- package/docs/examples/oidc-login/common/headers.md +42 -72
- package/docs/examples/oidc-login/common/keys.md +40 -164
- package/docs/examples/oidc-login/common/settings.md +24 -40
- package/docs/examples/oidc-login/common/views.md +7 -28
- package/docs/examples/oidc-login/dependencies/packages/@git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/store.md +205 -0
- package/docs/examples/oidc-login/dependencies/packages/@git/url_2d3c37c690c0fa115be1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.md +67 -0
- package/docs/examples/oidc-login/dependencies/packages/@git/url_897efafd565158fc4908/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.md +267 -0
- package/docs/examples/oidc-login/dependencies/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/contracts.md +415 -0
- package/docs/examples/oidc-login/dependencies/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/jose.md +271 -0
- package/docs/examples/oidc-login/dependencies/packages/@git/url_c092cd151499c4e1d8a1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.md +89 -0
- package/docs/examples/oidc-login/index.md +8 -7
- package/docs/examples/oidc-login/main-yaml.md +7 -0
- package/docs/examples/oidc-login/main.md +26 -153
- package/docs/examples/oidc-login/provider/authorization.md +232 -275
- package/docs/examples/oidc-login/provider/contracts.md +24 -146
- package/docs/examples/oidc-login/provider/credentials.md +24 -57
- package/docs/examples/oidc-login/provider/discovery.md +48 -122
- package/docs/examples/oidc-login/provider/export.md +11 -37
- package/docs/examples/oidc-login/provider/token.md +159 -237
- package/docs/examples/oidc-login/provider/userinfo.md +47 -102
- package/docs/examples/oidc-login/provider/views.md +13 -53
- package/docs/examples/ownership/counter.md +17 -63
- package/docs/examples/ownership/index.md +6 -5
- package/docs/examples/ownership/main.md +7 -30
- package/docs/examples/ownership-transfer/dependencies/august/0.20.1/io/contracts.md +178 -0
- package/docs/examples/ownership-transfer/index.md +6 -5
- package/docs/examples/ownership-transfer/main.md +10 -52
- package/docs/examples/ownership-transfer/resource.md +15 -67
- package/docs/examples/packages-app/dependencies/packages/@example/aug-math/0.1.0/arithmetic.md +12 -50
- package/docs/examples/packages-app/index.md +7 -6
- package/docs/examples/packages-app/main.md +7 -25
- package/docs/examples/packages-math/aug-package-json.md +1 -1
- package/docs/examples/packages-math/index.md +7 -6
- package/docs/examples/packages-math/src/arithmetic.md +12 -50
- package/docs/examples/packages-math/src/export.md +4 -12
- package/docs/examples/startup-benchmark/index.md +6 -5
- package/docs/examples/startup-benchmark/main.md +5 -17
- package/docs/examples/visibility/counter.md +19 -67
- package/docs/examples/visibility/index.md +6 -5
- package/docs/examples/visibility/main.md +7 -31
- package/docs/examples/weather-api/forecasts.md +168 -0
- package/docs/examples/weather-api/index.md +42 -0
- package/docs/examples/weather-api/main-yaml.md +21 -0
- package/docs/examples/weather-api/main.md +65 -0
- package/docs/examples.json +10 -0
- package/docs/getting-started.md +105 -2
- package/docs/grammar.md +6 -4
- package/docs/guides/change-a-module.md +64 -0
- package/docs/guides/index.md +27 -0
- package/docs/index.md +51 -29
- package/docs/language-conformance.md +1 -1
- package/docs/language-constructs.md +22 -22
- package/docs/language-design-audit.md +1 -1
- package/docs/learn/data-and-errors.md +77 -0
- package/docs/learn/index.md +30 -0
- package/docs/learn/modules-and-dependencies.md +73 -0
- package/docs/learn/state-and-tests.md +71 -0
- package/docs/learn/values-and-functions.md +62 -0
- package/docs/lesson-failures.json +8 -0
- package/docs/maintaining-docs.md +16 -4
- package/docs/packages.md +72 -126
- package/docs/performance.md +13 -41
- package/docs/production-readiness.md +5 -4
- package/docs/public/downloads/approved-design.zip +0 -0
- package/docs/public/downloads/benchmark.zip +0 -0
- package/docs/public/downloads/cli-args.zip +0 -0
- package/docs/public/downloads/collections-benchmark.zip +0 -0
- package/docs/public/downloads/collections.zip +0 -0
- package/docs/public/downloads/cpu-benchmark.zip +0 -0
- package/docs/public/downloads/developer-workflow.zip +0 -0
- package/docs/public/downloads/drop.zip +0 -0
- package/docs/public/downloads/errors.zip +0 -0
- package/docs/public/downloads/ffi.zip +0 -0
- package/docs/public/downloads/generic-di.zip +0 -0
- package/docs/public/downloads/generics.zip +0 -0
- package/docs/public/downloads/hello.zip +0 -0
- package/docs/public/downloads/http-benchmark.zip +0 -0
- package/docs/public/downloads/interceptors.zip +0 -0
- package/docs/public/downloads/json-benchmark.zip +0 -0
- package/docs/public/downloads/new-syntax.zip +0 -0
- package/docs/public/downloads/oidc-login.zip +0 -0
- package/docs/public/downloads/ownership-transfer.zip +0 -0
- package/docs/public/downloads/ownership.zip +0 -0
- package/docs/public/downloads/packages-app.zip +0 -0
- package/docs/public/downloads/packages-math.zip +0 -0
- package/docs/public/downloads/startup-benchmark.zip +0 -0
- package/docs/public/downloads/visibility.zip +0 -0
- package/docs/public/downloads/weather-api.zip +0 -0
- package/docs/reference.md +23 -17
- package/docs/releasing.md +29 -15
- package/docs/research/code-to-natural-language.md +108 -0
- package/docs/research/ecosystem-workflow.md +41 -0
- package/docs/research/wiki-editorial-design.md +71 -0
- package/docs/roadmap.md +1 -1
- package/docs/specifications.md +27 -11
- package/docs/testing.md +19 -5
- package/docs/tooling.md +25 -12
- package/docs/weather-api.md +65 -0
- package/docs/web.md +50 -18
- package/docs/writing-docs.md +49 -0
- package/examples/{hello/.aug-spec/august/0.19.0 → approved-design/.aug-spec/august/0.20.1}/io/contracts.aug +4 -3
- package/examples/approved-design/.aug-spec/august/0.20.1/io/contracts.aug.md +82 -0
- package/examples/approved-design/.aug-spec/manifest.json +3 -3
- package/examples/approved-design/counters.aug +5 -4
- package/examples/approved-design/counters.aug.md +25 -132
- package/examples/approved-design/domain/app.aug +2 -1
- package/examples/approved-design/domain/app.aug.md +10 -80
- package/examples/approved-design/domain/export.aug +1 -0
- package/examples/approved-design/domain/export.aug.md +4 -20
- package/examples/approved-design/domain/models.aug +1 -0
- package/examples/approved-design/domain/models.aug.md +3 -25
- package/examples/approved-design/domain/numbers.aug +3 -2
- package/examples/approved-design/domain/numbers.aug.md +19 -116
- package/examples/approved-design/main.aug +1 -0
- package/examples/approved-design/main.aug.md +12 -95
- package/examples/benchmark/.aug-spec/manifest.json +1 -1
- package/examples/benchmark/main.aug +1 -0
- package/examples/benchmark/main.aug.md +6 -36
- package/examples/cli-args/.aug-spec/manifest.json +1 -1
- package/examples/cli-args/main.aug +1 -0
- package/examples/cli-args/main.aug.md +5 -32
- package/examples/collections/.aug-spec/manifest.json +1 -1
- package/examples/collections/main.aug +1 -0
- package/examples/collections/main.aug.md +6 -36
- package/examples/{generic-di/.aug-spec/august/0.19.0 → developer-workflow/.aug-spec/august/0.20.1}/io/contracts.aug +4 -3
- package/examples/developer-workflow/.aug-spec/august/0.20.1/io/contracts.aug.md +82 -0
- package/examples/developer-workflow/.aug-spec/manifest.json +3 -3
- package/examples/developer-workflow/calculator.aug +3 -2
- package/examples/developer-workflow/calculator.aug.md +28 -189
- package/examples/developer-workflow/logging/console.aug +2 -1
- package/examples/developer-workflow/logging/console.aug.md +7 -57
- package/examples/developer-workflow/logging/export.aug +1 -0
- package/examples/developer-workflow/logging/export.aug.md +3 -15
- package/examples/developer-workflow/logging/logger.aug +1 -0
- package/examples/developer-workflow/logging/logger.aug.md +6 -46
- package/examples/developer-workflow/main.aug +1 -0
- package/examples/developer-workflow/main.aug.md +10 -68
- package/examples/drop/.aug-spec/manifest.json +1 -1
- package/examples/drop/main.aug +1 -0
- package/examples/drop/main.aug.md +6 -28
- package/examples/drop/resource.aug +1 -0
- package/examples/drop/resource.aug.md +6 -34
- package/examples/errors/.aug-spec/manifest.json +1 -1
- package/examples/errors/errors.aug +2 -1
- package/examples/errors/errors.aug.md +4 -27
- package/examples/errors/main.aug +1 -0
- package/examples/errors/main.aug.md +6 -29
- package/examples/ffi/.aug-spec/manifest.json +1 -1
- package/examples/ffi/main.aug +1 -0
- package/examples/ffi/main.aug.md +5 -21
- package/examples/ffi/native.aug +2 -1
- package/examples/ffi/native.aug.md +5 -35
- package/examples/{approved-design/.aug-spec/august/0.19.0 → generic-di/.aug-spec/august/0.20.1}/io/contracts.aug +4 -3
- package/examples/generic-di/.aug-spec/august/0.20.1/io/contracts.aug.md +82 -0
- package/examples/generic-di/.aug-spec/manifest.json +3 -3
- package/examples/generic-di/main.aug +1 -0
- package/examples/generic-di/main.aug.md +8 -40
- package/examples/generic-di/types.aug +3 -2
- package/examples/generic-di/types.aug.md +18 -97
- package/examples/generics/.aug-spec/manifest.json +1 -1
- package/examples/generics/main.aug +1 -0
- package/examples/generics/main.aug.md +9 -48
- package/examples/generics/types.aug +4 -3
- package/examples/generics/types.aug.md +18 -104
- package/examples/{developer-workflow/.aug-spec/august/0.19.0 → hello/.aug-spec/august/0.20.1}/io/contracts.aug +4 -3
- package/examples/hello/.aug-spec/august/0.20.1/io/contracts.aug.md +82 -0
- package/examples/hello/.aug-spec/manifest.json +3 -3
- package/examples/hello/app/export.aug +1 -0
- package/examples/hello/app/export.aug.md +3 -13
- package/examples/hello/app/greeter.aug +2 -1
- package/examples/hello/app/greeter.aug.md +10 -94
- package/examples/hello/logging/console.aug +2 -1
- package/examples/hello/logging/console.aug.md +7 -55
- package/examples/hello/logging/export.aug +1 -0
- package/examples/hello/logging/export.aug.md +3 -15
- package/examples/hello/logging/logger.aug +1 -0
- package/examples/hello/logging/logger.aug.md +6 -48
- package/examples/hello/main.aug +1 -0
- package/examples/hello/main.aug.md +8 -40
- package/examples/interceptors/.aug-spec/august/0.20.1/io/contracts.aug +37 -0
- package/examples/interceptors/.aug-spec/august/0.20.1/io/contracts.aug.md +82 -0
- package/examples/interceptors/.aug-spec/manifest.json +3 -3
- package/examples/interceptors/app.aug +3 -2
- package/examples/interceptors/app.aug.md +15 -141
- package/examples/interceptors/interceptors.aug +3 -2
- package/examples/interceptors/interceptors.aug.md +19 -152
- package/examples/interceptors/logging.aug +2 -1
- package/examples/interceptors/logging.aug.md +10 -79
- package/examples/interceptors/main.aug +1 -0
- package/examples/interceptors/main.aug.md +9 -66
- package/examples/new-syntax/.aug-spec/august/0.20.1/io/contracts.aug +37 -0
- package/examples/new-syntax/.aug-spec/august/0.20.1/io/contracts.aug.md +82 -0
- package/examples/new-syntax/.aug-spec/manifest.json +3 -3
- package/examples/new-syntax/console.aug +2 -1
- package/examples/new-syntax/console.aug.md +7 -53
- package/examples/new-syntax/greeter.aug +2 -1
- package/examples/new-syntax/greeter.aug.md +10 -74
- package/examples/new-syntax/logger.aug +1 -0
- package/examples/new-syntax/logger.aug.md +6 -46
- package/examples/new-syntax/main.aug +1 -0
- package/examples/new-syntax/main.aug.md +9 -54
- package/examples/new-syntax/math.aug +2 -1
- package/examples/new-syntax/math.aug.md +3 -24
- package/examples/oidc-login/.aug-spec/manifest.json +13 -13
- package/examples/oidc-login/.aug-spec/packages/@git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/store.aug.md +71 -0
- package/examples/oidc-login/.aug-spec/packages/@git/url_2d3c37c690c0fa115be1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md +17 -0
- package/examples/oidc-login/.aug-spec/packages/@git/url_897efafd565158fc4908/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md +125 -0
- package/examples/oidc-login/.aug-spec/{august/0.19.0/crypto → packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40}/contracts.aug +12 -11
- package/examples/oidc-login/.aug-spec/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/contracts.aug.md +244 -0
- package/examples/oidc-login/.aug-spec/{august/0.19.0/crypto → packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40}/jose.aug +6 -5
- package/examples/oidc-login/.aug-spec/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/jose.aug.md +71 -0
- package/examples/oidc-login/.aug-spec/packages/@git/url_c092cd151499c4e1d8a1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md +30 -0
- package/examples/oidc-login/aug.lock.json +100 -0
- package/examples/oidc-login/client/contracts.aug +1 -0
- package/examples/oidc-login/client/contracts.aug.md +9 -66
- package/examples/oidc-login/client/endpoints.aug +6 -5
- package/examples/oidc-login/client/endpoints.aug.md +13 -145
- package/examples/oidc-login/client/export.aug +1 -0
- package/examples/oidc-login/client/export.aug.md +4 -24
- package/examples/oidc-login/client/login.aug +7 -6
- package/examples/oidc-login/client/login.aug.md +25 -303
- package/examples/oidc-login/client/logout.aug +5 -4
- package/examples/oidc-login/client/logout.aug.md +13 -135
- package/examples/oidc-login/client/protocol.aug +7 -6
- package/examples/oidc-login/client/protocol.aug.md +36 -283
- package/examples/oidc-login/client/session.aug +5 -4
- package/examples/oidc-login/client/session.aug.md +12 -139
- package/examples/oidc-login/client/views.aug +3 -2
- package/examples/oidc-login/client/views.aug.md +8 -57
- package/examples/oidc-login/common/export.aug +1 -0
- package/examples/oidc-login/common/export.aug.md +5 -27
- package/examples/oidc-login/common/headers.aug +4 -3
- package/examples/oidc-login/common/headers.aug.md +9 -67
- package/examples/oidc-login/common/keys.aug +6 -5
- package/examples/oidc-login/common/keys.aug.md +29 -165
- package/examples/oidc-login/common/settings.aug +2 -1
- package/examples/oidc-login/common/settings.aug.md +5 -39
- package/examples/oidc-login/common/views.aug +2 -1
- package/examples/oidc-login/common/views.aug.md +4 -28
- package/examples/oidc-login/main.aug +6 -16
- package/examples/oidc-login/main.aug.md +17 -146
- package/examples/oidc-login/main.yaml +7 -0
- package/examples/oidc-login/provider/authorization.aug +7 -6
- package/examples/oidc-login/provider/authorization.aug.md +23 -238
- package/examples/oidc-login/provider/contracts.aug +1 -0
- package/examples/oidc-login/provider/contracts.aug.md +23 -158
- package/examples/oidc-login/provider/credentials.aug +3 -2
- package/examples/oidc-login/provider/credentials.aug.md +9 -53
- package/examples/oidc-login/provider/discovery.aug +4 -3
- package/examples/oidc-login/provider/discovery.aug.md +11 -118
- package/examples/oidc-login/provider/export.aug +1 -0
- package/examples/oidc-login/provider/export.aug.md +6 -34
- package/examples/oidc-login/provider/token.aug +6 -5
- package/examples/oidc-login/provider/token.aug.md +16 -204
- package/examples/oidc-login/provider/userinfo.aug +4 -3
- package/examples/oidc-login/provider/userinfo.aug.md +10 -92
- package/examples/oidc-login/provider/views.aug +3 -2
- package/examples/oidc-login/provider/views.aug.md +8 -52
- package/examples/ownership/.aug-spec/manifest.json +1 -1
- package/examples/ownership/counter.aug +3 -2
- package/examples/ownership/counter.aug.md +12 -66
- package/examples/ownership/main.aug +1 -0
- package/examples/ownership/main.aug.md +6 -31
- package/examples/ownership-transfer/.aug-spec/august/0.20.1/io/contracts.aug +37 -0
- package/examples/ownership-transfer/.aug-spec/august/0.20.1/io/contracts.aug.md +82 -0
- package/examples/ownership-transfer/.aug-spec/manifest.json +3 -3
- package/examples/ownership-transfer/main.aug +1 -0
- package/examples/ownership-transfer/main.aug.md +9 -53
- package/examples/ownership-transfer/resource.aug +2 -1
- package/examples/ownership-transfer/resource.aug.md +12 -71
- package/examples/packages/app/.aug-spec/manifest.json +1 -1
- package/examples/packages/app/.aug-spec/packages/@example/aug-math/0.1.0/arithmetic.aug +2 -1
- package/examples/packages/app/.aug-spec/packages/@example/aug-math/0.1.0/arithmetic.aug.md +9 -51
- package/examples/packages/app/main.aug +1 -0
- package/examples/packages/app/main.aug.md +6 -26
- package/examples/packages/math/.aug-spec/manifest.json +1 -1
- package/examples/packages/math/aug-package.json +1 -1
- package/examples/packages/math/src/arithmetic.aug +2 -1
- package/examples/packages/math/src/arithmetic.aug.md +9 -51
- package/examples/packages/math/src/export.aug +1 -0
- package/examples/packages/math/src/export.aug.md +3 -13
- package/examples/visibility/.aug-spec/manifest.json +1 -1
- package/examples/visibility/counter.aug +4 -3
- package/examples/visibility/counter.aug.md +12 -68
- package/examples/visibility/main.aug +1 -0
- package/examples/visibility/main.aug.md +6 -32
- package/examples/weather-api/.aug-spec/manifest.json +8 -0
- package/examples/weather-api/AGENTS.md +17 -0
- package/examples/weather-api/README.md +19 -0
- package/examples/weather-api/forecasts.aug +47 -0
- package/examples/weather-api/forecasts.aug.md +32 -0
- package/examples/weather-api/main.aug +4 -0
- package/examples/weather-api/main.aug.md +15 -0
- package/examples/weather-api/main.yaml +5 -0
- package/examples/weather-api/weather.http +5 -0
- package/package.json +3 -4
- package/scripts/bootstrap-native.mjs +181 -106
- package/scripts/native-setup.mjs +98 -0
- package/scripts/native-toolchain.mjs +28 -0
- package/src/builtins.js +1 -1
- package/src/checker.js +259 -72
- package/src/cli.js +114 -20
- package/src/codegen.js +1 -1
- package/src/config.js +1 -1
- package/src/contracts.js +10 -0
- package/src/editor.js +71 -16
- package/src/fixes.js +90 -2
- package/src/formatter.js +19 -8
- package/src/git-packages.js +110 -0
- package/src/help.js +24 -23
- package/src/http-contracts.js +14 -0
- package/src/http-policies.js +5 -5
- package/src/libraries.js +1 -1
- package/src/lsp.js +14 -5
- package/src/native.js +19 -13
- package/src/navigation.js +4 -2
- package/src/openapi.js +5 -4
- package/src/package-locking.js +45 -0
- package/src/package-manager.js +251 -67
- package/src/parser.js +13 -5
- package/src/policies.js +3 -3
- package/src/project-init.js +78 -4
- package/src/project.js +9 -7
- package/src/semantic.js +46 -2
- package/src/snippets.js +59 -0
- package/src/spec-hints.js +56 -0
- package/src/spec-tree.js +241 -0
- package/src/spec.js +626 -303
- package/docs/examples/approved-design/dependencies/august/0.19.0/io/contracts.md +0 -395
- package/docs/examples/developer-workflow/dependencies/august/0.19.0/io/contracts.md +0 -395
- package/docs/examples/generic-di/dependencies/august/0.19.0/io/contracts.md +0 -395
- package/docs/examples/hello/dependencies/august/0.19.0/io/contracts.md +0 -395
- package/docs/examples/interceptors/dependencies/august/0.19.0/io/contracts.md +0 -395
- package/docs/examples/json-benchmark/dependencies/august/0.19.0/json/contracts.md +0 -103
- package/docs/examples/new-syntax/dependencies/august/0.19.0/io/contracts.md +0 -395
- package/docs/examples/oidc-login/dependencies/august/0.19.0/crypto/contracts.md +0 -925
- package/docs/examples/oidc-login/dependencies/august/0.19.0/crypto/jose.md +0 -434
- package/docs/examples/oidc-login/dependencies/august/0.19.0/json/contracts.md +0 -103
- package/docs/examples/oidc-login/dependencies/august/0.19.0/memory/store.md +0 -374
- package/docs/examples/oidc-login/dependencies/august/0.19.0/time/contracts.md +0 -150
- package/docs/examples/oidc-login/dependencies/august/0.19.0/web/contracts.md +0 -532
- package/docs/examples/ownership-transfer/dependencies/august/0.19.0/io/contracts.md +0 -395
- package/examples/approved-design/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
- package/examples/developer-workflow/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
- package/examples/generic-di/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
- package/examples/hello/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
- package/examples/interceptors/.aug-spec/august/0.19.0/io/contracts.aug +0 -36
- package/examples/interceptors/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
- package/examples/new-syntax/.aug-spec/august/0.19.0/io/contracts.aug +0 -36
- package/examples/new-syntax/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
- package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/contracts.aug.md +0 -791
- package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/jose.aug.md +0 -266
- package/examples/oidc-login/.aug-spec/august/0.19.0/json/contracts.aug.md +0 -55
- package/examples/oidc-login/.aug-spec/august/0.19.0/memory/store.aug.md +0 -250
- package/examples/oidc-login/.aug-spec/august/0.19.0/time/contracts.aug.md +0 -96
- package/examples/oidc-login/.aug-spec/august/0.19.0/web/contracts.aug.md +0 -420
- package/examples/ownership-transfer/.aug-spec/august/0.19.0/io/contracts.aug +0 -36
- package/examples/ownership-transfer/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
- /package/examples/oidc-login/.aug-spec/{august/0.19.0/memory → packages/@git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301}/store.aug +0 -0
- /package/examples/oidc-login/.aug-spec/{august/0.19.0/json → packages/@git/url_2d3c37c690c0fa115be1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301}/contracts.aug +0 -0
- /package/examples/oidc-login/.aug-spec/{august/0.19.0/web → packages/@git/url_897efafd565158fc4908/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301}/contracts.aug +0 -0
- /package/examples/oidc-login/.aug-spec/{august/0.19.0/time → packages/@git/url_c092cd151499c4e1d8a1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301}/contracts.aug +0 -0
|
@@ -28,6 +28,7 @@ pageClass: aug-example-page
|
|
|
28
28
|
::: code-group
|
|
29
29
|
|
|
30
30
|
```aug [Indentation]
|
|
31
|
+
// aug-spec: "main.aug.md" explains this file. Read it before changes; refresh with aug spec.
|
|
31
32
|
try:
|
|
32
33
|
numbers = List<int>(2, 4)
|
|
33
34
|
borrow numbers:
|
|
@@ -45,6 +46,7 @@ catch IndexError error:
|
|
|
45
46
|
```
|
|
46
47
|
|
|
47
48
|
```aug [Braces]
|
|
49
|
+
// aug-spec: "main.aug.md" explains this file. Read it before changes; refresh with aug spec.
|
|
48
50
|
try {
|
|
49
51
|
numbers = List<int>(2, 4)
|
|
50
52
|
borrow numbers {
|
|
@@ -73,45 +75,15 @@ catch IndexError error {
|
|
|
73
75
|
|
|
74
76
|
## Compiled specification {#specification}
|
|
75
77
|
|
|
76
|
-
|
|
78
|
+
### Startup
|
|
77
79
|
|
|
78
|
-
|
|
80
|
+
It sets `numbers` to a list of `int` containing `2`, `4`. With temporary permission to change `numbers`, it appends `6` to `numbers`. It prints the number of elements in `numbers`. It prints the item at index `1` in `numbers`.
|
|
79
81
|
|
|
80
|
-
|
|
82
|
+
It sets `scores` to an empty map from `string` to `int`. With temporary permission to change `scores`, it stores `42` in `scores` under `"ada"`. It prints whether `scores` contains the key `"ada"`. It prints the value under `"ada"` in `scores`.
|
|
81
83
|
|
|
82
|
-
|
|
84
|
+
It prints the number of elements in `scores`. If this work raises `IndexError`, it prints `"unexpected index failure"`.
|
|
83
85
|
|
|
84
|
-
-
|
|
85
|
-
- Set `numbers` to a list of `int` containing `2`, `4`.
|
|
86
|
-
- Grant exclusive mutable access to `numbers` for this block, then end the borrow:
|
|
87
|
-
- Call `append` on `numbers` with `value` = `6`.
|
|
88
|
-
- Call `print` with `value` = call `length` on `numbers`.
|
|
89
|
-
- Call `print` with `value` = call `get` on `numbers` with `index` = `1`.
|
|
90
|
-
- Set `scores` to an empty map from `string` to `int`.
|
|
91
|
-
- Grant exclusive mutable access to `scores` for this block, then end the borrow:
|
|
92
|
-
- Call `set` on `scores` with `value` = `42`; `key` = `"ada"`.
|
|
93
|
-
- Call `print` with `value` = call `contains` on `scores` with `key` = `"ada"`.
|
|
94
|
-
- Call `print` with `value` = call `get` on `scores` with `key` = `"ada"`.
|
|
95
|
-
- Call `print` with `value` = call `length` on `scores`.
|
|
96
|
-
- If they fail with `IndexError`, name the failure `error` and recover:
|
|
97
|
-
- Call `print` with `value` = `"unexpected index failure"`.
|
|
98
|
-
|
|
99
|
-
### Built-in operations used by this file
|
|
100
|
-
|
|
101
|
-
- `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.
|
|
102
|
-
- `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`.
|
|
103
|
-
- `List<int>.length` (no inputs) → `int`: Read the number of elements.
|
|
104
|
-
- `Map<string, int>.contains` (`key`: `string`) → `bool`: Check for a key, including entries whose value is null.
|
|
105
|
-
- `Map<string, int>.get` (`key`: `string`) → `optional int`: Read a value by key; an absent key returns null. contains distinguishes an absent key from a stored null.
|
|
106
|
-
- `Map<string, int>.length` (no inputs) → `int`: Read the number of elements.
|
|
107
|
-
- `Map<string, int>.set` (`key`: `string`, `value`: `int`) → `void`: Insert or replace an entry with exclusive mutable access. Changes the receiver.
|
|
108
|
-
- `print` (`value`: `any`) → `void`: Composition and test output. Other callables receive Console and declare uses console.write.
|
|
109
|
-
|
|
110
|
-
[Full built-in reference](https://greenpandastudios.github.io/augscript/language-constructs).
|
|
111
|
-
|
|
112
|
-
### Shared language rules
|
|
113
|
-
|
|
114
|
-
See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
|
|
86
|
+
Built-in operations follow the [language reference](https://greenpandastudios.github.io/augscript/language-constructs).
|
|
115
87
|
|
|
116
88
|
::::
|
|
117
89
|
|
|
@@ -12,7 +12,7 @@ outline: [2, 3]
|
|
|
12
12
|
|
|
13
13
|
Insert, find, and iterate over 20,000 collection entries.
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
Open a file to read its source beside the explanation produced by `aug spec`. **Indentation** and **Braces** display the same checked program; your choice carries across file pages.
|
|
16
16
|
|
|
17
17
|
## Project files
|
|
18
18
|
|
|
@@ -21,12 +21,13 @@ Read a file below to see its highlighted source and the Markdown produced by `au
|
|
|
21
21
|
|
|
22
22
|
## Try this project
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
[Download this project](/downloads/collections-benchmark.zip), then extract the archive in an empty working folder. It contains the checked source, configuration, and generated specs. [Install August](../../getting-started.md) once, then run these commands. Native libraries are prepared automatically when needed:
|
|
25
25
|
|
|
26
26
|
```sh
|
|
27
|
-
|
|
28
|
-
aug
|
|
29
|
-
aug
|
|
27
|
+
cd collections-benchmark
|
|
28
|
+
aug check .
|
|
29
|
+
aug spec .
|
|
30
|
+
aug run .
|
|
30
31
|
```
|
|
31
32
|
|
|
32
33
|
See [the performance page](../../performance.md) for measurements, input sizes, and reproduction steps.
|
|
@@ -28,6 +28,7 @@ pageClass: aug-example-page
|
|
|
28
28
|
::: code-group
|
|
29
29
|
|
|
30
30
|
```aug [Indentation]
|
|
31
|
+
// aug-spec: "main.aug.md" explains this file. Read it before changes; refresh with aug spec.
|
|
31
32
|
own Map<int,int> values = {}
|
|
32
33
|
own Set<int> unique = {}
|
|
33
34
|
int index = 0
|
|
@@ -44,6 +45,7 @@ print(value=values.length() == unique.length())
|
|
|
44
45
|
```
|
|
45
46
|
|
|
46
47
|
```aug [Braces]
|
|
48
|
+
// aug-spec: "main.aug.md" explains this file. Read it before changes; refresh with aug spec.
|
|
47
49
|
own Map<int,int> values = {}
|
|
48
50
|
own Set<int> unique = {}
|
|
49
51
|
int index = 0
|
|
@@ -70,45 +72,15 @@ print(value=values.length() == unique.length())
|
|
|
70
72
|
|
|
71
73
|
## Compiled specification {#specification}
|
|
72
74
|
|
|
73
|
-
|
|
75
|
+
### Startup
|
|
74
76
|
|
|
75
|
-
|
|
77
|
+
It sets `values` of type `Map<int,int>` to a context-typed empty collection with no items. `values` of type `Map<int,int>` owns this value. It sets `unique` of type `Set<int>` to a context-typed empty collection with no items. `unique` of type `Set<int>` owns this value.
|
|
76
78
|
|
|
77
|
-
|
|
79
|
+
It sets `index` to `0`. While `index` is less than `20000`, it stores `index` times `3` in `values` under `index`; then it adds `index` to `unique`; then it increases `index` by `1`. After the loop, it sets `checksum` to `0`. For each `key` and `value` in a snapshot of `values`, if whether `unique` contains `key` returns true, it increases `checksum` by `value`.
|
|
78
80
|
|
|
79
|
-
|
|
81
|
+
After the loop, it prints `checksum`. It prints the number of elements in `values` equals the number of elements in `unique`.
|
|
80
82
|
|
|
81
|
-
-
|
|
82
|
-
- This variable owns the value.
|
|
83
|
-
- Set `unique` of type `Set<int>` to a context-typed empty collection with no items.
|
|
84
|
-
- This variable owns the value.
|
|
85
|
-
- Set `index` of type `int` to `0`.
|
|
86
|
-
- While `index` is less than `20000`, repeat:
|
|
87
|
-
- Call `set` on `values` with `key` = `index`; `value` = (`index` times `3`).
|
|
88
|
-
- Call `add` on `unique` with `value` = `index`.
|
|
89
|
-
- Set `index` to `index` plus `1`.
|
|
90
|
-
- Check the condition again before the next iteration.
|
|
91
|
-
- Set `checksum` of type `int` to `0`.
|
|
92
|
-
- For each `key` and `value` in a snapshot of `values`, in iteration order:
|
|
93
|
-
- If call `contains` on `unique` with `value` = `key` is true:
|
|
94
|
-
- Set `checksum` to `checksum` plus `value`.
|
|
95
|
-
- Call `print` with `value` = `checksum`.
|
|
96
|
-
- Call `print` with `value` = (call `length` on `values` equals call `length` on `unique`).
|
|
97
|
-
|
|
98
|
-
### Built-in operations used by this file
|
|
99
|
-
|
|
100
|
-
- `Map<int, int>.length` (no inputs) → `int`: Read the number of elements.
|
|
101
|
-
- `Map<int, int>.set` (`key`: `int`, `value`: `int`) → `void`: Insert or replace an entry with exclusive mutable access. Changes the receiver.
|
|
102
|
-
- `Set<int>.add` (`value`: `int`) → `void`: Insert a unique element with exclusive mutable access. Changes the receiver.
|
|
103
|
-
- `Set<int>.contains` (`value`: `int`) → `bool`: Test structural or identity equality with a stored element.
|
|
104
|
-
- `Set<int>.length` (no inputs) → `int`: Read the number of elements.
|
|
105
|
-
- `print` (`value`: `any`) → `void`: Composition and test output. Other callables receive Console and declare uses console.write.
|
|
106
|
-
|
|
107
|
-
[Full built-in reference](https://greenpandastudios.github.io/augscript/language-constructs).
|
|
108
|
-
|
|
109
|
-
### Shared language rules
|
|
110
|
-
|
|
111
|
-
See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
|
|
83
|
+
Built-in operations follow the [language reference](https://greenpandastudios.github.io/augscript/language-constructs).
|
|
112
84
|
|
|
113
85
|
::::
|
|
114
86
|
|
|
@@ -12,7 +12,7 @@ outline: [2, 3]
|
|
|
12
12
|
|
|
13
13
|
Two million dependent integer steps with a checked result.
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
Open a file to read its source beside the explanation produced by `aug spec`. **Indentation** and **Braces** display the same checked program; your choice carries across file pages.
|
|
16
16
|
|
|
17
17
|
## Project files
|
|
18
18
|
|
|
@@ -21,12 +21,13 @@ Read a file below to see its highlighted source and the Markdown produced by `au
|
|
|
21
21
|
|
|
22
22
|
## Try this project
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
[Download this project](/downloads/cpu-benchmark.zip), then extract the archive in an empty working folder. It contains the checked source, configuration, and generated specs. [Install August](../../getting-started.md) once, then run these commands. Native libraries are prepared automatically when needed:
|
|
25
25
|
|
|
26
26
|
```sh
|
|
27
|
-
|
|
28
|
-
aug
|
|
29
|
-
aug
|
|
27
|
+
cd cpu-benchmark
|
|
28
|
+
aug check .
|
|
29
|
+
aug spec .
|
|
30
|
+
aug run .
|
|
30
31
|
```
|
|
31
32
|
|
|
32
33
|
See [the performance page](../../performance.md) for measurements, input sizes, and reproduction steps.
|
|
@@ -28,6 +28,7 @@ pageClass: aug-example-page
|
|
|
28
28
|
::: code-group
|
|
29
29
|
|
|
30
30
|
```aug [Indentation]
|
|
31
|
+
// aug-spec: "main.aug.md" explains this file. Read it before changes; refresh with aug spec.
|
|
31
32
|
// A loop-carried dependency prevents removal of the computation.
|
|
32
33
|
int state = 123
|
|
33
34
|
int index = 0
|
|
@@ -39,6 +40,7 @@ print(value=state)
|
|
|
39
40
|
```
|
|
40
41
|
|
|
41
42
|
```aug [Braces]
|
|
43
|
+
// aug-spec: "main.aug.md" explains this file. Read it before changes; refresh with aug spec.
|
|
42
44
|
// A loop-carried dependency prevents removal of the computation.
|
|
43
45
|
int state = 123
|
|
44
46
|
int index = 0
|
|
@@ -58,32 +60,11 @@ print(value=state)
|
|
|
58
60
|
|
|
59
61
|
## Compiled specification {#specification}
|
|
60
62
|
|
|
61
|
-
|
|
63
|
+
### Startup
|
|
62
64
|
|
|
63
|
-
|
|
65
|
+
It sets `state` to `123`. It sets `index` to `0`. While `index` is less than `2000000`, it sets `product` to `state` times `48271`; then it sets `state` to `product` minus ((`product` divided by `2147483647`) times `2147483647`); then it increases `index` by `1`. After the loop, it prints `state`.
|
|
64
66
|
|
|
65
|
-
-
|
|
66
|
-
|
|
67
|
-
### Startup, in source order
|
|
68
|
-
|
|
69
|
-
- Set `state` of type `int` to `123`.
|
|
70
|
-
- Set `index` of type `int` to `0`.
|
|
71
|
-
- While `index` is less than `2000000`, repeat:
|
|
72
|
-
- Set `product` of type `int` to `state` times `48271`.
|
|
73
|
-
- Set `state` to `product` minus ((`product` divided by `2147483647`) times `2147483647`).
|
|
74
|
-
- Set `index` to `index` plus `1`.
|
|
75
|
-
- Check the condition again before the next iteration.
|
|
76
|
-
- Call `print` with `value` = `state`.
|
|
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.
|
|
67
|
+
Built-in operations follow the [language reference](https://greenpandastudios.github.io/augscript/language-constructs).
|
|
87
68
|
|
|
88
69
|
::::
|
|
89
70
|
|
|
@@ -32,6 +32,7 @@ pageClass: aug-example-page
|
|
|
32
32
|
::: code-group
|
|
33
33
|
|
|
34
34
|
```aug [Indentation]
|
|
35
|
+
// aug-spec: "calculator.aug.md" explains this file. Read it before changes; refresh with aug spec.
|
|
35
36
|
import Console and SystemConsole from august.io
|
|
36
37
|
import Logger from logging
|
|
37
38
|
/** Adds two integers. */
|
|
@@ -45,7 +46,7 @@ Calculator(resolve Logger logger to _logger) implements Arithmetic:
|
|
|
45
46
|
* @param right Second integer.
|
|
46
47
|
* @return Sum of the two integers.
|
|
47
48
|
*/
|
|
48
|
-
add(resolve Console console, int left, int right)
|
|
49
|
+
add(resolve Console console, int left, int right):
|
|
49
50
|
_logger.log(message="adding integers")
|
|
50
51
|
return left + right
|
|
51
52
|
/**
|
|
@@ -53,7 +54,7 @@ Calculator(resolve Logger logger to _logger) implements Arithmetic:
|
|
|
53
54
|
* @param fail Whether to simulate a failed load.
|
|
54
55
|
* @throws FileError When fail is true.
|
|
55
56
|
*/
|
|
56
|
-
load(bool fail)
|
|
57
|
+
load(bool fail):
|
|
57
58
|
if fail:
|
|
58
59
|
throw FileError()
|
|
59
60
|
return "loaded"
|
|
@@ -74,10 +75,13 @@ test Calculator calculator:
|
|
|
74
75
|
assert(values.length() == 3)
|
|
75
76
|
it "starts with fresh setup":
|
|
76
77
|
assert(values.length() == 2)
|
|
77
|
-
assert(
|
|
78
|
+
assert(
|
|
79
|
+
calculator.add(left=values.get(index=0), right=values.get(index=1)) == 3
|
|
80
|
+
)
|
|
78
81
|
```
|
|
79
82
|
|
|
80
83
|
```aug [Braces]
|
|
84
|
+
// aug-spec: "calculator.aug.md" explains this file. Read it before changes; refresh with aug spec.
|
|
81
85
|
import Console and SystemConsole from august.io
|
|
82
86
|
import Logger from logging
|
|
83
87
|
/** Adds two integers. */
|
|
@@ -92,7 +96,7 @@ Calculator(resolve Logger logger to _logger) implements Arithmetic {
|
|
|
92
96
|
* @param right Second integer.
|
|
93
97
|
* @return Sum of the two integers.
|
|
94
98
|
*/
|
|
95
|
-
add(resolve Console console, int left, int right)
|
|
99
|
+
add(resolve Console console, int left, int right) {
|
|
96
100
|
_logger.log(message="adding integers")
|
|
97
101
|
return left + right
|
|
98
102
|
}
|
|
@@ -102,7 +106,7 @@ Calculator(resolve Logger logger to _logger) implements Arithmetic {
|
|
|
102
106
|
* @param fail Whether to simulate a failed load.
|
|
103
107
|
* @throws FileError When fail is true.
|
|
104
108
|
*/
|
|
105
|
-
load(bool fail)
|
|
109
|
+
load(bool fail) {
|
|
106
110
|
if fail {
|
|
107
111
|
throw FileError()
|
|
108
112
|
}
|
|
@@ -129,7 +133,9 @@ test Calculator calculator {
|
|
|
129
133
|
}
|
|
130
134
|
it "starts with fresh setup" {
|
|
131
135
|
assert(values.length() == 2)
|
|
132
|
-
assert(
|
|
136
|
+
assert(
|
|
137
|
+
calculator.add(left=values.get(index=0), right=values.get(index=1)) == 3
|
|
138
|
+
)
|
|
133
139
|
}
|
|
134
140
|
}
|
|
135
141
|
}
|
|
@@ -143,214 +149,61 @@ test Calculator calculator {
|
|
|
143
149
|
|
|
144
150
|
## Compiled specification {#specification}
|
|
145
151
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
### In this file
|
|
149
|
-
|
|
150
|
-
- [`Arithmetic`](calculator.md#symbol-Arithmetic) is an interface.
|
|
151
|
-
- [`Calculator`](calculator.md#symbol-Calculator) is a class implementing `Arithmetic`.
|
|
152
|
-
- [`load`](calculator.md#symbol-load) is a function returning `string`.
|
|
153
|
-
- [`_SilentLogger`](calculator.md#symbol-_SilentLogger) is a class implementing `Logger`.
|
|
154
|
-
- [`test Calculator calculator`](calculator.md#symbol-test-20-Calculator-20-calculator) is a same-file test suite.
|
|
155
|
-
|
|
156
|
-
### `Arithmetic` {#symbol-Arithmetic}
|
|
157
|
-
|
|
158
|
-
[source](calculator.md#code)
|
|
159
|
-
|
|
160
|
-
Interface.
|
|
161
|
-
|
|
162
|
-
**Author documentation**
|
|
152
|
+
### `Arithmetic` · interface · [source](calculator.md#code) {#symbol-Arithmetic}
|
|
163
153
|
|
|
164
154
|
Adds two integers.
|
|
165
155
|
|
|
166
|
-
#### `Arithmetic.add` {#symbol-Arithmetic.add}
|
|
167
|
-
|
|
168
|
-
[source](calculator.md#code)
|
|
169
|
-
|
|
170
|
-
**Inputs**
|
|
171
|
-
|
|
172
|
-
- `console` ([`Console`](dependencies/august/0.19.0/io/contracts.md#symbol-Console)) — injected; callers omit it.
|
|
173
|
-
- `left` (`int`) — required labeled input.
|
|
174
|
-
- `right` (`int`) — required labeled input.
|
|
175
|
-
|
|
176
|
-
Returns: `int`.
|
|
177
|
-
|
|
178
|
-
Capabilities: [`Console.write`](dependencies/august/0.19.0/io/contracts.md#symbol-Console.write).
|
|
179
|
-
|
|
180
|
-
Interface contract. A selected implementation supplies the behavior.
|
|
181
|
-
|
|
182
|
-
### `Calculator` {#symbol-Calculator}
|
|
183
|
-
|
|
184
|
-
[source](calculator.md#code)
|
|
185
|
-
|
|
186
|
-
Behavioral class.
|
|
187
|
-
|
|
188
|
-
Satisfies [`Arithmetic`](calculator.md#symbol-Arithmetic).
|
|
189
|
-
|
|
190
|
-
**Author documentation**
|
|
191
|
-
|
|
192
|
-
Uses the selected logger to describe each addition.
|
|
193
|
-
|
|
194
|
-
**Inputs**
|
|
195
|
-
|
|
196
|
-
- `logger` ([`Logger`](logging/logger.md#symbol-Logger)) — injected; callers omit it — stored as `_logger` (private) and read-only after initialization.
|
|
197
|
-
|
|
198
|
-
#### `Calculator.add` {#symbol-Calculator.add}
|
|
199
|
-
|
|
200
|
-
[source](calculator.md#code)
|
|
201
|
-
|
|
202
|
-
**Inputs**
|
|
203
|
-
|
|
204
|
-
- `console` ([`Console`](dependencies/august/0.19.0/io/contracts.md#symbol-Console)) — injected; callers omit it.
|
|
205
|
-
- `left` (`int`) — required labeled input.
|
|
206
|
-
- `right` (`int`) — required labeled input.
|
|
207
|
-
|
|
208
|
-
Returns: `int`.
|
|
209
|
-
|
|
210
|
-
Capabilities: [`Console.write`](dependencies/august/0.19.0/io/contracts.md#symbol-Console.write).
|
|
211
|
-
|
|
212
|
-
**What it does**
|
|
213
|
-
|
|
214
|
-
- Call [`Logger.log`](logging/logger.md#symbol-Logger.log) on `_logger` with `message` = `"adding integers"`; inject `console` from `console`.
|
|
215
|
-
- Return `left` plus `right`.
|
|
216
|
-
|
|
217
|
-
**Author documentation**
|
|
218
|
-
|
|
219
|
-
Adds left and right, logging the operation.
|
|
220
|
-
|
|
221
|
-
**Returns** Sum of the two integers.
|
|
222
|
-
|
|
223
|
-
**Parameters**
|
|
224
|
-
- `left`: First integer.
|
|
225
|
-
- `right`: Second integer.
|
|
226
|
-
|
|
227
|
-
### `load` {#symbol-load}
|
|
228
|
-
|
|
229
|
-
[source](calculator.md#code)
|
|
230
|
-
|
|
231
|
-
**Inputs**
|
|
232
|
-
|
|
233
|
-
- `fail` (`bool`) — required labeled input.
|
|
234
|
-
|
|
235
|
-
Returns: `string`.
|
|
236
|
-
|
|
237
|
-
Can fail with `FileError`. Callers must catch or propagate these errors.
|
|
238
|
-
|
|
239
|
-
**What it does**
|
|
240
|
-
|
|
241
|
-
- If `fail` is true:
|
|
242
|
-
- Fail with call `FileError`. Transfer control to a matching catch or propagate the failure.
|
|
243
|
-
- Return `"loaded"`.
|
|
244
|
-
|
|
245
|
-
**Author documentation**
|
|
246
|
-
|
|
247
|
-
Demonstrates a checked failure instead of a successful result.
|
|
248
|
-
|
|
249
|
-
**Parameters**
|
|
250
|
-
- `fail`: Whether to simulate a failed load.
|
|
251
|
-
|
|
252
|
-
**Throws**
|
|
253
|
-
- `FileError`: When fail is true.
|
|
254
|
-
|
|
255
|
-
### `_SilentLogger` {#symbol-_SilentLogger}
|
|
256
|
-
|
|
257
|
-
[source](calculator.md#code)
|
|
258
|
-
|
|
259
|
-
Behavioral class, private to this file.
|
|
260
|
-
|
|
261
|
-
Satisfies [`Logger`](logging/logger.md#symbol-Logger).
|
|
262
|
-
|
|
263
|
-
**Author documentation**
|
|
264
|
-
|
|
265
|
-
Test adapter: keeps calculator tests independent of console output.
|
|
266
|
-
|
|
267
|
-
#### `_SilentLogger.log` {#symbol-_SilentLogger.log}
|
|
268
|
-
|
|
269
|
-
[source](calculator.md#code)
|
|
270
|
-
|
|
271
|
-
**Inputs**
|
|
272
|
-
|
|
273
|
-
- `console` ([`Console`](dependencies/august/0.19.0/io/contracts.md#symbol-Console)) — injected; callers omit it.
|
|
274
|
-
- `message` (`string`) — required labeled input.
|
|
275
|
-
|
|
276
|
-
Returns: no value.
|
|
277
|
-
|
|
278
|
-
Capabilities: [`Console.write`](dependencies/august/0.19.0/io/contracts.md#symbol-Console.write).
|
|
279
|
-
|
|
280
|
-
**What it does**
|
|
281
|
-
|
|
282
|
-
- Continue without another operation.
|
|
283
|
-
|
|
284
|
-
**Author documentation**
|
|
285
|
-
|
|
286
|
-
**Parameters**
|
|
287
|
-
- `message`: Text to write.
|
|
288
|
-
|
|
289
|
-
### `test Calculator calculator` {#symbol-test-20-Calculator-20-calculator}
|
|
290
|
-
|
|
291
|
-
[source](calculator.md#code)
|
|
292
|
-
|
|
293
|
-
Same-file class tests for [`Calculator`](calculator.md#symbol-Calculator). Each case gets isolated setup and dependency bindings.
|
|
156
|
+
#### `Arithmetic.add` · [source](calculator.md#code) {#symbol-Arithmetic.add}
|
|
294
157
|
|
|
295
|
-
|
|
158
|
+
It takes `left` and `right` as integers. It gets `console` ([`Console`](dependencies/august/0.20.1/io/contracts.md#symbol-Console)) from dependency injection. It returns `int`. It can call [`Console.write`](dependencies/august/0.20.1/io/contracts.md#symbol-Console.write).
|
|
296
159
|
|
|
297
|
-
|
|
160
|
+
### `Calculator` · class · [source](calculator.md#code) {#symbol-Calculator}
|
|
298
161
|
|
|
299
|
-
|
|
300
|
-
- Provide [`_SilentLogger`](calculator.md#symbol-_SilentLogger) when `Logger` is requested. Use a fresh instance when this provider retains state; otherwise reuse one instance.
|
|
301
|
-
- Set `calculator` to call [`Calculator`](calculator.md#symbol-Calculator); inject `_logger` from `Logger`.
|
|
302
|
-
- Set `values` of type `List<int>` to a list containing `1`, `2`.
|
|
162
|
+
Uses the selected logger to describe each addition. It implements [`Arithmetic`](calculator.md#symbol-Arithmetic). The `_logger` dependency is injected as [`Logger`](logging/logger.md#symbol-Logger) and stored read-only and privately.
|
|
303
163
|
|
|
304
|
-
|
|
164
|
+
#### `Calculator.add` · [source](calculator.md#code) {#symbol-Calculator.add}
|
|
305
165
|
|
|
306
|
-
[
|
|
166
|
+
Adds left and right, logging the operation. It takes `left` as an integer (First integer) and `right` as an integer (Second integer). It gets `console` ([`Console`](dependencies/august/0.20.1/io/contracts.md#symbol-Console)) from dependency injection. It returns `int` — Sum of the two integers.
|
|
307
167
|
|
|
308
|
-
|
|
309
|
-
- Grant exclusive mutable access to `values` for this block, then end the borrow:
|
|
310
|
-
- Call `append` on `values` with `value` = `3`.
|
|
311
|
-
- Call `assert` with (call `length` on `values` equals `3`).
|
|
168
|
+
It passes `"adding integers"` to [`_logger.log`](logging/logger.md#symbol-Logger.log), using injected `console`. It returns `left` plus `right`.
|
|
312
169
|
|
|
313
|
-
|
|
170
|
+
### `load` · [source](calculator.md#code) {#symbol-load}
|
|
314
171
|
|
|
315
|
-
|
|
172
|
+
Demonstrates a checked failure instead of a successful result. It takes `fail` as a boolean (Whether to simulate a failed load). Failures can raise `FileError` (when fail is true).
|
|
316
173
|
|
|
317
|
-
|
|
318
|
-
- Call `assert` with (call [`Calculator.add`](calculator.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`).
|
|
174
|
+
It checks that `fail` is false. It raises a `FileError` at the first failed check. It returns `"loaded"`.
|
|
319
175
|
|
|
320
|
-
###
|
|
176
|
+
### `_SilentLogger` · class · [source](calculator.md#code) {#symbol-_SilentLogger}
|
|
321
177
|
|
|
322
|
-
|
|
178
|
+
Test adapter: keeps calculator tests independent of console output. It implements [`Logger`](logging/logger.md#symbol-Logger). It is private to this file.
|
|
323
179
|
|
|
324
|
-
####
|
|
180
|
+
#### `_SilentLogger.log` · [source](calculator.md#code) {#symbol-_SilentLogger.log}
|
|
325
181
|
|
|
326
|
-
|
|
182
|
+
It takes `message` as a string (Text to write). It gets `console` ([`Console`](dependencies/august/0.20.1/io/contracts.md#symbol-Console)) from dependency injection. It continues without an operation.
|
|
327
183
|
|
|
328
|
-
|
|
184
|
+
### `test Calculator calculator` · [source](calculator.md#code) {#symbol-test-20-Calculator-20-calculator}
|
|
329
185
|
|
|
330
|
-
|
|
186
|
+
Tests [`Calculator`](calculator.md#symbol-Calculator). Each case gets fresh setup and dependencies.
|
|
331
187
|
|
|
332
|
-
|
|
188
|
+
#### `addition`
|
|
333
189
|
|
|
334
|
-
|
|
190
|
+
Setup for each case: `Console` is provided by [`SystemConsole`](dependencies/august/0.20.1/io/contracts.md#symbol-SystemConsole). Stateless instances are reused; stateful instances are created for each resolve. `Logger` is provided by [`_SilentLogger`](calculator.md#symbol-_SilentLogger). Stateless instances are reused; stateful instances are created for each resolve.
|
|
335
191
|
|
|
336
|
-
|
|
192
|
+
It sets `calculator` to a [`Calculator`](calculator.md#symbol-Calculator) using injected `Logger` for `_logger`. It sets `values` of type `List<int>` to a list containing `1`, `2`.
|
|
337
193
|
|
|
338
|
-
|
|
194
|
+
##### `adds labeled inputs` · [source](calculator.md#code)
|
|
339
195
|
|
|
340
|
-
|
|
196
|
+
The test requires [`calculator.add`](calculator.md#symbol-Calculator.add) with `right` `2` and `left` `1` using injected `Console` for `console` equals `3`. With temporary permission to change `values`, it appends `3` to `values`. The test requires the number of elements in `values` equals `3`.
|
|
341
197
|
|
|
342
|
-
|
|
198
|
+
##### `starts with fresh setup` · [source](calculator.md#code)
|
|
343
199
|
|
|
344
|
-
|
|
345
|
-
- `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`.
|
|
346
|
-
- `List<int>.length` (no inputs) → `int`: Read the number of elements.
|
|
347
|
-
- `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.
|
|
200
|
+
The test requires the number of elements in `values` equals `2`. The test requires [`calculator.add`](calculator.md#symbol-Calculator.add) with `left` from the item at index `0` in `values` and `right` from the item at index `1` in `values` using injected `Console` for `console` equals `3`.
|
|
348
201
|
|
|
349
|
-
|
|
202
|
+
### Dependencies
|
|
350
203
|
|
|
351
|
-
|
|
204
|
+
It uses [`Console`](dependencies/august/0.20.1/io/contracts.md#symbol-Console) ([`write`](dependencies/august/0.20.1/io/contracts.md#symbol-Console.write)) and [`SystemConsole`](dependencies/august/0.20.1/io/contracts.md#symbol-SystemConsole) from `august.io`. It uses [`Logger`](logging/logger.md#symbol-Logger) ([`log`](logging/logger.md#symbol-Logger.log)) from `logging`.
|
|
352
205
|
|
|
353
|
-
|
|
206
|
+
Built-in operations follow the [language reference](https://greenpandastudios.github.io/augscript/language-constructs).
|
|
354
207
|
|
|
355
208
|
::::
|
|
356
209
|
|