@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
|
@@ -1,64 +1,19 @@
|
|
|
1
1
|
<!-- Generated by aug spec. Edit the August source, then regenerate. -->
|
|
2
2
|
|
|
3
|
-
# `main.aug`
|
|
3
|
+
# `main.aug`
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## Providers
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
`Console` is provided by [`SystemConsole`](.aug-spec/august/0.20.1/io/contracts.aug.md#symbol-SystemConsole). The same instance is shared. `Logger` is provided by [`ConsoleLogger`](console.aug.md#symbol-ConsoleLogger). The same instance is shared.
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
- Run 5 other startup steps in source order.
|
|
9
|
+
## Startup
|
|
11
10
|
|
|
12
|
-
|
|
11
|
+
It sets `greeter` to a [`Greeter`](greeter.aug.md#symbol-Greeter) with `x` `4` using injected `Logger` for `logger`. It passes `"AugScript"` to [`greeter.greet`](greeter.aug.md#symbol-Greeter.greet), using injected `Console`. It sets `count` to `7`. It sets `count` to [`increment`](math.aug.md#symbol-increment) with `value` from `count`.
|
|
13
12
|
|
|
14
|
-
|
|
13
|
+
It prints `count`.
|
|
15
14
|
|
|
16
|
-
|
|
17
|
-
- Provide [`ConsoleLogger`](console.aug.md#symbol-ConsoleLogger) when `Logger` is requested. Reuse one instance.
|
|
15
|
+
## Dependencies
|
|
18
16
|
|
|
19
|
-
|
|
17
|
+
It uses [`SystemConsole`](.aug-spec/august/0.20.1/io/contracts.aug.md#symbol-SystemConsole) from `august.io`. It uses [`ConsoleLogger`](console.aug.md#symbol-ConsoleLogger) from `console`. It uses [`Greeter`](greeter.aug.md#symbol-Greeter) ([`greet`](greeter.aug.md#symbol-Greeter.greet)) from `greeter`. It uses [`increment`](math.aug.md#symbol-increment) from `math`.
|
|
20
18
|
|
|
21
|
-
-
|
|
22
|
-
- Call [`Greeter.greet`](greeter.aug.md#symbol-Greeter.greet) on `greeter` with `name` = `"AugScript"`; inject `console` from `Console`.
|
|
23
|
-
- Set `count` of type `int` to `7`.
|
|
24
|
-
- Set `count` to call [`increment`](math.aug.md#symbol-increment) with `value` = `count`.
|
|
25
|
-
- Call `print` with `value` = `count`.
|
|
26
|
-
|
|
27
|
-
## Dependencies used by this file
|
|
28
|
-
|
|
29
|
-
Only referenced types and operations appear here. Each name links to its complete specification.
|
|
30
|
-
|
|
31
|
-
### [`SystemConsole`](.aug-spec/august/0.19.0/io/contracts.aug.md#symbol-SystemConsole)
|
|
32
|
-
|
|
33
|
-
Class from `august.io`.
|
|
34
|
-
|
|
35
|
-
Used as a type or provider.
|
|
36
|
-
|
|
37
|
-
### [`ConsoleLogger`](console.aug.md#symbol-ConsoleLogger)
|
|
38
|
-
|
|
39
|
-
Class from `console`.
|
|
40
|
-
|
|
41
|
-
Used as a type or provider.
|
|
42
|
-
|
|
43
|
-
### [`Greeter`](greeter.aug.md#symbol-Greeter)
|
|
44
|
-
|
|
45
|
-
Class from `greeter`.
|
|
46
|
-
|
|
47
|
-
- Construct with `x`: `int` → [`Greeter`](greeter.aug.md#symbol-Greeter).
|
|
48
|
-
- [`Greeter.greet`](greeter.aug.md#symbol-Greeter.greet) (`name`: `string`) → `void`; inject `console`: [`Console`](.aug-spec/august/0.19.0/io/contracts.aug.md#symbol-Console); uses [`Console.write`](.aug-spec/august/0.19.0/io/contracts.aug.md#symbol-Console.write).
|
|
49
|
-
|
|
50
|
-
### [`increment`](math.aug.md#symbol-increment)
|
|
51
|
-
|
|
52
|
-
Function from `math`.
|
|
53
|
-
|
|
54
|
-
- [`increment`](math.aug.md#symbol-increment) (`value`: `int`) → `int`.
|
|
55
|
-
|
|
56
|
-
## Built-in operations used by this file
|
|
57
|
-
|
|
58
|
-
- `print` (`value`: `any`) → `void`: Composition and test output. Other callables receive Console and declare uses console.write.
|
|
59
|
-
|
|
60
|
-
[Full built-in reference](https://greenpandastudios.github.io/augscript/language-constructs).
|
|
61
|
-
|
|
62
|
-
## Shared language rules
|
|
63
|
-
|
|
64
|
-
See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
|
|
19
|
+
Built-in operations follow the [language reference](https://greenpandastudios.github.io/augscript/language-constructs).
|
|
@@ -1,29 +1,8 @@
|
|
|
1
1
|
<!-- Generated by aug spec. Edit the August source, then regenerate. -->
|
|
2
2
|
|
|
3
|
-
# `math.aug`
|
|
4
|
-
|
|
5
|
-
August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
|
|
6
|
-
|
|
7
|
-
## In this file
|
|
8
|
-
|
|
9
|
-
- [`increment`](math.aug.md#symbol-increment) is a function returning `int`.
|
|
3
|
+
# `math.aug`
|
|
10
4
|
|
|
11
5
|
<a id="symbol-increment"></a>
|
|
6
|
+
## `increment` · [source](math.aug#L2)
|
|
12
7
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
[source](math.aug#L1)
|
|
16
|
-
|
|
17
|
-
**Inputs**
|
|
18
|
-
|
|
19
|
-
- `value` (`int`) — required labeled input.
|
|
20
|
-
|
|
21
|
-
Returns: `int`.
|
|
22
|
-
|
|
23
|
-
**What it does**
|
|
24
|
-
|
|
25
|
-
- Return `value` plus `1`.
|
|
26
|
-
|
|
27
|
-
## Shared language rules
|
|
28
|
-
|
|
29
|
-
See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
|
|
8
|
+
It takes `value` as an integer. It returns `value` plus `1`.
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"format": 1,
|
|
3
3
|
"files": [
|
|
4
|
-
".aug-spec/
|
|
5
|
-
".aug-spec/
|
|
6
|
-
".aug-spec/
|
|
7
|
-
".aug-spec/
|
|
8
|
-
".aug-spec/
|
|
9
|
-
".aug-spec/
|
|
10
|
-
".aug-spec/
|
|
11
|
-
".aug-spec/
|
|
12
|
-
".aug-spec/
|
|
13
|
-
".aug-spec/
|
|
14
|
-
".aug-spec/
|
|
15
|
-
".aug-spec/
|
|
4
|
+
".aug-spec/packages/@git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/store.aug",
|
|
5
|
+
".aug-spec/packages/@git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/store.aug.md",
|
|
6
|
+
".aug-spec/packages/@git/url_2d3c37c690c0fa115be1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug",
|
|
7
|
+
".aug-spec/packages/@git/url_2d3c37c690c0fa115be1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md",
|
|
8
|
+
".aug-spec/packages/@git/url_897efafd565158fc4908/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug",
|
|
9
|
+
".aug-spec/packages/@git/url_897efafd565158fc4908/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md",
|
|
10
|
+
".aug-spec/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/contracts.aug",
|
|
11
|
+
".aug-spec/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/contracts.aug.md",
|
|
12
|
+
".aug-spec/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/jose.aug",
|
|
13
|
+
".aug-spec/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/jose.aug.md",
|
|
14
|
+
".aug-spec/packages/@git/url_c092cd151499c4e1d8a1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug",
|
|
15
|
+
".aug-spec/packages/@git/url_c092cd151499c4e1d8a1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md",
|
|
16
16
|
"client/contracts.aug.md",
|
|
17
17
|
"client/endpoints.aug.md",
|
|
18
18
|
"client/export.aug.md",
|
|
@@ -36,5 +36,5 @@
|
|
|
36
36
|
"provider/userinfo.aug.md",
|
|
37
37
|
"provider/views.aug.md"
|
|
38
38
|
],
|
|
39
|
-
"digest": "
|
|
39
|
+
"digest": "78cf80d2658be477f75de6700d0b2f997ddc6a912af4f3ca63462b6f927f8588"
|
|
40
40
|
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
<!-- Generated by aug spec. Edit the August source, then regenerate. -->
|
|
2
|
+
|
|
3
|
+
# `store.aug`
|
|
4
|
+
|
|
5
|
+
<a id="symbol-StoreFull"></a>
|
|
6
|
+
## `StoreFull` · class · [source](store.aug#L3)
|
|
7
|
+
|
|
8
|
+
The bounded store could not accept another live entry. It implements `Error`.
|
|
9
|
+
|
|
10
|
+
<a id="symbol-ExpiringStore"></a>
|
|
11
|
+
## `ExpiringStore` · capability interface · [source](store.aug#L8)
|
|
12
|
+
|
|
13
|
+
A bounded, expiring capability for immutable values. Each generic DI binding has its own table. The type parameters are `T` which must satisfy `Data`.
|
|
14
|
+
|
|
15
|
+
<a id="symbol-ExpiringStore.put"></a>
|
|
16
|
+
### `ExpiringStore.put` · [source](store.aug#L10)
|
|
17
|
+
|
|
18
|
+
Remove expired entries, then store at most 512 live entries. Time is supplied by the caller. It takes `key` as a string, `value` as `T`, and `expires` and `now` as integers.
|
|
19
|
+
|
|
20
|
+
It can call [`ExpiringStore.put`](store.aug.md#symbol-ExpiringStore.put). Failures can raise [`StoreFull`](store.aug.md#symbol-StoreFull).
|
|
21
|
+
|
|
22
|
+
<a id="symbol-ExpiringStore.take"></a>
|
|
23
|
+
### `ExpiringStore.take` · [source](store.aug#L12)
|
|
24
|
+
|
|
25
|
+
Atomically remove a value. Expired or absent entries return null. It takes `key` as a string and `now` as an integer.
|
|
26
|
+
|
|
27
|
+
It returns `optional T`. It can call [`ExpiringStore.take`](store.aug.md#symbol-ExpiringStore.take).
|
|
28
|
+
|
|
29
|
+
<a id="symbol-ExpiringStore.get"></a>
|
|
30
|
+
### `ExpiringStore.get` · [source](store.aug#L14)
|
|
31
|
+
|
|
32
|
+
Read a live value without consuming it. It takes `key` as a string and `now` as an integer. It returns `optional T`. It can call [`ExpiringStore.get`](store.aug.md#symbol-ExpiringStore.get).
|
|
33
|
+
|
|
34
|
+
<a id="symbol-MemoryStore"></a>
|
|
35
|
+
## `MemoryStore` · class · [source](store.aug#L17)
|
|
36
|
+
|
|
37
|
+
A synchronized table with short critical sections and no I/O while locked. It implements [`ExpiringStore<T>`](store.aug.md#symbol-ExpiringStore). The type parameters are `T` which must satisfy `Data`. The read-only, private field `_entries` has type `Shared<Map<string,_Entry<T>>>` and starts as a `Shared` with `value` from an empty map from `string` to [`_Entry<T>`](store.aug.md#symbol-_Entry).
|
|
38
|
+
|
|
39
|
+
<a id="symbol-MemoryStore.put"></a>
|
|
40
|
+
### `MemoryStore.put` · [source](store.aug#L19)
|
|
41
|
+
|
|
42
|
+
Remove expired entries, then store at most 512 live entries. Time is supplied by the caller. It takes `key` as a string, `value` as `T`, and `expires` and `now` as integers. Failures can raise [`StoreFull`](store.aug.md#symbol-StoreFull).
|
|
43
|
+
|
|
44
|
+
It sets `entry` to a [`_Entry`](store.aug.md#symbol-_Entry) for `T` with `value` and `expires`. While holding the lock on `_entries` as mutable `entries`, for each `name` and `saved` in a snapshot of `entries`, if `saved.expires` is at most `now`, it removes the key `name` from `entries`. After the loop, it checks that the number of elements in `entries` is less than `512` or whether `entries` contains the key `key` returns true. It raises a [`StoreFull`](store.aug.md#symbol-StoreFull) at the first failed check.
|
|
45
|
+
|
|
46
|
+
It stores `entry` in `entries` under `key`. Release this lock when the block exits, including on return or failure.
|
|
47
|
+
|
|
48
|
+
<a id="symbol-MemoryStore.take"></a>
|
|
49
|
+
### `MemoryStore.take` · [source](store.aug#L28)
|
|
50
|
+
|
|
51
|
+
Atomically remove a value. Expired or absent entries return null. It takes `key` as a string and `now` as an integer.
|
|
52
|
+
|
|
53
|
+
While holding the lock on `_entries` as mutable `entries`, it obtains `entries.take` with `key`. If no value is found, it returns null. The non-null result becomes `saved`. It returns null if `saved.expires` is at most `now`, or `saved.value` otherwise.
|
|
54
|
+
|
|
55
|
+
Release this lock when the block exits, including on return or failure.
|
|
56
|
+
|
|
57
|
+
<a id="symbol-MemoryStore.get"></a>
|
|
58
|
+
### `MemoryStore.get` · [source](store.aug#L37)
|
|
59
|
+
|
|
60
|
+
Read a live value without consuming it. It takes `key` as a string and `now` as an integer.
|
|
61
|
+
|
|
62
|
+
While holding the lock on `_entries` as mutable `entries`, it obtains the value under `key` in `entries`. If no value is found, it returns null. The non-null result becomes `saved`. It returns null if `saved.expires` is at most `now`, or `saved.value` otherwise.
|
|
63
|
+
|
|
64
|
+
Release this lock when the block exits, including on return or failure.
|
|
65
|
+
|
|
66
|
+
<a id="symbol-_Entry"></a>
|
|
67
|
+
## `_Entry` · immutable record · [source](store.aug#L5)
|
|
68
|
+
|
|
69
|
+
It is private to this file. The type parameters are `T` which must satisfy `Data`. It takes `value` as `T`, kept read-only and `expires` as an integer, kept read-only.
|
|
70
|
+
|
|
71
|
+
Built-in operations follow the [language reference](https://greenpandastudios.github.io/augscript/language-constructs).
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<!-- Generated by aug spec. Edit the August source, then regenerate. -->
|
|
2
|
+
|
|
3
|
+
# `contracts.aug`
|
|
4
|
+
|
|
5
|
+
<a id="symbol-parse"></a>
|
|
6
|
+
## `parse` · [source](contracts.aug#L4)
|
|
7
|
+
|
|
8
|
+
Parse strict UTF-8 JSON. Duplicate keys, invalid Unicode, oversized integers, and nesting beyond 64 levels raise JsonError. It takes `input` as a string. Failures can raise `JsonError`.
|
|
9
|
+
|
|
10
|
+
Within an unsafe block, it returns [`_aug_json_parse`](contracts.aug.md#symbol-_aug_json_parse) with `input`. Native operations must satisfy their declared C contracts.
|
|
11
|
+
|
|
12
|
+
<a id="symbol-_aug_json_parse"></a>
|
|
13
|
+
## `_aug_json_parse` · [source](contracts.aug#L2)
|
|
14
|
+
|
|
15
|
+
It is private to its defining scope. It takes `input` as a string. It returns `Json`. Failures can raise `JsonError`.
|
|
16
|
+
|
|
17
|
+
Native C implementation; only its declared contract is visible here.
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
<!-- Generated by aug spec. Edit the August source, then regenerate. -->
|
|
2
|
+
|
|
3
|
+
# `contracts.aug`
|
|
4
|
+
|
|
5
|
+
<a id="symbol-Principal"></a>
|
|
6
|
+
## `Principal` · immutable record · [source](contracts.aug#L3)
|
|
7
|
+
|
|
8
|
+
Immutable identity returned by an explicitly injected authentication adapter. It takes `subject` as a string, kept read-only and `permissions` as `List<string>`, kept read-only.
|
|
9
|
+
|
|
10
|
+
<a id="symbol-Authentication"></a>
|
|
11
|
+
## `Authentication` · capability interface · [source](contracts.aug#L6)
|
|
12
|
+
|
|
13
|
+
Verify the request's credentials. null means unauthenticated; adapter failures raise HttpError.
|
|
14
|
+
|
|
15
|
+
<a id="symbol-Authentication.authenticate"></a>
|
|
16
|
+
### `Authentication.authenticate` · [source](contracts.aug#L7)
|
|
17
|
+
|
|
18
|
+
It takes `request` as `HttpRequest`. It returns [`optional Principal`](contracts.aug.md#symbol-Principal). It can call [`Authentication.authenticate`](contracts.aug.md#symbol-Authentication.authenticate). Failures can raise `HttpError`.
|
|
19
|
+
|
|
20
|
+
<a id="symbol-Authorization"></a>
|
|
21
|
+
## `Authorization` · capability interface · [source](contracts.aug#L10)
|
|
22
|
+
|
|
23
|
+
Decide whether a verified identity has one named permission.
|
|
24
|
+
|
|
25
|
+
<a id="symbol-Authorization.authorize"></a>
|
|
26
|
+
### `Authorization.authorize` · [source](contracts.aug#L11)
|
|
27
|
+
|
|
28
|
+
It takes `identity` as [`Principal`](contracts.aug.md#symbol-Principal) and `permission` as a string. It returns `bool`. It can call [`Authorization.authorize`](contracts.aug.md#symbol-Authorization.authorize). Failures can raise `HttpError`.
|
|
29
|
+
|
|
30
|
+
<a id="symbol-RequestLogger"></a>
|
|
31
|
+
## `RequestLogger` · capability interface · [source](contracts.aug#L14)
|
|
32
|
+
|
|
33
|
+
Observe a completed HTTP exchange, including failures and disconnects.
|
|
34
|
+
|
|
35
|
+
<a id="symbol-RequestLogger.complete"></a>
|
|
36
|
+
### `RequestLogger.complete` · [source](contracts.aug#L15)
|
|
37
|
+
|
|
38
|
+
It takes `method` and `path` as strings and `status` and `milliseconds` as integers. It can call [`RequestLogger.complete`](contracts.aug.md#symbol-RequestLogger.complete).
|
|
39
|
+
|
|
40
|
+
<a id="symbol-WebRequestLogger"></a>
|
|
41
|
+
## `WebRequestLogger` · class · [source](contracts.aug#L19)
|
|
42
|
+
|
|
43
|
+
Emit escaped JSON request metadata to standard error. Credentials and query strings are excluded. It implements [`RequestLogger`](contracts.aug.md#symbol-RequestLogger).
|
|
44
|
+
|
|
45
|
+
<a id="symbol-WebRequestLogger.complete"></a>
|
|
46
|
+
### `WebRequestLogger.complete` · [source](contracts.aug#L20)
|
|
47
|
+
|
|
48
|
+
It takes `method` and `path` as strings and `status` and `milliseconds` as integers. Within an unsafe block, it calls [`_aug_http_log`](contracts.aug.md#symbol-_aug_http_log) with `method`, `path`, `status`, and `milliseconds`. Native operations must satisfy their declared C contracts.
|
|
49
|
+
|
|
50
|
+
<a id="symbol-HttpClient"></a>
|
|
51
|
+
## `HttpClient` · capability interface · [source](contracts.aug#L25)
|
|
52
|
+
|
|
53
|
+
An explicit outbound network capability. TLS verifies the peer and redirects are returned to the caller.
|
|
54
|
+
|
|
55
|
+
<a id="symbol-HttpClient.request"></a>
|
|
56
|
+
### `HttpClient.request` · [source](contracts.aug#L27)
|
|
57
|
+
|
|
58
|
+
Perform an HTTP request with bounded bytes. Inside a task, waiting suspends the task's C stack. It takes `method` and `url` as strings, `headers` as `optional Headers`, and `body` as `optional Bytes`. Omitted optional inputs are null.
|
|
59
|
+
|
|
60
|
+
It returns `HttpResponse<Bytes>`. It can call [`HttpClient.request`](contracts.aug.md#symbol-HttpClient.request). Failures can raise `HttpError`.
|
|
61
|
+
|
|
62
|
+
<a id="symbol-WebHttpClient"></a>
|
|
63
|
+
## `WebHttpClient` · class · [source](contracts.aug#L32)
|
|
64
|
+
|
|
65
|
+
Native libwebsockets transport. No socket is opened by construction. It implements [`HttpClient`](contracts.aug.md#symbol-HttpClient).
|
|
66
|
+
|
|
67
|
+
<a id="symbol-WebHttpClient.request"></a>
|
|
68
|
+
### `WebHttpClient.request` · [source](contracts.aug#L33)
|
|
69
|
+
|
|
70
|
+
Perform an HTTP request with bounded bytes. Inside a task, waiting suspends the task's C stack. It takes `method` and `url` as strings, `headers` as `optional Headers`, and `body` as `optional Bytes`. Omitted optional inputs are null.
|
|
71
|
+
|
|
72
|
+
Failures can raise `HttpError`. Within an unsafe block, it returns [`_aug_http_request`](contracts.aug.md#symbol-_aug_http_request) with `method`, `url`, `headers`, and `body`. Native operations must satisfy their declared C contracts.
|
|
73
|
+
|
|
74
|
+
<a id="symbol-redirect"></a>
|
|
75
|
+
## `redirect` · [source](contracts.aug#L38)
|
|
76
|
+
|
|
77
|
+
Return a redirect with an explicit status. Location is checked as a header value. It takes `location` as a string and `status` as `optional int`. Omitted optional inputs are null.
|
|
78
|
+
|
|
79
|
+
Failures can raise `HttpError`.
|
|
80
|
+
|
|
81
|
+
It sets `code` to `303`. If `status` is null, it continues without an operation. If `status` is not null, using `value` for it sets `code` to `value`. It sets `headers` to a `Headers` with the header `"location"` set to `location`.
|
|
82
|
+
|
|
83
|
+
It returns HTTP code with `""` and `headers` headers.
|
|
84
|
+
|
|
85
|
+
<a id="symbol-urlEncode"></a>
|
|
86
|
+
## `urlEncode` · [source](contracts.aug#L50)
|
|
87
|
+
|
|
88
|
+
Encode a UTF-8 value as one URL query or form component using RFC 3986 unreserved characters. It takes `input` as a string. Failures can raise `HttpError`.
|
|
89
|
+
|
|
90
|
+
Within an unsafe block, it returns [`_aug_http_url_encode`](contracts.aug.md#symbol-_aug_http_url_encode) with `input`. Native operations must satisfy their declared C contracts.
|
|
91
|
+
|
|
92
|
+
<a id="symbol-cookie"></a>
|
|
93
|
+
## `cookie` · [source](contracts.aug#L56)
|
|
94
|
+
|
|
95
|
+
Construct an HttpOnly, SameSite=Lax session cookie. Secure defaults are chosen explicitly at the call site. Values and paths reject delimiters and controls. maxAge=0 clears the cookie.
|
|
96
|
+
|
|
97
|
+
It takes `name`, `value`, and `path` as strings, `maxAge` as an integer, and `secure` as a boolean. Failures can raise `HttpError`. Within an unsafe block, it returns [`_aug_http_cookie`](contracts.aug.md#symbol-_aug_http_cookie) with `name`, `value`, `path`, `maxAge`, and `secure`. Native operations must satisfy their declared C contracts.
|
|
98
|
+
|
|
99
|
+
<a id="symbol-_aug_http_log"></a>
|
|
100
|
+
## `_aug_http_log` · [source](contracts.aug#L17)
|
|
101
|
+
|
|
102
|
+
It is private to its defining scope. It takes `method` and `path` as strings and `status` and `milliseconds` as integers. It can call [`RequestLogger.complete`](contracts.aug.md#symbol-RequestLogger.complete). Native C implementation; only its declared contract is visible here.
|
|
103
|
+
|
|
104
|
+
<a id="symbol-_aug_http_request"></a>
|
|
105
|
+
## `_aug_http_request` · [source](contracts.aug#L29)
|
|
106
|
+
|
|
107
|
+
It is private to its defining scope. It takes `method` and `url` as strings, `headers` as `optional Headers`, and `body` as `optional Bytes`. Omitted optional inputs are null.
|
|
108
|
+
|
|
109
|
+
It returns `HttpResponse<Bytes>`. It can call [`HttpClient.request`](contracts.aug.md#symbol-HttpClient.request). Failures can raise `HttpError`. Native C implementation; only its declared contract is visible here.
|
|
110
|
+
|
|
111
|
+
<a id="symbol-_aug_http_url_encode"></a>
|
|
112
|
+
## `_aug_http_url_encode` · [source](contracts.aug#L48)
|
|
113
|
+
|
|
114
|
+
It is private to its defining scope. It takes `input` as a string. It returns `string`. Failures can raise `HttpError`.
|
|
115
|
+
|
|
116
|
+
Native C implementation; only its declared contract is visible here.
|
|
117
|
+
|
|
118
|
+
<a id="symbol-_aug_http_cookie"></a>
|
|
119
|
+
## `_aug_http_cookie` · [source](contracts.aug#L54)
|
|
120
|
+
|
|
121
|
+
It is private to its defining scope. It takes `name`, `value`, and `path` as strings, `maxAge` as an integer, and `secure` as a boolean. It returns `Headers`. Failures can raise `HttpError`.
|
|
122
|
+
|
|
123
|
+
Native C implementation; only its declared contract is visible here.
|
|
124
|
+
|
|
125
|
+
Built-in operations follow the [language reference](https://greenpandastudios.github.io/augscript/language-constructs).
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// Generated by aug spec. This is a copy of the installed dependency source.
|
|
2
|
+
// aug-spec: "contracts.aug.md" explains this file. Read it before changes; refresh with aug spec.
|
|
2
3
|
/** Explicit permission for native cryptographic operations. Keys and bytes are immutable. */
|
|
3
4
|
capability Crypto:
|
|
4
5
|
/** Generate unpredictable bytes with the operating-system-backed GnuTLS RNG. */
|
|
@@ -38,36 +39,36 @@ extern C value _aug_crypto_password_hash(Bytes password, Bytes salt, int iterati
|
|
|
38
39
|
|
|
39
40
|
/** GnuTLS-backed capability adapter. Its constructor performs no I/O or key generation. */
|
|
40
41
|
GnuTlsCrypto() implements Crypto:
|
|
41
|
-
random(int size)
|
|
42
|
+
random(int size) :
|
|
42
43
|
unsafe:
|
|
43
44
|
return _aug_crypto_random(size)
|
|
44
|
-
sha256(Bytes input)
|
|
45
|
+
sha256(Bytes input) :
|
|
45
46
|
unsafe:
|
|
46
47
|
return _aug_crypto_sha256(input)
|
|
47
|
-
generateRsa()
|
|
48
|
+
generateRsa() :
|
|
48
49
|
unsafe:
|
|
49
50
|
return _aug_crypto_generate_rsa()
|
|
50
|
-
publicRsa(RsaPrivateKey key)
|
|
51
|
+
publicRsa(RsaPrivateKey key) :
|
|
51
52
|
unsafe:
|
|
52
53
|
return _aug_crypto_public_rsa(key)
|
|
53
|
-
signRsa(RsaPrivateKey key, Bytes input)
|
|
54
|
+
signRsa(RsaPrivateKey key, Bytes input) :
|
|
54
55
|
unsafe:
|
|
55
56
|
return _aug_crypto_sign_rsa(key, input)
|
|
56
|
-
verifyRsa(RsaPublicKey publicKey, Bytes input, Bytes signature)
|
|
57
|
+
verifyRsa(RsaPublicKey publicKey, Bytes input, Bytes signature) :
|
|
57
58
|
unsafe:
|
|
58
59
|
return _aug_crypto_verify_rsa(publicKey, input, signature)
|
|
59
|
-
decodeBase64url(string input)
|
|
60
|
+
decodeBase64url(string input) :
|
|
60
61
|
unsafe:
|
|
61
62
|
return _aug_crypto_decode_base64url(input)
|
|
62
|
-
equal(Bytes left, Bytes right)
|
|
63
|
+
equal(Bytes left, Bytes right) :
|
|
63
64
|
unsafe:
|
|
64
65
|
return _aug_crypto_equal(left, right)
|
|
65
|
-
exportRsa(RsaPublicKey publicKey)
|
|
66
|
+
exportRsa(RsaPublicKey publicKey) :
|
|
66
67
|
unsafe:
|
|
67
68
|
return _aug_crypto_export_rsa(publicKey)
|
|
68
|
-
importRsa(Bytes modulus, Bytes exponent)
|
|
69
|
+
importRsa(Bytes modulus, Bytes exponent) :
|
|
69
70
|
unsafe:
|
|
70
71
|
return _aug_crypto_import_rsa(modulus, exponent)
|
|
71
|
-
passwordHash(Bytes password, Bytes salt, int iterations)
|
|
72
|
+
passwordHash(Bytes password, Bytes salt, int iterations) :
|
|
72
73
|
unsafe:
|
|
73
74
|
return _aug_crypto_password_hash(password, salt, iterations)
|