@betterportal/hello-view 10.1.63 → 10.1.65
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/lib/bp-contracts/org.betterportal.hello-view.json +29 -3
- package/lib/plugins/service-betterportal-hello-view/.bp-generated/registry.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-hello-view/.bp-generated/registry.js +3 -1
- package/lib/plugins/service-betterportal-hello-view/.bp-generated/registry.js.map +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/about/GET.d.ts +38 -3
- package/lib/plugins/service-betterportal-hello-view/bp-routes/about/GET.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/about/GET.js +71 -3
- package/lib/plugins/service-betterportal-hello-view/bp-routes/about/GET.js.map +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/about/_renderer.bootstrap5/GET.d.ts +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/about/_renderer.bootstrap5/GET.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/about/index.d.ts +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/about/index.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/about/index.js +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/about/index.js.map +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/delayed/GET.d.ts +34 -3
- package/lib/plugins/service-betterportal-hello-view/bp-routes/delayed/GET.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/delayed/GET.js +49 -3
- package/lib/plugins/service-betterportal-hello-view/bp-routes/delayed/GET.js.map +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/delayed/_renderer.bootstrap5/GET.d.ts +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/delayed/_renderer.bootstrap5/GET.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/delayed/_renderer.bootstrap5/index.stream.d.ts +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/delayed/_renderer.bootstrap5/index.stream.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/delayed/index.d.ts +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/delayed/index.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/delayed/index.js +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/delayed/index.js.map +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/GET.d.ts +23 -3
- package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/GET.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/GET.js +36 -3
- package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/GET.js.map +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.bootstrap5/GET.d.ts +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.bootstrap5/GET.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.bootstrap5/_nav.clock.GET.d.ts +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.bootstrap5/_nav.clock.GET.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.bootstrap5/_nav.profile.GET.d.ts +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.bootstrap5/_nav.profile.GET.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.bootstrap5/showcase-cards.GET.d.ts +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.bootstrap5/showcase-cards.GET.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.bootstrap5/showcase-data.GET.d.ts +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.bootstrap5/showcase-data.GET.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.bootstrap5/showcase-elements.GET.d.ts +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.bootstrap5/showcase-elements.GET.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.bootstrap5/showcase-forms.GET.d.ts +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.bootstrap5/showcase-forms.GET.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.bootstrap5/showcase-interactive.GET.d.ts +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.bootstrap5/showcase-interactive.GET.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.bootstrap5/showcase-overlays.GET.d.ts +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.bootstrap5/showcase-overlays.GET.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.bootstrap5/showcase-patterns.GET.d.ts +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.bootstrap5/showcase-patterns.GET.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.embedded/GET.d.ts +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.embedded/GET.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/index.d.ts +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/index.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/index.js +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/index.js.map +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/landing/GET.d.ts +49 -3
- package/lib/plugins/service-betterportal-hello-view/bp-routes/landing/GET.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/landing/GET.js +93 -3
- package/lib/plugins/service-betterportal-hello-view/bp-routes/landing/GET.js.map +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/landing/_renderer.bootstrap5/GET.d.ts +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/landing/_renderer.bootstrap5/GET.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/landing/index.d.ts +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/landing/index.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/landing/index.js +1 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/landing/index.js.map +1 -1
- package/lib/schemas/service-betterportal-hello-view.json +1 -1
- package/lib/schemas/service-betterportal-hello-view.plugin.json +1 -1
- package/package.json +5 -5
- package/lib/plugins/service-betterportal-hello-view/bp-routes/about/route.impl.d.ts +0 -38
- package/lib/plugins/service-betterportal-hello-view/bp-routes/about/route.impl.d.ts.map +0 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/about/route.impl.js +0 -72
- package/lib/plugins/service-betterportal-hello-view/bp-routes/about/route.impl.js.map +0 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/delayed/route.impl.d.ts +0 -34
- package/lib/plugins/service-betterportal-hello-view/bp-routes/delayed/route.impl.d.ts.map +0 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/delayed/route.impl.js +0 -50
- package/lib/plugins/service-betterportal-hello-view/bp-routes/delayed/route.impl.js.map +0 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/route.impl.d.ts +0 -23
- package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/route.impl.d.ts.map +0 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/route.impl.js +0 -37
- package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/route.impl.js.map +0 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/landing/route.impl.d.ts +0 -49
- package/lib/plugins/service-betterportal-hello-view/bp-routes/landing/route.impl.d.ts.map +0 -1
- package/lib/plugins/service-betterportal-hello-view/bp-routes/landing/route.impl.js +0 -94
- package/lib/plugins/service-betterportal-hello-view/bp-routes/landing/route.impl.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"showcase-data.GET.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.bootstrap5/showcase-data.GET.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"showcase-data.GET.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.bootstrap5/showcase-data.GET.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAoG9C,wBAAgB,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,iBAAiB,GAAG,cAAc,CAqGlF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** @jsxImportSource jsx-htmx */
|
|
2
2
|
import type { HtmlRenderable } from "@betterportal/framework";
|
|
3
|
-
import type { ResponseData } from "../
|
|
3
|
+
import type { ResponseData } from "../GET.js";
|
|
4
4
|
export declare function render(data: ResponseData): HtmlRenderable;
|
|
5
5
|
//# sourceMappingURL=showcase-elements.GET.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"showcase-elements.GET.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.bootstrap5/showcase-elements.GET.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"showcase-elements.GET.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.bootstrap5/showcase-elements.GET.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAM9C,wBAAgB,MAAM,CAAC,IAAI,EAAE,YAAY,GAAG,cAAc,CA0JzD"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** @jsxImportSource jsx-htmx */
|
|
2
2
|
import type { HtmlRenderable } from "@betterportal/framework";
|
|
3
|
-
import type { ResponseData } from "../
|
|
3
|
+
import type { ResponseData } from "../GET.js";
|
|
4
4
|
export declare function render(data: ResponseData): HtmlRenderable;
|
|
5
5
|
//# sourceMappingURL=showcase-forms.GET.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"showcase-forms.GET.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.bootstrap5/showcase-forms.GET.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"showcase-forms.GET.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.bootstrap5/showcase-forms.GET.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAM9C,wBAAgB,MAAM,CAAC,IAAI,EAAE,YAAY,GAAG,cAAc,CAyLzD"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** @jsxImportSource jsx-htmx */
|
|
2
2
|
import type { HtmlRenderable } from "@betterportal/framework";
|
|
3
|
-
import type { ResponseData } from "../
|
|
3
|
+
import type { ResponseData } from "../GET.js";
|
|
4
4
|
export declare function render(data: ResponseData): HtmlRenderable;
|
|
5
5
|
//# sourceMappingURL=showcase-interactive.GET.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"showcase-interactive.GET.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.bootstrap5/showcase-interactive.GET.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"showcase-interactive.GET.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.bootstrap5/showcase-interactive.GET.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C,wBAAgB,MAAM,CAAC,IAAI,EAAE,YAAY,GAAG,cAAc,CAsRzD"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** @jsxImportSource jsx-htmx */
|
|
2
2
|
import type { HtmlRenderable } from "@betterportal/framework";
|
|
3
|
-
import type { ResponseData } from "../
|
|
3
|
+
import type { ResponseData } from "../GET.js";
|
|
4
4
|
export declare function render(data: ResponseData): HtmlRenderable;
|
|
5
5
|
//# sourceMappingURL=showcase-overlays.GET.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"showcase-overlays.GET.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.bootstrap5/showcase-overlays.GET.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"showcase-overlays.GET.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.bootstrap5/showcase-overlays.GET.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C,wBAAgB,MAAM,CAAC,IAAI,EAAE,YAAY,GAAG,cAAc,CAoSzD"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** @jsxImportSource jsx-htmx */
|
|
2
2
|
import type { HtmlRenderable } from "@betterportal/framework";
|
|
3
|
-
import type { ResponseData } from "../
|
|
3
|
+
import type { ResponseData } from "../GET.js";
|
|
4
4
|
export declare function render(data: ResponseData): HtmlRenderable;
|
|
5
5
|
//# sourceMappingURL=showcase-patterns.GET.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"showcase-patterns.GET.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.bootstrap5/showcase-patterns.GET.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"showcase-patterns.GET.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.bootstrap5/showcase-patterns.GET.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C,wBAAgB,MAAM,CAAC,IAAI,EAAE,YAAY,GAAG,cAAc,CAgTzD"}
|
package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.embedded/GET.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** @jsxImportSource jsx-htmx */
|
|
2
2
|
import type { HtmlRenderable } from "@betterportal/framework";
|
|
3
|
-
import type { ResponseData } from "../
|
|
3
|
+
import type { ResponseData } from "../GET.js";
|
|
4
4
|
export declare function render(data: ResponseData): HtmlRenderable;
|
|
5
5
|
//# sourceMappingURL=GET.d.ts.map
|
package/lib/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.embedded/GET.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GET.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.embedded/GET.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"GET.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-hello-view/bp-routes/hello/_renderer.embedded/GET.tsx"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C,wBAAgB,MAAM,CAAC,IAAI,EAAE,YAAY,GAAG,cAAc,CASzD"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { title, description } from "./
|
|
1
|
+
export { title, description } from "./GET.js";
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/service-betterportal-hello-view/bp-routes/hello/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/service-betterportal-hello-view/bp-routes/hello/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { title, description } from "./
|
|
1
|
+
export { title, description } from "./GET.js";
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/plugins/service-betterportal-hello-view/bp-routes/hello/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/plugins/service-betterportal-hello-view/bp-routes/hello/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -1,5 +1,51 @@
|
|
|
1
1
|
export declare const operationId = "landing.view";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
import * as av from "anyvali";
|
|
3
|
+
import type { Infer } from "anyvali";
|
|
4
|
+
import { type ApiAuthRequirement, type CacheHints, type BetterPortalRouteChrome } from "@betterportal/framework";
|
|
5
|
+
export declare const QuerySchema: av.ObjectSchema<{}>;
|
|
6
|
+
export declare const HeadersSchema: av.ObjectSchema<{}>;
|
|
7
|
+
export declare const RequestSchema: av.ObjectSchema<{}>;
|
|
8
|
+
export declare const ResponseSchema: av.ObjectSchema<{
|
|
9
|
+
headline: av.StringSchema;
|
|
10
|
+
subheading: av.StringSchema;
|
|
11
|
+
summary: av.StringSchema;
|
|
12
|
+
highlights: av.ArraySchema<av.ObjectSchema<{
|
|
13
|
+
title: av.StringSchema;
|
|
14
|
+
text: av.StringSchema;
|
|
15
|
+
}>>;
|
|
16
|
+
capabilities: av.ArraySchema<av.ObjectSchema<{
|
|
17
|
+
title: av.StringSchema;
|
|
18
|
+
text: av.StringSchema;
|
|
19
|
+
}>>;
|
|
20
|
+
audiences: av.ArraySchema<av.ObjectSchema<{
|
|
21
|
+
title: av.StringSchema;
|
|
22
|
+
text: av.StringSchema;
|
|
23
|
+
}>>;
|
|
24
|
+
aboutHref: av.StringSchema;
|
|
25
|
+
}>;
|
|
26
|
+
export type ResponseData = Infer<typeof ResponseSchema>;
|
|
27
|
+
export declare const title = "BetterPortal";
|
|
28
|
+
export declare const description = "Landing page for BetterPortal, the service-oriented portal framework.";
|
|
29
|
+
export declare const chrome: BetterPortalRouteChrome;
|
|
30
|
+
export declare const auth: ApiAuthRequirement;
|
|
31
|
+
export declare const cacheHints: CacheHints;
|
|
32
|
+
declare const _default: import("@betterportal/framework").RouteHandler<Record<string, string>, {}, {}, {}, {
|
|
33
|
+
headline: string;
|
|
34
|
+
subheading: string;
|
|
35
|
+
summary: string;
|
|
36
|
+
highlights: {
|
|
37
|
+
title: string;
|
|
38
|
+
text: string;
|
|
39
|
+
}[];
|
|
40
|
+
capabilities: {
|
|
41
|
+
title: string;
|
|
42
|
+
text: string;
|
|
43
|
+
}[];
|
|
44
|
+
audiences: {
|
|
45
|
+
title: string;
|
|
46
|
+
text: string;
|
|
47
|
+
}[];
|
|
48
|
+
aboutHref: string;
|
|
49
|
+
}, unknown, Record<string, unknown>>;
|
|
50
|
+
export default _default;
|
|
5
51
|
//# sourceMappingURL=GET.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GET.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/service-betterportal-hello-view/bp-routes/landing/GET.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,iBAAiB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"GET.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/service-betterportal-hello-view/bp-routes/landing/GET.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,iBAAiB,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,uBAAuB,EAC7B,MAAM,yBAAyB,CAAC;AAEjC,eAAO,MAAM,WAAW,qBAAgB,CAAC;AACzC,eAAO,MAAM,aAAa,qBAAgB,CAAC;AAC3C,eAAO,MAAM,aAAa,qBAAgB,CAAC;AAiB3C,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;EAQzB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAExD,eAAO,MAAM,KAAK,iBAAiB,CAAC;AACpC,eAAO,MAAM,WAAW,0EAA0E,CAAC;AACnG,eAAO,MAAM,MAAM,EAAE,uBAA8C,CAAC;AAEpE,eAAO,MAAM,IAAI,EAAE,kBAGlB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,UAGxB,CAAC;;;;;;;;;;;;;;;;;;;AAEF,wBA0DE"}
|
|
@@ -1,5 +1,95 @@
|
|
|
1
1
|
export const operationId = "landing.view";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export
|
|
2
|
+
import * as av from "anyvali";
|
|
3
|
+
import { createHandler } from "@betterportal/framework";
|
|
4
|
+
export const QuerySchema = av.object({});
|
|
5
|
+
export const HeadersSchema = av.object({});
|
|
6
|
+
export const RequestSchema = av.object({});
|
|
7
|
+
const HighlightSchema = av.object({
|
|
8
|
+
title: av.string().minLength(1),
|
|
9
|
+
text: av.string().minLength(1)
|
|
10
|
+
});
|
|
11
|
+
const CapabilitySchema = av.object({
|
|
12
|
+
title: av.string().minLength(1),
|
|
13
|
+
text: av.string().minLength(1)
|
|
14
|
+
});
|
|
15
|
+
const AudienceSchema = av.object({
|
|
16
|
+
title: av.string().minLength(1),
|
|
17
|
+
text: av.string().minLength(1)
|
|
18
|
+
});
|
|
19
|
+
export const ResponseSchema = av.object({
|
|
20
|
+
headline: av.string().minLength(1),
|
|
21
|
+
subheading: av.string().minLength(1),
|
|
22
|
+
summary: av.string().minLength(1),
|
|
23
|
+
highlights: av.array(HighlightSchema),
|
|
24
|
+
capabilities: av.array(CapabilitySchema),
|
|
25
|
+
audiences: av.array(AudienceSchema),
|
|
26
|
+
aboutHref: av.string().minLength(1)
|
|
27
|
+
});
|
|
28
|
+
export const title = "BetterPortal";
|
|
29
|
+
export const description = "Landing page for BetterPortal, the service-oriented portal framework.";
|
|
30
|
+
export const chrome = { fullScreen: true };
|
|
31
|
+
export const auth = {
|
|
32
|
+
required: false,
|
|
33
|
+
permissions: []
|
|
34
|
+
};
|
|
35
|
+
export const cacheHints = {
|
|
36
|
+
ttlSeconds: 300,
|
|
37
|
+
varyBy: ["accept", "origin", "referer", ":origin", ":referer"]
|
|
38
|
+
};
|
|
39
|
+
export default createHandler({ response: ResponseSchema, query: QuerySchema, headers: HeadersSchema, request: RequestSchema }, () => ({
|
|
40
|
+
headline: "BetterPortal",
|
|
41
|
+
subheading: "Composable portals for serious service platforms.",
|
|
42
|
+
summary: "BetterPortal is a TypeScript platform for building tenant-aware portals from independently deployed services. It keeps UI, auth, configuration, automation, and AI discovery on one typed contract without forcing every team into one monolith.",
|
|
43
|
+
highlights: [
|
|
44
|
+
{
|
|
45
|
+
title: "Schema-backed routes",
|
|
46
|
+
text: "Every service route declares input, output, auth, chrome, cache, renderer, and dependency metadata so the same endpoint can serve people, tools, and agents."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
title: "Tenant and app scoped",
|
|
50
|
+
text: "Shared services can be activated per tenant while apps decide which service routes are mounted, branded, and exposed."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
title: "Designed for distributed hosting",
|
|
54
|
+
text: "Services pull scoped config from the control plane and stay browser-reachable, so private networks and remote services can coexist cleanly."
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
capabilities: [
|
|
58
|
+
{
|
|
59
|
+
title: "Typed APIs and views",
|
|
60
|
+
text: "A route can negotiate JSON, HTML, streams, SSE, raw files, or metadata from the same source contract."
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
title: "Config manager control plane",
|
|
64
|
+
text: "Tenants, apps, shared services, route mounts, menu entries, auth bindings, and scoped service config are managed centrally."
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
title: "Theme and auth as services",
|
|
68
|
+
text: "Themes, default auth, external auth providers, and business modules all plug in through the same BP service model."
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
title: "Automation and AI discovery",
|
|
72
|
+
text: "Public manifests, llms.txt, route schemas, and service metadata make portals inspectable by integrations and AI agents."
|
|
73
|
+
}
|
|
74
|
+
],
|
|
75
|
+
audiences: [
|
|
76
|
+
{
|
|
77
|
+
title: "Platform teams",
|
|
78
|
+
text: "Run a multi-tenant portal without coupling every feature to the control plane deploy."
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
title: "Service teams",
|
|
82
|
+
text: "Own your routes, views, config schema, auth requirements, and release cycle."
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
title: "Product teams",
|
|
86
|
+
text: "Compose apps from shared services, app-specific routes, menus, themes, and auth choices."
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
title: "Automation builders",
|
|
90
|
+
text: "Discover actions and schemas from the portal instead of hand-maintaining integration maps."
|
|
91
|
+
}
|
|
92
|
+
],
|
|
93
|
+
aboutHref: "/about"
|
|
94
|
+
}));
|
|
5
95
|
//# sourceMappingURL=GET.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GET.js","sourceRoot":"","sources":["../../../../../src/plugins/service-betterportal-hello-view/bp-routes/landing/GET.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,cAAc,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"GET.js","sourceRoot":"","sources":["../../../../../src/plugins/service-betterportal-hello-view/bp-routes/landing/GET.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,OAAO,EACL,aAAa,EAId,MAAM,yBAAyB,CAAC;AAEjC,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC3C,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAE3C,MAAM,eAAe,GAAG,EAAE,CAAC,MAAM,CAAC;IAChC,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/B,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;CAC/B,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,EAAE,CAAC,MAAM,CAAC;IACjC,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/B,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;CAC/B,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,EAAE,CAAC,MAAM,CAAC;IAC/B,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/B,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;CAC/B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC,MAAM,CAAC;IACtC,QAAQ,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAClC,UAAU,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IACpC,OAAO,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IACjC,UAAU,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC;IACrC,YAAY,EAAE,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC;IACxC,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC;IACnC,SAAS,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;CACpC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,KAAK,GAAG,cAAc,CAAC;AACpC,MAAM,CAAC,MAAM,WAAW,GAAG,uEAAuE,CAAC;AACnG,MAAM,CAAC,MAAM,MAAM,GAA4B,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AAEpE,MAAM,CAAC,MAAM,IAAI,GAAuB;IACtC,QAAQ,EAAE,KAAK;IACf,WAAW,EAAE,EAAE;CAChB,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAe;IACpC,UAAU,EAAE,GAAG;IACf,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC;CAC/D,CAAC;AAEF,eAAe,aAAa,CAC1B,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,EAChG,GAAG,EAAE,CAAC,CAAC;IACL,QAAQ,EAAE,cAAc;IACxB,UAAU,EAAE,mDAAmD;IAC/D,OAAO,EAAE,kPAAkP;IAC3P,UAAU,EAAE;QACV;YACE,KAAK,EAAE,sBAAsB;YAC7B,IAAI,EAAE,8JAA8J;SACrK;QACD;YACE,KAAK,EAAE,uBAAuB;YAC9B,IAAI,EAAE,uHAAuH;SAC9H;QACD;YACE,KAAK,EAAE,kCAAkC;YACzC,IAAI,EAAE,6IAA6I;SACpJ;KACF;IACD,YAAY,EAAE;QACZ;YACE,KAAK,EAAE,sBAAsB;YAC7B,IAAI,EAAE,uGAAuG;SAC9G;QACD;YACE,KAAK,EAAE,8BAA8B;YACrC,IAAI,EAAE,6HAA6H;SACpI;QACD;YACE,KAAK,EAAE,4BAA4B;YACnC,IAAI,EAAE,oHAAoH;SAC3H;QACD;YACE,KAAK,EAAE,6BAA6B;YACpC,IAAI,EAAE,yHAAyH;SAChI;KACF;IACD,SAAS,EAAE;QACT;YACE,KAAK,EAAE,gBAAgB;YACvB,IAAI,EAAE,uFAAuF;SAC9F;QACD;YACE,KAAK,EAAE,eAAe;YACtB,IAAI,EAAE,8EAA8E;SACrF;QACD;YACE,KAAK,EAAE,eAAe;YACtB,IAAI,EAAE,0FAA0F;SACjG;QACD;YACE,KAAK,EAAE,qBAAqB;YAC5B,IAAI,EAAE,4FAA4F;SACnG;KACF;IACD,SAAS,EAAE,QAAQ;CACpB,CAAC,CACH,CAAC"}
|
package/lib/plugins/service-betterportal-hello-view/bp-routes/landing/_renderer.bootstrap5/GET.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { HtmlRenderable } from "@betterportal/framework";
|
|
2
|
-
import type { ResponseData } from "../
|
|
2
|
+
import type { ResponseData } from "../GET.js";
|
|
3
3
|
export declare function render(data: ResponseData): HtmlRenderable;
|
|
4
4
|
//# sourceMappingURL=GET.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GET.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-hello-view/bp-routes/landing/_renderer.bootstrap5/GET.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"GET.d.ts","sourceRoot":"","sources":["../../../../../../src/plugins/service-betterportal-hello-view/bp-routes/landing/_renderer.bootstrap5/GET.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAyC9C,wBAAgB,MAAM,CAAC,IAAI,EAAE,YAAY,GAAG,cAAc,CAgYzD"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { title, description } from "./
|
|
1
|
+
export { title, description } from "./GET.js";
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/service-betterportal-hello-view/bp-routes/landing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/service-betterportal-hello-view/bp-routes/landing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { title, description } from "./
|
|
1
|
+
export { title, description } from "./GET.js";
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/plugins/service-betterportal-hello-view/bp-routes/landing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/plugins/service-betterportal-hello-view/bp-routes/landing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@betterportal/hello-view",
|
|
3
|
-
"version": "10.1.
|
|
3
|
+
"version": "10.1.65",
|
|
4
4
|
"description": "BetterPortal v10 example service plugin for Node.js",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "src/index.ts",
|
|
@@ -28,15 +28,15 @@
|
|
|
28
28
|
"license": "(AGPL-3.0-only OR Commercial)",
|
|
29
29
|
"type": "module",
|
|
30
30
|
"devDependencies": {
|
|
31
|
-
"@bsb/tests": "^9.6.
|
|
31
|
+
"@bsb/tests": "^9.6.66",
|
|
32
32
|
"@types/node": "^26.0.0",
|
|
33
33
|
"tsx": "^4.21.0",
|
|
34
34
|
"typescript": "^6.0.3"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@betterportal/framework": "10.1.
|
|
38
|
-
"@betterportal/plugin-bsb": "10.1.
|
|
39
|
-
"@bsb/base": "^9.6.
|
|
37
|
+
"@betterportal/framework": "10.1.65",
|
|
38
|
+
"@betterportal/plugin-bsb": "10.1.65",
|
|
39
|
+
"@bsb/base": "^9.6.66",
|
|
40
40
|
"anyvali": "^1.0.6",
|
|
41
41
|
"jsx-htmx": "4.0.0-beta6"
|
|
42
42
|
},
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import * as av from "anyvali";
|
|
2
|
-
import type { Infer } from "anyvali";
|
|
3
|
-
import { type ApiAuthRequirement, type CacheHints } from "@betterportal/framework";
|
|
4
|
-
export declare const QuerySchema: av.ObjectSchema<{}>;
|
|
5
|
-
export declare const HeadersSchema: av.ObjectSchema<{}>;
|
|
6
|
-
export declare const RequestSchema: av.ObjectSchema<{}>;
|
|
7
|
-
export declare const ResponseSchema: av.ObjectSchema<{
|
|
8
|
-
title: av.StringSchema;
|
|
9
|
-
intro: av.StringSchema;
|
|
10
|
-
sections: av.ArraySchema<av.ObjectSchema<{
|
|
11
|
-
title: av.StringSchema;
|
|
12
|
-
text: av.StringSchema;
|
|
13
|
-
}>>;
|
|
14
|
-
principles: av.ArraySchema<av.ObjectSchema<{
|
|
15
|
-
title: av.StringSchema;
|
|
16
|
-
text: av.StringSchema;
|
|
17
|
-
}>>;
|
|
18
|
-
landingHref: av.StringSchema;
|
|
19
|
-
}>;
|
|
20
|
-
export type ResponseData = Infer<typeof ResponseSchema>;
|
|
21
|
-
export declare const title = "About BetterPortal";
|
|
22
|
-
export declare const description = "Overview of BetterPortal architecture and design principles.";
|
|
23
|
-
export declare const auth: ApiAuthRequirement;
|
|
24
|
-
export declare const cacheHints: CacheHints;
|
|
25
|
-
export declare const handleGet: import("@betterportal/framework").RouteHandler<Record<string, string>, {}, {}, {}, {
|
|
26
|
-
title: string;
|
|
27
|
-
intro: string;
|
|
28
|
-
sections: {
|
|
29
|
-
title: string;
|
|
30
|
-
text: string;
|
|
31
|
-
}[];
|
|
32
|
-
principles: {
|
|
33
|
-
title: string;
|
|
34
|
-
text: string;
|
|
35
|
-
}[];
|
|
36
|
-
landingHref: string;
|
|
37
|
-
}, unknown, Record<string, unknown>>;
|
|
38
|
-
//# sourceMappingURL=route.impl.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"route.impl.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/service-betterportal-hello-view/bp-routes/about/route.impl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,UAAU,EAChB,MAAM,yBAAyB,CAAC;AAEjC,eAAO,MAAM,WAAW,qBAAgB,CAAC;AACzC,eAAO,MAAM,aAAa,qBAAgB,CAAC;AAC3C,eAAO,MAAM,aAAa,qBAAgB,CAAC;AAY3C,eAAO,MAAM,cAAc;;;;;;;;;;;;EAMzB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAExD,eAAO,MAAM,KAAK,uBAAuB,CAAC;AAC1C,eAAO,MAAM,WAAW,iEAAiE,CAAC;AAE1F,eAAO,MAAM,IAAI,EAAE,kBAGlB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,UAGxB,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;;;;;;;;oCA2CrB,CAAC"}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import * as av from "anyvali";
|
|
2
|
-
import { createHandler } from "@betterportal/framework";
|
|
3
|
-
export const QuerySchema = av.object({});
|
|
4
|
-
export const HeadersSchema = av.object({});
|
|
5
|
-
export const RequestSchema = av.object({});
|
|
6
|
-
const SectionSchema = av.object({
|
|
7
|
-
title: av.string().minLength(1),
|
|
8
|
-
text: av.string().minLength(1)
|
|
9
|
-
});
|
|
10
|
-
const PrincipleSchema = av.object({
|
|
11
|
-
title: av.string().minLength(1),
|
|
12
|
-
text: av.string().minLength(1)
|
|
13
|
-
});
|
|
14
|
-
export const ResponseSchema = av.object({
|
|
15
|
-
title: av.string().minLength(1),
|
|
16
|
-
intro: av.string().minLength(1),
|
|
17
|
-
sections: av.array(SectionSchema),
|
|
18
|
-
principles: av.array(PrincipleSchema),
|
|
19
|
-
landingHref: av.string().minLength(1)
|
|
20
|
-
});
|
|
21
|
-
export const title = "About BetterPortal";
|
|
22
|
-
export const description = "Overview of BetterPortal architecture and design principles.";
|
|
23
|
-
export const auth = {
|
|
24
|
-
required: false,
|
|
25
|
-
permissions: []
|
|
26
|
-
};
|
|
27
|
-
export const cacheHints = {
|
|
28
|
-
ttlSeconds: 300,
|
|
29
|
-
varyBy: ["accept", "origin", "referer", ":origin", ":referer"]
|
|
30
|
-
};
|
|
31
|
-
export const handleGet = createHandler({ response: ResponseSchema, query: QuerySchema, headers: HeadersSchema, request: RequestSchema }, () => ({
|
|
32
|
-
title: "About BetterPortal",
|
|
33
|
-
intro: "BetterPortal is a framework for building tenant-aware portals from independently deployed services. The platform gives services a shared contract without forcing them into a shared process.",
|
|
34
|
-
sections: [
|
|
35
|
-
{
|
|
36
|
-
title: "Control plane",
|
|
37
|
-
text: "The config manager owns platform state, service activation, app routes, shared service bindings, and scoped configuration. Services pull what they need and apply it locally."
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
title: "Runtime services",
|
|
41
|
-
text: "A service can expose APIs, views, fragments, streaming endpoints, raw file responses, and service metadata. The same route remains useful to browsers, integrations, and agents."
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
title: "Themes",
|
|
45
|
-
text: "Themes render the shell and negotiate content from services. They keep navigation, declared theme fragments, fragment blocks, and chrome behavior outside business services."
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
title: "Auth",
|
|
49
|
-
text: "Auth providers plug into the same service model. Apps choose an auth service, while service routes keep their own explicit auth and permission requirements."
|
|
50
|
-
}
|
|
51
|
-
],
|
|
52
|
-
principles: [
|
|
53
|
-
{
|
|
54
|
-
title: "Typed boundaries",
|
|
55
|
-
text: "Inputs, outputs, scoped config, and metadata are declared as schemas so runtime behavior stays observable and predictable."
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
title: "No hidden platform reach",
|
|
59
|
-
text: "Browser-driven setup and pull-based sync avoid assuming the config manager can directly reach every deployed service."
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
title: "Local ownership",
|
|
63
|
-
text: "Services own their route behavior and view renderers. The platform decides which routes are mounted for each app."
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
title: "Composable operations",
|
|
67
|
-
text: "The same discovery surface supports users, admins, automation systems, and AI agents without separate bespoke integration layers."
|
|
68
|
-
}
|
|
69
|
-
],
|
|
70
|
-
landingHref: "/landing"
|
|
71
|
-
}));
|
|
72
|
-
//# sourceMappingURL=route.impl.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"route.impl.js","sourceRoot":"","sources":["../../../../../src/plugins/service-betterportal-hello-view/bp-routes/about/route.impl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,OAAO,EACL,aAAa,EAGd,MAAM,yBAAyB,CAAC;AAEjC,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACzC,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC3C,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAE3C,MAAM,aAAa,GAAG,EAAE,CAAC,MAAM,CAAC;IAC9B,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/B,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;CAC/B,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,EAAE,CAAC,MAAM,CAAC;IAChC,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/B,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;CAC/B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC,MAAM,CAAC;IACtC,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/B,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/B,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC;IACjC,UAAU,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC;IACrC,WAAW,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;CACtC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,KAAK,GAAG,oBAAoB,CAAC;AAC1C,MAAM,CAAC,MAAM,WAAW,GAAG,8DAA8D,CAAC;AAE1F,MAAM,CAAC,MAAM,IAAI,GAAuB;IACtC,QAAQ,EAAE,KAAK;IACf,WAAW,EAAE,EAAE;CAChB,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAe;IACpC,UAAU,EAAE,GAAG;IACf,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC;CAC/D,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,aAAa,CACpC,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,EAChG,GAAG,EAAE,CAAC,CAAC;IACL,KAAK,EAAE,oBAAoB;IAC3B,KAAK,EAAE,+LAA+L;IACtM,QAAQ,EAAE;QACR;YACE,KAAK,EAAE,eAAe;YACtB,IAAI,EAAE,+KAA+K;SACtL;QACD;YACE,KAAK,EAAE,kBAAkB;YACzB,IAAI,EAAE,kLAAkL;SACzL;QACD;YACE,KAAK,EAAE,QAAQ;YACf,IAAI,EAAE,8KAA8K;SACrL;QACD;YACE,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,8JAA8J;SACrK;KACF;IACD,UAAU,EAAE;QACV;YACE,KAAK,EAAE,kBAAkB;YACzB,IAAI,EAAE,4HAA4H;SACnI;QACD;YACE,KAAK,EAAE,0BAA0B;YACjC,IAAI,EAAE,uHAAuH;SAC9H;QACD;YACE,KAAK,EAAE,iBAAiB;YACxB,IAAI,EAAE,mHAAmH;SAC1H;QACD;YACE,KAAK,EAAE,uBAAuB;YAC9B,IAAI,EAAE,mIAAmI;SAC1I;KACF;IACD,WAAW,EAAE,UAAU;CACxB,CAAC,CACH,CAAC"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import * as av from "anyvali";
|
|
2
|
-
import type { Infer } from "anyvali";
|
|
3
|
-
import { type ApiAuthRequirement, type CacheHints } from "@betterportal/framework";
|
|
4
|
-
export declare const QuerySchema: av.ObjectSchema<{
|
|
5
|
-
count: av.StringSchema;
|
|
6
|
-
delayMs: av.StringSchema;
|
|
7
|
-
}>;
|
|
8
|
-
export declare const ItemSchema: av.ObjectSchema<{
|
|
9
|
-
id: av.StringSchema;
|
|
10
|
-
label: av.StringSchema;
|
|
11
|
-
elapsedMs: av.IntSchema;
|
|
12
|
-
}>;
|
|
13
|
-
export type DelayedItem = Infer<typeof ItemSchema>;
|
|
14
|
-
export declare const SummarySchema: av.ObjectSchema<{
|
|
15
|
-
total: av.IntSchema;
|
|
16
|
-
totalMs: av.IntSchema;
|
|
17
|
-
}>;
|
|
18
|
-
export type DelayedSummary = Infer<typeof SummarySchema>;
|
|
19
|
-
export declare const title = "Delayed Stream";
|
|
20
|
-
export declare const description = "Example streaming view: items arrive one by one as a slow data source produces them. JSON buffers, NDJSON streams frames, HTML streams rendered rows over SSE.";
|
|
21
|
-
export declare const auth: ApiAuthRequirement;
|
|
22
|
-
export declare const cacheHints: CacheHints;
|
|
23
|
-
export declare const handleGet: import("@betterportal/framework").BpStreamHandler<{
|
|
24
|
-
id: string;
|
|
25
|
-
label: string;
|
|
26
|
-
elapsedMs: number;
|
|
27
|
-
}, {
|
|
28
|
-
total: number;
|
|
29
|
-
totalMs: number;
|
|
30
|
-
}, Record<string, string>, {
|
|
31
|
-
count: string;
|
|
32
|
-
delayMs: string;
|
|
33
|
-
}, Record<string, string>>;
|
|
34
|
-
//# sourceMappingURL=route.impl.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"route.impl.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/service-betterportal-hello-view/bp-routes/delayed/route.impl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,UAAU,EAChB,MAAM,yBAAyB,CAAC;AAIjC,eAAO,MAAM,WAAW;;;EAGtB,CAAC;AAEH,eAAO,MAAM,UAAU;;;;EAIrB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEnD,eAAO,MAAM,aAAa;;;EAGxB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAIzD,eAAO,MAAM,KAAK,mBAAmB,CAAC;AACtC,eAAO,MAAM,WAAW,mKAAmK,CAAC;AAE5L,eAAO,MAAM,IAAI,EAAE,kBAGlB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,UAGxB,CAAC;AAYF,eAAO,MAAM,SAAS;;;;;;;;;;0BAkBrB,CAAC"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import * as av from "anyvali";
|
|
2
|
-
import { createStreamHandler } from "@betterportal/framework";
|
|
3
|
-
// -- Schemas (spec/streaming.md - item is the canonical contract) ----
|
|
4
|
-
export const QuerySchema = av.object({
|
|
5
|
-
count: av.string().default("5"),
|
|
6
|
-
delayMs: av.string().default("400")
|
|
7
|
-
});
|
|
8
|
-
export const ItemSchema = av.object({
|
|
9
|
-
id: av.string().minLength(1),
|
|
10
|
-
label: av.string().minLength(1),
|
|
11
|
-
elapsedMs: av.int().min(0)
|
|
12
|
-
});
|
|
13
|
-
export const SummarySchema = av.object({
|
|
14
|
-
total: av.int().min(0),
|
|
15
|
-
totalMs: av.int().min(0)
|
|
16
|
-
});
|
|
17
|
-
// -- Metadata --------------------------------------------------------
|
|
18
|
-
export const title = "Delayed Stream";
|
|
19
|
-
export const description = "Example streaming view: items arrive one by one as a slow data source produces them. JSON buffers, NDJSON streams frames, HTML streams rendered rows over SSE.";
|
|
20
|
-
export const auth = {
|
|
21
|
-
required: false,
|
|
22
|
-
permissions: []
|
|
23
|
-
};
|
|
24
|
-
export const cacheHints = {
|
|
25
|
-
ttlSeconds: 0,
|
|
26
|
-
varyBy: ["accept", "origin"]
|
|
27
|
-
};
|
|
28
|
-
// -- Handler - async generator; the framework drives representation --
|
|
29
|
-
function clampInt(raw, min, max, fallback) {
|
|
30
|
-
const parsed = Number.parseInt(raw, 10);
|
|
31
|
-
if (!Number.isFinite(parsed))
|
|
32
|
-
return fallback;
|
|
33
|
-
return Math.min(max, Math.max(min, parsed));
|
|
34
|
-
}
|
|
35
|
-
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
36
|
-
export const handleGet = createStreamHandler({ item: ItemSchema, summary: SummarySchema, query: QuerySchema }, async function* (ctx) {
|
|
37
|
-
const count = clampInt(ctx.query.count, 1, 25, 5);
|
|
38
|
-
const delayMs = clampInt(ctx.query.delayMs, 0, 2000, 400);
|
|
39
|
-
const startedAt = Date.now();
|
|
40
|
-
for (let i = 1; i <= count; i++) {
|
|
41
|
-
await sleep(delayMs);
|
|
42
|
-
yield {
|
|
43
|
-
id: `item-${i}`,
|
|
44
|
-
label: `Slow record #${i} of ${count}`,
|
|
45
|
-
elapsedMs: Date.now() - startedAt
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
return { total: count, totalMs: Date.now() - startedAt };
|
|
49
|
-
});
|
|
50
|
-
//# sourceMappingURL=route.impl.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"route.impl.js","sourceRoot":"","sources":["../../../../../src/plugins/service-betterportal-hello-view/bp-routes/delayed/route.impl.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import * as av from "anyvali";
|
|
2
|
-
import type { Infer } from "anyvali";
|
|
3
|
-
import { type DemoScenario, type ApiAuthRequirement, type CacheHints } from "@betterportal/framework";
|
|
4
|
-
export declare const QuerySchema: av.ObjectSchema<{
|
|
5
|
-
name: av.StringSchema;
|
|
6
|
-
}>;
|
|
7
|
-
export declare const HeadersSchema: av.ObjectSchema<{}>;
|
|
8
|
-
export declare const RequestSchema: av.ObjectSchema<{}>;
|
|
9
|
-
export declare const ResponseSchema: av.ObjectSchema<{
|
|
10
|
-
greeting: av.StringSchema;
|
|
11
|
-
}>;
|
|
12
|
-
export type ResponseData = Infer<typeof ResponseSchema>;
|
|
13
|
-
export declare const title = "Hello View";
|
|
14
|
-
export declare const description = "Example BetterPortal view with JSON, HTML, and metadata representations.";
|
|
15
|
-
export declare const auth: ApiAuthRequirement;
|
|
16
|
-
export declare const cacheHints: CacheHints;
|
|
17
|
-
export declare const demoScenarios: DemoScenario<ResponseData>[];
|
|
18
|
-
export declare const handleGet: import("@betterportal/framework").RouteHandler<Record<string, string>, {
|
|
19
|
-
name: string;
|
|
20
|
-
}, Record<string, string>, Record<string, unknown>, {
|
|
21
|
-
greeting: string;
|
|
22
|
-
}, unknown, Record<string, unknown>>;
|
|
23
|
-
//# sourceMappingURL=route.impl.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"route.impl.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/service-betterportal-hello-view/bp-routes/hello/route.impl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,UAAU,EAChB,MAAM,yBAAyB,CAAC;AAIjC,eAAO,MAAM,WAAW;;EAEtB,CAAC;AAEH,eAAO,MAAM,aAAa,qBAAgB,CAAC;AAE3C,eAAO,MAAM,aAAa,qBAAgB,CAAC;AAE3C,eAAO,MAAM,cAAc;;EAEzB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAIxD,eAAO,MAAM,KAAK,eAAe,CAAC;AAClC,eAAO,MAAM,WAAW,6EAA6E,CAAC;AAEtG,eAAO,MAAM,IAAI,EAAE,kBAGlB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,UAGxB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,YAAY,CAAC,YAAY,CAAC,EASrD,CAAC;AAIF,eAAO,MAAM,SAAS;;;;oCAKrB,CAAC"}
|