@plutocms/supabase 0.17.0 → 0.18.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/.env.example +1 -1
- package/CHANGELOG.md +11 -0
- package/FEATURES.md +1 -1
- package/README.md +2 -2
- package/app/plugins/pluto-extension.ts +1 -1
- package/nuxt.config.ts +3 -3
- package/package.json +3 -3
- package/server/plugins/media-driver.ts +1 -1
- package/server/utils/media-driver.ts +1 -1
- package/server/utils/validate.ts +2 -2
- package/tailwind.lint.css +1 -1
package/.env.example
CHANGED
|
@@ -11,6 +11,6 @@ SUPABASE_KEY=
|
|
|
11
11
|
# environment). With the service role key above AND a working mail driver,
|
|
12
12
|
# invites go out through Pluto mail, not through Supabase's mailer. Set these
|
|
13
13
|
# in the environment of the running server. See the `mail` skill of
|
|
14
|
-
# @plutocms/
|
|
14
|
+
# @plutocms/core for every variable.
|
|
15
15
|
# NUXT_PLUTO_MAIL_RESEND_API_KEY=
|
|
16
16
|
# NUXT_PLUTO_MAIL_FROM="Your Site <hello@your-domain.com>"
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.18.0](https://github.com/plutocms/supabase/compare/v0.17.0...v0.18.0) (2026-10-30)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### ⚠ BREAKING CHANGES
|
|
7
|
+
|
|
8
|
+
* the layer extends @plutocms/core >=0.38.0, not @plutocms/pluto. PLUTO_PLUTO_PATH is now PLUTO_CORE_PATH.
|
|
9
|
+
|
|
10
|
+
### Features
|
|
11
|
+
|
|
12
|
+
* extend @plutocms/core ([#143](https://github.com/plutocms/supabase/issues/143)) ([6cefcc4](https://github.com/plutocms/supabase/commit/6cefcc4e84c2d00046f11db8b30e9f4d4ac51e12))
|
|
13
|
+
|
|
3
14
|
## [0.17.0](https://github.com/plutocms/supabase/compare/v0.16.0...v0.17.0) (2026-10-30)
|
|
4
15
|
|
|
5
16
|
|
package/FEATURES.md
CHANGED
|
@@ -15,7 +15,7 @@ policies shared by every project here.
|
|
|
15
15
|
link, roles editor), invites through Pluto mail, and a guide for the Supabase sign-in emails.
|
|
16
16
|
@.claude/skills/users-and-roles/SKILL.md
|
|
17
17
|
- Content adapter: a Supabase/PostgREST-backed `PlutoContentAdapter`, plugging any layer's
|
|
18
|
-
declared content type into `@plutocms/
|
|
18
|
+
declared content type into `@plutocms/core`'s generic content routes. It supports query
|
|
19
19
|
filters, puts the timestamps on items, and reads the public API of core with an anonymous client.
|
|
20
20
|
@.claude/skills/content-adapter/SKILL.md
|
|
21
21
|
- Auth driver: plugs Supabase sign-in into the admin shell that pluto core owns (navbar, sign-in
|
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ SUPABASE_URL=your-supabase-url
|
|
|
14
14
|
SUPABASE_KEY=your-publishable-supabase-key
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
2. Install the layer. It brings `@nuxtjs/supabase`, `@plutocms/
|
|
17
|
+
2. Install the layer. It brings `@nuxtjs/supabase`, `@plutocms/core` and `@plutocms/utils`, so you do not add them:
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
20
|
npm i @plutocms/supabase
|
|
@@ -98,7 +98,7 @@ NUXT_PLUTO_MAIL_FROM="Your Site <hello@your-domain.com>"
|
|
|
98
98
|
```
|
|
99
99
|
|
|
100
100
|
`Settings > Email` in the admin guides the setup (account, key, domain, test email). The
|
|
101
|
-
`mail` skill of `@plutocms/
|
|
101
|
+
`mail` skill of `@plutocms/core` lists every `NUXT_PLUTO_MAIL_*` variable. If the send fails,
|
|
102
102
|
the user and the roles stay, and the admin gets the invite link to send by hand.
|
|
103
103
|
|
|
104
104
|
With the key, an admin can also copy the invite link (Users, then the row menu, or the invite
|
|
@@ -102,7 +102,7 @@ export default defineNuxtPlugin(() => {
|
|
|
102
102
|
definePlutoExtension({
|
|
103
103
|
id: 'supabase',
|
|
104
104
|
// Core renders the navbar, the login page and the route guard from this
|
|
105
|
-
// driver. See the admin-shell skill in @plutocms/
|
|
105
|
+
// driver. See the admin-shell skill in @plutocms/core.
|
|
106
106
|
authDriver: {
|
|
107
107
|
id: 'supabase-auth',
|
|
108
108
|
// The JWT claims carry the id (`sub`) and the user metadata.
|
package/nuxt.config.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { PlutoMigrationFile } from './shared/types/migrations'
|
|
2
2
|
|
|
3
|
-
// Point these at a local checkout (e.g. `../pluto`, `../utils`) to test
|
|
3
|
+
// Point these at a local checkout (e.g. `../pluto/packages/core`, `../utils`) to test
|
|
4
4
|
// unpublished changes; unset, they resolve to the published npm packages.
|
|
5
|
-
const
|
|
5
|
+
const coreLayer = process.env.PLUTO_CORE_PATH || '@plutocms/core'
|
|
6
6
|
const utilsLayer = process.env.PLUTO_UTILS_PATH || '@plutocms/utils'
|
|
7
7
|
|
|
8
8
|
// The host of the Supabase project, at build time. `@nuxt/image` may only read
|
|
@@ -16,7 +16,7 @@ function supabaseHost(): string {
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
export default defineNuxtConfig({
|
|
19
|
-
extends: [[
|
|
19
|
+
extends: [[coreLayer, { install: true }], utilsLayer],
|
|
20
20
|
|
|
21
21
|
modules: ['@nuxt/eslint', '@nuxtjs/supabase'],
|
|
22
22
|
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plutocms/supabase",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.18.0",
|
|
5
5
|
"trustedDependencies": [
|
|
6
6
|
"@parcel/watcher",
|
|
7
|
-
"@plutocms/
|
|
7
|
+
"@plutocms/core",
|
|
8
8
|
"@plutocms/utils",
|
|
9
9
|
"esbuild",
|
|
10
10
|
"supabase",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"@nuxt/eslint": "^1.17.0",
|
|
40
40
|
"@nuxt/ui": "^4.12.0",
|
|
41
41
|
"@nuxtjs/supabase": "^2.1.0",
|
|
42
|
-
"@plutocms/
|
|
42
|
+
"@plutocms/core": ">=0.38.0 <1.0.0",
|
|
43
43
|
"@plutocms/utils": ">=0.3.0 <1.0.0",
|
|
44
44
|
"@supabase/supabase-js": "^2.117.3",
|
|
45
45
|
"postgres": "^3.4.9",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Registers the Supabase media driver with the core media library, at Nitro
|
|
3
|
-
* startup. See the media skill of `@plutocms/
|
|
3
|
+
* startup. See the media skill of `@plutocms/core`.
|
|
4
4
|
*/
|
|
5
5
|
export default defineNitroPlugin(() => {
|
|
6
6
|
registerMediaDriver(createSupabaseMediaDriver())
|
|
@@ -87,7 +87,7 @@ function numericIds(ids: string[]): number[] {
|
|
|
87
87
|
* Security checks the capabilities again (`has_capability`). New files go to
|
|
88
88
|
* `media/<yyyy>/<mm>/<name>-<suffix>.<ext>`, and their previews next to them
|
|
89
89
|
* (`db/migrations/010_media_preview.sql`). See the media skill of
|
|
90
|
-
* `@plutocms/
|
|
90
|
+
* `@plutocms/core`.
|
|
91
91
|
*/
|
|
92
92
|
export function createSupabaseMediaDriver(): PlutoMediaDriver {
|
|
93
93
|
async function readRow(client: SupabaseClient, id: string): Promise<MediaRow> {
|
package/server/utils/validate.ts
CHANGED
|
@@ -4,7 +4,7 @@ import type { ZodSchema } from 'zod'
|
|
|
4
4
|
/**
|
|
5
5
|
* One field-level validation error.
|
|
6
6
|
*
|
|
7
|
-
* Matches `ContentValidationError` from `@plutocms/
|
|
7
|
+
* Matches `ContentValidationError` from `@plutocms/core`'s
|
|
8
8
|
* `shared/utils/content-validate.ts`, so a zod failure and a content-model
|
|
9
9
|
* failure look the same to a caller.
|
|
10
10
|
*/
|
|
@@ -17,7 +17,7 @@ export interface ValidationError {
|
|
|
17
17
|
* Reads a request body and checks it against a zod schema.
|
|
18
18
|
*
|
|
19
19
|
* On success, returns the parsed, typed body. On failure, throws the same
|
|
20
|
-
* 400 shape `@plutocms/
|
|
20
|
+
* 400 shape `@plutocms/core`'s generic content routes throw for a content
|
|
21
21
|
* validation failure: `{ statusCode: 400, statusMessage: 'Validation
|
|
22
22
|
* failed.', data: { errors } }`, with `errors` as `{ field, message }[]`.
|
|
23
23
|
* Every route in this workspace should call this helper instead of
|
package/tailwind.lint.css
CHANGED