diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d22876..722f704 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased] +## [0.3.1] - 2026-11-03 + +### Changed +- Each dialect's driver (`pg`, `mysql2`, `mssql`, `better-sqlite3`) is an optional peer dependency: you pass the driver object in, so npm no longer installs one you did not choose. A dialect works with any object offering the driver's API, the SQLite one with sql.js in a browser for example. +- The docs use a to-do app as their example schema. + ## [0.3.0] - 2026-11-02 ### Added diff --git a/docs/errors.md b/docs/errors.md index 7771b1b..496942a 100644 --- a/docs/errors.md +++ b/docs/errors.md @@ -13,7 +13,7 @@ A message never contains SQL or database text. | Code | Status | Means | |---|---|---| | `not_found` | 404 | no such resource, or no such row, or a row you may not see | -| `method_not_allowed` | 405 | the resource does not allow this method, or a procedure was not called with POST | +| `method_not_allowed` | 405 | the resource does not allow this method, or a procedure was called with another method than its own | | `unknown_column` | 400 | the column does not exist or is hidden | | `unknown_relation` | 400 | the relation does not exist | | `unknown_operator` | 400 | the operator is not one of `eq neq gt gte lt lte in like ilike match imatch is ov cs cd` | diff --git a/docs/writes.md b/docs/writes.md index 0863c89..0634252 100644 --- a/docs/writes.md +++ b/docs/writes.md @@ -162,7 +162,7 @@ POST /steps A procedure calls a database function at a path you choose. A `{name}` in the path passes that segment as the argument of the same name; the body's keys pass the others. Arguments are checked by name and type, and one with a default may be left out. -A procedure is a POST unless declared `method: 'GET'`. A GET procedure takes its arguments from the query string (`/search?q=vpn&limit=10`), each once, and runs in a read-only transaction: use it for a function without side effects. +A procedure is a POST unless declared `method: 'GET'`. A GET procedure takes its arguments from the query string (`/search?q=milk&limit=10`), each once, and runs in a read-only transaction: use it for a function without side effects. ```http POST /todos/3/complete @@ -174,7 +174,7 @@ POST /todos/3/complete 3 ``` -A function returning a set answers an array of its rows. Mail relay belongs to Ada since the update above. +A function returning a set answers an array of its rows. File taxes belongs to Ada since the update above. ```http POST /tags/home/todos diff --git a/package-lock.json b/package-lock.json index ff68ada..6b25369 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3314,7 +3314,7 @@ }, "packages/core": { "name": "@crudy/restloom", - "version": "0.3.0", + "version": "0.3.1", "license": "Apache-2.0", "devDependencies": { "@types/node": "^24.0.0", @@ -3326,7 +3326,7 @@ }, "packages/express": { "name": "@crudy/restloom-express", - "version": "0.3.0", + "version": "0.3.1", "license": "Apache-2.0", "dependencies": { "@crudy/restloom": "^0.3.0" @@ -3346,7 +3346,7 @@ }, "packages/fastify": { "name": "@crudy/restloom-fastify", - "version": "0.3.0", + "version": "0.3.1", "license": "Apache-2.0", "dependencies": { "@crudy/restloom": "^0.3.0" @@ -3365,7 +3365,7 @@ }, "packages/mssql": { "name": "@crudy/restloom-mssql", - "version": "0.3.0", + "version": "0.3.1", "license": "Apache-2.0", "dependencies": { "@crudy/restloom": "^0.3.0" @@ -3381,11 +3381,16 @@ }, "peerDependencies": { "mssql": "^12.0.0" + }, + "peerDependenciesMeta": { + "mssql": { + "optional": true + } } }, "packages/mysql": { "name": "@crudy/restloom-mysql", - "version": "0.3.0", + "version": "0.3.1", "license": "Apache-2.0", "dependencies": { "@crudy/restloom": "^0.3.0" @@ -3400,11 +3405,16 @@ }, "peerDependencies": { "mysql2": "^3.11.0" + }, + "peerDependenciesMeta": { + "mysql2": { + "optional": true + } } }, "packages/postgres": { "name": "@crudy/restloom-postgres", - "version": "0.3.0", + "version": "0.3.1", "license": "Apache-2.0", "dependencies": { "@crudy/restloom": "^0.3.0" @@ -3420,11 +3430,16 @@ }, "peerDependencies": { "pg": "^8.11.0" + }, + "peerDependenciesMeta": { + "pg": { + "optional": true + } } }, "packages/sqlite": { "name": "@crudy/restloom-sqlite", - "version": "0.3.0", + "version": "0.3.1", "license": "Apache-2.0", "dependencies": { "@crudy/restloom": "^0.3.0" @@ -3440,6 +3455,11 @@ }, "peerDependencies": { "better-sqlite3": ">=12" + }, + "peerDependenciesMeta": { + "better-sqlite3": { + "optional": true + } } } } diff --git a/packages/core/package.json b/packages/core/package.json index 41d90b6..135c0fa 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@crudy/restloom", - "version": "0.3.0", + "version": "0.3.1", "type": "module", "description": "A REST API generated from your database's catalog: discovery, a curl-friendly query grammar, relations of every kind, safe defaults", "keywords": ["rest", "api", "postgrest", "sql", "database", "crud", "generator"], diff --git a/packages/express/package.json b/packages/express/package.json index 2c5d2e9..35fc721 100644 --- a/packages/express/package.json +++ b/packages/express/package.json @@ -1,6 +1,6 @@ { "name": "@crudy/restloom-express", - "version": "0.3.0", + "version": "0.3.1", "type": "module", "description": "Express adapter for restloom", "keywords": [ diff --git a/packages/fastify/package.json b/packages/fastify/package.json index 88ce1a2..19a7094 100644 --- a/packages/fastify/package.json +++ b/packages/fastify/package.json @@ -1,6 +1,6 @@ { "name": "@crudy/restloom-fastify", - "version": "0.3.0", + "version": "0.3.1", "type": "module", "description": "Fastify adapter for restloom", "keywords": [ diff --git a/packages/mssql/package.json b/packages/mssql/package.json index 6d65b98..7b91b74 100644 --- a/packages/mssql/package.json +++ b/packages/mssql/package.json @@ -1,6 +1,6 @@ { "name": "@crudy/restloom-mssql", - "version": "0.3.0", + "version": "0.3.1", "type": "module", "description": "SQL Server dialect for restloom", "keywords": [ @@ -42,6 +42,9 @@ "peerDependencies": { "mssql": "^12.0.0" }, + "peerDependenciesMeta": { + "mssql": { "optional": true } + }, "devDependencies": { "@types/node": "^24.0.0", "@types/mssql": "^12.0.0", diff --git a/packages/mysql/package.json b/packages/mysql/package.json index f8d0bad..3d95641 100644 --- a/packages/mysql/package.json +++ b/packages/mysql/package.json @@ -1,6 +1,6 @@ { "name": "@crudy/restloom-mysql", - "version": "0.3.0", + "version": "0.3.1", "type": "module", "description": "MySQL dialect for restloom", "keywords": [ @@ -41,6 +41,9 @@ "peerDependencies": { "mysql2": "^3.11.0" }, + "peerDependenciesMeta": { + "mysql2": { "optional": true } + }, "devDependencies": { "@types/node": "^24.0.0", "mysql2": "^3.24.5", diff --git a/packages/postgres/package.json b/packages/postgres/package.json index 54f3a2f..c8266ef 100644 --- a/packages/postgres/package.json +++ b/packages/postgres/package.json @@ -1,6 +1,6 @@ { "name": "@crudy/restloom-postgres", - "version": "0.3.0", + "version": "0.3.1", "type": "module", "description": "Postgres dialect for restloom", "keywords": ["restloom", "postgres", "postgresql", "rest", "api"], @@ -23,6 +23,9 @@ "peerDependencies": { "pg": "^8.11.0" }, + "peerDependenciesMeta": { + "pg": { "optional": true } + }, "devDependencies": { "@types/node": "^24.0.0", "@types/pg": "^8.11.0", diff --git a/packages/sqlite/package.json b/packages/sqlite/package.json index 120e8d3..afd9a5a 100644 --- a/packages/sqlite/package.json +++ b/packages/sqlite/package.json @@ -1,6 +1,6 @@ { "name": "@crudy/restloom-sqlite", - "version": "0.3.0", + "version": "0.3.1", "type": "module", "description": "SQLite dialect for restloom", "keywords": [ @@ -41,6 +41,9 @@ "peerDependencies": { "better-sqlite3": ">=12" }, + "peerDependenciesMeta": { + "better-sqlite3": { "optional": true } + }, "devDependencies": { "@types/node": "^24.0.0", "@types/better-sqlite3": "^7.6.0",