@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
package/docs/examples/index.md
CHANGED
|
@@ -10,51 +10,68 @@ outline: [2, 3]
|
|
|
10
10
|
|
|
11
11
|
# Example projects
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
Read a complete program, follow its dependencies, and compare the source with its compiled explanation. Every file has highlighted **Indentation** and **Braces** views and the actual output of `aug spec`. Dependency links open the exact version used by the project. Each project has a download you can run with the published npm CLI.
|
|
14
14
|
|
|
15
|
-
Start with [Hello world with dependencies](hello/index.md)
|
|
15
|
+
Start with [Hello world with dependencies](hello/index.md) to trace a greeting through two folder boundaries. Then [review a change to the tested calculator](../guides/change-a-module.md). For a larger application, the [OpenID Connect example](oidc-login/index.md) combines pages, provider and client endpoints, and a session JWT. It is a development demonstration with documented limits.
|
|
16
|
+
|
|
17
|
+
If you are learning the language for the first time, use [the book](../learn/index.md). The gallery is for exploring whole projects and looking at the code behind a specific feature or measurement.
|
|
16
18
|
|
|
17
19
|
## Start here
|
|
18
20
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
| Project | What it demonstrates |
|
|
22
|
+
| --- | --- |
|
|
23
|
+
| [Hello world with dependencies](hello/index.md) | The application prints a greeting through an injected logger. Its entry point selects the providers, and each folder exposes a small public surface. |
|
|
24
|
+
| [Labeled calls and injection](new-syntax/index.md) | Constructor injection, named inputs, ordinary functions, and same-file tests. |
|
|
25
|
+
| [A small tested application](developer-workflow/index.md) | A calculator logs each addition. Its nearby tests replace the logger and verify both labeled inputs and fresh setup. |
|
|
26
|
+
| [Command-line arguments](cli-args/index.md) | Read arguments, inspect collections, and return a process exit status. |
|
|
27
|
+
|
|
28
|
+
## Web applications
|
|
29
|
+
|
|
30
|
+
| Project | What it demonstrates |
|
|
31
|
+
| --- | --- |
|
|
32
|
+
| [Weather API](weather-api/index.md) | Serve five simulated forecasts as typed JSON. The record, endpoint, and tests share a file; main.aug starts the listener and main.yaml enables OpenAPI. |
|
|
33
|
+
| [OpenID Connect login application](oidc-login/index.md) | One executable hosts a login page, an OpenID Connect provider and client, session JWTs, and logout. Accounts, keys, and sessions are held in memory for this development demonstration. |
|
|
23
34
|
|
|
24
35
|
## Values and errors
|
|
25
36
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
37
|
+
| Project | What it demonstrates |
|
|
38
|
+
| --- | --- |
|
|
39
|
+
| [Lists, tuples, sets, and maps](collections/index.md) | Create typed collections and update them through checked mutable access. |
|
|
40
|
+
| [Generic contracts](generics/index.md) | Write reusable records, interfaces, classes, and functions with type parameters. |
|
|
41
|
+
| [Generic dependency injection](generic-di/index.md) | Bind a generic interface and resolve a class that uses it. |
|
|
42
|
+
| [Checked failures](errors/index.md) | Declare errors with unless, catch them, and run cleanup. |
|
|
30
43
|
|
|
31
44
|
## State and lifetime
|
|
32
45
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
46
|
+
| Project | What it demonstrates |
|
|
47
|
+
| --- | --- |
|
|
48
|
+
| [Read access and mutable borrows](ownership/index.md) | Share a reference for reading and grant explicit access for mutation. |
|
|
49
|
+
| [Move ownership](ownership-transfer/index.md) | Transfer an owned resource between labeled calls. |
|
|
50
|
+
| [Resource cleanup](drop/index.md) | Release an owned resource when its lifetime ends. |
|
|
51
|
+
| [Private state and helpers](visibility/index.md) | Keep underscore-prefixed implementation details inside their scope. |
|
|
37
52
|
|
|
38
53
|
## Modules and packages
|
|
39
54
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
55
|
+
| Project | What it demonstrates |
|
|
56
|
+
| --- | --- |
|
|
57
|
+
| [Modules and composition](approved-design/index.md) | Startup combines narrow domain exports with a scoped counter provider. Records and validation keep data and checked failures visible. |
|
|
58
|
+
| [Function and constructor middleware](interceptors/index.md) | Layer interceptors, map inputs, and keep logging dependencies explicit. |
|
|
59
|
+
| [Create a package](packages-math/index.md) | Publish a small arithmetic library through export.aug and test its public surface. |
|
|
60
|
+
| [Use a package](packages-app/index.md) | Install the neighboring arithmetic package and import it through a local alias. |
|
|
44
61
|
|
|
45
62
|
## Native applications
|
|
46
63
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
- [OpenID Connect login application](oidc-login/index.md) — A login page, provider, client, session JWT, and logout flow in one August project.
|
|
64
|
+
| Project | What it demonstrates |
|
|
65
|
+
| --- | --- |
|
|
66
|
+
| [A native C boundary](ffi/index.md) | Declare a C operation and call it inside an unsafe block. |
|
|
67
|
+
| [A finite benchmark](benchmark/index.md) | Measure a deterministic arithmetic workload with aug bench. |
|
|
53
68
|
|
|
54
69
|
## Measured programs
|
|
55
70
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
71
|
+
| Project | What it demonstrates |
|
|
72
|
+
| --- | --- |
|
|
73
|
+
| [Startup benchmark](startup-benchmark/index.md) | The small program used to measure process startup. |
|
|
74
|
+
| [CPU benchmark](cpu-benchmark/index.md) | Two million dependent integer steps with a checked result. |
|
|
75
|
+
| [Map and Set benchmark](collections-benchmark/index.md) | Insert, find, and iterate over 20,000 collection entries. |
|
|
76
|
+
| [JSON benchmark](json-benchmark/index.md) | Parse, decode, and serialize a typed record 5,000 times. |
|
|
77
|
+
| [HTTP benchmark](http-benchmark/index.md) | Serve the typed JSON endpoint used in the throughput measurements. |
|
|
@@ -31,6 +31,7 @@ pageClass: aug-example-page
|
|
|
31
31
|
::: code-group
|
|
32
32
|
|
|
33
33
|
```aug [Indentation]
|
|
34
|
+
// aug-spec: "app.aug.md" explains this file. Read it before changes; refresh with aug spec.
|
|
34
35
|
import Console from august.io
|
|
35
36
|
import Logger from logging
|
|
36
37
|
import Audit from interceptors
|
|
@@ -44,7 +45,7 @@ import AddOne from interceptors
|
|
|
44
45
|
[Audit]
|
|
45
46
|
[Positive(y=x)]
|
|
46
47
|
[AddOne(y=x)]
|
|
47
|
-
describe(resolve Logger logger, resolve Console console, int x, string label)
|
|
48
|
+
describe(resolve Logger logger, resolve Console console, int x, string label):
|
|
48
49
|
console.write(value=x)
|
|
49
50
|
return label
|
|
50
51
|
interface IGreeter:
|
|
@@ -53,11 +54,12 @@ interface IGreeter:
|
|
|
53
54
|
Greeter(resolve Logger logger to _logger, string name) implements IGreeter:
|
|
54
55
|
/** Method annotations wrap each method invocation separately. */
|
|
55
56
|
[Audit]
|
|
56
|
-
greet(resolve Logger logger, resolve Console console)
|
|
57
|
+
greet(resolve Logger logger, resolve Console console):
|
|
57
58
|
return "Hello, " + name + "!"
|
|
58
59
|
```
|
|
59
60
|
|
|
60
61
|
```aug [Braces]
|
|
62
|
+
// aug-spec: "app.aug.md" explains this file. Read it before changes; refresh with aug spec.
|
|
61
63
|
import Console from august.io
|
|
62
64
|
import Logger from logging
|
|
63
65
|
import Audit from interceptors
|
|
@@ -71,7 +73,7 @@ import AddOne from interceptors
|
|
|
71
73
|
[Audit]
|
|
72
74
|
[Positive(y=x)]
|
|
73
75
|
[AddOne(y=x)]
|
|
74
|
-
describe(resolve Logger logger, resolve Console console, int x, string label)
|
|
76
|
+
describe(resolve Logger logger, resolve Console console, int x, string label) {
|
|
75
77
|
console.write(value=x)
|
|
76
78
|
return label
|
|
77
79
|
}
|
|
@@ -82,7 +84,7 @@ interface IGreeter {
|
|
|
82
84
|
Greeter(resolve Logger logger to _logger, string name) implements IGreeter {
|
|
83
85
|
/** Method annotations wrap each method invocation separately. */
|
|
84
86
|
[Audit]
|
|
85
|
-
greet(resolve Logger logger, resolve Console console)
|
|
87
|
+
greet(resolve Logger logger, resolve Console console) {
|
|
86
88
|
return "Hello, " + name + "!"
|
|
87
89
|
}
|
|
88
90
|
}
|
|
@@ -96,154 +98,33 @@ Greeter(resolve Logger logger to _logger, string name) implements IGreeter {
|
|
|
96
98
|
|
|
97
99
|
## Compiled specification {#specification}
|
|
98
100
|
|
|
99
|
-
|
|
101
|
+
### `describe` · [source](app.md#code) {#symbol-describe}
|
|
100
102
|
|
|
101
|
-
|
|
103
|
+
Prints a number and returns its label. It takes `x` as an integer (the numeric input, validated and incremented by the chain) and `label` as a string (Text forwarded through each layer unchanged). It gets `logger` ([`Logger`](logging.md#symbol-Logger)) and `console` ([`Console`](dependencies/august/0.20.1/io/contracts.md#symbol-Console)) from dependency injection. Failures can raise `ValidationError`.
|
|
102
104
|
|
|
103
|
-
- [`
|
|
104
|
-
- [`IGreeter`](app.md#symbol-IGreeter) is an interface.
|
|
105
|
-
- [`Greeter`](app.md#symbol-Greeter) is a class implementing `IGreeter`.
|
|
105
|
+
Layers run in the declared order. Call [`Audit.around`](interceptors.md#symbol-Audit.around). Call [`Positive.around`](interceptors.md#symbol-Positive.around). Map `x` to `y`. Call [`AddOne.around`](interceptors.md#symbol-AddOne.around). Map `x` to `y`.
|
|
106
106
|
|
|
107
|
-
|
|
107
|
+
It passes `x` to [`console.write`](dependencies/august/0.20.1/io/contracts.md#symbol-Console.write). It returns `label`.
|
|
108
108
|
|
|
109
|
-
[source](app.md#code)
|
|
109
|
+
### `IGreeter` · interface · [source](app.md#code) {#symbol-IGreeter}
|
|
110
110
|
|
|
111
|
-
|
|
111
|
+
#### `IGreeter.greet` · [source](app.md#code) {#symbol-IGreeter.greet}
|
|
112
112
|
|
|
113
|
-
|
|
114
|
-
- `console` ([`Console`](dependencies/august/0.19.0/io/contracts.md#symbol-Console)) — injected; callers omit it.
|
|
115
|
-
- `x` (`int`) — required labeled input.
|
|
116
|
-
- `label` (`string`) — required labeled input.
|
|
113
|
+
It gets `logger` ([`Logger`](logging.md#symbol-Logger)) and `console` ([`Console`](dependencies/august/0.20.1/io/contracts.md#symbol-Console)) from dependency injection. It returns `string`. It can call [`Console.write`](dependencies/august/0.20.1/io/contracts.md#symbol-Console.write).
|
|
117
114
|
|
|
118
|
-
|
|
115
|
+
### `Greeter` · class · [source](app.md#code) {#symbol-Greeter}
|
|
119
116
|
|
|
120
|
-
|
|
117
|
+
Construction stores its inputs; startup is visible in the greet call. It implements [`IGreeter`](app.md#symbol-IGreeter). It takes `name` as a string, kept read-only. It gets `_logger` ([`Logger`](logging.md#symbol-Logger)), kept read-only and private as `_logger` from dependency injection.
|
|
121
118
|
|
|
122
|
-
|
|
119
|
+
#### `Greeter.greet` · [source](app.md#code) {#symbol-Greeter.greet}
|
|
123
120
|
|
|
124
|
-
|
|
121
|
+
Method annotations wrap each method invocation separately. It gets `logger` ([`Logger`](logging.md#symbol-Logger)) and `console` ([`Console`](dependencies/august/0.20.1/io/contracts.md#symbol-Console)) from dependency injection. Layers run in the declared order. Call [`Audit.around`](interceptors.md#symbol-Audit.around).
|
|
125
122
|
|
|
126
|
-
|
|
127
|
-
2. Call [`Positive.around`](interceptors.md#symbol-Positive.around). It can call the next layer or finish with its own result or failure. Map `x` to `y`. Unselected inputs pass through.
|
|
128
|
-
3. Call [`AddOne.around`](interceptors.md#symbol-AddOne.around). It can call the next layer or finish with its own result or failure. Map `x` to `y`. Unselected inputs pass through.
|
|
123
|
+
It returns the text `Hello, {name}!`.
|
|
129
124
|
|
|
130
|
-
|
|
125
|
+
### Dependencies
|
|
131
126
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
- Call [`Console.write`](dependencies/august/0.19.0/io/contracts.md#symbol-Console.write) on `console` with `value` = `x`.
|
|
135
|
-
- Return `label`.
|
|
136
|
-
|
|
137
|
-
**Author documentation**
|
|
138
|
-
|
|
139
|
-
Prints a number and returns its label.
|
|
140
|
-
|
|
141
|
-
**Parameters**
|
|
142
|
-
- `x`: The numeric input, validated and incremented by the chain.
|
|
143
|
-
- `label`: Text forwarded through each layer unchanged.
|
|
144
|
-
|
|
145
|
-
### `IGreeter` {#symbol-IGreeter}
|
|
146
|
-
|
|
147
|
-
[source](app.md#code)
|
|
148
|
-
|
|
149
|
-
Interface.
|
|
150
|
-
|
|
151
|
-
#### `IGreeter.greet` {#symbol-IGreeter.greet}
|
|
152
|
-
|
|
153
|
-
[source](app.md#code)
|
|
154
|
-
|
|
155
|
-
**Inputs**
|
|
156
|
-
|
|
157
|
-
- `logger` ([`Logger`](logging.md#symbol-Logger)) — injected; callers omit it.
|
|
158
|
-
- `console` ([`Console`](dependencies/august/0.19.0/io/contracts.md#symbol-Console)) — injected; callers omit it.
|
|
159
|
-
|
|
160
|
-
Returns: `string`.
|
|
161
|
-
|
|
162
|
-
Capabilities: [`Console.write`](dependencies/august/0.19.0/io/contracts.md#symbol-Console.write).
|
|
163
|
-
|
|
164
|
-
Interface contract. A selected implementation supplies the behavior.
|
|
165
|
-
|
|
166
|
-
### `Greeter` {#symbol-Greeter}
|
|
167
|
-
|
|
168
|
-
[source](app.md#code)
|
|
169
|
-
|
|
170
|
-
Behavioral class.
|
|
171
|
-
|
|
172
|
-
Satisfies [`IGreeter`](app.md#symbol-IGreeter).
|
|
173
|
-
|
|
174
|
-
**Author documentation**
|
|
175
|
-
|
|
176
|
-
Construction stores its inputs; startup is visible in the greet call.
|
|
177
|
-
|
|
178
|
-
**Inputs**
|
|
179
|
-
|
|
180
|
-
- `logger` ([`Logger`](logging.md#symbol-Logger)) — injected; callers omit it — stored as `_logger` (private) and read-only after initialization.
|
|
181
|
-
- `name` (`string`) — required labeled input — stored as `name` and read-only after initialization.
|
|
182
|
-
|
|
183
|
-
#### `Greeter.greet` {#symbol-Greeter.greet}
|
|
184
|
-
|
|
185
|
-
[source](app.md#code)
|
|
186
|
-
|
|
187
|
-
**Inputs**
|
|
188
|
-
|
|
189
|
-
- `logger` ([`Logger`](logging.md#symbol-Logger)) — injected; callers omit it.
|
|
190
|
-
- `console` ([`Console`](dependencies/august/0.19.0/io/contracts.md#symbol-Console)) — injected; callers omit it.
|
|
191
|
-
|
|
192
|
-
Returns: `string`.
|
|
193
|
-
|
|
194
|
-
Capabilities: [`Console.write`](dependencies/august/0.19.0/io/contracts.md#symbol-Console.write).
|
|
195
|
-
|
|
196
|
-
**Interceptors, in execution order**
|
|
197
|
-
|
|
198
|
-
1. Call [`Audit.around`](interceptors.md#symbol-Audit.around). It can call the next layer or finish with its own result or failure. Unselected inputs pass through.
|
|
199
|
-
|
|
200
|
-
The first layer wraps the remaining layers. HTTP policies run before wire decoding; custom interceptors run after decoding. Follow linked behavior to see its conditions, input changes, and calls to the next layer.
|
|
201
|
-
|
|
202
|
-
**What it does**
|
|
203
|
-
|
|
204
|
-
- Return text formed by joining `"Hello, "`, `name`, `"!"` in order.
|
|
205
|
-
|
|
206
|
-
**Author documentation**
|
|
207
|
-
|
|
208
|
-
Method annotations wrap each method invocation separately.
|
|
209
|
-
|
|
210
|
-
### Dependencies used by this file
|
|
211
|
-
|
|
212
|
-
Only referenced types and operations appear here. Each name links to its complete specification.
|
|
213
|
-
|
|
214
|
-
#### [`Console`](dependencies/august/0.19.0/io/contracts.md#symbol-Console)
|
|
215
|
-
|
|
216
|
-
Capability interface from `august.io`.
|
|
217
|
-
|
|
218
|
-
- [`Console.write`](dependencies/august/0.19.0/io/contracts.md#symbol-Console.write)<`T`> (`value`: `T`) → `void`.
|
|
219
|
-
|
|
220
|
-
#### [`AddOne`](interceptors.md#symbol-AddOne)
|
|
221
|
-
|
|
222
|
-
Interceptor from `interceptors`.
|
|
223
|
-
|
|
224
|
-
- [`AddOne.around`](interceptors.md#symbol-AddOne.around) (`y`: `int`) → `T`.
|
|
225
|
-
|
|
226
|
-
#### [`Audit`](interceptors.md#symbol-Audit)
|
|
227
|
-
|
|
228
|
-
Interceptor from `interceptors`.
|
|
229
|
-
|
|
230
|
-
- [`Audit.around`](interceptors.md#symbol-Audit.around) (no caller inputs) → `T`; inject `console`: [`Console`](dependencies/august/0.19.0/io/contracts.md#symbol-Console); uses [`Console.write`](dependencies/august/0.19.0/io/contracts.md#symbol-Console.write).
|
|
231
|
-
|
|
232
|
-
#### [`Positive`](interceptors.md#symbol-Positive)
|
|
233
|
-
|
|
234
|
-
Interceptor from `interceptors`.
|
|
235
|
-
|
|
236
|
-
- [`Positive.around`](interceptors.md#symbol-Positive.around) (`y`: `int`) → `T`; can fail with `ValidationError`.
|
|
237
|
-
|
|
238
|
-
#### [`Logger`](logging.md#symbol-Logger)
|
|
239
|
-
|
|
240
|
-
Interface from `logging`.
|
|
241
|
-
|
|
242
|
-
Used as a type or provider.
|
|
243
|
-
|
|
244
|
-
### Shared language rules
|
|
245
|
-
|
|
246
|
-
See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
|
|
127
|
+
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)) from `august.io`. It uses [`AddOne`](interceptors.md#symbol-AddOne) ([`around`](interceptors.md#symbol-AddOne.around)), [`Audit`](interceptors.md#symbol-Audit) ([`around`](interceptors.md#symbol-Audit.around)), and [`Positive`](interceptors.md#symbol-Positive) ([`around`](interceptors.md#symbol-Positive.around)) from `interceptors`. It uses [`Logger`](logging.md#symbol-Logger) from `logging`.
|
|
247
128
|
|
|
248
129
|
::::
|
|
249
130
|
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "august/0.20.1/io/contracts.aug · Function and constructor middleware"
|
|
3
|
+
generated: true
|
|
4
|
+
source: "examples/interceptors/.aug-spec/august/0.20.1/io/contracts.aug"
|
|
5
|
+
editLink: false
|
|
6
|
+
prev: false
|
|
7
|
+
next: false
|
|
8
|
+
outline: [2, 3]
|
|
9
|
+
search: false
|
|
10
|
+
pageClass: aug-example-page
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# `august/0.20.1/io/contracts.aug`
|
|
14
|
+
|
|
15
|
+
[Function and constructor middleware](../../../../index.md) · Dependency source and specification
|
|
16
|
+
|
|
17
|
+
This is the exact dependency version used by this example.
|
|
18
|
+
|
|
19
|
+
::::: example-compare
|
|
20
|
+
|
|
21
|
+
:::: example-code
|
|
22
|
+
|
|
23
|
+
## Code {#code}
|
|
24
|
+
|
|
25
|
+
::: code-group
|
|
26
|
+
|
|
27
|
+
```aug [Indentation]
|
|
28
|
+
// aug-spec: "contracts.aug.md" explains this file. Read it before changes; refresh with aug spec.
|
|
29
|
+
/** Permission to write to a console, provided by an explicitly selected adapter. */
|
|
30
|
+
capability Console:
|
|
31
|
+
/** Write one line of text. @param value Text to display. */
|
|
32
|
+
write<T>(T value) uses Console.write
|
|
33
|
+
/** The native standard-output adapter. Construction performs no output. */
|
|
34
|
+
SystemConsole() implements Console:
|
|
35
|
+
write<T>(T value):
|
|
36
|
+
print(value=value)
|
|
37
|
+
/** Read UTF-8 text through an explicitly selected filesystem adapter. */
|
|
38
|
+
capability FileReader:
|
|
39
|
+
/** Read text. @param path File path. @throws FileError The file could not be read. */
|
|
40
|
+
read(string path) returns string uses FileReader.read unless FileError
|
|
41
|
+
/** Write UTF-8 text through an explicitly selected filesystem adapter. */
|
|
42
|
+
capability FileWriter:
|
|
43
|
+
/** Write text. @param path File path. @param content Text. @throws FileError Writing failed. */
|
|
44
|
+
write(string path, string content) uses FileWriter.write unless FileError
|
|
45
|
+
/** Native files. Operations are explicit; construction opens no files. */
|
|
46
|
+
LocalFiles() implements FileReader, FileWriter:
|
|
47
|
+
read(string path):
|
|
48
|
+
return read_file(path=path)
|
|
49
|
+
write(string path, string content):
|
|
50
|
+
write_file(path=path, content=content)
|
|
51
|
+
/** Read command-line input through an explicit dependency. */
|
|
52
|
+
capability Arguments:
|
|
53
|
+
read() returns List<string> uses Arguments.read
|
|
54
|
+
/** Native command-line arguments. */
|
|
55
|
+
ProcessArguments() implements Arguments:
|
|
56
|
+
read():
|
|
57
|
+
return arguments()
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
```aug [Braces]
|
|
61
|
+
// aug-spec: "contracts.aug.md" explains this file. Read it before changes; refresh with aug spec.
|
|
62
|
+
/** Permission to write to a console, provided by an explicitly selected adapter. */
|
|
63
|
+
capability Console {
|
|
64
|
+
/** Write one line of text. @param value Text to display. */
|
|
65
|
+
write<T>(T value) uses Console.write
|
|
66
|
+
}
|
|
67
|
+
/** The native standard-output adapter. Construction performs no output. */
|
|
68
|
+
SystemConsole() implements Console {
|
|
69
|
+
write<T>(T value) {
|
|
70
|
+
print(value=value)
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/** Read UTF-8 text through an explicitly selected filesystem adapter. */
|
|
74
|
+
capability FileReader {
|
|
75
|
+
/** Read text. @param path File path. @throws FileError The file could not be read. */
|
|
76
|
+
read(string path) returns string uses FileReader.read unless FileError
|
|
77
|
+
}
|
|
78
|
+
/** Write UTF-8 text through an explicitly selected filesystem adapter. */
|
|
79
|
+
capability FileWriter {
|
|
80
|
+
/** Write text. @param path File path. @param content Text. @throws FileError Writing failed. */
|
|
81
|
+
write(string path, string content) uses FileWriter.write unless FileError
|
|
82
|
+
}
|
|
83
|
+
/** Native files. Operations are explicit; construction opens no files. */
|
|
84
|
+
LocalFiles() implements FileReader, FileWriter {
|
|
85
|
+
read(string path) {
|
|
86
|
+
return read_file(path=path)
|
|
87
|
+
}
|
|
88
|
+
write(string path, string content) {
|
|
89
|
+
write_file(path=path, content=content)
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/** Read command-line input through an explicit dependency. */
|
|
93
|
+
capability Arguments {
|
|
94
|
+
read() returns List<string> uses Arguments.read
|
|
95
|
+
}
|
|
96
|
+
/** Native command-line arguments. */
|
|
97
|
+
ProcessArguments() implements Arguments {
|
|
98
|
+
read() {
|
|
99
|
+
return arguments()
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
:::
|
|
105
|
+
|
|
106
|
+
::::
|
|
107
|
+
|
|
108
|
+
:::: example-spec
|
|
109
|
+
|
|
110
|
+
## Compiled specification {#specification}
|
|
111
|
+
|
|
112
|
+
### `Console` · capability interface · [source](contracts.md#code) {#symbol-Console}
|
|
113
|
+
|
|
114
|
+
Permission to write to a console, provided by an explicitly selected adapter.
|
|
115
|
+
|
|
116
|
+
#### `Console.write` · [source](contracts.md#code) {#symbol-Console.write}
|
|
117
|
+
|
|
118
|
+
Write one line of text. The type parameters are `T`. It takes `value` as `T` (Text to display). It can call [`Console.write`](contracts.md#symbol-Console.write).
|
|
119
|
+
|
|
120
|
+
### `SystemConsole` · class · [source](contracts.md#code) {#symbol-SystemConsole}
|
|
121
|
+
|
|
122
|
+
The native standard-output adapter. Construction performs no output. It implements [`Console`](contracts.md#symbol-Console).
|
|
123
|
+
|
|
124
|
+
#### `SystemConsole.write` · [source](contracts.md#code) {#symbol-SystemConsole.write}
|
|
125
|
+
|
|
126
|
+
Write one line of text. The type parameters are `T`. It takes `value` as `T` (Text to display). It prints `value`.
|
|
127
|
+
|
|
128
|
+
### `FileReader` · capability interface · [source](contracts.md#code) {#symbol-FileReader}
|
|
129
|
+
|
|
130
|
+
Read UTF-8 text through an explicitly selected filesystem adapter.
|
|
131
|
+
|
|
132
|
+
#### `FileReader.read` · [source](contracts.md#code) {#symbol-FileReader.read}
|
|
133
|
+
|
|
134
|
+
Read text. It takes `path` as a string (File path).
|
|
135
|
+
|
|
136
|
+
It returns `string`. It can call [`FileReader.read`](contracts.md#symbol-FileReader.read). Failures can raise `FileError` (The file could not be read).
|
|
137
|
+
|
|
138
|
+
### `FileWriter` · capability interface · [source](contracts.md#code) {#symbol-FileWriter}
|
|
139
|
+
|
|
140
|
+
Write UTF-8 text through an explicitly selected filesystem adapter.
|
|
141
|
+
|
|
142
|
+
#### `FileWriter.write` · [source](contracts.md#code) {#symbol-FileWriter.write}
|
|
143
|
+
|
|
144
|
+
Write text. It takes `path` as a string (File path) and `content` as a string (Text). It can call [`FileWriter.write`](contracts.md#symbol-FileWriter.write). Failures can raise `FileError` (Writing failed).
|
|
145
|
+
|
|
146
|
+
### `LocalFiles` · class · [source](contracts.md#code) {#symbol-LocalFiles}
|
|
147
|
+
|
|
148
|
+
Native files. Operations are explicit; construction opens no files. It implements [`FileReader`](contracts.md#symbol-FileReader) and [`FileWriter`](contracts.md#symbol-FileWriter).
|
|
149
|
+
|
|
150
|
+
#### `LocalFiles.read` · [source](contracts.md#code) {#symbol-LocalFiles.read}
|
|
151
|
+
|
|
152
|
+
Read text. It takes `path` as a string (File path). Failures can raise `FileError` (The file could not be read). It returns `read_file` with `path`.
|
|
153
|
+
|
|
154
|
+
#### `LocalFiles.write` · [source](contracts.md#code) {#symbol-LocalFiles.write}
|
|
155
|
+
|
|
156
|
+
Write text. It takes `path` as a string (File path) and `content` as a string (Text). Failures can raise `FileError` (Writing failed). It calls `write_file` with `path` and `content`.
|
|
157
|
+
|
|
158
|
+
### `Arguments` · capability interface · [source](contracts.md#code) {#symbol-Arguments}
|
|
159
|
+
|
|
160
|
+
Read command-line input through an explicit dependency.
|
|
161
|
+
|
|
162
|
+
#### `Arguments.read` · [source](contracts.md#code) {#symbol-Arguments.read}
|
|
163
|
+
|
|
164
|
+
It returns `List<string>`. It can call [`Arguments.read`](contracts.md#symbol-Arguments.read).
|
|
165
|
+
|
|
166
|
+
### `ProcessArguments` · class · [source](contracts.md#code) {#symbol-ProcessArguments}
|
|
167
|
+
|
|
168
|
+
Native command-line arguments. It implements [`Arguments`](contracts.md#symbol-Arguments).
|
|
169
|
+
|
|
170
|
+
#### `ProcessArguments.read` · [source](contracts.md#code) {#symbol-ProcessArguments.read}
|
|
171
|
+
|
|
172
|
+
It returns `arguments`.
|
|
173
|
+
|
|
174
|
+
Built-in operations follow the [language reference](https://greenpandastudios.github.io/augscript/language-constructs).
|
|
175
|
+
|
|
176
|
+
::::
|
|
177
|
+
|
|
178
|
+
:::::
|
|
@@ -12,7 +12,7 @@ outline: [2, 3]
|
|
|
12
12
|
|
|
13
13
|
Layer interceptors, map inputs, and keep logging dependencies explicit.
|
|
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
|
|
|
@@ -24,12 +24,13 @@ Read a file below to see its highlighted source and the Markdown produced by `au
|
|
|
24
24
|
|
|
25
25
|
## Try this project
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
[Download this project](/downloads/interceptors.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:
|
|
28
28
|
|
|
29
29
|
```sh
|
|
30
|
-
|
|
31
|
-
aug
|
|
32
|
-
aug
|
|
30
|
+
cd interceptors
|
|
31
|
+
aug check .
|
|
32
|
+
aug spec .
|
|
33
|
+
aug run .
|
|
33
34
|
```
|
|
34
35
|
|
|
35
36
|
[Browse all examples](../index.md)
|