edgeway 0.2.0 → 0.3.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +21 -0
- data/README.md +602 -204
- data/js/cloudflare-kv.js +47 -0
- data/js/cloudflare-ratelimit.js +31 -0
- data/js/cloudflare-test-database.js +112 -0
- data/js/cloudflare-test-runner.js +76 -0
- data/js/cloudflare.js +25 -4
- data/js/fetch.js +113 -0
- data/js/jspi.js +32 -0
- data/js/jwt.js +5 -39
- data/js/runtime.js +42 -5
- data/lib/edgeway/application.rb +16 -7
- data/lib/edgeway/cache/limits.rb +8 -0
- data/lib/edgeway/cache/memory_store.rb +24 -0
- data/lib/edgeway/cache/null_store.rb +13 -0
- data/lib/edgeway/cache/store.rb +189 -0
- data/lib/edgeway/cache.rb +13 -0
- data/lib/edgeway/cli/build/cache_config.rb +108 -0
- data/lib/edgeway/cli/build/database_config.rb +4 -0
- data/lib/edgeway/cli/build/js_files.rb +30 -0
- data/lib/edgeway/cli/build.rb +17 -10
- data/lib/edgeway/cli/cloudflare_test/wasm_test_cli.rb +35 -0
- data/lib/edgeway/cli/cloudflare_test.rb +120 -0
- data/lib/edgeway/cli/test.rb +25 -9
- data/lib/edgeway/cli/toolchain.rb +5 -0
- data/lib/edgeway/cli.rb +2 -0
- data/lib/edgeway/controller/base.rb +22 -3
- data/lib/edgeway/controller/caching.rb +140 -0
- data/lib/edgeway/controller/callbacks.rb +5 -1
- data/lib/edgeway/controller/rate_limiting.rb +145 -0
- data/lib/edgeway/db/query_stats.rb +2 -6
- data/lib/edgeway/errors.rb +21 -0
- data/lib/edgeway/generators/app/templates/.github/workflows/ci.yml.tt +3 -3
- data/lib/edgeway/generators/app/templates/README.md.tt +3 -1
- data/lib/edgeway/generators/app/templates/bin/setup.tt +2 -3
- data/lib/edgeway/generators/app/templates/config/cache.yml +22 -0
- data/lib/edgeway/generators/app/templates/config/database.yml +8 -2
- data/lib/edgeway/generators/app/templates/public/.assetsignore +1 -0
- data/lib/edgeway/generators/app/templates/wrangler.toml.tt +34 -2
- data/lib/edgeway/http/client.rb +80 -0
- data/lib/edgeway/http/request.rb +5 -0
- data/lib/edgeway/http/stub_transport.rb +38 -0
- data/lib/edgeway/logger.rb +33 -5
- data/lib/edgeway/rate_limit/limiter.rb +9 -0
- data/lib/edgeway/rate_limit/null_limiter.rb +9 -0
- data/lib/edgeway/rate_limit/stub_limiter.rb +24 -0
- data/lib/edgeway/rate_limit.rb +2 -0
- data/lib/edgeway/server.rb +3 -2
- data/lib/edgeway/service/cloudflare/d1.rb +6 -21
- data/lib/edgeway/service/cloudflare/jwt.rb +3 -15
- data/lib/edgeway/service/cloudflare/kv.rb +45 -0
- data/lib/edgeway/service/cloudflare/kv_store.rb +58 -0
- data/lib/edgeway/service/cloudflare/rate_limit.rb +27 -0
- data/lib/edgeway/service/cloudflare/rate_limiter.rb +33 -0
- data/lib/edgeway/service/cloudflare/test_databases.rb +65 -0
- data/lib/edgeway/service/fetch.rb +26 -0
- data/lib/edgeway/service/import_result.rb +24 -0
- data/lib/edgeway/test/sqlite_databases.rb +18 -0
- data/lib/edgeway/test.rb +72 -33
- data/lib/edgeway/version.rb +1 -1
- data/lib/edgeway.rb +6 -0
- metadata +34 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 191edfc2697fdff2f0571a3e9ee1cb27b0fbebc885ecfabbfa643e9418533c37
|
|
4
|
+
data.tar.gz: 1c22ffe618aa3f3b51c28033708cc98a40ecd167c50ab7a4a2d159c613e43965
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 71b96facf9a650bb524bbc0baf2b9caf28c94e92365daa88bb36844f7087c5d350b4c9876ef95e4f4964aa971cf0b60b3712c7ab8bf1a21228cf0ad893f05b4f
|
|
7
|
+
data.tar.gz: ef01cf54fb275025d8f1d7d447a623f150072e399bf235891cac5fb1d6bb44511d75e76b8aafb754e1500f58123e11b5c7ad6b06851a1407ac23a98fcd7138c1
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,27 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## v0.3.0
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- Rate limiting: `rate_limit` in controllers, over a Cloudflare Rate Limiting binding. A request over the limit gets a 429.
|
|
10
|
+
The limit and period are set in `[[ratelimits]]` of `wrangler.toml` ([#22](https://github.com/y-yagi/edgeway/pull/22)).
|
|
11
|
+
- Cache store: `Edgeway.cache` (`read`, `write`, `fetch`, `delete`, `exist?`) over Workers KV, memory, or nothing,
|
|
12
|
+
picked per environment in `config/cache.yml` ([#20](https://github.com/y-yagi/edgeway/pull/20)).
|
|
13
|
+
- HTTP caching helpers in controllers: `stale?`, `fresh_when`, `expires_in` and `no_store` ([#19](https://github.com/y-yagi/edgeway/pull/19)).
|
|
14
|
+
- Outbound HTTP: `Edgeway::HTTP.get`, `post`, `put`, `patch` and `delete` ([#18](https://github.com/y-yagi/edgeway/pull/18)).
|
|
15
|
+
- Test helpers in `Edgeway::UnitTest`: `stub_http`, `stub_http_error`, `http_requests`, `stub_rate_limit` and `rate_limit_checks` ([#18](https://github.com/y-yagi/edgeway/pull/18), [#22](https://github.com/y-yagi/edgeway/pull/22)).
|
|
16
|
+
- Static assets: apps made by `edgeway new` serve `public/` as Workers Static Assets ([#16](https://github.com/y-yagi/edgeway/pull/16)).
|
|
17
|
+
- Structured logging: `Edgeway.logger` has `debug`, `info`, `warn` and `error`, and `LOG_LEVEL` sets the lowest level written.
|
|
18
|
+
Workers Logs records one entry per log line with its fields, and new apps enable `[observability]` ([#17](https://github.com/y-yagi/edgeway/pull/17)).
|
|
19
|
+
|
|
20
|
+
### Changed
|
|
21
|
+
|
|
22
|
+
- `Edgeway.logger` writes JSON lines instead of `[edgeway] ...` text. A custom logger set with `Edgeway.logger=` must take `(message, fields = {})` ([#17](https://github.com/y-yagi/edgeway/pull/17)).
|
|
23
|
+
- `edgeway test` runs the tests on a local D1 when the `test:` section of `config/database.yml` has `adapter: d1` (needs Node.js 24 or later and wrangler).
|
|
24
|
+
Apps made by `edgeway new` use it ([#15](https://github.com/y-yagi/edgeway/pull/15)).
|
|
25
|
+
|
|
5
26
|
## v0.2.0
|
|
6
27
|
|
|
7
28
|
### Added
|