feat: release Dever 0.1.5 with direct workers and long transactions
This commit is contained in:
1 parent
89629c2197
commit
a900d7e8db
153 files changed
+3676
-3708
No files matched your search
@@ -88,7 +88,7 @@ Test authority comes from compiler-assigned source origin, never a user-controll
|
||||
|
||||
For `module/<component>/<domain>/api.dever`, the route is `/<component>/<domain>/<action>`; recursive `api/<scopes>/<file>.dever` inserts scopes and file before action. `get/post/put/delete` bind same-domain App functions and inherit their wire-safe input/output shapes; GET/DELETE read query, POST/PUT read a unique-key JSON object. `rest` generates Model CRUD and can use checked owner/create/replace/search field bindings. Each successful request receives JSON `{code:0,message:"ok",data:<value>}` with HTTP 200; standard API errors map to fixed 400/401/403/404/409/429 envelopes and unknown failures become a redacted 500. A top-level POST `Upload` switches the statically known route to bounded multipart parsing and affine ownership. No environment-variable config or implicit database fallback is introduced.
|
||||
|
||||
Response Header/Cookie mutations are staged in request-local pending metadata. Generated dispatch serializes the response value, commits the database transaction, and only then promotes pending metadata for the server response; serialization, business, commit or rollback failure discards it. Cookie issue/clear uses the configured name, lifetime and attributes. Credential-changing requests require Origin and Host to exactly match the site's configured external HTTP/HTTPS scheme, host and effective port; a missing or cross-origin value is rejected without trusting forwarding headers. A write API call graph containing password verification or hashing does not receive an entry-wide transaction. Every reachable write must instead cross an explicit short `transaction` function, and password crypto is forbidden inside that transaction. Other write entries retain their generated transaction.
|
||||
Response Header/Cookie mutations are staged in request-local pending metadata. Generated dispatch publishes metadata only after successful business execution and response serialization; failure discards pending metadata, rolls back ordinary entry transactions and cannot undo already committed long-entry App transactions. Cookie issue/clear uses the configured name, lifetime and attributes. Credential-changing requests require Origin and Host to exactly match the site's configured external HTTP/HTTPS scheme, host and effective port; a missing or cross-origin value is rejected without trusting forwarding headers. Ordinary writing HTTP, CMD and Job entries retain their automatic transaction through response encoding. The contextual `long` prefix on an entry explicitly disables only its entry-wide transaction and requires `transaction` functions around business writes and enqueue. Both backends obey the entry flag, never an inferred effect-based opt-out. `public long` preserves independent access control; `long` changes neither timeout nor scheduling. Generated REST keeps its own write boundary. External Worker, HTTP, file-transfer and password operations cannot occur inside a transaction. Database binding groups include ordinary automatic roots and explicit transactions, but not an entire long-entry orchestration spanning independent stages.
|
||||
|
||||
## 4. Validation & Error Matrix
|
||||
|
||||
@@ -145,7 +145,7 @@ Sensitivity belongs to the cached type graph in `types.rs`: Secret and private M
|
||||
| User Job provider/site/reference, compiled permission, component or current role fails | Block with a redacted identity/component category; do not enter the business transaction |
|
||||
| Credential-changing request has missing or non-matching Origin | JSON authentication error; no Cookie/Header is committed |
|
||||
| Response serialization, business transaction or commit fails after metadata was staged | Discard staged response metadata |
|
||||
| Password crypto API reaches a write outside an explicit transaction, or a transaction reaches password crypto | C014 before native generation |
|
||||
| A long entry reaches a Model write or enqueue outside an explicit transaction, or an automatic/explicit transaction reaches external I/O, a Worker, wait/concurrency or password crypto | C014 before native generation |
|
||||
|
||||
## 5. Good / Base / Bad Cases
|
||||
|
||||
|
||||
Reference in new issue
Block a user