@greenpandastudios/aug-cli 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +13 -0
- package/THIRD_PARTY_NOTICES.md +18 -0
- package/bin/aug.mjs +3 -0
- package/docs/api/crypto.md +351 -0
- package/docs/api/io.md +207 -0
- package/docs/api/json.md +21 -0
- package/docs/api/memory.md +109 -0
- package/docs/api/time.md +54 -0
- package/docs/api/web.md +184 -0
- package/docs/assets/benchmarks/execution.svg +2978 -0
- package/docs/assets/benchmarks/http.svg +1674 -0
- package/docs/assets/benchmarks/improvements.svg +2315 -0
- package/docs/assets/benchmarks/memory.svg +1891 -0
- package/docs/benchmark-baseline.json +1087 -0
- package/docs/benchmark-results.json +91123 -0
- package/docs/benchmarks.json +38 -0
- package/docs/compatibility.md +42 -0
- package/docs/concurrency-implementation.md +18 -0
- package/docs/diagnostics.md +97 -0
- package/docs/docker.md +35 -0
- package/docs/example-projects.json +26 -0
- package/docs/examples/approved-design/counters.md +253 -0
- package/docs/examples/approved-design/dependencies/august/0.19.0/io/contracts.md +395 -0
- package/docs/examples/approved-design/domain/app.md +165 -0
- package/docs/examples/approved-design/domain/export.md +83 -0
- package/docs/examples/approved-design/domain/models.md +80 -0
- package/docs/examples/approved-design/domain/numbers.md +248 -0
- package/docs/examples/approved-design/index.md +39 -0
- package/docs/examples/approved-design/main-yaml.md +24 -0
- package/docs/examples/approved-design/main.md +215 -0
- package/docs/examples/benchmark/index.md +33 -0
- package/docs/examples/benchmark/main-yaml.md +17 -0
- package/docs/examples/benchmark/main.md +117 -0
- package/docs/examples/cli-args/index.md +32 -0
- package/docs/examples/cli-args/main.md +107 -0
- package/docs/examples/collections/index.md +32 -0
- package/docs/examples/collections/main.md +118 -0
- package/docs/examples/collections-benchmark/index.md +34 -0
- package/docs/examples/collections-benchmark/main.md +115 -0
- package/docs/examples/cpu-benchmark/index.md +34 -0
- package/docs/examples/cpu-benchmark/main.md +90 -0
- package/docs/examples/developer-workflow/calculator.md +357 -0
- package/docs/examples/developer-workflow/dependencies/august/0.19.0/io/contracts.md +395 -0
- package/docs/examples/developer-workflow/index.md +37 -0
- package/docs/examples/developer-workflow/logging/console.md +124 -0
- package/docs/examples/developer-workflow/logging/export.md +70 -0
- package/docs/examples/developer-workflow/logging/logger.md +111 -0
- package/docs/examples/developer-workflow/main.md +172 -0
- package/docs/examples/drop/index.md +33 -0
- package/docs/examples/drop/main.md +85 -0
- package/docs/examples/drop/resource.md +95 -0
- package/docs/examples/errors/errors.md +85 -0
- package/docs/examples/errors/index.md +33 -0
- package/docs/examples/errors/main.md +92 -0
- package/docs/examples/ffi/index.md +33 -0
- package/docs/examples/ffi/main.md +75 -0
- package/docs/examples/ffi/native.md +93 -0
- package/docs/examples/generic-di/dependencies/august/0.19.0/io/contracts.md +395 -0
- package/docs/examples/generic-di/index.md +33 -0
- package/docs/examples/generic-di/main.md +111 -0
- package/docs/examples/generic-di/types.md +180 -0
- package/docs/examples/generics/index.md +33 -0
- package/docs/examples/generics/main.md +120 -0
- package/docs/examples/generics/types.md +189 -0
- package/docs/examples/hello/app/export.md +67 -0
- package/docs/examples/hello/app/greeter.md +190 -0
- package/docs/examples/hello/dependencies/august/0.19.0/io/contracts.md +395 -0
- package/docs/examples/hello/index.md +37 -0
- package/docs/examples/hello/logging/console.md +121 -0
- package/docs/examples/hello/logging/export.md +71 -0
- package/docs/examples/hello/logging/logger.md +120 -0
- package/docs/examples/hello/main.md +115 -0
- package/docs/examples/http-benchmark/index.md +35 -0
- package/docs/examples/http-benchmark/main.md +79 -0
- package/docs/examples/http-benchmark/routes.md +88 -0
- package/docs/examples/index.md +60 -0
- package/docs/examples/interceptors/app.md +250 -0
- package/docs/examples/interceptors/dependencies/august/0.19.0/io/contracts.md +395 -0
- package/docs/examples/interceptors/index.md +35 -0
- package/docs/examples/interceptors/interceptors.md +284 -0
- package/docs/examples/interceptors/logging.md +155 -0
- package/docs/examples/interceptors/main.md +162 -0
- package/docs/examples/json-benchmark/data.md +71 -0
- package/docs/examples/json-benchmark/dependencies/august/0.19.0/json/contracts.md +103 -0
- package/docs/examples/json-benchmark/index.md +35 -0
- package/docs/examples/json-benchmark/main.md +131 -0
- package/docs/examples/new-syntax/console.md +118 -0
- package/docs/examples/new-syntax/dependencies/august/0.19.0/io/contracts.md +395 -0
- package/docs/examples/new-syntax/greeter.md +145 -0
- package/docs/examples/new-syntax/index.md +36 -0
- package/docs/examples/new-syntax/logger.md +111 -0
- package/docs/examples/new-syntax/main.md +135 -0
- package/docs/examples/new-syntax/math.md +79 -0
- package/docs/examples/oidc-login/client/contracts.md +151 -0
- package/docs/examples/oidc-login/client/endpoints.md +263 -0
- package/docs/examples/oidc-login/client/export.md +107 -0
- package/docs/examples/oidc-login/client/login.md +515 -0
- package/docs/examples/oidc-login/client/logout.md +249 -0
- package/docs/examples/oidc-login/client/protocol.md +595 -0
- package/docs/examples/oidc-login/client/session.md +297 -0
- package/docs/examples/oidc-login/client/views.md +144 -0
- package/docs/examples/oidc-login/common/export.md +115 -0
- package/docs/examples/oidc-login/common/headers.md +162 -0
- package/docs/examples/oidc-login/common/keys.md +336 -0
- package/docs/examples/oidc-login/common/settings.md +116 -0
- package/docs/examples/oidc-login/common/views.md +103 -0
- package/docs/examples/oidc-login/dependencies/august/0.19.0/crypto/contracts.md +925 -0
- package/docs/examples/oidc-login/dependencies/august/0.19.0/crypto/jose.md +434 -0
- package/docs/examples/oidc-login/dependencies/august/0.19.0/json/contracts.md +103 -0
- package/docs/examples/oidc-login/dependencies/august/0.19.0/memory/store.md +374 -0
- package/docs/examples/oidc-login/dependencies/august/0.19.0/time/contracts.md +150 -0
- package/docs/examples/oidc-login/dependencies/august/0.19.0/web/contracts.md +532 -0
- package/docs/examples/oidc-login/index.md +57 -0
- package/docs/examples/oidc-login/main-yaml.md +28 -0
- package/docs/examples/oidc-login/main.md +283 -0
- package/docs/examples/oidc-login/provider/authorization.md +457 -0
- package/docs/examples/oidc-login/provider/contracts.md +267 -0
- package/docs/examples/oidc-login/provider/credentials.md +148 -0
- package/docs/examples/oidc-login/provider/discovery.md +215 -0
- package/docs/examples/oidc-login/provider/export.md +131 -0
- package/docs/examples/oidc-login/provider/token.md +364 -0
- package/docs/examples/oidc-login/provider/userinfo.md +228 -0
- package/docs/examples/oidc-login/provider/views.md +137 -0
- package/docs/examples/ownership/counter.md +140 -0
- package/docs/examples/ownership/index.md +33 -0
- package/docs/examples/ownership/main.md +90 -0
- package/docs/examples/ownership-transfer/dependencies/august/0.19.0/io/contracts.md +395 -0
- package/docs/examples/ownership-transfer/index.md +33 -0
- package/docs/examples/ownership-transfer/main.md +125 -0
- package/docs/examples/ownership-transfer/resource.md +150 -0
- package/docs/examples/packages-app/dependencies/packages/@example/aug-math/0.1.0/arithmetic.md +117 -0
- package/docs/examples/packages-app/index.md +34 -0
- package/docs/examples/packages-app/main-yaml.md +18 -0
- package/docs/examples/packages-app/main.md +80 -0
- package/docs/examples/packages-math/aug-package-json.md +24 -0
- package/docs/examples/packages-math/index.md +36 -0
- package/docs/examples/packages-math/package-json.md +25 -0
- package/docs/examples/packages-math/src/arithmetic.md +121 -0
- package/docs/examples/packages-math/src/export.md +63 -0
- package/docs/examples/startup-benchmark/index.md +34 -0
- package/docs/examples/startup-benchmark/main.md +68 -0
- package/docs/examples/visibility/counter.md +142 -0
- package/docs/examples/visibility/index.md +33 -0
- package/docs/examples/visibility/main.md +96 -0
- package/docs/examples.json +47 -0
- package/docs/getting-started.md +5 -0
- package/docs/grammar.md +136 -0
- package/docs/implementation-map.md +106 -0
- package/docs/index.md +46 -0
- package/docs/language-conformance.md +30 -0
- package/docs/language-constructs.md +1461 -0
- package/docs/language-design-audit.md +147 -0
- package/docs/maintaining-docs.md +43 -0
- package/docs/packages.md +184 -0
- package/docs/performance.md +535 -0
- package/docs/production-readiness.md +39 -0
- package/docs/reference.md +361 -0
- package/docs/release-review.md +23 -0
- package/docs/releasing.md +79 -0
- package/docs/roadmap.md +13 -0
- package/docs/specifications.md +86 -0
- package/docs/testing.md +120 -0
- package/docs/tooling.md +197 -0
- package/docs/web-implementation-plan.md +39 -0
- package/docs/web-library-gaps.md +27 -0
- package/docs/web.md +197 -0
- package/examples/approved-design/.aug-spec/august/0.19.0/io/contracts.aug +36 -0
- package/examples/approved-design/.aug-spec/august/0.19.0/io/contracts.aug.md +316 -0
- package/examples/approved-design/.aug-spec/manifest.json +14 -0
- package/examples/approved-design/counters.aug +22 -0
- package/examples/approved-design/counters.aug.md +177 -0
- package/examples/approved-design/domain/app.aug +12 -0
- package/examples/approved-design/domain/app.aug.md +97 -0
- package/examples/approved-design/domain/export.aug +5 -0
- package/examples/approved-design/domain/export.aug.md +25 -0
- package/examples/approved-design/domain/models.aug +2 -0
- package/examples/approved-design/domain/models.aug.md +30 -0
- package/examples/approved-design/domain/numbers.aug +29 -0
- package/examples/approved-design/domain/numbers.aug.md +141 -0
- package/examples/approved-design/main.aug +26 -0
- package/examples/approved-design/main.aug.md +108 -0
- package/examples/approved-design/main.yaml +8 -0
- package/examples/benchmark/.aug-spec/manifest.json +7 -0
- package/examples/benchmark/main.aug +17 -0
- package/examples/benchmark/main.aug.md +43 -0
- package/examples/benchmark/main.yaml +1 -0
- package/examples/cli-args/.aug-spec/manifest.json +7 -0
- package/examples/cli-args/main.aug +15 -0
- package/examples/cli-args/main.aug.md +38 -0
- package/examples/collections/.aug-spec/manifest.json +7 -0
- package/examples/collections/main.aug +18 -0
- package/examples/collections/main.aug.md +43 -0
- package/examples/developer-workflow/.aug-spec/august/0.19.0/io/contracts.aug +36 -0
- package/examples/developer-workflow/.aug-spec/august/0.19.0/io/contracts.aug.md +316 -0
- package/examples/developer-workflow/.aug-spec/manifest.json +13 -0
- package/examples/developer-workflow/calculator.aug +55 -0
- package/examples/developer-workflow/calculator.aug.md +228 -0
- package/examples/developer-workflow/logging/console.aug +8 -0
- package/examples/developer-workflow/logging/console.aug.md +67 -0
- package/examples/developer-workflow/logging/export.aug +2 -0
- package/examples/developer-workflow/logging/export.aug.md +19 -0
- package/examples/developer-workflow/logging/logger.aug +6 -0
- package/examples/developer-workflow/logging/logger.aug.md +57 -0
- package/examples/developer-workflow/main.aug +25 -0
- package/examples/developer-workflow/main.aug.md +79 -0
- package/examples/drop/.aug-spec/manifest.json +8 -0
- package/examples/drop/main.aug +3 -0
- package/examples/drop/main.aug.md +35 -0
- package/examples/drop/resource.aug +8 -0
- package/examples/drop/resource.aug.md +44 -0
- package/examples/errors/.aug-spec/manifest.json +8 -0
- package/examples/errors/errors.aug +6 -0
- package/examples/errors/errors.aug.md +33 -0
- package/examples/errors/main.aug +7 -0
- package/examples/errors/main.aug.md +36 -0
- package/examples/ffi/.aug-spec/manifest.json +8 -0
- package/examples/ffi/main.aug +2 -0
- package/examples/ffi/main.aug.md +27 -0
- package/examples/ffi/native.aug +6 -0
- package/examples/ffi/native.aug.md +43 -0
- package/examples/generic-di/.aug-spec/august/0.19.0/io/contracts.aug +36 -0
- package/examples/generic-di/.aug-spec/august/0.19.0/io/contracts.aug.md +316 -0
- package/examples/generic-di/.aug-spec/manifest.json +10 -0
- package/examples/generic-di/main.aug +9 -0
- package/examples/generic-di/main.aug.md +49 -0
- package/examples/generic-di/types.aug +17 -0
- package/examples/generic-di/types.aug.md +124 -0
- package/examples/generics/.aug-spec/manifest.json +8 -0
- package/examples/generics/main.aug +9 -0
- package/examples/generics/main.aug.md +58 -0
- package/examples/generics/types.aug +19 -0
- package/examples/generics/types.aug.md +132 -0
- package/examples/hello/.aug-spec/august/0.19.0/io/contracts.aug +36 -0
- package/examples/hello/.aug-spec/august/0.19.0/io/contracts.aug.md +316 -0
- package/examples/hello/.aug-spec/manifest.json +14 -0
- package/examples/hello/app/export.aug +1 -0
- package/examples/hello/app/export.aug.md +17 -0
- package/examples/hello/app/greeter.aug +22 -0
- package/examples/hello/app/greeter.aug.md +109 -0
- package/examples/hello/logging/console.aug +7 -0
- package/examples/hello/logging/console.aug.md +65 -0
- package/examples/hello/logging/export.aug +2 -0
- package/examples/hello/logging/export.aug.md +19 -0
- package/examples/hello/logging/logger.aug +9 -0
- package/examples/hello/logging/logger.aug.md +59 -0
- package/examples/hello/main.aug +9 -0
- package/examples/hello/main.aug.md +49 -0
- package/examples/interceptors/.aug-spec/august/0.19.0/io/contracts.aug +36 -0
- package/examples/interceptors/.aug-spec/august/0.19.0/io/contracts.aug.md +316 -0
- package/examples/interceptors/.aug-spec/manifest.json +12 -0
- package/examples/interceptors/app.aug +28 -0
- package/examples/interceptors/app.aug.md +162 -0
- package/examples/interceptors/interceptors.aug +40 -0
- package/examples/interceptors/interceptors.aug.md +180 -0
- package/examples/interceptors/logging.aug +12 -0
- package/examples/interceptors/logging.aug.md +96 -0
- package/examples/interceptors/main.aug +22 -0
- package/examples/interceptors/main.aug.md +76 -0
- package/examples/new-syntax/.aug-spec/august/0.19.0/io/contracts.aug +36 -0
- package/examples/new-syntax/.aug-spec/august/0.19.0/io/contracts.aug.md +316 -0
- package/examples/new-syntax/.aug-spec/manifest.json +13 -0
- package/examples/new-syntax/console.aug +7 -0
- package/examples/new-syntax/console.aug.md +63 -0
- package/examples/new-syntax/greeter.aug +10 -0
- package/examples/new-syntax/greeter.aug.md +89 -0
- package/examples/new-syntax/logger.aug +6 -0
- package/examples/new-syntax/logger.aug.md +57 -0
- package/examples/new-syntax/main.aug +12 -0
- package/examples/new-syntax/main.aug.md +64 -0
- package/examples/new-syntax/math.aug +3 -0
- package/examples/new-syntax/math.aug.md +29 -0
- package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/contracts.aug +73 -0
- package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/contracts.aug.md +791 -0
- package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/jose.aug +68 -0
- package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/jose.aug.md +266 -0
- package/examples/oidc-login/.aug-spec/august/0.19.0/json/contracts.aug +6 -0
- package/examples/oidc-login/.aug-spec/august/0.19.0/json/contracts.aug.md +55 -0
- package/examples/oidc-login/.aug-spec/august/0.19.0/memory/store.aug +45 -0
- package/examples/oidc-login/.aug-spec/august/0.19.0/memory/store.aug.md +250 -0
- package/examples/oidc-login/.aug-spec/august/0.19.0/time/contracts.aug +11 -0
- package/examples/oidc-login/.aug-spec/august/0.19.0/time/contracts.aug.md +96 -0
- package/examples/oidc-login/.aug-spec/august/0.19.0/web/contracts.aug +58 -0
- package/examples/oidc-login/.aug-spec/august/0.19.0/web/contracts.aug.md +420 -0
- package/examples/oidc-login/.aug-spec/manifest.json +40 -0
- package/examples/oidc-login/README.md +29 -0
- package/examples/oidc-login/client/contracts.aug +7 -0
- package/examples/oidc-login/client/contracts.aug.md +80 -0
- package/examples/oidc-login/client/endpoints.aug +21 -0
- package/examples/oidc-login/client/endpoints.aug.md +161 -0
- package/examples/oidc-login/client/export.aug +7 -0
- package/examples/oidc-login/client/export.aug.md +29 -0
- package/examples/oidc-login/client/login.aug +58 -0
- package/examples/oidc-login/client/login.aug.md +331 -0
- package/examples/oidc-login/client/logout.aug +18 -0
- package/examples/oidc-login/client/logout.aug.md +150 -0
- package/examples/oidc-login/client/protocol.aug +106 -0
- package/examples/oidc-login/client/protocol.aug.md +326 -0
- package/examples/oidc-login/client/session.aug +34 -0
- package/examples/oidc-login/client/session.aug.md +155 -0
- package/examples/oidc-login/client/views.aug +21 -0
- package/examples/oidc-login/client/views.aug.md +68 -0
- package/examples/oidc-login/common/export.aug +9 -0
- package/examples/oidc-login/common/export.aug.md +33 -0
- package/examples/oidc-login/common/headers.aug +11 -0
- package/examples/oidc-login/common/headers.aug.md +79 -0
- package/examples/oidc-login/common/keys.aug +37 -0
- package/examples/oidc-login/common/keys.aug.md +207 -0
- package/examples/oidc-login/common/settings.aug +4 -0
- package/examples/oidc-login/common/settings.aug.md +47 -0
- package/examples/oidc-login/common/views.aug +16 -0
- package/examples/oidc-login/common/views.aug.md +34 -0
- package/examples/oidc-login/main.aug +39 -0
- package/examples/oidc-login/main.aug.md +166 -0
- package/examples/oidc-login/main.yaml +12 -0
- package/examples/oidc-login/provider/authorization.aug +59 -0
- package/examples/oidc-login/provider/authorization.aug.md +264 -0
- package/examples/oidc-login/provider/contracts.aug +15 -0
- package/examples/oidc-login/provider/contracts.aug.md +193 -0
- package/examples/oidc-login/provider/credentials.aug +10 -0
- package/examples/oidc-login/provider/credentials.aug.md +64 -0
- package/examples/oidc-login/provider/discovery.aug +13 -0
- package/examples/oidc-login/provider/discovery.aug.md +133 -0
- package/examples/oidc-login/provider/export.aug +13 -0
- package/examples/oidc-login/provider/export.aug.md +41 -0
- package/examples/oidc-login/provider/token.aug +37 -0
- package/examples/oidc-login/provider/token.aug.md +223 -0
- package/examples/oidc-login/provider/userinfo.aug +26 -0
- package/examples/oidc-login/provider/userinfo.aug.md +104 -0
- package/examples/oidc-login/provider/views.aug +18 -0
- package/examples/oidc-login/provider/views.aug.md +63 -0
- package/examples/ownership/.aug-spec/manifest.json +8 -0
- package/examples/ownership/counter.aug +14 -0
- package/examples/ownership/counter.aug.md +85 -0
- package/examples/ownership/main.aug +4 -0
- package/examples/ownership/main.aug.md +38 -0
- package/examples/ownership-transfer/.aug-spec/august/0.19.0/io/contracts.aug +36 -0
- package/examples/ownership-transfer/.aug-spec/august/0.19.0/io/contracts.aug.md +316 -0
- package/examples/ownership-transfer/.aug-spec/manifest.json +10 -0
- package/examples/ownership-transfer/main.aug +9 -0
- package/examples/ownership-transfer/main.aug.md +63 -0
- package/examples/ownership-transfer/resource.aug +16 -0
- package/examples/ownership-transfer/resource.aug.md +89 -0
- package/examples/packages/README.md +15 -0
- package/examples/packages/app/.aug-spec/manifest.json +9 -0
- package/examples/packages/app/.aug-spec/packages/@example/aug-math/0.1.0/arithmetic.aug +9 -0
- package/examples/packages/app/.aug-spec/packages/@example/aug-math/0.1.0/arithmetic.aug.md +63 -0
- package/examples/packages/app/main.aug +2 -0
- package/examples/packages/app/main.aug.md +33 -0
- package/examples/packages/app/main.yaml +2 -0
- package/examples/packages/math/.aug-spec/manifest.json +8 -0
- package/examples/packages/math/README.md +3 -0
- package/examples/packages/math/aug-package.json +8 -0
- package/examples/packages/math/package.json +9 -0
- package/examples/packages/math/src/arithmetic.aug +8 -0
- package/examples/packages/math/src/arithmetic.aug.md +63 -0
- package/examples/packages/math/src/export.aug +1 -0
- package/examples/packages/math/src/export.aug.md +17 -0
- package/examples/visibility/.aug-spec/manifest.json +8 -0
- package/examples/visibility/counter.aug +14 -0
- package/examples/visibility/counter.aug.md +87 -0
- package/examples/visibility/main.aug +7 -0
- package/examples/visibility/main.aug.md +39 -0
- package/package.json +50 -0
- package/runtime/aug_crypto.c +121 -0
- package/runtime/aug_html.c +93 -0
- package/runtime/aug_http.c +829 -0
- package/runtime/aug_json.c +165 -0
- package/runtime/aug_runtime.c +792 -0
- package/runtime/aug_runtime.h +245 -0
- package/runtime/aug_tasks.c +172 -0
- package/runtime/aug_time.c +5 -0
- package/runtime/aug_values.c +80 -0
- package/scripts/bootstrap-native.mjs +121 -0
- package/scripts/native-dependencies.lock.json +65 -0
- package/scripts/native-home.mjs +11 -0
- package/src/actions.js +109 -0
- package/src/ast.js +19 -0
- package/src/builtins.js +93 -0
- package/src/checker.js +2896 -0
- package/src/cli.js +344 -0
- package/src/codegen.js +1159 -0
- package/src/config.js +149 -0
- package/src/continuation.js +110 -0
- package/src/di.js +24 -0
- package/src/documentation.js +27 -0
- package/src/editor.js +782 -0
- package/src/effects.js +29 -0
- package/src/fixes.js +222 -0
- package/src/formatter.js +296 -0
- package/src/freshness.js +154 -0
- package/src/help.js +212 -0
- package/src/html.js +27 -0
- package/src/http-policies.js +90 -0
- package/src/inference.js +16 -0
- package/src/interceptors.js +70 -0
- package/src/javadoc.js +67 -0
- package/src/lexer.js +199 -0
- package/src/libraries.js +31 -0
- package/src/lsp.js +180 -0
- package/src/native.js +144 -0
- package/src/navigation.js +162 -0
- package/src/openapi.js +220 -0
- package/src/ownership.js +232 -0
- package/src/package-manager.js +299 -0
- package/src/parser.js +1155 -0
- package/src/policies.js +130 -0
- package/src/project-init.js +19 -0
- package/src/project.js +292 -0
- package/src/schemas.js +62 -0
- package/src/semantic.js +255 -0
- package/src/spec.js +738 -0
- package/src/testing.js +186 -0
- package/src/types.js +10 -0
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "interceptors.aug · Function and constructor middleware"
|
|
3
|
+
generated: true
|
|
4
|
+
source: "examples/interceptors/interceptors.aug"
|
|
5
|
+
editLink: false
|
|
6
|
+
prev: false
|
|
7
|
+
next: false
|
|
8
|
+
outline: [2, 3]
|
|
9
|
+
pageClass: aug-example-page
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# `interceptors.aug`
|
|
13
|
+
|
|
14
|
+
[Function and constructor middleware](index.md) · Source and specification
|
|
15
|
+
|
|
16
|
+
::: details Files in this project
|
|
17
|
+
|
|
18
|
+
- [`main.aug`](main.md)
|
|
19
|
+
- [`app.aug`](app.md)
|
|
20
|
+
- [`interceptors.aug`](interceptors.md)
|
|
21
|
+
- [`logging.aug`](logging.md)
|
|
22
|
+
|
|
23
|
+
:::
|
|
24
|
+
|
|
25
|
+
::::: example-compare
|
|
26
|
+
|
|
27
|
+
:::: example-code
|
|
28
|
+
|
|
29
|
+
## Code {#code}
|
|
30
|
+
|
|
31
|
+
::: code-group
|
|
32
|
+
|
|
33
|
+
```aug [Indentation]
|
|
34
|
+
import Console from august.io
|
|
35
|
+
import Logger from logging
|
|
36
|
+
/** Raised when a numeric input fails validation. */
|
|
37
|
+
ValidationError(string message) implements Error:
|
|
38
|
+
pass
|
|
39
|
+
/**
|
|
40
|
+
* Logs before and after a successful call.
|
|
41
|
+
* Generic T is inferred from the annotated function or constructor.
|
|
42
|
+
* @param logger Shared application logger, injected for each fresh instance.
|
|
43
|
+
*/
|
|
44
|
+
interceptor Audit<T>(resolve Logger logger):
|
|
45
|
+
/** Wrap a call without changing its result. */
|
|
46
|
+
around(resolve Console console) returns T uses Console.write:
|
|
47
|
+
logger.log(message="before")
|
|
48
|
+
T result = next()
|
|
49
|
+
logger.log(message="after")
|
|
50
|
+
return result
|
|
51
|
+
/** Rejects negative numbers before the target executes. */
|
|
52
|
+
interceptor Positive<T>():
|
|
53
|
+
/**
|
|
54
|
+
* @param y The target argument selected by a mapping such as y=x.
|
|
55
|
+
* @throws ValidationError When the selected value is negative.
|
|
56
|
+
*/
|
|
57
|
+
around(int y) returns T unless ValidationError:
|
|
58
|
+
if y < 0:
|
|
59
|
+
throw ValidationError(message="value must be nonnegative")
|
|
60
|
+
return next()
|
|
61
|
+
/** Adds one to the selected input before forwarding the call. */
|
|
62
|
+
interceptor AddOne<T>():
|
|
63
|
+
/** @param y The input to increment. */
|
|
64
|
+
around(int y) returns T:
|
|
65
|
+
return next(y=y + 1)
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
```aug [Braces]
|
|
69
|
+
import Console from august.io
|
|
70
|
+
import Logger from logging
|
|
71
|
+
/** Raised when a numeric input fails validation. */
|
|
72
|
+
ValidationError(string message) implements Error {
|
|
73
|
+
pass
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Logs before and after a successful call.
|
|
77
|
+
* Generic T is inferred from the annotated function or constructor.
|
|
78
|
+
* @param logger Shared application logger, injected for each fresh instance.
|
|
79
|
+
*/
|
|
80
|
+
interceptor Audit<T>(resolve Logger logger) {
|
|
81
|
+
/** Wrap a call without changing its result. */
|
|
82
|
+
around(resolve Console console) returns T uses Console.write {
|
|
83
|
+
logger.log(message="before")
|
|
84
|
+
T result = next()
|
|
85
|
+
logger.log(message="after")
|
|
86
|
+
return result
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/** Rejects negative numbers before the target executes. */
|
|
90
|
+
interceptor Positive<T>() {
|
|
91
|
+
/**
|
|
92
|
+
* @param y The target argument selected by a mapping such as y=x.
|
|
93
|
+
* @throws ValidationError When the selected value is negative.
|
|
94
|
+
*/
|
|
95
|
+
around(int y) returns T unless ValidationError {
|
|
96
|
+
if y < 0 {
|
|
97
|
+
throw ValidationError(message="value must be nonnegative")
|
|
98
|
+
}
|
|
99
|
+
return next()
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/** Adds one to the selected input before forwarding the call. */
|
|
103
|
+
interceptor AddOne<T>() {
|
|
104
|
+
/** @param y The input to increment. */
|
|
105
|
+
around(int y) returns T {
|
|
106
|
+
return next(y=y + 1)
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
:::
|
|
112
|
+
|
|
113
|
+
::::
|
|
114
|
+
|
|
115
|
+
:::: example-spec
|
|
116
|
+
|
|
117
|
+
## Compiled specification {#specification}
|
|
118
|
+
|
|
119
|
+
August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
|
|
120
|
+
|
|
121
|
+
### In this file
|
|
122
|
+
|
|
123
|
+
- [`ValidationError`](interceptors.md#symbol-ValidationError) is a class implementing `Error`.
|
|
124
|
+
- [`Audit`](interceptors.md#symbol-Audit) is an interceptor.
|
|
125
|
+
- [`Positive`](interceptors.md#symbol-Positive) is an interceptor.
|
|
126
|
+
- [`AddOne`](interceptors.md#symbol-AddOne) is an interceptor.
|
|
127
|
+
|
|
128
|
+
### `ValidationError` {#symbol-ValidationError}
|
|
129
|
+
|
|
130
|
+
[source](interceptors.md#code)
|
|
131
|
+
|
|
132
|
+
Behavioral class.
|
|
133
|
+
|
|
134
|
+
Satisfies `Error`.
|
|
135
|
+
|
|
136
|
+
**Author documentation**
|
|
137
|
+
|
|
138
|
+
Raised when a numeric input fails validation.
|
|
139
|
+
|
|
140
|
+
**Inputs**
|
|
141
|
+
|
|
142
|
+
- `message` (`string`) — required labeled input — stored as `message` and read-only after initialization.
|
|
143
|
+
|
|
144
|
+
### `Audit` {#symbol-Audit}
|
|
145
|
+
|
|
146
|
+
[source](interceptors.md#code)
|
|
147
|
+
|
|
148
|
+
Function or constructor middleware.
|
|
149
|
+
|
|
150
|
+
Type parameters: `T`.
|
|
151
|
+
|
|
152
|
+
**Author documentation**
|
|
153
|
+
|
|
154
|
+
Logs before and after a successful call.
|
|
155
|
+
Generic T is inferred from the annotated function or constructor.
|
|
156
|
+
|
|
157
|
+
**Parameters**
|
|
158
|
+
- `logger`: Shared application logger, injected for each fresh instance.
|
|
159
|
+
|
|
160
|
+
**Inputs**
|
|
161
|
+
|
|
162
|
+
- `logger` ([`Logger`](logging.md#symbol-Logger)) — injected; callers omit it — stored as `logger` and read-only after initialization.
|
|
163
|
+
|
|
164
|
+
Create a fresh interceptor for each invocation. Its around operation can delegate once, change selected inputs, or short-circuit with a compatible result or failure.
|
|
165
|
+
|
|
166
|
+
#### `Audit.around` {#symbol-Audit.around}
|
|
167
|
+
|
|
168
|
+
[source](interceptors.md#code)
|
|
169
|
+
|
|
170
|
+
**Inputs**
|
|
171
|
+
|
|
172
|
+
- `console` ([`Console`](dependencies/august/0.19.0/io/contracts.md#symbol-Console)) — injected; callers omit it.
|
|
173
|
+
|
|
174
|
+
Returns: `T`.
|
|
175
|
+
|
|
176
|
+
Capabilities: [`Console.write`](dependencies/august/0.19.0/io/contracts.md#symbol-Console.write).
|
|
177
|
+
|
|
178
|
+
**What it does**
|
|
179
|
+
|
|
180
|
+
- Call [`Logger.log`](logging.md#symbol-Logger.log) on `logger` with `message` = `"before"`; inject `console` from `console`.
|
|
181
|
+
- Set `result` of type `T` to call `next`.
|
|
182
|
+
- Call [`Logger.log`](logging.md#symbol-Logger.log) on `logger` with `message` = `"after"`; inject `console` from `console`.
|
|
183
|
+
- Return `result`.
|
|
184
|
+
|
|
185
|
+
**Author documentation**
|
|
186
|
+
|
|
187
|
+
Wrap a call without changing its result.
|
|
188
|
+
|
|
189
|
+
### `Positive` {#symbol-Positive}
|
|
190
|
+
|
|
191
|
+
[source](interceptors.md#code)
|
|
192
|
+
|
|
193
|
+
Function or constructor middleware.
|
|
194
|
+
|
|
195
|
+
Type parameters: `T`.
|
|
196
|
+
|
|
197
|
+
**Author documentation**
|
|
198
|
+
|
|
199
|
+
Rejects negative numbers before the target executes.
|
|
200
|
+
|
|
201
|
+
Create a fresh interceptor for each invocation. Its around operation can delegate once, change selected inputs, or short-circuit with a compatible result or failure.
|
|
202
|
+
|
|
203
|
+
#### `Positive.around` {#symbol-Positive.around}
|
|
204
|
+
|
|
205
|
+
[source](interceptors.md#code)
|
|
206
|
+
|
|
207
|
+
**Inputs**
|
|
208
|
+
|
|
209
|
+
- `y` (`int`) — required labeled input.
|
|
210
|
+
|
|
211
|
+
Returns: `T`.
|
|
212
|
+
|
|
213
|
+
Can fail with `ValidationError`. Callers must catch or propagate these errors.
|
|
214
|
+
|
|
215
|
+
**What it does**
|
|
216
|
+
|
|
217
|
+
- If `y` is less than `0`:
|
|
218
|
+
- Fail with call [`ValidationError`](interceptors.md#symbol-ValidationError) with `message` = `"value must be nonnegative"`. Transfer control to a matching catch or propagate the failure.
|
|
219
|
+
- Return call `next`.
|
|
220
|
+
|
|
221
|
+
**Author documentation**
|
|
222
|
+
|
|
223
|
+
**Parameters**
|
|
224
|
+
- `y`: The target argument selected by a mapping such as y=x.
|
|
225
|
+
|
|
226
|
+
**Throws**
|
|
227
|
+
- `ValidationError`: When the selected value is negative.
|
|
228
|
+
|
|
229
|
+
### `AddOne` {#symbol-AddOne}
|
|
230
|
+
|
|
231
|
+
[source](interceptors.md#code)
|
|
232
|
+
|
|
233
|
+
Function or constructor middleware.
|
|
234
|
+
|
|
235
|
+
Type parameters: `T`.
|
|
236
|
+
|
|
237
|
+
**Author documentation**
|
|
238
|
+
|
|
239
|
+
Adds one to the selected input before forwarding the call.
|
|
240
|
+
|
|
241
|
+
Create a fresh interceptor for each invocation. Its around operation can delegate once, change selected inputs, or short-circuit with a compatible result or failure.
|
|
242
|
+
|
|
243
|
+
#### `AddOne.around` {#symbol-AddOne.around}
|
|
244
|
+
|
|
245
|
+
[source](interceptors.md#code)
|
|
246
|
+
|
|
247
|
+
**Inputs**
|
|
248
|
+
|
|
249
|
+
- `y` (`int`) — required labeled input.
|
|
250
|
+
|
|
251
|
+
Returns: `T`.
|
|
252
|
+
|
|
253
|
+
**What it does**
|
|
254
|
+
|
|
255
|
+
- Return call `next` with `y` = (`y` plus `1`).
|
|
256
|
+
|
|
257
|
+
**Author documentation**
|
|
258
|
+
|
|
259
|
+
**Parameters**
|
|
260
|
+
- `y`: The input to increment.
|
|
261
|
+
|
|
262
|
+
### Dependencies used by this file
|
|
263
|
+
|
|
264
|
+
Only referenced types and operations appear here. Each name links to its complete specification.
|
|
265
|
+
|
|
266
|
+
#### [`Console`](dependencies/august/0.19.0/io/contracts.md#symbol-Console)
|
|
267
|
+
|
|
268
|
+
Capability interface from `august.io`.
|
|
269
|
+
|
|
270
|
+
- [`Console.write`](dependencies/august/0.19.0/io/contracts.md#symbol-Console.write)<`T`> (`value`: `T`) → `void`.
|
|
271
|
+
|
|
272
|
+
#### [`Logger`](logging.md#symbol-Logger)
|
|
273
|
+
|
|
274
|
+
Interface from `logging`.
|
|
275
|
+
|
|
276
|
+
- [`Logger.log`](logging.md#symbol-Logger.log) (`message`: `string`) → `void`; 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).
|
|
277
|
+
|
|
278
|
+
### Shared language rules
|
|
279
|
+
|
|
280
|
+
See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
|
|
281
|
+
|
|
282
|
+
::::
|
|
283
|
+
|
|
284
|
+
:::::
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "logging.aug · Function and constructor middleware"
|
|
3
|
+
generated: true
|
|
4
|
+
source: "examples/interceptors/logging.aug"
|
|
5
|
+
editLink: false
|
|
6
|
+
prev: false
|
|
7
|
+
next: false
|
|
8
|
+
outline: [2, 3]
|
|
9
|
+
pageClass: aug-example-page
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# `logging.aug`
|
|
13
|
+
|
|
14
|
+
[Function and constructor middleware](index.md) · Source and specification
|
|
15
|
+
|
|
16
|
+
::: details Files in this project
|
|
17
|
+
|
|
18
|
+
- [`main.aug`](main.md)
|
|
19
|
+
- [`app.aug`](app.md)
|
|
20
|
+
- [`interceptors.aug`](interceptors.md)
|
|
21
|
+
- [`logging.aug`](logging.md)
|
|
22
|
+
|
|
23
|
+
:::
|
|
24
|
+
|
|
25
|
+
::::: example-compare
|
|
26
|
+
|
|
27
|
+
:::: example-code
|
|
28
|
+
|
|
29
|
+
## Code {#code}
|
|
30
|
+
|
|
31
|
+
::: code-group
|
|
32
|
+
|
|
33
|
+
```aug [Indentation]
|
|
34
|
+
import Console from august.io
|
|
35
|
+
/** Writes a message to the application log. */
|
|
36
|
+
interface Logger:
|
|
37
|
+
/** @param message Text to display. */
|
|
38
|
+
log(resolve Console console, string message) uses Console.write
|
|
39
|
+
/** Console logger shared by interceptor instances and the application. */
|
|
40
|
+
ConsoleLogger() implements Logger:
|
|
41
|
+
log(resolve Console console, string message) uses Console.write:
|
|
42
|
+
console.write(value=message)
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
```aug [Braces]
|
|
46
|
+
import Console from august.io
|
|
47
|
+
/** Writes a message to the application log. */
|
|
48
|
+
interface Logger {
|
|
49
|
+
/** @param message Text to display. */
|
|
50
|
+
log(resolve Console console, string message) uses Console.write
|
|
51
|
+
}
|
|
52
|
+
/** Console logger shared by interceptor instances and the application. */
|
|
53
|
+
ConsoleLogger() implements Logger {
|
|
54
|
+
log(resolve Console console, string message) uses Console.write {
|
|
55
|
+
console.write(value=message)
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
:::
|
|
61
|
+
|
|
62
|
+
::::
|
|
63
|
+
|
|
64
|
+
:::: example-spec
|
|
65
|
+
|
|
66
|
+
## Compiled specification {#specification}
|
|
67
|
+
|
|
68
|
+
August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
|
|
69
|
+
|
|
70
|
+
### In this file
|
|
71
|
+
|
|
72
|
+
- [`Logger`](logging.md#symbol-Logger) is an interface.
|
|
73
|
+
- [`ConsoleLogger`](logging.md#symbol-ConsoleLogger) is a class implementing `Logger`.
|
|
74
|
+
|
|
75
|
+
### `Logger` {#symbol-Logger}
|
|
76
|
+
|
|
77
|
+
[source](logging.md#code)
|
|
78
|
+
|
|
79
|
+
Interface.
|
|
80
|
+
|
|
81
|
+
**Author documentation**
|
|
82
|
+
|
|
83
|
+
Writes a message to the application log.
|
|
84
|
+
|
|
85
|
+
#### `Logger.log` {#symbol-Logger.log}
|
|
86
|
+
|
|
87
|
+
[source](logging.md#code)
|
|
88
|
+
|
|
89
|
+
**Inputs**
|
|
90
|
+
|
|
91
|
+
- `console` ([`Console`](dependencies/august/0.19.0/io/contracts.md#symbol-Console)) — injected; callers omit it.
|
|
92
|
+
- `message` (`string`) — required labeled input.
|
|
93
|
+
|
|
94
|
+
Returns: no value.
|
|
95
|
+
|
|
96
|
+
Capabilities: [`Console.write`](dependencies/august/0.19.0/io/contracts.md#symbol-Console.write).
|
|
97
|
+
|
|
98
|
+
Interface contract. A selected implementation supplies the behavior.
|
|
99
|
+
|
|
100
|
+
**Author documentation**
|
|
101
|
+
|
|
102
|
+
**Parameters**
|
|
103
|
+
- `message`: Text to display.
|
|
104
|
+
|
|
105
|
+
### `ConsoleLogger` {#symbol-ConsoleLogger}
|
|
106
|
+
|
|
107
|
+
[source](logging.md#code)
|
|
108
|
+
|
|
109
|
+
Behavioral class.
|
|
110
|
+
|
|
111
|
+
Satisfies [`Logger`](logging.md#symbol-Logger).
|
|
112
|
+
|
|
113
|
+
**Author documentation**
|
|
114
|
+
|
|
115
|
+
Console logger shared by interceptor instances and the application.
|
|
116
|
+
|
|
117
|
+
#### `ConsoleLogger.log` {#symbol-ConsoleLogger.log}
|
|
118
|
+
|
|
119
|
+
[source](logging.md#code)
|
|
120
|
+
|
|
121
|
+
**Inputs**
|
|
122
|
+
|
|
123
|
+
- `console` ([`Console`](dependencies/august/0.19.0/io/contracts.md#symbol-Console)) — injected; callers omit it.
|
|
124
|
+
- `message` (`string`) — required labeled input.
|
|
125
|
+
|
|
126
|
+
Returns: no value.
|
|
127
|
+
|
|
128
|
+
Capabilities: [`Console.write`](dependencies/august/0.19.0/io/contracts.md#symbol-Console.write).
|
|
129
|
+
|
|
130
|
+
**What it does**
|
|
131
|
+
|
|
132
|
+
- Call [`Console.write`](dependencies/august/0.19.0/io/contracts.md#symbol-Console.write) on `console` with `value` = `message`.
|
|
133
|
+
|
|
134
|
+
**Author documentation**
|
|
135
|
+
|
|
136
|
+
**Parameters**
|
|
137
|
+
- `message`: Text to display.
|
|
138
|
+
|
|
139
|
+
### Dependencies used by this file
|
|
140
|
+
|
|
141
|
+
Only referenced types and operations appear here. Each name links to its complete specification.
|
|
142
|
+
|
|
143
|
+
#### [`Console`](dependencies/august/0.19.0/io/contracts.md#symbol-Console)
|
|
144
|
+
|
|
145
|
+
Capability interface from `august.io`.
|
|
146
|
+
|
|
147
|
+
- [`Console.write`](dependencies/august/0.19.0/io/contracts.md#symbol-Console.write)<`T`> (`value`: `T`) → `void`.
|
|
148
|
+
|
|
149
|
+
### Shared language rules
|
|
150
|
+
|
|
151
|
+
See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
|
|
152
|
+
|
|
153
|
+
::::
|
|
154
|
+
|
|
155
|
+
:::::
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "main.aug · Function and constructor middleware"
|
|
3
|
+
generated: true
|
|
4
|
+
source: "examples/interceptors/main.aug"
|
|
5
|
+
editLink: false
|
|
6
|
+
prev: false
|
|
7
|
+
next: false
|
|
8
|
+
outline: [2, 3]
|
|
9
|
+
pageClass: aug-example-page
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# `main.aug`
|
|
13
|
+
|
|
14
|
+
[Function and constructor middleware](index.md) · Source and specification
|
|
15
|
+
|
|
16
|
+
::: details Files in this project
|
|
17
|
+
|
|
18
|
+
- [`main.aug`](main.md)
|
|
19
|
+
- [`app.aug`](app.md)
|
|
20
|
+
- [`interceptors.aug`](interceptors.md)
|
|
21
|
+
- [`logging.aug`](logging.md)
|
|
22
|
+
|
|
23
|
+
:::
|
|
24
|
+
|
|
25
|
+
::::: example-compare
|
|
26
|
+
|
|
27
|
+
:::: example-code
|
|
28
|
+
|
|
29
|
+
## Code {#code}
|
|
30
|
+
|
|
31
|
+
::: code-group
|
|
32
|
+
|
|
33
|
+
```aug [Indentation]
|
|
34
|
+
import Console and SystemConsole from august.io
|
|
35
|
+
implement Console with SystemConsole
|
|
36
|
+
import Logger from logging
|
|
37
|
+
import ConsoleLogger from logging
|
|
38
|
+
import Greeter from app
|
|
39
|
+
import describe from app
|
|
40
|
+
import ValidationError from interceptors
|
|
41
|
+
implement Logger with ConsoleLogger
|
|
42
|
+
try:
|
|
43
|
+
print(value=describe(label="value", x=6))
|
|
44
|
+
catch ValidationError error:
|
|
45
|
+
print(value="rejected")
|
|
46
|
+
greeter = Greeter(name="AugScript")
|
|
47
|
+
print(value=greeter.greet())
|
|
48
|
+
try:
|
|
49
|
+
describe(x=-1, label="invalid")
|
|
50
|
+
catch ValidationError error:
|
|
51
|
+
print(value="rejected")
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
```aug [Braces]
|
|
55
|
+
import Console and SystemConsole from august.io
|
|
56
|
+
implement Console with SystemConsole
|
|
57
|
+
import Logger from logging
|
|
58
|
+
import ConsoleLogger from logging
|
|
59
|
+
import Greeter from app
|
|
60
|
+
import describe from app
|
|
61
|
+
import ValidationError from interceptors
|
|
62
|
+
implement Logger with ConsoleLogger
|
|
63
|
+
try {
|
|
64
|
+
print(value=describe(label="value", x=6))
|
|
65
|
+
}
|
|
66
|
+
catch ValidationError error {
|
|
67
|
+
print(value="rejected")
|
|
68
|
+
}
|
|
69
|
+
greeter = Greeter(name="AugScript")
|
|
70
|
+
print(value=greeter.greet())
|
|
71
|
+
try {
|
|
72
|
+
describe(x=-1, label="invalid")
|
|
73
|
+
}
|
|
74
|
+
catch ValidationError error {
|
|
75
|
+
print(value="rejected")
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
:::
|
|
80
|
+
|
|
81
|
+
::::
|
|
82
|
+
|
|
83
|
+
:::: example-spec
|
|
84
|
+
|
|
85
|
+
## Compiled specification {#specification}
|
|
86
|
+
|
|
87
|
+
August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
|
|
88
|
+
|
|
89
|
+
### In this file
|
|
90
|
+
|
|
91
|
+
- Register 2 dependency providers before startup.
|
|
92
|
+
- Run startup operations with checked error recovery.
|
|
93
|
+
- Run 2 other startup steps in source order.
|
|
94
|
+
|
|
95
|
+
### Dependency providers
|
|
96
|
+
|
|
97
|
+
Register these providers before startup. Their declaration order does not set initialization order; shared instances initialize in dependency order.
|
|
98
|
+
|
|
99
|
+
- Provide [`SystemConsole`](dependencies/august/0.19.0/io/contracts.md#symbol-SystemConsole) when `Console` is requested. Reuse one instance.
|
|
100
|
+
- Provide [`ConsoleLogger`](logging.md#symbol-ConsoleLogger) when `Logger` is requested. Reuse one instance.
|
|
101
|
+
|
|
102
|
+
### Startup, in source order
|
|
103
|
+
|
|
104
|
+
- Try these operations:
|
|
105
|
+
- Call `print` with `value` = call [`describe`](app.md#symbol-describe) with `label` = `"value"`; `x` = `6`; inject `logger` from `Logger`, `console` from `Console`.
|
|
106
|
+
- If they fail with [`ValidationError`](interceptors.md#symbol-ValidationError), name the failure `error` and recover:
|
|
107
|
+
- Call `print` with `value` = `"rejected"`.
|
|
108
|
+
- Set `greeter` to call [`Greeter`](app.md#symbol-Greeter) with `name` = `"AugScript"`; inject `_logger` from `Logger`.
|
|
109
|
+
- Call `print` with `value` = call [`Greeter.greet`](app.md#symbol-Greeter.greet) on `greeter`; inject `logger` from `Logger`, `console` from `Console`.
|
|
110
|
+
- Try these operations:
|
|
111
|
+
- Call [`describe`](app.md#symbol-describe) with `x` = `-1`; `label` = `"invalid"`; inject `logger` from `Logger`, `console` from `Console`.
|
|
112
|
+
- If they fail with [`ValidationError`](interceptors.md#symbol-ValidationError), name the failure `error` and recover:
|
|
113
|
+
- Call `print` with `value` = `"rejected"`.
|
|
114
|
+
|
|
115
|
+
### Dependencies used by this file
|
|
116
|
+
|
|
117
|
+
Only referenced types and operations appear here. Each name links to its complete specification.
|
|
118
|
+
|
|
119
|
+
#### [`SystemConsole`](dependencies/august/0.19.0/io/contracts.md#symbol-SystemConsole)
|
|
120
|
+
|
|
121
|
+
Class from `august.io`.
|
|
122
|
+
|
|
123
|
+
Used as a type or provider.
|
|
124
|
+
|
|
125
|
+
#### [`Greeter`](app.md#symbol-Greeter)
|
|
126
|
+
|
|
127
|
+
Class from `app`.
|
|
128
|
+
|
|
129
|
+
- Construct with `name`: `string` → [`Greeter`](app.md#symbol-Greeter).
|
|
130
|
+
- [`Greeter.greet`](app.md#symbol-Greeter.greet) (no caller inputs) → `string`; inject `logger`: [`Logger`](logging.md#symbol-Logger), `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).
|
|
131
|
+
|
|
132
|
+
#### [`describe`](app.md#symbol-describe)
|
|
133
|
+
|
|
134
|
+
Function from `app`.
|
|
135
|
+
|
|
136
|
+
- [`describe`](app.md#symbol-describe) (`x`: `int`, `label`: `string`) → `string`; inject `logger`: [`Logger`](logging.md#symbol-Logger), `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); can fail with `ValidationError`.
|
|
137
|
+
|
|
138
|
+
#### [`ValidationError`](interceptors.md#symbol-ValidationError)
|
|
139
|
+
|
|
140
|
+
Class from `interceptors`.
|
|
141
|
+
|
|
142
|
+
Used as a type or provider.
|
|
143
|
+
|
|
144
|
+
#### [`ConsoleLogger`](logging.md#symbol-ConsoleLogger)
|
|
145
|
+
|
|
146
|
+
Class from `logging`.
|
|
147
|
+
|
|
148
|
+
Used as a type or provider.
|
|
149
|
+
|
|
150
|
+
### Built-in operations used by this file
|
|
151
|
+
|
|
152
|
+
- `print` (`value`: `any`) → `void`: Composition and test output. Other callables receive Console and declare uses console.write.
|
|
153
|
+
|
|
154
|
+
[Full built-in reference](https://greenpandastudios.github.io/augscript/language-constructs).
|
|
155
|
+
|
|
156
|
+
### Shared language rules
|
|
157
|
+
|
|
158
|
+
See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
|
|
159
|
+
|
|
160
|
+
::::
|
|
161
|
+
|
|
162
|
+
:::::
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "data.aug · JSON benchmark"
|
|
3
|
+
generated: true
|
|
4
|
+
source: "benchmarks/json/data.aug"
|
|
5
|
+
editLink: false
|
|
6
|
+
prev: false
|
|
7
|
+
next: false
|
|
8
|
+
outline: [2, 3]
|
|
9
|
+
pageClass: aug-example-page
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# `data.aug`
|
|
13
|
+
|
|
14
|
+
[JSON benchmark](index.md) · Source and specification
|
|
15
|
+
|
|
16
|
+
::: details Files in this project
|
|
17
|
+
|
|
18
|
+
- [`main.aug`](main.md)
|
|
19
|
+
- [`data.aug`](data.md)
|
|
20
|
+
|
|
21
|
+
:::
|
|
22
|
+
|
|
23
|
+
::::: example-compare
|
|
24
|
+
|
|
25
|
+
:::: example-code
|
|
26
|
+
|
|
27
|
+
## Code {#code}
|
|
28
|
+
|
|
29
|
+
::: code-group
|
|
30
|
+
|
|
31
|
+
```aug [Indentation]
|
|
32
|
+
record Payload(int id, string message, List<int> values)
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
```aug [Braces]
|
|
36
|
+
record Payload(int id, string message, List<int> values)
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
:::
|
|
40
|
+
|
|
41
|
+
::::
|
|
42
|
+
|
|
43
|
+
:::: example-spec
|
|
44
|
+
|
|
45
|
+
## Compiled specification {#specification}
|
|
46
|
+
|
|
47
|
+
August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
|
|
48
|
+
|
|
49
|
+
### In this file
|
|
50
|
+
|
|
51
|
+
- [`Payload`](data.md#symbol-Payload) is an immutable record.
|
|
52
|
+
|
|
53
|
+
### `Payload` {#symbol-Payload}
|
|
54
|
+
|
|
55
|
+
[source](data.md#code)
|
|
56
|
+
|
|
57
|
+
Immutable record.
|
|
58
|
+
|
|
59
|
+
**Inputs**
|
|
60
|
+
|
|
61
|
+
- `id` (`int`) — required labeled input — stored as `id` and read-only after initialization.
|
|
62
|
+
- `message` (`string`) — required labeled input — stored as `message` and read-only after initialization.
|
|
63
|
+
- `values` (`List<int>`) — required labeled input — stored as `values` and read-only after initialization.
|
|
64
|
+
|
|
65
|
+
### Shared language rules
|
|
66
|
+
|
|
67
|
+
See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
|
|
68
|
+
|
|
69
|
+
::::
|
|
70
|
+
|
|
71
|
+
:::::
|