@plutocms/supabase 0.19.0 → 0.21.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/CHANGELOG.md +21 -0
- package/README.md +5 -1
- package/app/pages/admin/roles.vue +9 -2
- package/app/pages/admin/users.vue +9 -2
- package/nuxt.config.ts +3 -4
- package/package.json +6 -15
- package/server/utils/content-adapter.ts +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.21.0](https://github.com/plutocms/supabase/compare/v0.20.0...v0.21.0) (2026-10-31)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* the supabase repo holds the Supabase integration (supabase, supabase-shop, supabase-blog) ([0da28ef](https://github.com/plutocms/supabase/commit/0da28ef93d4882076a3750822f011de9714156d7))
|
|
9
|
+
* the supabase repo holds the Supabase integration (supabase, supabase-shop, supabase-blog) ([ab50f47](https://github.com/plutocms/supabase/commit/ab50f4779a8fb77f61a43f4db9efcd4314ae59ec))
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
* apps that extend the layer no longer get the ESLint module or an install script ([#151](https://github.com/plutocms/supabase/issues/151)) ([818bf93](https://github.com/plutocms/supabase/commit/818bf93a44cea01e6a1b237ace33a325f45de590))
|
|
15
|
+
* **deps:** ensure @plutocms/pluto ^0.10.0 range is published ([#67](https://github.com/plutocms/supabase/issues/67)) ([ed45ad3](https://github.com/plutocms/supabase/commit/ed45ad3a5b1ed4c4990a2272c48571c5e8eb5a92))
|
|
16
|
+
|
|
17
|
+
## [0.20.0](https://github.com/plutocms/supabase/compare/v0.19.0...v0.20.0) (2026-10-31)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Features
|
|
21
|
+
|
|
22
|
+
* section tabs on the Users and Roles pages ([#163](https://github.com/plutocms/supabase/issues/163)) ([876abf6](https://github.com/plutocms/supabase/commit/876abf637520f0059a29216a3cb6629980ad02e7))
|
|
23
|
+
|
|
3
24
|
## [0.19.0](https://github.com/plutocms/supabase/compare/v0.18.1...v0.19.0) (2026-10-31)
|
|
4
25
|
|
|
5
26
|
|
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
|
|
17
|
+
2. Install the layer. It brings `@nuxtjs/supabase` and `@plutocms/core`, so you do not add them:
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
20
|
npm i @plutocms/supabase
|
|
@@ -141,3 +141,7 @@ sort by date.
|
|
|
141
141
|
### Types
|
|
142
142
|
|
|
143
143
|
- `Database`: Auto-imported type definitions for Supabase database interactions.
|
|
144
|
+
|
|
145
|
+
## Development
|
|
146
|
+
|
|
147
|
+
This package lives in the [`plutocms/supabase`](https://github.com/plutocms/supabase) monorepo, in `packages/supabase`. Run `bun install` at the root of the repo, then the scripts of the package (`bun run --cwd packages/supabase dev`). This package is the base of the other two. Its changes reach `supabase-shop` and `supabase-blog` through the workspace link. Each package reads its own `.env` file.
|
|
@@ -126,11 +126,18 @@ function menuItems(role: AccessRole): DropdownMenuItem[][] {
|
|
|
126
126
|
<template>
|
|
127
127
|
<main>
|
|
128
128
|
<AdminView>
|
|
129
|
+
<!-- The section (the Users item of the menu) and its tabs, like Settings. -->
|
|
130
|
+
<h1 class="text-3xl font-bold lg:text-4xl">
|
|
131
|
+
{{ t('supabase.access.users.title') }}
|
|
132
|
+
</h1>
|
|
133
|
+
|
|
134
|
+
<PlutoAdminNavTabs />
|
|
135
|
+
|
|
129
136
|
<div class="flex flex-wrap items-start justify-between gap-4">
|
|
130
137
|
<div>
|
|
131
|
-
<
|
|
138
|
+
<h2 class="text-xl font-semibold">
|
|
132
139
|
{{ t('supabase.access.roles.title') }}
|
|
133
|
-
</
|
|
140
|
+
</h2>
|
|
134
141
|
<p class="text-muted text-sm">
|
|
135
142
|
{{ t('supabase.access.roles.description') }}
|
|
136
143
|
</p>
|
|
@@ -268,11 +268,18 @@ function menuItems(user: AccessUser): DropdownMenuItem[][] {
|
|
|
268
268
|
<template>
|
|
269
269
|
<main>
|
|
270
270
|
<AdminView>
|
|
271
|
+
<!-- The section (the Users item of the menu) and its tabs, like Settings. -->
|
|
272
|
+
<h1 class="text-3xl font-bold lg:text-4xl">
|
|
273
|
+
{{ t('supabase.access.users.title') }}
|
|
274
|
+
</h1>
|
|
275
|
+
|
|
276
|
+
<PlutoAdminNavTabs />
|
|
277
|
+
|
|
271
278
|
<div class="flex flex-wrap items-start justify-between gap-4">
|
|
272
279
|
<div>
|
|
273
|
-
<
|
|
280
|
+
<h2 class="text-xl font-semibold">
|
|
274
281
|
{{ t('supabase.access.users.title') }}
|
|
275
|
-
</
|
|
282
|
+
</h2>
|
|
276
283
|
<p class="text-muted text-sm">
|
|
277
284
|
{{ t('supabase.access.users.description') }}
|
|
278
285
|
</p>
|
package/nuxt.config.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import type { PlutoMigrationFile } from './shared/types/migrations'
|
|
2
2
|
|
|
3
|
-
// Point
|
|
4
|
-
// unpublished changes; unset,
|
|
3
|
+
// Point this at a local checkout (e.g. `../pluto/packages/core`) to test
|
|
4
|
+
// unpublished changes; unset, it resolves to the published npm package.
|
|
5
5
|
const coreLayer = process.env.PLUTO_CORE_PATH || '@plutocms/core'
|
|
6
|
-
const utilsLayer = process.env.PLUTO_UTILS_PATH || '@plutocms/utils'
|
|
7
6
|
|
|
8
7
|
// The host of the Supabase project, at build time. `@nuxt/image` may only read
|
|
9
8
|
// remote images of the hosts in `image.domains` (the media files are in Storage).
|
|
@@ -16,7 +15,7 @@ function supabaseHost(): string {
|
|
|
16
15
|
}
|
|
17
16
|
|
|
18
17
|
export default defineNuxtConfig({
|
|
19
|
-
extends: [[coreLayer, { install: true }]
|
|
18
|
+
extends: [[coreLayer, { install: true }]],
|
|
20
19
|
|
|
21
20
|
// No @nuxt/eslint: a module of a layer runs in every app that extends it. The repo
|
|
22
21
|
// lints with @nuxt/eslint-config (eslint.config.mjs).
|
package/package.json
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plutocms/supabase",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.21.0",
|
|
5
5
|
"description": "Supabase backend layer for Pluto",
|
|
6
6
|
"author": "Victor Ribeiro",
|
|
7
|
-
"homepage": "https://github.com/plutocms/supabase#readme",
|
|
7
|
+
"homepage": "https://github.com/plutocms/supabase/tree/main/packages/supabase#readme",
|
|
8
8
|
"repository": {
|
|
9
9
|
"type": "git",
|
|
10
|
-
"url": "git+https://github.com/plutocms/supabase.git"
|
|
10
|
+
"url": "git+https://github.com/plutocms/supabase.git",
|
|
11
|
+
"directory": "packages/supabase"
|
|
11
12
|
},
|
|
12
13
|
"bugs": {
|
|
13
14
|
"url": "https://github.com/plutocms/supabase/issues"
|
|
@@ -18,7 +19,7 @@
|
|
|
18
19
|
"dev": "nuxt dev",
|
|
19
20
|
"generate": "nuxt generate",
|
|
20
21
|
"preview": "nuxt preview",
|
|
21
|
-
"prepare": "nuxt prepare",
|
|
22
|
+
"dev:prepare": "nuxt prepare",
|
|
22
23
|
"prettier": "prettier --write .",
|
|
23
24
|
"lint": "eslint .",
|
|
24
25
|
"lint:fix": "eslint . --fix",
|
|
@@ -29,32 +30,22 @@
|
|
|
29
30
|
"dependencies": {
|
|
30
31
|
"@nuxt/ui": "^4.12.0",
|
|
31
32
|
"@nuxtjs/supabase": "^2.1.0",
|
|
32
|
-
"@plutocms/core": ">=0.
|
|
33
|
-
"@plutocms/utils": ">=0.3.0 <1.0.0",
|
|
33
|
+
"@plutocms/core": ">=0.41.0 <1.0.0",
|
|
34
34
|
"@supabase/supabase-js": "^2.117.3",
|
|
35
35
|
"postgres": "^3.4.9",
|
|
36
36
|
"supabase": "^2.121.0",
|
|
37
37
|
"zod": "^4.6.7"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
|
-
"@antfu/eslint-config": "^9.5.1",
|
|
41
|
-
"@nuxt/eslint-config": "^1.17.0",
|
|
42
40
|
"@types/bun": "^1.4.3",
|
|
43
41
|
"@vueuse/nuxt": "^14.4.0",
|
|
44
|
-
"eslint": "^10.13.0",
|
|
45
|
-
"eslint-config-prettier": "^10.1.8",
|
|
46
|
-
"eslint-plugin-better-tailwindcss": "^4.10.0",
|
|
47
42
|
"nuxt": "^4.6.2",
|
|
48
|
-
"prettier": "^3.9.10",
|
|
49
43
|
"tailwindcss": "^4.3.3",
|
|
50
44
|
"vitest": "^5.0.5",
|
|
51
45
|
"vue": "^3.5.44",
|
|
52
46
|
"vue-router": "^5.4.0",
|
|
53
47
|
"vue-tsc": "^3.3.13"
|
|
54
48
|
},
|
|
55
|
-
"overrides": {
|
|
56
|
-
"typescript": "^5.9.3"
|
|
57
|
-
},
|
|
58
49
|
"publishConfig": {
|
|
59
50
|
"access": "public"
|
|
60
51
|
}
|
|
@@ -9,9 +9,9 @@ import { requireCapability } from './capability-guard'
|
|
|
9
9
|
*
|
|
10
10
|
* A content type's table name (`type.source`) is a plain runtime string —
|
|
11
11
|
* it is not known until a layer declares a content type, in a different
|
|
12
|
-
*
|
|
12
|
+
* package, at that package's build time. `serverSupabaseClient` defaults to
|
|
13
13
|
* this app's own `Database` type (see `shared/types/supabase.ts`), whose
|
|
14
|
-
* `.from()` only accepts this
|
|
14
|
+
* `.from()` only accepts this package's own table names as literals. Casting
|
|
15
15
|
* to the bare `SupabaseClient` type (whose own generic defaults to `any`)
|
|
16
16
|
* is the one, deliberate place this file loses compile-time table/column
|
|
17
17
|
* safety. See `.claude/skills/content-adapter/SKILL.md` for the full
|
|
@@ -19,7 +19,7 @@ import { requireCapability } from './capability-guard'
|
|
|
19
19
|
*
|
|
20
20
|
* Goes through `unknown` first: `serverSupabaseClient`'s inferred
|
|
21
21
|
* `Database` type is whichever layer's own generated types are in scope
|
|
22
|
-
* at the *call site* — this
|
|
22
|
+
* at the *call site* — this package's own `shared/types/supabase.ts` when
|
|
23
23
|
* typechecked standalone, but a different consumer's own generated types
|
|
24
24
|
* when this file is typechecked as part of a deeper extends chain (a
|
|
25
25
|
* layer that extends this one, extending it in turn). A direct `as
|