@btst/stack 1.7.0 → 1.9.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/dist/api/index.d.cts +2 -2
- package/dist/api/index.d.mts +2 -2
- package/dist/api/index.d.ts +2 -2
- package/dist/client/index.cjs +6 -2
- package/dist/client/index.d.cts +2 -1
- package/dist/client/index.d.mts +2 -1
- package/dist/client/index.d.ts +2 -1
- package/dist/client/index.mjs +6 -2
- package/dist/index.d.cts +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/packages/better-stack/src/plugins/cms/api/plugin.cjs +445 -16
- package/dist/packages/better-stack/src/plugins/cms/api/plugin.mjs +445 -16
- package/dist/packages/better-stack/src/plugins/cms/client/components/forms/content-form.cjs +24 -7
- package/dist/packages/better-stack/src/plugins/cms/client/components/forms/content-form.mjs +25 -8
- package/dist/packages/better-stack/src/plugins/cms/client/components/forms/relation-field.cjs +224 -0
- package/dist/packages/better-stack/src/plugins/cms/client/components/forms/relation-field.mjs +222 -0
- package/dist/packages/better-stack/src/plugins/cms/client/components/inverse-relations-panel.cjs +243 -0
- package/dist/packages/better-stack/src/plugins/cms/client/components/inverse-relations-panel.mjs +241 -0
- package/dist/packages/better-stack/src/plugins/cms/client/components/pages/content-editor-page.internal.cjs +56 -2
- package/dist/packages/better-stack/src/plugins/cms/client/components/pages/content-editor-page.internal.mjs +56 -2
- package/dist/packages/better-stack/src/plugins/cms/client/hooks/cms-hooks.cjs +190 -0
- package/dist/packages/better-stack/src/plugins/cms/client/hooks/cms-hooks.mjs +187 -1
- package/dist/packages/better-stack/src/plugins/cms/db.cjs +38 -0
- package/dist/packages/better-stack/src/plugins/cms/db.mjs +38 -0
- package/dist/packages/better-stack/src/plugins/route-docs/client/components/loading/docs-skeleton.cjs +43 -0
- package/dist/packages/better-stack/src/plugins/route-docs/client/components/loading/docs-skeleton.mjs +41 -0
- package/dist/packages/better-stack/src/plugins/route-docs/client/components/pages/docs-page.cjs +794 -0
- package/dist/packages/better-stack/src/plugins/route-docs/client/components/pages/docs-page.mjs +788 -0
- package/dist/packages/better-stack/src/plugins/route-docs/client/plugin.cjs +111 -0
- package/dist/packages/better-stack/src/plugins/route-docs/client/plugin.mjs +106 -0
- package/dist/packages/better-stack/src/plugins/route-docs/generator.cjs +244 -0
- package/dist/packages/better-stack/src/plugins/route-docs/generator.mjs +227 -0
- package/dist/packages/ui/src/components/auto-form/fields/object.cjs +81 -1
- package/dist/packages/ui/src/components/auto-form/fields/object.mjs +81 -1
- package/dist/packages/ui/src/components/dialog.cjs +6 -0
- package/dist/packages/ui/src/components/dialog.mjs +6 -1
- package/dist/packages/ui/src/components/sheet.cjs +25 -0
- package/dist/packages/ui/src/components/sheet.mjs +24 -1
- package/dist/plugins/api/index.d.cts +2 -2
- package/dist/plugins/api/index.d.mts +2 -2
- package/dist/plugins/api/index.d.ts +2 -2
- package/dist/plugins/blog/api/index.d.cts +1 -1
- package/dist/plugins/blog/api/index.d.mts +1 -1
- package/dist/plugins/blog/api/index.d.ts +1 -1
- package/dist/plugins/blog/client/hooks/index.d.cts +2 -2
- package/dist/plugins/blog/client/hooks/index.d.mts +2 -2
- package/dist/plugins/blog/client/hooks/index.d.ts +2 -2
- package/dist/plugins/blog/client/index.d.cts +1 -1
- package/dist/plugins/blog/client/index.d.mts +1 -1
- package/dist/plugins/blog/client/index.d.ts +1 -1
- package/dist/plugins/blog/query-keys.d.cts +2 -2
- package/dist/plugins/blog/query-keys.d.mts +2 -2
- package/dist/plugins/blog/query-keys.d.ts +2 -2
- package/dist/plugins/client/index.d.cts +2 -2
- package/dist/plugins/client/index.d.mts +2 -2
- package/dist/plugins/client/index.d.ts +2 -2
- package/dist/plugins/cms/api/index.d.cts +67 -3
- package/dist/plugins/cms/api/index.d.mts +67 -3
- package/dist/plugins/cms/api/index.d.ts +67 -3
- package/dist/plugins/cms/client/hooks/index.cjs +4 -0
- package/dist/plugins/cms/client/hooks/index.d.cts +82 -3
- package/dist/plugins/cms/client/hooks/index.d.mts +82 -3
- package/dist/plugins/cms/client/hooks/index.d.ts +82 -3
- package/dist/plugins/cms/client/hooks/index.mjs +1 -1
- package/dist/plugins/cms/query-keys.d.cts +1 -1
- package/dist/plugins/cms/query-keys.d.mts +1 -1
- package/dist/plugins/cms/query-keys.d.ts +1 -1
- package/dist/plugins/form-builder/api/index.d.cts +1 -1
- package/dist/plugins/form-builder/api/index.d.mts +1 -1
- package/dist/plugins/form-builder/api/index.d.ts +1 -1
- package/dist/plugins/open-api/api/index.d.cts +1 -1
- package/dist/plugins/open-api/api/index.d.mts +1 -1
- package/dist/plugins/open-api/api/index.d.ts +1 -1
- package/dist/plugins/route-docs/client/index.cjs +10 -0
- package/dist/plugins/route-docs/client/index.d.cts +126 -0
- package/dist/plugins/route-docs/client/index.d.mts +126 -0
- package/dist/plugins/route-docs/client/index.d.ts +126 -0
- package/dist/plugins/route-docs/client/index.mjs +1 -0
- package/dist/plugins/route-docs/client.css +3 -0
- package/dist/plugins/route-docs/style.css +19 -0
- package/dist/shared/{stack.L-UFwz2G.d.mts → stack.oGOteE6g.d.cts} +27 -5
- package/dist/shared/{stack.L-UFwz2G.d.ts → stack.oGOteE6g.d.mts} +27 -5
- package/dist/shared/{stack.L-UFwz2G.d.cts → stack.oGOteE6g.d.ts} +27 -5
- package/dist/shared/{stack.CSce37mX.d.cts → stack.u9iYV6vt.d.cts} +14 -2
- package/dist/shared/{stack.CSce37mX.d.mts → stack.u9iYV6vt.d.mts} +14 -2
- package/dist/shared/{stack.CSce37mX.d.ts → stack.u9iYV6vt.d.ts} +14 -2
- package/package.json +15 -1
- package/src/client/index.ts +11 -4
- package/src/plugins/cms/api/plugin.ts +667 -21
- package/src/plugins/cms/client/components/forms/content-form.tsx +60 -18
- package/src/plugins/cms/client/components/forms/relation-field.tsx +299 -0
- package/src/plugins/cms/client/components/inverse-relations-panel.tsx +329 -0
- package/src/plugins/cms/client/components/pages/content-editor-page.internal.tsx +127 -1
- package/src/plugins/cms/client/hooks/cms-hooks.tsx +344 -0
- package/src/plugins/cms/db.ts +38 -0
- package/src/plugins/cms/types.ts +99 -10
- package/src/plugins/route-docs/client/components/loading/docs-skeleton.tsx +82 -0
- package/src/plugins/route-docs/client/components/loading/index.tsx +1 -0
- package/src/plugins/route-docs/client/components/pages/docs-page.tsx +1240 -0
- package/src/plugins/route-docs/client/index.ts +7 -0
- package/src/plugins/route-docs/client/plugin.tsx +187 -0
- package/src/plugins/route-docs/client.css +3 -0
- package/src/plugins/route-docs/generator.ts +385 -0
- package/src/plugins/route-docs/index.ts +12 -0
- package/src/plugins/route-docs/style.css +19 -0
- package/src/types.ts +19 -1
- package/dist/shared/{stack.CcI4sYJP.d.mts → stack.DLhzx1-D.d.cts} +1 -1
- package/dist/shared/{stack.CcI4sYJP.d.ts → stack.DLhzx1-D.d.mts} +1 -1
- package/dist/shared/{stack.CcI4sYJP.d.cts → stack.DLhzx1-D.d.ts} +1 -1
|
@@ -14,6 +14,16 @@ interface BetterStackContext {
|
|
|
14
14
|
/** The database adapter */
|
|
15
15
|
adapter: Adapter;
|
|
16
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* Context passed to client plugins during route creation
|
|
19
|
+
* Provides access to all registered plugins for introspection (used by routeDocs plugin)
|
|
20
|
+
*/
|
|
21
|
+
interface ClientStackContext<TPlugins extends Record<string, ClientPlugin<any, any>> = Record<string, ClientPlugin<any, any>>> {
|
|
22
|
+
/** All registered client plugins */
|
|
23
|
+
plugins: TPlugins;
|
|
24
|
+
/** The base path for the client (e.g., "/app") */
|
|
25
|
+
basePath?: string;
|
|
26
|
+
}
|
|
17
27
|
/**
|
|
18
28
|
* Backend plugin definition
|
|
19
29
|
* Defines API routes and data access for a feature
|
|
@@ -50,8 +60,10 @@ interface ClientPlugin<TOverrides = Record<string, never>, TRoutes extends Recor
|
|
|
50
60
|
/**
|
|
51
61
|
* Define routes (pages) for this plugin
|
|
52
62
|
* Returns yar routes that will be composed into the router
|
|
63
|
+
*
|
|
64
|
+
* @param context - Optional context with access to all plugins (for introspection)
|
|
53
65
|
*/
|
|
54
|
-
routes: () => TRoutes;
|
|
66
|
+
routes: (context?: ClientStackContext) => TRoutes;
|
|
55
67
|
/**
|
|
56
68
|
* Optional sitemap generator for this plugin. Should return absolute URLs.
|
|
57
69
|
* Implementations can call their own API endpoints to include dynamic routes.
|
|
@@ -142,4 +154,4 @@ type SitemapEntry = {
|
|
|
142
154
|
};
|
|
143
155
|
type Sitemap = Array<SitemapEntry>;
|
|
144
156
|
|
|
145
|
-
export type { BackendPlugin as B, ClientPlugin as C, PluginOverrides as P,
|
|
157
|
+
export type { BackendPlugin as B, ClientPlugin as C, PluginOverrides as P, SitemapEntry as S, BetterStackContext as a, ClientStackContext as b, Sitemap as c, PluginRoutes as d, ClientLibConfig as e, ClientLib as f, PrefixedPluginRoutes as g, BackendLibConfig as h, BackendLib as i };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@btst/stack",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.9.0",
|
|
4
4
|
"description": "A composable, plugin-based library for building full-stack applications.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -257,6 +257,17 @@
|
|
|
257
257
|
"default": "./dist/plugins/open-api/api/index.cjs"
|
|
258
258
|
}
|
|
259
259
|
},
|
|
260
|
+
"./plugins/route-docs/client": {
|
|
261
|
+
"import": {
|
|
262
|
+
"types": "./dist/plugins/route-docs/client/index.d.ts",
|
|
263
|
+
"default": "./dist/plugins/route-docs/client/index.mjs"
|
|
264
|
+
},
|
|
265
|
+
"require": {
|
|
266
|
+
"types": "./dist/plugins/route-docs/client/index.d.cts",
|
|
267
|
+
"default": "./dist/plugins/route-docs/client/index.cjs"
|
|
268
|
+
}
|
|
269
|
+
},
|
|
270
|
+
"./plugins/route-docs/css": "./dist/plugins/route-docs/style.css",
|
|
260
271
|
"./dist/*": "./dist/*",
|
|
261
272
|
"./ui/css": "./dist/ui/components.css",
|
|
262
273
|
"./package.json": "./package.json"
|
|
@@ -325,6 +336,9 @@
|
|
|
325
336
|
],
|
|
326
337
|
"plugins/open-api/api": [
|
|
327
338
|
"./dist/plugins/open-api/api/index.d.ts"
|
|
339
|
+
],
|
|
340
|
+
"plugins/route-docs/client": [
|
|
341
|
+
"./dist/plugins/route-docs/client/index.d.ts"
|
|
328
342
|
]
|
|
329
343
|
}
|
|
330
344
|
},
|
package/src/client/index.ts
CHANGED
|
@@ -4,10 +4,11 @@ import type {
|
|
|
4
4
|
ClientLibConfig,
|
|
5
5
|
ClientLib,
|
|
6
6
|
ClientPlugin,
|
|
7
|
+
ClientStackContext,
|
|
7
8
|
PluginRoutes,
|
|
8
9
|
Sitemap,
|
|
9
10
|
} from "../types";
|
|
10
|
-
export type { ClientPlugin } from "../types";
|
|
11
|
+
export type { ClientPlugin, ClientStackContext } from "../types";
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* Creates the client library with plugin support
|
|
@@ -60,15 +61,21 @@ export function createStackClient<
|
|
|
60
61
|
TPlugins extends Record<string, ClientPlugin<any, any>>,
|
|
61
62
|
TRoutes extends PluginRoutes<TPlugins> = PluginRoutes<TPlugins>,
|
|
62
63
|
>(config: ClientLibConfig<TPlugins>): ClientLib<TRoutes> {
|
|
63
|
-
const { plugins } = config;
|
|
64
|
+
const { plugins, basePath } = config;
|
|
64
65
|
|
|
65
66
|
// Collect all routes from all plugins
|
|
66
67
|
// We build this with type assertions to preserve literal keys
|
|
67
68
|
const allRoutes = {} as TRoutes;
|
|
68
69
|
|
|
70
|
+
// Create the context object to pass to plugin routes
|
|
71
|
+
const clientStackContext: ClientStackContext<TPlugins> = {
|
|
72
|
+
plugins,
|
|
73
|
+
basePath,
|
|
74
|
+
};
|
|
75
|
+
|
|
69
76
|
for (const [pluginKey, plugin] of Object.entries(plugins)) {
|
|
70
|
-
// Add routes
|
|
71
|
-
const pluginRoutes = plugin.routes();
|
|
77
|
+
// Add routes - pass the context for plugins that need introspection (e.g., routeDocs)
|
|
78
|
+
const pluginRoutes = plugin.routes(clientStackContext);
|
|
72
79
|
Object.assign(allRoutes, pluginRoutes);
|
|
73
80
|
}
|
|
74
81
|
|