@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,250 @@
|
|
|
1
|
+
<!-- Generated by aug spec. Edit the August source, then regenerate. -->
|
|
2
|
+
|
|
3
|
+
# `store.aug` specification
|
|
4
|
+
|
|
5
|
+
August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
|
|
6
|
+
|
|
7
|
+
## In this file
|
|
8
|
+
|
|
9
|
+
- [`StoreFull`](store.aug.md#symbol-StoreFull) is a class implementing `Error`.
|
|
10
|
+
- [`_Entry`](store.aug.md#symbol-_Entry) is an immutable record.
|
|
11
|
+
- [`ExpiringStore`](store.aug.md#symbol-ExpiringStore) is a capability interface.
|
|
12
|
+
- [`MemoryStore`](store.aug.md#symbol-MemoryStore) is a class implementing `ExpiringStore<T>`.
|
|
13
|
+
|
|
14
|
+
<a id="symbol-StoreFull"></a>
|
|
15
|
+
|
|
16
|
+
## `StoreFull`
|
|
17
|
+
|
|
18
|
+
[source](store.aug#L3)
|
|
19
|
+
|
|
20
|
+
Behavioral class.
|
|
21
|
+
|
|
22
|
+
Satisfies `Error`.
|
|
23
|
+
|
|
24
|
+
**Author documentation**
|
|
25
|
+
|
|
26
|
+
The bounded store could not accept another live entry.
|
|
27
|
+
|
|
28
|
+
<a id="symbol-ExpiringStore"></a>
|
|
29
|
+
|
|
30
|
+
## `ExpiringStore`
|
|
31
|
+
|
|
32
|
+
[source](store.aug#L8)
|
|
33
|
+
|
|
34
|
+
Capability interface.
|
|
35
|
+
|
|
36
|
+
Type parameters: `T` must satisfy `Data`.
|
|
37
|
+
|
|
38
|
+
**Author documentation**
|
|
39
|
+
|
|
40
|
+
A bounded, expiring capability for immutable values. Each generic DI binding has its own table.
|
|
41
|
+
|
|
42
|
+
<a id="symbol-ExpiringStore.put"></a>
|
|
43
|
+
|
|
44
|
+
### `ExpiringStore.put`
|
|
45
|
+
|
|
46
|
+
[source](store.aug#L10)
|
|
47
|
+
|
|
48
|
+
**Inputs**
|
|
49
|
+
|
|
50
|
+
- `key` (`string`) — required labeled input.
|
|
51
|
+
- `value` (`T`) — required labeled input.
|
|
52
|
+
- `expires` (`int`) — required labeled input.
|
|
53
|
+
- `now` (`int`) — required labeled input.
|
|
54
|
+
|
|
55
|
+
Returns: no value.
|
|
56
|
+
|
|
57
|
+
Capabilities: [`ExpiringStore.put`](store.aug.md#symbol-ExpiringStore.put).
|
|
58
|
+
|
|
59
|
+
Can fail with `StoreFull`. Callers must catch or propagate these errors.
|
|
60
|
+
|
|
61
|
+
Interface contract. A selected implementation supplies the behavior.
|
|
62
|
+
|
|
63
|
+
**Author documentation**
|
|
64
|
+
|
|
65
|
+
Remove expired entries, then store at most 512 live entries. Time is supplied by the caller.
|
|
66
|
+
|
|
67
|
+
<a id="symbol-ExpiringStore.take"></a>
|
|
68
|
+
|
|
69
|
+
### `ExpiringStore.take`
|
|
70
|
+
|
|
71
|
+
[source](store.aug#L12)
|
|
72
|
+
|
|
73
|
+
**Inputs**
|
|
74
|
+
|
|
75
|
+
- `key` (`string`) — required labeled input.
|
|
76
|
+
- `now` (`int`) — required labeled input.
|
|
77
|
+
|
|
78
|
+
Returns: `optional T`.
|
|
79
|
+
|
|
80
|
+
Capabilities: [`ExpiringStore.take`](store.aug.md#symbol-ExpiringStore.take).
|
|
81
|
+
|
|
82
|
+
Interface contract. A selected implementation supplies the behavior.
|
|
83
|
+
|
|
84
|
+
**Author documentation**
|
|
85
|
+
|
|
86
|
+
Atomically remove a value. Expired or absent entries return null.
|
|
87
|
+
|
|
88
|
+
<a id="symbol-ExpiringStore.get"></a>
|
|
89
|
+
|
|
90
|
+
### `ExpiringStore.get`
|
|
91
|
+
|
|
92
|
+
[source](store.aug#L14)
|
|
93
|
+
|
|
94
|
+
**Inputs**
|
|
95
|
+
|
|
96
|
+
- `key` (`string`) — required labeled input.
|
|
97
|
+
- `now` (`int`) — required labeled input.
|
|
98
|
+
|
|
99
|
+
Returns: `optional T`.
|
|
100
|
+
|
|
101
|
+
Capabilities: [`ExpiringStore.get`](store.aug.md#symbol-ExpiringStore.get).
|
|
102
|
+
|
|
103
|
+
Interface contract. A selected implementation supplies the behavior.
|
|
104
|
+
|
|
105
|
+
**Author documentation**
|
|
106
|
+
|
|
107
|
+
Read a live value without consuming it.
|
|
108
|
+
|
|
109
|
+
<a id="symbol-MemoryStore"></a>
|
|
110
|
+
|
|
111
|
+
## `MemoryStore`
|
|
112
|
+
|
|
113
|
+
[source](store.aug#L17)
|
|
114
|
+
|
|
115
|
+
Behavioral class.
|
|
116
|
+
|
|
117
|
+
Type parameters: `T` must satisfy `Data`.
|
|
118
|
+
|
|
119
|
+
Satisfies [`ExpiringStore`](store.aug.md#symbol-ExpiringStore).
|
|
120
|
+
|
|
121
|
+
**Author documentation**
|
|
122
|
+
|
|
123
|
+
A synchronized table with short critical sections and no I/O while locked.
|
|
124
|
+
|
|
125
|
+
**Field initialization**
|
|
126
|
+
|
|
127
|
+
- Initialize `_entries` of type `Shared<Map<string,_Entry<T>>>` to call `Shared` with `value` = an empty map from `string` to [`_Entry<T>`](store.aug.md#symbol-_Entry). Read-only storage, private to this class.
|
|
128
|
+
|
|
129
|
+
<a id="symbol-MemoryStore.put"></a>
|
|
130
|
+
|
|
131
|
+
### `MemoryStore.put`
|
|
132
|
+
|
|
133
|
+
[source](store.aug#L19)
|
|
134
|
+
|
|
135
|
+
**Inputs**
|
|
136
|
+
|
|
137
|
+
- `key` (`string`) — required labeled input.
|
|
138
|
+
- `value` (`T`) — required labeled input.
|
|
139
|
+
- `expires` (`int`) — required labeled input.
|
|
140
|
+
- `now` (`int`) — required labeled input.
|
|
141
|
+
|
|
142
|
+
Returns: no value.
|
|
143
|
+
|
|
144
|
+
Capabilities: [`ExpiringStore<T>.put`](store.aug.md#symbol-ExpiringStore.put).
|
|
145
|
+
|
|
146
|
+
Can fail with `StoreFull`. Callers must catch or propagate these errors.
|
|
147
|
+
|
|
148
|
+
**What it does**
|
|
149
|
+
|
|
150
|
+
- Set `entry` to call [`_Entry`](store.aug.md#symbol-_Entry) with type arguments `T` with `value` = `value`; `expires` = `expires`.
|
|
151
|
+
- Lock `_entries`, expose its mutable value as `entries`, and release the lock on every exit:
|
|
152
|
+
- For each `name` and `saved` in a snapshot of `entries`, in iteration order:
|
|
153
|
+
- If `expires` of `saved` is at most `now`:
|
|
154
|
+
- Call `take` on `entries` with `key` = `name`.
|
|
155
|
+
- If (call `length` on `entries` is at least `512`) and not (call `contains` on `entries` with `key` = `key`):
|
|
156
|
+
- Fail with call [`StoreFull`](store.aug.md#symbol-StoreFull). Transfer control to a matching catch or propagate the failure.
|
|
157
|
+
- Call `set` on `entries` with `key` = `key`; `value` = `entry`.
|
|
158
|
+
|
|
159
|
+
**Author documentation**
|
|
160
|
+
|
|
161
|
+
Remove expired entries, then store at most 512 live entries. Time is supplied by the caller.
|
|
162
|
+
|
|
163
|
+
<a id="symbol-MemoryStore.take"></a>
|
|
164
|
+
|
|
165
|
+
### `MemoryStore.take`
|
|
166
|
+
|
|
167
|
+
[source](store.aug#L28)
|
|
168
|
+
|
|
169
|
+
**Inputs**
|
|
170
|
+
|
|
171
|
+
- `key` (`string`) — required labeled input.
|
|
172
|
+
- `now` (`int`) — required labeled input.
|
|
173
|
+
|
|
174
|
+
Returns: `optional T`.
|
|
175
|
+
|
|
176
|
+
Capabilities: [`ExpiringStore<T>.take`](store.aug.md#symbol-ExpiringStore.take).
|
|
177
|
+
|
|
178
|
+
**What it does**
|
|
179
|
+
|
|
180
|
+
- Lock `_entries`, expose its mutable value as `entries`, and release the lock on every exit:
|
|
181
|
+
- Select the matching case for call `take` on `entries` with `key` = `key`:
|
|
182
|
+
- A null value, including omitted optional input:
|
|
183
|
+
- Return null.
|
|
184
|
+
- A present, non-null value, named `saved`:
|
|
185
|
+
- If `expires` of `saved` is at most `now`:
|
|
186
|
+
- Return null.
|
|
187
|
+
- Return `value` of `saved`.
|
|
188
|
+
|
|
189
|
+
**Author documentation**
|
|
190
|
+
|
|
191
|
+
Atomically remove a value. Expired or absent entries return null.
|
|
192
|
+
|
|
193
|
+
<a id="symbol-MemoryStore.get"></a>
|
|
194
|
+
|
|
195
|
+
### `MemoryStore.get`
|
|
196
|
+
|
|
197
|
+
[source](store.aug#L37)
|
|
198
|
+
|
|
199
|
+
**Inputs**
|
|
200
|
+
|
|
201
|
+
- `key` (`string`) — required labeled input.
|
|
202
|
+
- `now` (`int`) — required labeled input.
|
|
203
|
+
|
|
204
|
+
Returns: `optional T`.
|
|
205
|
+
|
|
206
|
+
Capabilities: [`ExpiringStore<T>.get`](store.aug.md#symbol-ExpiringStore.get).
|
|
207
|
+
|
|
208
|
+
**What it does**
|
|
209
|
+
|
|
210
|
+
- Lock `_entries`, expose its mutable value as `entries`, and release the lock on every exit:
|
|
211
|
+
- Select the matching case for call `get` on `entries` with `key` = `key`:
|
|
212
|
+
- A null value, including omitted optional input:
|
|
213
|
+
- Return null.
|
|
214
|
+
- A present, non-null value, named `saved`:
|
|
215
|
+
- If `expires` of `saved` is at most `now`:
|
|
216
|
+
- Return null.
|
|
217
|
+
- Return `value` of `saved`.
|
|
218
|
+
|
|
219
|
+
**Author documentation**
|
|
220
|
+
|
|
221
|
+
Read a live value without consuming it.
|
|
222
|
+
|
|
223
|
+
<a id="symbol-_Entry"></a>
|
|
224
|
+
|
|
225
|
+
## `_Entry`
|
|
226
|
+
|
|
227
|
+
[source](store.aug#L5)
|
|
228
|
+
|
|
229
|
+
Immutable record, private to this file.
|
|
230
|
+
|
|
231
|
+
Type parameters: `T` must satisfy `Data`.
|
|
232
|
+
|
|
233
|
+
**Inputs**
|
|
234
|
+
|
|
235
|
+
- `value` (`T`) — required labeled input — stored as `value` and read-only after initialization.
|
|
236
|
+
- `expires` (`int`) — required labeled input — stored as `expires` and read-only after initialization.
|
|
237
|
+
|
|
238
|
+
## Built-in operations used by this file
|
|
239
|
+
|
|
240
|
+
- `Map<string, _Entry<T>>.contains` (`key`: `string`) → `bool`: Check for a key, including entries whose value is null.
|
|
241
|
+
- `Map<string, _Entry<T>>.get` (`key`: `string`) → `optional _Entry<T>`: Read a value by key; an absent key returns null. contains distinguishes an absent key from a stored null.
|
|
242
|
+
- `Map<string, _Entry<T>>.length` (no inputs) → `int`: Read the number of elements.
|
|
243
|
+
- `Map<string, _Entry<T>>.set` (`key`: `string`, `value`: `_Entry<T>`) → `void`: Insert or replace an entry with exclusive mutable access. Changes the receiver.
|
|
244
|
+
- `Map<string, _Entry<T>>.take` (`key`: `string`) → `optional _Entry<T>`: Remove and return an entry under exclusive access. An absent key returns null. Changes the receiver.
|
|
245
|
+
|
|
246
|
+
[Full built-in reference](https://greenpandastudios.github.io/augscript/language-constructs).
|
|
247
|
+
|
|
248
|
+
## Shared language rules
|
|
249
|
+
|
|
250
|
+
See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// Generated by aug spec. This is a copy of the installed dependency source.
|
|
2
|
+
/** An explicit clock dependency makes time-based behavior replaceable in tests. */
|
|
3
|
+
capability Clock:
|
|
4
|
+
/** Read whole Unix seconds in UTC. */
|
|
5
|
+
now() returns int uses Clock.now unless TimeError
|
|
6
|
+
extern C value _aug_time_now() returns int uses Clock.now unless TimeError
|
|
7
|
+
/** Operating-system wall clock. */
|
|
8
|
+
SystemClock() implements Clock:
|
|
9
|
+
now() returns int unless TimeError:
|
|
10
|
+
unsafe:
|
|
11
|
+
return _aug_time_now()
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
<!-- Generated by aug spec. Edit the August source, then regenerate. -->
|
|
2
|
+
|
|
3
|
+
# `contracts.aug` specification
|
|
4
|
+
|
|
5
|
+
August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
|
|
6
|
+
|
|
7
|
+
## In this file
|
|
8
|
+
|
|
9
|
+
- [`Clock`](contracts.aug.md#symbol-Clock) is a capability interface.
|
|
10
|
+
- [`_aug_time_now`](contracts.aug.md#symbol-_aug_time_now) is a function returning `int`.
|
|
11
|
+
- [`SystemClock`](contracts.aug.md#symbol-SystemClock) is a class implementing `Clock`.
|
|
12
|
+
|
|
13
|
+
<a id="symbol-Clock"></a>
|
|
14
|
+
|
|
15
|
+
## `Clock`
|
|
16
|
+
|
|
17
|
+
[source](contracts.aug#L3)
|
|
18
|
+
|
|
19
|
+
Capability interface.
|
|
20
|
+
|
|
21
|
+
**Author documentation**
|
|
22
|
+
|
|
23
|
+
An explicit clock dependency makes time-based behavior replaceable in tests.
|
|
24
|
+
|
|
25
|
+
<a id="symbol-Clock.now"></a>
|
|
26
|
+
|
|
27
|
+
### `Clock.now`
|
|
28
|
+
|
|
29
|
+
[source](contracts.aug#L5)
|
|
30
|
+
|
|
31
|
+
Returns: `int`.
|
|
32
|
+
|
|
33
|
+
Capabilities: [`Clock.now`](contracts.aug.md#symbol-Clock.now).
|
|
34
|
+
|
|
35
|
+
Can fail with `TimeError`. Callers must catch or propagate these errors.
|
|
36
|
+
|
|
37
|
+
Interface contract. A selected implementation supplies the behavior.
|
|
38
|
+
|
|
39
|
+
**Author documentation**
|
|
40
|
+
|
|
41
|
+
Read whole Unix seconds in UTC.
|
|
42
|
+
|
|
43
|
+
<a id="symbol-SystemClock"></a>
|
|
44
|
+
|
|
45
|
+
## `SystemClock`
|
|
46
|
+
|
|
47
|
+
[source](contracts.aug#L8)
|
|
48
|
+
|
|
49
|
+
Behavioral class.
|
|
50
|
+
|
|
51
|
+
Satisfies [`Clock`](contracts.aug.md#symbol-Clock).
|
|
52
|
+
|
|
53
|
+
**Author documentation**
|
|
54
|
+
|
|
55
|
+
Operating-system wall clock.
|
|
56
|
+
|
|
57
|
+
<a id="symbol-SystemClock.now"></a>
|
|
58
|
+
|
|
59
|
+
### `SystemClock.now`
|
|
60
|
+
|
|
61
|
+
[source](contracts.aug#L9)
|
|
62
|
+
|
|
63
|
+
Returns: `int`.
|
|
64
|
+
|
|
65
|
+
Capabilities: [`Clock.now`](contracts.aug.md#symbol-Clock.now).
|
|
66
|
+
|
|
67
|
+
Can fail with `TimeError`. Callers must catch or propagate these errors.
|
|
68
|
+
|
|
69
|
+
**What it does**
|
|
70
|
+
|
|
71
|
+
- Enter an unsafe boundary. Native calls use their declared contracts; their foreign implementation is outside this specification:
|
|
72
|
+
- Return call [`_aug_time_now`](contracts.aug.md#symbol-_aug_time_now).
|
|
73
|
+
|
|
74
|
+
**Author documentation**
|
|
75
|
+
|
|
76
|
+
Read whole Unix seconds in UTC.
|
|
77
|
+
|
|
78
|
+
<a id="symbol-_aug_time_now"></a>
|
|
79
|
+
|
|
80
|
+
## `_aug_time_now`
|
|
81
|
+
|
|
82
|
+
[source](contracts.aug#L6)
|
|
83
|
+
|
|
84
|
+
Private to its defining scope.
|
|
85
|
+
|
|
86
|
+
Returns: `int`.
|
|
87
|
+
|
|
88
|
+
Capabilities: [`Clock.now`](contracts.aug.md#symbol-Clock.now).
|
|
89
|
+
|
|
90
|
+
Can fail with `TimeError`. Callers must catch or propagate these errors.
|
|
91
|
+
|
|
92
|
+
Native C operation. Its declared inputs, result, effects, and errors are the visible contract. The C implementation is outside this specification.
|
|
93
|
+
|
|
94
|
+
## Shared language rules
|
|
95
|
+
|
|
96
|
+
See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// Generated by aug spec. This is a copy of the installed dependency source.
|
|
2
|
+
/** Immutable identity returned by an explicitly injected authentication adapter. */
|
|
3
|
+
record Principal(string subject, List<string> permissions)
|
|
4
|
+
|
|
5
|
+
/** Verify the request's credentials. null means unauthenticated; adapter failures raise HttpError. */
|
|
6
|
+
capability Authentication:
|
|
7
|
+
authenticate(HttpRequest request) returns optional Principal uses Authentication.authenticate unless HttpError
|
|
8
|
+
|
|
9
|
+
/** Decide whether a verified identity has one named permission. */
|
|
10
|
+
capability Authorization:
|
|
11
|
+
authorize(Principal identity, string permission) returns bool uses Authorization.authorize unless HttpError
|
|
12
|
+
|
|
13
|
+
/** Observe a completed HTTP exchange, including failures and disconnects. */
|
|
14
|
+
capability RequestLogger:
|
|
15
|
+
complete(string method, string path, int status, int milliseconds) uses RequestLogger.complete
|
|
16
|
+
|
|
17
|
+
extern C value _aug_http_log(string method, string path, int status, int milliseconds) uses RequestLogger.complete
|
|
18
|
+
/** Emit escaped JSON request metadata to standard error. Credentials and query strings are excluded. */
|
|
19
|
+
WebRequestLogger() implements RequestLogger:
|
|
20
|
+
complete(string method, string path, int status, int milliseconds):
|
|
21
|
+
unsafe:
|
|
22
|
+
_aug_http_log(method, path, status, milliseconds)
|
|
23
|
+
|
|
24
|
+
/** An explicit outbound network capability. TLS verifies the peer and redirects are returned to the caller. */
|
|
25
|
+
capability HttpClient:
|
|
26
|
+
/** Perform an HTTP request with bounded bytes. Inside a task, waiting suspends the task's C stack. */
|
|
27
|
+
request(string method, string url, optional Headers headers, optional Bytes body) returns HttpResponse<Bytes> uses HttpClient.request unless HttpError
|
|
28
|
+
|
|
29
|
+
extern C value _aug_http_request(string method, string url, optional Headers headers, optional Bytes body) returns HttpResponse<Bytes> uses HttpClient.request unless HttpError
|
|
30
|
+
|
|
31
|
+
/** Native libwebsockets transport. No socket is opened by construction. */
|
|
32
|
+
WebHttpClient() implements HttpClient:
|
|
33
|
+
request(string method, string url, optional Headers headers, optional Bytes body) returns HttpResponse<Bytes> unless HttpError:
|
|
34
|
+
unsafe:
|
|
35
|
+
return _aug_http_request(method=method, url=url, headers=headers, body=body)
|
|
36
|
+
|
|
37
|
+
/** Return a redirect with an explicit status. Location is checked as a header value. */
|
|
38
|
+
redirect(string location, optional int status) returns HttpResponse<string> unless HttpError:
|
|
39
|
+
code = 303
|
|
40
|
+
match status:
|
|
41
|
+
when null:
|
|
42
|
+
pass
|
|
43
|
+
when some value:
|
|
44
|
+
code = value
|
|
45
|
+
headers = Headers().with(name="location", value=location)
|
|
46
|
+
return HttpResponse(body="", status=code, headers=headers)
|
|
47
|
+
|
|
48
|
+
extern C value pure _aug_http_url_encode(string input) returns string unless HttpError
|
|
49
|
+
/** Encode a UTF-8 value as one URL query or form component using RFC 3986 unreserved characters. */
|
|
50
|
+
urlEncode(string input) returns string unless HttpError:
|
|
51
|
+
unsafe:
|
|
52
|
+
return _aug_http_url_encode(input)
|
|
53
|
+
|
|
54
|
+
extern C value pure _aug_http_cookie(string name, string value, string path, int maxAge, bool secure) returns Headers unless HttpError
|
|
55
|
+
/** 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. */
|
|
56
|
+
cookie(string name, string value, string path, int maxAge, bool secure) returns Headers unless HttpError:
|
|
57
|
+
unsafe:
|
|
58
|
+
return _aug_http_cookie(name, value, path, maxAge, secure)
|